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
@@ -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, createRandomInt, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitOr, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, 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
  });
@@ -296,10 +301,6 @@ export var pickRandom = /* #__PURE__ */createPickRandom({
296
301
  config,
297
302
  typed
298
303
  });
299
- export var randomInt = /* #__PURE__ */createRandomInt({
300
- config,
301
- typed
302
- });
303
304
  export var rightArithShift = /* #__PURE__ */createRightArithShift({
304
305
  typed
305
306
  });
@@ -321,11 +322,7 @@ export var unaryMinus = /* #__PURE__ */createUnaryMinus({
321
322
  export var acosh = /* #__PURE__ */createAcosh({
322
323
  typed
323
324
  });
324
- export var apply = /* #__PURE__ */createApply({
325
- isInteger,
326
- typed
327
- });
328
- export var asinh = /* #__PURE__ */createAsinh({
325
+ export var atan2 = /* #__PURE__ */createAtan2({
329
326
  typed
330
327
  });
331
328
  export var bitOr = /* #__PURE__ */createBitOr({
@@ -376,6 +373,11 @@ export var partitionSelect = /* #__PURE__ */createPartitionSelect({
376
373
  export var print = /* #__PURE__ */createPrint({
377
374
  typed
378
375
  });
376
+ export var randomInt = /* #__PURE__ */createRandomInt({
377
+ config,
378
+ log2,
379
+ typed
380
+ });
379
381
  export var round = /* #__PURE__ */createRound({
380
382
  typed
381
383
  });
@@ -389,9 +391,9 @@ export var subtractScalar = /* #__PURE__ */createSubtractScalar({
389
391
  export var _true = /* #__PURE__ */createTrue({});
390
392
  export var variance = /* #__PURE__ */createVariance({
391
393
  add,
392
- apply,
393
394
  divide,
394
395
  isNaN,
396
+ mapSlices,
395
397
  multiply,
396
398
  subtract,
397
399
  typed
@@ -415,9 +417,6 @@ export var zeta = /* #__PURE__ */createZeta({
415
417
  export var acsch = /* #__PURE__ */createAcsch({
416
418
  typed
417
419
  });
418
- export var atan2 = /* #__PURE__ */createAtan2({
419
- typed
420
- });
421
420
  export var catalan = /* #__PURE__ */createCatalan({
422
421
  addScalar,
423
422
  combinations,
@@ -489,6 +488,7 @@ export var quantileSeq = /* #__PURE__ */createQuantileSeq({
489
488
  divide,
490
489
  isInteger,
491
490
  larger,
491
+ mapSlices,
492
492
  multiply,
493
493
  partitionSelect,
494
494
  smaller,
@@ -519,6 +519,9 @@ export var stirlingS2 = /* #__PURE__ */createStirlingS2({
519
519
  subtractScalar,
520
520
  typed
521
521
  });
522
+ export var asinh = /* #__PURE__ */createAsinh({
523
+ typed
524
+ });
522
525
  export var ceil = /* #__PURE__ */createCeil({
523
526
  config,
524
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,
@@ -2,7 +2,7 @@ export var signDocs = {
2
2
  name: 'sign',
3
3
  category: 'Arithmetic',
4
4
  syntax: ['sign(x)'],
5
- description: 'Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.',
5
+ description: 'Compute the sign of a value. The sign of a value x is 1 when x>0, -1 when x<0, and 0 when x=0.',
6
6
  examples: ['sign(3.5)', 'sign(-4.2)', 'sign(0)'],
7
7
  seealso: ['abs']
8
8
  };
@@ -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
  },
@@ -1,7 +1,9 @@
1
1
  import { factory } from '../../utils/factory.js';
2
+ import { promoteLogarithm } from '../../utils/bigint.js';
2
3
  import { logNumber } from '../../plain/number/index.js';
3
4
  var name = 'log';
4
5
  var dependencies = ['config', 'typed', 'typeOf', 'divideScalar', 'Complex'];
6
+ var nlg16 = Math.log(16);
5
7
  export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
6
8
  var {
7
9
  typed,
@@ -45,24 +47,29 @@ export var createLog = /* #__PURE__ */factory(name, dependencies, _ref => {
45
47
  * @return {number | BigNumber | Fraction | Complex}
46
48
  * Returns the logarithm of `x`
47
49
  */
50
+ function complexLog(c) {
51
+ return c.log();
52
+ }
53
+ function complexLogNumber(x) {
54
+ return complexLog(new Complex(x, 0));
55
+ }
48
56
  return typed(name, {
49
57
  number: function number(x) {
50
58
  if (x >= 0 || config.predictable) {
51
59
  return logNumber(x);
52
60
  } else {
53
61
  // negative value -> complex value computation
54
- return new Complex(x, 0).log();
62
+ return complexLogNumber(x);
55
63
  }
56
64
  },
57
- Complex: function Complex(x) {
58
- return x.log();
59
- },
65
+ bigint: promoteLogarithm(nlg16, logNumber, config, complexLogNumber),
66
+ Complex: complexLog,
60
67
  BigNumber: function BigNumber(x) {
61
68
  if (!x.isNegative() || config.predictable) {
62
69
  return x.ln();
63
70
  } else {
64
71
  // downgrade to number, return Complex valued result
65
- return new Complex(x.toNumber(), 0).log();
72
+ return complexLogNumber(x.toNumber());
66
73
  }
67
74
  },
68
75
  'any, any': typed.referToSelf(self => (x, base) => {
@@ -1,13 +1,15 @@
1
- import { factory } from '../../utils/factory.js';
2
- import { deepMap } from '../../utils/collection.js';
3
1
  import { log10Number } from '../../plain/number/index.js';
2
+ import { promoteLogarithm } from '../../utils/bigint.js';
3
+ import { deepMap } from '../../utils/collection.js';
4
+ import { factory } from '../../utils/factory.js';
4
5
  var name = 'log10';
5
6
  var dependencies = ['typed', 'config', 'Complex'];
7
+ var log16 = log10Number(16);
6
8
  export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {
7
9
  var {
8
10
  typed,
9
11
  config,
10
- Complex: _Complex
12
+ Complex
11
13
  } = _ref;
12
14
  /**
13
15
  * Calculate the 10-base logarithm of a value. This is the same as calculating `log(x, 10)`.
@@ -34,24 +36,30 @@ export var createLog10 = /* #__PURE__ */factory(name, dependencies, _ref => {
34
36
  * @return {number | BigNumber | Complex | Array | Matrix}
35
37
  * Returns the 10-base logarithm of `x`
36
38
  */
39
+
40
+ function complexLog(c) {
41
+ return c.log().div(Math.LN10);
42
+ }
43
+ function complexLogNumber(x) {
44
+ return complexLog(new Complex(x, 0));
45
+ }
37
46
  return typed(name, {
38
47
  number: function number(x) {
39
48
  if (x >= 0 || config.predictable) {
40
49
  return log10Number(x);
41
50
  } else {
42
51
  // negative value -> complex value computation
43
- return new _Complex(x, 0).log().div(Math.LN10);
52
+ return complexLogNumber(x);
44
53
  }
45
54
  },
46
- Complex: function Complex(x) {
47
- return new _Complex(x).log().div(Math.LN10);
48
- },
55
+ bigint: promoteLogarithm(log16, log10Number, config, complexLogNumber),
56
+ Complex: complexLog,
49
57
  BigNumber: function BigNumber(x) {
50
58
  if (!x.isNegative() || config.predictable) {
51
59
  return x.log();
52
60
  } else {
53
61
  // downgrade to number, return Complex valued result
54
- return new _Complex(x.toNumber(), 0).log().div(Math.LN10);
62
+ return complexLogNumber(x.toNumber());
55
63
  }
56
64
  },
57
65
  'Array | Matrix': typed.referToSelf(self => x => deepMap(x, self))