mathjs 11.7.0 → 11.8.1

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 (88) hide show
  1. package/HISTORY.md +26 -0
  2. package/README.md +0 -26
  3. package/lib/browser/math.js +1 -1
  4. package/lib/browser/math.js.LICENSE.txt +2 -2
  5. package/lib/browser/math.js.map +1 -1
  6. package/lib/cjs/core/function/typed.js +1 -1
  7. package/lib/cjs/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  8. package/lib/cjs/entry/pureFunctionsAny.generated.js +2 -2
  9. package/lib/cjs/expression/Parser.js +1 -1
  10. package/lib/cjs/expression/function/parser.js +1 -1
  11. package/lib/cjs/expression/node/FunctionAssignmentNode.js +1 -1
  12. package/lib/cjs/expression/node/OperatorNode.js +1 -3
  13. package/lib/cjs/expression/operators.js +19 -4
  14. package/lib/cjs/expression/transform/filter.transform.js +4 -13
  15. package/lib/cjs/expression/transform/forEach.transform.js +3 -12
  16. package/lib/cjs/expression/transform/map.transform.js +4 -13
  17. package/lib/cjs/factoriesNumber.js +18 -0
  18. package/lib/cjs/function/algebra/derivative.js +2 -2
  19. package/lib/cjs/function/algebra/leafCount.js +1 -1
  20. package/lib/cjs/function/algebra/polynomialRoot.js +1 -1
  21. package/lib/cjs/function/algebra/rationalize.js +5 -7
  22. package/lib/cjs/function/algebra/resolve.js +1 -1
  23. package/lib/cjs/function/algebra/simplify.js +7 -7
  24. package/lib/cjs/function/algebra/simplifyConstant.js +3 -3
  25. package/lib/cjs/function/algebra/simplifyCore.js +2 -2
  26. package/lib/cjs/function/algebra/sparse/csAmd.js +1 -3
  27. package/lib/cjs/function/algebra/sparse/csLeaf.js +1 -3
  28. package/lib/cjs/function/algebra/symbolicEqual.js +8 -8
  29. package/lib/cjs/function/geometry/distance.js +31 -29
  30. package/lib/cjs/function/matrix/eigs/complexEigs.js +3 -3
  31. package/lib/cjs/function/matrix/filter.js +2 -11
  32. package/lib/cjs/function/matrix/forEach.js +3 -12
  33. package/lib/cjs/function/matrix/map.js +6 -38
  34. package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
  35. package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
  36. package/lib/cjs/function/matrix/sqrtm.js +1 -1
  37. package/lib/cjs/header.js +2 -2
  38. package/lib/cjs/type/bignumber/function/bignumber.js +7 -0
  39. package/lib/cjs/type/fraction/function/fraction.js +8 -1
  40. package/lib/cjs/type/matrix/DenseMatrix.js +41 -45
  41. package/lib/cjs/type/matrix/SparseMatrix.js +39 -41
  42. package/lib/cjs/type/number.js +7 -3
  43. package/lib/cjs/type/unit/Unit.js +2 -0
  44. package/lib/cjs/type/unit/function/splitUnit.js +1 -1
  45. package/lib/cjs/utils/applyCallback.js +73 -0
  46. package/lib/cjs/utils/bignumber/formatter.js +4 -3
  47. package/lib/cjs/utils/lruQueue.js +2 -6
  48. package/lib/cjs/utils/map.js +1 -1
  49. package/lib/cjs/utils/snapshot.js +7 -1
  50. package/lib/cjs/version.js +1 -1
  51. package/lib/esm/core/function/typed.js +1 -1
  52. package/lib/esm/entry/dependenciesAny/dependenciesDistance.generated.js +2 -2
  53. package/lib/esm/entry/pureFunctionsAny.generated.js +2 -2
  54. package/lib/esm/expression/Parser.js +1 -1
  55. package/lib/esm/expression/function/parser.js +1 -1
  56. package/lib/esm/expression/node/OperatorNode.js +1 -3
  57. package/lib/esm/expression/operators.js +1 -3
  58. package/lib/esm/expression/transform/filter.transform.js +4 -13
  59. package/lib/esm/expression/transform/forEach.transform.js +3 -12
  60. package/lib/esm/expression/transform/map.transform.js +4 -13
  61. package/lib/esm/function/algebra/derivative.js +2 -2
  62. package/lib/esm/function/algebra/leafCount.js +1 -1
  63. package/lib/esm/function/algebra/polynomialRoot.js +1 -1
  64. package/lib/esm/function/algebra/rationalize.js +5 -7
  65. package/lib/esm/function/algebra/resolve.js +1 -1
  66. package/lib/esm/function/algebra/simplify.js +7 -7
  67. package/lib/esm/function/algebra/simplifyConstant.js +2 -2
  68. package/lib/esm/function/algebra/simplifyCore.js +2 -2
  69. package/lib/esm/function/algebra/sparse/csAmd.js +1 -3
  70. package/lib/esm/function/algebra/sparse/csLeaf.js +1 -3
  71. package/lib/esm/function/algebra/symbolicEqual.js +8 -8
  72. package/lib/esm/function/geometry/distance.js +31 -29
  73. package/lib/esm/function/matrix/eigs/complexEigs.js +2 -2
  74. package/lib/esm/function/matrix/filter.js +2 -11
  75. package/lib/esm/function/matrix/forEach.js +3 -12
  76. package/lib/esm/function/matrix/map.js +6 -38
  77. package/lib/esm/function/matrix/sqrtm.js +1 -1
  78. package/lib/esm/type/bignumber/function/bignumber.js +5 -0
  79. package/lib/esm/type/fraction/function/fraction.js +6 -1
  80. package/lib/esm/type/number.js +5 -3
  81. package/lib/esm/type/unit/Unit.js +2 -0
  82. package/lib/esm/type/unit/function/splitUnit.js +1 -1
  83. package/lib/esm/utils/applyCallback.js +67 -0
  84. package/lib/esm/utils/bignumber/formatter.js +4 -3
  85. package/lib/esm/utils/lruQueue.js +2 -6
  86. package/lib/esm/version.js +1 -1
  87. package/package.json +21 -21
  88. package/types/index.d.ts +16 -16
