mathjs 14.0.1 → 14.2.0

Sign up to get free protection for your applications and to get access to all the features.
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,