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
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.median = exports.mean = exports.max = exports.matrix = exports.map = exports.mad = exports.log2 = exports.log1p = exports.log10 = exports.log = exports.lgamma = exports.leftShift = exports.lcm = exports.largerEq = exports.larger = exports.isZero = exports.isPrime = exports.isPositive = exports.isNumeric = exports.isNegative = exports.isNaN = exports.isInteger = exports.index = exports.hypot = exports.hasNumericValue = exports.gcd = exports.gamma = exports.format = exports.forEach = exports.floor = exports.fix = exports.filter = exports.factorial = exports.expm1 = exports.exp = exports.erf = exports.equalText = exports.equalScalar = exports.equal = exports.e = exports.divideScalar = exports.divide = exports.deepEqual = exports.cumsum = exports.cube = exports.csch = exports.csc = exports.coth = exports.cot = exports.cosh = exports.cos = exports.corr = exports.composition = exports.compareText = exports.compareNatural = exports.compare = exports.combinationsWithRep = exports.combinations = exports.clone = exports.ceil = exports.cbrt = exports.catalan = exports.boolean = exports.bitXor = exports.bitOr = exports.bitNot = exports.bitAnd = exports.bigint = exports.bellNumbers = exports.atanh = exports.atan2 = exports.atan = exports.asinh = exports.asin = exports.asech = exports.asec = exports.apply = exports.and = exports.addScalar = exports.add = exports.acsch = exports.acsc = exports.acoth = exports.acot = exports.acosh = exports.acos = exports.abs = exports._true = exports._null = exports._false = exports._NaN = exports._Infinity = exports.SQRT2 = exports.SQRT1_2 = exports.ResultSet = exports.Range = exports.LOG2E = exports.LOG10E = exports.LN2 = exports.LN10 = void 0;
7
- exports.zeta = exports.xor = exports.xgcd = exports.version = exports.variance = exports.unequal = exports.unaryPlus = exports.unaryMinus = exports.typed = exports.typeOf = exports.tau = exports.tanh = exports.tan = exports.sum = exports.subtractScalar = exports.subtract = exports.subset = exports.string = exports.stirlingS2 = exports.std = exports.square = exports.sqrt = exports.smallerEq = exports.smaller = exports.size = exports.sinh = exports.sin = exports.sign = exports.sech = exports.sec = exports.round = exports.rightLogShift = exports.rightArithShift = exports.replacer = exports.range = exports.randomInt = exports.random = exports.quantileSeq = exports.prod = exports.print = exports.pow = exports.pickRandom = exports.pi = exports.phi = exports.permutations = exports.partitionSelect = exports.or = exports.numeric = exports.number = exports.nthRoot = exports.not = exports.norm = exports.multiplyScalar = exports.multiply = exports.multinomial = exports.mode = exports.mod = exports.min = void 0;
6
+ exports.mean = exports.max = exports.matrix = exports.mapSlices = exports.map = exports.mad = exports.log2 = exports.log1p = exports.log10 = exports.log = exports.lgamma = exports.leftShift = exports.lcm = exports.largerEq = exports.larger = exports.isZero = exports.isPrime = exports.isPositive = exports.isNumeric = exports.isNegative = exports.isNaN = exports.isInteger = exports.index = exports.hypot = exports.hasNumericValue = exports.gcd = exports.gamma = exports.format = exports.forEach = exports.floor = exports.fix = exports.filter = exports.factorial = exports.expm1 = exports.exp = exports.erf = exports.equalText = exports.equalScalar = exports.equal = exports.e = exports.divideScalar = exports.divide = exports.deepEqual = exports.cumsum = exports.cube = exports.csch = exports.csc = exports.coth = exports.cot = exports.cosh = exports.cos = exports.corr = exports.composition = exports.compareText = exports.compareNatural = exports.compare = exports.combinationsWithRep = exports.combinations = exports.clone = exports.ceil = exports.cbrt = exports.catalan = exports.boolean = exports.bitXor = exports.bitOr = exports.bitNot = exports.bitAnd = exports.bigint = exports.bellNumbers = exports.atanh = exports.atan2 = exports.atan = exports.asinh = exports.asin = exports.asech = exports.asec = exports.apply = exports.and = exports.addScalar = exports.add = exports.acsch = exports.acsc = exports.acoth = exports.acot = exports.acosh = exports.acos = exports.abs = exports._true = exports._null = exports._false = exports._NaN = exports._Infinity = exports.SQRT2 = exports.SQRT1_2 = exports.ResultSet = exports.Range = exports.LOG2E = exports.LOG10E = exports.LN2 = exports.LN10 = void 0;
7
+ exports.zeta = exports.xor = exports.xgcd = exports.version = exports.variance = exports.unequal = exports.unaryPlus = exports.unaryMinus = exports.typed = exports.typeOf = exports.tau = exports.tanh = exports.tan = exports.sum = exports.subtractScalar = exports.subtract = exports.subset = exports.string = exports.stirlingS2 = exports.std = exports.square = exports.sqrt = exports.smallerEq = exports.smaller = exports.size = exports.sinh = exports.sin = exports.sign = exports.sech = exports.sec = exports.round = exports.rightLogShift = exports.rightArithShift = exports.replacer = exports.range = exports.randomInt = exports.random = exports.quantileSeq = exports.prod = exports.print = exports.pow = exports.pickRandom = exports.pi = exports.phi = exports.permutations = exports.partitionSelect = exports.or = exports.numeric = exports.number = exports.nthRoot = exports.not = exports.norm = exports.multiplyScalar = exports.multiply = exports.multinomial = exports.mode = exports.mod = exports.min = exports.median = void 0;
8
8
  var _configReadonly = require("./configReadonly.js");