@@ -7,14 +7,14 @@ exports.createDistance = void 0;
7
7
  var _is = require("../../utils/is.js");
8
8
  var _factory = require("../../utils/factory.js");
9
9
  var name = 'distance';
10
- var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'unaryMinus', 'sqrt', 'abs'];
10
+ var dependencies = ['typed', 'addScalar', 'subtract', 'divideScalar', 'multiplyScalar', 'deepEqual', 'sqrt', 'abs'];
11
11
  var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
12
12
  var typed = _ref.typed,
13
13
  addScalar = _ref.addScalar,
14
14
  subtract = _ref.subtract,
15
15
  multiplyScalar = _ref.multiplyScalar,
16
16
  divideScalar = _ref.divideScalar,
17
- unaryMinus = _ref.unaryMinus,
17
+ deepEqual = _ref.deepEqual,
18
18
  sqrt = _ref.sqrt,
19
19
  abs = _ref.abs;
20
20
  /**
@@ -27,21 +27,19 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
27
27
  * For parametric equation of a 3D line, x0, y0, z0, a, b, c are from: (x−x0, y−y0, z−z0) = t(a, b, c)
28
28
  *
29
29
  * Syntax:
30
- * math.distance([x1, y1], [x2, y2])
31
- * math.distance({pointOneX: 4, pointOneY: 5}, {pointTwoX: 2, pointTwoY: 7})
32
- * math.distance([x1, y1, z1], [x2, y2, z2])
33
- * math.distance({pointOneX: 4, pointOneY: 5, pointOneZ: 8}, {pointTwoX: 2, pointTwoY: 7, pointTwoZ: 9})
34
- * math.distance([x1, y1, ... , N1], [x2, y2, ... , N2])
35
- * math.distance([[A], [B], [C]...])
36
- * math.distance([x1, y1], [LinePtX1, LinePtY1], [LinePtX2, LinePtY2])
37
- * math.distance({pointX: 1, pointY: 4}, {lineOnePtX: 6, lineOnePtY: 3}, {lineTwoPtX: 2, lineTwoPtY: 8})
38
- * math.distance([x1, y1, z1], [LinePtX1, LinePtY1, LinePtZ1], [LinePtX2, LinePtY2, LinePtZ2])
39
- * math.distance({pointX: 1, pointY: 4, pointZ: 7}, {lineOnePtX: 6, lineOnePtY: 3, lineOnePtZ: 4}, {lineTwoPtX: 2, lineTwoPtY: 8, lineTwoPtZ: 5})
40
- * math.distance([x1, y1], [xCoeffLine, yCoeffLine, constant])
41
- * math.distance({pointX: 10, pointY: 10}, {xCoeffLine: 8, yCoeffLine: 1, constant: 3})
42
- * math.distance([x1, y1, z1], [x0, y0, z0, a-tCoeff, b-tCoeff, c-tCoeff]) // point and parametric equation of 3D line
43
- * math.distance([x, y, z], [x0, y0, z0, a, b, c])
44
- * math.distance({pointX: 2, pointY: 5, pointZ: 9}, {x0: 4, y0: 6, z0: 3, a: 4, b: 2, c: 0})
30
+ *
31
+ * math.distance([x1,y1], [x2,y2])
32
+ * math.distance({pointOneX, pointOneY}, {pointTwoX, pointTwoY})
33
+ * math.distance([x1,y1,z1], [x2,y2,z2])
34
+ * math.distance({pointOneX, pointOneY, pointOneZ}, {pointTwoX, pointTwoY, pointTwoZ})
35
+ * math.distance([x1,y1,z1,a1], [x2,y2,z2,a2])
36
+ * math.distance([[x1,y1], [x2,y2], [x3,y3]])
37
+ * math.distance([[x1,y1,z1], [x2,y2,z2], [x3,y3,z3]])
38
+ * math.distance([pointX,pointY], [a,b,c])
39
+ * math.distance([pointX,pointY], [lineOnePtX,lineOnePtY], [lineTwoPtX,lineTwoPtY])
40
+ * math.distance({pointX, pointY}, {lineOnePtX, lineOnePtY}, {lineTwoPtX, lineTwoPtY})
41
+ * math.distance([pointX,pointY,pointZ], [x0, y0, z0, a, b, c])
42
+ * math.distance({pointX, pointY, pointZ}, {x0, y0, z0, a, b, c})
45
43
  *
46
44
  * Examples:
47
45
  * math.distance([0,0], [4,4]) // Returns 5.656854249492381
@@ -56,11 +54,11 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
56
54
  * math.distance([[1, 2], [1, 2], [1, 3]]) // Returns [0, 1, 1]
57
55
  * math.distance([[1,2,4], [1,2,6], [8,1,3]]) // Returns [2, 7.14142842854285, 7.681145747868608]
58
56
  * math.distance([10, 10], [8, 1, 3]) // Returns 11.535230316796387
59
- * math.distance([10, 10], [2, 3], [-8, 0]) // Returns 8.759953130362847
57
+ * math.distance([0, 0], [3, 0], [0, 4]) // Returns 2.4
60
58
  * math.distance(
61
- * {pointX: 1, pointY: 4},
62
- * {lineOnePtX: 6, lineOnePtY: 3},
63
- * {lineTwoPtX: 2, lineTwoPtY: 8}) // Returns 2.720549372624744
59
+ * {pointX: 0, pointY: 0},
60
+ * {lineOnePtX: 3, lineOnePtY: 0},
61
+ * {lineTwoPtX: 0, lineTwoPtY: 4}) // Returns 2.4
64
62
  * math.distance([2, 3, 1], [1, 1, 2, 5, 0, 1]) // Returns 2.3204774044612857
65
63
  * math.distance(
66
64
  * {pointX: 2, pointY: 3, pointZ: 1},
@@ -83,10 +81,12 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
83
81
  if (!_2d(z)) {
84
82
  throw new TypeError('Array with 2 numbers or BigNumbers expected for third argument');
85
83
  }
86
- var m = divideScalar(subtract(z[1], z[0]), subtract(y[1], y[0]));
87
- var xCoeff = multiplyScalar(multiplyScalar(m, m), y[0]);
88
- var yCoeff = unaryMinus(multiplyScalar(m, y[0]));
89
- var constant = x[1];
84
+ if (deepEqual(y, z)) {
85
+ throw new TypeError('LinePoint1 should not be same with LinePoint2');
86
+ }
87
+ var xCoeff = subtract(z[1], y[1]);
88
+ var yCoeff = subtract(y[0], z[0]);
89
+ var constant = subtract(multiplyScalar(z[0], y[1]), multiplyScalar(y[0], z[1]));
90
90
  return _distancePointLine2D(x[0], x[1], xCoeff, yCoeff, constant);
91
91
  } else {
92
92
  throw new TypeError('Invalid Arguments: Try again');
@@ -103,11 +103,13 @@ var createDistance = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
103
103
  if (!_2d(z)) {
104
104
  throw new TypeError('Values of lineTwoPtX and lineTwoPtY should be numbers or BigNumbers');
105
105
  }
106
+ if (deepEqual(_objectToArray(y), _objectToArray(z))) {
107
+ throw new TypeError('LinePoint1 should not be same with LinePoint2');
108
+ }
106
109
  if ('pointX' in x && 'pointY' in x && 'lineOnePtX' in y && 'lineOnePtY' in y && 'lineTwoPtX' in z && 'lineTwoPtY' in z) {
107
- var m = divideScalar(subtract(z.lineTwoPtY, z.lineTwoPtX), subtract(y.lineOnePtY, y.lineOnePtX));
108
- var xCoeff = multiplyScalar(multiplyScalar(m, m), y.lineOnePtX);
109
- var yCoeff = unaryMinus(multiplyScalar(m, y.lineOnePtX));
110
- var constant = x.pointX;
110
+ var xCoeff = subtract(z.lineTwoPtY, y.lineOnePtY);
111
+ var yCoeff = subtract(y.lineOnePtX, z.lineTwoPtX);
112
+ var constant = subtract(multiplyScalar(z.lineTwoPtX, y.lineOnePtY), multiplyScalar(y.lineOnePtX, z.lineTwoPtY));
111
113
  return _distancePointLine2D(x.pointX, x.pointY, xCoeff, yCoeff, constant);
112
114
  } else {
113
115
  throw new TypeError('Key names do not match');
@@ -9,7 +9,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
9
9
  var _object = require("../../../utils/object.js");
10
10
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
11
11
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
13
13
  function createComplexEigs(_ref) {
14
14
  var addScalar = _ref.addScalar,
15
15
  subtract = _ref.subtract,
@@ -452,7 +452,7 @@ function createComplexEigs(_ref) {
452
452
 
453
453
  // eigenvalues for which usolve failed (due to numerical error)
454
454
  var failedLambdas = [];
455
- var _loop = function _loop(i) {
455
+ var _loop = function _loop() {
456
456
  var λ = uniqueValues[i];
457
457
  var S = subtract(U, multiply(λ, E)); // the characteristic matrix
458
458
 
@@ -480,7 +480,7 @@ function createComplexEigs(_ref) {
480
480
  })));
481
481
  };
482
482
  for (var i = 0; i < len; i++) {
483
- _loop(i);
483
+ _loop();
484
484
  }
485
485
  if (failedLambdas.length !== 0) {
486
486
  var err = new Error('Failed to find eigenvectors for the following eigenvalues: ' + failedLambdas.join(', '));
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createFilter = void 0;
7
+ var _applyCallback = require("../../utils/applyCallback.js");
7
8
  var _array = require("../../utils/array.js");
8
- var _function = require("../../utils/function.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  var name = 'filter';
11
11
  var dependencies = ['typed'];
@@ -61,17 +61,8 @@ var createFilter = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
61
61
  */
