mathjs 13.2.3 → 14.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. package/HISTORY.md +24 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -10
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/core/function/import.js +4 -1
  6. package/lib/cjs/core/function/typed.js +1 -1
  7. package/lib/cjs/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  8. package/lib/cjs/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  9. package/lib/cjs/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  10. package/lib/cjs/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  11. package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  12. package/lib/cjs/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesLog.generated.js +2 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  17. package/lib/cjs/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  18. package/lib/cjs/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  19. package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  20. package/lib/cjs/entry/impureFunctionsAny.generated.js +1 -0
  21. package/lib/cjs/entry/impureFunctionsNumber.generated.js +1 -0
  22. package/lib/cjs/entry/pureFunctionsAny.generated.js +11 -0
  23. package/lib/cjs/expression/embeddedDocs/function/arithmetic/ceil.js +2 -2
  24. package/lib/cjs/expression/embeddedDocs/function/arithmetic/fix.js +2 -2
  25. package/lib/cjs/expression/embeddedDocs/function/arithmetic/floor.js +2 -2
  26. package/lib/cjs/expression/parse.js +26 -36
  27. package/lib/cjs/function/algebra/derivative.js +64 -77
  28. package/lib/cjs/function/algebra/simplify.js +4 -3
  29. package/lib/cjs/function/algebra/simplifyConstant.js +5 -11
  30. package/lib/cjs/function/arithmetic/ceil.js +21 -2
  31. package/lib/cjs/function/arithmetic/dotDivide.js +4 -3
  32. package/lib/cjs/function/arithmetic/dotPow.js +4 -3
  33. package/lib/cjs/function/arithmetic/fix.js +24 -5
  34. package/lib/cjs/function/arithmetic/floor.js +21 -2
  35. package/lib/cjs/function/arithmetic/log.js +12 -4
  36. package/lib/cjs/function/arithmetic/pow.js +2 -2
  37. package/lib/cjs/function/arithmetic/round.js +3 -5
  38. package/lib/cjs/function/arithmetic/sign.js +1 -1
  39. package/lib/cjs/function/bitwise/bitXor.js +4 -3
  40. package/lib/cjs/function/logical/xor.js +4 -3
  41. package/lib/cjs/function/relational/equal.js +4 -3
  42. package/lib/cjs/function/relational/larger.js +4 -3
  43. package/lib/cjs/function/relational/largerEq.js +4 -3
  44. package/lib/cjs/function/relational/smaller.js +4 -3
  45. package/lib/cjs/function/relational/smallerEq.js +4 -3
  46. package/lib/cjs/function/relational/unequal.js +4 -3
  47. package/lib/cjs/function/utils/isInteger.js +1 -1
  48. package/lib/cjs/function/utils/isNegative.js +1 -1
  49. package/lib/cjs/function/utils/isPositive.js +1 -1
  50. package/lib/cjs/header.js +2 -2
  51. package/lib/cjs/type/bignumber/function/bignumber.js +2 -2
  52. package/lib/cjs/type/fraction/Fraction.js +4 -4
  53. package/lib/cjs/type/fraction/function/fraction.js +3 -0
  54. package/lib/cjs/type/matrix/utils/matAlgo07xSSf.js +39 -43
  55. package/lib/cjs/type/unit/Unit.js +1 -1
  56. package/lib/cjs/utils/string.js +2 -2
  57. package/lib/cjs/version.js +1 -1
  58. package/lib/esm/core/function/import.js +4 -1
  59. package/lib/esm/core/function/typed.js +1 -1
  60. package/lib/esm/entry/dependenciesAny/dependenciesBitXor.generated.js +2 -0
  61. package/lib/esm/entry/dependenciesAny/dependenciesDotDivide.generated.js +2 -0
  62. package/lib/esm/entry/dependenciesAny/dependenciesDotPow.generated.js +2 -0
  63. package/lib/esm/entry/dependenciesAny/dependenciesEqual.generated.js +2 -0
  64. package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  65. package/lib/esm/entry/dependenciesAny/dependenciesLargerEq.generated.js +2 -0
  66. package/lib/esm/entry/dependenciesAny/dependenciesLog.generated.js +2 -0
  67. package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
  68. package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  69. package/lib/esm/entry/dependenciesAny/dependenciesSmallerEq.generated.js +2 -0
  70. package/lib/esm/entry/dependenciesAny/dependenciesUnequal.generated.js +2 -0
  71. package/lib/esm/entry/dependenciesAny/dependenciesXor.generated.js +2 -0
  72. package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
  73. package/lib/esm/entry/impureFunctionsAny.generated.js +1 -0
  74. package/lib/esm/entry/impureFunctionsNumber.generated.js +1 -0
  75. package/lib/esm/entry/pureFunctionsAny.generated.js +11 -0
  76. package/lib/esm/expression/embeddedDocs/function/arithmetic/ceil.js +2 -2
  77. package/lib/esm/expression/embeddedDocs/function/arithmetic/fix.js +2 -2
  78. package/lib/esm/expression/embeddedDocs/function/arithmetic/floor.js +2 -2
  79. package/lib/esm/expression/parse.js +26 -36
  80. package/lib/esm/function/algebra/derivative.js +64 -77
  81. package/lib/esm/function/algebra/simplify.js +4 -3
  82. package/lib/esm/function/algebra/simplifyConstant.js +5 -11
  83. package/lib/esm/function/arithmetic/ceil.js +21 -2
  84. package/lib/esm/function/arithmetic/dotDivide.js +4 -3
  85. package/lib/esm/function/arithmetic/dotPow.js +4 -3
  86. package/lib/esm/function/arithmetic/fix.js +24 -5
  87. package/lib/esm/function/arithmetic/floor.js +21 -2
  88. package/lib/esm/function/arithmetic/log.js +12 -4
  89. package/lib/esm/function/arithmetic/pow.js +2 -2
  90. package/lib/esm/function/arithmetic/round.js +3 -5
  91. package/lib/esm/function/arithmetic/sign.js +1 -1
  92. package/lib/esm/function/bitwise/bitXor.js +4 -3
  93. package/lib/esm/function/logical/xor.js +4 -3
  94. package/lib/esm/function/relational/equal.js +4 -3
  95. package/lib/esm/function/relational/larger.js +4 -3
  96. package/lib/esm/function/relational/largerEq.js +4 -3
  97. package/lib/esm/function/relational/smaller.js +4 -3
  98. package/lib/esm/function/relational/smallerEq.js +4 -3
  99. package/lib/esm/function/relational/unequal.js +4 -3
  100. package/lib/esm/function/utils/isInteger.js +1 -1
  101. package/lib/esm/function/utils/isNegative.js +1 -1
  102. package/lib/esm/function/utils/isPositive.js +1 -1
  103. package/lib/esm/type/bignumber/function/bignumber.js +2 -2
  104. package/lib/esm/type/fraction/Fraction.js +4 -4
  105. package/lib/esm/type/fraction/function/fraction.js +3 -0
  106. package/lib/esm/type/matrix/utils/matAlgo07xSSf.js +39 -43
  107. package/lib/esm/type/unit/Unit.js +1 -1
  108. package/lib/esm/utils/string.js +2 -2
  109. package/lib/esm/version.js +1 -1
  110. package/package.json +13 -13
  111. package/types/index.d.ts +112 -23
