mathjs 13.0.3 → 13.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (210) hide show
  1. package/HISTORY.md +17 -1
  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/create.js +12 -9
  6. package/lib/cjs/core/function/typed.js +3 -4
  7. package/lib/cjs/entry/dependenciesAny/dependenciesFlatten.generated.js +0 -2
  8. package/lib/cjs/entry/dependenciesAny/dependenciesSqueeze.generated.js +0 -2
  9. package/lib/cjs/entry/impureFunctionsAny.generated.js +2 -2
  10. package/lib/cjs/entry/pureFunctionsAny.generated.js +6 -8
  11. package/lib/cjs/entry/typeChecks.js +18 -0
  12. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -2
  13. package/lib/cjs/expression/embeddedDocs/function/arithmetic/hypot.js +1 -1
  14. package/lib/cjs/expression/embeddedDocs/function/matrix/diff.js +1 -1
  15. package/lib/cjs/expression/embeddedDocs/function/matrix/fft.js +1 -1
  16. package/lib/cjs/expression/embeddedDocs/function/matrix/ifft.js +1 -1
  17. package/lib/cjs/expression/embeddedDocs/function/matrix/kron.js +1 -1
  18. package/lib/cjs/expression/embeddedDocs/function/matrix/map.js +3 -3
  19. package/lib/cjs/expression/embeddedDocs/function/special/zeta.js +1 -1
  20. package/lib/cjs/expression/embeddedDocs/function/statistics/quantileSeq.js +1 -1
  21. package/lib/cjs/expression/embeddedDocs/function/trigonometry/acoth.js +1 -1
  22. package/lib/cjs/expression/embeddedDocs/function/trigonometry/acsch.js +1 -1
  23. package/lib/cjs/expression/embeddedDocs/function/utils/clone.js +1 -1
  24. package/lib/cjs/expression/function/evaluate.js +5 -0
  25. package/lib/cjs/expression/node/FunctionNode.js +1 -1
  26. package/lib/cjs/expression/transform/filter.transform.js +2 -2
  27. package/lib/cjs/expression/transform/map.transform.js +104 -37
  28. package/lib/cjs/expression/transform/utils/dimToZeroBase.js +23 -0
  29. package/lib/cjs/expression/transform/utils/lastDimToZeroBase.js +3 -4
  30. package/lib/cjs/function/arithmetic/hypot.js +3 -3
  31. package/lib/cjs/function/matrix/apply.js +1 -1
  32. package/lib/cjs/function/matrix/fft.js +3 -3
  33. package/lib/cjs/function/matrix/filter.js +2 -2
  34. package/lib/cjs/function/matrix/flatten.js +5 -6
  35. package/lib/cjs/function/matrix/ifft.js +2 -2
  36. package/lib/cjs/function/matrix/kron.js +4 -4
  37. package/lib/cjs/function/matrix/map.js +109 -18
  38. package/lib/cjs/function/matrix/size.js +7 -7
  39. package/lib/cjs/function/matrix/squeeze.js +3 -4
  40. package/lib/cjs/function/probability/random.js +1 -1
  41. package/lib/cjs/function/probability/randomInt.js +1 -1
  42. package/lib/cjs/function/statistics/cumsum.js +2 -2
  43. package/lib/cjs/function/trigonometry/acoth.js +2 -2
  44. package/lib/cjs/function/trigonometry/acsch.js +2 -2
  45. package/lib/cjs/header.js +2 -2
  46. package/lib/cjs/type/matrix/DenseMatrix.js +3 -28
  47. package/lib/cjs/type/matrix/SparseMatrix.js +5 -8
  48. package/lib/cjs/utils/array.js +27 -0
  49. package/lib/cjs/utils/collection.js +1 -1
  50. package/lib/cjs/utils/function.js +0 -14
  51. package/lib/cjs/utils/is.js +27 -0
  52. package/lib/cjs/utils/map.js +2 -20
  53. package/lib/cjs/version.js +1 -1
  54. package/lib/esm/core/create.js +9 -6
  55. package/lib/esm/core/function/typed.js +2 -3
  56. package/lib/esm/entry/dependenciesAny/dependenciesFlatten.generated.js +0 -2
  57. package/lib/esm/entry/dependenciesAny/dependenciesSqueeze.generated.js +0 -2
  58. package/lib/esm/entry/impureFunctionsAny.generated.js +3 -3
  59. package/lib/esm/entry/pureFunctionsAny.generated.js +7 -9
  60. package/lib/esm/entry/typeChecks.js +1 -1
  61. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -2
  62. package/lib/esm/expression/embeddedDocs/function/arithmetic/hypot.js +1 -1
  63. package/lib/esm/expression/embeddedDocs/function/matrix/diff.js +1 -1
  64. package/lib/esm/expression/embeddedDocs/function/matrix/fft.js +1 -1
  65. package/lib/esm/expression/embeddedDocs/function/matrix/ifft.js +1 -1
  66. package/lib/esm/expression/embeddedDocs/function/matrix/kron.js +1 -1
  67. package/lib/esm/expression/embeddedDocs/function/matrix/map.js +3 -3
  68. package/lib/esm/expression/embeddedDocs/function/special/zeta.js +1 -1
  69. package/lib/esm/expression/embeddedDocs/function/statistics/quantileSeq.js +1 -1
  70. package/lib/esm/expression/embeddedDocs/function/trigonometry/acoth.js +1 -1
  71. package/lib/esm/expression/embeddedDocs/function/trigonometry/acsch.js +1 -1
  72. package/lib/esm/expression/embeddedDocs/function/utils/clone.js +1 -1
  73. package/lib/esm/expression/function/compile.js +1 -1
  74. package/lib/esm/expression/function/evaluate.js +8 -3
  75. package/lib/esm/expression/node/FunctionNode.js +1 -1
  76. package/lib/esm/expression/parse.js +2 -2
  77. package/lib/esm/expression/transform/filter.transform.js +4 -4
  78. package/lib/esm/expression/transform/forEach.transform.js +4 -4
  79. package/lib/esm/expression/transform/map.transform.js +104 -37
  80. package/lib/esm/expression/transform/print.transform.js +2 -2
  81. package/lib/esm/expression/transform/utils/dimToZeroBase.js +16 -0
  82. package/lib/esm/expression/transform/utils/lastDimToZeroBase.js +4 -6
  83. package/lib/esm/function/algebra/decomposition/slu.js +1 -1
  84. package/lib/esm/function/algebra/derivative.js +15 -15
  85. package/lib/esm/function/algebra/lyap.js +4 -4
  86. package/lib/esm/function/algebra/simplify/util.js +3 -3
  87. package/lib/esm/function/algebra/simplifyConstant.js +9 -9
  88. package/lib/esm/function/algebra/solver/lsolve.js +3 -3
  89. package/lib/esm/function/algebra/solver/lsolveAll.js +3 -3
  90. package/lib/esm/function/algebra/solver/lusolve.js +5 -5
  91. package/lib/esm/function/algebra/solver/usolve.js +3 -3
  92. package/lib/esm/function/algebra/solver/usolveAll.js +3 -3
  93. package/lib/esm/function/algebra/sylvester.js +7 -7
  94. package/lib/esm/function/arithmetic/addScalar.js +4 -4
  95. package/lib/esm/function/arithmetic/ceil.js +6 -6
  96. package/lib/esm/function/arithmetic/divide.js +5 -5
  97. package/lib/esm/function/arithmetic/divideScalar.js +5 -5
  98. package/lib/esm/function/arithmetic/fix.js +5 -5
  99. package/lib/esm/function/arithmetic/floor.js +6 -6
  100. package/lib/esm/function/arithmetic/hypot.js +3 -3
  101. package/lib/esm/function/arithmetic/mod.js +3 -3
  102. package/lib/esm/function/arithmetic/multiply.js +7 -7
  103. package/lib/esm/function/arithmetic/multiplyScalar.js +4 -4
  104. package/lib/esm/function/arithmetic/norm.js +2 -2
  105. package/lib/esm/function/arithmetic/pow.js +6 -6
  106. package/lib/esm/function/arithmetic/round.js +7 -7
  107. package/lib/esm/function/arithmetic/subtractScalar.js +4 -4
  108. package/lib/esm/function/arithmetic/xgcd.js +1 -1
  109. package/lib/esm/function/combinatorics/bellNumbers.js +1 -1
  110. package/lib/esm/function/combinatorics/catalan.js +1 -1
  111. package/lib/esm/function/combinatorics/composition.js +1 -1
  112. package/lib/esm/function/combinatorics/stirlingS2.js +1 -1
  113. package/lib/esm/function/geometry/distance.js +4 -4
  114. package/lib/esm/function/geometry/intersect.js +2 -2
  115. package/lib/esm/function/logical/and.js +2 -2
  116. package/lib/esm/function/logical/or.js +2 -2
  117. package/lib/esm/function/logical/xor.js +2 -2
  118. package/lib/esm/function/matrix/apply.js +2 -2
  119. package/lib/esm/function/matrix/column.js +1 -1
  120. package/lib/esm/function/matrix/concat.js +1 -1
  121. package/lib/esm/function/matrix/count.js +1 -1
  122. package/lib/esm/function/matrix/cross.js +3 -3
  123. package/lib/esm/function/matrix/diag.js +10 -10
  124. package/lib/esm/function/matrix/diff.js +2 -2
  125. package/lib/esm/function/matrix/eigs.js +3 -3
  126. package/lib/esm/function/matrix/fft.js +3 -3
  127. package/lib/esm/function/matrix/filter.js +4 -4
  128. package/lib/esm/function/matrix/flatten.js +5 -6
  129. package/lib/esm/function/matrix/forEach.js +4 -4
  130. package/lib/esm/function/matrix/identity.js +6 -6
  131. package/lib/esm/function/matrix/ifft.js +3 -3
  132. package/lib/esm/function/matrix/inv.js +1 -1
  133. package/lib/esm/function/matrix/kron.js +7 -7
  134. package/lib/esm/function/matrix/map.js +110 -19
  135. package/lib/esm/function/matrix/matrixFromFunction.js +6 -6
  136. package/lib/esm/function/matrix/ones.js +2 -2
  137. package/lib/esm/function/matrix/partitionSelect.js +2 -2
  138. package/lib/esm/function/matrix/pinv.js +1 -1
  139. package/lib/esm/function/matrix/range.js +10 -10
  140. package/lib/esm/function/matrix/reshape.js +2 -2
  141. package/lib/esm/function/matrix/rotate.js +4 -4
  142. package/lib/esm/function/matrix/rotationMatrix.js +6 -6
  143. package/lib/esm/function/matrix/row.js +1 -1
  144. package/lib/esm/function/matrix/size.js +8 -8
  145. package/lib/esm/function/matrix/sort.js +4 -4
  146. package/lib/esm/function/matrix/sqrtm.js +1 -1
  147. package/lib/esm/function/matrix/squeeze.js +3 -4
  148. package/lib/esm/function/matrix/subset.js +2 -2
  149. package/lib/esm/function/matrix/zeros.js +2 -2
  150. package/lib/esm/function/probability/combinations.js +1 -1
  151. package/lib/esm/function/probability/combinationsWithRep.js +2 -2
  152. package/lib/esm/function/probability/kldivergence.js +4 -4
  153. package/lib/esm/function/probability/multinomial.js +1 -1
  154. package/lib/esm/function/probability/permutations.js +2 -2
  155. package/lib/esm/function/probability/pickRandom.js +6 -6
  156. package/lib/esm/function/probability/random.js +1 -1
  157. package/lib/esm/function/probability/randomInt.js +1 -1
  158. package/lib/esm/function/relational/compare.js +6 -6
  159. package/lib/esm/function/relational/deepEqual.js +1 -1
  160. package/lib/esm/function/relational/equal.js +1 -1
  161. package/lib/esm/function/relational/equalScalar.js +7 -7
  162. package/lib/esm/function/relational/equalText.js +1 -1
  163. package/lib/esm/function/relational/larger.js +3 -3
  164. package/lib/esm/function/relational/largerEq.js +4 -4
  165. package/lib/esm/function/relational/smaller.js +3 -3
  166. package/lib/esm/function/relational/smallerEq.js +3 -3
  167. package/lib/esm/function/relational/unequal.js +1 -1
  168. package/lib/esm/function/set/setCartesian.js +1 -1
  169. package/lib/esm/function/set/setDifference.js +1 -1
  170. package/lib/esm/function/set/setDistinct.js +1 -1
  171. package/lib/esm/function/set/setIntersect.js +1 -1
  172. package/lib/esm/function/set/setIsSubset.js +1 -1
  173. package/lib/esm/function/set/setMultiplicity.js +1 -1
  174. package/lib/esm/function/set/setPowerset.js +1 -1
  175. package/lib/esm/function/set/setSize.js +2 -2
  176. package/lib/esm/function/set/setSymDifference.js +1 -1
  177. package/lib/esm/function/set/setUnion.js +1 -1
  178. package/lib/esm/function/signal/freqz.js +6 -6
  179. package/lib/esm/function/statistics/corr.js +2 -2
  180. package/lib/esm/function/statistics/cumsum.js +3 -3
  181. package/lib/esm/function/statistics/max.js +1 -1
  182. package/lib/esm/function/statistics/median.js +3 -3
  183. package/lib/esm/function/statistics/min.js +1 -1
  184. package/lib/esm/function/statistics/prod.js +1 -1
  185. package/lib/esm/function/statistics/variance.js +2 -2
  186. package/lib/esm/function/string/bin.js +2 -2
  187. package/lib/esm/function/string/hex.js +2 -2
  188. package/lib/esm/function/string/oct.js +2 -2
  189. package/lib/esm/function/trigonometry/acoth.js +2 -2
  190. package/lib/esm/function/trigonometry/acsch.js +2 -2
  191. package/lib/esm/type/bigint.js +1 -1
  192. package/lib/esm/type/complex/function/complex.js +2 -2
  193. package/lib/esm/type/fraction/function/fraction.js +1 -1
  194. package/lib/esm/type/matrix/DenseMatrix.js +13 -38
  195. package/lib/esm/type/matrix/SparseMatrix.js +5 -8
  196. package/lib/esm/type/matrix/function/index.js +1 -1
  197. package/lib/esm/type/matrix/function/matrix.js +1 -1
  198. package/lib/esm/type/matrix/function/sparse.js +2 -2
  199. package/lib/esm/type/number.js +1 -1
  200. package/lib/esm/type/unit/function/createUnit.js +3 -3
  201. package/lib/esm/type/unit/function/splitUnit.js +1 -1
  202. package/lib/esm/type/unit/function/unit.js +2 -2
  203. package/lib/esm/utils/array.js +26 -0
  204. package/lib/esm/utils/collection.js +1 -1
  205. package/lib/esm/utils/function.js +0 -13
  206. package/lib/esm/utils/is.js +24 -0
  207. package/lib/esm/utils/map.js +2 -19
  208. package/lib/esm/version.js +1 -1
  209. package/package.json +13 -13
  210. package/types/index.d.ts +57 -18
