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
@@ -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))