62
62
  exports.createFilter = createFilter;
63
63
  function _filterCallback(x, callback) {
64
- // figure out what number of arguments the callback function expects
65
- var args = (0, _function.maxArgumentCount)(callback);
66
64
  return (0, _array.filter)(x, function (value, index, array) {
67
65
  // invoke the callback function with the right number of arguments
68
- if (args === 1) {
69
- return callback(value);
70
- } else if (args === 2) {
71
- return callback(value, [index]);
72
- } else {
73
- // 3 or -1
74
- return callback(value, [index], array);
75
- }
66
+ return (0, _applyCallback.applyCallback)(callback, value, [index], array, 'filter');
76
67
  });
77
68
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createForEach = void 0;
7
- var _function = require("../../utils/function.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
8
8
  var _array = require("../../utils/array.js");
9
9
  var _factory = require("../../utils/factory.js");
10
10
  var name = 'forEach';
@@ -43,15 +43,13 @@ var createForEach = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
43
43
  });
44
44
 
45
45
  /**
46
- * forEach for a multi dimensional array
46
+ * forEach for a multidimensional array
47
47
  * @param {Array} array
48
48
  * @param {Function} callback
49
49
  * @private
50
50
  */
51
51
  exports.createForEach = createForEach;
52
52
  function _forEach(array, callback) {
53
- // figure out what number of arguments the callback function expects
54
- var args = (0, _function.maxArgumentCount)(callback);
55
53
  var recurse = function recurse(value, index) {
56
54
  if (Array.isArray(value)) {
57
55
  (0, _array.forEach)(value, function (child, i) {
@@ -60,14 +58,7 @@ function _forEach(array, callback) {
60
58
  });
61
59
  } else {
62
60
  // invoke the callback function with the right number of arguments
63
- if (args === 1) {
64
- callback(value);
65
- } else if (args === 2) {
66
- callback(value, index);
67
- } else {
68
- // 3 or -1
69
- callback(value, index, array);
70
- }
61
+ return (0, _applyCallback.applyCallback)(callback, value, index, array, 'forEach');
71
62
  }
72
63
  };
73
64
  recurse(array, []);
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createMap = void 0;
7
- var _function = require("../../utils/function.js");
7
+ var _applyCallback = require("../../utils/applyCallback.js");
8
8
  var _factory = require("../../utils/factory.js");
9
9
  var name = 'map';
10
10
  var dependencies = ['typed'];
@@ -31,14 +31,9 @@ var createMap = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
31
31
  * return value * value
32
32
  * }) // returns [1, 4, 9]