@@ -82,7 +82,7 @@ const createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(n
82
82
  * @param {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} x Value to be rounded
83
83
  * @param {number | BigNumber | Array} [n=0] Number of decimals
84
84
  * @param {Unit} [valuelessUnit] A valueless unit
85
- * @return {number | BigNumber | Fraction | Complex | Array | Matrix} Rounded value
85
+ * @return {number | BigNumber | Fraction | Complex | Unit | Array | Matrix} Rounded value
86
86
  */
87
87
  return typed(name, {
88
88
  number: function (x) {
@@ -163,13 +163,11 @@ const createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(n
163
163
  return unit.multiply(self(valueless, n));
164
164
  }),
165
165
  'Unit, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),
166
- 'Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),
167
- 'Array | Matrix, number, Unit': typed.referToSelf(self => (x, n, unit) => {
166
+ 'Array | Matrix, number | BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => {
168
167
  // deep map collection, skip zeros since round(0) = 0
169
168
  return (0, _collection.deepMap)(x, value => self(value, n, unit), true);
170
169
  }),
171
- 'Array | Matrix, BigNumber, Unit': typed.referToSelf(self => (x, n, unit) => self(x, n.toNumber(), unit)),
172
- 'Array | Matrix, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),
170
+ 'Array | Matrix | Unit, Unit': typed.referToSelf(self => (x, unit) => self(x, 0, unit)),
173
171
  'Array | Matrix': typed.referToSelf(self => x => {
174
172
  // deep map collection, skip zeros since round(0) = 0
175
173
  return (0, _collection.deepMap)(x, self, true);
@@ -58,7 +58,7 @@ const createSign = exports.createSign = /* #__PURE__ */(0, _factory.factory)(nam
58
58
  return x > 0n ? 1n : x < 0n ? -1n : 0n;
59
59
  },
60
60
  Fraction: function (x) {
61
- return new Fraction(x.s, 1);
61
+ return new Fraction(x.s);
62
62
  },
63
63
  // deep map collection, skip zeros since sign(0) = 0
64
64
  'Array | Matrix': typed.referToSelf(self => x => (0, _collection.deepMap)(x, self, true)),
@@ -12,20 +12,21 @@ var _factory = require("../../utils/factory.js");
12
12
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
13
13
  var _index = require("../../plain/number/index.js");
14
14
  const name = 'bitXor';
15
- const dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat'];
15
+ const dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
16
16
  const createBitXor = exports.createBitXor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
17
17
  let {
18
18
  typed,
19
19
  matrix,
20
20
  DenseMatrix,
21
- concat
21
+ concat,
22
+ SparseMatrix
22
23
  } = _ref;
23
24
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
24
25
  typed
25
26
  });
26
27
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
27
28
  typed,
28
- DenseMatrix
29
+ SparseMatrix
29
30
  });
30
31
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
31
32
  typed,
@@ -11,20 +11,21 @@ var _factory = require("../../utils/factory.js");
11
11
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
12
12
  var _index = require("../../plain/number/index.js");
13
13
  const name = 'xor';
14
- const dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat'];
14
+ const dependencies = ['typed', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
15
15
  const createXor = exports.createXor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
16
16
  let {
17
17
  typed,
18
18
  matrix,
19
19
  DenseMatrix,
20
- concat
20
+ concat,
21
+ SparseMatrix
21
22
  } = _ref;
22
23
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
23
24
  typed
24
25
  });
