mathjs 11.11.0 → 11.11.1

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 (60) 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/entry/dependenciesAny/dependenciesGcd.generated.js +4 -0
  6. package/lib/cjs/entry/dependenciesAny/dependenciesMod.generated.js +4 -0
  7. package/lib/cjs/entry/dependenciesAny/dependenciesPrintTransform.generated.js +24 -0
  8. package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +12 -0
  9. package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +12 -0
  10. package/lib/cjs/entry/dependenciesAny.generated.js +7 -0
  11. package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +10 -0
  12. package/lib/cjs/entry/impureFunctionsAny.generated.js +23 -11
  13. package/lib/cjs/entry/impureFunctionsNumber.generated.js +13 -13
  14. package/lib/cjs/entry/pureFunctionsAny.generated.js +55 -43
  15. package/lib/cjs/entry/pureFunctionsNumber.generated.js +20 -15
  16. package/lib/cjs/expression/embeddedDocs/function/utils/print.js +1 -1
  17. package/lib/cjs/expression/node/FunctionNode.js +3 -1
  18. package/lib/cjs/expression/transform/print.transform.js +47 -0
  19. package/lib/cjs/expression/transform/quantileSeq.transform.js +27 -5
  20. package/lib/cjs/factoriesAny.js +8 -1
  21. package/lib/cjs/function/algebra/simplify/util.js +2 -2
  22. package/lib/cjs/function/arithmetic/gcd.js +40 -4
  23. package/lib/cjs/function/arithmetic/mod.js +32 -3
  24. package/lib/cjs/function/numeric/solveODE.js +2 -2
  25. package/lib/cjs/function/statistics/quantileSeq.js +90 -167
  26. package/lib/cjs/function/string/print.js +5 -1
  27. package/lib/cjs/header.js +2 -2
  28. package/lib/cjs/plain/number/arithmetic.js +4 -12
  29. package/lib/cjs/type/unit/Unit.js +2 -2
  30. package/lib/cjs/utils/print.js +8 -0
  31. package/lib/cjs/utils/snapshot.js +8 -8
  32. package/lib/cjs/version.js +1 -1
  33. package/lib/esm/entry/dependenciesAny/dependenciesGcd.generated.js +4 -0
  34. package/lib/esm/entry/dependenciesAny/dependenciesMod.generated.js +4 -0
  35. package/lib/esm/entry/dependenciesAny/dependenciesPrintTransform.generated.js +16 -0
  36. package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +12 -0
  37. package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +12 -0
  38. package/lib/esm/entry/dependenciesAny.generated.js +1 -0
  39. package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +10 -0
  40. package/lib/esm/entry/impureFunctionsAny.generated.js +25 -13
  41. package/lib/esm/entry/impureFunctionsNumber.generated.js +15 -15
  42. package/lib/esm/entry/pureFunctionsAny.generated.js +51 -39
  43. package/lib/esm/entry/pureFunctionsNumber.generated.js +19 -14
  44. package/lib/esm/expression/embeddedDocs/function/utils/print.js +1 -1
  45. package/lib/esm/expression/node/FunctionNode.js +3 -1
  46. package/lib/esm/expression/transform/print.transform.js +42 -0
  47. package/lib/esm/expression/transform/quantileSeq.transform.js +23 -5
  48. package/lib/esm/factoriesAny.js +2 -1
  49. package/lib/esm/function/algebra/simplify/util.js +2 -2
  50. package/lib/esm/function/arithmetic/gcd.js +40 -4
  51. package/lib/esm/function/arithmetic/mod.js +32 -3
  52. package/lib/esm/function/numeric/solveODE.js +2 -2
  53. package/lib/esm/function/statistics/quantileSeq.js +82 -165
  54. package/lib/esm/function/string/print.js +5 -1
  55. package/lib/esm/plain/number/arithmetic.js +4 -12
  56. package/lib/esm/type/unit/Unit.js +2 -2
  57. package/lib/esm/utils/print.js +1 -0
  58. package/lib/esm/utils/snapshot.js +2 -2
  59. package/lib/esm/version.js +1 -1
  60. package/package.json +20 -20
