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