25
26
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
26
27
  typed,
27
- DenseMatrix
28
+ SparseMatrix
28
29
  });
29
30
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
30
31
  typed,
@@ -10,21 +10,22 @@ var _matAlgo07xSSf = require("../../type/matrix/utils/matAlgo07xSSf.js");
10
10
  var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
11
11
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
12
12
  const name = 'equal';
13
- const dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
13
+ const dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat', 'SparseMatrix'];
14
14
  const createEqual = exports.createEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
15
15
  let {
16
16
  typed,
17
17
  matrix,
18
18
  equalScalar,
19
19
  DenseMatrix,
20
- concat
20
+ concat,
21
+ SparseMatrix
21
22
  } = _ref;
22
23
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
23
24
  typed
24
25
  });
25
26
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
26
27
  typed,
27
- DenseMatrix
28
+ SparseMatrix
28
29
  });
29
30
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
30
31
  typed,
@@ -13,21 +13,22 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  const name = 'larger';
16
- const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
16
+ const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
17
17
  const createLarger = exports.createLarger = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
18
18
  let {
19
19
  typed,
20
20
  config,
21
21
  matrix,
22
22
  DenseMatrix,
23
- concat
23
+ concat,
24
+ SparseMatrix
24
25
  } = _ref;
25
26
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
26
27
  typed
27
28
  });
28
29
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
29
30
  typed,