@@ -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, createBitAnd, createBitOr, 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, createBitNot, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom, createRandomInt, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitXor, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createQuantileSeq, createRound, createSmaller, createStirlingS2, createTrue, createVariance, createZeta, createAcsch, createAtan2, createCatalan, createCompareNatural, createComposition, createCumSum, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createRange, createSign, createStd, createCeil, createDeepEqual, createFix, createIsPrime, createNumeric, createProd, createBellNumbers, createGcd, createMad, createSum, createCorr, createMax, createMin } from '../factoriesNumber.js';
8
+ createSubset, createTau, createTyped, createUnaryPlus, createVersion, createXor, createAbs, createAcos, createAcot, createAcsc, createAdd, createAnd, createAsec, createAsin, createAtan, createAtanh, createBitAnd, createBitOr, 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, createBitNot, createCombinationsWithRep, createCosh, createCsch, createDivideScalar, createEqualText, createExpm1, createIsNumeric, createLN2, createLcm, createLog10, createMultiplyScalar, createNthRoot, createPickRandom, createRandomInt, createRightArithShift, createSec, createSinh, createSqrt, createTan, createUnaryMinus, createAcosh, createApply, createAsinh, createBitXor, createClone, createCoth, createEqual, createFactorial, createHasNumericValue, createIsNaN, createLarger, createLog2, createMode, createNorm, createPartitionSelect, createPrint, createRound, createSmaller, createStirlingS2, createTrue, createVariance, createZeta, createAcsch, createAtan2, createCatalan, createCompareNatural, createComposition, createCumSum, createFloor, createHypot, createLgamma, createMedian, createMultinomial, createPermutations, createQuantileSeq, createSign, createStd, 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
  });
