mathjs 14.1.0 → 14.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. package/HISTORY.md +11 -0
  2. package/lib/browser/math.js +1 -1
  3. package/lib/browser/math.js.LICENSE.txt +2 -2
  4. package/lib/browser/math.js.map +1 -1
  5. package/lib/cjs/core/function/import.js +14 -4
  6. package/lib/cjs/entry/dependenciesAny/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
  7. package/lib/cjs/entry/dependenciesAny/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
  8. package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
  9. package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
  10. package/lib/cjs/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
  11. package/lib/cjs/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
  12. package/lib/cjs/entry/dependenciesAny.generated.js +14 -14
  13. package/lib/cjs/entry/dependenciesNumber/{dependenciesApply.generated.js → dependenciesMapSlices.generated.js} +3 -3
  14. package/lib/cjs/entry/dependenciesNumber/{dependenciesApplyTransform.generated.js → dependenciesMapSlicesTransform.generated.js} +3 -3
  15. package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
  16. package/lib/cjs/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
  17. package/lib/cjs/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
  18. package/lib/cjs/entry/dependenciesNumber.generated.js +14 -14
  19. package/lib/cjs/entry/impureFunctionsAny.generated.js +86 -85
  20. package/lib/cjs/entry/impureFunctionsNumber.generated.js +13 -13
  21. package/lib/cjs/entry/pureFunctionsAny.generated.js +328 -326
  22. package/lib/cjs/entry/pureFunctionsNumber.generated.js +13 -11
  23. package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +2 -0
  24. package/lib/cjs/expression/embeddedDocs/function/matrix/mapSlices.js +17 -0
  25. package/lib/cjs/expression/transform/index.transform.js +2 -2
  26. package/lib/cjs/expression/transform/{apply.transform.js → mapSlices.transform.js} +11 -10
  27. package/lib/cjs/expression/transform/quantileSeq.transform.js +5 -3
  28. package/lib/cjs/expression/transform/variance.transform.js +3 -3
  29. package/lib/cjs/factoriesAny.js +14 -14
  30. package/lib/cjs/factoriesNumber.js +16 -15
  31. package/lib/cjs/function/arithmetic/ceil.js +34 -26
  32. package/lib/cjs/function/arithmetic/fix.js +3 -0
  33. package/lib/cjs/function/arithmetic/floor.js +41 -26
  34. package/lib/cjs/function/arithmetic/round.js +4 -0
  35. package/lib/cjs/function/matrix/ctranspose.js +1 -1
  36. package/lib/cjs/function/matrix/{apply.js → mapSlices.js} +19 -12
  37. package/lib/cjs/function/matrix/matrixFromFunction.js +36 -3
  38. package/lib/cjs/function/matrix/range.js +54 -5
  39. package/lib/cjs/function/statistics/quantileSeq.js +4 -9
  40. package/lib/cjs/function/statistics/variance.js +3 -3
  41. package/lib/cjs/function/string/hex.js +1 -1
  42. package/lib/cjs/function/trigonometry/acoth.js +1 -1
  43. package/lib/cjs/function/trigonometry/acsc.js +1 -1
  44. package/lib/cjs/function/trigonometry/asin.js +1 -1
  45. package/lib/cjs/function/trigonometry/atan2.js +2 -1
  46. package/lib/cjs/function/trigonometry/cos.js +1 -1
  47. package/lib/cjs/function/trigonometry/sin.js +1 -1
  48. package/lib/cjs/header.js +2 -2
  49. package/lib/cjs/type/matrix/MatrixIndex.js +6 -3
  50. package/lib/cjs/type/matrix/Range.js +15 -8
  51. package/lib/cjs/utils/factory.js +5 -2
  52. package/lib/cjs/utils/snapshot.js +8 -1
  53. package/lib/cjs/version.js +1 -1
  54. package/lib/esm/core/function/import.js +14 -4
  55. package/lib/esm/entry/{dependenciesNumber/dependenciesApply.generated.js → dependenciesAny/dependenciesMapSlices.generated.js} +3 -3
  56. package/lib/esm/entry/{dependenciesNumber/dependenciesApplyTransform.generated.js → dependenciesAny/dependenciesMapSlicesTransform.generated.js} +3 -3
  57. package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +2 -0
  58. package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +2 -0
  59. package/lib/esm/entry/dependenciesAny/dependenciesVariance.generated.js +2 -2
  60. package/lib/esm/entry/dependenciesAny/dependenciesVarianceTransform.generated.js +2 -2
  61. package/lib/esm/entry/dependenciesAny.generated.js +2 -2
  62. package/lib/esm/entry/{dependenciesAny/dependenciesApply.generated.js → dependenciesNumber/dependenciesMapSlices.generated.js} +3 -3
  63. package/lib/esm/entry/{dependenciesAny/dependenciesApplyTransform.generated.js → dependenciesNumber/dependenciesMapSlicesTransform.generated.js} +3 -3
  64. package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +2 -0
  65. package/lib/esm/entry/dependenciesNumber/dependenciesVariance.generated.js +2 -2
  66. package/lib/esm/entry/dependenciesNumber/dependenciesVarianceTransform.generated.js +2 -2
  67. package/lib/esm/entry/dependenciesNumber.generated.js +2 -2
  68. package/lib/esm/entry/impureFunctionsAny.generated.js +88 -87
  69. package/lib/esm/entry/impureFunctionsNumber.generated.js +15 -15
  70. package/lib/esm/entry/pureFunctionsAny.generated.js +326 -324
  71. package/lib/esm/entry/pureFunctionsNumber.generated.js +12 -10
  72. package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
  73. package/lib/esm/expression/embeddedDocs/function/matrix/mapSlices.js +11 -0
  74. package/lib/esm/expression/transform/index.transform.js +3 -3
  75. package/lib/esm/expression/transform/mapSlices.transform.js +47 -0
  76. package/lib/esm/expression/transform/quantileSeq.transform.js +5 -3
  77. package/lib/esm/expression/transform/variance.transform.js +3 -3
  78. package/lib/esm/factoriesAny.js +2 -2
  79. package/lib/esm/factoriesNumber.js +2 -2
  80. package/lib/esm/function/arithmetic/ceil.js +35 -27
  81. package/lib/esm/function/arithmetic/fix.js +3 -0
  82. package/lib/esm/function/arithmetic/floor.js +42 -27
  83. package/lib/esm/function/arithmetic/round.js +4 -0
  84. package/lib/esm/function/matrix/ctranspose.js +1 -1
  85. package/lib/esm/function/matrix/{apply.js → mapSlices.js} +18 -11
  86. package/lib/esm/function/matrix/matrixFromFunction.js +36 -3
  87. package/lib/esm/function/matrix/range.js +54 -5
  88. package/lib/esm/function/statistics/quantileSeq.js +4 -9
  89. package/lib/esm/function/statistics/variance.js +3 -3
  90. package/lib/esm/function/string/hex.js +1 -1
  91. package/lib/esm/function/trigonometry/acoth.js +1 -1
  92. package/lib/esm/function/trigonometry/acsc.js +1 -1
  93. package/lib/esm/function/trigonometry/asin.js +1 -1
  94. package/lib/esm/function/trigonometry/atan2.js +2 -1
  95. package/lib/esm/function/trigonometry/cos.js +1 -1
  96. package/lib/esm/function/trigonometry/sin.js +1 -1
  97. package/lib/esm/type/matrix/MatrixIndex.js +6 -3
  98. package/lib/esm/type/matrix/Range.js +16 -9
  99. package/lib/esm/utils/factory.js +5 -2
  100. package/lib/esm/utils/snapshot.js +8 -1
  101. package/lib/esm/version.js +1 -1
  102. package/package.json +1 -1
  103. package/types/index.d.ts +75 -12
  104. package/lib/esm/expression/transform/apply.transform.js +0 -44