9
9
  var _factoriesNumber = require("../factoriesNumber.js");
10
10
  /**
@@ -292,6 +292,11 @@ const lcm = exports.lcm = /* #__PURE__ */(0, _factoriesNumber.createLcm)({
292
292
  const log10 = exports.log10 = /* #__PURE__ */(0, _factoriesNumber.createLog10)({
293
293
  typed
294
294
  });
295
+ const mapSlices = exports.mapSlices = /* #__PURE__ */(0, _factoriesNumber.createMapSlices)({
296
+ isInteger,
297
+ typed
298
+ });
299
+ const apply = exports.apply = mapSlices;
295
300
  const multiplyScalar = exports.multiplyScalar = /* #__PURE__ */(0, _factoriesNumber.createMultiplyScalar)({
296
301
  typed
297
302
  });
@@ -323,11 +328,7 @@ const unaryMinus = exports.unaryMinus = /* #__PURE__ */(0, _factoriesNumber.crea
323
328
  const acosh = exports.acosh = /* #__PURE__ */(0, _factoriesNumber.createAcosh)({
324
329
  typed
325
330
  });
326
- const apply = exports.apply = /* #__PURE__ */(0, _factoriesNumber.createApply)({
327
- isInteger,
328
- typed
329
- });
330
- const asinh = exports.asinh = /* #__PURE__ */(0, _factoriesNumber.createAsinh)({
331
+ const atan2 = exports.atan2 = /* #__PURE__ */(0, _factoriesNumber.createAtan2)({
331
332
  typed
332
333
  });
333
334
  const bitOr = exports.bitOr = /* #__PURE__ */(0, _factoriesNumber.createBitOr)({
@@ -396,9 +397,9 @@ const subtractScalar = exports.subtractScalar = /* #__PURE__ */(0, _factoriesNum
396
397
  const _true = exports._true = /* #__PURE__ */(0, _factoriesNumber.createTrue)({});
397
398
  const variance = exports.variance = /* #__PURE__ */(0, _factoriesNumber.createVariance)({
398
399
  add,
399
- apply,
400
400
  divide,
401
401
  isNaN,
402
+ mapSlices,
402
403
  multiply,
403
404
  subtract,
404
405
  typed
@@ -422,9 +423,6 @@ const zeta = exports.zeta = /* #__PURE__ */(0, _factoriesNumber.createZeta)({
422
423
  const acsch = exports.acsch = /* #__PURE__ */(0, _factoriesNumber.createAcsch)({
423
424
  typed
424
425
  });
425
- const atan2 = exports.atan2 = /* #__PURE__ */(0, _factoriesNumber.createAtan2)({
426
- typed
427
- });
428
426
  const catalan = exports.catalan = /* #__PURE__ */(0, _factoriesNumber.createCatalan)({
429
427
  addScalar,
430
428
  combinations,
@@ -496,6 +494,7 @@ const quantileSeq = exports.quantileSeq = /* #__PURE__ */(0, _factoriesNumber.cr
496
494
  divide,
497
495
  isInteger,
498
496
  larger,
497
+ mapSlices,
499
498
  multiply,
500
499
  partitionSelect,
501
500
  smaller,
@@ -526,6 +525,9 @@ const stirlingS2 = exports.stirlingS2 = /* #__PURE__ */(0, _factoriesNumber.crea
526
525
  subtractScalar,
527
526
  typed
528
527
  });
528
+ const asinh = exports.asinh = /* #__PURE__ */(0, _factoriesNumber.createAsinh)({
529
+ typed
530
+ });
529
531
  const ceil = exports.ceil = /* #__PURE__ */(0, _factoriesNumber.createCeil)({
530
532
  config: _configReadonly.config,
531
533
  round,
@@ -117,6 +117,7 @@ var _and = require("./function/logical/and.js");
117
117
  var _not = require("./function/logical/not.js");
118
118
  var _or = require("./function/logical/or.js");
119
119
  var _xor = require("./function/logical/xor.js");
120
+ var _mapSlices = require("./function/matrix/mapSlices.js");
120
121
  var _column = require("./function/matrix/column.js");
121
122
  var _concat = require("./function/matrix/concat.js");
122
123
  var _count = require("./function/matrix/count.js");
@@ -578,6 +579,7 @@ const embeddedDocs = exports.embeddedDocs = {
578
579
  or: _or.orDocs,
579
580
  xor: _xor.xorDocs,
580
581
  // functions - matrix
582
+ mapSlices: _mapSlices.mapSlicesDocs,
581
583
  concat: _concat.concatDocs,
582
584
  count: _count.countDocs,
583
585
  cross: _cross.crossDocs,
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mapSlicesDocs = void 0;
7
+ const mapSlicesDocs = exports.mapSlicesDocs = {
8
+ name: 'mapSlices',
9
+ category: 'Matrix',
10
+ syntax: ['mapSlices(A, dim, callback)'],
11
+ description: 'Generate a matrix one dimension less than A by applying callback to ' + 'each slice of A along dimension dim.',
12
+ examples: ['A = [[1, 2], [3, 4]]', 'mapSlices(A, 1, sum)',
13
+ // returns [4, 6]
14
+ 'mapSlices(A, 2, product)' // returns [2, 12]
15
+ ],
16
+ seealso: ['map', 'forEach']
17
+ };
@@ -38,14 +38,14 @@ const createIndexTransform = exports.createIndexTransform = /* #__PURE__ */(0, _
38
38
  return v - 1;
39
39
  });
40
40
  }
41
- } else if ((0, _is.isNumber)(arg)) {
41
+ } else if ((0, _is.isNumber)(arg) || (0, _is.isBigInt)(arg)) {
42
42
  arg--;
43
43
  } else if ((0, _is.isBigNumber)(arg)) {
44
44
  arg = arg.toNumber() - 1;
45
45
  } else if (typeof arg === 'string') {
46
46
  // leave as is
47
47
  } else {
48
- throw new TypeError('Dimension must be an Array, Matrix, number, string, or Range');
48
+ throw new TypeError('Dimension must be an Array, Matrix, number, bigint, string, or Range');
49
49
  }
50
50
  args[i] = arg;
51
51
  }
@@ -3,33 +3,33 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createApplyTransform = void 0;
6
+ exports.createMapSlicesTransform = void 0;
7
7
  var _errorTransform = require("./utils/errorTransform.js");
8
8
  var _factory = require("../../utils/factory.js");
9
- var _apply = require("../../function/matrix/apply.js");
9
+ var _mapSlices = require("../../function/matrix/mapSlices.js");
10
10
  var _is = require("../../utils/is.js");
11
- const name = 'apply';
11
+ const name = 'mapSlices';
12
12
  const dependencies = ['typed', 'isInteger'];
13
13
 
14
14
  /**
15
- * Attach a transform function to math.apply
15
+ * Attach a transform function to math.mapSlices
16
16
  * Adds a property transform containing the transform function.
17
17
  *
18
- * This transform changed the last `dim` parameter of function apply
18
+ * This transform changed the last `dim` parameter of function mapSlices
19
19
  * from one-based to zero based
20
20
  */
21
- const createApplyTransform = exports.createApplyTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
21
+ const createMapSlicesTransform = exports.createMapSlicesTransform = /* #__PURE__ */(0, _factory.factory)(name, dependencies, _ref => {
22
22
  let {
23
23
  typed,
24
24
  isInteger
25
25
  } = _ref;
26
- const apply = (0, _apply.createApply)({
26
+ const mapSlices = (0, _mapSlices.createMapSlices)({
27
27
  typed,
28
28
  isInteger
29
29
  });
30
30
 
31
31
  // @see: comment of concat itself
32
- return typed('apply', {
32
+ return typed('mapSlices', {
33
33
  '...any': function (args) {
34
34
  // change dim from one-based to zero-based
35
35
  const dim = args[1];
@@ -39,12 +39,13 @@ const createApplyTransform = exports.createApplyTransform = /* #__PURE__ */(0, _
39
39
  args[1] = dim.minus(1);
40
40
  }
41
41
  try {
42
- return apply.apply(null, args);
42
+ return mapSlices.apply(null, args);
43
43
  } catch (err) {
44
44
  throw (0, _errorTransform.errorTransform)(err);
45
45
  }
46
46
  }
47
47
  });
48
48
  }, {
49
- isTransformFunction: true
49
+ isTransformFunction: true,
50
+ ..._mapSlices.createMapSlices.meta
50
51
  });
@@ -8,7 +8,7 @@ var _factory = require("../../utils/factory.js");
8
8
  var _quantileSeq = require("../../function/statistics/quantileSeq.js");
9
9
  var _lastDimToZeroBase = require("./utils/lastDimToZeroBase.js");
10
10
  const name = 'quantileSeq';
11
- const dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];
11
+ const dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger', 'mapSlices'];
12
12
 
13
13
  /**
14
14
  * Attach a transform function to math.quantileSeq
@@ -30,7 +30,8 @@ const createQuantileSeqTransform = exports.createQuantileSeqTransform = /* #__PU
30
30
  isInteger,
31
31
  smaller,
32
32
  smallerEq,
33
- larger
33
+ larger,
34
+ mapSlices
34
35
  } = _ref;
35
36
  const quantileSeq = (0, _quantileSeq.createQuantileSeq)({
36
37
  typed,
@@ -44,7 +45,8 @@ const createQuantileSeqTransform = exports.createQuantileSeqTransform = /* #__PU
44
45
  isInteger,
45
46
  smaller,
46
47
  smallerEq,
47
- larger
48
+ larger,
49
+ mapSlices
48
50
  });
49
51
  return typed('quantileSeq', {
50
52
  'Array | Matrix, number | BigNumber': quantileSeq,
@@ -9,7 +9,7 @@ var _errorTransform = require("./utils/errorTransform.js");
9
9
  var _variance = require("../../function/statistics/variance.js");
10
10
  var _lastDimToZeroBase = require("./utils/lastDimToZeroBase.js");
11
11
  const name = 'variance';
12
- const dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'apply', 'isNaN'];
12
+ const dependencies = ['typed', 'add', 'subtract', 'multiply', 'divide', 'mapSlices', 'isNaN'];
13
13
 
14
14
  /**
15
15
  * Attach a transform function to math.var
@@ -25,7 +25,7 @@ const createVarianceTransform = exports.createVarianceTransform = /* #__PURE__ *
25
25
  subtract,
26
26
  multiply,
27
27
  divide,
28
- apply,
28
+ mapSlices,
29
29
  isNaN
30
30
  } = _ref;
31
31
  const variance = (0, _variance.createVariance)({
@@ -34,7 +34,7 @@ const createVarianceTransform = exports.createVarianceTransform = /* #__PURE__ *
34
34
  subtract,
35
35
  multiply,
36
36
  divide,
37
- apply,
37
+ mapSlices,
38
38
  isNaN
39
39
  });
40
40
  return typed(name, {
@@ -75,18 +75,6 @@ Object.defineProperty(exports, "createAndTransform", {
75
75
  return _andTransform.createAndTransform;
76
76
  }
77
77
  });
78
- Object.defineProperty(exports, "createApply", {
79
- enumerable: true,
80
- get: function () {
81
- return _apply.createApply;
82
- }
83
- });
84
- Object.defineProperty(exports, "createApplyTransform", {
85
- enumerable: true,
86
- get: function () {
87
- return _applyTransform.createApplyTransform;
88
- }
89
- });
90
78
  Object.defineProperty(exports, "createArg", {
91
79
  enumerable: true,
92
80
  get: function () {
@@ -1149,6 +1137,18 @@ Object.defineProperty(exports, "createMap", {
1149
1137
  return _map.createMap;
1150
1138
  }
1151
1139
  });
1140
+ Object.defineProperty(exports, "createMapSlices", {
1141
+ enumerable: true,
1142
+ get: function () {
1143
+ return _mapSlices.createMapSlices;
1144
+ }
1145
+ });
1146
+ Object.defineProperty(exports, "createMapSlicesTransform", {
1147
+ enumerable: true,
1148
+ get: function () {
1149
+ return _mapSlicesTransform.createMapSlicesTransform;
1150
+ }
1151
+ });
1152
1152
  Object.defineProperty(exports, "createMapTransform", {
1153
1153
  enumerable: true,
1154
1154
  get: function () {
@@ -2209,7 +2209,7 @@ var _splitUnit = require("./type/unit/function/splitUnit.js");
2209
2209
  var _unaryMinus = require("./function/arithmetic/unaryMinus.js");
2210
2210
  var _unaryPlus = require("./function/arithmetic/unaryPlus.js");
2211
2211
  var _abs = require("./function/arithmetic/abs.js");
2212
- var _apply = require("./function/matrix/apply.js");
2212
+ var _mapSlices = require("./function/matrix/mapSlices.js");
2213
2213
  var _addScalar = require("./function/arithmetic/addScalar.js");
2214
2214
  var _subtractScalar = require("./function/arithmetic/subtractScalar.js");
2215
2215
  var _cbrt = require("./function/arithmetic/cbrt.js");
@@ -2446,7 +2446,7 @@ var _reviver = require("./json/reviver.js");
2446
2446
  var _replacer = require("./json/replacer.js");
2447
2447
  var _constants = require("./constants.js");
2448
2448
  var _physicalConstants = require("./type/unit/physicalConstants.js");
2449
- var _applyTransform = require("./expression/transform/apply.transform.js");
2449
+ var _mapSlicesTransform = require("./expression/transform/mapSlices.transform.js");
2450
2450
  var _columnTransform = require("./expression/transform/column.transform.js");
2451
2451
  var _filterTransform = require("./expression/transform/filter.transform.js");
2452
2452
  var _forEachTransform = require("./expression/transform/forEach.transform.js");
@@ -11,18 +11,6 @@ Object.defineProperty(exports, "createAccessorNode", {
11
11
  }
12
12
  });
13
13
  exports.createAnd = exports.createAddScalar = exports.createAdd = exports.createAcsch = exports.createAcsc = exports.createAcoth = exports.createAcot = exports.createAcosh = exports.createAcos = void 0;
14
- Object.defineProperty(exports, "createApply", {
15
- enumerable: true,
16
- get: function () {
17
- return _apply.createApply;
18
- }
19
- });
20
- Object.defineProperty(exports, "createApplyTransform", {
21
- enumerable: true,
22
- get: function () {
23
- return _applyTransform.createApplyTransform;
24
- }
25
- });
26
14
  Object.defineProperty(exports, "createArrayNode", {
27
15
  enumerable: true,
28
16
  get: function () {
@@ -366,7 +354,8 @@ Object.defineProperty(exports, "createLargerEq", {
366
354
  return _largerEq.createLargerEqNumber;
367
355
  }
368
356
  });
369
- exports.createLog2 = exports.createLog1p = exports.createLog10 = exports.createLog = exports.createLgamma = exports.createLeftShift = exports.createLcm = void 0;
357
+ exports.createLeftShift = exports.createLcm = void 0;
358
+ exports.createLog2 = exports.createLog1p = exports.createLog10 = exports.createLog = exports.createLgamma = void 0;
370
359
  Object.defineProperty(exports, "createMad", {
371
360
  enumerable: true,
372
361
  get: function () {
@@ -379,6 +368,18 @@ Object.defineProperty(exports, "createMap", {
379
368
  return _map.createMap;
380
369
  }
381
370
  });
371
+ Object.defineProperty(exports, "createMapSlices", {
372
+ enumerable: true,
373
+ get: function () {
374
+ return _mapSlices.createMapSlices;
375
+ }
376
+ });
377
+ Object.defineProperty(exports, "createMapSlicesTransform", {
378
+ enumerable: true,
379
+ get: function () {
380
+ return _mapSlicesTransform.createMapSlicesTransform;
381
+ }
382
+ });
382
383
  Object.defineProperty(exports, "createMapTransform", {
383
384
  enumerable: true,
384
385
  get: function () {
@@ -845,7 +846,7 @@ var _parse = require("./expression/parse.js");
845
846
  var _compile = require("./expression/function/compile.js");
846
847
  var _evaluate = require("./expression/function/evaluate.js");
847
848
  var _Parser = require("./expression/Parser.js");
848
- var _apply = require("./function/matrix/apply.js");
849
+ var _mapSlices = require("./function/matrix/mapSlices.js");
849
850
  var _filter = require("./function/matrix/filter.js");
850
851
  var _forEach = require("./function/matrix/forEach.js");
851
852
  var _map = require("./function/matrix/map.js");
@@ -888,7 +889,7 @@ var _std = require("./function/statistics/std.js");
888
889
  var _corr = require("./function/statistics/corr.js");
889
890
  var _format = require("./function/string/format.js");
890
891
  var _print = require("./function/string/print.js");
891
- var _applyTransform = require("./expression/transform/apply.transform.js");
892
+ var _mapSlicesTransform = require("./expression/transform/mapSlices.transform.js");
892
893
  var _filterTransform = require("./expression/transform/filter.transform.js");
893
894
  var _forEachTransform = require("./expression/transform/forEach.transform.js");
894
895
  var _mapTransform = require("./expression/transform/map.transform.js");
@@ -15,29 +15,34 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
15
15
  var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
16
16
  const name = 'ceil';
17
17
  const dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
18
+ const bigTen = new _decimal.default(10);
18
19
  const createCeilNumber = exports.createCeilNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config', 'round'], _ref => {
19
20
  let {
20
21
  typed,
21
22
  config,
22
23
  round
23
24
  } = _ref;
25
+ function _ceilNumber(x) {
26
+ // See ./floor.js _floorNumber for rationale here
27
+ const c = Math.ceil(x);
28
+ const r = round(x);
29
+ if (c === r) return c;
30
+ if ((0, _number.nearlyEqual)(x, r, config.relTol, config.absTol) && !(0, _number.nearlyEqual)(x, c, config.relTol, config.absTol)) {
31
+ return r;
32
+ }
33
+ return c;
34
+ }
24
35
  return typed(name, {
25
- number: function (x) {
26
- if ((0, _number.nearlyEqual)(x, round(x), config.relTol, config.absTol)) {
27
- return round(x);
28
- } else {
29
- return Math.ceil(x);
30
- }
31
- },
36
+ number: _ceilNumber,
32
37
  'number, number': function (x, n) {
33
- if ((0, _number.nearlyEqual)(x, round(x, n), config.relTol, config.absTol)) {
34
- return round(x, n);
35
- } else {
36
- let [number, exponent] = `${x}e`.split('e');
37
- const result = Math.ceil(Number(`${number}e${Number(exponent) + n}`));
38
- [number, exponent] = `${result}e`.split('e');
39
- return Number(`${number}e${Number(exponent) - n}`);
38
+ if (!(0, _number.isInteger)(n)) {
39
+ throw new RangeError('number of decimals in function ceil must be an integer');
40
+ }
41
+ if (n < 0 || n > 15) {
42
+ throw new RangeError('number of decimals in ceil number must be in range 0-15');
40
43
  }
44
+ const shift = 10 ** n;
45
+ return _ceilNumber(x * shift) / shift;
41
46
  }
42
47
  });
43
48
  });
@@ -67,6 +72,15 @@ const createCeil = exports.createCeil = /* #__PURE__ */(0, _factory.factory)(nam
67
72
  config,
68
73
  round
69
74
  });
75
+ function _bigCeil(x) {
76
+ // see ./floor.js _floorNumber for rationale
77
+ const bne = (a, b) => (0, _nearlyEqual.nearlyEqual)(a, b, config.relTol, config.absTol);
78
+ const c = x.ceil();
79
+ const r = round(x);
80
+ if (c.eq(r)) return c;
81
+ if (bne(x, r) && !bne(x, c)) return r;
82
+ return c;
83
+ }
70
84
  /**
71
85
  * Round a value towards plus infinity
72
86
  * If `x` is complex, both real and imaginary part are rounded towards plus infinity.
@@ -125,20 +139,14 @@ const createCeil = exports.createCeil = /* #__PURE__ */(0, _factory.factory)(nam
125
139
  'Complex, BigNumber': function (x, n) {
126
140
  return x.ceil(n.toNumber());
127
141
  },
128
- BigNumber: function (x) {
129
- if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.relTol, config.absTol)) {
130
- return round(x);
131
- } else {
132
- return x.ceil();
133
- }
134
- },
142
+ BigNumber: _bigCeil,
135
143
  'BigNumber, BigNumber': function (x, n) {
136
- if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.relTol, config.absTol)) {
137
- return round(x, n);
138
- } else {
139
- return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_CEIL);
140
- }
144
+ const shift = bigTen.pow(n);
145
+ return _bigCeil(x.mul(shift)).div(shift);
141
146
  },
147
+ bigint: b => b,
148
+ 'bigint, number': (b, _dummy) => b,
149
+ 'bigint, BigNumber': (b, _dummy) => b,
142
150
  Fraction: function (x) {
143
151
  return x.ceil();
144
152
  },
@@ -112,6 +112,9 @@ const createFix = exports.createFix = /* #__PURE__ */(0, _factory.factory)(name,
112
112
  'BigNumber, number | BigNumber': function (x, n) {
113
113
  return x.isNegative() ? ceil(x, n) : floor(x, n);
114
114
  },
115
+ bigint: b => b,
116
+ 'bigint, number': (b, _dummy) => b,
117
+ 'bigint, BigNumber': (b, _dummy) => b,
115
118
  Fraction: function (x) {
116
119
  return x.s < 0n ? x.ceil() : x.floor();
117
120
  },
@@ -15,29 +15,41 @@ var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
15
15
  var _matAlgo14xDs = require("../../type/matrix/utils/matAlgo14xDs.js");
16
16
  const name = 'floor';
17
17
  const dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix'];
18
+ const bigTen = new _decimal.default(10);
18
19
  const createFloorNumber = exports.createFloorNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config', 'round'], _ref => {
19
20
  let {
20
21
  typed,
21
22
  config,
22
23
  round
23
24
  } = _ref;
25
+ function _floorNumber(x) {
26
+ // First, if the floor and the round are identical we can be
27
+ // quite comfortable that is the best answer:
28
+ const f = Math.floor(x);
29
+ const r = round(x);
30
+ if (f === r) return f;
31
+ // OK, they are different. If x is truly distinct from f but
32
+ // appears indistinguishable from r, presume it really is just
33
+ // the integer r with rounding/computation error, and return that
34
+ if ((0, _number.nearlyEqual)(x, r, config.relTol, config.absTol) && !(0, _number.nearlyEqual)(x, f, config.relTol, config.absTol)) {
35
+ return r;
36
+ }
37
+ // Otherwise (x distinct from both r and f, or indistinguishable from
38
+ // both r and f) may as well just return f, as that's the best
39
+ // candidate we can discern:
40
+ return f;
41
+ }
24
42
  return typed(name, {
25
- number: function (x) {
26
- if ((0, _number.nearlyEqual)(x, round(x), config.relTol, config.absTol)) {
27
- return round(x);
28
- } else {
29
- return Math.floor(x);
30
- }
31
- },
43
+ number: _floorNumber,
32
44
  'number, number': function (x, n) {
33
- if ((0, _number.nearlyEqual)(x, round(x, n), config.relTol, config.absTol)) {
34
- return round(x, n);
35
- } else {
36
- let [number, exponent] = `${x}e`.split('e');
37
- const result = Math.floor(Number(`${number}e${Number(exponent) + n}`));
38
- [number, exponent] = `${result}e`.split('e');
39
- return Number(`${number}e${Number(exponent) - n}`);
45
+ if (!(0, _number.isInteger)(n)) {
46
+ throw new RangeError('number of decimals in function floor must be an integer');
47
+ }
48
+ if (n < 0 || n > 15) {
49
+ throw new RangeError('number of decimals in floor number must be in range 0 - 15');
40
50
  }
51
+ const shift = 10 ** n;
52
+ return _floorNumber(x * shift) / shift;
41
53
  }
42
54
  });
43
55
  });
@@ -67,6 +79,15 @@ const createFloor = exports.createFloor = /* #__PURE__ */(0, _factory.factory)(n
67
79
  config,
68
80
  round
69
81
  });
82
+ function _bigFloor(x) {
83
+ // see _floorNumber above for rationale
84
+ const bne = (a, b) => (0, _nearlyEqual.nearlyEqual)(a, b, config.relTol, config.absTol);
85
+ const f = x.floor();
86
+ const r = round(x);
87
+ if (f.eq(r)) return f;
88
+ if (bne(x, r) && !bne(x, f)) return r;
89
+ return f;
90
+ }
70
91
  /**
71
92
  * Round a value towards minus infinity.
72
93
  * For matrices, the function is evaluated element wise.
@@ -128,20 +149,14 @@ const createFloor = exports.createFloor = /* #__PURE__ */(0, _factory.factory)(n
128
149
  'Complex, BigNumber': function (x, n) {
129
150
  return x.floor(n.toNumber());
130
151
  },
131
- BigNumber: function (x) {
132
- if ((0, _nearlyEqual.nearlyEqual)(x, round(x), config.relTol, config.absTol)) {
133
- return round(x);
134
- } else {
135
- return x.floor();
136
- }
137
- },
152
+ BigNumber: _bigFloor,
138
153
  'BigNumber, BigNumber': function (x, n) {
139
- if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.relTol, config.absTol)) {
140
- return round(x, n);
141
- } else {
142
- return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_FLOOR);
143
- }
154
+ const shift = bigTen.pow(n);
155
+ return _bigFloor(x.mul(shift)).div(shift);
144
156
  },
157
+ bigint: b => b,
158
+ 'bigint, number': (b, _dummy) => b,
159
+ 'bigint, BigNumber': (b, _dummy) => b,
145
160
  Fraction: function (x) {
146
161
  return x.floor();
147
162
  },
@@ -143,6 +143,10 @@ const createRound = exports.createRound = /* #__PURE__ */(0, _factory.factory)(n
143
143
  const xSelected = (0, _nearlyEqual.nearlyEqual)(x, xEpsilon, config.relTol, config.absTol) ? xEpsilon : x;
144
144
  return xSelected.toDecimalPlaces(n.toNumber());
145
145
  },
146
+ // bigints can't be rounded
147
+ bigint: b => b,
148
+ 'bigint, number': (b, _dummy) => b,
149
+ 'bigint, BigNumber': (b, _dummy) => b,
146
150
  Fraction: function (x) {
147
151
  return x.round();
148
152
  },
@@ -26,7 +26,7 @@ const createCtranspose = exports.createCtranspose = /* #__PURE__ */(0, _factory.
26
26
  * Examples:
27
27
  *
28
28
  * const A = [[1, 2, 3], [4, 5, math.complex(6,7)]]
29
- * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:7}]]
29
+ * math.ctranspose(A) // returns [[1, 4], [2, 5], [3, {re:6,im:-7}]]
30
30
  *
31
31
  * See also:
32
32
  *