mathjs 13.1.1 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/HISTORY.md +17 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/core/function/typed.js +1 -0
  6. package/lib/cjs/expression/parse.js +1 -1
  7. package/lib/cjs/expression/transform/filter.transform.js +28 -40
  8. package/lib/cjs/expression/transform/forEach.transform.js +29 -30
  9. package/lib/cjs/expression/transform/map.transform.js +8 -93
  10. package/lib/cjs/expression/transform/utils/transformCallback.js +101 -0
  11. package/lib/cjs/function/algebra/derivative.js +10 -11
  12. package/lib/cjs/function/matrix/filter.js +3 -2
  13. package/lib/cjs/function/matrix/forEach.js +3 -14
  14. package/lib/cjs/function/matrix/map.js +11 -33
  15. package/lib/cjs/header.js +2 -2
  16. package/lib/cjs/type/matrix/DenseMatrix.js +73 -29
  17. package/lib/cjs/type/matrix/SparseMatrix.js +7 -4
  18. package/lib/cjs/utils/array.js +22 -0
  19. package/lib/cjs/utils/optimizeCallback.js +94 -0
  20. package/lib/cjs/version.js +1 -1
  21. package/lib/esm/core/function/typed.js +1 -0
  22. package/lib/esm/expression/parse.js +1 -1
  23. package/lib/esm/expression/transform/filter.transform.js +28 -40
  24. package/lib/esm/expression/transform/forEach.transform.js +29 -30
  25. package/lib/esm/expression/transform/map.transform.js +8 -93
  26. package/lib/esm/expression/transform/utils/transformCallback.js +95 -0
  27. package/lib/esm/function/algebra/derivative.js +10 -11
  28. package/lib/esm/function/matrix/filter.js +3 -2
  29. package/lib/esm/function/matrix/forEach.js +3 -14
  30. package/lib/esm/function/matrix/map.js +12 -34
  31. package/lib/esm/type/matrix/DenseMatrix.js +75 -32
  32. package/lib/esm/type/matrix/SparseMatrix.js +7 -4
  33. package/lib/esm/utils/array.js +21 -0
  34. package/lib/esm/utils/optimizeCallback.js +88 -0
  35. package/lib/esm/version.js +1 -1
  36. package/package.json +7 -7
  37. package/types/index.d.ts +50 -12
  38. package/lib/cjs/utils/applyCallback.js +0 -73
  39. package/lib/esm/utils/applyCallback.js +0 -67