33
33
  *
34
- * // The calling convention for the callback can cause subtleties:
35
- * math.map([1, 2, 3], math.format)
36
- * // throws TypeError: map attempted to call 'format(1,[0])' but argument 2 of type Array does not match expected type number or function or Object or string or boolean
37
- * // [This happens because `format` _can_ take a second argument,
38
- * // but its semantics don't match that of the 2nd argument `map` provides]
39
- *
40
- * // To avoid this error, use a function that takes exactly the
41
- * // desired arguments:
34
+ * // The callback is normally called with three arguments:
35
+ * // callback(value, index, Array)
36
+ * // If you want to call with only one argument, use:
42
37
  * math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']
43
38
  *
44
39
  * See also:
@@ -68,8 +63,6 @@ var createMap = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
68
63
  */
69
64
  exports.createMap = createMap;
70
65
  function _map(array, callback) {
71
- // figure out what number of arguments the callback function expects
72
- var args = (0, _function.maxArgumentCount)(callback);
73
66
  var recurse = function recurse(value, index) {
74
67
  if (Array.isArray(value)) {
75
68
  return value.map(function (child, i) {
@@ -77,33 +70,8 @@ function _map(array, callback) {
77
70
  return recurse(child, index.concat(i));
78
71
  });
79
72
  } else {
80
- try {
81
- // invoke the callback function with the right number of arguments
82
- if (args === 1) {
83
- return callback(value);
84
- } else if (args === 2) {
85
- return callback(value, index);
86
- } else {
87
- // 3 or -1
88
- return callback(value, index, array);
89
- }
90
- } catch (err) {
91
- // But maybe the arguments still weren't right
92
- if (err instanceof TypeError && 'data' in err && err.data.category === 'wrongType') {
93
- var newmsg = "map attempted to call '".concat(err.data.fn, "(").concat(value);
94
- var indexString = JSON.stringify(index);
95
- if (args === 2) {
96
- newmsg += ',' + indexString;
97
- } else if (args !== 1) {
98
- newmsg += ",".concat(indexString, ",").concat(array);
99
- }
100
- newmsg += ")' but argument ".concat(err.data.index + 1, " of type ");
101
- newmsg += "".concat(err.data.actual, " does not match expected type ");
102
- newmsg += err.data.expected.join(' or ');
103
- throw new TypeError(newmsg);
104
- }
105
- throw err;
106
- }
73
+ // invoke the callback function with the right number of arguments
74
+ return (0, _applyCallback.applyCallback)(callback, value, index, array, 'map');
107
75
  }
108
76
  };
109
77
  return recurse(array, []);
@@ -7,7 +7,7 @@ exports.createMatrixFromColumns = void 0;
7
7
  var _factory = require("../../utils/factory.js");
8
8
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
9
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
11
  var name = 'matrixFromColumns';
12
12
  var dependencies = ['typed', 'matrix', 'flatten', 'size'];
13
13
  var createMatrixFromColumns = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -7,7 +7,7 @@ exports.createMatrixFromRows = void 0;
7
7
  var _factory = require("../../utils/factory.js");
8
8
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
9
9
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
10
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
11
11
  var name = 'matrixFromRows';
12
12
  var dependencies = ['typed', 'matrix', 'flatten', 'size'];
13
13
  var createMatrixFromRows = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -59,7 +59,7 @@ var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
59
59
  *
60
60
  * Syntax:
61
61
  *
62
- * X = math.sqrtm(A)
62
+ * math.sqrtm(A)
63
63
  *
64
64
  * Examples:
65
65
  *
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 11.7.0
10
- * @date 2023-03-15
9
+ * @version 11.8.1
10
+ * @date 2023-06-13
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2023 Jos de Jong <wjosdejong@gmail.com>
@@ -67,6 +67,13 @@ var createBignumber = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
67
67
  // we assume a BigNumber is immutable
68
68
  return x;
69
69
  },
70
+ Unit: typed.referToSelf(function (self) {
71
+ return function (x) {
72
+ var clone = x.clone();
73
+ clone.value = self(x.value);
74
+ return clone;
75
+ };
76
+ }),
70
77
  Fraction: function Fraction(x) {
71
78
  return new BigNumber(x.n).div(x.d).times(x.s);
72
79
  },
@@ -43,7 +43,7 @@ var createFraction = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
43
43
  *
44
44
  * bignumber, number, string, unit
45
45
  *
46
- * @param {number | string | Fraction | BigNumber | Array | Matrix} [args]
46
+ * @param {number | string | Fraction | BigNumber | Unit | Array | Matrix} [args]
47
47
  * Arguments specifying the value, or numerator and denominator of
48
48
  * the fraction
49
49
  * @return {Fraction | Array | Matrix} Returns a fraction
@@ -71,6 +71,13 @@ var createFraction = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
71
71
  return x; // fractions are immutable
72
72
  },