30
- DenseMatrix
31
+ SparseMatrix
31
32
  });
32
33
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
33
34
  typed,
@@ -13,21 +13,22 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  const name = 'largerEq';
16
- const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
16
+ const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
17
17
  const createLargerEq = exports.createLargerEq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
18
18
  let {
19
19
  typed,
20
20
  config,
21
21
  matrix,
22
22
  DenseMatrix,
23
- concat
23
+ concat,
24
+ SparseMatrix
24
25
  } = _ref;
25
26
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
26
27
  typed
27
28
  });
28
29
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
29
30
  typed,
30
- DenseMatrix
31
+ SparseMatrix
31
32
  });
32
33
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
33
34
  typed,
@@ -13,21 +13,22 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  const name = 'smaller';
16
- const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
16
+ const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
17
17
  const createSmaller = exports.createSmaller = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
18
18
  let {
19
19
  typed,
20
20
  config,
21
21
  matrix,
22
22
  DenseMatrix,
23
- concat
23
+ concat,
24
+ SparseMatrix
24
25
  } = _ref;
25
26
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
26
27
  typed
27
28
  });
28
29
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
29
30
  typed,
30
- DenseMatrix
31
+ SparseMatrix
31
32
  });
32
33
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
33
34
  typed,
@@ -13,21 +13,22 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
13
13
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
14
14
  var _compareUnits = require("./compareUnits.js");
15
15
  const name = 'smallerEq';
16
- const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat'];
16
+ const dependencies = ['typed', 'config', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
17
17
  const createSmallerEq = exports.createSmallerEq = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
18
18
  let {
19
19
  typed,
20
20
  config,
21
21
  matrix,
22
22
  DenseMatrix,
23
- concat
23
+ concat,
24
+ SparseMatrix
24
25
  } = _ref;
25
26
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
26
27
  typed
27
28
  });
28
29
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
29
30
  typed,
30
- DenseMatrix
31
+ SparseMatrix
31
32
  });
32
33
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
33
34
  typed,
@@ -10,7 +10,7 @@ var _matAlgo07xSSf = require("../../type/matrix/utils/matAlgo07xSSf.js");
10
10
  var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
11
11
  var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
12
12
  const name = 'unequal';
13
- const dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix', 'concat'];
13
+ const dependencies = ['typed', 'config', 'equalScalar', 'matrix', 'DenseMatrix', 'concat', 'SparseMatrix'];
14
14
  const createUnequal = exports.createUnequal = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
15
15
  let {
16
16
  typed,
@@ -18,14 +18,15 @@ const createUnequal = exports.createUnequal = /* #__PURE__ */(0, _factory.factor
18
18
  equalScalar,
19
19
  matrix,
20
20
  DenseMatrix,
21
- concat
21
+ concat,
22
+ SparseMatrix
22
23
  } = _ref;
23
24
  const matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
24
25
  typed
25
26
  });
26
27
  const matAlgo07xSSf = (0, _matAlgo07xSSf.createMatAlgo07xSSf)({
27
28
  typed,
28
- DenseMatrix
29
+ SparseMatrix
29
30
  });
30
31
  const matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
31
32
  typed,
@@ -53,7 +53,7 @@ const createIsInteger = exports.createIsInteger = /* #__PURE__ */(0, _factory.fa
53
53
  return true;
54
54
  },
55
55
  Fraction: function (x) {
56
- return x.d === 1 && isFinite(x.n);
56
+ return x.d === 1n;
57
57
  },
58
58
  'Array | Matrix': typed.referToSelf(self => x => (0, _collection.deepMap)(x, self))
59
59
  });
@@ -49,7 +49,7 @@ const createIsNegative = exports.createIsNegative = /* #__PURE__ */(0, _factory.
49
49
  number: x => (0, _number.nearlyEqual)(x, 0, config.relTol, config.absTol) ? false : (0, _index.isNegativeNumber)(x),
50
50
  BigNumber: x => (0, _nearlyEqual.nearlyEqual)(x, new x.constructor(0), config.relTol, config.absTol) ? false : x.isNeg() && !x.isZero() && !x.isNaN(),
51
51
  bigint: x => x < 0n,
52
- Fraction: x => x.s < 0,
52
+ Fraction: x => x.s < 0n,
53
53
  // It's enough to decide on the sign
54
54
 
55
55
  Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),