@@ -1,7 +1,6 @@
1
- import { applyCallback } from '../../utils/applyCallback.js';
2
- import { map } from '../../utils/array.js';
3
1
  import { factory } from '../../utils/factory.js';
4
2
  import { isFunctionAssignmentNode, isSymbolNode } from '../../utils/is.js';
3
+ import { createMap } from '../../function/matrix/map.js';
5
4
  import { compileInlineExpression } from './utils/compileInlineExpression.js';
6
5
  var name = 'map';
7
6
  var dependencies = ['typed'];
@@ -15,57 +14,125 @@ export var createMapTransform = /* #__PURE__ */factory(name, dependencies, _ref
15
14
  *
16
15
  * This transform creates a one-based index instead of a zero-based index
17
16
  */
17
+ var map = createMap({
18
+ typed
19
+ });
18
20
  function mapTransform(args, math, scope) {
19
- var x, callback;
20
- if (args[0]) {
21
- x = args[0].compile().evaluate(scope);
21
+ if (args.length === 0) {
22
+ return map();
22
23
  }
23
- if (args[1]) {
24
- if (isSymbolNode(args[1]) || isFunctionAssignmentNode(args[1])) {
24
+ if (args.length === 1) {
25
+ return map(args[0]);
26
+ }
27
+ var N = args.length - 1;
28
+ var X, callback;
29
+ callback = args[N];
30
+ X = args.slice(0, N);
31
+ X = X.map(arg => _compileAndEvaluate(arg, scope));
32
+ if (callback) {
33
+ if (isSymbolNode(callback) || isFunctionAssignmentNode(callback)) {
25
34
  // a function pointer, like filter([3, -2, 5], myTestFunction)
26
- callback = args[1].compile().evaluate(scope);
35
+ callback = _compileAndEvaluate(callback, scope);
27
36
  } else {
28
37
  // an expression like filter([3, -2, 5], x > 0)
29
- callback = compileInlineExpression(args[1], math, scope);
38
+ callback = compileInlineExpression(callback, math, scope);
30
39
  }
31
40
  }
32
- return map(x, callback);
41
+ return map(...X, _transformCallback(callback, N));
42
+ function _compileAndEvaluate(arg, scope) {
43
+ return arg.compile().evaluate(scope);
44
+ }
33
45
  }
34
46
  mapTransform.rawArgs = true;
47
+ return mapTransform;
35
48
 
36
- // one-based version of map function
37
- var map = typed('map', {
38
- 'Array, function': function ArrayFunction(x, callback) {
39
- return _map(x, callback, x);
40
- },
41
- 'Matrix, function': function MatrixFunction(x, callback) {
42
- return x.create(_map(x.valueOf(), callback, x));
49
+ /**
50
+ * Transforms the given callback function based on its type and number of arrays.
51
+ *
52
+ * @param {Function} callback - The callback function to transform.
53
+ * @param {number} numberOfArrays - The number of arrays to pass to the callback function.
54
+ * @returns {*} - The transformed callback function.
55
+ */
56
+ function _transformCallback(callback, numberOfArrays) {
57
+ if (typed.isTypedFunction(callback)) {
58
+ return _transformTypedCallbackFunction(callback, numberOfArrays);
59
+ } else {
60
+ return _transformCallbackFunction(callback, callback.length, numberOfArrays);
43
61
  }
44
- });
45
- return mapTransform;
62
+ }
63
+
64
+ /**
65
+ * Transforms the given typed callback function based on the number of arrays.
66
+ *
67
+ * @param {Function} typedFunction - The typed callback function to transform.
68
+ * @param {number} numberOfArrays - The number of arrays to pass to the callback function.
69
+ * @returns {*} - The transformed typed callback function.
70
+ */
71
+ function _transformTypedCallbackFunction(typedFunction, numberOfArrays) {
72
+ var signatures = Object.fromEntries(Object.entries(typedFunction.signatures).map(_ref2 => {
73
+ var [signature, callbackFunction] = _ref2;
74
+ var numberOfCallbackInputs = signature.split(',').length;
75
+ if (typed.isTypedFunction(callbackFunction)) {
76
+ return [signature, _transformTypedCallbackFunction(callbackFunction, numberOfArrays)];
77
+ } else {
78
+ return [signature, _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays)];
79
+ }
80
+ }));
81
+ if (typeof typedFunction.name === 'string') {
82
+ return typed(typedFunction.name, signatures);
83
+ } else {
84
+ return typed(signatures);
85
+ }
86
+ }
46
87
  }, {
47
88
  isTransformFunction: true
48
89
  });
49
90
 
50
91
  /**
51
- * Map for a multidimensional array. One-based indexes
52
- * @param {Array} array
53
- * @param {function} callback
54
- * @param {Array} orig
55
- * @return {Array}
56
- * @private
92
+ * Transforms the callback function based on the number of callback inputs and arrays.
93
+ * There are three cases:
94
+ * 1. The callback function has N arguments.
95
+ * 2. The callback function has N+1 arguments.
96
+ * 3. The callback function has 2N+1 arguments.
97
+ *
98
+ * @param {Function} callbackFunction - The callback function to transform.
99
+ * @param {number} numberOfCallbackInputs - The number of callback inputs.
100
+ * @param {number} numberOfArrays - The number of arrays.
101
+ * @returns {Function} The transformed callback function.
57
102
  */
58
- function _map(array, callback, orig) {
59
- function recurse(value, index) {
60
- if (Array.isArray(value)) {
61
- return map(value, function (child, i) {
62
- // we create a copy of the index array and append the new index value
63
- return recurse(child, index.concat(i + 1)); // one based index, hence i + 1
64
- });
65
- } else {
66
- // invoke the (typed) callback function with the right number of arguments
67
- return applyCallback(callback, value, index, orig, 'map');
68
- }
103
+ function _transformCallbackFunction(callbackFunction, numberOfCallbackInputs, numberOfArrays) {
104
+ if (numberOfCallbackInputs === numberOfArrays) {
105
+ return callbackFunction;
106
+ } else if (numberOfCallbackInputs === numberOfArrays + 1) {
107
+ return function () {
108
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
109
+ args[_key] = arguments[_key];
110
+ }
111
+ var vals = args.slice(0, numberOfArrays);
112
+ var idx = _transformDims(args[numberOfArrays]);
113
+ return callbackFunction(...vals, idx);
114
+ };
115
+ } else if (numberOfCallbackInputs > numberOfArrays + 1) {
116
+ return function () {
117
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
118
+ args[_key2] = arguments[_key2];
119
+ }
120
+ var vals = args.slice(0, numberOfArrays);
121
+ var idx = _transformDims(args[numberOfArrays]);
122
+ var rest = args.slice(numberOfArrays + 1);
123
+ return callbackFunction(...vals, idx, ...rest);
124
+ };
125
+ } else {
126
+ return callbackFunction;
69
127
  }
70
- return recurse(array, []);
128
+ }
129
+
130
+ /**
131
+ * Transforms the dimensions by adding 1 to each dimension.
132
+ *
133
+ * @param {Array} dims - The dimensions to transform.
134
+ * @returns {Array} The transformed dimensions.
135
+ */
136
+ function _transformDims(dims) {
137
+ return dims.map(dim => dim.isBigNumber ? dim.plus(1) : dim + 1);
71
138
  }
@@ -17,10 +17,10 @@ export var createPrintTransform = /* #__PURE__ */factory(name, dependencies, _re
17
17
  add
18
18
  });
19
19
  return typed(name, {
20
- 'string, Object | Array': function stringObjectArray(template, values) {
20
+ 'string, Object | Array': function string_Object__Array(template, values) {
21
21
  return print(_convertTemplateToZeroBasedIndex(template), values);
22
22
  },
23
- 'string, Object | Array, number | Object': function stringObjectArrayNumberObject(template, values, options) {
23
+ 'string, Object | Array, number | Object': function string_Object__Array_number__Object(template, values, options) {
24
24
  return print(_convertTemplateToZeroBasedIndex(template), values, options);
25
25
  }
26
26
  });
@@ -0,0 +1,16 @@
1
+ import { isNumber, isBigNumber } from '../../../utils/is.js';
2
+ /**
3
+ * Change last argument dim from one-based to zero-based.
4
+ */
5
+ export function dimToZeroBase(dim) {
6
+ if (isNumber(dim)) {
7
+ return dim - 1;
8
+ } else if (isBigNumber(dim)) {
9
+ return dim.minus(1);
10
+ } else {
11
+ return dim;
12
+ }
13
+ }
14
+ export function isNumberOrBigNumber(n) {
15
+ return isNumber(n) || isBigNumber(n);
16
+ }
@@ -1,5 +1,5 @@
1
- import { isBigNumber, isCollection, isNumber } from '../../../utils/is.js';
2
-
1
+ import { isCollection } from '../../../utils/is.js';
2
+ import { dimToZeroBase, isNumberOrBigNumber } from './dimToZeroBase.js';
3
3
  /**
4
4
  * Change last argument dim from one-based to zero-based.
5
5
  */
@@ -7,10 +7,8 @@ export function lastDimToZeroBase(args) {
7
7
  if (args.length === 2 && isCollection(args[0])) {
8
8
  args = args.slice();
9
9
  var dim = args[1];
10
- if (isNumber(dim)) {
11
- args[1] = dim - 1;
12
- } else if (isBigNumber(dim)) {
13
- args[1] = dim.minus(1);
10
+ if (isNumberOrBigNumber(dim)) {
11
+ args[1] = dimToZeroBase(dim);
14
12
  }
15
13
  }
16
14
  return args;
@@ -70,7 +70,7 @@ export var createSlu = /* #__PURE__ */factory(name, dependencies, _ref => {
70
70
  * @return {Object} The lower triangular matrix, the upper triangular matrix and the permutation vectors.
71
71
  */
72
72
  return typed(name, {
73
- 'SparseMatrix, number, number': function SparseMatrixNumberNumber(a, order, threshold) {
73
+ 'SparseMatrix, number, number': function SparseMatrix_number_number(a, order, threshold) {
74
74
  // verify order
75
75
  if (!isInteger(order) || order < 0 || order > 3) {
76
76
  throw new Error('Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]');
@@ -99,24 +99,24 @@ export var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref =>
99
99
  // FIXME: move the toTex method of derivative to latex.js. Difficulty is that it relies on parse.
100
100
  // NOTE: the optional "order" parameter here is currently unused
101
101
  var _derivTex = typed('_derivTex', {
102
- 'Node, SymbolNode': function NodeSymbolNode(expr, x) {
102
+ 'Node, SymbolNode': function Node_SymbolNode(expr, x) {
103
103
  if (isConstantNode(expr) && typeOf(expr.value) === 'string') {
104
104
  return _derivTex(parse(expr.value).toString(), x.toString(), 1);
105
105
  } else {
106
106
  return _derivTex(expr.toTex(), x.toString(), 1);
107
107
  }
108
108
  },
109
- 'Node, ConstantNode': function NodeConstantNode(expr, x) {
109
+ 'Node, ConstantNode': function Node_ConstantNode(expr, x) {
110
110
  if (typeOf(x.value) === 'string') {
111
111
  return _derivTex(expr, parse(x.value));
112
112
  } else {
113
113
  throw new Error("The second parameter to 'derivative' is a non-string constant");
114
114
  }
115
115
  },
116
- 'Node, SymbolNode, ConstantNode': function NodeSymbolNodeConstantNode(expr, x, order) {
116
+ 'Node, SymbolNode, ConstantNode': function Node_SymbolNode_ConstantNode(expr, x, order) {
117
117
  return _derivTex(expr.toString(), x.name, order.value);
118
118
  },
119
- 'string, string, number': function stringStringNumber(expr, x, order) {
119
+ 'string, string, number': function string_string_number(expr, x, order) {
120
120
  var d;
121
121
  if (order === 1) {
122
122
  d = '{d\\over d' + x + '}';
@@ -143,11 +143,11 @@ export var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref =>
143
143
  */
144
144
  // TODO: can we rewrite constTag into a pure function?
145
145
  var constTag = typed('constTag', {
146
- 'Object, ConstantNode, string': function ObjectConstantNodeString(constNodes, node) {
146
+ 'Object, ConstantNode, string': function Object_ConstantNode_string(constNodes, node) {
147
147
  constNodes[node] = true;
148
148
  return true;
149
149
  },
150
- 'Object, SymbolNode, string': function ObjectSymbolNodeString(constNodes, node, varName) {
150
+ 'Object, SymbolNode, string': function Object_SymbolNode_string(constNodes, node, varName) {
151
151
  // Treat other variables like constants. For reasoning, see:
152
152
  // https://en.wikipedia.org/wiki/Partial_derivative
153
153
  if (node.name !== varName) {
@@ -156,17 +156,17 @@ export var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref =>
156
156
  }
157
157
  return false;
158
158
  },
159
- 'Object, ParenthesisNode, string': function ObjectParenthesisNodeString(constNodes, node, varName) {
159
+ 'Object, ParenthesisNode, string': function Object_ParenthesisNode_string(constNodes, node, varName) {
160
160
  return constTag(constNodes, node.content, varName);
161
161
  },
162
- 'Object, FunctionAssignmentNode, string': function ObjectFunctionAssignmentNodeString(constNodes, node, varName) {
162
+ 'Object, FunctionAssignmentNode, string': function Object_FunctionAssignmentNode_string(constNodes, node, varName) {
163
163
  if (!node.params.includes(varName)) {
164
164
  constNodes[node] = true;
165
165
  return true;
166
166
  }
167
167
  return constTag(constNodes, node.expr, varName);
168
168
  },
169
- 'Object, FunctionNode | OperatorNode, string': function ObjectFunctionNodeOperatorNodeString(constNodes, node, varName) {
169
+ 'Object, FunctionNode | OperatorNode, string': function Object_FunctionNode__OperatorNode_string(constNodes, node, varName) {
170
170
  if (node.args.length > 0) {
171
171
  var isConst = constTag(constNodes, node.args[0], varName);
172
172
  for (var i = 1; i < node.args.length; ++i) {
@@ -189,25 +189,25 @@ export var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref =>
189
189
  * @return {ConstantNode | SymbolNode | ParenthesisNode | FunctionNode | OperatorNode} The derivative of `expr`
190
190
  */
191
191
  var _derivative = typed('_derivative', {
192
- 'ConstantNode, Object': function ConstantNodeObject(node) {
192
+ 'ConstantNode, Object': function ConstantNode_Object(node) {
193
193
  return createConstantNode(0);
194
194
  },
195
- 'SymbolNode, Object': function SymbolNodeObject(node, constNodes) {
195
+ 'SymbolNode, Object': function SymbolNode_Object(node, constNodes) {
196
196
  if (constNodes[node] !== undefined) {
197
197
  return createConstantNode(0);
198
198
  }
199
199
  return createConstantNode(1);
200
200
  },
201
- 'ParenthesisNode, Object': function ParenthesisNodeObject(node, constNodes) {
201
+ 'ParenthesisNode, Object': function ParenthesisNode_Object(node, constNodes) {
202
202
  return new ParenthesisNode(_derivative(node.content, constNodes));
203
203
  },
204
- 'FunctionAssignmentNode, Object': function FunctionAssignmentNodeObject(node, constNodes) {
204
+ 'FunctionAssignmentNode, Object': function FunctionAssignmentNode_Object(node, constNodes) {
205
205
  if (constNodes[node] !== undefined) {
206
206
  return createConstantNode(0);
207
207
  }
208
208
  return _derivative(node.expr, constNodes);
209
209
  },
210
- 'FunctionNode, Object': function FunctionNodeObject(node, constNodes) {
210
+ 'FunctionNode, Object': function FunctionNode_Object(node, constNodes) {
211
211
  if (constNodes[node] !== undefined) {
212
212
  return createConstantNode(0);
213
213
  }
@@ -411,7 +411,7 @@ export var createDerivative = /* #__PURE__ */factory(name, dependencies, _ref =>
411
411
  }
412
412
  return new OperatorNode(op, func, [chainDerivative, funcDerivative]);
413
413
  },
414
- 'OperatorNode, Object': function OperatorNodeObject(node, constNodes) {
414
+ 'OperatorNode, Object': function OperatorNode_Object(node, constNodes) {
415
415
  if (constNodes[node] !== undefined) {
416
416
  return createConstantNode(0);
417
417
  }
@@ -36,16 +36,16 @@ export var createLyap = /* #__PURE__ */factory(name, dependencies, _ref => {
36
36
  * @return {Matrix | Array} Matrix P solution to the Continuous-time Lyapunov equation AP+PA'=Q
37
37
  */
38
38
  return typed(name, {
39
- 'Matrix, Matrix': function MatrixMatrix(A, Q) {
39
+ 'Matrix, Matrix': function Matrix_Matrix(A, Q) {
40
40
  return sylvester(A, transpose(A), multiply(-1, Q));
41
41
  },
42
- 'Array, Matrix': function ArrayMatrix(A, Q) {
42
+ 'Array, Matrix': function Array_Matrix(A, Q) {
43
43
  return sylvester(matrix(A), transpose(matrix(A)), multiply(-1, Q));
44
44
  },
45
- 'Matrix, Array': function MatrixArray(A, Q) {
45
+ 'Matrix, Array': function Matrix_Array(A, Q) {
46
46
  return sylvester(A, transpose(matrix(A)), matrix(multiply(-1, Q)));
47
47
  },
48
- 'Array, Array': function ArrayArray(A, Q) {
48
+ 'Array, Array': function Array_Array(A, Q) {
49
49
  return sylvester(matrix(A), transpose(matrix(A)), matrix(multiply(-1, Q))).toArray();
50
50
  }
51
51
  });
@@ -168,11 +168,11 @@ export var createUtil = /* #__PURE__ */factory(name, dependencies, _ref => {
168
168
  function allChildren(node, context) {
169
169
  var op;
170
170
  var children = [];
171
- var findChildren = function findChildren(node) {
171
+ var _findChildren = function findChildren(node) {
172
172
  for (var i = 0; i < node.args.length; i++) {
173
173
  var child = node.args[i];
174
174
  if (isOperatorNode(child) && op === child.op) {
175
- findChildren(child);
175
+ _findChildren(child);
176
176
  } else {
177
177
  children.push(child);
178
178
  }
@@ -180,7 +180,7 @@ export var createUtil = /* #__PURE__ */factory(name, dependencies, _ref => {
180
180
  };
181
181
  if (isAssociative(node, context)) {
182
182
  op = node.op;
183
- findChildren(node);
183
+ _findChildren(node);
184
184
  return children;
185
185
  } else {
186
186
  return node.args;
@@ -62,7 +62,7 @@ export var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _
62
62
  */
63
63
  var simplifyConstant = typed('simplifyConstant', {
64
64
  Node: node => _ensureNode(foldFraction(node, {})),
65
- 'Node, Object': function NodeObject(expr, options) {
65
+ 'Node, Object': function Node_Object(expr, options) {
66
66
  return _ensureNode(foldFraction(expr, options));
67
67
  }
68
68
  });
@@ -142,7 +142,7 @@ export var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _
142
142
  // Convert numbers to a preferred number type in preference order: Fraction, number, Complex
143
143
  // BigNumbers are left alone
144
144
  var _toNumber = typed({
145
- 'string, Object': function stringObject(s, options) {
145
+ 'string, Object': function string_Object(s, options) {
146
146
  var numericType = safeNumberType(s, config);
147
147
  if (numericType === 'BigNumber') {
148
148
  if (bignumber === undefined) {
@@ -161,32 +161,32 @@ export var createSimplifyConstant = /* #__PURE__ */factory(name, dependencies, _
161
161
  return _exactFraction(n, options);
162
162
  }
163
163
  },
164
- 'Fraction, Object': function FractionObject(s, options) {
164
+ 'Fraction, Object': function Fraction_Object(s, options) {
165
165
  return s;
166
166
  },
167
167
  // we don't need options here
168
168
 
169
- 'BigNumber, Object': function BigNumberObject(s, options) {
169
+ 'BigNumber, Object': function BigNumber_Object(s, options) {
170
170
  return s;
171
171
  },
172
172
  // we don't need options here
173
173
 
174
- 'number, Object': function numberObject(s, options) {
174
+ 'number, Object': function number_Object(s, options) {
175
175
  return _exactFraction(s, options);
176
176
  },
177
- 'bigint, Object': function bigintObject(s, options) {
177
+ 'bigint, Object': function bigint_Object(s, options) {
178
178
  return s;
179
179
  },
180
- 'Complex, Object': function ComplexObject(s, options) {
180
+ 'Complex, Object': function Complex_Object(s, options) {
181
181
  if (s.im !== 0) {
182
182
  return s;
183
183
  }
184
184
  return _exactFraction(s.re, options);
185
185
  },
186
- 'Matrix, Object': function MatrixObject(s, options) {
186
+ 'Matrix, Object': function Matrix_Object(s, options) {
187
187
  return matrix(_exactFraction(s.valueOf()));
188
188
  },
189
- 'Array, Object': function ArrayObject(s, options) {
189
+ 'Array, Object': function Array_Object(s, options) {
190
190
  return s.map(_exactFraction);
191
191
  }
192
192
  });
@@ -41,13 +41,13 @@ export var createLsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
41
41
  * @return {DenseMatrix | Array} A column vector with the linear system solution (x)
42
42
  */
43
43
  return typed(name, {
44
- 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {
44
+ 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {
45
45
  return _sparseForwardSubstitution(m, b);
46
46
  },
47
- 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {
47
+ 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {
48
48
  return _denseForwardSubstitution(m, b);
49
49
  },
50
- 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
50
+ 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {
51
51
  var m = matrix(a);
52
52
  var r = _denseForwardSubstitution(m, b);
53
53
  return r.valueOf();
@@ -41,13 +41,13 @@ export var createLsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
41
41
  * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system
42
42
  */
43
43
  return typed(name, {
44
- 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {
44
+ 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {
45
45
  return _sparseForwardSubstitution(m, b);
46
46
  },
47
- 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {
47
+ 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {
48
48
  return _denseForwardSubstitution(m, b);
49
49
  },
50
- 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
50
+ 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {
51
51
  var m = matrix(a);
52
52
  var R = _denseForwardSubstitution(m, b);
53
53
  return R.map(r => r.valueOf());
@@ -52,25 +52,25 @@ export var createLusolve = /* #__PURE__ */factory(name, dependencies, _ref => {
52
52
  * @return {DenseMatrix | Array} Column vector with the solution to the linear system A * x = b
53
53
  */
54
54
  return typed(name, {
55
- 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
55
+ 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {
56
56
  a = matrix(a);
57
57
  var d = lup(a);
58
58
  var x = _lusolve(d.L, d.U, d.p, null, b);
59
59
  return x.valueOf();
60
60
  },
61
- 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(a, b) {
61
+ 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(a, b) {
62
62
  var d = lup(a);
63
63
  return _lusolve(d.L, d.U, d.p, null, b);
64
64
  },
65
- 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(a, b) {
65
+ 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(a, b) {
66
66
  var d = lup(a);
67
67
  return _lusolve(d.L, d.U, d.p, null, b);
68
68
  },
69
- 'SparseMatrix, Array | Matrix, number, number': function SparseMatrixArrayMatrixNumberNumber(a, b, order, threshold) {
69
+ 'SparseMatrix, Array | Matrix, number, number': function SparseMatrix_Array__Matrix_number_number(a, b, order, threshold) {
70
70
  var d = slu(a, order, threshold);
71
71
  return _lusolve(d.L, d.U, d.p, d.q, b);
72
72
  },
73
- 'Object, Array | Matrix': function ObjectArrayMatrix(d, b) {
73
+ 'Object, Array | Matrix': function Object_Array__Matrix(d, b) {
74
74
  return _lusolve(d.L, d.U, d.p, d.q, b);
75
75
  }
76
76
  });
@@ -41,13 +41,13 @@ export var createUsolve = /* #__PURE__ */factory(name, dependencies, _ref => {
41
41
  * @return {DenseMatrix | Array} A column vector with the linear system solution (x)
42
42
  */
43
43
  return typed(name, {
44
- 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {
44
+ 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {
45
45
  return _sparseBackwardSubstitution(m, b);
46
46
  },
47
- 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {
47
+ 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {
48
48
  return _denseBackwardSubstitution(m, b);
49
49
  },
50
- 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
50
+ 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {
51
51
  var m = matrix(a);
52
52
  var r = _denseBackwardSubstitution(m, b);
53
53
  return r.valueOf();
@@ -41,13 +41,13 @@ export var createUsolveAll = /* #__PURE__ */factory(name, dependencies, _ref =>
41
41
  * @return {DenseMatrix[] | Array[]} An array of affine-independent column vectors (x) that solve the linear system
42
42
  */
43
43
  return typed(name, {
44
- 'SparseMatrix, Array | Matrix': function SparseMatrixArrayMatrix(m, b) {
44
+ 'SparseMatrix, Array | Matrix': function SparseMatrix_Array__Matrix(m, b) {
45
45
  return _sparseBackwardSubstitution(m, b);
46
46
  },
47
- 'DenseMatrix, Array | Matrix': function DenseMatrixArrayMatrix(m, b) {
47
+ 'DenseMatrix, Array | Matrix': function DenseMatrix_Array__Matrix(m, b) {
48
48
  return _denseBackwardSubstitution(m, b);
49
49
  },
50
- 'Array, Array | Matrix': function ArrayArrayMatrix(a, b) {
50
+ 'Array, Array | Matrix': function Array_Array__Matrix(a, b) {
51
51
  var m = matrix(a);
52
52
  var R = _denseBackwardSubstitution(m, b);
53
53
  return R.map(r => r.valueOf());
@@ -50,25 +50,25 @@ export var createSylvester = /* #__PURE__ */factory(name, dependencies, _ref =>
50
50
  */
51
51
  return typed(name, {
52
52
  'Matrix, Matrix, Matrix': _sylvester,
53
- 'Array, Matrix, Matrix': function ArrayMatrixMatrix(A, B, C) {
53
+ 'Array, Matrix, Matrix': function Array_Matrix_Matrix(A, B, C) {
54
54
  return _sylvester(matrix(A), B, C);
55
55
  },
56
- 'Array, Array, Matrix': function ArrayArrayMatrix(A, B, C) {
56
+ 'Array, Array, Matrix': function Array_Array_Matrix(A, B, C) {
57
57
  return _sylvester(matrix(A), matrix(B), C);
58
58
  },
59
- 'Array, Matrix, Array': function ArrayMatrixArray(A, B, C) {
59
+ 'Array, Matrix, Array': function Array_Matrix_Array(A, B, C) {
60
60
  return _sylvester(matrix(A), B, matrix(C));
61
61
  },
62
- 'Matrix, Array, Matrix': function MatrixArrayMatrix(A, B, C) {
62
+ 'Matrix, Array, Matrix': function Matrix_Array_Matrix(A, B, C) {
63
63
  return _sylvester(A, matrix(B), C);
64
64
  },
65
- 'Matrix, Array, Array': function MatrixArrayArray(A, B, C) {
65
+ 'Matrix, Array, Array': function Matrix_Array_Array(A, B, C) {
66
66
  return _sylvester(A, matrix(B), matrix(C));
67
67
  },
68
- 'Matrix, Matrix, Array': function MatrixMatrixArray(A, B, C) {
68
+ 'Matrix, Matrix, Array': function Matrix_Matrix_Array(A, B, C) {
69
69
  return _sylvester(A, B, matrix(C));
70
70
  },
71
- 'Array, Array, Array': function ArrayArrayArray(A, B, C) {
71
+ 'Array, Array, Array': function Array_Array_Array(A, B, C) {
72
72
  return _sylvester(matrix(A), matrix(B), matrix(C)).toArray();
73
73
  }
74
74
  });
@@ -20,16 +20,16 @@ export var createAddScalar = /* #__PURE__ */factory(name, dependencies, _ref =>
20
20
  */
21
21
  return typed(name, {
22
22
  'number, number': addNumber,
23
- 'Complex, Complex': function ComplexComplex(x, y) {
23
+ 'Complex, Complex': function Complex_Complex(x, y) {
24
24
  return x.add(y);
25
25
  },
26
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
26
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, y) {
27
27
  return x.plus(y);
28
28
  },
29
- 'bigint, bigint': function bigintBigint(x, y) {
29
+ 'bigint, bigint': function bigint_bigint(x, y) {
30
30
  return x + y;
31
31
  },
32
- 'Fraction, Fraction': function FractionFraction(x, y) {
32
+ 'Fraction, Fraction': function Fraction_Fraction(x, y) {
33
33
  return x.add(y);
34
34
  },
35
35
  'Unit, Unit': typed.referToSelf(self => (x, y) => {
@@ -22,7 +22,7 @@ export var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', '
22
22
  return Math.ceil(x);
23
23
  }
24
24
  },
25
- 'number, number': function numberNumber(x, n) {
25
+ 'number, number': function number_number(x, n) {
26
26
  if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
27
27
  return round(x, n);
28
28
  } else {
@@ -103,10 +103,10 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
103
103
  Complex: function Complex(x) {
104
104
  return x.ceil();
105
105
  },
106
- 'Complex, number': function ComplexNumber(x, n) {
106
+ 'Complex, number': function Complex_number(x, n) {
107
107
  return x.ceil(n);
108
108
  },
109
- 'Complex, BigNumber': function ComplexBigNumber(x, n) {
109
+ 'Complex, BigNumber': function Complex_BigNumber(x, n) {
110
110
  return x.ceil(n.toNumber());
111
111
  },
112
112
  BigNumber: function BigNumber(x) {
@@ -116,7 +116,7 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
116
116
  return x.ceil();
117
117
  }
118
118
  },
119
- 'BigNumber, BigNumber': function BigNumberBigNumber(x, n) {
119
+ 'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
120
120
  if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
121
121
  return round(x, n);
122
122
  } else {
@@ -126,10 +126,10 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
126
126
  Fraction: function Fraction(x) {
127
127
  return x.ceil();
128
128
  },
129
- 'Fraction, number': function FractionNumber(x, n) {
129
+ 'Fraction, number': function Fraction_number(x, n) {
130
130
  return x.ceil(n);
131
131
  },
132
- 'Fraction, BigNumber': function FractionBigNumber(x, n) {
132
+ 'Fraction, BigNumber': function Fraction_BigNumber(x, n) {
133
133
  return x.ceil(n.toNumber());
134
134
  },
135
135
  'Array | Matrix': typed.referToSelf(self => x => {