@@ -5,7 +5,7 @@
5
5
  import { config } from './configReadonly.js';
6
6
  import { createE, createFalse, createIndex, createInfinity, createLN10, createLOG10E, createMatrix, createNaN, createNull, createPhi, createRangeClass, createReplacer, createResultSet, createSQRT1_2,
7
7
  // eslint-disable-line camelcase
8
- createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBigint, createBitNot, createBitXor, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitAnd, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitOr, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createRandomInt, createRound, createSmaller, createSubtractScalar, createTrue, createVariance, createZeta, createAcsch, createAtan2, createCatalan, createCompareNatural, createComposition, createCumSum, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createQuantileSeq, createSign, createStd, createStirlingS2, createCeil, createDeepEqual, createFix, createIsPrime, createNumeric, createProd, createBellNumbers, createGcd, createMad, createRange, createSum, createCorr, createMax, createMin } from '../factoriesNumber.js';
8
+ createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBigint, createBitNot, createBitXor, createBoolean, createCbrt, createCombinations, createCompare, createCompareText, createCos, createCot, createCsc, createCube, createDivide, createEqualScalar, createErf, createExp, createFilter, createForEach, createFormat, createGamma, createIsInteger, createIsNegative, createIsPositive, createIsZero, createLOG2E, createLargerEq, createLeftShift, createLog, createLog1p, createMap, createMean, createMod, createMultiply, createNot, createNumber, createOr, createPi, createPow, createRandom, createRightLogShift, createSQRT2, createSech, createSin, createSize, createSmallerEq, createSquare, createString, createSubtract, createTanh, createTypeOf, createUnequal, createXgcd, createAcoth, createAddScalar, createAsech, createBitAnd, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMapSlices, createMultiplyScalar, createNthRoot, createPickRandom, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createAtan2, createBitOr, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createRandomInt, createRound, createSmaller, createSubtractScalar, createTrue, createVariance, createZeta, createAcsch, createCatalan, createCompareNatural, createComposition, createCumSum, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createQuantileSeq, createSign, createStd, createStirlingS2, createAsinh, createCeil, createDeepEqual, createFix, createIsPrime, createNumeric, createProd, createBellNumbers, createGcd, createMad, createRange, createSum, createCorr, createMax, createMin } from '../factoriesNumber.js';
9
9
  export var e = /* #__PURE__ */createE({
10
10
  config
11
11
  });