@@ -51,7 +51,7 @@ const createIsPositive = exports.createIsPositive = /* #__PURE__ */(0, _factory.
51
51
  number: x => (0, _number.nearlyEqual)(x, 0, config.relTol, config.absTol) ? false : (0, _index.isPositiveNumber)(x),
52
52
  BigNumber: x => (0, _nearlyEqual.nearlyEqual)(x, new x.constructor(0), config.relTol, config.absTol) ? false : !x.isNeg() && !x.isZero() && !x.isNaN(),
53
53
  bigint: x => x > 0n,
54
- Fraction: x => x.s > 0 && x.n > 0,
54
+ Fraction: x => x.s > 0n && x.n > 0n,
55
55
  Unit: typed.referToSelf(self => x => typed.find(self, x.valueType())(x.value)),
56
56
  'Array | Matrix': typed.referToSelf(self => x => (0, _collection.deepMap)(x, self))
57
57
  });
package/lib/cjs/header.js CHANGED
@@ -6,8 +6,8 @@
6
6
  * It features real and complex numbers, units, matrices, a large set of
7
7
  * mathematical functions, and a flexible expression parser.
8
8
  *
9
- * @version 13.2.3
10
- * @date 2024-11-20
9
+ * @version 14.0.1
10
+ * @date 2024-12-11
11
11
  *
12
12
  * @license
13
13
  * Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>
@@ -78,9 +78,9 @@ const createBignumber = exports.createBignumber = /* #__PURE__ */(0, _factory.fa
78
78
  return clone;
79
79
  }),
80
80
  Fraction: function (x) {
81
- return new BigNumber(x.n).div(x.d).times(x.s);
81
+ return new BigNumber(String(x.n)).div(String(x.d)).times(String(x.s));
82
82
  },