@@ -373,14 +373,6 @@ export var partitionSelect = /* #__PURE__ */createPartitionSelect({
373
373
  export var print = /* #__PURE__ */createPrint({
374
374
  typed
375
375
  });
376
- export var quantileSeq = /* #__PURE__ */createQuantileSeq({
377
- add,
378
- compare,
379
- isInteger,
380
- multiply,
381
- partitionSelect,
382
- typed
383
- });
384
376
  export var round = /* #__PURE__ */createRound({
385
377
  typed
386
378
  });
@@ -499,15 +491,17 @@ export var permutations = /* #__PURE__ */createPermutations({
499
491
  factorial,
500
492
  typed
501
493
  });
502
- export var range = /* #__PURE__ */createRange({
503
- matrix,
494
+ export var quantileSeq = /* #__PURE__ */createQuantileSeq({
504
495
  add,
505
- config,
506
- isPositive,
496
+ compare,
497
+ divide,
498
+ isInteger,
507
499
  larger,
508
- largerEq,
500
+ multiply,
501
+ partitionSelect,
509
502
  smaller,
510
503
  smallerEq,
504
+ subtract,
511
505
  typed
512
506
  });
513
507
  export var sign = /* #__PURE__ */createSign({
@@ -562,6 +556,17 @@ export var mad = /* #__PURE__ */createMad({
562
556
  subtract,
563
557
  typed
564
558
  });
559
+ export var range = /* #__PURE__ */createRange({
560
+ matrix,
561
+ add,
562
+ config,
563
+ isPositive,
564
+ larger,
565
+ largerEq,
566
+ smaller,
567
+ smallerEq,
568
+ typed
569
+ });
565
570
  export var sum = /* #__PURE__ */createSum({
566
571
  add,
567
572
  config,
@@ -3,6 +3,6 @@ export var printDocs = {
3
3
  category: 'Utils',
4
4
  syntax: ['print(template, values)', 'print(template, values, precision)'],
5
5
  description: 'Interpolate values into a string template.',
6
- examples: ['print("Lucy is $age years old", {age: 5})', 'print("The value of pi is $pi", {pi: pi}, 3)', 'print("Hello, $user.name!", {user: {name: "John"}})', 'print("Values: $0, $1, $2", [6, 9, 4])'],
6
+ examples: ['print("Lucy is $age years old", {age: 5})', 'print("The value of pi is $pi", {pi: pi}, 3)', 'print("Hello, $user.name!", {user: {name: "John"}})', 'print("Values: $1, $2, $3", [6, 9, 4])'],
7
7
  seealso: ['format']
8
8
  };
@@ -9,6 +9,7 @@ import { defaultTemplate, latexFunctions } from '../../utils/latex.js';
9
9
  var name = 'FunctionNode';
10
10
  var dependencies = ['math', 'Node', 'SymbolNode'];
11
11
  export var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref => {
12
+ var _class;
12
13
  var {
13
14
  math,
14
15
  Node,
@@ -455,12 +456,13 @@ export var createFunctionNode = /* #__PURE__ */factory(name, dependencies, _ref
455
456
  return this.type + ':' + this.name;
456
457
  }
457
458
  }
459
+ _class = FunctionNode;
458
460
  _defineProperty(FunctionNode, "name", name);
459
461
  _defineProperty(FunctionNode, "onUndefinedFunction", function (name) {
460
462
  throw new Error('Undefined function ' + name);
461
463
  });
462
464
  _defineProperty(FunctionNode, "fromJSON", function (json) {
463
- return new FunctionNode(json.fn, json.args);
465
+ return new _class(json.fn, json.args);
464
466
  });
465
467
  return FunctionNode;
466
468
  }, {
@@ -0,0 +1,42 @@
1
+ import { createPrint } from '../../function/string/print.js';
2
+ import { factory } from '../../utils/factory.js';
3
+ import { printTemplate } from '../../utils/print.js';
4
+ var name = 'print';
5
+ var dependencies = ['typed', 'matrix', 'zeros', 'add'];
6
+ export var createPrintTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
7
+ var {
8
+ typed,
9
+ matrix,
10
+ zeros,
11
+ add
12
+ } = _ref;
13
+ var print = createPrint({
14
+ typed,
15
+ matrix,
16
+ zeros,
17
+ add
18
+ });
19
+ return typed(name, {
20
+ 'string, Object | Array': function stringObjectArray(template, values) {
21
+ return print(_convertTemplateToZeroBasedIndex(template), values);
22
+ },
23
+ 'string, Object | Array, number | Object': function stringObjectArrayNumberObject(template, values, options) {
24
+ return print(_convertTemplateToZeroBasedIndex(template), values, options);
25
+ }
26
+ });
27
+ function _convertTemplateToZeroBasedIndex(template) {
28
+ return template.replace(printTemplate, x => {
29
+ var parts = x.slice(1).split('.');
30
+ var result = parts.map(function (part) {
31
+ if (!isNaN(part) && part.length > 0) {
32
+ return parseInt(part) - 1;
33
+ } else {
34
+ return part;
35
+ }
36
+ });
37
+ return '$' + result.join('.');
38
+ });
39
+ }
40
+ }, {
41
+ isTransformFunction: true
42
+ });
@@ -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', 'add', 'multiply', 'partitionSelect', 'compare', 'isInteger'];
5
+ var dependencies = ['typed', 'bignumber', 'add', 'subtract', 'divide', 'multiply', 'partitionSelect', 'compare', 'isInteger', 'smaller', 'smallerEq', 'larger'];
6
6
 
7
7
  /**
8
8
  * Attach a transform function to math.quantileSeq
@@ -14,23 +14,41 @@ var dependencies = ['typed', 'add', 'multiply', 'partitionSelect', 'compare', 'i
14
14
  export var createQuantileSeqTransform = /* #__PURE__ */factory(name, dependencies, _ref => {
15
15
  var {
16
16
  typed,
17
+ bignumber,
17
18
  add,
19
+ subtract,
20
+ divide,
18
21
  multiply,
19
22
  partitionSelect,
20
23
  compare,
21
- isInteger
24
+ isInteger,
25
+ smaller,
26
+ smallerEq,
27
+ larger
22
28
  } = _ref;
23
29
  var quantileSeq = createQuantileSeq({
24
30
  typed,
31
+ bignumber,
25
32
  add,
33
+ subtract,
34
+ divide,
26
35
  multiply,
27
36
  partitionSelect,
28
37
  compare,
29
- isInteger
38
+ isInteger,
39
+ smaller,
40
+ smallerEq,
41
+ larger
30
42
  });
31
43
  return typed('quantileSeq', {
32
- 'Array|Matrix, number|BigNumber|Array, number': (arr, prob, dim) => quantileSeq(arr, prob, dimToZeroBase(dim)),
33
- 'Array|Matrix, number|BigNumber|Array, boolean, number': (arr, prob, sorted, dim) => quantileSeq(arr, prob, sorted, dimToZeroBase(dim))
44
+ 'Array | Matrix, number | BigNumber': quantileSeq,
45
+ 'Array | Matrix, number | BigNumber, number': (arr, prob, dim) => quantileSeq(arr, prob, dimToZeroBase(dim)),
46
+ 'Array | Matrix, number | BigNumber, boolean': quantileSeq,
47
+ 'Array | Matrix, number | BigNumber, boolean, number': (arr, prob, sorted, dim) => quantileSeq(arr, prob, sorted, dimToZeroBase(dim)),
48
+ 'Array | Matrix, Array | Matrix': quantileSeq,
49
+ 'Array | Matrix, Array | Matrix, number': (data, prob, dim) => quantileSeq(data, prob, dimToZeroBase(dim)),
50
+ 'Array | Matrix, Array | Matrix, boolean': quantileSeq,
51
+ 'Array | Matrix, Array | Matrix, boolean, number': (data, prob, sorted, dim) => quantileSeq(data, prob, sorted, dimToZeroBase(dim))
34
52
  });
35
53
  function dimToZeroBase(dim) {
36
54
  // TODO: find a better way, maybe lastDimToZeroBase could apply to more cases.
@@ -287,4 +287,5 @@ export { createStdTransform } from './expression/transform/std.transform.js';
287
287
  export { createSumTransform } from './expression/transform/sum.transform.js';
288
288
  export { createQuantileSeqTransform } from './expression/transform/quantileSeq.transform.js';
289
289
  export { createCumSumTransform } from './expression/transform/cumsum.transform.js';
290
- export { createVarianceTransform } from './expression/transform/variance.transform.js';
290
+ export { createVarianceTransform } from './expression/transform/variance.transform.js';
291
+ export { createPrintTransform } from './expression/transform/print.transform.js';
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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
4
  import { isFunctionNode, isOperatorNode, isParenthesisNode } from '../../../utils/is.js';
5
5
  import { factory } from '../../../utils/factory.js';
6
6
  import { hasOwnProperty } from '../../../utils/object.js';
@@ -1,12 +1,13 @@
1
+ import { isInteger } from '../../utils/number.js';
1
2
  import { factory } from '../../utils/factory.js';
3
+ import { createMod } from './mod.js';
2
4
  import { createMatAlgo01xDSid } from '../../type/matrix/utils/matAlgo01xDSid.js';
3
5
  import { createMatAlgo04xSidSid } from '../../type/matrix/utils/matAlgo04xSidSid.js';
4
6
  import { createMatAlgo10xSids } from '../../type/matrix/utils/matAlgo10xSids.js';
5
7
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
6
- import { gcdNumber } from '../../plain/number/index.js';
7
8
  import { ArgumentsError } from '../../error/ArgumentsError.js';
8
9
  var name = 'gcd';
9
- var dependencies = ['typed', 'matrix', 'equalScalar', 'BigNumber', 'DenseMatrix', 'concat'];
10
+ var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'BigNumber', 'DenseMatrix', 'concat'];
10
11
  var gcdTypes = 'number | BigNumber | Fraction | Matrix | Array';
11
12
  var gcdManyTypesSignature = "".concat(gcdTypes, ", ").concat(gcdTypes, ", ...").concat(gcdTypes);
12
13
  function is1d(array) {
@@ -16,11 +17,24 @@ export var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {
16
17
  var {
17
18
  typed,
18
19
  matrix,
20
+ config,
21
+ round,
19
22
  equalScalar,
23
+ zeros,
20
24
  BigNumber,
21
25
  DenseMatrix,
22
26
  concat
23
27
  } = _ref;
28
+ var mod = createMod({
29
+ typed,
30
+ config,
31
+ round,
32
+ matrix,
33
+ equalScalar,
34
+ zeros,
35
+ DenseMatrix,
36
+ concat
37
+ });
24
38
  var matAlgo01xDSid = createMatAlgo01xDSid({
25
39
  typed
26
40
  });
@@ -64,7 +78,7 @@ export var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {
64
78
  * @return {number | BigNumber | Fraction | Array | Matrix} The greatest common divisor
65
79
  */
66
80
  return typed(name, {
67
- 'number, number': gcdNumber,
81
+ 'number, number': _gcdNumber,
68
82
  'BigNumber, BigNumber': _gcdBigNumber,
69
83
  'Fraction, Fraction': (x, y) => x.gcd(y)
70
84
  }, matrixAlgorithmSuite({
@@ -93,6 +107,28 @@ export var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {
93
107
  })
94
108
  });
95
109
 
110
+ /**
111
+ * Calculate gcd for numbers
112
+ * @param {number} a
113
+ * @param {number} b
114
+ * @returns {number} Returns the greatest common denominator of a and b
115
+ * @private
116
+ */
117
+ function _gcdNumber(a, b) {
118
+ if (!isInteger(a) || !isInteger(b)) {
119
+ throw new Error('Parameters in function gcd must be integer numbers');
120
+ }
121
+
122
+ // https://en.wikipedia.org/wiki/Euclidean_algorithm
123
+ var r;
124
+ while (b !== 0) {
125
+ r = mod(a, b);
126
+ a = b;
127
+ b = r;
128
+ }
129
+ return a < 0 ? -a : a;
130
+ }
131
+
96
132
  /**
97
133
  * Calculate gcd for BigNumbers
98
134
  * @param {BigNumber} a
@@ -108,7 +144,7 @@ export var createGcd = /* #__PURE__ */factory(name, dependencies, _ref => {
108
144
  // https://en.wikipedia.org/wiki/Euclidean_algorithm
109
145
  var zero = new BigNumber(0);
110
146
  while (!b.isZero()) {
111
- var r = a.mod(b);
147
+ var r = mod(a, b);
112
148
  a = b;
113
149
  b = r;
114
150
  }
@@ -1,21 +1,33 @@
1
1
  import { factory } from '../../utils/factory.js';
2
+ import { createFloor } from './floor.js';
2
3
  import { createMatAlgo02xDS0 } from '../../type/matrix/utils/matAlgo02xDS0.js';
3
4
  import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
4
5
  import { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';
5
6
  import { createMatAlgo11xS0s } from '../../type/matrix/utils/matAlgo11xS0s.js';
6
7
  import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
7
- import { modNumber } from '../../plain/number/index.js';
8
8
  import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
9
9
  var name = 'mod';
10
- var dependencies = ['typed', 'matrix', 'equalScalar', 'DenseMatrix', 'concat'];
10
+ var dependencies = ['typed', 'config', 'round', 'matrix', 'equalScalar', 'zeros', 'DenseMatrix', 'concat'];
11
11
  export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
12
12
  var {
13
13
  typed,
14
+ config,
15
+ round,
14
16
  matrix,
15
17
  equalScalar,
18
+ zeros,
16
19
  DenseMatrix,
17
20
  concat
18
21
  } = _ref;
22
+ var floor = createFloor({
23
+ typed,
24
+ config,
25
+ round,
26
+ matrix,
27
+ equalScalar,
28
+ zeros,
29
+ DenseMatrix
30
+ });
19
31
  var matAlgo02xDS0 = createMatAlgo02xDS0({
20
32
  typed,
21
33
  equalScalar
@@ -77,7 +89,7 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
77
89
  * @return {number | BigNumber | Fraction | Array | Matrix} Returns the remainder of `x` divided by `y`.
78
90
  */
79
91
  return typed(name, {
80
- 'number, number': modNumber,
92
+ 'number, number': _modNumber,
81
93
  'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
82
94
  if (y.isNeg()) {
83
95
  throw new Error('Cannot calculate mod for a negative divisor');
@@ -98,4 +110,21 @@ export var createMod = /* #__PURE__ */factory(name, dependencies, _ref => {
98
110
  Ss: matAlgo11xS0s,
99
111
  sS: matAlgo12xSfs
100
112
  }));
113
+
114
+ /**
115
+ * Calculate the modulus of two numbers
116
+ * @param {number} x
117
+ * @param {number} y
118
+ * @returns {number} res
119
+ * @private
120
+ */
121
+ function _modNumber(x, y) {
122
+ // We don't use JavaScript's % operator here as this doesn't work
123
+ // correctly for x < 0 and x === 0
124
+ // see https://en.wikipedia.org/wiki/Modulo_operation
125
+
126
+ // We use mathjs floor to handle errors associated with
127
+ // precision float approximation
128
+ return y === 0 ? x : x - y * floor(x / y);
129
+ }
101
130
  });
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
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
4
  import { isUnit, isNumber, isBigNumber } from '../../utils/is.js';
5
5
  import { factory } from '../../utils/factory.js';
6
6
  var name = 'solveODE';