mathjs 14.0.1 → 14.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/HISTORY.md +20 -0
  2. package/NOTICE +1 -1
  3. package/README.md +7 -7
  4. package/bin/cli.js +1 -1
  5. package/lib/browser/math.js +1 -1
  6. package/lib/browser/math.js.LICENSE.txt +5 -5
  7. package/lib/browser/math.js.map +1 -1
  8. package/lib/cjs/core/function/import.js +14 -4
  9. package/lib/cjs/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  10. package/lib/cjs/entry/dependenciesAny/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
  11. package/lib/cjs/entry/dependenciesAny/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
  12. package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
  13. package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
  14. package/lib/cjs/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
  15. package/lib/cjs/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  16. package/lib/cjs/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
  17. package/lib/cjs/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
  18. package/lib/cjs/entry/dependenciesAny.generated.js +14 -14
  19. package/lib/cjs/entry/dependenciesNumber/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
  20. package/lib/cjs/entry/dependenciesNumber/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
  21. package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
  22. package/lib/cjs/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
  23. package/lib/cjs/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
  24. package/lib/cjs/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
  25. package/lib/cjs/entry/dependenciesNumber.generated.js +14 -14
  26. package/lib/cjs/entry/impureFunctionsAny.generated.js +86 -85
  27. package/lib/cjs/entry/impureFunctionsNumber.generated.js +14 -14
  28. package/lib/cjs/entry/pureFunctionsAny.generated.js +330 -325
  29. package/lib/cjs/entry/pureFunctionsNumber.generated.js +18 -15
  30. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
  31. package/lib/cjs/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
  32. package/lib/cjs/expression/embeddedDocs/function/matrix/mapSlices.js +17 -0
  33. package/lib/cjs/expression/transform/index.transform.js +2 -2
  34. package/lib/cjs/expression/transform/{apply.transform.js → mapSlices.transform.js} +11 -10
  35. package/lib/cjs/expression/transform/quantileSeq.transform.js +5 -3
  36. package/lib/cjs/expression/transform/variance.transform.js +3 -3
  37. package/lib/cjs/factoriesAny.js +14 -14
  38. package/lib/cjs/factoriesNumber.js +16 -15
  39. package/lib/cjs/function/arithmetic/ceil.js +34 -26
  40. package/lib/cjs/function/arithmetic/fix.js +3 -0
  41. package/lib/cjs/function/arithmetic/floor.js +41 -26
  42. package/lib/cjs/function/arithmetic/log.js +12 -5
  43. package/lib/cjs/function/arithmetic/log10.js +15 -7
  44. package/lib/cjs/function/arithmetic/log2.js +9 -4
  45. package/lib/cjs/function/arithmetic/round.js +4 -0
  46. package/lib/cjs/function/matrix/ctranspose.js +1 -1
  47. package/lib/cjs/function/matrix/{apply.js → mapSlices.js} +19 -12
  48. package/lib/cjs/function/matrix/matrixFromFunction.js +36 -3
  49. package/lib/cjs/function/matrix/range.js +54 -5
  50. package/lib/cjs/function/probability/randomInt.js +26 -3
  51. package/lib/cjs/function/relational/larger.js +12 -4
  52. package/lib/cjs/function/relational/smaller.js +12 -4
  53. package/lib/cjs/function/statistics/max.js +1 -1
  54. package/lib/cjs/function/statistics/min.js +1 -1
  55. package/lib/cjs/function/statistics/quantileSeq.js +4 -9
  56. package/lib/cjs/function/statistics/variance.js +3 -3
  57. package/lib/cjs/function/string/hex.js +1 -1
  58. package/lib/cjs/function/string/print.js +2 -2
  59. package/lib/cjs/function/trigonometry/acoth.js +1 -1
  60. package/lib/cjs/function/trigonometry/acsc.js +1 -1
  61. package/lib/cjs/function/trigonometry/asin.js +1 -1
  62. package/lib/cjs/function/trigonometry/atan2.js +2 -1
  63. package/lib/cjs/function/trigonometry/cos.js +1 -1
  64. package/lib/cjs/function/trigonometry/sin.js +1 -1
  65. package/lib/cjs/function/utils/isInteger.js +1 -1
  66. package/lib/cjs/header.js +3 -3
  67. package/lib/cjs/type/matrix/MatrixIndex.js +6 -3
  68. package/lib/cjs/type/matrix/Range.js +15 -8
  69. package/lib/cjs/utils/bigint.js +33 -0
  70. package/lib/cjs/utils/factory.js +5 -2
  71. package/lib/cjs/utils/number.js +7 -19
  72. package/lib/cjs/utils/snapshot.js +8 -1
  73. package/lib/cjs/version.js +1 -1
  74. package/lib/esm/core/function/import.js +14 -4
  75. package/lib/esm/entry/dependenciesAny/dependenciesLarger.generated.js +2 -0
  76. package/lib/esm/entry/{dependenciesNumber/dependenciesApply.generated.js → dependenciesAny/dependenciesMapSlices.generated.js} +3 -3
  77. package/lib/esm/entry/{dependenciesNumber/dependenciesApplyTransform.generated.js → dependenciesAny/dependenciesMapSlicesTransform.generated.js} +3 -3
  78. package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
  79. package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
  80. package/lib/esm/entry/dependenciesAny/dependenciesRandomInt.generated.js +2 -0
  81. package/lib/esm/entry/dependenciesAny/dependenciesSmaller.generated.js +2 -0
  82. package/lib/esm/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
  83. package/lib/esm/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
  84. package/lib/esm/entry/dependenciesAny.generated.js +2 -2
  85. package/lib/esm/entry/{dependenciesAny/dependenciesApply.generated.js → dependenciesNumber/dependenciesMapSlices.generated.js} +3 -3
  86. package/lib/esm/entry/{dependenciesAny/dependenciesApplyTransform.generated.js → dependenciesNumber/dependenciesMapSlicesTransform.generated.js} +3 -3
  87. package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
  88. package/lib/esm/entry/dependenciesNumber/dependenciesRandomInt.generated.js +2 -0
  89. package/lib/esm/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
  90. package/lib/esm/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
  91. package/lib/esm/entry/dependenciesNumber.generated.js +2 -2
  92. package/lib/esm/entry/impureFunctionsAny.generated.js +88 -87
  93. package/lib/esm/entry/impureFunctionsNumber.generated.js +16 -16
  94. package/lib/esm/entry/pureFunctionsAny.generated.js +328 -323
  95. package/lib/esm/entry/pureFunctionsNumber.generated.js +17 -14
  96. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  97. package/lib/esm/expression/embeddedDocs/function/arithmetic/sign.js +1 -1
  98. package/lib/esm/expression/embeddedDocs/function/matrix/mapSlices.js +11 -0
  99. package/lib/esm/expression/transform/index.transform.js +3 -3
  100. package/lib/esm/expression/transform/mapSlices.transform.js +47 -0
  101. package/lib/esm/expression/transform/quantileSeq.transform.js +5 -3
  102. package/lib/esm/expression/transform/variance.transform.js +3 -3
  103. package/lib/esm/factoriesAny.js +2 -2
  104. package/lib/esm/factoriesNumber.js +2 -2
  105. package/lib/esm/function/arithmetic/ceil.js +35 -27
  106. package/lib/esm/function/arithmetic/fix.js +3 -0
  107. package/lib/esm/function/arithmetic/floor.js +42 -27
  108. package/lib/esm/function/arithmetic/log.js +12 -5
  109. package/lib/esm/function/arithmetic/log10.js +16 -8
  110. package/lib/esm/function/arithmetic/log2.js +9 -4
  111. package/lib/esm/function/arithmetic/round.js +4 -0
  112. package/lib/esm/function/matrix/ctranspose.js +1 -1
  113. package/lib/esm/function/matrix/{apply.js → mapSlices.js} +18 -11
  114. package/lib/esm/function/matrix/matrixFromFunction.js +36 -3
  115. package/lib/esm/function/matrix/range.js +54 -5
  116. package/lib/esm/function/probability/randomInt.js +26 -3
  117. package/lib/esm/function/relational/larger.js +12 -4
  118. package/lib/esm/function/relational/smaller.js +12 -4
  119. package/lib/esm/function/statistics/max.js +1 -1
  120. package/lib/esm/function/statistics/min.js +1 -1
  121. package/lib/esm/function/statistics/quantileSeq.js +4 -9
  122. package/lib/esm/function/statistics/variance.js +3 -3
  123. package/lib/esm/function/string/hex.js +1 -1
  124. package/lib/esm/function/string/print.js +2 -2
  125. package/lib/esm/function/trigonometry/acoth.js +1 -1
  126. package/lib/esm/function/trigonometry/acsc.js +1 -1
  127. package/lib/esm/function/trigonometry/asin.js +1 -1
  128. package/lib/esm/function/trigonometry/atan2.js +2 -1
  129. package/lib/esm/function/trigonometry/cos.js +1 -1
  130. package/lib/esm/function/trigonometry/sin.js +1 -1
  131. package/lib/esm/function/utils/isInteger.js +1 -1
  132. package/lib/esm/header.js +1 -1
  133. package/lib/esm/type/matrix/MatrixIndex.js +6 -3
  134. package/lib/esm/type/matrix/Range.js +16 -9
  135. package/lib/esm/utils/bigint.js +27 -0
  136. package/lib/esm/utils/factory.js +5 -2
  137. package/lib/esm/utils/number.js +6 -17
  138. package/lib/esm/utils/snapshot.js +8 -1
  139. package/lib/esm/version.js +1 -1
  140. package/package.json +13 -11
  141. package/types/index.d.ts +75 -12
  142. package/lib/esm/expression/transform/apply.transform.js +0 -44