83
- null: function (x) {
83
+ null: function (_x) {
84
84
  return new BigNumber(0);
85
85
  },
86
86
  'Array | Matrix': typed.referToSelf(self => x => (0, _collection.deepMap)(x, self))
@@ -23,20 +23,20 @@ const createFractionClass = exports.createFractionClass = /* #__PURE__ */(0, _fa
23
23
  /**
24
24
  * Get a JSON representation of a Fraction containing type information
25
25
  * @returns {Object} Returns a JSON object structured as:
26
- * `{"mathjs": "Fraction", "n": 3, "d": 8}`
26
+ * `{"mathjs": "Fraction", "n": "3", "d": "8"}`
27
27
  */
28
28
  _fraction.default.prototype.toJSON = function () {
29
29
  return {
30
30
  mathjs: 'Fraction',
31
- n: this.s * this.n,
32
- d: this.d
31
+ n: String(this.s * this.n),
32
+ d: String(this.d)
33
33
  };
34
34
  };
35
35
 
36
36
  /**
37
37
  * Instantiate a Fraction from a JSON object
38
38
  * @param {Object} json a JSON object structured as:
39
- * `{"mathjs": "Fraction", "n": 3, "d": 8}`
39
+ * `{"mathjs": "Fraction", "n": "3", "d": "8"}`
40
40
  * @return {BigNumber}
41
41
  */
42
42
  _fraction.default.fromJSON = function (json) {
@@ -63,6 +63,9 @@ const createFraction = exports.createFraction = /* #__PURE__ */(0, _factory.fact
63
63
  'number, number': function (numerator, denominator) {
64
64
  return new Fraction(numerator, denominator);
65
65
  },
66
+ 'bigint, bigint': function (numerator, denominator) {
67
+ return new Fraction(numerator, denominator);
68
+ },
66
69
  null: function (x) {
67
70
  return new Fraction(0);
68
71
  },
@@ -7,31 +7,30 @@ exports.createMatAlgo07xSSf = void 0;
7
7
  var _factory = require("../../../utils/factory.js");
8
8
  var _DimensionError = require("../../../error/DimensionError.js");
9
9
  const name = 'matAlgo07xSSf';
10
- const dependencies = ['typed', 'DenseMatrix'];
10
+ const dependencies = ['typed', 'SparseMatrix'];
11
11
  const createMatAlgo07xSSf = exports.createMatAlgo07xSSf = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
12
12
  let {
13
13
  typed,
14
- DenseMatrix
14
+ SparseMatrix
15
15
  } = _ref;
16
16
  /**
17
- * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij).
18
- * Callback function invoked MxN times.
19
- *
20
- * C(i,j) = f(Aij, Bij)
21
- *
22
- * @param {Matrix} a The SparseMatrix instance (A)
23
- * @param {Matrix} b The SparseMatrix instance (B)
24
- * @param {Function} callback The f(Aij,Bij) operation to invoke
25
- *
26
- * @return {Matrix} DenseMatrix (C)
27
- *
28
- * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
29
- */
17
+ * Iterates over SparseMatrix A and SparseMatrix B items (zero and nonzero) and invokes the callback function f(Aij, Bij).
18
+ * Callback function invoked MxN times.
19
+ *
20
+ * C(i,j) = f(Aij, Bij)
21
+ *
22
+ * @param {Matrix} a The SparseMatrix instance (A)
23
+ * @param {Matrix} b The SparseMatrix instance (B)
24
+ * @param {Function} callback The f(Aij,Bij) operation to invoke
25
+ *
26
+ * @return {Matrix} SparseMatrix (C)
27
+ *
28
+ * see https://github.com/josdejong/mathjs/pull/346#issuecomment-97620294
29
+ */
30
30
  return function matAlgo07xSSf(a, b, callback) {
31
31
  // sparse matrix arrays
32
32
  const asize = a._size;
33
33
  const adt = a._datatype || a._data === undefined ? a._datatype : a.getDataType();
34
- // sparse matrix arrays
35
34
  const bsize = b._size;
36
35
  const bdt = b._datatype || b._data === undefined ? b._datatype : b.getDataType();
37
36
 
@@ -39,8 +38,6 @@ const createMatAlgo07xSSf = exports.createMatAlgo07xSSf = /* #__PURE__ */(0, _fa
39
38
  if (asize.length !== bsize.length) {
40
39
  throw new _DimensionError.DimensionError(asize.length, bsize.length);
41
40
  }
42
-
43
- // check rows & columns
44
41
  if (asize[0] !== bsize[0] || asize[1] !== bsize[1]) {
45
42
  throw new RangeError('Dimension mismatch. Matrix A (' + asize + ') must match Matrix B (' + bsize + ')');
46
43
  }
@@ -51,59 +48,58 @@ const createMatAlgo07xSSf = exports.createMatAlgo07xSSf = /* #__PURE__ */(0, _fa
51
48
 
52
49
  // datatype
53
50
  let dt;
54
- // zero value
55
51
  let zero = 0;
56
- // callback signature to use
57
52
  let cf = callback;
58
53
 
59
54
  // process data types
60
55
  if (typeof adt === 'string' && adt === bdt && adt !== 'mixed') {
61
- // datatype
62
56
  dt = adt;
63
- // convert 0 to the same datatype
64
57
  zero = typed.convert(0, dt);
65
- // callback
66
58
  cf = typed.find(callback, [dt, dt]);
67
59
  }
68
60
 
69
- // vars
70
- let i, j;
71
-
72
- // result arrays
73
- const cdata = [];
74
- // initialize c
75
- for (i = 0; i < rows; i++) {
76
- cdata[i] = [];
77
- }
61
+ // result arrays for sparse format
62
+ const cvalues = [];
63
+ const cindex = [];
64
+ const cptr = new Array(columns + 1).fill(0); // Start with column pointer array
78
65
 
79
66
  // workspaces
80
67
  const xa = [];
81
68
  const xb = [];
82
- // marks indicating we have a value in x for a given column
83
69
  const wa = [];
84
70
  const wb = [];
85
71
 
86
72
  // loop columns
87
- for (j = 0; j < columns; j++) {
88
- // columns mark
73
+ for (let j = 0; j < columns; j++) {
89
74
  const mark = j + 1;
90
- // scatter the values of A(:,j) into workspace
75
+ let nonZeroCount = 0;
91
76
  _scatter(a, j, wa, xa, mark);
92
- // scatter the values of B(:,j) into workspace
93
77
  _scatter(b, j, wb, xb, mark);
78
+
94
79
  // loop rows
95
- for (i = 0; i < rows; i++) {
96
- // matrix values @ i,j
80
+ for (let i = 0; i < rows; i++) {
97
81
  const va = wa[i] === mark ? xa[i] : zero;
98
82
  const vb = wb[i] === mark ? xb[i] : zero;
83
+
99
84
  // invoke callback
100
- cdata[i][j] = cf(va, vb);
85
+ const cij = cf(va, vb);
86
+ // Store all non zero and true values
87
+ if (cij !== 0 && cij !== false) {
88
+ cindex.push(i); // row index
89
+ cvalues.push(cij); // computed value
90
+ nonZeroCount++;
91
+ }
101
92
  }
93
+
94
+ // Update column pointer with cumulative count of non-zero values
95
+ cptr[j + 1] = cptr[j] + nonZeroCount;
102
96
  }
103
97
 
104
- // return dense matrix
105
- return new DenseMatrix({
106
- data: cdata,
98
+ // Return the result as a sparse matrix
99
+ return new SparseMatrix({
100
+ values: cvalues,
101
+ index: cindex,
102
+ ptr: cptr,
107
103
  size: [rows, columns],
108
104
  datatype: adt === a._datatype && bdt === b._datatype ? dt : undefined
109
105
  });
@@ -3540,7 +3540,7 @@ const createUnitClass = exports.createUnitClass = /* #__PURE__ */(0, _factory.fa
3540
3540
  */
3541
3541
  Unit.typeConverters = {
3542
3542
  BigNumber: function (x) {
3543
- if (x !== null && x !== void 0 && x.isFraction) return new BigNumber(x.n).div(x.d).times(x.s);
3543
+ if (x !== null && x !== void 0 && x.isFraction) return new BigNumber(String(x.n)).div(String(x.d)).times(String(x.s));
3544
3544
  return new BigNumber(x + ''); // stringify to prevent constructor error
3545
3545
  },
3546
3546
  Fraction: function (x) {
@@ -80,7 +80,7 @@ function _format(value, options) {
80
80
  if (looksLikeFraction(value)) {
81
81
  if (!options || options.fraction !== 'decimal') {
82
82
  // output as ratio, like '1/3'
83
- return value.s * value.n + '/' + value.d;
83
+ return `${value.s * value.n}/${value.d}`;
84
84
  } else {
85
85
  // output as decimal, like '0.(3)'
86
86
  return value.toString();
@@ -182,7 +182,7 @@ function formatArray(array, options) {
182
182
  * @return {boolean}
183
183
  */
184
184
  function looksLikeFraction(value) {
185
- return value && typeof value === 'object' && typeof value.s === 'number' && typeof value.n === 'number' && typeof value.d === 'number' || false;
185
+ return value && typeof value === 'object' && typeof value.s === 'bigint' && typeof value.n === 'bigint' && typeof value.d === 'bigint' || false;
186
186
  }
187
187
 
188
188
  /**
@@ -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 = '13.2.3';
7
+ const version = exports.version = '14.0.1';
8
8
  // Note: This file is automatically generated when building math.js.
9
9
  // Changes made in this file will be overwritten.
@@ -120,6 +120,7 @@ export function importFactory(typed, load, math, importedFactories) {
120
120
  * @private
121
121
  */
122
122
  function _import(name, value, options) {
123
+ var _math$Unit;
123
124
  // TODO: refactor this function, it's to complicated and contains duplicate code
124
125
  if (options.wrap && typeof value === 'function') {
125
126
  // create a wrapper around the function
@@ -148,7 +149,9 @@ export function importFactory(typed, load, math, importedFactories) {
148
149
  });
149
150
  return;
150
151
  }
151
- if (math[name] === undefined || options.override) {
152
+ var isDefined = math[name] !== undefined;
153
+ var isValuelessUnit = (_math$Unit = math.Unit) === null || _math$Unit === void 0 ? void 0 : _math$Unit.isValuelessUnit(name);
154
+ if (!isDefined && !isValuelessUnit || options.override) {
152
155
  math[name] = value;
153
156
  delete importedFactories[name];
154
157
  _importTransform(name, value);
@@ -259,7 +259,7 @@ export var createTyped = /* #__PURE__ */factory('typed', dependencies, function
259
259
  if (!Fraction) {
260
260
  throwNoFraction(x);
261
261
  }
262
- return new Fraction(x.toString());
262
+ return new Fraction(x);
263
263
  }
264
264
  }, {
265
265
  from: 'Fraction',
@@ -3,12 +3,14 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
+ import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
6
7
  import { concatDependencies } from './dependenciesConcat.generated.js';
7
8
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
8
9
  import { typedDependencies } from './dependenciesTyped.generated.js';
9
10
  import { createBitXor } from '../../factoriesAny.js';
10
11
  export var bitXorDependencies = {
11
12
  DenseMatrixDependencies,
13
+ SparseMatrixDependencies,
12
14
  concatDependencies,
13
15
  matrixDependencies,
14
16
  typedDependencies,
@@ -3,6 +3,7 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
+ import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
6
7
  import { concatDependencies } from './dependenciesConcat.generated.js';
7
8
  import { divideScalarDependencies } from './dependenciesDivideScalar.generated.js';
8
9
  import { equalScalarDependencies } from './dependenciesEqualScalar.generated.js';
@@ -11,6 +12,7 @@ import { typedDependencies } from './dependenciesTyped.generated.js';
11
12
  import { createDotDivide } from '../../factoriesAny.js';
12
13
  export var dotDivideDependencies = {
13
14
  DenseMatrixDependencies,
15
+ SparseMatrixDependencies,
14
16
  concatDependencies,
15
17
  divideScalarDependencies,
16
18
  equalScalarDependencies,
@@ -3,6 +3,7 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
+ import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
6
7
  import { concatDependencies } from './dependenciesConcat.generated.js';
7
8
  import { equalScalarDependencies } from './dependenciesEqualScalar.generated.js';
8
9
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
@@ -11,6 +12,7 @@ import { typedDependencies } from './dependenciesTyped.generated.js';
11
12
  import { createDotPow } from '../../factoriesAny.js';
12
13
  export var dotPowDependencies = {
13
14
  DenseMatrixDependencies,
15
+ SparseMatrixDependencies,
14
16
  concatDependencies,
15
17
  equalScalarDependencies,
16
18
  matrixDependencies,
@@ -3,6 +3,7 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
+ import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
6
7
  import { concatDependencies } from './dependenciesConcat.generated.js';
7
8
  import { equalScalarDependencies } from './dependenciesEqualScalar.generated.js';
8
9
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
@@ -10,6 +11,7 @@ import { typedDependencies } from './dependenciesTyped.generated.js';
10
11
  import { createEqual } from '../../factoriesAny.js';
11
12
  export var equalDependencies = {
12
13
  DenseMatrixDependencies,
14
+ SparseMatrixDependencies,
13
15
  concatDependencies,
14
16
  equalScalarDependencies,
15
17
  matrixDependencies,
@@ -3,12 +3,14 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
+ import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
6
7
  import { concatDependencies } from './dependenciesConcat.generated.js';
7
8
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
8
9
  import { typedDependencies } from './dependenciesTyped.generated.js';
9
10
  import { createLarger } from '../../factoriesAny.js';
10
11
  export var largerDependencies = {
11
12
  DenseMatrixDependencies,
13
+ SparseMatrixDependencies,
12
14
  concatDependencies,
13
15
  matrixDependencies,
14
16
  typedDependencies,