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.
- package/HISTORY.md +11 -0
- package/lib/browser/math.js +1 -1
- package/lib/browser/math.js.LICENSE.txt +2 -2
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesGcd.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesMod.generated.js +4 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesPrintTransform.generated.js +24 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +12 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +12 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +7 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +10 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +23 -11
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +13 -13
- package/lib/cjs/entry/pureFunctionsAny.generated.js +55 -43
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +20 -15
- package/lib/cjs/expression/embeddedDocs/function/utils/print.js +1 -1
- package/lib/cjs/expression/node/FunctionNode.js +3 -1
- package/lib/cjs/expression/transform/print.transform.js +47 -0
- package/lib/cjs/expression/transform/quantileSeq.transform.js +27 -5
- package/lib/cjs/factoriesAny.js +8 -1
- package/lib/cjs/function/algebra/simplify/util.js +2 -2
- package/lib/cjs/function/arithmetic/gcd.js +40 -4
- package/lib/cjs/function/arithmetic/mod.js +32 -3
- package/lib/cjs/function/numeric/solveODE.js +2 -2
- package/lib/cjs/function/statistics/quantileSeq.js +90 -167
- package/lib/cjs/function/string/print.js +5 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/number/arithmetic.js +4 -12
- package/lib/cjs/type/unit/Unit.js +2 -2
- package/lib/cjs/utils/print.js +8 -0
- package/lib/cjs/utils/snapshot.js +8 -8
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesGcd.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesMod.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesPrintTransform.generated.js +16 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeq.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesQuantileSeqTransform.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny.generated.js +1 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesQuantileSeq.generated.js +10 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +25 -13
- package/lib/esm/entry/impureFunctionsNumber.generated.js +15 -15
- package/lib/esm/entry/pureFunctionsAny.generated.js +51 -39
- package/lib/esm/entry/pureFunctionsNumber.generated.js +19 -14
- package/lib/esm/expression/embeddedDocs/function/utils/print.js +1 -1
- package/lib/esm/expression/node/FunctionNode.js +3 -1
- package/lib/esm/expression/transform/print.transform.js +42 -0
- package/lib/esm/expression/transform/quantileSeq.transform.js +23 -5
- package/lib/esm/factoriesAny.js +2 -1
- package/lib/esm/function/algebra/simplify/util.js +2 -2
- package/lib/esm/function/arithmetic/gcd.js +40 -4
- package/lib/esm/function/arithmetic/mod.js +32 -3
- package/lib/esm/function/numeric/solveODE.js +2 -2
- package/lib/esm/function/statistics/quantileSeq.js +82 -165
- package/lib/esm/function/string/print.js +5 -1
- package/lib/esm/plain/number/arithmetic.js +4 -12
- package/lib/esm/type/unit/Unit.js +2 -2
- package/lib/esm/utils/print.js +1 -0
- package/lib/esm/utils/snapshot.js +2 -2
- package/lib/esm/version.js +1 -1
- 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,
|
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
|
503
|
-
matrix,
|
494
|
+
export var quantileSeq = /* #__PURE__ */createQuantileSeq({
|
504
495
|
add,
|
505
|
-
|
506
|
-
|
496
|
+
compare,
|
497
|
+
divide,
|
498
|
+
isInteger,
|
507
499
|
larger,
|
508
|
-
|
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: $
|
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
|
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
|
33
|
-
'Array|Matrix, number|BigNumber
|
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.
|
package/lib/esm/factoriesAny.js
CHANGED
@@ -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(
|
3
|
-
function _objectSpread(
|
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':
|
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 =
|
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':
|
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(
|
3
|
-
function _objectSpread(
|
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';
|