mathjs 10.6.3 → 11.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +74 -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/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 +56 -46
- 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 +57 -47
- 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 +69 -21
- package/lib/cjs/type/unit/function/createUnit.js +2 -1
- package/lib/cjs/type/unit/function/unit.js +9 -3
- 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/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 +61 -13
- package/lib/esm/type/unit/function/createUnit.js +2 -1
- package/lib/esm/type/unit/function/unit.js +5 -3
- 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 +21 -24
- package/types/index.d.ts +215 -183
- package/types/index.ts +358 -144
- 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
|
}
|