@@ -26,7 +26,7 @@ const createAsin = exports.createAsin = /* #__PURE__ */(0, _factory.factory)(nam
26
26
  * Examples:
27
27
  *
28
28
  * math.asin(0.5) // returns number 0.5235987755982989
29
- * math.asin(math.sin(1.5)) // returns number ~1.5
29
+ * math.asin(math.sin(1.5)) // returns number 1.5
30
30
  *
31
31
  * math.asin(2) // returns Complex 1.5707963267948966 -1.3169578969248166i
32
32
  *
@@ -62,9 +62,10 @@ const createAtan2 = exports.createAtan2 = /* #__PURE__ */(0, _factory.factory)(n
62
62
  *
63
63
  * math.atan2(2, 2) / math.pi // returns number 0.25
64
64
  *
65
- * const angle = math.unit(60, 'deg') // returns Unit 60 deg
65
+ * const angle = math.unit(60, 'deg')
66
66
  * const x = math.cos(angle)
67
67
  * const y = math.sin(angle)
68
+ * math.atan2(y, x) * 180 / math.pi // returns 60
68
69
  *
69
70
  * math.atan(2) // returns number 1.1071487177940904
70
71
  *
@@ -34,7 +34,7 @@ const createCos = exports.createCos = /* #__PURE__ */(0, _factory.factory)(name,
34
34
  * math.cos(math.unit(60, 'deg')) // returns number 0.5
35
35
  *
36
36
  * const angle = 0.2
37
- * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1
37
+ * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number 1
38
38
  *
39
39
  * See also:
40
40
  *
@@ -34,7 +34,7 @@ const createSin = exports.createSin = /* #__PURE__ */(0, _factory.factory)(name,
34
34
  * math.sin(math.unit(30, 'deg')) // returns number 0.5
35
35
  *
36
36
  * const angle = 0.2
37
- * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number ~1
37
+ * math.pow(math.sin(angle), 2) + math.pow(math.cos(angle), 2) // returns number 1
38
38
  *
39
39
  * See also:
40
40
  *
@@ -32,7 +32,7 @@ const createIsInteger = exports.createIsInteger = /* #__PURE__ */(0, _factory.fa
32
32
  * math.isInteger(math.fraction(4)) // returns true
33
33
  * math.isInteger('3') // returns true
34
34
  * math.isInteger([3, 0.5, -2]) // returns [true, false, true]
35
- * math.isInteger(math.complex('2-4i')) // throws an error
35
+ * math.isInteger(math.complex('2-4i')) // throws TypeError
36
36
  *
37
37
  * See also:
38
38
  *
package/lib/cjs/header.js CHANGED
@@ -6,11 +6,11 @@
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.0.1
10
- * @date 2024-12-11
9
+ * @version 14.2.0
10
+ * @date 2025-01-30
11
11
  *
12
12
  * @license
13
- * Copyright (C) 2013-2024 Jos de Jong <wjosdejong@gmail.com>
13
+ * Copyright (C) 2013-2025 Jos de Jong <wjosdejong@gmail.com>
14
14
  *
15
15
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
16
16
  * use this file except in compliance with the License. You may obtain a copy
@@ -48,6 +48,7 @@ const createIndexClass = exports.createIndexClass = /* #__PURE__ */(0, _factory.
48
48
  const arg = arguments[i];
49
49
  const argIsArray = (0, _is.isArray)(arg);
50
50
  const argIsMatrix = (0, _is.isMatrix)(arg);
51
+ const argType = typeof arg;
51
52
  let sourceSize = null;
52
53
  if ((0, _is.isRange)(arg)) {
53
54
  this._dimensions.push(arg);
@@ -69,13 +70,15 @@ const createIndexClass = exports.createIndexClass = /* #__PURE__ */(0, _factory.
69
70
  if (size.length !== 1 || size[0] !== 1 || sourceSize !== null) {
70
71
  this._isScalar = false;
71
72
  }
72
- } else if (typeof arg === 'number') {
73
+ } else if (argType === 'number') {
73
74
  this._dimensions.push(_createImmutableMatrix([arg]));
74
- } else if (typeof arg === 'string') {
75
+ } else if (argType === 'bigint') {
76
+ this._dimensions.push(_createImmutableMatrix([Number(arg)]));
77
+ } else if (argType === 'string') {
75
78
  // object property (arguments.count should be 1)
76
79
  this._dimensions.push(arg);
77
80
  } else {
78
- throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');
81
+ throw new TypeError('Dimension must be an Array, Matrix, number, bigint, string, or Range');
79
82
  }
80
83
  this._sourceSize.push(sourceSize);
81
84
  // TODO: implement support for wildcard '*'
@@ -11,14 +11,21 @@ const name = 'Range';
11
11
  const dependencies = [];
12
12
  const createRangeClass = exports.createRangeClass = /* #__PURE__ */(0, _factory.factory)(name, dependencies, () => {
13
13
  /**
14
- * Create a range. A range has a start, step, and end, and contains functions
15
- * to iterate over the range.
14
+ * Create a range of numbers. A range has a start, step, and end,
15
+ * and contains functions to iterate over the range.
16
16
  *
17
17
  * A range can be constructed as:
18
18
  *
19
19
  * const range = new Range(start, end)
20
20
  * const range = new Range(start, end, step)
21
21
  *
22
+ * Note that the endpoints and step may be specified with other numeric
23
+ * types such as bigint or BigNumber, but they will be demoted to the
24
+ * built-in `number` type and the Range will only contain numbers. The
25
+ * rationale for this demotion is that Range objects are primarily used
26
+ * for indexing Matrix objects, and Matrix objects may only be indexed
27
+ * with `number`s.
28
+ *
22
29
  * To get the result of the range:
23
30
  * range.forEach(function (x) {
24
31
  * console.log(x)
@@ -51,22 +58,22 @@ const createRangeClass = exports.createRangeClass = /* #__PURE__ */(0, _factory.
51
58
  if (hasStart) {
52
59
  if ((0, _is.isBigNumber)(start)) {
53
60
  start = start.toNumber();
54
- } else if (typeof start !== 'number') {
55
- throw new TypeError('Parameter start must be a number');
61
+ } else if (typeof start !== 'number' && !(0, _is.isBigInt)(start)) {
62
+ throw new TypeError('Parameter start must be a number or bigint');
56
63
  }
57
64
  }
58
65
  if (hasEnd) {
59
66
  if ((0, _is.isBigNumber)(end)) {
60
67
  end = end.toNumber();
61
- } else if (typeof end !== 'number') {
62
- throw new TypeError('Parameter end must be a number');
68
+ } else if (typeof end !== 'number' && !(0, _is.isBigInt)(end)) {
69
+ throw new TypeError('Parameter end must be a number or bigint');
63
70
  }
64
71
  }
65
72
  if (hasStep) {
66
73
  if ((0, _is.isBigNumber)(step)) {
67
74
  step = step.toNumber();
68
- } else if (typeof step !== 'number') {
69
- throw new TypeError('Parameter step must be a number');
75
+ } else if (typeof step !== 'number' && !(0, _is.isBigInt)(step)) {
76
+ throw new TypeError('Parameter step must be a number or bigint');
70
77
  }
71
78
  }
72
79
  this.start = hasStart ? parseFloat(start) : 0;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.promoteLogarithm = promoteLogarithm;
7
+ /**
8
+ * Build a bigint logarithm function from a number logarithm,
9
+ * still returning a number. The idea is that 15 hexadecimal digits
10
+ * (60 bits) saturates the mantissa of the log, and each additional hex
11
+ * digit effectively just adds the log of 16 to the resulting value. So
12
+ * convert the most significant 15 hex digits to a number and take its
13
+ * log, and then add the log of 16 for each additional hex digit that
14
+ * was in the bigint.
15
+ * For negative numbers (complex logarithms), following the bignum
16
+ * implementation, it just downgrades to number and uses the complex result.
17
+ * @param {number} log16 the log of 16
18
+ * @param {(number) -> number} numberLog the logarithm function for numbers
19
+ * @param {ConfigurationObject} config the mathjs configuration
20
+ * @param {(number) -> Complex} cplx the associated Complex log
21
+ * @returns {(bigint) -> number} the corresponding logarithm for bigints
22
+ */
23
+ function promoteLogarithm(log16, numberLog, config, cplx) {
24
+ return function (b) {
25
+ if (b > 0 || config.predictable) {
26
+ if (b <= 0) return NaN;
27
+ const s = b.toString(16);
28
+ const s15 = s.substring(0, 15);
29
+ return log16 * (s.length - s15.length) + numberLog(Number('0x' + s15));
30
+ }
31
+ return cplx(b.toNumber());
32
+ };
33
+ }
@@ -31,8 +31,11 @@ var _object = require("./object.js");
31
31
  * @param {string} name Name of the function to be created
32
32
  * @param {string[]} dependencies The names of all required dependencies
33
33
  * @param {function} create Callback function called with an object with all dependencies
34
- * @param {Object} [meta] Optional object with meta information that will be attached
35
- * to the created factory function as property `meta`.
34
+ * @param {Object} [meta]
35
+ * Optional object with meta information that will be attached
36
+ * to the created factory function as property `meta`. For explanation
37
+ * of what meta properties can be specified and what they mean, see
38
+ * docs/core/extension.md.
36
39
  * @returns {function}
37
40
  */
38
41
  function factory(name, dependencies, create, meta) {
@@ -3,14 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.cbrt = exports.atanh = exports.asinh = exports.acosh = exports.DBL_EPSILON = void 0;
6
+ exports.cbrt = exports.atanh = exports.asinh = exports.acosh = void 0;
7
7
  exports.copysign = copysign;
8
8
  exports.cosh = void 0;
9
9
  exports.digits = digits;
10
10
  exports.expm1 = void 0;
11
11
  exports.format = format;
12
12
  exports.isInteger = isInteger;
13
- exports.isIntegerStr = isIntegerStr;
14
13
  exports.log2 = exports.log1p = exports.log10 = void 0;
15
14
  exports.nearlyEqual = nearlyEqual;
16
15
  exports.normalizeFormatOptions = normalizeFormatOptions;
@@ -40,16 +39,6 @@ function isInteger(value) {
40
39
  return isFinite(value) ? value === Math.round(value) : false;
41
40
  }
42
41
 
43
- /**
44
- * Check if a string contains an integer
45
- * @param {string} str
46
- * @return {boolean} isInteger
47
- */
48
- function isIntegerStr(str) {
49
- // regex matching strings like "123" and "-123"
50
- return /^-?\d+$/.test(str);
51
- }
52
-
53
42
  /**
54
43
  * Ensure the number type is compatible with the provided value.
55
44
  * If not, return 'number' instead.
@@ -69,8 +58,12 @@ function isIntegerStr(str) {
69
58
  * @returns {'number' | 'BigNumber' | 'bigint' | 'Fraction'}
70
59
  */
71
60
  function safeNumberType(numberStr, config) {
72
- if (config.number === 'bigint' && !isIntegerStr(numberStr)) {
73
- return config.numberFallback;
61
+ if (config.number === 'bigint') {
62
+ try {
63
+ BigInt(numberStr);
64
+ } catch (_unused) {
65
+ return config.numberFallback;
66
+ }
74
67
  }
75
68
  return config.number;
76
69
  }
@@ -634,11 +627,6 @@ function digits(value) {
634
627
  .length;
635
628
  }
636
629
 
637
- /**
638
- * Minimum number added to one that makes the result different than one
639
- */
640
- const DBL_EPSILON = exports.DBL_EPSILON = Number.EPSILON || 2.2204460492503130808472633361816E-16;
641
-
642
630
  /**
643
631
  * Compares two floating point numbers.
644
632
  * @param {number} a - First value to compare
@@ -110,16 +110,22 @@ function createSnapshotFromFactories(factories) {
110
110
  const allClasses = {};
111
111
  const allNodeClasses = {};
112
112
  Object.keys(factories).forEach(factoryName => {
113
+ var _factory$meta$formerl, _factory$meta;
113
114
  const factory = factories[factoryName];
114
115
  const name = factory.fn;
115
116
  const isTransformFunction = factory.meta && factory.meta.isTransformFunction;
116
117
  const isClass = !isLowerCase(name[0]) && validateTypeOf(math[name]) === 'function';
117
118
  const dependenciesName = factory.fn + (isTransformFunction ? 'Transform' : '') + 'Dependencies';
119
+ const former = (_factory$meta$formerl = (_factory$meta = factory.meta) === null || _factory$meta === void 0 ? void 0 : _factory$meta.formerly) !== null && _factory$meta$formerl !== void 0 ? _factory$meta$formerl : '';
118
120
  allFactoryFunctions[factoryName] = 'function';
119
121
  allFunctionsConstantsClasses[name] = validateTypeOf(math[name]);
122
+ if (former) {
123
+ allFunctionsConstantsClasses[former] = allFunctionsConstantsClasses[name];
124
+ }
120
125
  allDependencyCollections[dependenciesName] = 'Object';
121
126
  if (isTransformFunction) {
122
127
  allTransformFunctions[name] = 'function';
128
+ if (former) allTransformFunctions[former] = 'function';
123
129
  }
124
130
  if (isClass) {
125
131
  if ((0, _string.endsWith)(name, 'Node')) {
@@ -129,6 +135,7 @@ function createSnapshotFromFactories(factories) {
129
135
  }
130
136
  } else {
131
137
  allFunctionsConstants[name] = validateTypeOf(math[name]);
138
+ if (former) allFunctionsConstants[former] = allFunctionsConstants[name];
132
139
  }
133
140
  });
134
141
  let embeddedDocs = {};
@@ -140,7 +147,7 @@ function createSnapshotFromFactories(factories) {
140
147
  embeddedDocs[name] = 'Object';
141
148
  }
142
149
  });
143
- embeddedDocs = exclude(embeddedDocs, ['equalScalar', 'apply', 'addScalar', 'subtractScalar', 'multiplyScalar', 'print', 'divideScalar', 'parse', 'compile', 'parser', 'chain', 'reviver', 'replacer']);
150
+ embeddedDocs = exclude(embeddedDocs, ['equalScalar', 'addScalar', 'subtractScalar', 'multiplyScalar', 'print', 'divideScalar', 'parse', 'compile', 'parser', 'chain', 'reviver', 'replacer']);
144
151
  const allTypeChecks = {};
145
152
  Object.keys(allIsFunctions).forEach(name => {
146
153
  if (name.indexOf('is') === 0) {
@@ -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.0.1';
7
+ const version = exports.version = '14.2.0';
8
8
  // Note: This file is automatically generated when building math.js.
9
9
  // Changes made in this file will be overwritten.
@@ -217,6 +217,7 @@ export function importFactory(typed, load, math, importedFactories) {
217
217
  * @private
218
218
  */
219
219
  function _importFactory(factory, options) {
220
+ var _factory$meta$formerl, _factory$meta;
220
221
  var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : factory.fn;
221
222
  if (name.includes('.')) {
222
223
  throw new Error('Factory name should not contain a nested path. ' + 'Name: ' + JSON.stringify(name));
@@ -260,28 +261,37 @@ export function importFactory(typed, load, math, importedFactories) {
260
261
  throw new Error('Cannot import "' + name + '": already exists');
261
262
  }
262
263
  };
264
+ var former = (_factory$meta$formerl = (_factory$meta = factory.meta) === null || _factory$meta === void 0 ? void 0 : _factory$meta.formerly) !== null && _factory$meta$formerl !== void 0 ? _factory$meta$formerl : '';
265
+ var needsTransform = isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory);
266
+ var withTransform = math.expression.mathWithTransform;
263
267
 
264
268
  // TODO: add unit test with non-lazy factory
265
269
  if (!factory.meta || factory.meta.lazy !== false) {
266
270
  lazy(namespace, name, resolver);
271
+ if (former) lazy(namespace, former, resolver);
267
272
 
268
273
  // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)
269
274
  if (existing && existingTransform) {
270
275
  _deleteTransform(name);
276
+ if (former) _deleteTransform(former);
271
277
  } else {
272
- if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {
273
- lazy(math.expression.mathWithTransform, name, () => namespace[name]);
278
+ if (needsTransform) {
279
+ lazy(withTransform, name, () => namespace[name]);
280
+ if (former) lazy(withTransform, former, () => namespace[name]);
274
281
  }
275
282
  }
276
283
  } else {
277
284
  namespace[name] = resolver();
285
+ if (former) namespace[former] = namespace[name];
278
286
 
279
287
  // FIXME: remove the `if (existing &&` condition again. Can we make sure subset is loaded before subset.transform? (Name collision, and no dependencies between the two)
280
288
  if (existing && existingTransform) {
281
289
  _deleteTransform(name);
290
+ if (former) _deleteTransform(former);
282
291
  } else {
283
- if (isTransformFunctionFactory(factory) || factoryAllowedInExpressions(factory)) {
284
- lazy(math.expression.mathWithTransform, name, () => namespace[name]);
292
+ if (needsTransform) {
293
+ lazy(withTransform, name, () => namespace[name]);
294
+ if (former) lazy(withTransform, former, () => namespace[name]);
285
295
  }
286
296
  }
287
297
  }
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
6
  import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
7
+ import { bignumberDependencies } from './dependenciesBignumber.generated.js';
7
8
  import { concatDependencies } from './dependenciesConcat.generated.js';
8
9
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
9
10
  import { typedDependencies } from './dependenciesTyped.generated.js';
@@ -11,6 +12,7 @@ import { createLarger } from '../../factoriesAny.js';
11
12
  export var largerDependencies = {
12
13
  DenseMatrixDependencies,
13
14
  SparseMatrixDependencies,
15
+ bignumberDependencies,
14
16
  concatDependencies,
15
17
  matrixDependencies,
16
18
  typedDependencies,
@@ -4,9 +4,9 @@
4
4
  */
5
5
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
6
6
  import { typedDependencies } from './dependenciesTyped.generated.js';
7
- import { createApply } from '../../factoriesNumber.js';
8
- export var applyDependencies = {
7
+ import { createMapSlices } from '../../factoriesAny.js';
8
+ export var mapSlicesDependencies = {
9
9
  isIntegerDependencies,
10
10
  typedDependencies,
11
- createApply
11
+ createMapSlices
12
12
  };
@@ -4,9 +4,9 @@
4
4
  */
5
5
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
6
6
  import { typedDependencies } from './dependenciesTyped.generated.js';
7
- import { createApplyTransform } from '../../factoriesNumber.js';
8
- export var applyTransformDependencies = {
7
+ import { createMapSlicesTransform } from '../../factoriesAny.js';
8
+ export var mapSlicesTransformDependencies = {
9
9
  isIntegerDependencies,
10
10
  typedDependencies,
11
- createApplyTransform
11
+ createMapSlicesTransform
12
12
  };
@@ -8,6 +8,7 @@ import { compareDependencies } from './dependenciesCompare.generated.js';
8
8
  import { divideDependencies } from './dependenciesDivide.generated.js';
9
9
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
10
10
  import { largerDependencies } from './dependenciesLarger.generated.js';
11
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
11
12
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
12
13
  import { partitionSelectDependencies } from './dependenciesPartitionSelect.generated.js';
13
14
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -22,6 +23,7 @@ export var quantileSeqDependencies = {
22
23
  divideDependencies,
23
24
  isIntegerDependencies,
24
25
  largerDependencies,
26
+ mapSlicesDependencies,
25
27
  multiplyDependencies,
26
28
  partitionSelectDependencies,
27
29
  smallerDependencies,
@@ -8,6 +8,7 @@ import { compareDependencies } from './dependenciesCompare.generated.js';
8
8
  import { divideDependencies } from './dependenciesDivide.generated.js';
9
9
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
10
10
  import { largerDependencies } from './dependenciesLarger.generated.js';
11
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
11
12
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
12
13
  import { partitionSelectDependencies } from './dependenciesPartitionSelect.generated.js';
13
14
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -22,6 +23,7 @@ export var quantileSeqTransformDependencies = {
22
23
  divideDependencies,
23
24
  isIntegerDependencies,
24
25
  largerDependencies,
26
+ mapSlicesDependencies,
25
27
  multiplyDependencies,
26
28
  partitionSelectDependencies,
27
29
  smallerDependencies,
@@ -2,9 +2,11 @@
2
2
  * THIS FILE IS AUTO-GENERATED
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
+ import { log2Dependencies } from './dependenciesLog2.generated.js';
5
6
  import { typedDependencies } from './dependenciesTyped.generated.js';
6
7
  import { createRandomInt } from '../../factoriesAny.js';
7
8
  export var randomIntDependencies = {
9
+ log2Dependencies,
8
10
  typedDependencies,
9
11
  createRandomInt
10
12
  };
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { DenseMatrixDependencies } from './dependenciesDenseMatrixClass.generated.js';
6
6
  import { SparseMatrixDependencies } from './dependenciesSparseMatrixClass.generated.js';
7
+ import { bignumberDependencies } from './dependenciesBignumber.generated.js';
7
8
  import { concatDependencies } from './dependenciesConcat.generated.js';
8
9
  import { matrixDependencies } from './dependenciesMatrix.generated.js';
9
10
  import { typedDependencies } from './dependenciesTyped.generated.js';
@@ -11,6 +12,7 @@ import { createSmaller } from '../../factoriesAny.js';
11
12
  export var smallerDependencies = {
12
13
  DenseMatrixDependencies,
13
14
  SparseMatrixDependencies,
15
+ bignumberDependencies,
14
16
  concatDependencies,
15
17
  matrixDependencies,
16
18
  typedDependencies,
@@ -3,18 +3,18 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { addDependencies } from './dependenciesAdd.generated.js';
6
- import { applyDependencies } from './dependenciesApply.generated.js';
7
6
  import { divideDependencies } from './dependenciesDivide.generated.js';
8
7
  import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
8
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
9
9
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
10
10
  import { subtractDependencies } from './dependenciesSubtract.generated.js';
11
11
  import { typedDependencies } from './dependenciesTyped.generated.js';
12
12
  import { createVariance } from '../../factoriesAny.js';
13
13
  export var varianceDependencies = {
14
14
  addDependencies,
15
- applyDependencies,
16
15
  divideDependencies,
17
16
  isNaNDependencies,
17
+ mapSlicesDependencies,
18
18
  multiplyDependencies,
19
19
  subtractDependencies,
20
20
  typedDependencies,
@@ -3,18 +3,18 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { addDependencies } from './dependenciesAdd.generated.js';
6
- import { applyDependencies } from './dependenciesApply.generated.js';
7
6
  import { divideDependencies } from './dependenciesDivide.generated.js';
8
7
  import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
8
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
9
9
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
10
10
  import { subtractDependencies } from './dependenciesSubtract.generated.js';
11
11
  import { typedDependencies } from './dependenciesTyped.generated.js';
12
12
  import { createVarianceTransform } from '../../factoriesAny.js';
13
13
  export var varianceTransformDependencies = {
14
14
  addDependencies,
15
- applyDependencies,
16
15
  divideDependencies,
17
16
  isNaNDependencies,
17
+ mapSlicesDependencies,
18
18
  multiplyDependencies,
19
19
  subtractDependencies,
20
20
  typedDependencies,
@@ -14,8 +14,6 @@ export { addDependencies } from './dependenciesAny/dependenciesAdd.generated.js'
14
14
  export { addScalarDependencies } from './dependenciesAny/dependenciesAddScalar.generated.js';
15
15
  export { andDependencies } from './dependenciesAny/dependenciesAnd.generated.js';
16
16
  export { andTransformDependencies } from './dependenciesAny/dependenciesAndTransform.generated.js';
17
- export { applyDependencies } from './dependenciesAny/dependenciesApply.generated.js';
18
- export { applyTransformDependencies } from './dependenciesAny/dependenciesApplyTransform.generated.js';
19
17
  export { argDependencies } from './dependenciesAny/dependenciesArg.generated.js';
20
18
  export { ArrayNodeDependencies } from './dependenciesAny/dependenciesArrayNode.generated.js';
21
19
  export { asecDependencies } from './dependenciesAny/dependenciesAsec.generated.js';
@@ -193,6 +191,8 @@ export { madDependencies } from './dependenciesAny/dependenciesMad.generated.js'
193
191
  export { magneticConstantDependencies } from './dependenciesAny/dependenciesMagneticConstant.generated.js';
194
192
  export { magneticFluxQuantumDependencies } from './dependenciesAny/dependenciesMagneticFluxQuantum.generated.js';
195
193
  export { mapDependencies } from './dependenciesAny/dependenciesMap.generated.js';
194
+ export { mapSlicesDependencies } from './dependenciesAny/dependenciesMapSlices.generated.js';
195
+ export { mapSlicesTransformDependencies } from './dependenciesAny/dependenciesMapSlicesTransform.generated.js';
196
196
  export { mapTransformDependencies } from './dependenciesAny/dependenciesMapTransform.generated.js';
197
197
  export { matrixDependencies } from './dependenciesAny/dependenciesMatrix.generated.js';
198
198
  export { MatrixDependencies } from './dependenciesAny/dependenciesMatrixClass.generated.js';
@@ -4,9 +4,9 @@
4
4
  */
5
5
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
6
6
  import { typedDependencies } from './dependenciesTyped.generated.js';
7
- import { createApply } from '../../factoriesAny.js';
8
- export var applyDependencies = {
7
+ import { createMapSlices } from '../../factoriesNumber.js';
8
+ export var mapSlicesDependencies = {
9
9
  isIntegerDependencies,
10
10
  typedDependencies,
11
- createApply
11
+ createMapSlices
12
12
  };
@@ -4,9 +4,9 @@
4
4
  */
5
5
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
6
6
  import { typedDependencies } from './dependenciesTyped.generated.js';
7
- import { createApplyTransform } from '../../factoriesAny.js';
8
- export var applyTransformDependencies = {
7
+ import { createMapSlicesTransform } from '../../factoriesNumber.js';
8
+ export var mapSlicesTransformDependencies = {
9
9
  isIntegerDependencies,
10
10
  typedDependencies,
11
- createApplyTransform
11
+ createMapSlicesTransform
12
12
  };
@@ -7,6 +7,7 @@ import { compareDependencies } from './dependenciesCompare.generated.js';
7
7
  import { divideDependencies } from './dependenciesDivide.generated.js';
8
8
  import { isIntegerDependencies } from './dependenciesIsInteger.generated.js';
9
9
  import { largerDependencies } from './dependenciesLarger.generated.js';
10
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
10
11
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
11
12
  import { partitionSelectDependencies } from './dependenciesPartitionSelect.generated.js';
12
13
  import { smallerDependencies } from './dependenciesSmaller.generated.js';
@@ -20,6 +21,7 @@ export var quantileSeqDependencies = {
20
21
  divideDependencies,
21
22
  isIntegerDependencies,
22
23
  largerDependencies,
24
+ mapSlicesDependencies,
23
25
  multiplyDependencies,
24
26
  partitionSelectDependencies,
25
27
  smallerDependencies,
@@ -2,9 +2,11 @@
2
2
  * THIS FILE IS AUTO-GENERATED
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
+ import { log2Dependencies } from './dependenciesLog2.generated.js';
5
6
  import { typedDependencies } from './dependenciesTyped.generated.js';
6
7
  import { createRandomInt } from '../../factoriesNumber.js';
7
8
  export var randomIntDependencies = {
9
+ log2Dependencies,
8
10
  typedDependencies,
9
11
  createRandomInt
10
12
  };
@@ -3,18 +3,18 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { addDependencies } from './dependenciesAdd.generated.js';
6
- import { applyDependencies } from './dependenciesApply.generated.js';
7
6
  import { divideDependencies } from './dependenciesDivide.generated.js';
8
7
  import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
8
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
9
9
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
10
10
  import { subtractDependencies } from './dependenciesSubtract.generated.js';
11
11
  import { typedDependencies } from './dependenciesTyped.generated.js';
12
12
  import { createVariance } from '../../factoriesNumber.js';
13
13
  export var varianceDependencies = {
14
14
  addDependencies,
15
- applyDependencies,
16
15
  divideDependencies,
17
16
  isNaNDependencies,
17
+ mapSlicesDependencies,
18
18
  multiplyDependencies,
19
19
  subtractDependencies,
20
20
  typedDependencies,
@@ -3,18 +3,18 @@
3
3
  * DON'T MAKE CHANGES HERE
4
4
  */
5
5
  import { addDependencies } from './dependenciesAdd.generated.js';
6
- import { applyDependencies } from './dependenciesApply.generated.js';
7
6
  import { divideDependencies } from './dependenciesDivide.generated.js';
8
7
  import { isNaNDependencies } from './dependenciesIsNaN.generated.js';
8
+ import { mapSlicesDependencies } from './dependenciesMapSlices.generated.js';
9
9
  import { multiplyDependencies } from './dependenciesMultiply.generated.js';
10
10
  import { subtractDependencies } from './dependenciesSubtract.generated.js';
11
11
  import { typedDependencies } from './dependenciesTyped.generated.js';
12
12
  import { createVarianceTransform } from '../../factoriesNumber.js';
13
13
  export var varianceTransformDependencies = {
14
14
  addDependencies,
15
- applyDependencies,
16
15
  divideDependencies,
17
16
  isNaNDependencies,
17
+ mapSlicesDependencies,
18
18
  multiplyDependencies,
19
19
  subtractDependencies,
20
20
  typedDependencies,