@@ -100,6 +100,7 @@ const createTyped = exports.createTyped = /* #__PURE__ */(0, _factory.factory)('
100
100
  // string starting with an alphabetic character. It is used (at least)
101
101
  // in the definition of the derivative() function, as the argument telling
102
102
  // what to differentiate over must (currently) be a variable.
103
+ // TODO: deprecate the identifier type (it's not used anymore, see https://github.com/josdejong/mathjs/issues/3253)
103
104
  {
104
105
  name: 'identifier',
105
106
  test: s => _is.isString && /^[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{1031F}\u{1032D}-\u{10340}\u{10342}-\u{10349}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{103A0}-\u{103C3}\u{103C8}-\u{103CF}\u{10400}-\u{1049D}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{10570}-\u{1057A}\u{1057C}-\u{1058A}\u{1058C}-\u{10592}\u{10594}\u{10595}\u{10597}-\u{105A1}\u{105A3}-\u{105B1}\u{105B3}-\u{105B9}\u{105BB}\u{105BC}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10780}-\u{10785}\u{10787}-\u{107B0}\u{107B2}-\u{107BA}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10860}-\u{10876}\u{10880}-\u{1089E}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{10900}-\u{10915}\u{10920}-\u{10939}\u{10980}-\u{109B7}\u{109BE}\u{109BF}\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A60}-\u{10A7C}\u{10A80}-\u{10A9C}\u{10AC0}-\u{10AC7}\u{10AC9}-\u{10AE4}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B60}-\u{10B72}\u{10B80}-\u{10B91}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10D00}-\u{10D23}\u{10E80}-\u{10EA9}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F1C}\u{10F27}\u{10F30}-\u{10F45}\u{10F70}-\u{10F81}\u{10FB0}-\u{10FC4}\u{10FE0}-\u{10FF6}\u{11003}-\u{11037}\u{11071}\u{11072}\u{11075}\u{11083}-\u{110AF}\u{110D0}-\u{110E8}\u{11103}-\u{11126}\u{11144}\u{11147}\u{11150}-\u{11172}\u{11176}\u{11183}-\u{111B2}\u{111C1}-\u{111C4}\u{111DA}\u{111DC}\u{11200}-\u{11211}\u{11213}-\u{1122B}\u{1123F}\u{11240}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A8}\u{112B0}-\u{112DE}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}\u{11350}\u{1135D}-\u{11361}\u{11400}-\u{11434}\u{11447}-\u{1144A}\u{1145F}-\u{11461}\u{11480}-\u{114AF}\u{114C4}\u{114C5}\u{114C7}\u{11580}-\u{115AE}\u{115D8}-\u{115DB}\u{11600}-\u{1162F}\u{11644}\u{11680}-\u{116AA}\u{116B8}\u{11700}-\u{1171A}\u{11740}-\u{11746}\u{11800}-\u{1182B}\u{118A0}-\u{118DF}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{1192F}\u{1193F}\u{11941}\u{119A0}-\u{119A7}\u{119AA}-\u{119D0}\u{119E1}\u{119E3}\u{11A00}\u{11A0B}-\u{11A32}\u{11A3A}\u{11A50}\u{11A5C}-\u{11A89}\u{11A9D}\u{11AB0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2E}\u{11C40}\u{11C72}-\u{11C8F}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D89}\u{11D98}\u{11EE0}-\u{11EF2}\u{11F02}\u{11F04}-\u{11F10}\u{11F12}-\u{11F33}\u{11FB0}\u{12000}-\u{12399}\u{12480}-\u{12543}\u{12F90}-\u{12FF0}\u{13000}-\u{1342F}\u{13441}-\u{13446}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A70}-\u{16ABE}\u{16AD0}-\u{16AED}\u{16B00}-\u{16B2F}\u{16B40}-\u{16B43}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E7F}\u{16F00}-\u{16F4A}\u{16F50}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{16FE3}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1AFF0}-\u{1AFF3}\u{1AFF5}-\u{1AFFB}\u{1AFFD}\u{1AFFE}\u{1B000}-\u{1B122}\u{1B132}\u{1B150}-\u{1B152}\u{1B155}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6C0}\u{1D6C2}-\u{1D6DA}\u{1D6DC}-\u{1D6FA}\u{1D6FC}-\u{1D714}\u{1D716}-\u{1D734}\u{1D736}-\u{1D74E}\u{1D750}-\u{1D76E}\u{1D770}-\u{1D788}\u{1D78A}-\u{1D7A8}\u{1D7AA}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1DF00}-\u{1DF1E}\u{1DF25}-\u{1DF2A}\u{1E030}-\u{1E06D}\u{1E100}-\u{1E12C}\u{1E137}-\u{1E13D}\u{1E14E}\u{1E290}-\u{1E2AD}\u{1E2C0}-\u{1E2EB}\u{1E4D0}-\u{1E4EB}\u{1E7E0}-\u{1E7E6}\u{1E7E8}-\u{1E7EB}\u{1E7ED}\u{1E7EE}\u{1E7F0}-\u{1E7FE}\u{1E800}-\u{1E8C4}\u{1E900}-\u{1E943}\u{1E94B}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B739}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2EBF0}-\u{2EE5D}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{31350}-\u{323AF}][0-9A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{1031F}\u{1032D}-\u{10340}\u{10342}-\u{10349}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{103A0}-\u{103C3}\u{103C8}-\u{103CF}\u{10400}-\u{1049D}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{10570}-\u{1057A}\u{1057C}-\u{1058A}\u{1058C}-\u{10592}\u{10594}\u{10595}\u{10597}-\u{105A1}\u{105A3}-\u{105B1}\u{105B3}-\u{105B9}\u{105BB}\u{105BC}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{10780}-\u{10785}\u{10787}-\u{107B0}\u{107B2}-\u{107BA}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10860}-\u{10876}\u{10880}-\u{1089E}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{10900}-\u{10915}\u{10920}-\u{10939}\u{10980}-\u{109B7}\u{109BE}\u{109BF}\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A60}-\u{10A7C}\u{10A80}-\u{10A9C}\u{10AC0}-\u{10AC7}\u{10AC9}-\u{10AE4}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B60}-\u{10B72}\u{10B80}-\u{10B91}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10D00}-\u{10D23}\u{10E80}-\u{10EA9}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F1C}\u{10F27}\u{10F30}-\u{10F45}\u{10F70}-\u{10F81}\u{10FB0}-\u{10FC4}\u{10FE0}-\u{10FF6}\u{11003}-\u{11037}\u{11071}\u{11072}\u{11075}\u{11083}-\u{110AF}\u{110D0}-\u{110E8}\u{11103}-\u{11126}\u{11144}\u{11147}\u{11150}-\u{11172}\u{11176}\u{11183}-\u{111B2}\u{111C1}-\u{111C4}\u{111DA}\u{111DC}\u{11200}-\u{11211}\u{11213}-\u{1122B}\u{1123F}\u{11240}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A8}\u{112B0}-\u{112DE}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}\u{11350}\u{1135D}-\u{11361}\u{11400}-\u{11434}\u{11447}-\u{1144A}\u{1145F}-\u{11461}\u{11480}-\u{114AF}\u{114C4}\u{114C5}\u{114C7}\u{11580}-\u{115AE}\u{115D8}-\u{115DB}\u{11600}-\u{1162F}\u{11644}\u{11680}-\u{116AA}\u{116B8}\u{11700}-\u{1171A}\u{11740}-\u{11746}\u{11800}-\u{1182B}\u{118A0}-\u{118DF}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{1192F}\u{1193F}\u{11941}\u{119A0}-\u{119A7}\u{119AA}-\u{119D0}\u{119E1}\u{119E3}\u{11A00}\u{11A0B}-\u{11A32}\u{11A3A}\u{11A50}\u{11A5C}-\u{11A89}\u{11A9D}\u{11AB0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2E}\u{11C40}\u{11C72}-\u{11C8F}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D89}\u{11D98}\u{11EE0}-\u{11EF2}\u{11F02}\u{11F04}-\u{11F10}\u{11F12}-\u{11F33}\u{11FB0}\u{12000}-\u{12399}\u{12480}-\u{12543}\u{12F90}-\u{12FF0}\u{13000}-\u{1342F}\u{13441}-\u{13446}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A70}-\u{16ABE}\u{16AD0}-\u{16AED}\u{16B00}-\u{16B2F}\u{16B40}-\u{16B43}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E7F}\u{16F00}-\u{16F4A}\u{16F50}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{16FE3}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1AFF0}-\u{1AFF3}\u{1AFF5}-\u{1AFFB}\u{1AFFD}\u{1AFFE}\u{1B000}-\u{1B122}\u{1B132}\u{1B150}-\u{1B152}\u{1B155}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6C0}\u{1D6C2}-\u{1D6DA}\u{1D6DC}-\u{1D6FA}\u{1D6FC}-\u{1D714}\u{1D716}-\u{1D734}\u{1D736}-\u{1D74E}\u{1D750}-\u{1D76E}\u{1D770}-\u{1D788}\u{1D78A}-\u{1D7A8}\u{1D7AA}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1DF00}-\u{1DF1E}\u{1DF25}-\u{1DF2A}\u{1E030}-\u{1E06D}\u{1E100}-\u{1E12C}\u{1E137}-\u{1E13D}\u{1E14E}\u{1E290}-\u{1E2AD}\u{1E2C0}-\u{1E2EB}\u{1E4D0}-\u{1E4EB}\u{1E7E0}-\u{1E7E6}\u{1E7E8}-\u{1E7EB}\u{1E7ED}\u{1E7EE}\u{1E7F0}-\u{1E7FE}\u{1E800}-\u{1E8C4}\u{1E900}-\u{1E943}\u{1E94B}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{20000}-\u{2A6DF}\u{2A700}-\u{2B739}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2EBF0}-\u{2EE5D}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{31350}-\u{323AF}]*$/u.test(s)