@@ -286,6 +286,11 @@ export var lcm = /* #__PURE__ */createLcm({
286
286
  export var log10 = /* #__PURE__ */createLog10({
287
287
  typed
288
288
  });
289
+ export var mapSlices = /* #__PURE__ */createMapSlices({
290
+ isInteger,
291
+ typed
292
+ });
293
+ export var apply = mapSlices;
289
294
  export var multiplyScalar = /* #__PURE__ */createMultiplyScalar({
290
295
  typed
291
296
  });
@@ -317,11 +322,7 @@ export var unaryMinus = /* #__PURE__ */createUnaryMinus({
317
322
  export var acosh = /* #__PURE__ */createAcosh({
318
323
  typed
319
324
  });
320
- export var apply = /* #__PURE__ */createApply({
321
- isInteger,
322
- typed
323
- });
324
- export var asinh = /* #__PURE__ */createAsinh({
325
+ export var atan2 = /* #__PURE__ */createAtan2({
325
326
  typed
326
327
  });
327
328
  export var bitOr = /* #__PURE__ */createBitOr({
@@ -390,9 +391,9 @@ export var subtractScalar = /* #__PURE__ */createSubtractScalar({
390
391
  export var _true = /* #__PURE__ */createTrue({});
391
392
  export var variance = /* #__PURE__ */createVariance({
392
393
  add,
393
- apply,
394
394
  divide,
395
395
  isNaN,
396
+ mapSlices,
396
397
  multiply,
397
398
  subtract,
398
399
  typed
@@ -416,9 +417,6 @@ export var zeta = /* #__PURE__ */createZeta({
416
417
  export var acsch = /* #__PURE__ */createAcsch({
417
418
  typed
418
419
  });
419
- export var atan2 = /* #__PURE__ */createAtan2({
420
- typed
421
- });
422
420
  export var catalan = /* #__PURE__ */createCatalan({
423
421
  addScalar,
424
422
  combinations,
@@ -490,6 +488,7 @@ export var quantileSeq = /* #__PURE__ */createQuantileSeq({
490
488
  divide,
491
489
  isInteger,
492
490
  larger,
491
+ mapSlices,
493
492
  multiply,
494
493
  partitionSelect,
495
494
  smaller,
@@ -520,6 +519,9 @@ export var stirlingS2 = /* #__PURE__ */createStirlingS2({
520
519
  subtractScalar,
521
520
  typed
522
521
  });
522
+ export var asinh = /* #__PURE__ */createAsinh({
523
+ typed
524
+ });
523
525
  export var ceil = /* #__PURE__ */createCeil({
524
526
  config,
525
527
  round,
@@ -111,6 +111,7 @@ import { andDocs } from './function/logical/and.js';
111
111
  import { notDocs } from './function/logical/not.js';
112
112
  import { orDocs } from './function/logical/or.js';
113
113
  import { xorDocs } from './function/logical/xor.js';
114
+ import { mapSlicesDocs } from './function/matrix/mapSlices.js';
114
115
  import { columnDocs } from './function/matrix/column.js';
115
116
  import { concatDocs } from './function/matrix/concat.js';
116
117
  import { countDocs } from './function/matrix/count.js';
@@ -572,6 +573,7 @@ export var embeddedDocs = {
572
573
  or: orDocs,
573
574
  xor: xorDocs,
574
575
  // functions - matrix
576
+ mapSlices: mapSlicesDocs,
575
577
  concat: concatDocs,
576
578
  count: countDocs,
577
579
  cross: crossDocs,
@@ -0,0 +1,11 @@
1
+ export var mapSlicesDocs = {
2
+ name: 'mapSlices',
3
+ category: 'Matrix',
4
+ syntax: ['mapSlices(A, dim, callback)'],
5
+ description: 'Generate a matrix one dimension less than A by applying callback to ' + 'each slice of A along dimension dim.',
6
+ examples: ['A = [[1, 2], [3, 4]]', 'mapSlices(A, 1, sum)',
7
+ // returns [4, 6]
8
+ 'mapSlices(A, 2, product)' // returns [2, 12]
9
+ ],
10
+ seealso: ['map', 'forEach']
11
+ };
@@ -1,4 +1,4 @@
1
- import { isArray, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';
1
+ import { isArray, isBigInt, isBigNumber, isMatrix, isNumber, isRange } from '../../utils/is.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  var name = 'index';
4
4
  var dependencies = ['Index', 'getMatrixDataType'];
@@ -32,14 +32,14 @@ export var createIndexTransform = /* #__PURE__ */factory(name, dependencies, _re
32
32
  return v - 1;
33
33
  });
34
34
  }
35
- } else if (isNumber(arg)) {
35
+ } else if (isNumber(arg) || isBigInt(arg)) {
36
36
  arg--;
37
37
  } else if (isBigNumber(arg)) {
38
38
  arg = arg.toNumber() - 1;
39
39
  } else if (typeof arg === 'string') {
40
40
  // leave as is
41
41
  } else {
42
- throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');
42
+ throw new TypeError('Dimension must be an Array, Matrix, number, bigint, string, or Range');
43
43
  }
44
44
  args[i] = arg;
45
45
  }
@@ -0,0 +1,47 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
+ import { errorTransform } from './utils/errorTransform.js';
5
+ import { factory } from '../../utils/factory.js';
6
+ import { createMapSlices } from '../../function/matrix/mapSlices.js';
7
+ import { isBigNumber, isNumber } from '../../utils/is.js';
8
+ var name = 'mapSlices';
9
+ var dependencies = ['typed', 'isInteger'];
10
+
11
+ /**
12
+ * Attach a transform function to math.mapSlices
13
+ * Adds a property transform containing the transform function.
14
+ *
15
+ * This transform changed the last `dim` parameter of function mapSlices
16
+ * from one-based to zero based
17
+ */
18
+ export var createMapSlicesTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
19
+ var {
20
+ typed,
21
+ isInteger
22
+ } = _ref;
23
+ var mapSlices = createMapSlices({
24
+ typed,
25
+ isInteger
26
+ });
27
+
28
+ // @see: comment of concat itself
29
+ return typed('mapSlices', {
30
+ '...any': function any(args) {
31
+ // change dim from one-based to zero-based
32
+ var dim = args[1];
33
+ if (isNumber(dim)) {
34
+ args[1] = dim - 1;
35
+ } else if (isBigNumber(dim)) {
36
+ args[1] = dim.minus(1);
37
+ }
38
+ try {
39
+ return mapSlices.apply(null, args);
40
+ } catch (err) {
41
+ throw errorTransform(err);
42
+ }
43
+ }
44
+ });
45
+ }, _objectSpread({
46
+ isTransformFunction: true
47
+ }, createMapSlices.meta));
@@ -2,7 +2,7 @@ import { factory } from '../../utils/factory.js';
2
2
  import { createQuantileSeq } from '../../function/statistics/quantileSeq.js';
3
3
  import { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';
4
4
  var name = 'quantileSeq';
5
- var dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];
5
+ var dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger', 'mapSlices'];
6
6
 
7
7
  /**
8
8
  * Attach a transform function to math.quantileSeq
@@ -24,7 +24,8 @@ export var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencie
24
24
  isInteger,
25
25
  smaller,
26
26
  smallerEq,
27
- larger
27
+ larger,
28
+ mapSlices
28
29
  } = _ref;
29
30
  var quantileSeq = createQuantileSeq({
30
31
  typed,
@@ -38,7 +39,8 @@ export var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencie
38
39
  isInteger,
39
40
  smaller,
40
41
  smallerEq,
41
- larger
42
+ larger,
43
+ mapSlices
42
44
  });
43
45
  return typed('quantileSeq', {
44
46
  'Array | Matrix, number | BigNumber': quantileSeq,
@@ -3,7 +3,7 @@ import { errorTransform } from './utils/errorTransform.js';
3
3
  import { createVariance } from '../../function/statistics/variance.js';
4
4
  import { lastDimToZeroBase } from './utils/lastDimToZeroBase.js';
5
5
  var name = 'variance';
6
- var dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];
6
+ var dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'mapSlices', 'isNaN'];
7
7
 
8
8
  /**
9
9
  * Attach a transform function to math.var
@@ -19,7 +19,7 @@ export var createVarianceTransform = /* #__PURE__ */factory(name, dependencies,
19
19
  subtract,
20
20
  multiply,
21
21
  divide,
22
- apply,
22
+ mapSlices,
23
23
  isNaN
24
24
  } = _ref;
25
25
  var variance = createVariance({
@@ -28,7 +28,7 @@ export var createVarianceTransform = /* #__PURE__ */factory(name, dependencies,
28
28
  subtract,
29
29
  multiply,
30
30
  divide,
31
- apply,
31
+ mapSlices,
32
32
  isNaN
33
33
  });
34
34
  return typed(name, {
@@ -32,7 +32,7 @@ export { createSplitUnit } from './type/unit/function/splitUnit.js';
32
32
  export { createUnaryMinus } from './function/arithmetic/unaryMinus.js';
33
33
  export { createUnaryPlus } from './function/arithmetic/unaryPlus.js';
34
34
  export { createAbs } from './function/arithmetic/abs.js';
35
- export { createApply } from './function/matrix/apply.js';
35
+ export { createMapSlices } from './function/matrix/mapSlices.js';
36
36
  export { createAddScalar } from './function/arithmetic/addScalar.js';
37
37
  export { createSubtractScalar } from './function/arithmetic/subtractScalar.js';
38
38
  export { createCbrt } from './function/arithmetic/cbrt.js';
@@ -271,7 +271,7 @@ export { createE, createUppercaseE, createFalse, createI, createInfinity, create
271
271
  // eslint-disable-line camelcase
272
272
  createSQRT2, createTau, createTrue, createVersion } from './constants.js';
273
273
  export { createAtomicMass, createAvogadro, createBohrMagneton, createBohrRadius, createBoltzmann, createClassicalElectronRadius, createConductanceQuantum, createCoulomb, createDeuteronMass, createEfimovFactor, createElectricConstant, createElectronMass, createElementaryCharge, createFaraday, createFermiCoupling, createFineStructure, createFirstRadiation, createGasConstant, createGravitationConstant, createGravity, createHartreeEnergy, createInverseConductanceQuantum, createKlitzing, createLoschmidt, createMagneticConstant, createMagneticFluxQuantum, createMolarMass, createMolarMassC12, createMolarPlanckConstant, createMolarVolume, createNeutronMass, createNuclearMagneton, createPlanckCharge, createPlanckConstant, createPlanckLength, createPlanckMass, createPlanckTemperature, createPlanckTime, createProtonMass, createQuantumOfCirculation, createReducedPlanckConstant, createRydberg, createSackurTetrode, createSecondRadiation, createSpeedOfLight, createStefanBoltzmann, createThomsonCrossSection, createVacuumImpedance, createWeakMixingAngle, createWienDisplacement } from './type/unit/physicalConstants.js';
274
- export { createApplyTransform } from './expression/transform/apply.transform.js';
274
+ export { createMapSlicesTransform } from './expression/transform/mapSlices.transform.js';
275
275
  export { createColumnTransform } from './expression/transform/column.transform.js';
276
276
  export { createFilterTransform } from './expression/transform/filter.transform.js';
277
277
  export { createForEachTransform } from './expression/transform/forEach.transform.js';
@@ -121,7 +121,7 @@ export var createOr = /* #__PURE__ */createNumberFactory('or', orNumber);
121
121
  export var createXor = /* #__PURE__ */createNumberFactory('xor', xorNumber);
122
122
 
123
123
  // matrix
124
- export { createApply } from './function/matrix/apply.js';
124
+ export { createMapSlices } from './function/matrix/mapSlices.js';
125
125
  export { createFilter } from './function/matrix/filter.js';
126
126
  export { createForEach } from './function/matrix/forEach.js';
127
127
  export { createMap } from './function/matrix/map.js';
@@ -211,7 +211,7 @@ export var createTan = /* #__PURE__ */createNumberFactory('tan', tanNumber);
211
211
  export var createTanh = /* #__PURE__ */createNumberFactory('tanh', tanhNumber);
212
212
 
213
213
  // transforms
214
- export { createApplyTransform } from './expression/transform/apply.transform.js';
214
+ export { createMapSlicesTransform } from './expression/transform/mapSlices.transform.js';
215
215
  export { createFilterTransform } from './expression/transform/filter.transform.js';
216
216
  export { createForEachTransform } from './expression/transform/forEach.transform.js';
217
217
  export { createMapTransform } from './expression/transform/map.transform.js';
@@ -1,36 +1,41 @@
1
1
  import Decimal from 'decimal.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  import { deepMap } from '../../utils/collection.js';
4
- import { nearlyEqual } from '../../utils/number.js';
4
+ import { isInteger, nearlyEqual } from '../../utils/number.js';
5
5
  import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
6
6
  import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
7
7
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
8
8
  import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
9
9
  var name = 'ceil';
10
10
  var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
11
+ var bigTen = new Decimal(10);
11
12
  export var createCeilNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
12
13
  var {
13
14
  typed,
14
15
  config,
15
16
  round
16
17
  } = _ref;
18
+ function _ceilNumber(x) {
19
+ // See ./floor.js _floorNumber for rationale here
20
+ var c = Math.ceil(x);
21
+ var r = round(x);
22
+ if (c === r) return c;
23
+ if (nearlyEqual(x, r, config.relTol, config.absTol) && !nearlyEqual(x, c, config.relTol, config.absTol)) {
24
+ return r;
25
+ }
26
+ return c;
27
+ }
17
28
  return typed(name, {
18
- number: function number(x) {
19
- if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {
20
- return round(x);
21
- } else {
22
- return Math.ceil(x);
23
- }
24
- },
29
+ number: _ceilNumber,
25
30
  'number, number': function number_number(x, n) {
26
- if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
27
- return round(x, n);
28
- } else {
29
- var [number, exponent] = "".concat(x, "e").split('e');
30
- var result = Math.ceil(Number("".concat(number, "e").concat(Number(exponent) + n)));
31
- [number, exponent] = "".concat(result, "e").split('e');
32
- return Number("".concat(number, "e").concat(Number(exponent) - n));
31
+ if (!isInteger(n)) {
32
+ throw new RangeError('number of decimals in function ceil must be an integer');
33
+ }
34
+ if (n < 0 || n > 15) {
35
+ throw new RangeError('number of decimals in ceil number must be in range 0-15');
33
36
  }
37
+ var shift = 10 ** n;
38
+ return _ceilNumber(x * shift) / shift;
34
39
  }
35
40
  });
36
41
  });
@@ -60,6 +65,15 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
60
65
  config,
61
66
  round
62
67
  });
68
+ function _bigCeil(x) {
69
+ // see ./floor.js _floorNumber for rationale
70
+ var bne = (a, b) => bigNearlyEqual(a, b, config.relTol, config.absTol);
71
+ var c = x.ceil();
72
+ var r = round(x);
73
+ if (c.eq(r)) return c;
74
+ if (bne(x, r) && !bne(x, c)) return r;
75
+ return c;
76
+ }
63
77
  /**
64
78
  * Round a value towards plus infinity
65
79
  * If `x` is complex, both real and imaginary part are rounded towards plus infinity.
@@ -118,20 +132,14 @@ export var createCeil = /* #__PURE__ */factory(name, dependencies, _ref2 => {
118
132
  'Complex, BigNumber': function Complex_BigNumber(x, n) {
119
133
  return x.ceil(n.toNumber());
120
134
  },
121
- BigNumber: function BigNumber(x) {
122
- if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {
123
- return round(x);
124
- } else {
125
- return x.ceil();
126
- }
127
- },
135
+ BigNumber: _bigCeil,
128
136
  'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
129
- if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
130
- return round(x, n);
131
- } else {
132
- return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_CEIL);
133
- }
137
+ var shift = bigTen.pow(n);
138
+ return _bigCeil(x.mul(shift)).div(shift);
134
139
  },
140
+ bigint: b => b,
141
+ 'bigint, number': (b, _dummy) => b,
142
+ 'bigint, BigNumber': (b, _dummy) => b,
135
143
  Fraction: function Fraction(x) {
136
144
  return x.ceil();
137
145
  },
@@ -106,6 +106,9 @@ export var createFix = /* #__PURE__ */factory(name, dependencies, _ref2 => {
106
106
  'BigNumber, number | BigNumber': function BigNumber_number__BigNumber(x, n) {
107
107
  return x.isNegative() ? ceil(x, n) : floor(x, n);
108
108
  },
109
+ bigint: b => b,
110
+ 'bigint, number': (b, _dummy) => b,
111
+ 'bigint, BigNumber': (b, _dummy) => b,
109
112
  Fraction: function Fraction(x) {
110
113
  return x.s < 0n ? x.ceil() : x.floor();
111
114
  },
@@ -1,36 +1,48 @@
1
1
  import Decimal from 'decimal.js';
2
2
  import { factory } from '../../utils/factory.js';
3
3
  import { deepMap } from '../../utils/collection.js';
4
- import { nearlyEqual } from '../../utils/number.js';
4
+ import { isInteger, nearlyEqual } from '../../utils/number.js';
5
5
  import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
6
6
  import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
7
7
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
8
8
  import { createMatAlgo14xDs } from '../../type/matrix/utils/matAlgo14xDs.js';
9
9
  var name = 'floor';
10
10
  var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
11
+ var bigTen = new Decimal(10);
11
12
  export var createFloorNumber = /* #__PURE__ */factory(name, ['typed', 'config', 'round'], _ref => {
12
13
  var {
13
14
  typed,
14
15
  config,
15
16
  round
16
17
  } = _ref;
18
+ function _floorNumber(x) {
19
+ // First, if the floor and the round are identical we can be
20
+ // quite comfortable that is the best answer:
21
+ var f = Math.floor(x);
22
+ var r = round(x);
23
+ if (f === r) return f;
24
+ // OK, they are different. If x is truly distinct from f but
25
+ // appears indistinguishable from r, presume it really is just
26
+ // the integer r with rounding/computation error, and return that
27
+ if (nearlyEqual(x, r, config.relTol, config.absTol) && !nearlyEqual(x, f, config.relTol, config.absTol)) {
28
+ return r;
29
+ }
30
+ // Otherwise (x distinct from both r and f, or indistinguishable from
31
+ // both r and f) may as well just return f, as that's the best
32
+ // candidate we can discern:
33
+ return f;
34
+ }
17
35
  return typed(name, {
18
- number: function number(x) {
19
- if (nearlyEqual(x, round(x), config.relTol, config.absTol)) {
20
- return round(x);
21
- } else {
22
- return Math.floor(x);
23
- }
24
- },
36
+ number: _floorNumber,
25
37
  'number, number': function number_number(x, n) {
26
- if (nearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
27
- return round(x, n);
28
- } else {
29
- var [number, exponent] = "".concat(x, "e").split('e');
30
- var result = Math.floor(Number("".concat(number, "e").concat(Number(exponent) + n)));
31
- [number, exponent] = "".concat(result, "e").split('e');
32
- return Number("".concat(number, "e").concat(Number(exponent) - n));
38
+ if (!isInteger(n)) {
39
+ throw new RangeError('number of decimals in function floor must be an integer');
40
+ }
41
+ if (n < 0 || n > 15) {
42
+ throw new RangeError('number of decimals in floor number must be in range 0 - 15');
33
43
  }
44
+ var shift = 10 ** n;
45
+ return _floorNumber(x * shift) / shift;
34
46
  }
35
47
  });
36
48
  });
@@ -60,6 +72,15 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
60
72
  config,
61
73
  round
62
74
  });
75
+ function _bigFloor(x) {
76
+ // see _floorNumber above for rationale
77
+ var bne = (a, b) => bigNearlyEqual(a, b, config.relTol, config.absTol);
78
+ var f = x.floor();
79
+ var r = round(x);
80
+ if (f.eq(r)) return f;
81
+ if (bne(x, r) && !bne(x, f)) return r;
82
+ return f;
83
+ }
63
84
  /**
64
85
  * Round a value towards minus infinity.
65
86
  * For matrices, the function is evaluated element wise.
@@ -121,20 +142,14 @@ export var createFloor = /* #__PURE__ */factory(name, dependencies, _ref2 => {
121
142
  'Complex, BigNumber': function Complex_BigNumber(x, n) {
122
143
  return x.floor(n.toNumber());
123
144
  },
124
- BigNumber: function BigNumber(x) {
125
- if (bigNearlyEqual(x, round(x), config.relTol, config.absTol)) {
126
- return round(x);
127
- } else {
128
- return x.floor();
129
- }
130
- },
145
+ BigNumber: _bigFloor,
131
146
  'BigNumber, BigNumber': function BigNumber_BigNumber(x, n) {
132
- if (bigNearlyEqual(x, round(x, n), config.relTol, config.absTol)) {
133
- return round(x, n);
134
- } else {
135
- return x.toDecimalPlaces(n.toNumber(), Decimal.ROUND_FLOOR);
136
- }
147
+ var shift = bigTen.pow(n);
148
+ return _bigFloor(x.mul(shift)).div(shift);
137
149
  },
150
+ bigint: b => b,
151
+ 'bigint, number': (b, _dummy) => b,
152
+ 'bigint, BigNumber': (b, _dummy) => b,
138
153
  Fraction: function Fraction(x) {
139
154
  return x.floor();
140
155
  },
@@ -137,6 +137,10 @@ export var createRound = /* #__PURE__ */factory(name, dependencies, _ref => {
137
137
  var xSelected = bigNearlyEqual(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
138
138
  return xSelected.toDecimalPlaces(n.toNumber());
139
139
  },
140
+ // bigints can't be rounded
141
+ bigint: b => b,
142
+ 'bigint, number': (b, _dummy) => b,
143
+ 'bigint, BigNumber': (b, _dummy) => b,
140
144
  Fraction: function Fraction(x) {
141
145
  return x.round();
142
146
  },
@@ -20,7 +20,7 @@ export var createCtranspose = /* #__PURE__ */factory(name, dependencies, _ref =>
20
20
  * Examples:
21
21
  *
22
22
  * const A = [[1, 2, 3], [4, 5, math.complex(6,7)]]
23
- * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:7}]]
23
+ * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:-7}]]
24
24
  *
25
25
  * See also:
26
26
  *
@@ -2,9 +2,9 @@ import { factory } from '../../utils/factory.js';
2
2
  import { arraySize } from '../../utils/array.js';
3
3
  import { isMatrix } from '../../utils/is.js';
4
4
  import { IndexError } from '../../error/IndexError.js';
5
- var name = 'apply';
5
+ var name = 'mapSlices';
6
6
  var dependencies = ['typed', 'isInteger'];
7
- export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
7
+ export var createMapSlices = /* #__PURE__ */factory(name, dependencies, _ref => {
8
8
  var {
9
9
  typed,
10
10
  isInteger
@@ -16,7 +16,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
16
16
  *
17
17
  * Syntax:
18
18
  *
19
- * math.apply(A, dim, callback)
19
+ * math.mapSlices(A, dim, callback)
20
20
  *
21
21
  * Where:
22
22
  *
@@ -27,19 +27,24 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
27
27
  * const A = [[1, 2], [3, 4]]
28
28
  * const sum = math.sum
29
29
  *
30
- * math.apply(A, 0, sum) // returns [4, 6]
31
- * math.apply(A, 1, sum) // returns [3, 7]
30
+ * math.mapSlices(A, 0, sum) // returns [4, 6]
31
+ * math.mapSlices(A, 1, sum) // returns [3, 7]
32
32
  *
33
33
  * See also:
34
34
  *
35
35
  * map, filter, forEach
36
36
  *
37
+ * Note:
38
+ *
39
+ * `mapSlices()` is also currently available via its deprecated
40
+ * synonym `apply()`.
41
+ *
37
42
  * @param {Array | Matrix} array The input Matrix
38
43
  * @param {number} dim The dimension along which the callback is applied
39
44
  * @param {Function} callback The callback function that is applied. This Function
40
45
  * should take an array or 1-d matrix as an input and
41
46
  * return a number.
42
- * @return {Array | Matrix} res The residual matrix with the function applied over some dimension.
47
+ * @return {Array | Matrix} res The residual matrix with the function mapped on the slices over some dimension.
43
48
  */
44
49
  return typed(name, {
45
50
  'Array | Matrix, number | BigNumber, function': function Array__Matrix_number__BigNumber_function(mat, dim, callback) {
@@ -51,12 +56,14 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
51
56
  throw new IndexError(dim, size.length);
52
57
  }
53
58
  if (isMatrix(mat)) {
54
- return mat.create(_apply(mat.valueOf(), dim, callback), mat.datatype());
59
+ return mat.create(_mapSlices(mat.valueOf(), dim, callback), mat.datatype());
55
60
  } else {
56
- return _apply(mat, dim, callback);
61
+ return _mapSlices(mat, dim, callback);
57
62
  }
58
63
  }
59
64
  });
65
+ }, {
66
+ formerly: 'apply'
60
67
  });
61
68
 
62
69
  /**
@@ -67,7 +74,7 @@ export var createApply = /* #__PURE__ */factory(name, dependencies, _ref => {
67
74
  * @returns {Array} ret
68
75
  * @private
69
76
  */
70
- function _apply(mat, dim, callback) {
77
+ function _mapSlices(mat, dim, callback) {
71
78
  var i, ret, tran;
72
79
  if (dim <= 0) {
73
80
  if (!Array.isArray(mat[0])) {
@@ -76,14 +83,14 @@ function _apply(mat, dim, callback) {
76
83
  tran = _switch(mat);
77
84
  ret = [];
78
85
  for (i = 0; i < tran.length; i++) {
79
- ret[i] = _apply(tran[i], dim - 1, callback);
86
+ ret[i] = _mapSlices(tran[i], dim - 1, callback);
80
87
  }
81
88
  return ret;
82
89
  }
83
90
  } else {
84
91
  ret = [];
85
92
  for (i = 0; i < mat.length; i++) {
86
- ret[i] = _apply(mat[i], dim - 1, callback);
93
+ ret[i] = _mapSlices(mat[i], dim - 1, callback);
87
94
  }
88
95
  return ret;
89
96
  }