mathjs 14.8.1 → 14.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/HISTORY.md +13 -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/entry/dependenciesAny/dependenciesRange.generated.js +4 -0
  6. package/lib/cjs/entry/dependenciesAny/dependenciesRangeTransform.generated.js +4 -0
  7. package/lib/cjs/entry/dependenciesNumber/dependenciesRange.generated.js +4 -0
  8. package/lib/cjs/entry/dependenciesNumber/dependenciesRangeTransform.generated.js +4 -0
  9. package/lib/cjs/entry/impureFunctionsAny.generated.js +2 -0
  10. package/lib/cjs/entry/impureFunctionsNumber.generated.js +2 -0
  11. package/lib/cjs/entry/pureFunctionsAny.generated.js +2 -0
  12. package/lib/cjs/entry/pureFunctionsNumber.generated.js +2 -0
  13. package/lib/cjs/expression/transform/range.transform.js +5 -1
  14. package/lib/cjs/function/matrix/map.js +117 -40
  15. package/lib/cjs/function/matrix/range.js +3 -1
  16. package/lib/cjs/header.js +2 -2
  17. package/lib/cjs/type/matrix/Range.js +3 -0
  18. package/lib/cjs/utils/optimizeCallback.js +2 -3
  19. package/lib/cjs/version.js +1 -1
  20. package/lib/esm/entry/dependenciesAny/dependenciesRange.generated.js +4 -0
  21. package/lib/esm/entry/dependenciesAny/dependenciesRangeTransform.generated.js +4 -0
  22. package/lib/esm/entry/dependenciesNumber/dependenciesRange.generated.js +4 -0
  23. package/lib/esm/entry/dependenciesNumber/dependenciesRangeTransform.generated.js +4 -0
  24. package/lib/esm/entry/impureFunctionsAny.generated.js +2 -0
  25. package/lib/esm/entry/impureFunctionsNumber.generated.js +2 -0
  26. package/lib/esm/entry/pureFunctionsAny.generated.js +2 -0
  27. package/lib/esm/entry/pureFunctionsNumber.generated.js +2 -0
  28. package/lib/esm/expression/transform/range.transform.js +5 -1
  29. package/lib/esm/function/matrix/map.js +123 -40
  30. package/lib/esm/function/matrix/range.js +3 -1
  31. package/lib/esm/type/matrix/Range.js +4 -1
  32. package/lib/esm/utils/optimizeCallback.js +2 -3
  33. package/lib/esm/version.js +1 -1
  34. package/package.json +7 -7
  35. package/types/index.d.ts +32 -14
@@ -7,7 +7,9 @@ exports.rangeDependencies = void 0;
7
7
  var _dependenciesBignumberGenerated = require("./dependenciesBignumber.generated.js");
8
8
  var _dependenciesMatrixGenerated = require("./dependenciesMatrix.generated.js");
9
9
  var _dependenciesAddGenerated = require("./dependenciesAdd.generated.js");
10
+ var _dependenciesEqualGenerated = require("./dependenciesEqual.generated.js");
10
11
  var _dependenciesIsPositiveGenerated = require("./dependenciesIsPositive.generated.js");
12
+ var _dependenciesIsZeroGenerated = require("./dependenciesIsZero.generated.js");
11
13
  var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
12
14
  var _dependenciesLargerEqGenerated = require("./dependenciesLargerEq.generated.js");
13
15
  var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
