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.
- package/HISTORY.md +17 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/function/typed.js +1 -0
- package/lib/cjs/expression/parse.js +1 -1
- package/lib/cjs/expression/transform/filter.transform.js +28 -40
- package/lib/cjs/expression/transform/forEach.transform.js +29 -30
- package/lib/cjs/expression/transform/map.transform.js +8 -93
- package/lib/cjs/expression/transform/utils/transformCallback.js +101 -0
- package/lib/cjs/function/algebra/derivative.js +10 -11
- package/lib/cjs/function/matrix/filter.js +3 -2
- package/lib/cjs/function/matrix/forEach.js +3 -14
- package/lib/cjs/function/matrix/map.js +11 -33
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/type/matrix/DenseMatrix.js +73 -29
- package/lib/cjs/type/matrix/SparseMatrix.js +7 -4
- package/lib/cjs/utils/array.js +22 -0
- package/lib/cjs/utils/optimizeCallback.js +94 -0
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/function/typed.js +1 -0
- package/lib/esm/expression/parse.js +1 -1
- package/lib/esm/expression/transform/filter.transform.js +28 -40
- package/lib/esm/expression/transform/forEach.transform.js +29 -30
- package/lib/esm/expression/transform/map.transform.js +8 -93
- package/lib/esm/expression/transform/utils/transformCallback.js +95 -0
- package/lib/esm/function/algebra/derivative.js +10 -11
- package/lib/esm/function/matrix/filter.js +3 -2
- package/lib/esm/function/matrix/forEach.js +3 -14
- package/lib/esm/function/matrix/map.js +12 -34
- package/lib/esm/type/matrix/DenseMatrix.js +75 -32
- package/lib/esm/type/matrix/SparseMatrix.js +7 -4
- package/lib/esm/utils/array.js +21 -0
- package/lib/esm/utils/optimizeCallback.js +88 -0
- package/lib/esm/version.js +1 -1
- package/package.json +7 -7
- package/types/index.d.ts +50 -12
- package/lib/cjs/utils/applyCallback.js +0 -73
- 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
|
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
|
-
|
27
|
-
|
28
|
-
|
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
|
-
|
31
|
-
|
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 =
|
47
|
+
callback = _compileAndEvaluate(callback, scope);
|
34
48
|
} else {
|
35
49
|
// an expression like filter([3, -2, 5], x > 0)
|
36
|
-
callback = (0, _compileInlineExpression.compileInlineExpression)(
|
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
|
-
|
44
|
-
|
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
|
8
|
-
var
|
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
|
-
|
26
|
-
|
27
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
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
|
35
|
-
callback = (0, _compileInlineExpression.compileInlineExpression)(
|
48
|
+
// an expression like filter([3, -2, 5], x > 0)
|
49
|
+
callback = (0, _compileInlineExpression.compileInlineExpression)(callback, math, scope);
|
36
50
|
}
|
37
51
|
}
|
38
|
-
return
|
52
|
+
return forEach(x, transformCallback(callback, N));
|
39
53
|
}
|
40
54
|
forEachTransform.rawArgs = true;
|
41
|
-
|
42
|
-
|
43
|
-
|
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,
|
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,
|
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
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
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
|
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 (
|
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
|
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
|
-
|
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
|
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
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
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.
|
10
|
-
* @date 2024-
|
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>
|