@@ -999,7 +999,7 @@ const createParse = exports.createParse = /* #__PURE__ */(0, _factory.factory)(n
999
999
  node = parseRule2(state);
1000
1000
  last = node;
1001
1001
  while (true) {
1002
- if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && (0, _is.isConstantNode)(node) || state.tokenType === TOKENTYPE.NUMBER && !(0, _is.isConstantNode)(last) && (!(0, _is.isOperatorNode)(last) || last.op === '!') || state.token === '(') {
1002
+ if (state.tokenType === TOKENTYPE.SYMBOL || state.token === 'in' && (0, _is.isConstantNode)(node) || state.token === 'in' && (0, _is.isOperatorNode)(node) && node.fn === 'unaryMinus' && (0, _is.isConstantNode)(node.args[0]) || state.tokenType === TOKENTYPE.NUMBER && !(0, _is.isConstantNode)(last) && (!(0, _is.isOperatorNode)(last) || last.op === '!') || state.token === '(') {
1003
1003
  // parse implicit multiplication
1004
1004
  //
1005
1005
  // symbol: implicit multiplication like '2a', '(2+3)a', 'a b'
@@ -4,11 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFilterTransform = void 0;
7
- var _applyCallback = require("../../utils/applyCallback.js");
8
- var _array = require("../../utils/array.js");
7
+ var _filter = require("../../function/matrix/filter.js");
9
8
  var _factory = require("../../utils/factory.js");
10
9
  var _is = require("../../utils/is.js");
11
10
  var _compileInlineExpression = require("./utils/compileInlineExpression.js");
11
+ var _transformCallback = require("./utils/transformCallback.js");
12
12
  const name = 'filter';
13
13
  const dependencies = ['typed'];
14
14
  const createFilterTransform = exports.createFilterTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
@@ -23,52 +23,40 @@ const createFilterTransform = exports.createFilterTransform = /* #__PURE__ */(0,
23
23
  * so you can do something like 'filter([3, -2, 5], x > 0)'.
24
24
  */
25
25
  function filterTransform(args, math, scope) {
26
- let x, callback;
27
- if (args[0]) {
28
- x = args[0].compile().evaluate(scope);
26
+ const filter = (0, _filter.createFilter)({
27
+ typed
28
+ });
29
+ const transformCallback = (0, _transformCallback.createTransformCallback)({
30
+ typed
31
+ });
32
+ if (args.length === 0) {
33
+ return filter();
29
34
  }
30
- if (args[1]) {
31
- if ((0, _is.isSymbolNode)(args[1]) || (0, _is.isFunctionAssignmentNode)(args[1])) {
35
+ let x = args[0];
36
+ if (args.length === 1) {
37
+ return filter(x);
38
+ }
39
+ const N = args.length - 1;
40
+ let callback = args[N];
41
+ if (x) {
42
+ x = _compileAndEvaluate(x, scope);
43
+ }
44
+ if (callback) {
45
+ if ((0, _is.isSymbolNode)(callback) || (0, _is.isFunctionAssignmentNode)(callback)) {
32
46
  // a function pointer, like filter([3, -2, 5], myTestFunction)
33
- callback = args[1].compile().evaluate(scope);
47
+ callback = _compileAndEvaluate(callback, scope);
34
48
  } else {
35
49
  // an expression like filter([3, -2, 5], x > 0)
36
- callback = (0, _compileInlineExpression.compileInlineExpression)(args[1], math, scope);
50
+ callback = (0, _compileInlineExpression.compileInlineExpression)(callback, math, scope);
37
51
  }
38
52
  }
39
- return filter(x, callback);
53
+ return filter(x, transformCallback(callback, N));
40
54
  }
41
55
  filterTransform.rawArgs = true;
42
-
43
- // one based version of function filter
44
- const filter = typed('filter', {
45
- 'Array, function': _filter,
46
- 'Matrix, function': function (x, test) {
47
- return x.create(_filter(x.toArray(), test), x.datatype());
48
- },
49
- 'Array, RegExp': _array.filterRegExp,
50
- 'Matrix, RegExp': function (x, test) {
51
- return x.create((0, _array.filterRegExp)(x.toArray(), test), x.datatype());
52
- }
53
- });
56
+ function _compileAndEvaluate(arg, scope) {
57
+ return arg.compile().evaluate(scope);
58
+ }
54
59
  return filterTransform;
55
60
  }, {
56
61
  isTransformFunction: true
57
- });
58
-
59
- /**
60
- * Filter values in a callback given a callback function
61
- *
62
- * !!! Passes a one-based index !!!
63
- *
64
- * @param {Array} x
65
- * @param {Function} callback
66
- * @return {Array} Returns the filtered array
67
- * @private
68
- */
69
- function _filter(x, callback) {
70
- return (0, _array.filter)(x, function (value, index, array) {
71
- // invoke the callback function with the right number of arguments
72
- return (0, _applyCallback.applyCallback)(callback, value, [index + 1], array, 'filter');
73
- });
74
- }
62
+ });
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createForEachTransform = void 0;
7
- var _applyCallback = require("../../utils/applyCallback.js");
8
- var _array = require("../../utils/array.js");
7
+ var _forEach = require("../../function/matrix/forEach.js");
8
+ var _transformCallback = require("./utils/transformCallback.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  var _is = require("../../utils/is.js");
11
11
  var _compileInlineExpression = require("./utils/compileInlineExpression.js");
@@ -21,41 +21,40 @@ const createForEachTransform = exports.createForEachTransform = /* #__PURE__ */(
21
21
  *
22
22
  * This transform creates a one-based index instead of a zero-based index
23
23
  */
24
+ const forEach = (0, _forEach.createForEach)({
25
+ typed
26
+ });
27
+ const transformCallback = (0, _transformCallback.createTransformCallback)({
28
+ typed
29
+ });
24
30
  function forEachTransform(args, math, scope) {
25
- let x, callback;
26
- if (args[0]) {
27
- x = args[0].compile().evaluate(scope);
31
+ if (args.length === 0) {
32
+ return forEach();
33
+ }
34
+ let x = args[0];
35
+ if (args.length === 1) {
36
+ return forEach(x);
28
37
  }
29
- if (args[1]) {
30
- if ((0, _is.isSymbolNode)(args[1]) || (0, _is.isFunctionAssignmentNode)(args[1])) {
31
- // a function pointer, like forEach([3, -2, 5], myTestFunction)
32
- callback = args[1].compile().evaluate(scope);
38
+ const N = args.length - 1;
39
+ let callback = args[N];
40
+ if (x) {
41
+ x = _compileAndEvaluate(x, scope);
42
+ }
43
+ if (callback) {
44
+ if ((0, _is.isSymbolNode)(callback) || (0, _is.isFunctionAssignmentNode)(callback)) {
45
+ // a function pointer, like filter([3, -2, 5], myTestFunction)
46
+ callback = _compileAndEvaluate(callback, scope);
33
47
  } else {
34
- // an expression like forEach([3, -2, 5], x > 0 ? callback1(x) : callback2(x) )
35
- callback = (0, _compileInlineExpression.compileInlineExpression)(args[1], math, scope);
48
+ // an expression like filter([3, -2, 5], x > 0)
49
+ callback = (0, _compileInlineExpression.compileInlineExpression)(callback, math, scope);
36
50
  }
37
51
  }
38
- return _forEach(x, callback);
52
+ return forEach(x, transformCallback(callback, N));
39
53
  }
40
54
  forEachTransform.rawArgs = true;
41
-
42
- // one-based version of forEach
43
- const _forEach = typed('forEach', {
44
- 'Array | Matrix, function': function (array, callback) {
45
- const recurse = function (value, index) {
46
- if (Array.isArray(value)) {
47
- (0, _array.forEach)(value, function (child, i) {
48
- // we create a copy of the index array and append the new index value
49
- recurse(child, index.concat(i + 1)); // one based index, hence i+1
50
- });
51
- } else {
52
- // invoke the callback function with the right number of arguments
53
- return (0, _applyCallback.applyCallback)(callback, value, index, array, 'forEach');
54
- }
55
- };
56
- recurse(array.valueOf(), []); // pass Array
57
- }
58
- });
55
+ function _compileAndEvaluate(arg, scope) {
56
+ return arg.compile().evaluate(scope);
57
+ }
59
58
  return forEachTransform;
60
59
  }, {
61
60
  isTransformFunction: true
@@ -8,6 +8,7 @@ var _factory = require("../../utils/factory.js");
8
8
  var _is = require("../../utils/is.js");
9
9
  var _map = require("../../function/matrix/map.js");
10
10
  var _compileInlineExpression = require("./utils/compileInlineExpression.js");
11
+ var _transformCallback = require("./utils/transformCallback.js");
11
12
  const name = 'map';
12
13
  const dependencies = ['typed'];
13
14
  const createMapTransform = exports.createMapTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
@@ -23,6 +24,9 @@ const createMapTransform = exports.createMapTransform = /* #__PURE__ */(0, _fact
23
24
  const map = (0, _map.createMap)({
24
25
  typed
25
26
  });
27
+ const transformCallback = (0, _transformCallback.createTransformCallback)({
28
+ typed
29
+ });
26
30
  function mapTransform(args, math, scope) {
27
31
  if (args.length === 0) {
28
32
  return map();
@@ -31,9 +35,8 @@ const createMapTransform = exports.createMapTransform = /* #__PURE__ */(0, _fact
31
35
  return map(args[0]);
32
36
  }
33
37
  const N = args.length - 1;
34
- let X, callback;
35
- callback = args[N];
36
- X = args.slice(0, N);
38
+ let X = args.slice(0, N);
39
+ let callback = args[N];
37
40
  X = X.map(arg => _compileAndEvaluate(arg, scope));
38
41
  if (callback) {
39
42
  if ((0, _is.isSymbolNode)(callback) || (0, _is.isFunctionAssignmentNode)(callback)) {
@@ -44,101 +47,13 @@ const createMapTransform = exports.createMapTransform = /* #__PURE__ */(0, _fact
44
47
  callback = (0, _compileInlineExpression.compileInlineExpression)(callback, math, scope);
45
48
  }
46
49
  }
47
- return map(...X, _transformCallback(callback, N));
50
+ return map(...X, transformCallback(callback, N));
48
51
  function _compileAndEvaluate(arg, scope) {
49
52
  return arg.compile().evaluate(scope);
50
53
  }
51
54
  }
52
55
  mapTransform.rawArgs = true;
53
56
  return mapTransform;
54
-
55
- /**
56
- * Transforms the given callback function based on its type and number of arrays.
57
- *
58
- * @param {Function} callback - The callback function to transform.
59
- * @param {number} numberOfArrays - The number of arrays to pass to the callback function.
60
- * @returns {*} - The transformed callback function.
61
- */
62
- function _transformCallback(callback, numberOfArrays) {
63
- if (typed.isTypedFunction(callback)) {
64
- return _transformTypedCallbackFunction(callback, numberOfArrays);
65
- } else {
66
- return _transformCallbackFunction(callback, callback.length, numberOfArrays);
67
- }
68
- }
69
-
70
- /**
71
- * Transforms the given typed callback function based on the number of arrays.
72
- *
73
- * @param {Function} typedFunction - The typed callback function to transform.
74
- * @param {number} numberOfArrays - The number of arrays to pass to the callback function.
75
- * @returns {*} - The transformed typed callback function.
76
- */
77
- function _transformTypedCallbackFunction(typedFunction, numberOfArrays) {
78
- const signatures = Object.fromEntries(Object.entries(typedFunction.signatures).map(_ref2 => {
79
- let [signature, callbackFunction] = _ref2;
80
- const numberOfCallbackInputs = signature.split(',').length;
81
- if (typed.isTypedFunction(callbackFunction)) {
82
- return [signature, _transformTypedCallbackFunction(callbackFunction, numberOfArrays)];
83
- } else {
84
- return [signature, _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays)];
85
- }
86
- }));
87
- if (typeof typedFunction.name === 'string') {
88
- return typed(typedFunction.name, signatures);
89
- } else {
90
- return typed(signatures);
91
- }
92
- }
93
57
  }, {
94
58
  isTransformFunction: true
95
- });
96
-
97
- /**
98
- * Transforms the callback function based on the number of callback inputs and arrays.
99
- * There are three cases:
100
- * 1. The callback function has N arguments.
101
- * 2. The callback function has N+1 arguments.
102
- * 3. The callback function has 2N+1 arguments.
103
- *
104
- * @param {Function} callbackFunction - The callback function to transform.
105
- * @param {number} numberOfCallbackInputs - The number of callback inputs.
106
- * @param {number} numberOfArrays - The number of arrays.
107
- * @returns {Function} The transformed callback function.
108
- */
109
- function _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays) {
110
- if (numberOfCallbackInputs === numberOfArrays) {
111
- return callbackFunction;
112
- } else if (numberOfCallbackInputs === numberOfArrays + 1) {
113
- return function () {
114
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
115
- args[_key] = arguments[_key];
116
- }
117
- const vals = args.slice(0, numberOfArrays);
118
- const idx = _transformDims(args[numberOfArrays]);
119
- return callbackFunction(...vals, idx);
120
- };
121
- } else if (numberOfCallbackInputs > numberOfArrays + 1) {
122
- return function () {
123
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
124
- args[_key2] = arguments[_key2];
125
- }
126
- const vals = args.slice(0, numberOfArrays);
127
- const idx = _transformDims(args[numberOfArrays]);
128
- const rest = args.slice(numberOfArrays + 1);
129
- return callbackFunction(...vals, idx, ...rest);
130
- };
131
- } else {
132
- return callbackFunction;
133
- }
134
- }
135
-
136
- /**
137
- * Transforms the dimensions by adding 1 to each dimension.
138
- *
139
- * @param {Array} dims - The dimensions to transform.
140
- * @returns {Array} The transformed dimensions.
141
- */
142
- function _transformDims(dims) {
143
- return dims.map(dim => dim.isBigNumber ? dim.plus(1) : dim + 1);
144
- }
59
+ });
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createTransformCallback = void 0;
7
+ var _factory = require("../../../utils/factory.js");
8
+ const name = 'transformCallback';
9
+ const dependencies = ['typed'];
10
+ const createTransformCallback = exports.createTransformCallback = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
11
+ let {
12
+ typed
13
+ } = _ref;
14
+ /**
15
+ * Transforms the given callback function based on its type and number of arrays.
16
+ *
17
+ * @param {Function} callback - The callback function to transform.
18
+ * @param {number} numberOfArrays - The number of arrays to pass to the callback function.
19
+ * @returns {*} - The transformed callback function.
20
+ */
21
+ return function (callback, numberOfArrays) {
22
+ if (typed.isTypedFunction(callback)) {
23
+ return _transformTypedCallbackFunction(callback, numberOfArrays);
24
+ } else {
25
+ return _transformCallbackFunction(callback, callback.length, numberOfArrays);
26
+ }
27
+ };
28
+
29
+ /**
30
+ * Transforms the given typed callback function based on the number of arrays.
31
+ *
32
+ * @param {Function} typedFunction - The typed callback function to transform.
33
+ * @param {number} numberOfArrays - The number of arrays to pass to the callback function.
34
+ * @returns {*} - The transformed callback function.
35
+ */
36
+ function _transformTypedCallbackFunction(typedFunction, numberOfArrays) {
37
+ const signatures = Object.fromEntries(Object.entries(typedFunction.signatures).map(_ref2 => {
38
+ let [signature, callbackFunction] = _ref2;
39
+ const numberOfCallbackInputs = signature.split(',').length;
40
+ if (typed.isTypedFunction(callbackFunction)) {
41
+ return [signature, _transformTypedCallbackFunction(callbackFunction, numberOfArrays)];
42
+ } else {
43
+ return [signature, _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays)];
44
+ }
45
+ }));
46
+ if (typeof typedFunction.name === 'string') {
47
+ return typed(typedFunction.name, signatures);
48
+ } else {
49
+ return typed(signatures);
50
+ }
51
+ }
52
+ });
53
+
54
+ /**
55
+ * Transforms the callback function based on the number of callback inputs and arrays.
56
+ * There are three cases:
57
+ * 1. The callback function has N arguments.
58
+ * 2. The callback function has N+1 arguments.
59
+ * 3. The callback function has 2N+1 arguments.
60
+ *
61
+ * @param {Function} callbackFunction - The callback function to transform.
62
+ * @param {number} numberOfCallbackInputs - The number of callback inputs.
63
+ * @param {number} numberOfArrays - The number of arrays.
64
+ * @returns {Function} The transformed callback function.
65
+ */
66
+ function _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays) {
67
+ if (numberOfCallbackInputs === numberOfArrays) {
68
+ return callbackFunction;
69
+ } else if (numberOfCallbackInputs === numberOfArrays + 1) {
70
+ return function () {
71
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
72
+ args[_key] = arguments[_key];
73
+ }
74
+ const vals = args.slice(0, numberOfArrays);
75
+ const idx = _transformDims(args[numberOfArrays]);
76
+ return callbackFunction(...vals, idx);
77
+ };
78
+ } else if (numberOfCallbackInputs > numberOfArrays + 1) {
79
+ return function () {
80
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
81
+ args[_key2] = arguments[_key2];
82
+ }
83
+ const vals = args.slice(0, numberOfArrays);
84
+ const idx = _transformDims(args[numberOfArrays]);
85
+ const rest = args.slice(numberOfArrays + 1);
86
+ return callbackFunction(...vals, idx, ...rest);
87
+ };
88
+ } else {
89
+ return callbackFunction;
90
+ }
91
+ }
92
+
93
+ /**
94
+ * Transforms the dimensions by adding 1 to each dimension.
95
+ *
96
+ * @param {Array} dims - The dimensions to transform.
97
+ * @returns {Array} The transformed dimensions.
98
+ */
99
+ function _transformDims(dims) {
100
+ return dims.map(dim => dim + 1);
101
+ }
@@ -71,14 +71,18 @@ const createDerivative = exports.createDerivative = /* #__PURE__ */(0, _factory.
71
71
  const res = _derivative(expr, constNodes);
72
72
  return options.simplify ? simplify(res) : res;
73
73
  }
