mathjs 10.0.2 → 10.2.0
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 +37 -0
- package/NOTICE +1 -1
- package/README.md +10 -2
- package/bin/cli.js +1 -1
- package/docs/expressions/algebra.md +27 -0
- package/docs/expressions/syntax.md +1 -1
- package/docs/reference/functions/abs.md +6 -0
- package/docs/reference/functions/acos.md +6 -0
- package/docs/reference/functions/acosh.md +6 -0
- package/docs/reference/functions/acot.md +6 -0
- package/docs/reference/functions/acoth.md +6 -0
- package/docs/reference/functions/acsc.md +6 -0
- package/docs/reference/functions/acsch.md +6 -0
- package/docs/reference/functions/add.md +6 -0
- package/docs/reference/functions/and.md +6 -0
- package/docs/reference/functions/apply.md +6 -0
- package/docs/reference/functions/arg.md +6 -0
- package/docs/reference/functions/asec.md +6 -0
- package/docs/reference/functions/asech.md +6 -0
- package/docs/reference/functions/asin.md +6 -0
- package/docs/reference/functions/asinh.md +6 -0
- package/docs/reference/functions/atan.md +6 -0
- package/docs/reference/functions/atan2.md +6 -0
- package/docs/reference/functions/atanh.md +6 -0
- package/docs/reference/functions/bellNumbers.md +6 -0
- package/docs/reference/functions/bin.md +6 -0
- package/docs/reference/functions/bitAnd.md +6 -0
- package/docs/reference/functions/bitNot.md +6 -0
- package/docs/reference/functions/bitOr.md +6 -0
- package/docs/reference/functions/bitXor.md +6 -0
- package/docs/reference/functions/catalan.md +6 -0
- package/docs/reference/functions/cbrt.md +6 -0
- package/docs/reference/functions/ceil.md +6 -0
- package/docs/reference/functions/clone.md +6 -0
- package/docs/reference/functions/column.md +6 -0
- package/docs/reference/functions/combinations.md +6 -0
- package/docs/reference/functions/combinationsWithRep.md +6 -0
- package/docs/reference/functions/compare.md +6 -0
- package/docs/reference/functions/compareNatural.md +6 -0
- package/docs/reference/functions/compareText.md +6 -0
- package/docs/reference/functions/compile.md +6 -0
- package/docs/reference/functions/composition.md +6 -0
- package/docs/reference/functions/concat.md +6 -0
- package/docs/reference/functions/conj.md +6 -0
- package/docs/reference/functions/cos.md +6 -0
- package/docs/reference/functions/cosh.md +6 -0
- package/docs/reference/functions/cot.md +6 -0
- package/docs/reference/functions/coth.md +6 -0
- package/docs/reference/functions/count.md +6 -0
- package/docs/reference/functions/cross.md +6 -0
- package/docs/reference/functions/csc.md +6 -0
- package/docs/reference/functions/csch.md +6 -0
- package/docs/reference/functions/ctranspose.md +6 -0
- package/docs/reference/functions/cube.md +6 -0
- package/docs/reference/functions/deepEqual.md +6 -0
- package/docs/reference/functions/derivative.md +6 -0
- package/docs/reference/functions/det.md +6 -0
- package/docs/reference/functions/diag.md +6 -0
- package/docs/reference/functions/diff.md +6 -0
- package/docs/reference/functions/distance.md +6 -0
- package/docs/reference/functions/divide.md +6 -0
- package/docs/reference/functions/dot.md +6 -0
- package/docs/reference/functions/dotDivide.md +6 -0
- package/docs/reference/functions/dotMultiply.md +6 -0
- package/docs/reference/functions/dotPow.md +6 -0
- package/docs/reference/functions/eigs.md +6 -0
- package/docs/reference/functions/equal.md +6 -0
- package/docs/reference/functions/equalText.md +6 -0
- package/docs/reference/functions/erf.md +6 -0
- package/docs/reference/functions/evaluate.md +6 -0
- package/docs/reference/functions/exp.md +6 -0
- package/docs/reference/functions/expm.md +6 -0
- package/docs/reference/functions/expm1.md +6 -0
- package/docs/reference/functions/factorial.md +6 -0
- package/docs/reference/functions/filter.md +6 -0
- package/docs/reference/functions/fix.md +6 -0
- package/docs/reference/functions/flatten.md +6 -0
- package/docs/reference/functions/floor.md +6 -0
- package/docs/reference/functions/forEach.md +6 -0
- package/docs/reference/functions/format.md +6 -0
- package/docs/reference/functions/gamma.md +6 -0
- package/docs/reference/functions/gcd.md +6 -0
- package/docs/reference/functions/getMatrixDataType.md +6 -0
- package/docs/reference/functions/hasNumericValue.md +6 -0
- package/docs/reference/functions/help.md +6 -0
- package/docs/reference/functions/hex.md +6 -0
- package/docs/reference/functions/hypot.md +6 -0
- package/docs/reference/functions/identity.md +6 -0
- package/docs/reference/functions/im.md +6 -0
- package/docs/reference/functions/intersect.md +6 -0
- package/docs/reference/functions/inv.md +6 -0
- package/docs/reference/functions/invmod.md +47 -0
- package/docs/reference/functions/isInteger.md +6 -0
- package/docs/reference/functions/isNaN.md +6 -0
- package/docs/reference/functions/isNegative.md +6 -0
- package/docs/reference/functions/isNumeric.md +6 -0
- package/docs/reference/functions/isPositive.md +6 -0
- package/docs/reference/functions/isPrime.md +6 -0
- package/docs/reference/functions/isZero.md +6 -0
- package/docs/reference/functions/kldivergence.md +6 -0
- package/docs/reference/functions/kron.md +6 -0
- package/docs/reference/functions/larger.md +6 -0
- package/docs/reference/functions/largerEq.md +6 -0
- package/docs/reference/functions/lcm.md +6 -0
- package/docs/reference/functions/leafCount.md +52 -0
- package/docs/reference/functions/leftShift.md +6 -0
- package/docs/reference/functions/log.md +6 -0
- package/docs/reference/functions/log10.md +6 -0
- package/docs/reference/functions/log1p.md +6 -0
- package/docs/reference/functions/log2.md +6 -0
- package/docs/reference/functions/lsolve.md +6 -0
- package/docs/reference/functions/lsolveAll.md +6 -0
- package/docs/reference/functions/lup.md +6 -0
- package/docs/reference/functions/lusolve.md +6 -0
- package/docs/reference/functions/mad.md +6 -0
- package/docs/reference/functions/map.md +6 -0
- package/docs/reference/functions/matrixFromColumns.md +6 -0
- package/docs/reference/functions/matrixFromFunction.md +6 -0
- package/docs/reference/functions/matrixFromRows.md +6 -0
- package/docs/reference/functions/max.md +6 -0
- package/docs/reference/functions/mean.md +6 -0
- package/docs/reference/functions/median.md +6 -0
- package/docs/reference/functions/min.md +6 -0
- package/docs/reference/functions/mod.md +6 -0
- package/docs/reference/functions/mode.md +6 -0
- package/docs/reference/functions/multinomial.md +6 -0
- package/docs/reference/functions/multiply.md +6 -0
- package/docs/reference/functions/norm.md +6 -0
- package/docs/reference/functions/not.md +6 -0
- package/docs/reference/functions/nthRoot.md +6 -0
- package/docs/reference/functions/nthRoots.md +6 -0
- package/docs/reference/functions/numeric.md +6 -0
- package/docs/reference/functions/oct.md +6 -0
- package/docs/reference/functions/ones.md +6 -0
- package/docs/reference/functions/or.md +6 -0
- package/docs/reference/functions/parser.md +6 -0
- package/docs/reference/functions/partitionSelect.md +6 -0
- package/docs/reference/functions/permutations.md +6 -0
- package/docs/reference/functions/pickRandom.md +6 -0
- package/docs/reference/functions/pow.md +6 -0
- package/docs/reference/functions/print.md +6 -0
- package/docs/reference/functions/prod.md +6 -0
- package/docs/reference/functions/qr.md +6 -0
- package/docs/reference/functions/quantileSeq.md +6 -0
- package/docs/reference/functions/random.md +6 -0
- package/docs/reference/functions/randomInt.md +6 -0
- package/docs/reference/functions/range.md +6 -0
- package/docs/reference/functions/rationalize.md +7 -1
- package/docs/reference/functions/re.md +6 -0
- package/docs/reference/functions/reshape.md +7 -0
- package/docs/reference/functions/resize.md +6 -0
- package/docs/reference/functions/resolve.md +46 -0
- package/docs/reference/functions/rightArithShift.md +6 -0
- package/docs/reference/functions/rightLogShift.md +6 -0
- package/docs/reference/functions/rotate.md +6 -0
- package/docs/reference/functions/rotationMatrix.md +6 -0
- package/docs/reference/functions/round.md +6 -0
- package/docs/reference/functions/row.md +6 -0
- package/docs/reference/functions/sec.md +6 -0
- package/docs/reference/functions/sech.md +6 -0
- package/docs/reference/functions/setCartesian.md +6 -0
- package/docs/reference/functions/setDifference.md +6 -0
- package/docs/reference/functions/setDistinct.md +6 -0
- package/docs/reference/functions/setIntersect.md +6 -0
- package/docs/reference/functions/setIsSubset.md +6 -0
- package/docs/reference/functions/setMultiplicity.md +6 -0
- package/docs/reference/functions/setPowerset.md +6 -0
- package/docs/reference/functions/setSize.md +6 -0
- package/docs/reference/functions/setSymDifference.md +6 -0
- package/docs/reference/functions/setUnion.md +6 -0
- package/docs/reference/functions/sign.md +6 -0
- package/docs/reference/functions/simplify.md +47 -7
- package/docs/reference/functions/simplifyCore.md +50 -0
- package/docs/reference/functions/sin.md +6 -0
- package/docs/reference/functions/sinh.md +6 -0
- package/docs/reference/functions/size.md +6 -0
- package/docs/reference/functions/slu.md +6 -0
- package/docs/reference/functions/smaller.md +6 -0
- package/docs/reference/functions/smallerEq.md +6 -0
- package/docs/reference/functions/sort.md +6 -0
- package/docs/reference/functions/sqrt.md +6 -0
- package/docs/reference/functions/sqrtm.md +6 -0
- package/docs/reference/functions/square.md +6 -0
- package/docs/reference/functions/squeeze.md +6 -0
- package/docs/reference/functions/std.md +6 -0
- package/docs/reference/functions/stirlingS2.md +6 -0
- package/docs/reference/functions/subset.md +6 -0
- package/docs/reference/functions/subtract.md +6 -0
- package/docs/reference/functions/sum.md +6 -0
- package/docs/reference/functions/tan.md +6 -0
- package/docs/reference/functions/tanh.md +6 -0
- package/docs/reference/functions/to.md +6 -0
- package/docs/reference/functions/trace.md +6 -0
- package/docs/reference/functions/transpose.md +6 -0
- package/docs/reference/functions/typeOf.md +6 -0
- package/docs/reference/functions/unaryMinus.md +6 -0
- package/docs/reference/functions/unaryPlus.md +6 -0
- package/docs/reference/functions/unequal.md +6 -0
- package/docs/reference/functions/usolve.md +6 -0
- package/docs/reference/functions/usolveAll.md +6 -0
- package/docs/reference/functions/variance.md +6 -0
- package/docs/reference/functions/xgcd.md +6 -0
- package/docs/reference/functions/xor.md +6 -0
- package/docs/reference/functions/zeros.md +6 -0
- package/docs/reference/functions.md +4 -0
- package/lib/browser/math.js +7 -7
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/create.js +4 -4
- package/lib/cjs/core/function/import.js +3 -3
- package/lib/cjs/core/function/typed.js +2 -2
- package/lib/cjs/defaultInstance.js +3 -3
- package/lib/cjs/entry/allFactoriesAny.js +1 -1
- package/lib/cjs/entry/allFactoriesNumber.js +1 -1
- package/lib/cjs/entry/configReadonly.js +1 -1
- package/lib/cjs/entry/dependenciesAny/dependenciesInvmod.generated.js +41 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +18 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +21 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +32 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +18 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +21 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +16 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +78 -29
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +102 -60
- package/lib/cjs/entry/pureFunctionsAny.generated.js +65 -55
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +46 -48
- package/lib/cjs/expression/Help.js +4 -0
- package/lib/cjs/expression/Parser.js +1 -1
- package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +20 -6
- package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/arithmetic/invmod.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/forEach.js +1 -1
- package/lib/cjs/expression/node/FunctionNode.js +7 -7
- package/lib/cjs/expression/node/IndexNode.js +1 -1
- package/lib/cjs/expression/node/Node.js +3 -3
- package/lib/cjs/expression/node/ObjectNode.js +1 -1
- package/lib/cjs/expression/node/utils/access.js +1 -1
- package/lib/cjs/expression/node/utils/assign.js +1 -1
- package/lib/cjs/expression/parse.js +13 -13
- package/lib/cjs/factoriesAny.js +32 -0
- package/lib/cjs/factoriesNumber.js +16 -0
- package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
- package/lib/cjs/function/algebra/leafCount.js +66 -0
- package/lib/cjs/function/algebra/rationalize.js +36 -39
- package/lib/cjs/function/algebra/resolve.js +106 -0
- package/lib/cjs/function/algebra/simplify/simplifyConstant.js +226 -32
- package/lib/cjs/function/algebra/simplify/util.js +171 -33
- package/lib/cjs/function/algebra/simplify.js +608 -191
- package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +83 -31
- package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
- package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
- package/lib/cjs/function/arithmetic/ceil.js +3 -3
- package/lib/cjs/function/arithmetic/floor.js +3 -3
- package/lib/cjs/function/arithmetic/invmod.js +73 -0
- package/lib/cjs/function/arithmetic/norm.js +1 -1
- package/lib/cjs/function/arithmetic/round.js +1 -1
- package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
- package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
- package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
- package/lib/cjs/function/probability/util/seededRNG.js +2 -2
- package/lib/cjs/function/relational/compareNatural.js +6 -6
- package/lib/cjs/header.js +3 -3
- package/lib/cjs/plain/bignumber/index.js +1 -1
- package/lib/cjs/plain/number/combinations.js +18 -6
- package/lib/cjs/type/bignumber/BigNumber.js +2 -2
- package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
- package/lib/cjs/type/boolean.js +2 -2
- package/lib/cjs/type/complex/Complex.js +14 -14
- package/lib/cjs/type/complex/function/complex.js +1 -1
- package/lib/cjs/type/fraction/Fraction.js +6 -6
- package/lib/cjs/type/fraction/function/fraction.js +1 -1
- package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
- package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
- package/lib/cjs/type/number.js +1 -1
- package/lib/cjs/type/string.js +2 -2
- package/lib/cjs/type/unit/Unit.js +8 -8
- package/lib/cjs/utils/customs.js +2 -2
- package/lib/cjs/utils/emitter.js +1 -1
- package/lib/cjs/utils/function.js +2 -2
- package/lib/cjs/utils/is.js +6 -6
- package/lib/cjs/utils/latex.js +3 -3
- package/lib/cjs/utils/lruQueue.js +1 -1
- package/lib/cjs/utils/map.js +3 -3
- package/lib/cjs/utils/object.js +2 -2
- package/lib/cjs/utils/snapshot.js +7 -7
- package/lib/cjs/utils/string.js +2 -2
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesInvmod.generated.js +24 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +14 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
- package/lib/esm/entry/dependenciesAny.generated.js +4 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +12 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +14 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +68 -22
- package/lib/esm/entry/impureFunctionsNumber.generated.js +92 -52
- package/lib/esm/entry/pureFunctionsAny.generated.js +53 -42
- package/lib/esm/entry/pureFunctionsNumber.generated.js +32 -32
- package/lib/esm/expression/Help.js +4 -0
- package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +10 -1
- package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/arithmetic/invmod.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/forEach.js +1 -1
- package/lib/esm/factoriesAny.js +4 -0
- package/lib/esm/factoriesNumber.js +2 -0
- package/lib/esm/function/algebra/leafCount.js +59 -0
- package/lib/esm/function/algebra/rationalize.js +36 -38
- package/lib/esm/function/algebra/resolve.js +95 -0
- package/lib/esm/function/algebra/simplify/simplifyConstant.js +200 -32
- package/lib/esm/function/algebra/simplify/util.js +170 -34
- package/lib/esm/function/algebra/simplify.js +603 -186
- package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +75 -31
- package/lib/esm/function/arithmetic/invmod.js +57 -0
- package/lib/esm/header.js +1 -1
- package/lib/esm/plain/number/combinations.js +18 -6
- package/lib/esm/version.js +1 -1
- package/package.json +21 -15
- package/types/index.d.ts +48 -6
- package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
- package/lib/esm/function/algebra/simplify/resolve.js +0 -67
|
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createSimplifyCore = void 0;
|
|
7
7
|
|
|
8
|
-
var _is = require("
|
|
8
|
+
var _is = require("../../utils/is.js");
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _util = require("./simplify/util.js");
|
|
11
|
+
|
|
12
|
+
var _factory = require("../../utils/factory.js");
|
|
11
13
|
|
|
12
14
|
var name = 'simplifyCore';
|
|
13
|
-
var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', '
|
|
15
|
+
var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
|
|
14
16
|
var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
15
17
|
var equal = _ref.equal,
|
|
16
18
|
isZero = _ref.isZero,
|
|
@@ -19,12 +21,25 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
19
21
|
multiply = _ref.multiply,
|
|
20
22
|
divide = _ref.divide,
|
|
21
23
|
pow = _ref.pow,
|
|
24
|
+
AccessorNode = _ref.AccessorNode,
|
|
25
|
+
ArrayNode = _ref.ArrayNode,
|
|
22
26
|
ConstantNode = _ref.ConstantNode,
|
|
23
|
-
OperatorNode = _ref.OperatorNode,
|
|
24
27
|
FunctionNode = _ref.FunctionNode,
|
|
25
|
-
|
|
28
|
+
IndexNode = _ref.IndexNode,
|
|
29
|
+
ObjectNode = _ref.ObjectNode,
|
|
30
|
+
OperatorNode = _ref.OperatorNode,
|
|
31
|
+
ParenthesisNode = _ref.ParenthesisNode,
|
|
32
|
+
SymbolNode = _ref.SymbolNode;
|
|
26
33
|
var node0 = new ConstantNode(0);
|
|
27
34
|
var node1 = new ConstantNode(1);
|
|
35
|
+
|
|
36
|
+
var _createUtil = (0, _util.createUtil)({
|
|
37
|
+
FunctionNode: FunctionNode,
|
|
38
|
+
OperatorNode: OperatorNode,
|
|
39
|
+
SymbolNode: SymbolNode
|
|
40
|
+
}),
|
|
41
|
+
hasProperty = _createUtil.hasProperty,
|
|
42
|
+
isCommutative = _createUtil.isCommutative;
|
|
28
43
|
/**
|
|
29
44
|
* simplifyCore() performs single pass simplification suitable for
|
|
30
45
|
* applications requiring ultimate performance. In contrast, simplify()
|
|
@@ -33,30 +48,54 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
33
48
|
*
|
|
34
49
|
* Syntax:
|
|
35
50
|
*
|
|
36
|
-
*
|
|
51
|
+
* simplifyCore(expr)
|
|
37
52
|
*
|
|
38
53
|
* Examples:
|
|
39
54
|
*
|
|
40
55
|
* const f = math.parse('2 * 1 * x ^ (2 - 1)')
|
|
41
|
-
* math.
|
|
42
|
-
* math.simplify('2 * 1 * x ^ (2 - 1)', [math.
|
|
56
|
+
* math.simpifyCore(f) // Node {2 * x}
|
|
57
|
+
* math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplifyCore]) // Node {2 * x}
|
|
43
58
|
*
|
|
44
59
|
* See also:
|
|
45
60
|
*
|
|
46
|
-
* derivative
|
|
61
|
+
* simplify, resolve, derivative
|
|
47
62
|
*
|
|
48
63
|
* @param {Node} node
|
|
49
64
|
* The expression to be simplified
|
|
65
|
+
* @param {Object} options
|
|
66
|
+
* Simplification options, as per simplify()
|
|
67
|
+
* @return {Node} Returns expression with basic simplifications applied
|
|
50
68
|
*/
|
|
51
69
|
|
|
52
|
-
function simplifyCore(node) {
|
|
53
|
-
if ((0, _is.isOperatorNode)(node) && node.isUnary()) {
|
|
54
|
-
var a0 = simplifyCore(node.args[0]);
|
|
55
70
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
71
|
+
function simplifyCore(node, options) {
|
|
72
|
+
var context = options ? options.context : undefined;
|
|
73
|
+
|
|
74
|
+
if (hasProperty(node, 'trivial', context)) {
|
|
75
|
+
// This node does nothing if it has only one argument, so if so,
|
|
76
|
+
// return that argument simplified
|
|
77
|
+
if ((0, _is.isFunctionNode)(node) && node.args.length === 1) {
|
|
78
|
+
return simplifyCore(node.args[0], options);
|
|
79
|
+
} // For other node types, we try the generic methods
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
var simpChild = false;
|
|
83
|
+
var childCount = 0;
|
|
84
|
+
node.forEach(function (c) {
|
|
85
|
+
++childCount;
|
|
86
|
+
|
|
87
|
+
if (childCount === 1) {
|
|
88
|
+
simpChild = simplifyCore(c, options);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
if (childCount === 1) {
|
|
93
|
+
return simpChild;
|
|
59
94
|
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if ((0, _is.isOperatorNode)(node) && node.isUnary()) {
|
|
98
|
+
var a0 = simplifyCore(node.args[0], options);
|
|
60
99
|
|
|
61
100
|
if (node.op === '-') {
|
|
62
101
|
// unary minus
|
|
@@ -71,9 +110,9 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
71
110
|
return new OperatorNode(node.op, node.fn, [a0]);
|
|
72
111
|
}
|
|
73
112
|
} else if ((0, _is.isOperatorNode)(node) && node.isBinary()) {
|
|
74
|
-
var _a = simplifyCore(node.args[0]);
|
|
113
|
+
var _a = simplifyCore(node.args[0], options);
|
|
75
114
|
|
|
76
|
-
var a1 = simplifyCore(node.args[1]);
|
|
115
|
+
var a1 = simplifyCore(node.args[1], options);
|
|
77
116
|
|
|
78
117
|
if (node.op === '+') {
|
|
79
118
|
if ((0, _is.isConstantNode)(_a)) {
|
|
@@ -109,7 +148,7 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
109
148
|
}
|
|
110
149
|
|
|
111
150
|
if ((0, _is.isOperatorNode)(a1) && a1.isUnary() && a1.op === '-') {
|
|
112
|
-
return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]));
|
|
151
|
+
return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);
|
|
113
152
|
}
|
|
114
153
|
|
|
115
154
|
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
|
@@ -130,7 +169,7 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
130
169
|
return node0;
|
|
131
170
|
} else if (equal(a1.value, 1)) {
|
|
132
171
|
return _a;
|
|
133
|
-
} else if ((0, _is.isOperatorNode)(_a) && _a.isBinary() && _a.op === node.op) {
|
|
172
|
+
} else if ((0, _is.isOperatorNode)(_a) && _a.isBinary() && _a.op === node.op && isCommutative(node, context)) {
|
|
134
173
|
var a00 = _a.args[0];
|
|
135
174
|
|
|
136
175
|
if ((0, _is.isConstantNode)(a00)) {
|
|
@@ -139,7 +178,11 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
139
178
|
}
|
|
140
179
|
}
|
|
141
180
|
|
|
142
|
-
|
|
181
|
+
if (isCommutative(node, context)) {
|
|
182
|
+
return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left
|
|
183
|
+
} else {
|
|
184
|
+
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
|
|
185
|
+
}
|
|
143
186
|
}
|
|
144
187
|
|
|
145
188
|
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
|
|
@@ -175,19 +218,28 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
175
218
|
|
|
176
219
|
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
|
177
220
|
}
|
|
178
|
-
} else if ((0, _is.
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
221
|
+
} else if ((0, _is.isFunctionNode)(node)) {
|
|
222
|
+
return new FunctionNode(simplifyCore(node.fn), node.args.map(function (n) {
|
|
223
|
+
return simplifyCore(n, options);
|
|
224
|
+
}));
|
|
225
|
+
} else if ((0, _is.isArrayNode)(node)) {
|
|
226
|
+
return new ArrayNode(node.items.map(function (n) {
|
|
227
|
+
return simplifyCore(n, options);
|
|
228
|
+
}));
|
|
229
|
+
} else if ((0, _is.isAccessorNode)(node)) {
|
|
230
|
+
return new AccessorNode(simplifyCore(node.object, options), simplifyCore(node.index, options));
|
|
231
|
+
} else if ((0, _is.isIndexNode)(node)) {
|
|
232
|
+
return new IndexNode(node.dimensions.map(function (n) {
|
|
233
|
+
return simplifyCore(n, options);
|
|
234
|
+
}));
|
|
235
|
+
} else if ((0, _is.isObjectNode)(node)) {
|
|
236
|
+
var newProps = {};
|
|
237
|
+
|
|
238
|
+
for (var prop in node.properties) {
|
|
239
|
+
newProps[prop] = simplifyCore(node.properties[prop], options);
|
|
183
240
|
}
|
|
184
241
|
|
|
185
|
-
return new
|
|
186
|
-
} else if ((0, _is.isFunctionNode)(node)) {
|
|
187
|
-
var args = node.args.map(simplifyCore).map(function (arg) {
|
|
188
|
-
return (0, _is.isParenthesisNode)(arg) ? arg.content : arg;
|
|
189
|
-
});
|
|
190
|
-
return new FunctionNode(simplifyCore(node.fn), args);
|
|
242
|
+
return new ObjectNode(newProps);
|
|
191
243
|
} else {// cannot simplify
|
|
192
244
|
}
|
|
193
245
|
|
|
@@ -107,7 +107,7 @@ var createLsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
107
107
|
}
|
|
108
108
|
} else if (k === 0) {
|
|
109
109
|
// singular row, RHS is zero
|
|
110
|
-
var bNew = (0, _toConsumableArray2
|
|
110
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
|
111
111
|
bNew[i] = 1;
|
|
112
112
|
|
|
113
113
|
for (var _j = i + 1; _j < columns; _j++) {
|
|
@@ -187,7 +187,7 @@ var createLsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
187
187
|
}
|
|
188
188
|
} else if (k === 0) {
|
|
189
189
|
// singular row, RHS is zero
|
|
190
|
-
var bNew = (0, _toConsumableArray2
|
|
190
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
|
191
191
|
bNew[i] = 1;
|
|
192
192
|
|
|
193
193
|
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
|
@@ -107,7 +107,7 @@ var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
107
107
|
}
|
|
108
108
|
} else if (k === 0) {
|
|
109
109
|
// singular row, RHS is zero
|
|
110
|
-
var bNew = (0, _toConsumableArray2
|
|
110
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
|
111
111
|
bNew[i] = 1;
|
|
112
112
|
|
|
113
113
|
for (var _j = i - 1; _j >= 0; _j--) {
|
|
@@ -187,7 +187,7 @@ var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
187
187
|
}
|
|
188
188
|
} else if (k === 0) {
|
|
189
189
|
// singular row, RHS is zero
|
|
190
|
-
var bNew = (0, _toConsumableArray2
|
|
190
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
|
191
191
|
bNew[i] = 1; // loop upper triangular
|
|
192
192
|
|
|
193
193
|
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
|
@@ -91,7 +91,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
91
91
|
return round(x, n);
|
|
92
92
|
} else {
|
|
93
93
|
var _$split = "".concat(x, "e").split('e'),
|
|
94
|
-
_$split2 = (0, _slicedToArray2
|
|
94
|
+
_$split2 = (0, _slicedToArray2.default)(_$split, 2),
|
|
95
95
|
number = _$split2[0],
|
|
96
96
|
exponent = _$split2[1];
|
|
97
97
|
|
|
@@ -99,7 +99,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
99
99
|
|
|
100
100
|
var _$split3 = "".concat(result, "e").split('e');
|
|
101
101
|
|
|
102
|
-
var _$split4 = (0, _slicedToArray2
|
|
102
|
+
var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
|
|
103
103
|
|
|
104
104
|
number = _$split4[0];
|
|
105
105
|
exponent = _$split4[1];
|
|
@@ -123,7 +123,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
123
123
|
if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
|
124
124
|
return round(x, n);
|
|
125
125
|
} else {
|
|
126
|
-
return x.toDecimalPlaces(n.toNumber(), _decimal
|
|
126
|
+
return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_CEIL);
|
|
127
127
|
}
|
|
128
128
|
},
|
|
129
129
|
Fraction: function Fraction(x) {
|
|
@@ -88,7 +88,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
88
88
|
return round(x, n);
|
|
89
89
|
} else {
|
|
90
90
|
var _$split = "".concat(x, "e").split('e'),
|
|
91
|
-
_$split2 = (0, _slicedToArray2
|
|
91
|
+
_$split2 = (0, _slicedToArray2.default)(_$split, 2),
|
|
92
92
|
number = _$split2[0],
|
|
93
93
|
exponent = _$split2[1];
|
|
94
94
|
|
|
@@ -96,7 +96,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
96
96
|
|
|
97
97
|
var _$split3 = "".concat(result, "e").split('e');
|
|
98
98
|
|
|
99
|
-
var _$split4 = (0, _slicedToArray2
|
|
99
|
+
var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
|
|
100
100
|
|
|
101
101
|
number = _$split4[0];
|
|
102
102
|
exponent = _$split4[1];
|
|
@@ -120,7 +120,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
120
120
|
if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
|
121
121
|
return round(x, n);
|
|
122
122
|
} else {
|
|
123
|
-
return x.toDecimalPlaces(n.toNumber(), _decimal
|
|
123
|
+
return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_FLOOR);
|
|
124
124
|
}
|
|
125
125
|
},
|
|
126
126
|
Fraction: function Fraction(x) {
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createInvmod = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _factory = require("../../utils/factory.js");
|
|
13
|
+
|
|
14
|
+
var name = 'invmod';
|
|
15
|
+
var dependencies = ['typed', 'config', 'BigNumber', 'xgcd', 'equal', 'smaller', 'mod', 'add', 'isInteger'];
|
|
16
|
+
var createInvmod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
17
|
+
var typed = _ref.typed,
|
|
18
|
+
config = _ref.config,
|
|
19
|
+
BigNumber = _ref.BigNumber,
|
|
20
|
+
xgcd = _ref.xgcd,
|
|
21
|
+
equal = _ref.equal,
|
|
22
|
+
smaller = _ref.smaller,
|
|
23
|
+
mod = _ref.mod,
|
|
24
|
+
add = _ref.add,
|
|
25
|
+
isInteger = _ref.isInteger;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation `ax ≣ 1 (mod b)`
|
|
29
|
+
* See https://en.wikipedia.org/wiki/Modular_multiplicative_inverse.
|
|
30
|
+
*
|
|
31
|
+
* Syntax:
|
|
32
|
+
*
|
|
33
|
+
* math.invmod(a, b)
|
|
34
|
+
*
|
|
35
|
+
* Examples:
|
|
36
|
+
*
|
|
37
|
+
* math.invmod(8, 12) // returns NaN
|
|
38
|
+
* math.invmod(7, 13) // return 2
|
|
39
|
+
* math.invmod(15151, 15122) // returns 10429
|
|
40
|
+
*
|
|
41
|
+
* See also:
|
|
42
|
+
*
|
|
43
|
+
* gcd, xgcd
|
|
44
|
+
*
|
|
45
|
+
* @param {number | BigNumber} a An integer number
|
|
46
|
+
* @param {number | BigNumber} b An integer number
|
|
47
|
+
* @return {number | BigNumber } Returns an integer number
|
|
48
|
+
* where `invmod(a,b)*a ≣ 1 (mod b)`
|
|
49
|
+
*/
|
|
50
|
+
return typed(name, {
|
|
51
|
+
'number, number': invmod,
|
|
52
|
+
'BigNumber, BigNumber': invmod
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
function invmod(a, b) {
|
|
56
|
+
if (!isInteger(a) || !isInteger(b)) throw new Error('Parameters in function invmod must be integer numbers');
|
|
57
|
+
a = mod(a, b);
|
|
58
|
+
if (equal(b, 0)) throw new Error('Divisor must be non zero');
|
|
59
|
+
var res = xgcd(a, b);
|
|
60
|
+
res = res.valueOf();
|
|
61
|
+
|
|
62
|
+
var _res = res,
|
|
63
|
+
_res2 = (0, _slicedToArray2.default)(_res, 2),
|
|
64
|
+
gcd = _res2[0],
|
|
65
|
+
inv = _res2[1];
|
|
66
|
+
|
|
67
|
+
if (!equal(gcd, BigNumber(1))) return NaN;
|
|
68
|
+
inv = mod(inv, b);
|
|
69
|
+
if (smaller(inv, BigNumber(0))) inv = add(inv, b);
|
|
70
|
+
return inv;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
exports.createInvmod = createInvmod;
|
|
@@ -25,7 +25,7 @@ var _index = require("../../plain/number/index.js");
|
|
|
25
25
|
|
|
26
26
|
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; }
|
|
27
27
|
|
|
28
|
-
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) { (0, _defineProperty2
|
|
28
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
29
29
|
|
|
30
30
|
var NO_INT = 'Number of decimals in function round must be an integer';
|
|
31
31
|
var name = 'round';
|
|
@@ -11,7 +11,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
11
11
|
|
|
12
12
|
var _object = require("../../../utils/object.js");
|
|
13
13
|
|
|
14
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it
|
|
14
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
15
15
|
|
|
16
16
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
17
17
|
|
|
@@ -80,7 +80,7 @@ function createComplexEigs(_ref) {
|
|
|
80
80
|
|
|
81
81
|
if (findVectors) {
|
|
82
82
|
vectors = findEigenvectors(arr, N, C, values, prec, type);
|
|
83
|
-
vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2
|
|
83
|
+
vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2.default)(vectors));
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
return {
|
|
@@ -360,7 +360,7 @@ function createComplexEigs(_ref) {
|
|
|
360
360
|
} else if (n === 2 || smaller(abs(arr[n - 2][n - 3]), prec)) {
|
|
361
361
|
lastConvergenceBefore = 0;
|
|
362
362
|
var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);
|
|
363
|
-
lambdas.push.apply(lambdas, (0, _toConsumableArray2
|
|
363
|
+
lambdas.push.apply(lambdas, (0, _toConsumableArray2.default)(ll)); // keep track of transformations
|
|
364
364
|
|
|
365
365
|
if (findVectors) {
|
|
366
366
|
Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));
|
|
@@ -488,7 +488,7 @@ function createComplexEigs(_ref) {
|
|
|
488
488
|
solutions.push(approxVec);
|
|
489
489
|
}
|
|
490
490
|
|
|
491
|
-
vectors.push.apply(vectors, (0, _toConsumableArray2
|
|
491
|
+
vectors.push.apply(vectors, (0, _toConsumableArray2.default)(solutions.map(function (v) {
|
|
492
492
|
return flatten(v);
|
|
493
493
|
})));
|
|
494
494
|
}
|
|
@@ -568,7 +568,7 @@ function createComplexEigs(_ref) {
|
|
|
568
568
|
for (var i = 0; i < arr.length; i++) {
|
|
569
569
|
var _arr$i;
|
|
570
570
|
|
|
571
|
-
(_arr$i = arr[i]).push.apply(_arr$i, (0, _toConsumableArray2
|
|
571
|
+
(_arr$i = arr[i]).push.apply(_arr$i, (0, _toConsumableArray2.default)(Array(N - arr[i].length).fill(0)));
|
|
572
572
|
} // add rows
|
|
573
573
|
|
|
574
574
|
|
|
@@ -7,7 +7,7 @@ exports.createMatrixFromColumns = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _factory = require("../../utils/factory.js");
|
|
9
9
|
|
|
10
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it
|
|
10
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
11
11
|
|
|
12
12
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
13
13
|
|
|
@@ -7,7 +7,7 @@ exports.createMatrixFromRows = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _factory = require("../../utils/factory.js");
|
|
9
9
|
|
|
10
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it
|
|
10
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
11
11
|
|
|
12
12
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
13
13
|
|
|
@@ -9,13 +9,13 @@ exports.createRng = createRng;
|
|
|
9
9
|
|
|
10
10
|
var _seedrandom = _interopRequireDefault(require("seedrandom"));
|
|
11
11
|
|
|
12
|
-
var singletonRandom = /* #__PURE__ */(0, _seedrandom
|
|
12
|
+
var singletonRandom = /* #__PURE__ */(0, _seedrandom.default)(Date.now());
|
|
13
13
|
|
|
14
14
|
function createRng(randomSeed) {
|
|
15
15
|
var random; // create a new random generator with given seed
|
|
16
16
|
|
|
17
17
|
function setSeed(seed) {
|
|
18
|
-
random = seed === null ? singletonRandom : (0, _seedrandom
|
|
18
|
+
random = seed === null ? singletonRandom : (0, _seedrandom.default)(String(seed));
|
|
19
19
|
} // initialize a seeded pseudo random number generator with config's random seed
|
|
20
20
|
|
|
21
21
|
|
|
@@ -101,7 +101,7 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
|
|
|
101
101
|
// c can be number, BigNumber, or Fraction
|
|
102
102
|
return c > 0 ? 1 : -1; // return a number
|
|
103
103
|
} else {
|
|
104
|
-
return (0, _javascriptNaturalSort
|
|
104
|
+
return (0, _javascriptNaturalSort.default)(typeX, typeY);
|
|
105
105
|
}
|
|
106
106
|
} // matrix types
|
|
107
107
|
|
|
@@ -112,13 +112,13 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
|
|
|
112
112
|
if (c !== 0) {
|
|
113
113
|
return c;
|
|
114
114
|
} else {
|
|
115
|
-
return (0, _javascriptNaturalSort
|
|
115
|
+
return (0, _javascriptNaturalSort.default)(typeX, typeY);
|
|
116
116
|
}
|
|
117
117
|
} // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'
|
|
118
118
|
|
|
119
119
|
|
|
120
120
|
if (typeX !== typeY) {
|
|
121
|
-
return (0, _javascriptNaturalSort
|
|
121
|
+
return (0, _javascriptNaturalSort.default)(typeX, typeY);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
if (typeX === 'Complex') {
|
|
@@ -139,7 +139,7 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
if (typeX === 'string') {
|
|
142
|
-
return (0, _javascriptNaturalSort
|
|
142
|
+
return (0, _javascriptNaturalSort.default)(x, y);
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
if (typeX === 'Object') {
|
|
@@ -252,8 +252,8 @@ var createCompareNatural = /* #__PURE__ */(0, _factory.factory)(name, dependenci
|
|
|
252
252
|
var keysX = Object.keys(x);
|
|
253
253
|
var keysY = Object.keys(y); // compare keys
|
|
254
254
|
|
|
255
|
-
keysX.sort(_javascriptNaturalSort
|
|
256
|
-
keysY.sort(_javascriptNaturalSort
|
|
255
|
+
keysX.sort(_javascriptNaturalSort.default);
|
|
256
|
+
keysY.sort(_javascriptNaturalSort.default);
|
|
257
257
|
var c = compareArrays(compareNatural, keysX, keysY);
|
|
258
258
|
|
|
259
259
|
if (c !== 0) {
|
package/lib/cjs/header.js
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
* It features real and complex numbers, units, matrices, a large set of
|
|
7
7
|
* mathematical functions, and a flexible expression parser.
|
|
8
8
|
*
|
|
9
|
-
* @version 10.0
|
|
10
|
-
* @date
|
|
9
|
+
* @version 10.2.0
|
|
10
|
+
* @date 2022-03-01
|
|
11
11
|
*
|
|
12
12
|
* @license
|
|
13
|
-
* Copyright (C) 2013-
|
|
13
|
+
* Copyright (C) 2013-2022 Jos de Jong <wjosdejong@gmail.com>
|
|
14
14
|
*
|
|
15
15
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
16
16
|
* use this file except in compliance with the License. You may obtain a copy
|
|
@@ -27,7 +27,7 @@ Object.keys(_arithmetic).forEach(function (key) {
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
// TODO: this is ugly. Instead, be able to pass your own isBigNumber function to typed?
|
|
30
|
-
var BigNumber = _decimal
|
|
30
|
+
var BigNumber = _decimal.default.clone();
|
|
31
31
|
|
|
32
32
|
BigNumber.prototype.isBigNumber = true;
|
|
33
33
|
|
|
@@ -23,15 +23,27 @@ function combinationsNumber(n, k) {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
var nMinusk = n - k;
|
|
26
|
-
var
|
|
26
|
+
var answer = 1;
|
|
27
|
+
var firstnumerator = k < nMinusk ? nMinusk + 1 : k + 1;
|
|
28
|
+
var nextdivisor = 2;
|
|
29
|
+
var lastdivisor = k < nMinusk ? k : nMinusk; // balance multiplications and divisions to try to keep intermediate values
|
|
30
|
+
// in exact-integer range as long as possible
|
|
27
31
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
for (var nextnumerator = firstnumerator; nextnumerator <= n; ++nextnumerator) {
|
|
33
|
+
answer *= nextnumerator;
|
|
34
|
+
|
|
35
|
+
while (nextdivisor <= lastdivisor && answer % nextdivisor === 0) {
|
|
36
|
+
answer /= nextdivisor;
|
|
37
|
+
++nextdivisor;
|
|
38
|
+
}
|
|
39
|
+
} // for big n, k, floating point may have caused weirdness in remainder
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
if (nextdivisor <= lastdivisor) {
|
|
43
|
+
answer /= (0, _product.product)(nextdivisor, lastdivisor);
|
|
31
44
|
}
|
|
32
45
|
|
|
33
|
-
|
|
34
|
-
return prodrange / (0, _product.product)(1, nMinusk);
|
|
46
|
+
return answer;
|
|
35
47
|
}
|
|
36
48
|
|
|
37
49
|
combinationsNumber.signature = 'number, number';
|
|
@@ -17,9 +17,9 @@ var createBigNumberClass = /* #__PURE__ */(0, _factory.factory)(name, dependenci
|
|
|
17
17
|
var on = _ref.on,
|
|
18
18
|
config = _ref.config;
|
|
19
19
|
|
|
20
|
-
var BigNumber = _decimal
|
|
20
|
+
var BigNumber = _decimal.default.clone({
|
|
21
21
|
precision: config.precision,
|
|
22
|
-
modulo: _decimal
|
|
22
|
+
modulo: _decimal.default.EUCLID
|
|
23
23
|
});
|
|
24
24
|
|
|
25
25
|
BigNumber.prototype = Object.create(BigNumber.prototype);
|
|
@@ -79,7 +79,7 @@ var createBignumber = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
79
79
|
Fraction: function Fraction(x) {
|
|
80
80
|
return new BigNumber(x.n).div(x.d).times(x.s);
|
|
81
81
|
},
|
|
82
|
-
|
|
82
|
+
null: function _null(x) {
|
|
83
83
|
return new BigNumber(0);
|
|
84
84
|
},
|
|
85
85
|
'Array | Matrix': function ArrayMatrix(x) {
|
package/lib/cjs/type/boolean.js
CHANGED
|
@@ -45,13 +45,13 @@ var createBoolean = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
|
45
45
|
'': function _() {
|
|
46
46
|
return false;
|
|
47
47
|
},
|
|
48
|
-
|
|
48
|
+
boolean: function boolean(x) {
|
|
49
49
|
return x;
|
|
50
50
|
},
|
|
51
51
|
number: function number(x) {
|
|
52
52
|
return !!x;
|
|
53
53
|
},
|
|
54
|
-
|
|
54
|
+
null: function _null(x) {
|
|
55
55
|
return false;
|
|
56
56
|
},
|
|
57
57
|
BigNumber: function BigNumber(x) {
|