mathjs 10.6.4 → 11.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +79 -1
- package/README.md +1 -1
- package/lib/browser/math.js +2 -41
- package/lib/browser/math.js.LICENSE.txt +43 -0
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/create.js +6 -5
- package/lib/cjs/core/function/import.js +4 -14
- package/lib/cjs/core/function/typed.js +54 -12
- 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/dependenciesChainClass.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesKldivergence.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +56 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +6 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSqrtm.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesStd.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesStdTransform.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +8 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesChainClass.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +50 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +6 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesStd.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesStdTransform.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +8 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +87 -61
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +93 -69
- package/lib/cjs/entry/pureFunctionsAny.generated.js +50 -45
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +22 -19
- package/lib/cjs/expression/Parser.js +1 -1
- package/lib/cjs/expression/embeddedDocs/construction/index.js +1 -1
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +8 -5
- package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyConstant.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
- package/lib/cjs/expression/node/AccessorNode.js +216 -173
- package/lib/cjs/expression/node/ArrayNode.js +206 -160
- package/lib/cjs/expression/node/AssignmentNode.js +321 -270
- package/lib/cjs/expression/node/BlockNode.js +223 -172
- package/lib/cjs/expression/node/ConditionalNode.js +253 -193
- package/lib/cjs/expression/node/ConstantNode.js +216 -171
- package/lib/cjs/expression/node/FunctionAssignmentNode.js +258 -196
- package/lib/cjs/expression/node/FunctionNode.js +456 -416
- package/lib/cjs/expression/node/IndexNode.js +256 -210
- package/lib/cjs/expression/node/Node.js +411 -378
- package/lib/cjs/expression/node/ObjectNode.js +223 -178
- package/lib/cjs/expression/node/OperatorNode.js +474 -397
- package/lib/cjs/expression/node/ParenthesisNode.js +189 -143
- package/lib/cjs/expression/node/RangeNode.js +272 -224
- package/lib/cjs/expression/node/RelationalNode.js +246 -195
- package/lib/cjs/expression/node/SymbolNode.js +219 -172
- package/lib/cjs/expression/node/utils/access.js +1 -1
- package/lib/cjs/expression/node/utils/assign.js +1 -1
- package/lib/cjs/expression/operators.js +117 -23
- package/lib/cjs/expression/parse.js +37 -19
- package/lib/cjs/expression/transform/std.transform.js +3 -1
- package/lib/cjs/factoriesAny.js +8 -0
- package/lib/cjs/factoriesNumber.js +10 -1
- package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
- package/lib/cjs/function/algebra/derivative.js +25 -33
- package/lib/cjs/function/algebra/leafCount.js +0 -3
- package/lib/cjs/function/algebra/rationalize.js +78 -108
- package/lib/cjs/function/algebra/resolve.js +53 -16
- package/lib/cjs/function/algebra/simplify/util.js +1 -1
- package/lib/cjs/function/algebra/simplify.js +90 -115
- package/lib/cjs/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +44 -10
- package/lib/cjs/function/algebra/simplifyCore.js +196 -93
- package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
- package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
- package/lib/cjs/function/algebra/symbolicEqual.js +14 -32
- package/lib/cjs/function/arithmetic/abs.js +7 -14
- package/lib/cjs/function/arithmetic/add.js +26 -70
- package/lib/cjs/function/arithmetic/addScalar.js +17 -9
- package/lib/cjs/function/arithmetic/cbrt.js +7 -11
- package/lib/cjs/function/arithmetic/ceil.js +50 -40
- package/lib/cjs/function/arithmetic/cube.js +5 -10
- package/lib/cjs/function/arithmetic/divide.js +7 -7
- package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
- package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
- package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
- package/lib/cjs/function/arithmetic/dotPow.js +30 -63
- package/lib/cjs/function/arithmetic/exp.js +8 -12
- package/lib/cjs/function/arithmetic/expm1.js +10 -10
- package/lib/cjs/function/arithmetic/fix.js +34 -28
- package/lib/cjs/function/arithmetic/floor.js +51 -41
- package/lib/cjs/function/arithmetic/gcd.js +27 -68
- package/lib/cjs/function/arithmetic/hypot.js +9 -5
- package/lib/cjs/function/arithmetic/invmod.js +2 -2
- package/lib/cjs/function/arithmetic/lcm.js +27 -68
- package/lib/cjs/function/arithmetic/log.js +10 -12
- package/lib/cjs/function/arithmetic/log10.js +5 -3
- package/lib/cjs/function/arithmetic/log1p.js +11 -7
- package/lib/cjs/function/arithmetic/log2.js +5 -3
- package/lib/cjs/function/arithmetic/mod.js +22 -64
- package/lib/cjs/function/arithmetic/multiply.js +40 -35
- package/lib/cjs/function/arithmetic/multiplyScalar.js +2 -9
- package/lib/cjs/function/arithmetic/norm.js +1 -5
- package/lib/cjs/function/arithmetic/nthRoot.js +83 -95
- package/lib/cjs/function/arithmetic/nthRoots.js +2 -2
- package/lib/cjs/function/arithmetic/round.js +56 -42
- package/lib/cjs/function/arithmetic/sign.js +14 -10
- package/lib/cjs/function/arithmetic/sqrt.js +5 -9
- package/lib/cjs/function/arithmetic/square.js +6 -10
- package/lib/cjs/function/arithmetic/subtract.js +44 -100
- package/lib/cjs/function/arithmetic/unaryMinus.js +14 -16
- package/lib/cjs/function/arithmetic/unaryPlus.js +6 -4
- package/lib/cjs/function/bitwise/bitAnd.js +17 -61
- package/lib/cjs/function/bitwise/bitNot.js +6 -4
- package/lib/cjs/function/bitwise/bitOr.js +16 -60
- package/lib/cjs/function/bitwise/bitXor.js +17 -61
- package/lib/cjs/function/bitwise/leftShift.js +69 -82
- package/lib/cjs/function/bitwise/rightArithShift.js +69 -82
- package/lib/cjs/function/bitwise/rightLogShift.js +69 -82
- package/lib/cjs/function/bitwise/useMatrixForArrayScalar.js +36 -0
- package/lib/cjs/function/complex/arg.js +5 -3
- package/lib/cjs/function/complex/conj.js +6 -7
- package/lib/cjs/function/complex/im.js +7 -8
- package/lib/cjs/function/complex/re.js +6 -10
- package/lib/cjs/function/geometry/distance.js +2 -2
- package/lib/cjs/function/logical/and.js +74 -80
- package/lib/cjs/function/logical/not.js +13 -6
- package/lib/cjs/function/logical/or.js +21 -63
- package/lib/cjs/function/logical/xor.js +21 -63
- package/lib/cjs/function/matrix/diff.js +11 -8
- package/lib/cjs/function/matrix/eigs/complexEigs.js +5 -5
- package/lib/cjs/function/matrix/fft.js +2 -2
- package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
- package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
- package/lib/cjs/function/matrix/ones.js +2 -1
- package/lib/cjs/function/matrix/rotate.js +5 -5
- package/lib/cjs/function/matrix/sqrtm.js +3 -2
- package/lib/cjs/function/matrix/transpose.js +47 -48
- package/lib/cjs/function/matrix/zeros.js +2 -1
- package/lib/cjs/function/probability/factorial.js +5 -3
- package/lib/cjs/function/probability/gamma.js +38 -40
- package/lib/cjs/function/probability/kldivergence.js +5 -2
- package/lib/cjs/function/probability/lgamma.js +30 -30
- package/lib/cjs/function/probability/util/seededRNG.js +2 -2
- package/lib/cjs/function/relational/compare.js +21 -67
- package/lib/cjs/function/relational/compareNatural.js +59 -54
- package/lib/cjs/function/relational/compareText.js +10 -43
- package/lib/cjs/function/relational/compareUnits.js +24 -0
- package/lib/cjs/function/relational/equal.js +19 -80
- package/lib/cjs/function/relational/equalScalar.js +7 -9
- package/lib/cjs/function/relational/larger.js +21 -67
- package/lib/cjs/function/relational/largerEq.js +21 -67
- package/lib/cjs/function/relational/smaller.js +21 -67
- package/lib/cjs/function/relational/smallerEq.js +21 -67
- package/lib/cjs/function/relational/unequal.js +19 -80
- package/lib/cjs/function/special/erf.js +5 -3
- package/lib/cjs/function/statistics/std.js +11 -2
- package/lib/cjs/function/string/format.js +2 -2
- package/lib/cjs/function/string/hex.js +1 -2
- package/lib/cjs/function/trigonometry/acos.js +4 -8
- package/lib/cjs/function/trigonometry/acosh.js +2 -7
- package/lib/cjs/function/trigonometry/acot.js +6 -11
- package/lib/cjs/function/trigonometry/acoth.js +4 -8
- package/lib/cjs/function/trigonometry/acsc.js +6 -11
- package/lib/cjs/function/trigonometry/acsch.js +4 -8
- package/lib/cjs/function/trigonometry/asec.js +6 -10
- package/lib/cjs/function/trigonometry/asech.js +4 -8
- package/lib/cjs/function/trigonometry/asin.js +5 -10
- package/lib/cjs/function/trigonometry/asinh.js +4 -9
- package/lib/cjs/function/trigonometry/atan.js +5 -11
- package/lib/cjs/function/trigonometry/atan2.js +25 -63
- package/lib/cjs/function/trigonometry/atanh.js +4 -9
- package/lib/cjs/function/trigonometry/cos.js +11 -20
- package/lib/cjs/function/trigonometry/cosh.js +5 -19
- package/lib/cjs/function/trigonometry/cot.js +9 -15
- package/lib/cjs/function/trigonometry/coth.js +4 -15
- package/lib/cjs/function/trigonometry/csc.js +11 -17
- package/lib/cjs/function/trigonometry/csch.js +4 -15
- package/lib/cjs/function/trigonometry/sec.js +11 -17
- package/lib/cjs/function/trigonometry/sech.js +4 -15
- package/lib/cjs/function/trigonometry/sin.js +11 -21
- package/lib/cjs/function/trigonometry/sinh.js +5 -20
- package/lib/cjs/function/trigonometry/tan.js +11 -21
- package/lib/cjs/function/trigonometry/tanh.js +5 -20
- package/lib/cjs/function/trigonometry/trigUnit.js +24 -0
- package/lib/cjs/function/unit/to.js +7 -41
- package/lib/cjs/function/utils/clone.js +1 -1
- package/lib/cjs/function/utils/hasNumericValue.js +5 -1
- package/lib/cjs/function/utils/isInteger.js +6 -4
- package/lib/cjs/function/utils/isNaN.js +1 -1
- package/lib/cjs/function/utils/isNegative.js +11 -7
- package/lib/cjs/function/utils/isNumeric.js +6 -4
- package/lib/cjs/function/utils/isPositive.js +11 -7
- package/lib/cjs/function/utils/isPrime.js +5 -3
- package/lib/cjs/function/utils/isZero.js +21 -17
- package/lib/cjs/function/utils/numeric.js +11 -4
- package/lib/cjs/function/utils/typeOf.js +38 -44
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/bignumber/index.js +1 -1
- package/lib/cjs/type/bignumber/BigNumber.js +2 -2
- package/lib/cjs/type/bignumber/function/bignumber.js +6 -4
- package/lib/cjs/type/boolean.js +7 -5
- package/lib/cjs/type/chain/Chain.js +23 -3
- package/lib/cjs/type/complex/Complex.js +18 -14
- package/lib/cjs/type/complex/function/complex.js +6 -4
- package/lib/cjs/type/fraction/Fraction.js +10 -6
- package/lib/cjs/type/fraction/function/fraction.js +6 -4
- package/lib/cjs/type/matrix/DenseMatrix.js +21 -6
- package/lib/cjs/type/matrix/SparseMatrix.js +12 -2
- package/lib/cjs/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +4 -4
- package/lib/cjs/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +7 -7
- package/lib/cjs/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +6 -6
- package/lib/cjs/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +5 -5
- package/lib/cjs/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +5 -5
- package/lib/cjs/type/matrix/utils/matrixAlgorithmSuite.js +238 -0
- package/lib/cjs/type/number.js +6 -4
- package/lib/cjs/type/string.js +7 -5
- package/lib/cjs/type/unit/Unit.js +98 -45
- package/lib/cjs/type/unit/function/createUnit.js +2 -1
- package/lib/cjs/type/unit/function/unit.js +14 -5
- 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 +27 -25
- 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 +30 -57
- package/lib/cjs/utils/string.js +3 -3
- package/lib/cjs/version.js +1 -1
- package/lib/esm/core/create.js +2 -1
- package/lib/esm/core/function/import.js +2 -12
- package/lib/esm/core/function/typed.js +47 -11
- package/lib/esm/entry/dependenciesAny/dependenciesChainClass.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesKldivergence.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplifyConstant.generated.js +34 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSqrtm.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesStd.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesStdTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny.generated.js +1 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesChainClass.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyConstant.generated.js +30 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +4 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesStd.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesStdTransform.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +1 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +73 -48
- package/lib/esm/entry/impureFunctionsNumber.generated.js +81 -58
- package/lib/esm/entry/pureFunctionsAny.generated.js +39 -36
- package/lib/esm/entry/pureFunctionsNumber.generated.js +14 -13
- package/lib/esm/expression/embeddedDocs/construction/index.js +1 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +2 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/simplifyConstant.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +1 -1
- package/lib/esm/expression/node/AccessorNode.js +158 -153
- package/lib/esm/expression/node/ArrayNode.js +162 -154
- package/lib/esm/expression/node/AssignmentNode.js +257 -245
- package/lib/esm/expression/node/BlockNode.js +177 -163
- package/lib/esm/expression/node/ConditionalNode.js +197 -174
- package/lib/esm/expression/node/ConstantNode.js +171 -163
- package/lib/esm/expression/node/FunctionAssignmentNode.js +205 -180
- package/lib/esm/expression/node/FunctionNode.js +407 -407
- package/lib/esm/expression/node/IndexNode.js +206 -198
- package/lib/esm/expression/node/Node.js +325 -325
- package/lib/esm/expression/node/ObjectNode.js +166 -157
- package/lib/esm/expression/node/OperatorNode.js +414 -377
- package/lib/esm/expression/node/ParenthesisNode.js +146 -138
- package/lib/esm/expression/node/RangeNode.js +221 -212
- package/lib/esm/expression/node/RelationalNode.js +190 -176
- package/lib/esm/expression/node/SymbolNode.js +161 -152
- package/lib/esm/expression/operators.js +96 -4
- package/lib/esm/expression/parse.js +25 -7
- package/lib/esm/expression/transform/std.transform.js +3 -1
- package/lib/esm/factoriesAny.js +1 -0
- package/lib/esm/factoriesNumber.js +1 -0
- package/lib/esm/function/algebra/derivative.js +25 -33
- package/lib/esm/function/algebra/leafCount.js +0 -3
- package/lib/esm/function/algebra/rationalize.js +83 -114
- package/lib/esm/function/algebra/resolve.js +25 -16
- package/lib/esm/function/algebra/simplify.js +85 -113
- package/lib/esm/function/algebra/{simplify/simplifyConstant.js → simplifyConstant.js} +39 -9
- package/lib/esm/function/algebra/simplifyCore.js +192 -91
- package/lib/esm/function/algebra/symbolicEqual.js +14 -32
- package/lib/esm/function/arithmetic/abs.js +3 -16
- package/lib/esm/function/arithmetic/add.js +21 -65
- package/lib/esm/function/arithmetic/addScalar.js +11 -5
- package/lib/esm/function/arithmetic/cbrt.js +7 -10
- package/lib/esm/function/arithmetic/ceil.js +25 -25
- package/lib/esm/function/arithmetic/cube.js +5 -9
- package/lib/esm/function/arithmetic/divide.js +7 -7
- package/lib/esm/function/arithmetic/divideScalar.js +2 -19
- package/lib/esm/function/arithmetic/dotDivide.js +22 -64
- package/lib/esm/function/arithmetic/dotMultiply.js +16 -60
- package/lib/esm/function/arithmetic/dotPow.js +30 -62
- package/lib/esm/function/arithmetic/exp.js +8 -11
- package/lib/esm/function/arithmetic/expm1.js +10 -9
- package/lib/esm/function/arithmetic/fix.js +18 -18
- package/lib/esm/function/arithmetic/floor.js +26 -26
- package/lib/esm/function/arithmetic/gcd.js +26 -70
- package/lib/esm/function/arithmetic/hypot.js +7 -6
- package/lib/esm/function/arithmetic/invmod.js +1 -1
- package/lib/esm/function/arithmetic/lcm.js +26 -70
- package/lib/esm/function/arithmetic/log.js +7 -10
- package/lib/esm/function/arithmetic/log10.js +1 -3
- package/lib/esm/function/arithmetic/log1p.js +4 -6
- package/lib/esm/function/arithmetic/log2.js +1 -3
- package/lib/esm/function/arithmetic/mod.js +21 -62
- package/lib/esm/function/arithmetic/multiply.js +23 -27
- package/lib/esm/function/arithmetic/multiplyScalar.js +2 -13
- package/lib/esm/function/arithmetic/norm.js +0 -4
- package/lib/esm/function/arithmetic/nthRoot.js +41 -76
- package/lib/esm/function/arithmetic/nthRoots.js +2 -2
- package/lib/esm/function/arithmetic/round.js +26 -28
- package/lib/esm/function/arithmetic/sign.js +5 -7
- package/lib/esm/function/arithmetic/sqrt.js +5 -8
- package/lib/esm/function/arithmetic/square.js +6 -9
- package/lib/esm/function/arithmetic/subtract.js +31 -95
- package/lib/esm/function/arithmetic/unaryMinus.js +6 -16
- package/lib/esm/function/arithmetic/unaryPlus.js +2 -4
- package/lib/esm/function/bitwise/bitAnd.js +16 -59
- package/lib/esm/function/bitwise/bitNot.js +2 -4
- package/lib/esm/function/bitwise/bitOr.js +16 -59
- package/lib/esm/function/bitwise/bitXor.js +16 -59
- package/lib/esm/function/bitwise/leftShift.js +39 -61
- package/lib/esm/function/bitwise/rightArithShift.js +39 -61
- package/lib/esm/function/bitwise/rightLogShift.js +39 -61
- package/lib/esm/function/bitwise/useMatrixForArrayScalar.js +13 -0
- package/lib/esm/function/complex/arg.js +1 -3
- package/lib/esm/function/complex/conj.js +3 -12
- package/lib/esm/function/complex/im.js +4 -15
- package/lib/esm/function/complex/re.js +3 -15
- package/lib/esm/function/geometry/distance.js +2 -2
- package/lib/esm/function/logical/and.js +35 -57
- package/lib/esm/function/logical/not.js +3 -6
- package/lib/esm/function/logical/or.js +16 -61
- package/lib/esm/function/logical/xor.js +16 -61
- package/lib/esm/function/matrix/diff.js +3 -8
- package/lib/esm/function/matrix/ones.js +2 -1
- package/lib/esm/function/matrix/rotate.js +5 -5
- package/lib/esm/function/matrix/sqrtm.js +3 -2
- package/lib/esm/function/matrix/transpose.js +47 -50
- package/lib/esm/function/matrix/zeros.js +2 -1
- package/lib/esm/function/probability/factorial.js +1 -3
- package/lib/esm/function/probability/gamma.js +38 -39
- package/lib/esm/function/probability/kldivergence.js +3 -2
- package/lib/esm/function/probability/lgamma.js +29 -29
- package/lib/esm/function/relational/compare.js +21 -67
- package/lib/esm/function/relational/compareNatural.js +54 -49
- package/lib/esm/function/relational/compareText.js +10 -42
- package/lib/esm/function/relational/compareUnits.js +15 -0
- package/lib/esm/function/relational/equal.js +19 -79
- package/lib/esm/function/relational/equalScalar.js +6 -9
- package/lib/esm/function/relational/larger.js +23 -73
- package/lib/esm/function/relational/largerEq.js +23 -73
- package/lib/esm/function/relational/smaller.js +23 -73
- package/lib/esm/function/relational/smallerEq.js +23 -73
- package/lib/esm/function/relational/unequal.js +19 -79
- package/lib/esm/function/special/erf.js +1 -3
- package/lib/esm/function/statistics/std.js +10 -2
- package/lib/esm/function/string/format.js +2 -2
- package/lib/esm/function/string/hex.js +1 -2
- package/lib/esm/function/trigonometry/acos.js +4 -7
- package/lib/esm/function/trigonometry/acosh.js +2 -6
- package/lib/esm/function/trigonometry/acot.js +6 -10
- package/lib/esm/function/trigonometry/acoth.js +4 -7
- package/lib/esm/function/trigonometry/acsc.js +6 -10
- package/lib/esm/function/trigonometry/acsch.js +4 -7
- package/lib/esm/function/trigonometry/asec.js +6 -9
- package/lib/esm/function/trigonometry/asech.js +4 -7
- package/lib/esm/function/trigonometry/asin.js +5 -9
- package/lib/esm/function/trigonometry/asinh.js +4 -8
- package/lib/esm/function/trigonometry/atan.js +5 -10
- package/lib/esm/function/trigonometry/atan2.js +26 -65
- package/lib/esm/function/trigonometry/atanh.js +4 -8
- package/lib/esm/function/trigonometry/cos.js +11 -22
- package/lib/esm/function/trigonometry/cosh.js +5 -20
- package/lib/esm/function/trigonometry/cot.js +10 -20
- package/lib/esm/function/trigonometry/coth.js +6 -20
- package/lib/esm/function/trigonometry/csc.js +12 -22
- package/lib/esm/function/trigonometry/csch.js +6 -20
- package/lib/esm/function/trigonometry/sec.js +12 -22
- package/lib/esm/function/trigonometry/sech.js +6 -20
- package/lib/esm/function/trigonometry/sin.js +11 -23
- package/lib/esm/function/trigonometry/sinh.js +5 -21
- package/lib/esm/function/trigonometry/tan.js +11 -23
- package/lib/esm/function/trigonometry/tanh.js +5 -21
- package/lib/esm/function/trigonometry/trigUnit.js +15 -0
- package/lib/esm/function/unit/to.js +8 -43
- package/lib/esm/function/utils/clone.js +1 -1
- package/lib/esm/function/utils/hasNumericValue.js +3 -1
- package/lib/esm/function/utils/isInteger.js +2 -4
- package/lib/esm/function/utils/isNaN.js +1 -1
- package/lib/esm/function/utils/isNegative.js +3 -7
- package/lib/esm/function/utils/isNumeric.js +4 -10
- package/lib/esm/function/utils/isPositive.js +3 -7
- package/lib/esm/function/utils/isPrime.js +1 -3
- package/lib/esm/function/utils/isZero.js +13 -17
- package/lib/esm/function/utils/numeric.js +11 -4
- package/lib/esm/function/utils/typeOf.js +38 -44
- package/lib/esm/type/bignumber/function/bignumber.js +1 -3
- package/lib/esm/type/boolean.js +1 -3
- package/lib/esm/type/chain/Chain.js +23 -3
- package/lib/esm/type/complex/Complex.js +4 -0
- package/lib/esm/type/complex/function/complex.js +1 -3
- package/lib/esm/type/fraction/Fraction.js +4 -0
- package/lib/esm/type/fraction/function/fraction.js +1 -3
- package/lib/esm/type/matrix/DenseMatrix.js +15 -1
- package/lib/esm/type/matrix/SparseMatrix.js +9 -0
- package/lib/esm/type/matrix/utils/{algorithm01.js → matAlgo01xDSid.js} +2 -2
- package/lib/esm/type/matrix/utils/{algorithm02.js → matAlgo02xDS0.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm03.js → matAlgo03xDSf.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm04.js → matAlgo04xSidSid.js} +5 -5
- package/lib/esm/type/matrix/utils/{algorithm05.js → matAlgo05xSfSf.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm06.js → matAlgo06xS0S0.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm07.js → matAlgo07xSSf.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm08.js → matAlgo08xS0Sid.js} +4 -4
- package/lib/esm/type/matrix/utils/{algorithm09.js → matAlgo09xS0Sf.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm10.js → matAlgo10xSids.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm11.js → matAlgo11xS0s.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm12.js → matAlgo12xSfs.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm13.js → matAlgo13xDD.js} +3 -3
- package/lib/esm/type/matrix/utils/{algorithm14.js → matAlgo14xDs.js} +3 -3
- package/lib/esm/type/matrix/utils/matrixAlgorithmSuite.js +168 -0
- package/lib/esm/type/number.js +1 -3
- package/lib/esm/type/string.js +1 -3
- package/lib/esm/type/unit/Unit.js +85 -36
- package/lib/esm/type/unit/function/createUnit.js +2 -1
- package/lib/esm/type/unit/function/unit.js +10 -5
- package/lib/esm/utils/is.js +18 -18
- package/lib/esm/utils/snapshot.js +22 -48
- package/lib/esm/version.js +1 -1
- package/package.json +22 -25
- package/types/index.d.ts +211 -180
- package/types/index.ts +358 -144
- package/types/tsconfig.json +4 -1
- package/lib/cjs/utils/polyfills.js +0 -14
- package/lib/esm/utils/polyfills.js +0 -12
package/types/index.ts
CHANGED
@@ -1,34 +1,48 @@
|
|
1
1
|
import {
|
2
|
-
|
3
|
-
factory,
|
4
|
-
all,
|
5
|
-
MathJsFunctionName,
|
6
|
-
fractionDependencies,
|
2
|
+
AccessorNode,
|
7
3
|
addDependencies,
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
MathJsChain,
|
4
|
+
all,
|
5
|
+
ArrayNode,
|
6
|
+
AssignmentNode,
|
12
7
|
BigNumber,
|
13
|
-
|
8
|
+
BlockNode,
|
14
9
|
Complex,
|
15
|
-
|
10
|
+
ConditionalNode,
|
11
|
+
ConstantNode,
|
12
|
+
create,
|
13
|
+
divideDependencies,
|
14
|
+
EvalFunction,
|
15
|
+
factory,
|
16
|
+
formatDependencies,
|
16
17
|
Fraction,
|
17
|
-
|
18
|
+
fractionDependencies,
|
19
|
+
FunctionAssignmentNode,
|
20
|
+
FunctionNode,
|
21
|
+
Help,
|
18
22
|
Index,
|
19
|
-
|
20
|
-
EvalFunction,
|
23
|
+
IndexNode,
|
21
24
|
LUDecomposition,
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
+
MathArray,
|
26
|
+
MathCollection,
|
27
|
+
MathJsChain,
|
28
|
+
MathJsFunctionName,
|
29
|
+
MathNode,
|
30
|
+
MathNodeCommon,
|
25
31
|
MathNumericType,
|
26
|
-
|
32
|
+
MathType,
|
33
|
+
Matrix,
|
34
|
+
ObjectNode,
|
27
35
|
OperatorNode,
|
28
36
|
OperatorNodeFn,
|
29
37
|
OperatorNodeOp,
|
30
|
-
SymbolNode,
|
31
38
|
ParenthesisNode,
|
39
|
+
PolarCoordinates,
|
40
|
+
QRDecomposition,
|
41
|
+
RangeNode,
|
42
|
+
SimplifyRule,
|
43
|
+
SLUDecomposition,
|
44
|
+
SymbolNode,
|
45
|
+
Unit,
|
32
46
|
} from 'mathjs'
|
33
47
|
import * as assert from 'assert'
|
34
48
|
import { expectTypeOf } from 'expect-type'
|
@@ -88,6 +102,22 @@ Basic usage examples
|
|
88
102
|
|
89
103
|
math.variance(math.variance(m2by3, 'uncorrected'))
|
90
104
|
|
105
|
+
// count and sum check
|
106
|
+
math.count([10, 10, 10])
|
107
|
+
math.count([
|
108
|
+
[1, 2, 3],
|
109
|
+
[4, 5, 6],
|
110
|
+
])
|
111
|
+
math.count('mathjs')
|
112
|
+
|
113
|
+
math.sum(1, 2, 3, 4)
|
114
|
+
math.sum([1, 2, 3, 4])
|
115
|
+
math.sum([
|
116
|
+
[1, 2],
|
117
|
+
[3, 4],
|
118
|
+
[5, 6],
|
119
|
+
])
|
120
|
+
|
91
121
|
// expressions
|
92
122
|
math.evaluate('1.2 * (2 + 4.5)')
|
93
123
|
|
@@ -108,8 +138,8 @@ Basic usage examples
|
|
108
138
|
) // Matrix + Array
|
109
139
|
|
110
140
|
// narrowed type inference
|
111
|
-
const _b:
|
112
|
-
const _c:
|
141
|
+
const _b: Matrix = math.add(math.matrix([2]), math.matrix([3]))
|
142
|
+
const _c: Matrix = math.subtract(math.matrix([4]), math.matrix([5]))
|
113
143
|
}
|
114
144
|
|
115
145
|
/*
|
@@ -134,6 +164,23 @@ Bignumbers examples
|
|
134
164
|
}
|
135
165
|
}
|
136
166
|
|
167
|
+
/*
|
168
|
+
Arithmetic function examples
|
169
|
+
*/
|
170
|
+
{
|
171
|
+
const math = create(all, {})
|
172
|
+
|
173
|
+
const _e: number = math.exp(1)
|
174
|
+
const _bige: BigNumber = math.exp(math.bignumber(1))
|
175
|
+
const _compe: Complex = math.exp(math.complex(1, 0))
|
176
|
+
// TODO: Typescript type declarations are not understanding typed-function's
|
177
|
+
// automatic conversions, so the following do not work:
|
178
|
+
|
179
|
+
// const _compeagain: Complex = math.exp(math.fraction(1, 1))
|
180
|
+
// const _eagain: number = math.exp('1')
|
181
|
+
// const _eanother: number = math.exp(true)
|
182
|
+
}
|
183
|
+
|
137
184
|
/*
|
138
185
|
Chaining examples
|
139
186
|
*/
|
@@ -524,21 +571,23 @@ Chaining examples
|
|
524
571
|
expectTypeOf(math.chain(math.complex(1, 2)).cbrt()).toMatchTypeOf<
|
525
572
|
MathJsChain<Complex>
|
526
573
|
>()
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
[
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
574
|
+
// @ts-expect-error ... verify cbrt does not run on arrays.
|
575
|
+
assert.throws(() => math.chain([1, 2]).cbrt(), TypeError)
|
576
|
+
assert.throws(
|
577
|
+
() =>
|
578
|
+
// @ts-expect-error ... verify cbrt does not run on matrices.
|
579
|
+
math
|
580
|
+
.chain(
|
581
|
+
math.matrix([
|
582
|
+
[1, 2],
|
583
|
+
[3, 4],
|
584
|
+
])
|
585
|
+
)
|
586
|
+
.cbrt(),
|
587
|
+
TypeError
|
588
|
+
)
|
540
589
|
|
541
|
-
//
|
590
|
+
// ceil
|
542
591
|
expectTypeOf(math.chain(1).ceil()).toMatchTypeOf<
|
543
592
|
MathJsChain<MathNumericType>
|
544
593
|
>()
|
@@ -581,19 +630,23 @@ Chaining examples
|
|
581
630
|
expectTypeOf(math.chain(math.complex(1, 2)).cube()).toMatchTypeOf<
|
582
631
|
MathJsChain<Complex>
|
583
632
|
>()
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
.
|
590
|
-
|
591
|
-
|
592
|
-
[
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
633
|
+
|
634
|
+
// @ts-expect-error ... verify cube does not run on arrays.
|
635
|
+
assert.throws(() => math.chain([1, 2]).cube(), TypeError)
|
636
|
+
assert.throws(
|
637
|
+
() =>
|
638
|
+
// @ts-expect-error ... verify cube does not run on matrices.
|
639
|
+
math
|
640
|
+
.chain(
|
641
|
+
math.matrix([
|
642
|
+
[1, 2],
|
643
|
+
[3, 4],
|
644
|
+
])
|
645
|
+
)
|
646
|
+
.cube(),
|
647
|
+
TypeError
|
648
|
+
)
|
649
|
+
|
597
650
|
expectTypeOf(math.chain(math.unit('furlong')).cube()).toMatchTypeOf<
|
598
651
|
MathJsChain<Unit>
|
599
652
|
>()
|
@@ -655,33 +708,40 @@ Chaining examples
|
|
655
708
|
|
656
709
|
// exp
|
657
710
|
expectTypeOf(math.chain(1).exp()).toMatchTypeOf<MathJsChain<MathType>>()
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
711
|
+
// @ts-expect-error ... verify exp does not run on arrays.
|
712
|
+
assert.throws(() => math.chain([1, 2]).exp(), TypeError)
|
713
|
+
assert.throws(
|
714
|
+
() =>
|
715
|
+
// @ts-expect-error ... verify exp does not run on matrices.
|
716
|
+
math
|
717
|
+
.chain(
|
718
|
+
math.matrix([
|
719
|
+
[1, 2],
|
720
|
+
[3, 4],
|
721
|
+
])
|
722
|
+
)
|
723
|
+
.exp(),
|
724
|
+
TypeError
|
725
|
+
)
|
669
726
|
|
670
727
|
// expm1
|
671
728
|
expectTypeOf(math.chain(1).expm1()).toMatchTypeOf<MathJsChain<MathType>>()
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
[
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
729
|
+
|
730
|
+
// @ts-expect-error ... verify expm1 does not run on arrays
|
731
|
+
assert.throws(() => math.chain([1, 2]).expm1(), TypeError)
|
732
|
+
assert.throws(
|
733
|
+
() =>
|
734
|
+
// @ts-expect-error ... verify expm1 does not run on arrays
|
735
|
+
math
|
736
|
+
.chain(
|
737
|
+
math.matrix([
|
738
|
+
[1, 2],
|
739
|
+
[3, 4],
|
740
|
+
])
|
741
|
+
)
|
742
|
+
.expm1(),
|
743
|
+
TypeError
|
744
|
+
)
|
685
745
|
|
686
746
|
// gcd
|
687
747
|
expectTypeOf(math.chain([1, 2]).gcd(3)).toMatchTypeOf<MathJsChain<number>>()
|
@@ -765,6 +825,11 @@ Chaining examples
|
|
765
825
|
.log10()
|
766
826
|
).toMatchTypeOf<MathJsChain<Matrix>>()
|
767
827
|
|
828
|
+
expectTypeOf(math.chain([1, 2]).count()).toMatchTypeOf<MathJsChain<number>>()
|
829
|
+
expectTypeOf(math.chain('mathjs').count()).toMatchTypeOf<
|
830
|
+
MathJsChain<number>
|
831
|
+
>()
|
832
|
+
expectTypeOf(math.chain([1, 2]).sum()).toMatchTypeOf<MathJsChain<number>>()
|
768
833
|
// TODO complete the rest of these...
|
769
834
|
}
|
770
835
|
|
@@ -775,13 +840,89 @@ Simplify examples
|
|
775
840
|
const math = create(all)
|
776
841
|
|
777
842
|
math.simplify('2 * 1 * x ^ (2 - 1)')
|
843
|
+
math.simplifyConstant('2 * 1 * x ^ (2 - 1)')
|
844
|
+
math.simplifyCore('2 * 1 * x ^ (2 - 1)')
|
778
845
|
math.simplify('2 * 3 * x', { x: 4 })
|
779
846
|
|
847
|
+
expectTypeOf(math.simplify.rules).toMatchTypeOf<Array<SimplifyRule>>()
|
848
|
+
|
780
849
|
const f = math.parse('2 * 1 * x ^ (2 - 1)')
|
781
850
|
math.simplify(f)
|
782
851
|
|
783
852
|
math.simplify('0.4 * x', {}, { exactFractions: true })
|
853
|
+
math.simplifyConstant('0.4 * x', { exactFractions: true })
|
784
854
|
math.simplify('0.4 * x', {}, { exactFractions: false })
|
855
|
+
math.simplify('0.4 * x', {}, { fractionsLimit: 2 })
|
856
|
+
math.simplify('0.4 * x', {}, { consoleDebug: false })
|
857
|
+
|
858
|
+
math.simplify(
|
859
|
+
'0.4 * x',
|
860
|
+
{},
|
861
|
+
{
|
862
|
+
context: {
|
863
|
+
xor: {
|
864
|
+
trivial: true,
|
865
|
+
total: true,
|
866
|
+
commutative: true,
|
867
|
+
associative: true,
|
868
|
+
},
|
869
|
+
},
|
870
|
+
}
|
871
|
+
)
|
872
|
+
|
873
|
+
math.simplify('0.4 * x', [])
|
874
|
+
math.simplify('0.4 * x', [
|
875
|
+
'n * n -> 2n',
|
876
|
+
{
|
877
|
+
s: 'n * n -> 2n',
|
878
|
+
repeat: true,
|
879
|
+
assuming: {
|
880
|
+
multiply: {
|
881
|
+
trivial: true,
|
882
|
+
total: true,
|
883
|
+
commutative: true,
|
884
|
+
associative: true,
|
885
|
+
},
|
886
|
+
},
|
887
|
+
imposeContext: {
|
888
|
+
multiply: {
|
889
|
+
trivial: true,
|
890
|
+
total: true,
|
891
|
+
commutative: true,
|
892
|
+
associative: true,
|
893
|
+
},
|
894
|
+
},
|
895
|
+
},
|
896
|
+
{
|
897
|
+
l: 'n * n',
|
898
|
+
r: '2n',
|
899
|
+
repeat: true,
|
900
|
+
assuming: {
|
901
|
+
multiply: {
|
902
|
+
trivial: true,
|
903
|
+
total: true,
|
904
|
+
commutative: true,
|
905
|
+
associative: true,
|
906
|
+
},
|
907
|
+
},
|
908
|
+
imposeContext: {
|
909
|
+
multiply: {
|
910
|
+
trivial: true,
|
911
|
+
total: true,
|
912
|
+
commutative: true,
|
913
|
+
associative: true,
|
914
|
+
},
|
915
|
+
},
|
916
|
+
},
|
917
|
+
(node: MathNode) => node,
|
918
|
+
])
|
919
|
+
math.simplifyCore('0.4 * x + 0', { exactFractions: false })
|
920
|
+
|
921
|
+
math
|
922
|
+
.chain('0.4 * x + 0')
|
923
|
+
.parse()
|
924
|
+
.simplifyCore({ exactFractions: false })
|
925
|
+
.simplifyConstant()
|
785
926
|
}
|
786
927
|
|
787
928
|
/*
|
@@ -816,13 +957,18 @@ Complex numbers examples
|
|
816
957
|
|
817
958
|
// create a complex number from polar coordinates
|
818
959
|
{
|
819
|
-
const p:
|
820
|
-
|
960
|
+
const p: PolarCoordinates = {
|
961
|
+
r: math.sqrt(2) as number, // must be real but a sqrt could be Complex
|
962
|
+
phi: math.pi / 4,
|
963
|
+
}
|
964
|
+
const c: Complex = math.complex(p)
|
965
|
+
assert.strictEqual(c.im, 1)
|
966
|
+
assert.ok(Math.abs(c.re - 1) < 1e-12)
|
821
967
|
}
|
822
968
|
|
823
969
|
// get polar coordinates of a complex number
|
824
970
|
{
|
825
|
-
const _p:
|
971
|
+
const _p: PolarCoordinates = math.complex(3, 4).toPolar()
|
826
972
|
}
|
827
973
|
}
|
828
974
|
|
@@ -881,7 +1027,7 @@ Expressions examples
|
|
881
1027
|
|
882
1028
|
{
|
883
1029
|
const node2 = math.parse('x^a')
|
884
|
-
const _code2:
|
1030
|
+
const _code2: EvalFunction = node2.compile()
|
885
1031
|
node2.toString()
|
886
1032
|
}
|
887
1033
|
|
@@ -984,18 +1130,23 @@ Matrices examples
|
|
984
1130
|
|
985
1131
|
// create matrices and arrays. a matrix is just a wrapper around an Array,
|
986
1132
|
// providing some handy utilities.
|
987
|
-
const a:
|
988
|
-
const b:
|
1133
|
+
const a: Matrix = math.matrix([1, 4, 9, 16, 25])
|
1134
|
+
const b: Matrix = math.matrix(math.ones([2, 3]))
|
989
1135
|
b.size()
|
990
1136
|
|
1137
|
+
// @ts-expect-error ... ones() in a chain cannot take more dimensions
|
1138
|
+
assert.throws(() => math.chain(3).ones(2, 'dense').done(), /Error:.*ones/)
|
1139
|
+
// @ts-expect-error ... and neither can zeros()
|
1140
|
+
assert.throws(() => math.chain(3).zeros(2, 'sparse').done(), /Error:.*zeros/)
|
1141
|
+
|
991
1142
|
// the Array data of a Matrix can be retrieved using valueOf()
|
992
1143
|
const _array = a.valueOf()
|
993
1144
|
|
994
1145
|
// Matrices can be cloned
|
995
|
-
const _clone:
|
1146
|
+
const _clone: Matrix = a.clone()
|
996
1147
|
|
997
1148
|
// perform operations with matrices
|
998
|
-
math.
|
1149
|
+
math.map(a, math.sqrt)
|
999
1150
|
math.factorial(a)
|
1000
1151
|
|
1001
1152
|
// create and manipulate matrices. Arrays and Matrices can be used mixed.
|
@@ -1004,22 +1155,22 @@ Matrices examples
|
|
1004
1155
|
[1, 2],
|
1005
1156
|
[3, 4],
|
1006
1157
|
]
|
1007
|
-
const b:
|
1158
|
+
const b: Matrix = math.matrix([
|
1008
1159
|
[5, 6],
|
1009
1160
|
[1, 1],
|
1010
1161
|
])
|
1011
1162
|
|
1012
1163
|
b.subset(math.index(1, [0, 1]), [[7, 8]])
|
1013
1164
|
const _c = math.multiply(a, b)
|
1014
|
-
const f:
|
1015
|
-
const _d:
|
1165
|
+
const f: Matrix = math.matrix([1, 0])
|
1166
|
+
const _d: Matrix = f.subset(math.index(1))
|
1016
1167
|
}
|
1017
1168
|
|
1018
1169
|
// get a sub matrix
|
1019
1170
|
{
|
1020
|
-
const a:
|
1171
|
+
const a: Matrix = math.diag(math.range(1, 4))
|
1021
1172
|
a.subset(math.index([1, 2], [1, 2]))
|
1022
|
-
const b:
|
1173
|
+
const b: Matrix = math.range(1, 6)
|
1023
1174
|
b.subset(math.index(math.range(1, 4)))
|
1024
1175
|
}
|
1025
1176
|
|
@@ -1065,7 +1216,7 @@ Matrices examples
|
|
1065
1216
|
[6, 4, 3]
|
1066
1217
|
)
|
1067
1218
|
assert.deepStrictEqual(
|
1068
|
-
math.filter(['23', 'foo', '100', '55', 'bar'],
|
1219
|
+
math.filter(['23', 'foo', '100', '55', 'bar'], /\d+/),
|
1069
1220
|
['23', '100', '55']
|
1070
1221
|
)
|
1071
1222
|
}
|
@@ -1143,6 +1294,69 @@ Matrices examples
|
|
1143
1294
|
}
|
1144
1295
|
}
|
1145
1296
|
|
1297
|
+
/*
|
1298
|
+
Math types examples: Type results after multiplying 'MathTypes' with matrices
|
1299
|
+
*/
|
1300
|
+
{
|
1301
|
+
const math = create(all, {})
|
1302
|
+
|
1303
|
+
const abc: MathArray = [1, 2, 3, 4]
|
1304
|
+
const bcd: MathArray = [
|
1305
|
+
[1, 2, 3, 4],
|
1306
|
+
[2, 3, 4, 5],
|
1307
|
+
[4, 5, 6, 7],
|
1308
|
+
[5, 6, 7, 8],
|
1309
|
+
]
|
1310
|
+
|
1311
|
+
const Mbcd = math.matrix(bcd)
|
1312
|
+
const Mabc = math.matrix(abc)
|
1313
|
+
|
1314
|
+
// Number
|
1315
|
+
const _r1 = math.multiply(1, 2)
|
1316
|
+
|
1317
|
+
// Unit
|
1318
|
+
const a = math.unit(45, 'cm') // 450 mm
|
1319
|
+
const b = math.unit(45, 'cm') // 450 mm
|
1320
|
+
const _r2 = math.multiply(a, b)
|
1321
|
+
|
1322
|
+
// 1D JS Array
|
1323
|
+
const r3 = math.multiply(abc, bcd)
|
1324
|
+
const _r31 = r3[1] // By default least promised valid syntax
|
1325
|
+
|
1326
|
+
// 2D JS Array
|
1327
|
+
const r12 = math.multiply(bcd, bcd)
|
1328
|
+
// Example to sort ambiguity between multidimensional & singledimensional arrays
|
1329
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
1330
|
+
const multiDimensional = (x: any): x is any[][] => x.length && x[0].length
|
1331
|
+
if (multiDimensional(r12)) {
|
1332
|
+
const _r1211 = r12[1][1]
|
1333
|
+
}
|
1334
|
+
const _r121 = r12[1] // Valid syntax
|
1335
|
+
|
1336
|
+
// Matrix: matrix * vector
|
1337
|
+
const r7 = math.multiply(Mabc, bcd)
|
1338
|
+
r7.toArray() // Matrix-es have toArray function
|
1339
|
+
|
1340
|
+
// Matrix
|
1341
|
+
const _r8 = math.multiply(Mabc, 4)
|
1342
|
+
|
1343
|
+
// Matrix
|
1344
|
+
const _r11 = math.multiply(4, Mabc)
|
1345
|
+
|
1346
|
+
// Matrix of units
|
1347
|
+
const _r9 = math.multiply(Mabc, a)
|
1348
|
+
const _r10 = math.multiply(a, Mabc)
|
1349
|
+
|
1350
|
+
// Matrix
|
1351
|
+
const _r6 = math.multiply(abc, Mbcd)
|
1352
|
+
|
1353
|
+
// 2D JS Array
|
1354
|
+
const _r5 = math.multiply(bcd, abc)
|
1355
|
+
|
1356
|
+
// Number
|
1357
|
+
const _r4 = math.multiply(abc, math.transpose(abc))
|
1358
|
+
}
|
1359
|
+
|
1146
1360
|
/*
|
1147
1361
|
Sparse matrices examples
|
1148
1362
|
*/
|
@@ -1218,6 +1432,7 @@ Units examples
|
|
1218
1432
|
// use Unit as definition
|
1219
1433
|
math.createUnit('c', { definition: b })
|
1220
1434
|
math.createUnit('c', { definition: b }, { override: true })
|
1435
|
+
math.createUnit('customUnit', math.unit(0.5, 'm'))
|
1221
1436
|
|
1222
1437
|
// units can be added, subtracted, and multiplied or divided by numbers and by other units
|
1223
1438
|
math.add(a, b)
|
@@ -1248,29 +1463,27 @@ Expression tree examples
|
|
1248
1463
|
const math = create(all, {})
|
1249
1464
|
|
1250
1465
|
// Filter an expression tree
|
1251
|
-
const node:
|
1252
|
-
const filtered:
|
1253
|
-
(node:
|
1466
|
+
const node: MathNode = math.parse('x^2 + x/4 + 3*y')
|
1467
|
+
const filtered: MathNode[] = node.filter(
|
1468
|
+
(node: MathNode) => node.type === 'SymbolNode' && node.name === 'x'
|
1254
1469
|
)
|
1255
1470
|
|
1256
|
-
const _arr: string[] = filtered.map((node:
|
1471
|
+
const _arr: string[] = filtered.map((node: MathNode) => node.toString())
|
1257
1472
|
|
1258
1473
|
// Traverse an expression tree
|
1259
|
-
const node1:
|
1260
|
-
node1.traverse(
|
1261
|
-
(node
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
return
|
1271
|
-
}
|
1474
|
+
const node1: MathNode = math.parse('3 * x + 2')
|
1475
|
+
node1.traverse((node: MathNode, _path: string, _parent: MathNode) => {
|
1476
|
+
switch (node.type) {
|
1477
|
+
case 'OperatorNode':
|
1478
|
+
return node.type === 'OperatorNode'
|
1479
|
+
case 'ConstantNode':
|
1480
|
+
return node.type === 'ConstantNode'
|
1481
|
+
case 'SymbolNode':
|
1482
|
+
return node.type === 'SymbolNode'
|
1483
|
+
default:
|
1484
|
+
return
|
1272
1485
|
}
|
1273
|
-
)
|
1486
|
+
})
|
1274
1487
|
}
|
1275
1488
|
|
1276
1489
|
/*
|
@@ -1333,9 +1546,9 @@ Function ceil examples
|
|
1333
1546
|
)
|
1334
1547
|
|
1335
1548
|
// numeric input, array or matrix of decimals
|
1336
|
-
const numCeiled:
|
1549
|
+
const numCeiled: MathArray = math.ceil(math.tau, [2, 3])
|
1337
1550
|
assert.deepStrictEqual(numCeiled, [6.29, 6.284])
|
1338
|
-
const bigCeiled:
|
1551
|
+
const bigCeiled: Matrix = math.ceil(
|
1339
1552
|
math.bignumber(6.28318),
|
1340
1553
|
math.matrix([2, 3])
|
1341
1554
|
)
|
@@ -1409,9 +1622,9 @@ Function fix examples
|
|
1409
1622
|
)
|
1410
1623
|
|
1411
1624
|
// numeric input, array or matrix of decimals
|
1412
|
-
const numFixed:
|
1625
|
+
const numFixed: MathArray = math.fix(math.tau, [2, 3])
|
1413
1626
|
assert.deepStrictEqual(numFixed, [6.28, 6.283])
|
1414
|
-
const bigFixed:
|
1627
|
+
const bigFixed: Matrix = math.fix(
|
1415
1628
|
math.bignumber(6.28318),
|
1416
1629
|
math.matrix([2, 3])
|
1417
1630
|
)
|
@@ -1485,9 +1698,9 @@ Function floor examples
|
|
1485
1698
|
)
|
1486
1699
|
|
1487
1700
|
// numeric input, array or matrix of decimals
|
1488
|
-
const numFloored:
|
1701
|
+
const numFloored: MathArray = math.floor(math.tau, [2, 3])
|
1489
1702
|
assert.deepStrictEqual(numFloored, [6.28, 6.283])
|
1490
|
-
const bigFloored:
|
1703
|
+
const bigFloored: Matrix = math.floor(
|
1491
1704
|
math.bignumber(6.28318),
|
1492
1705
|
math.matrix([2, 3])
|
1493
1706
|
)
|
@@ -1561,9 +1774,9 @@ Function round examples
|
|
1561
1774
|
)
|
1562
1775
|
|
1563
1776
|
// numeric input, array or matrix of decimals
|
1564
|
-
const numRounded:
|
1777
|
+
const numRounded: MathArray = math.round(math.tau, [2, 3])
|
1565
1778
|
assert.deepStrictEqual(numRounded, [6.28, 6.283])
|
1566
|
-
const bigRounded:
|
1779
|
+
const bigRounded: Matrix = math.round(
|
1567
1780
|
math.bignumber(6.28318),
|
1568
1781
|
math.matrix([2, 3])
|
1569
1782
|
)
|
@@ -1875,22 +2088,22 @@ Factory Test
|
|
1875
2088
|
|
1876
2089
|
// Check guards do type refinement
|
1877
2090
|
|
1878
|
-
|
2091
|
+
const x: unknown = undefined
|
1879
2092
|
|
1880
2093
|
if (math.isNumber(x)) {
|
1881
2094
|
expectTypeOf(x).toMatchTypeOf<number>()
|
1882
2095
|
}
|
1883
2096
|
if (math.isBigNumber(x)) {
|
1884
|
-
expectTypeOf(x).toMatchTypeOf<
|
2097
|
+
expectTypeOf(x).toMatchTypeOf<BigNumber>()
|
1885
2098
|
}
|
1886
2099
|
if (math.isComplex(x)) {
|
1887
|
-
expectTypeOf(x).toMatchTypeOf<
|
2100
|
+
expectTypeOf(x).toMatchTypeOf<Complex>()
|
1888
2101
|
}
|
1889
2102
|
if (math.isFraction(x)) {
|
1890
|
-
expectTypeOf(x).toMatchTypeOf<
|
2103
|
+
expectTypeOf(x).toMatchTypeOf<Fraction>()
|
1891
2104
|
}
|
1892
2105
|
if (math.isUnit(x)) {
|
1893
|
-
expectTypeOf(x).toMatchTypeOf<
|
2106
|
+
expectTypeOf(x).toMatchTypeOf<Unit>()
|
1894
2107
|
}
|
1895
2108
|
if (math.isString(x)) {
|
1896
2109
|
expectTypeOf(x).toMatchTypeOf<string>()
|
@@ -1899,22 +2112,22 @@ Factory Test
|
|
1899
2112
|
expectTypeOf(x).toMatchTypeOf<unknown[]>()
|
1900
2113
|
}
|
1901
2114
|
if (math.isMatrix(x)) {
|
1902
|
-
expectTypeOf(x).toMatchTypeOf<
|
2115
|
+
expectTypeOf(x).toMatchTypeOf<Matrix>()
|
1903
2116
|
}
|
1904
2117
|
if (math.isDenseMatrix(x)) {
|
1905
|
-
expectTypeOf(x).toMatchTypeOf<
|
2118
|
+
expectTypeOf(x).toMatchTypeOf<Matrix>()
|
1906
2119
|
}
|
1907
2120
|
if (math.isSparseMatrix(x)) {
|
1908
|
-
expectTypeOf(x).toMatchTypeOf<
|
2121
|
+
expectTypeOf(x).toMatchTypeOf<Matrix>()
|
1909
2122
|
}
|
1910
2123
|
if (math.isIndex(x)) {
|
1911
|
-
expectTypeOf(x).toMatchTypeOf<
|
2124
|
+
expectTypeOf(x).toMatchTypeOf<Index>()
|
1912
2125
|
}
|
1913
2126
|
if (math.isBoolean(x)) {
|
1914
2127
|
expectTypeOf(x).toMatchTypeOf<boolean>()
|
1915
2128
|
}
|
1916
2129
|
if (math.isHelp(x)) {
|
1917
|
-
expectTypeOf(x).toMatchTypeOf<
|
2130
|
+
expectTypeOf(x).toMatchTypeOf<Help>()
|
1918
2131
|
}
|
1919
2132
|
if (math.isDate(x)) {
|
1920
2133
|
expectTypeOf(x).toMatchTypeOf<Date>()
|
@@ -1930,40 +2143,40 @@ Factory Test
|
|
1930
2143
|
}
|
1931
2144
|
|
1932
2145
|
if (math.isAccessorNode(x)) {
|
1933
|
-
expectTypeOf(x).toMatchTypeOf<
|
2146
|
+
expectTypeOf(x).toMatchTypeOf<AccessorNode>()
|
1934
2147
|
}
|
1935
2148
|
if (math.isArrayNode(x)) {
|
1936
|
-
expectTypeOf(x).toMatchTypeOf<
|
2149
|
+
expectTypeOf(x).toMatchTypeOf<ArrayNode>()
|
1937
2150
|
}
|
1938
2151
|
if (math.isAssignmentNode(x)) {
|
1939
|
-
expectTypeOf(x).toMatchTypeOf<
|
2152
|
+
expectTypeOf(x).toMatchTypeOf<AssignmentNode>()
|
1940
2153
|
}
|
1941
2154
|
if (math.isBlockNode(x)) {
|
1942
|
-
expectTypeOf(x).toMatchTypeOf<
|
2155
|
+
expectTypeOf(x).toMatchTypeOf<BlockNode>()
|
1943
2156
|
}
|
1944
2157
|
if (math.isConditionalNode(x)) {
|
1945
|
-
expectTypeOf(x).toMatchTypeOf<
|
2158
|
+
expectTypeOf(x).toMatchTypeOf<ConditionalNode>()
|
1946
2159
|
}
|
1947
2160
|
if (math.isConstantNode(x)) {
|
1948
|
-
expectTypeOf(x).toMatchTypeOf<
|
2161
|
+
expectTypeOf(x).toMatchTypeOf<ConstantNode>()
|
1949
2162
|
}
|
1950
2163
|
if (math.isFunctionAssignmentNode(x)) {
|
1951
|
-
expectTypeOf(x).toMatchTypeOf<
|
2164
|
+
expectTypeOf(x).toMatchTypeOf<FunctionAssignmentNode>()
|
1952
2165
|
}
|
1953
2166
|
if (math.isFunctionNode(x)) {
|
1954
|
-
expectTypeOf(x).toMatchTypeOf<
|
2167
|
+
expectTypeOf(x).toMatchTypeOf<FunctionNode>()
|
1955
2168
|
}
|
1956
2169
|
if (math.isIndexNode(x)) {
|
1957
|
-
expectTypeOf(x).toMatchTypeOf<
|
2170
|
+
expectTypeOf(x).toMatchTypeOf<IndexNode>()
|
1958
2171
|
}
|
1959
2172
|
if (math.isNode(x)) {
|
1960
|
-
expectTypeOf(x).toMatchTypeOf<
|
2173
|
+
expectTypeOf(x).toMatchTypeOf<MathNodeCommon>()
|
1961
2174
|
}
|
1962
2175
|
if (math.isNode(x)) {
|
1963
|
-
expectTypeOf(x).toMatchTypeOf<
|
2176
|
+
expectTypeOf(x).toMatchTypeOf<MathNodeCommon>()
|
1964
2177
|
}
|
1965
2178
|
if (math.isObjectNode(x)) {
|
1966
|
-
expectTypeOf(x).toMatchTypeOf<
|
2179
|
+
expectTypeOf(x).toMatchTypeOf<ObjectNode>()
|
1967
2180
|
}
|
1968
2181
|
if (math.isOperatorNode(x)) {
|
1969
2182
|
expectTypeOf(x).toMatchTypeOf<
|
@@ -1971,17 +2184,17 @@ Factory Test
|
|
1971
2184
|
>()
|
1972
2185
|
}
|
1973
2186
|
if (math.isParenthesisNode(x)) {
|
1974
|
-
expectTypeOf(x).toMatchTypeOf<
|
2187
|
+
expectTypeOf(x).toMatchTypeOf<ParenthesisNode>()
|
1975
2188
|
}
|
1976
2189
|
if (math.isRangeNode(x)) {
|
1977
|
-
expectTypeOf(x).toMatchTypeOf<
|
2190
|
+
expectTypeOf(x).toMatchTypeOf<RangeNode>()
|
1978
2191
|
}
|
1979
2192
|
if (math.isSymbolNode(x)) {
|
1980
|
-
expectTypeOf(x).toMatchTypeOf<
|
2193
|
+
expectTypeOf(x).toMatchTypeOf<SymbolNode>()
|
1981
2194
|
}
|
1982
2195
|
if (math.isChain(x)) {
|
1983
2196
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
1984
|
-
expectTypeOf(x).toMatchTypeOf<
|
2197
|
+
expectTypeOf(x).toMatchTypeOf<MathJsChain<any>>()
|
1985
2198
|
}
|
1986
2199
|
}
|
1987
2200
|
|
@@ -1992,9 +2205,7 @@ Probability function examples
|
|
1992
2205
|
const math = create(all, {})
|
1993
2206
|
|
1994
2207
|
expectTypeOf(math.lgamma(1.5)).toMatchTypeOf<number>()
|
1995
|
-
expectTypeOf(
|
1996
|
-
math.lgamma(math.complex(1.5, -1.5))
|
1997
|
-
).toMatchTypeOf<math.Complex>()
|
2208
|
+
expectTypeOf(math.lgamma(math.complex(1.5, -1.5))).toMatchTypeOf<Complex>()
|
1998
2209
|
}
|
1999
2210
|
|
2000
2211
|
/*
|
@@ -2020,11 +2231,14 @@ Resolve examples
|
|
2020
2231
|
{
|
2021
2232
|
const math = create(all, {})
|
2022
2233
|
|
2234
|
+
expectTypeOf(math.resolve('x + y')).toMatchTypeOf<MathNode>()
|
2023
2235
|
expectTypeOf(math.resolve(math.parse('x + y'))).toMatchTypeOf<MathNode>()
|
2024
2236
|
expectTypeOf(
|
2025
2237
|
math.resolve(math.parse('x + y'), { x: 0 })
|
2026
2238
|
).toMatchTypeOf<MathNode>()
|
2027
|
-
expectTypeOf(math.resolve(
|
2028
|
-
|
2029
|
-
|
2239
|
+
expectTypeOf(math.resolve('x + y', { x: 0 })).toMatchTypeOf<MathNode>()
|
2240
|
+
expectTypeOf(
|
2241
|
+
math.resolve([math.parse('x + y'), 'x*x'], { x: 0 })
|
2242
|
+
).toMatchTypeOf<MathNode[]>()
|
2243
|
+
expectTypeOf(math.resolve(math.matrix(['x', 'y']))).toMatchTypeOf<Matrix>()
|
2030
2244
|
}
|