73
73
 
74
+ Unit: typed.referToSelf(function (self) {
75
+ return function (x) {
76
+ var clone = x.clone();
77
+ clone.value = self(x.value);
78
+ return clone;
79
+ };
80
+ }),
74
81
  Object: function Object(x) {
75
82
  return new Fraction(x);
76
83
  },
@@ -16,7 +16,7 @@ var _factory = require("../../utils/factory.js");
16
16
  var _function = require("../../utils/function.js");
17
17
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
18
18
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
19
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
19
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
20
20
  var name = 'DenseMatrix';
21
21
  var dependencies = ['Matrix'];
22
22
  var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
@@ -600,51 +600,47 @@ var createDenseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, dependen
600
600
  DenseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator["default"].mark(function _callee() {
601
601
  var recurse;
602
602
  return _regenerator["default"].wrap(function _callee$(_context2) {
603
- while (1) {
604
- switch (_context2.prev = _context2.next) {
605
- case 0:
606
- recurse = /*#__PURE__*/_regenerator["default"].mark(function recurse(value, index) {
607
- var i;
608
- return _regenerator["default"].wrap(function recurse$(_context) {
609
- while (1) {
610
- switch (_context.prev = _context.next) {
611
- case 0:
612
- if (!(0, _is.isArray)(value)) {
613
- _context.next = 9;
614
- break;
615
- }
616
- i = 0;
617
- case 2:
618
- if (!(i < value.length)) {
619
- _context.next = 7;
620
- break;
621
- }
622
- return _context.delegateYield(recurse(value[i], index.concat(i)), "t0", 4);
623
- case 4:
624
- i++;
625
- _context.next = 2;
626
- break;
627
- case 7:
628
- _context.next = 11;
629
- break;
630
- case 9:
631
- _context.next = 11;
632
- return {
633
- value: value,
634
- index: index
635
- };
636
- case 11:
637
- case "end":
638
- return _context.stop();
603
+ while (1) switch (_context2.prev = _context2.next) {
604
+ case 0:
605
+ recurse = /*#__PURE__*/_regenerator["default"].mark(function recurse(value, index) {
606
+ var i;
607
+ return _regenerator["default"].wrap(function recurse$(_context) {
608
+ while (1) switch (_context.prev = _context.next) {
609
+ case 0:
610
+ if (!(0, _is.isArray)(value)) {
611
+ _context.next = 9;
612
+ break;
639
613
  }
640
- }
641
- }, recurse);
642
- });
643
- return _context2.delegateYield(recurse(this._data, []), "t0", 2);
644
- case 2:
645
- case "end":
646
- return _context2.stop();
647
- }
614
+ i = 0;
615
+ case 2:
616
+ if (!(i < value.length)) {
617
+ _context.next = 7;
618
+ break;
619
+ }
620
+ return _context.delegateYield(recurse(value[i], index.concat(i)), "t0", 4);
621
+ case 4:
622
+ i++;
623
+ _context.next = 2;
624
+ break;
625
+ case 7:
626
+ _context.next = 11;
627
+ break;
628
+ case 9:
629
+ _context.next = 11;
630
+ return {
631
+ value: value,
632
+ index: index
633
+ };
634
+ case 11:
635
+ case "end":
636
+ return _context.stop();
637
+ }
638
+ }, recurse);
639
+ });
640
+ return _context2.delegateYield(recurse(this._data, []), "t0", 2);
641
+ case 2:
642
+ case "end":
643
+ return _context2.stop();
648
644
  }
649
645
  }, _callee, this);
650
646
  });
@@ -1028,49 +1028,47 @@ var createSparseMatrixClass = /* #__PURE__ */(0, _factory.factory)(name, depende
1028
1028
  SparseMatrix.prototype[Symbol.iterator] = /*#__PURE__*/_regenerator["default"].mark(function _callee() {
1029
1029
  var columns, j, k0, k1, k, i;
1030
1030
  return _regenerator["default"].wrap(function _callee$(_context) {
1031
- while (1) {
1032
- switch (_context.prev = _context.next) {
1033
- case 0:
1034
- if (this._values) {
1035
- _context.next = 2;
1036
- break;
1037
- }
1038
- throw new Error('Cannot iterate a Pattern only matrix');
1039
- case 2:
1040
- columns = this._size[1];
1041
- j = 0;
1042
- case 4:
1043
- if (!(j < columns)) {
1044
- _context.next = 18;
1045
- break;
1046
- }
1047
- k0 = this._ptr[j];
1048
- k1 = this._ptr[j + 1];
1049
- k = k0;
1050
- case 8:
1051
- if (!(k < k1)) {
1052
- _context.next = 15;
1053
- break;
1054
- }
1055
- // row index
1056
- i = this._index[k];
1057
- _context.next = 12;
1058
- return {
1059
- value: this._values[k],
1060
- index: [i, j]
1061
- };
1062
- case 12:
1063
- k++;
1064
- _context.next = 8;
1031
+ while (1) switch (_context.prev = _context.next) {
1032
+ case 0:
1033
+ if (this._values) {
1034
+ _context.next = 2;
1065
1035
  break;
1066
- case 15:
1067
- j++;
1068
- _context.next = 4;
1036
+ }
1037
+ throw new Error('Cannot iterate a Pattern only matrix');
1038
+ case 2:
1039
+ columns = this._size[1];
1040
+ j = 0;
1041
+ case 4:
1042
+ if (!(j < columns)) {
1043
+ _context.next = 18;
1069
1044
  break;
1070
- case 18:
1071
- case "end":
1072
- return _context.stop();
1073
- }
1045
+ }
1046
+ k0 = this._ptr[j];
1047
+ k1 = this._ptr[j + 1];
1048
+ k = k0;
1049
+ case 8:
1050
+ if (!(k < k1)) {
1051
+ _context.next = 15;
1052
+ break;
1053
+ }
1054
+ // row index
1055
+ i = this._index[k];
1056
+ _context.next = 12;
1057
+ return {
1058
+ value: this._values[k],
1059
+ index: [i, j]
1060
+ };
1061
+ case 12:
1062
+ k++;
1063
+ _context.next = 8;
1064
+ break;
1065
+ case 15:
1066
+ j++;
1067
+ _context.next = 4;
1068
+ break;
1069
+ case 18:
1070
+ case "end":
1071
+ return _context.stop();
1074
1072
  }
1075
1073
  }, _callee, this);
1076
1074
  });
@@ -125,9 +125,13 @@ var createNumber = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
125
125
  Fraction: function Fraction(x) {
126
126
  return x.valueOf();
127
127
  },
128
- Unit: function Unit(x) {
129
- throw new Error('Second argument with valueless unit expected');
130
- },
128
+ Unit: typed.referToSelf(function (self) {
129
+ return function (x) {
130
+ var clone = x.clone();
131
+ clone.value = self(x.value);
132
+ return clone;
133
+ };
134
+ }),
131
135
  "null": function _null(x) {
132
136
  return 0;
133
137
  },
@@ -3274,6 +3274,8 @@ var createUnitClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
3274
3274
  watts: 'watt',
3275
3275
  joules: 'joule',
3276
3276
  amperes: 'ampere',
3277
+ amps: 'ampere',
3278
+ amp: 'ampere',
3277
3279
  coulombs: 'coulomb',
3278
3280
  volts: 'volt',
3279
3281
  ohms: 'ohm',
@@ -14,7 +14,7 @@ var createSplitUnit = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
14
14
  *
15
15
  * Syntax:
16
16
  *
17
- * splitUnit(unit: Unit, parts: Array.<Unit>)
17
+ * math.splitUnit(unit: Unit, parts: Array.<Unit>)
18
18
  *
19
19
  * Example:
20
20
  *