mathjs 13.1.1 → 13.2.0

Sign up to get free protection for your applications and to get access to all the features.
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>