74
- typed.addConversion({
75
- from: 'identifier',
76
- to: 'SymbolNode',
77
- convert: parse
78
- });
74
+ function parseIdentifier(string) {
75
+ const symbol = parse(string);
76
+ if (!symbol.isSymbolNode) {
77
+ throw new TypeError('Invalid variable. ' + `Cannot parse ${JSON.stringify(string)} into a variable in function derivative`);
78
+ }
79
+ return symbol;
80
+ }
79
81
  const derivative = typed(name, {
80
82
  'Node, SymbolNode': plainDerivative,
81
- 'Node, SymbolNode, Object': plainDerivative
83
+ 'Node, SymbolNode, Object': plainDerivative,
84
+ 'Node, string': (node, symbol) => plainDerivative(node, parseIdentifier(symbol)),
85
+ 'Node, string, Object': (node, symbol, options) => plainDerivative(node, parseIdentifier(symbol), options)
82
86
 
83
87
  /* TODO: implement and test syntax with order of derivatives -> implement as an option {order: number}
84
88
  'Node, SymbolNode, ConstantNode': function (expr, variable, {order}) {
@@ -92,11 +96,6 @@ const createDerivative = exports.createDerivative = /* #__PURE__ */(0, _factory.
92
96
  }
93
97
  */
94
98
  });