@@ -23,7 +25,9 @@ const rangeDependencies = exports.rangeDependencies = {
23
25
  bignumberDependencies: _dependenciesBignumberGenerated.bignumberDependencies,
24
26
  matrixDependencies: _dependenciesMatrixGenerated.matrixDependencies,
25
27
  addDependencies: _dependenciesAddGenerated.addDependencies,
28
+ equalDependencies: _dependenciesEqualGenerated.equalDependencies,
26
29
  isPositiveDependencies: _dependenciesIsPositiveGenerated.isPositiveDependencies,
30
+ isZeroDependencies: _dependenciesIsZeroGenerated.isZeroDependencies,
27
31
  largerDependencies: _dependenciesLargerGenerated.largerDependencies,
28
32
  largerEqDependencies: _dependenciesLargerEqGenerated.largerEqDependencies,
29
33
  smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
@@ -7,7 +7,9 @@ exports.rangeTransformDependencies = void 0;
7
7
  var _dependenciesBignumberGenerated = require("./dependenciesBignumber.generated.js");
8
8
  var _dependenciesMatrixGenerated = require("./dependenciesMatrix.generated.js");
9
9
  var _dependenciesAddGenerated = require("./dependenciesAdd.generated.js");
10
+ var _dependenciesEqualGenerated = require("./dependenciesEqual.generated.js");
10
11
  var _dependenciesIsPositiveGenerated = require("./dependenciesIsPositive.generated.js");
12
+ var _dependenciesIsZeroGenerated = require("./dependenciesIsZero.generated.js");
11
13
  var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
12
14
  var _dependenciesLargerEqGenerated = require("./dependenciesLargerEq.generated.js");
13
15
  var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
@@ -23,7 +25,9 @@ const rangeTransformDependencies = exports.rangeTransformDependencies = {
23
25
  bignumberDependencies: _dependenciesBignumberGenerated.bignumberDependencies,
24
26
  matrixDependencies: _dependenciesMatrixGenerated.matrixDependencies,
25
27
  addDependencies: _dependenciesAddGenerated.addDependencies,
28
+ equalDependencies: _dependenciesEqualGenerated.equalDependencies,
26
29
  isPositiveDependencies: _dependenciesIsPositiveGenerated.isPositiveDependencies,
30
+ isZeroDependencies: _dependenciesIsZeroGenerated.isZeroDependencies,
27
31
  largerDependencies: _dependenciesLargerGenerated.largerDependencies,
28
32
  largerEqDependencies: _dependenciesLargerEqGenerated.largerEqDependencies,
29
33
  smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.rangeDependencies = void 0;
7
7
  var _dependenciesMatrixGenerated = require("./dependenciesMatrix.generated.js");
8
8
  var _dependenciesAddGenerated = require("./dependenciesAdd.generated.js");
9
+ var _dependenciesEqualGenerated = require("./dependenciesEqual.generated.js");
9
10
  var _dependenciesIsPositiveGenerated = require("./dependenciesIsPositive.generated.js");
11
+ var _dependenciesIsZeroGenerated = require("./dependenciesIsZero.generated.js");
10
12
  var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
11
13
  var _dependenciesLargerEqGenerated = require("./dependenciesLargerEq.generated.js");
12
14
  var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
@@ -21,7 +23,9 @@ var _factoriesNumber = require("../../factoriesNumber.js");
21
23
  const rangeDependencies = exports.rangeDependencies = {
22
24
  matrixDependencies: _dependenciesMatrixGenerated.matrixDependencies,
23
25
  addDependencies: _dependenciesAddGenerated.addDependencies,
26
+ equalDependencies: _dependenciesEqualGenerated.equalDependencies,
24
27
  isPositiveDependencies: _dependenciesIsPositiveGenerated.isPositiveDependencies,
28
+ isZeroDependencies: _dependenciesIsZeroGenerated.isZeroDependencies,
25
29
  largerDependencies: _dependenciesLargerGenerated.largerDependencies,
26
30
  largerEqDependencies: _dependenciesLargerEqGenerated.largerEqDependencies,
27
31
  smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
@@ -6,7 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.rangeTransformDependencies = void 0;
7
7
  var _dependenciesMatrixGenerated = require("./dependenciesMatrix.generated.js");
8
8
  var _dependenciesAddGenerated = require("./dependenciesAdd.generated.js");
9
+ var _dependenciesEqualGenerated = require("./dependenciesEqual.generated.js");
9
10
  var _dependenciesIsPositiveGenerated = require("./dependenciesIsPositive.generated.js");
11
+ var _dependenciesIsZeroGenerated = require("./dependenciesIsZero.generated.js");
10
12
  var _dependenciesLargerGenerated = require("./dependenciesLarger.generated.js");
11
13
  var _dependenciesLargerEqGenerated = require("./dependenciesLargerEq.generated.js");
12
14
  var _dependenciesSmallerGenerated = require("./dependenciesSmaller.generated.js");
@@ -21,7 +23,9 @@ var _factoriesNumber = require("../../factoriesNumber.js");
21
23
  const rangeTransformDependencies = exports.rangeTransformDependencies = {
22
24
  matrixDependencies: _dependenciesMatrixGenerated.matrixDependencies,
23
25
  addDependencies: _dependenciesAddGenerated.addDependencies,
26
+ equalDependencies: _dependenciesEqualGenerated.equalDependencies,
24
27
  isPositiveDependencies: _dependenciesIsPositiveGenerated.isPositiveDependencies,
28
+ isZeroDependencies: _dependenciesIsZeroGenerated.isZeroDependencies,
25
29
  largerDependencies: _dependenciesLargerGenerated.largerDependencies,
26
30
  largerEqDependencies: _dependenciesLargerEqGenerated.largerEqDependencies,
27
31
  smallerDependencies: _dependenciesSmallerGenerated.smallerDependencies,
@@ -676,7 +676,9 @@ const help = exports.help = (0, _factoriesAny.createHelp)({
676
676
  matrix: _pureFunctionsAnyGenerated.matrix,
677
677
  add: _pureFunctionsAnyGenerated.add,
678
678
  config: _configReadonly.config,
679
+ equal: _pureFunctionsAnyGenerated.equal,
679
680
  isPositive: _pureFunctionsAnyGenerated.isPositive,
681
+ isZero: _pureFunctionsAnyGenerated.isZero,
680
682
  larger: _pureFunctionsAnyGenerated.larger,
681
683
  largerEq: _pureFunctionsAnyGenerated.largerEq,
682
684
  smaller: _pureFunctionsAnyGenerated.smaller,
@@ -441,7 +441,9 @@ const parser = exports.parser = (0, _factoriesNumber.createParser)({
441
441
  matrix: _pureFunctionsNumberGenerated.matrix,
442
442
  add: _pureFunctionsNumberGenerated.add,
443
443
  config: _configReadonly.config,
444
+ equal: _pureFunctionsNumberGenerated.equal,
444
445
  isPositive: _pureFunctionsNumberGenerated.isPositive,
446
+ isZero: _pureFunctionsNumberGenerated.isZero,
445
447
  larger: _pureFunctionsNumberGenerated.larger,
446
448
  largerEq: _pureFunctionsNumberGenerated.largerEq,
447
449
  smaller: _pureFunctionsNumberGenerated.smaller,
@@ -966,7 +966,9 @@ const range = exports.range = /* #__PURE__ */(0, _factoriesAny.createRange)({
966
966
  matrix,
967
967
  add,
968
968
  config: _configReadonly.config,
969
+ equal,
969
970
  isPositive,
971
+ isZero,
970
972
  larger,
971
973
  largerEq,
972
974
  smaller,
@@ -575,7 +575,9 @@ const range = exports.range = /* #__PURE__ */(0, _factoriesNumber.createRange)({
575
575
  matrix,
576
576
  add,
577
577
  config: _configReadonly.config,
578
+ equal,
578
579
  isPositive,
580
+ isZero,
579
581
  larger,
580
582
  largerEq,
581
583
  smaller,
@@ -7,18 +7,20 @@ exports.createRangeTransform = void 0;
7
7
  var _factory = require("../../utils/factory.js");
8
8
  var _range = require("../../function/matrix/range.js");
9
9
  const name = 'range';
10
- const dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];
10
+ const dependencies = ['typed', 'config', '?matrix', '?bignumber', 'equal', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isZero', 'isPositive'];
11
11
  const createRangeTransform = exports.createRangeTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
12
12
  let {
13
13
  typed,
14
14
  config,
15
15
  matrix,
16
16
  bignumber,
17
+ equal,
17
18
  smaller,
18
19
  smallerEq,
19
20
  larger,
20
21
  largerEq,
21
22
  add,
23
+ isZero,
22
24
  isPositive
23
25
  } = _ref;
24
26
  const range = (0, _range.createRange)({
@@ -26,11 +28,13 @@ const createRangeTransform = exports.createRangeTransform = /* #__PURE__ */(0, _
26
28
  config,
27
29
  matrix,
28
30
  bignumber,
31
+ equal,
29
32
  smaller,
30
33
  smallerEq,
31
34
  larger,
32
35
  largerEq,
33
36
  add,
37
+ isZero,
34
38
  isPositive
35
39
  });
36
40
 
@@ -82,58 +82,135 @@ const createMap = exports.createMap = /* #__PURE__ */(0, _factory.factory)(name,
82
82
  throw new Error('Last argument must be a callback function');
83
83
  }
84
84
  const firstArrayIsMatrix = Arrays[0].isMatrix;
85
- const newSize = (0, _array.broadcastSizes)(...Arrays.map(M => M.isMatrix ? M.size() : (0, _array.arraySize)(M)));
85
+ const sizes = Arrays.map(M => M.isMatrix ? M.size() : (0, _array.arraySize)(M));
86
+ const newSize = (0, _array.broadcastSizes)(...sizes);
87
+ const numberOfArrays = Arrays.length;
86
88
  const _get = firstArrayIsMatrix ? (matrix, idx) => matrix.get(idx) : _array.get;
87
- const broadcastedArrays = firstArrayIsMatrix ? Arrays.map(M => M.isMatrix ? M.create((0, _array.broadcastTo)(M.toArray(), newSize), M.datatype()) : Arrays[0].create((0, _array.broadcastTo)(M.valueOf(), newSize))) : Arrays.map(M => M.isMatrix ? (0, _array.broadcastTo)(M.toArray(), newSize) : (0, _array.broadcastTo)(M, newSize));
88
- let callback;
89
- if (typed.isTypedFunction(multiCallback)) {
90
- const firstIndex = newSize.map(() => 0);
91
- const firstValues = broadcastedArrays.map(array => _get(array, firstIndex));
92
- const callbackCase = _getTypedCallbackCase(multiCallback, firstValues, firstIndex, broadcastedArrays);
93
- callback = _getLimitedCallback(callbackCase);
94
- } else {
95
- const numberOfArrays = Arrays.length;
96
- const callbackCase = _getCallbackCase(multiCallback, numberOfArrays);
97
- callback = _getLimitedCallback(callbackCase);
89
+ const firstValues = Arrays.map((collection, i) => {
90
+ const firstIndex = sizes[i].map(() => 0);
91
+ return collection.isMatrix ? collection.get(firstIndex) : (0, _array.get)(collection, firstIndex);
92
+ });
93
+ const callbackArgCount = typed.isTypedFunction(multiCallback) ? _getTypedCallbackArgCount(multiCallback, firstValues, newSize.map(() => 0), Arrays) : _getCallbackArgCount(multiCallback, numberOfArrays);
94
+ if (callbackArgCount < 2) {
95
+ const callback = _getLimitedCallback(callbackArgCount, multiCallback, null);
96
+ return mapMultiple(Arrays, callback);
98
97
  }
99
- const broadcastedArraysCallback = (x, idx) => callback([x, ...broadcastedArrays.slice(1).map(Array => _get(Array, idx))], idx);
98
+ const broadcastedArrays = firstArrayIsMatrix ? Arrays.map(M => M.isMatrix ? M.create((0, _array.broadcastTo)(M.toArray(), newSize), M.datatype()) : Arrays[0].create((0, _array.broadcastTo)(M.valueOf(), newSize))) : Arrays.map(M => M.isMatrix ? (0, _array.broadcastTo)(M.toArray(), newSize) : (0, _array.broadcastTo)(M, newSize));
99
+ const callback = _getLimitedCallback(callbackArgCount, multiCallback, broadcastedArrays);
100
+ const broadcastedArraysCallback = (x, idx) => callback([x, ...broadcastedArrays.slice(1).map(array => _get(array, idx))], idx);
100
101
  if (firstArrayIsMatrix) {
101
102
  return broadcastedArrays[0].map(broadcastedArraysCallback);
102
103
  } else {
103
104
  return _mapArray(broadcastedArrays[0], broadcastedArraysCallback);
104
105
  }
105
- function _getLimitedCallback(callbackCase) {
106
- switch (callbackCase) {
107
- case 0:
108
- return x => multiCallback(...x);
109
- case 1:
110
- return (x, idx) => multiCallback(...x, idx);
111
- case 2:
112
- return (x, idx) => multiCallback(...x, idx, ...broadcastedArrays);
113
- }
106
+ }
107
+ function mapMultiple(collections, callback) {
108
+ // collections can be matrices or arrays
109
+ // callback must be a function of the form (collections, [index])
110
+ const firstCollection = collections[0];
111
+ const arrays = collections.map(collection => collection.isMatrix ? collection.valueOf() : collection);
112
+ const sizes = collections.map(collection => collection.isMatrix ? collection.size() : (0, _array.arraySize)(collection));
113
+ const finalSize = (0, _array.broadcastSizes)(...sizes);
114
+ // the offset means for each initial array, how much smaller is it than the final size
115
+ const offsets = sizes.map(size => finalSize.length - size.length);
116
+ const maxDepth = finalSize.length - 1;
117
+ const callbackUsesIndex = callback.length > 1;
118
+ const index = callbackUsesIndex ? [] : null;
119
+ const resultsArray = iterate(arrays, 0);
120
+ if (firstCollection.isMatrix) {
121
+ const resultsMatrix = firstCollection.create();
122
+ resultsMatrix._data = resultsArray;
123
+ resultsMatrix._size = finalSize;
124
+ return resultsMatrix;
125
+ } else {
126
+ return resultsArray;
114
127
  }
115
- function _getCallbackCase(callback, numberOfArrays) {
116
- if (callback.length > numberOfArrays + 1) {
117
- return 2;
118
- }
119
- if (callback.length === numberOfArrays + 1) {
120
- return 1;
128
+ function iterate(arrays) {
129
+ let depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
130
+ // each array can have different sizes
131
+ const currentDimensionSize = finalSize[depth];
132
+ const result = Array(currentDimensionSize);
133
+ if (depth < maxDepth) {
134
+ for (let i = 0; i < currentDimensionSize; i++) {
135
+ if (index) index[depth] = i;
136
+ // if there is an offset greater than the current dimension
137
+ // pass the array, if the size of the array is 1 pass the first
138
+ // element of the array
139
+ result[i] = iterate(arrays.map((array, arrayIndex) => offsets[arrayIndex] > depth ? array : array.length === 1 ? array[0] : array[i]), depth + 1);
140
+ }
141
+ } else {
142
+ for (let i = 0; i < currentDimensionSize; i++) {
143
+ if (index) index[depth] = i;
144
+ result[i] = callback(arrays.map(a => a.length === 1 ? a[0] : a[i]), index ? index.slice() : undefined);
145
+ }
121
146
  }
122
- return 0;
147
+ return result;
123
148
  }
124
- function _getTypedCallbackCase(callback, values, idx, arrays) {
125
- if (typed.resolve(callback, [...values, idx, ...arrays]) !== null) {
126
- return 2;
127
- }
128
- if (typed.resolve(callback, [...values, idx]) !== null) {
129
- return 1;
130
- }
131
- if (typed.resolve(callback, values) !== null) {
132
- return 0;
133
- }
134
- // this should never happen
149
+ }
150
+
151
+ /**
152
+ * Creates a limited callback based on the argument pattern.
153
+ * @param {number} callbackArgCount - The argument pattern (0, 1, or 2)
154
+ * @param {Function} multiCallback - The original callback function
155
+ * @param {Array} broadcastedArrays - The broadcasted arrays (for case 2)
156
+ * @returns {Function} The limited callback function
157
+ */
158
+ function _getLimitedCallback(callbackArgCount, multiCallback, broadcastedArrays) {
159
+ switch (callbackArgCount) {
160
+ case 0:
161
+ return x => multiCallback(...x);
162
+ case 1:
163
+ return (x, idx) => multiCallback(...x, idx);
164
+ case 2:
165
+ return (x, idx) => multiCallback(...x, idx, ...broadcastedArrays);
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Determines the argument pattern of a regular callback function.
171
+ * @param {Function} callback - The callback function to analyze
172
+ * @param {number} numberOfArrays - Number of arrays being processed
173
+ * @returns {number} 0 = values only, 1 = values + index, 2 = values + index + arrays
174
+ */
175
+ function _getCallbackArgCount(callback, numberOfArrays) {
176
+ const callbackStr = callback.toString();
177
+ // Check if the callback function uses `arguments`
178
+ if (/arguments/.test(callbackStr)) return 2;
179
+
180
+ // Extract the parameters of the callback function
181
+ const paramsStr = callbackStr.match(/\(.*?\)/);
182
+ // Check if the callback function uses rest parameters
183
+ if (/\.\.\./.test(paramsStr)) return 2;
184
+ if (callback.length > numberOfArrays + 1) {
185
+ return 2;
186
+ }
187
+ if (callback.length === numberOfArrays + 1) {
188
+ return 1;
189
+ }
190
+ return 0;
191
+ }
192
+
193
+ /**
194
+ * Determines the argument pattern of a typed callback function.
195
+ * @param {Function} callback - The typed callback function to analyze
196
+ * @param {Array} values - Sample values for signature resolution
197
+ * @param {Array} idx - Sample index for signature resolution
198
+ * @param {Array} arrays - Sample arrays for signature resolution
199
+ * @returns {number} 0 = values only, 1 = values + index, 2 = values + index + arrays
200
+ */
201
+
202
+ function _getTypedCallbackArgCount(callback, values, idx, arrays) {
203
+ if (typed.resolve(callback, [...values, idx, ...arrays]) !== null) {
204
+ return 2;
205
+ }
206
+ if (typed.resolve(callback, [...values, idx]) !== null) {
207
+ return 1;
208
+ }
209
+ if (typed.resolve(callback, values) !== null) {
135
210
  return 0;
136
211
  }
212
+ // this should never happen
213
+ return 0;
137
214
  }
138
215
  /**
139
216
  * Map for a multi dimensional array
@@ -7,7 +7,7 @@ exports.createRange = void 0;
7
7
  var _factory = require("../../utils/factory.js");
8
8
  var _noop = require("../../utils/noop.js");
9
9
  const name = 'range';
10
- const dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];
10
+ const dependencies = ['typed', 'config', '?matrix', '?bignumber', 'equal', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isZero', 'isPositive'];
11
11
  const createRange = exports.createRange = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
12
12
  let {
13
13
  typed,
@@ -19,6 +19,7 @@ const createRange = exports.createRange = /* #__PURE__ */(0, _factory.factory)(n
19
19
  larger,
20
20
  largerEq,
21
21
  add,
22
+ isZero,
22
23
  isPositive
23
24
  } = _ref;
24
25
  /**
@@ -187,6 +188,7 @@ const createRange = exports.createRange = /* #__PURE__ */(0, _factory.factory)(n
187
188
  */
188
189
  function _range(start, end, step, includeEnd) {
189
190
  const array = [];
191
+ if (isZero(step)) throw new Error('Step must be non-zero');
190
192
  const ongoing = isPositive(step) ? includeEnd ? smallerEq : smaller : includeEnd ? largerEq : larger;
191
193
  let x = start;
192
194
  while (ongoing(x, end)) {
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 14.8.1
10
- * @date 2025-09-26
9
+ * @version 14.9.0
10
+ * @date 2025-10-10
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2025 Jos de Jong <wjosdejong@gmail.com>
@@ -79,6 +79,9 @@ const createRangeClass = exports.createRangeClass = /* #__PURE__ */(0, _factory.
79
79
  this.start = hasStart ? parseFloat(start) : 0;
80
80
  this.end = hasEnd ? parseFloat(end) : 0;
81
81
  this.step = hasStep ? parseFloat(step) : 1;
82
+ if (hasStep && (0, _number.nearlyEqual)(this.step, 0)) {
83
+ throw new Error('Step must not be zero');
84
+ }
82
85
  }
83
86
 
84
87
  /**
@@ -14,11 +14,10 @@ var _is = require("./is.js");
14
14
  * @param {Function} callback The original callback function to simplify.
15
15
  * @param {Array|Matrix} array The array that will be used with the callback function.
16
16
  * @param {string} name The name of the function that is using the callback.
17
- * @param {boolean} [isUnary=false] If true, the callback function is unary and will be optimized as such.
17
+ * @param {boolean} isUnary If true, the callback function is unary and will be optimized as such.
18
18
  * @returns {Function} Returns a simplified version of the callback function.
19
19
  */
20
- function optimizeCallback(callback, array, name) {
21
- let isUnary = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
20
+ function optimizeCallback(callback, array, name, isUnary) {
22
21
  if (_typedFunction.default.isTypedFunction(callback)) {
23
22
  let numberOfArguments;
24
23
  if (isUnary) {
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- const version = exports.version = '14.8.1';
7
+ const version = exports.version = '14.9.0';
8
8
  // Note: This file is automatically generated when building math.js.
9
9
  // Changes made in this file will be overwritten.
@@ -5,7 +5,9 @@
5
5
  import { bignumberDependencies } from './dependenciesBignumber.generated.js';
6
6
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
7
7
  import { addDependencies } from './dependenciesAdd.generated.js';
8
+ import { equalDependencies } from './dependenciesEqual.generated.js';
8
9
  import { isPositiveDependencies } from './dependenciesIsPositive.generated.js';
10
+ import { isZeroDependencies } from './dependenciesIsZero.generated.js';
9
11
  import { largerDependencies } from './dependenciesLarger.generated.js';
10
12
  import { largerEqDependencies } from './dependenciesLargerEq.generated.js';
11
13
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -16,7 +18,9 @@ export var rangeDependencies = {
16
18
  bignumberDependencies,
17
19
  matrixDependencies,
18
20
  addDependencies,
21
+ equalDependencies,
19
22
  isPositiveDependencies,
23
+ isZeroDependencies,
20
24
  largerDependencies,
21
25
  largerEqDependencies,
22
26
  smallerDependencies,
@@ -5,7 +5,9 @@
5
5
  import { bignumberDependencies } from './dependenciesBignumber.generated.js';
6
6
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
7
7
  import { addDependencies } from './dependenciesAdd.generated.js';
8
+ import { equalDependencies } from './dependenciesEqual.generated.js';
8
9
  import { isPositiveDependencies } from './dependenciesIsPositive.generated.js';
10
+ import { isZeroDependencies } from './dependenciesIsZero.generated.js';
9
11
  import { largerDependencies } from './dependenciesLarger.generated.js';
10
12
  import { largerEqDependencies } from './dependenciesLargerEq.generated.js';
11
13
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -16,7 +18,9 @@ export var rangeTransformDependencies = {
16
18
  bignumberDependencies,
17
19
  matrixDependencies,
18
20
  addDependencies,
21
+ equalDependencies,
19
22
  isPositiveDependencies,
23
+ isZeroDependencies,
20
24
  largerDependencies,
21
25
  largerEqDependencies,
22
26
  smallerDependencies,
@@ -4,7 +4,9 @@
4
4
  */
5
5
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
6
6
  import { addDependencies } from './dependenciesAdd.generated.js';
7
+ import { equalDependencies } from './dependenciesEqual.generated.js';
7
8
  import { isPositiveDependencies } from './dependenciesIsPositive.generated.js';
9
+ import { isZeroDependencies } from './dependenciesIsZero.generated.js';
8
10
  import { largerDependencies } from './dependenciesLarger.generated.js';
9
11
  import { largerEqDependencies } from './dependenciesLargerEq.generated.js';
10
12
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -14,7 +16,9 @@ import { createRange } from '../../factoriesNumber.js';
14
16
  export var rangeDependencies = {
15
17
  matrixDependencies,
16
18
  addDependencies,
19
+ equalDependencies,
17
20
  isPositiveDependencies,
21
+ isZeroDependencies,
18
22
  largerDependencies,
19
23
  largerEqDependencies,
20
24
  smallerDependencies,
@@ -4,7 +4,9 @@
4
4
  */
5
5
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
6
6
  import { addDependencies } from './dependenciesAdd.generated.js';
7
+ import { equalDependencies } from './dependenciesEqual.generated.js';
7
8
  import { isPositiveDependencies } from './dependenciesIsPositive.generated.js';
9
+ import { isZeroDependencies } from './dependenciesIsZero.generated.js';
8
10
  import { largerDependencies } from './dependenciesLarger.generated.js';
9
11
  import { largerEqDependencies } from './dependenciesLargerEq.generated.js';
10
12
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -14,7 +16,9 @@ import { createRangeTransform } from '../../factoriesNumber.js';
14
16
  export var rangeTransformDependencies = {
15
17
  matrixDependencies,
16
18
  addDependencies,
19
+ equalDependencies,
17
20
  isPositiveDependencies,
21
+ isZeroDependencies,
18
22
  largerDependencies,
19
23
  largerEqDependencies,
20
24
  smallerDependencies,
@@ -662,7 +662,9 @@ _extends(mathWithTransform, math, {
662
662
  matrix,
663
663
  add,
664
664
  config,
665
+ equal,
665
666
  isPositive,
667
+ isZero,
666
668
  larger,
667
669
  largerEq,
668
670
  smaller,
@@ -427,7 +427,9 @@ _extends(mathWithTransform, math, {
427
427
  matrix,
428
428
  add,
429
429
  config,
430
+ equal,
430
431
  isPositive,
432
+ isZero,
431
433
  larger,
432
434
  largerEq,
433
435
  smaller,
@@ -958,7 +958,9 @@ export var range = /* #__PURE__ */createRange({
958
958
  matrix,
959
959
  add,
960
960
  config,
961
+ equal,
961
962
  isPositive,
963
+ isZero,
962
964
  larger,
963
965
  largerEq,
964
966
  smaller,
@@ -569,7 +569,9 @@ export var range = /* #__PURE__ */createRange({
569
569
  matrix,
570
570
  add,
571
571
  config,
572
+ equal,
572
573
  isPositive,
574
+ isZero,
573
575
  larger,
574
576
  largerEq,
575
577
  smaller,
@@ -1,18 +1,20 @@
1
1
  import { factory } from '../../utils/factory.js';
2
2
  import { createRange } from '../../function/matrix/range.js';
3
3
  var name = 'range';
4
- var dependencies = ['typed', 'config', '?matrix', '?bignumber', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isPositive'];
4
+ var dependencies = ['typed', 'config', '?matrix', '?bignumber', 'equal', 'smaller', 'smallerEq', 'larger', 'largerEq', 'add', 'isZero', 'isPositive'];
5
5
  export var createRangeTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
6
6
  var {
7
7
  typed,
8
8
  config,
9
9
  matrix,
10
10
  bignumber,
11
+ equal,
11
12
  smaller,
12
13
  smallerEq,
13
14
  larger,
14
15
  largerEq,
15
16
  add,
17
+ isZero,
16
18
  isPositive
17
19
  } = _ref;
18
20
  var range = createRange({
@@ -20,11 +22,13 @@ export var createRangeTransform = /* #__PURE__ */factory(name, dependencies, _re
20
22
  config,
21
23
  matrix,
22
24
  bignumber,
25
+ equal,
23
26
  smaller,
24
27
  smallerEq,
25
28
  larger,
26
29
  largerEq,
27
30
  add,
31
+ isZero,
28
32
  isPositive
29
33
  });
30
34