mathjs 11.11.0 → 11.11.1

Sign up to get free protection for your applications and to get access to all the features.
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';