95
- typed.removeConversion({
96
- from: 'identifier',
97
- to: 'SymbolNode',
98
- convert: parse
99
- });
100
99
  derivative._simplify = true;
101
100
  derivative.toTex = function (deriv) {
102
101
  return _derivTex.apply(null, deriv.args);
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFilter = void 0;
7
- var _applyCallback = require("../../utils/applyCallback.js");
7
+ var _optimizeCallback = require("../../utils/optimizeCallback.js");
8
8
  var _array = require("../../utils/array.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  const name = 'filter';
@@ -62,8 +62,9 @@ const createFilter = exports.createFilter = /* #__PURE__ */(0, _factory.factory)
62
62
  * @private
63
63
  */
64
64
  function _filterCallback(x, callback) {
65
+ const fastCallback = (0, _optimizeCallback.optimizeCallback)(callback, x, 'filter');
65
66
  return (0, _array.filter)(x, function (value, index, array) {
66
67
  // invoke the callback function with the right number of arguments
67
- return (0, _applyCallback.applyCallback)(callback, value, [index], array, 'filter');
68
+ return fastCallback(value, [index], array);
68
69
  });
69
70
  }
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createForEach = void 0;
7
- var _applyCallback = require("../../utils/applyCallback.js");
8
- var _array = require("../../utils/array.js");
7
+ var _optimizeCallback = require("../../utils/optimizeCallback.js");
9
8
  var _factory = require("../../utils/factory.js");
9
+ var _array = require("../../utils/array.js");
10
10
  const name = 'forEach';
11
11
  const dependencies = ['typed'];
12
12
  const createForEach = exports.createForEach = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
@@ -51,16 +51,5 @@ const createForEach = exports.createForEach = /* #__PURE__ */(0, _factory.factor
51
51
  * @private
52
52
  */
53
53
  function _forEach(array, callback) {
54
- const recurse = function (value, index) {
55
- if (Array.isArray(value)) {
56
- (0, _array.forEach)(value, function (child, i) {
57
- // we create a copy of the index array and append the new index value
58
- recurse(child, index.concat(i));
59
- });
60
- } else {
61
- // invoke the callback function with the right number of arguments
62
- return (0, _applyCallback.applyCallback)(callback, value, index, array, 'forEach');
63
- }
64
- };
65
- recurse(array, []);
54
+ (0, _array.recurse)(array, [], array, (0, _optimizeCallback.optimizeCallback)(callback, array, name));
66
55
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createMap = void 0;
7
- var _applyCallback = require("../../utils/applyCallback.js");
7
+ var _optimizeCallback = require("../../utils/optimizeCallback.js");
8
8
  var _array = require("../../utils/array.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  const name = 'map';
@@ -135,36 +135,14 @@ const createMap = exports.createMap = /* #__PURE__ */(0, _factory.factory)(name,
135
135
  return 0;
136
136
  }
137
137
  }
138
- });
139
-
140
- /**
141
- * Map for a multi dimensional array
142
- * @param {Array} array
143
- * @param {Function} callback
144
- * @return {Array}
145
- * @private
146
- */
147
- function _mapArray(array, callback) {
148
- return _recurse(array, [], array, callback);
149
- }
150
-
151
- /**
152
- * Recursive function to map a multi-dimensional array.
153
- *
154
- * @param {*} value - The current value being processed in the array.
155
- * @param {Array} index - The index of the current value being processed in the array.
156
- * @param {Array} array - The array being processed.
157
- * @param {Function} callback - Function that produces the element of the new Array, taking three arguments: the value of the element, the index of the element, and the Array being processed.
158
- * @returns {*} The new array with each element being the result of the callback function.
159
- */
160
- function _recurse(value, index, array, callback) {
161
- if (Array.isArray(value)) {
162
- return value.map(function (child, i) {
163
- // we create a copy of the index array and append the new index value
164
- return _recurse(child, index.concat(i), array, callback);
165
- });
166
- } else {
167
- // invoke the callback function with the right number of arguments
168
- return (0, _applyCallback.applyCallback)(callback, value, index, array, 'map');
138
+ /**
139
+ * Map for a multi dimensional array
140
+ * @param {Array} array
141
+ * @param {Function} callback
142
+ * @return {Array}
143
+ * @private
144
+ */
145
+ function _mapArray(array, callback) {
146
+ return (0, _array.recurse)(array, [], array, (0, _optimizeCallback.optimizeCallback)(callback, array, name));
169
147
  }
170
- }
148
+ });
package/lib/cjs/header.js CHANGED
@@ -6,8 +6,8 @@
6
6
  * It features real and complex numbers, units, matrices, a large set of
7
7
  * mathematical functions, and a flexible expression parser.
8
8
  *
9
- * @version 13.1.1
10
- * @date 2024-08-27
9
+ * @version 13.2.0
10
+ * @date 2024-10-02
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>