mathjs 10.6.2 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/HISTORY.md +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 +22 -30
- 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 +87 -114
- 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 +9 -26
- 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 +33 -27
- package/lib/cjs/function/arithmetic/floor.js +56 -46
- 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 +1 -1
- 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 +80 -92
- 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 +5 -3
- 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 +68 -81
- package/lib/cjs/function/bitwise/rightArithShift.js +68 -81
- package/lib/cjs/function/bitwise/rightLogShift.js +68 -81
- 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/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 +10 -7
- 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/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/trigonometry/acos.js +4 -8
- package/lib/cjs/function/trigonometry/acosh.js +2 -7
- package/lib/cjs/function/trigonometry/acot.js +4 -8
- package/lib/cjs/function/trigonometry/acoth.js +4 -8
- package/lib/cjs/function/trigonometry/acsc.js +4 -8
- package/lib/cjs/function/trigonometry/acsch.js +4 -8
- package/lib/cjs/function/trigonometry/asec.js +4 -8
- package/lib/cjs/function/trigonometry/asech.js +4 -8
- package/lib/cjs/function/trigonometry/asin.js +4 -9
- package/lib/cjs/function/trigonometry/asinh.js +4 -9
- package/lib/cjs/function/trigonometry/atan.js +4 -9
- package/lib/cjs/function/trigonometry/atan2.js +24 -62
- 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/hasNumericValue.js +4 -0
- package/lib/cjs/function/utils/isInteger.js +5 -3
- package/lib/cjs/function/utils/isNegative.js +10 -6
- package/lib/cjs/function/utils/isNumeric.js +5 -3
- package/lib/cjs/function/utils/isPositive.js +10 -6
- package/lib/cjs/function/utils/isPrime.js +5 -3
- package/lib/cjs/function/utils/isZero.js +10 -6
- 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 +22 -30
- 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 +82 -112
- 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 +9 -26
- 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 +17 -17
- package/lib/esm/function/arithmetic/floor.js +25 -25
- package/lib/esm/function/arithmetic/gcd.js +26 -70
- package/lib/esm/function/arithmetic/hypot.js +7 -6
- 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 +38 -73
- 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 +1 -3
- 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 +38 -60
- package/lib/esm/function/bitwise/rightArithShift.js +38 -60
- package/lib/esm/function/bitwise/rightLogShift.js +38 -60
- 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/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 +2 -7
- package/lib/esm/function/matrix/ones.js +2 -1
- 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/trigonometry/acos.js +4 -7
- package/lib/esm/function/trigonometry/acosh.js +2 -6
- package/lib/esm/function/trigonometry/acot.js +4 -7
- package/lib/esm/function/trigonometry/acoth.js +4 -7
- package/lib/esm/function/trigonometry/acsc.js +4 -7
- package/lib/esm/function/trigonometry/acsch.js +4 -7
- package/lib/esm/function/trigonometry/asec.js +4 -7
- package/lib/esm/function/trigonometry/asech.js +4 -7
- package/lib/esm/function/trigonometry/asin.js +4 -8
- package/lib/esm/function/trigonometry/asinh.js +4 -8
- package/lib/esm/function/trigonometry/atan.js +4 -8
- package/lib/esm/function/trigonometry/atan2.js +25 -64
- 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/hasNumericValue.js +2 -0
- package/lib/esm/function/utils/isInteger.js +1 -3
- package/lib/esm/function/utils/isNegative.js +2 -6
- package/lib/esm/function/utils/isNumeric.js +3 -9
- package/lib/esm/function/utils/isPositive.js +2 -6
- package/lib/esm/function/utils/isPrime.js +1 -3
- package/lib/esm/function/utils/isZero.js +2 -6
- 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 +202 -181
- package/types/index.ts +264 -57
- package/lib/cjs/utils/polyfills.js +0 -14
- package/lib/esm/utils/polyfills.js +0 -12
|
@@ -9,24 +9,25 @@ exports.createSimplifyConstant = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
11
11
|
|
|
12
|
-
var _is = require("
|
|
12
|
+
var _is = require("../../utils/is.js");
|
|
13
13
|
|
|
14
|
-
var _factory = require("
|
|
14
|
+
var _factory = require("../../utils/factory.js");
|
|
15
15
|
|
|
16
|
-
var _util = require("./util.js");
|
|
16
|
+
var _util = require("./simplify/util.js");
|
|
17
17
|
|
|
18
|
-
var _noop = require("
|
|
18
|
+
var _noop = require("../../utils/noop.js");
|
|
19
19
|
|
|
20
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it
|
|
20
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
21
21
|
|
|
22
22
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
23
23
|
|
|
24
24
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
25
25
|
|
|
26
26
|
var name = 'simplifyConstant';
|
|
27
|
-
var dependencies = ['typed', 'config', 'mathWithTransform', 'matrix', '?fraction', '?bignumber', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode'];
|
|
27
|
+
var dependencies = ['typed', 'parse', 'config', 'mathWithTransform', 'matrix', '?fraction', '?bignumber', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode'];
|
|
28
28
|
var createSimplifyConstant = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
29
29
|
var typed = _ref.typed,
|
|
30
|
+
parse = _ref.parse,
|
|
30
31
|
config = _ref.config,
|
|
31
32
|
mathWithTransform = _ref.mathWithTransform,
|
|
32
33
|
matrix = _ref.matrix,
|
|
@@ -50,10 +51,43 @@ var createSimplifyConstant = /* #__PURE__ */(0, _factory.factory)(name, dependen
|
|
|
50
51
|
isAssociative = _createUtil.isAssociative,
|
|
51
52
|
allChildren = _createUtil.allChildren,
|
|
52
53
|
createMakeNodeFunction = _createUtil.createMakeNodeFunction;
|
|
54
|
+
/**
|
|
55
|
+
* simplifyConstant() takes a mathjs expression (either a Node representing
|
|
56
|
+
* a parse tree or a string which it parses to produce a node), and replaces
|
|
57
|
+
* any subexpression of it consisting entirely of constants with the computed
|
|
58
|
+
* value of that subexpression.
|
|
59
|
+
*
|
|
60
|
+
* Syntax:
|
|
61
|
+
*
|
|
62
|
+
* simplifyConstant(expr)
|
|
63
|
+
* simplifyConstant(expr, options)
|
|
64
|
+
*
|
|
65
|
+
* Examples:
|
|
66
|
+
*
|
|
67
|
+
* math.simplifyConstant('x + 4*3/6') // Node "x + 2"
|
|
68
|
+
* math.simplifyConstant('z cos(0)') // Node "z 1"
|
|
69
|
+
* math.simplifyConstant('(5.2 + 1.08)t', {exactFractions: false}) // Node "6.28 t"
|
|
70
|
+
*
|
|
71
|
+
* See also:
|
|
72
|
+
*
|
|
73
|
+
* simplify, simplifyCore, resolve, derivative
|
|
74
|
+
*
|
|
75
|
+
* @param {Node | string} node
|
|
76
|
+
* The expression to be simplified
|
|
77
|
+
* @param {Object} options
|
|
78
|
+
* Simplification options, as per simplify()
|
|
79
|
+
* @return {Node} Returns expression with constant subexpressions evaluated
|
|
80
|
+
*/
|
|
53
81
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
82
|
+
|
|
83
|
+
var simplifyConstant = typed('simplifyConstant', {
|
|
84
|
+
Node: function Node(node) {
|
|
85
|
+
return _ensureNode(foldFraction(node, {}));
|
|
86
|
+
},
|
|
87
|
+
'Node, Object': function NodeObject(expr, options) {
|
|
88
|
+
return _ensureNode(foldFraction(expr, options));
|
|
89
|
+
}
|
|
90
|
+
});
|
|
57
91
|
|
|
58
92
|
function _removeFractions(thing) {
|
|
59
93
|
if ((0, _is.isFraction)(thing)) {
|
|
@@ -348,7 +382,7 @@ var createSimplifyConstant = /* #__PURE__ */(0, _factory.factory)(name, dependen
|
|
|
348
382
|
return node;
|
|
349
383
|
|
|
350
384
|
case 'ConstantNode':
|
|
351
|
-
switch ((0, _typeof2
|
|
385
|
+
switch ((0, _typeof2["default"])(node.value)) {
|
|
352
386
|
case 'number':
|
|
353
387
|
return _toNumber(node.value, options);
|
|
354
388
|
|
|
@@ -7,14 +7,18 @@ exports.createSimplifyCore = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _is = require("../../utils/is.js");
|
|
9
9
|
|
|
10
|
+
var _operators = require("../../expression/operators.js");
|
|
11
|
+
|
|
10
12
|
var _util = require("./simplify/util.js");
|
|
11
13
|
|
|
12
14
|
var _factory = require("../../utils/factory.js");
|
|
13
15
|
|
|
14
16
|
var name = 'simplifyCore';
|
|
15
|
-
var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
|
|
17
|
+
var dependencies = ['typed', 'parse', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
|
|
16
18
|
var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
17
|
-
var
|
|
19
|
+
var typed = _ref.typed,
|
|
20
|
+
parse = _ref.parse,
|
|
21
|
+
equal = _ref.equal,
|
|
18
22
|
isZero = _ref.isZero,
|
|
19
23
|
add = _ref.add,
|
|
20
24
|
subtract = _ref.subtract,
|
|
@@ -32,6 +36,13 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
32
36
|
SymbolNode = _ref.SymbolNode;
|
|
33
37
|
var node0 = new ConstantNode(0);
|
|
34
38
|
var node1 = new ConstantNode(1);
|
|
39
|
+
var nodeT = new ConstantNode(true);
|
|
40
|
+
var nodeF = new ConstantNode(false); // test if a node will always have a boolean value (true/false)
|
|
41
|
+
// not sure if this list is complete
|
|
42
|
+
|
|
43
|
+
function isAlwaysBoolean(node) {
|
|
44
|
+
return (0, _is.isOperatorNode)(node) && ['and', 'not', 'or'].includes(node.op);
|
|
45
|
+
}
|
|
35
46
|
|
|
36
47
|
var _createUtil = (0, _util.createUtil)({
|
|
37
48
|
FunctionNode: FunctionNode,
|
|
@@ -42,25 +53,43 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
42
53
|
isCommutative = _createUtil.isCommutative;
|
|
43
54
|
/**
|
|
44
55
|
* simplifyCore() performs single pass simplification suitable for
|
|
45
|
-
* applications requiring ultimate performance.
|
|
46
|
-
*
|
|
47
|
-
*
|
|
56
|
+
* applications requiring ultimate performance. To roughly summarize,
|
|
57
|
+
* it handles cases along the lines of simplifyConstant() but where
|
|
58
|
+
* knowledge of a single argument is sufficient to determine the value.
|
|
59
|
+
* In contrast, simplify() extends simplifyCore() with additional passes
|
|
60
|
+
* to provide deeper simplification (such as gathering like terms).
|
|
61
|
+
*
|
|
62
|
+
* Specifically, simplifyCore:
|
|
63
|
+
*
|
|
64
|
+
* * Converts all function calls with operator equivalents to their
|
|
65
|
+
* operator forms.
|
|
66
|
+
* * Removes operators or function calls that are guaranteed to have no
|
|
67
|
+
* effect (such as unary '+').
|
|
68
|
+
* * Removes double unary '-', '~', and 'not'
|
|
69
|
+
* * Eliminates addition/subtraction of 0 and multiplication/division/powers
|
|
70
|
+
* by 1 or 0.
|
|
71
|
+
* * Converts addition of a negation into subtraction.
|
|
72
|
+
* * Eliminates logical operations with constant true or false leading
|
|
73
|
+
* arguments.
|
|
74
|
+
* * Puts constants on the left of a product, if multiplication is
|
|
75
|
+
* considered commutative by the options (which is the default)
|
|
48
76
|
*
|
|
49
77
|
* Syntax:
|
|
50
78
|
*
|
|
51
79
|
* simplifyCore(expr)
|
|
80
|
+
* simplifyCore(expr, options)
|
|
52
81
|
*
|
|
53
82
|
* Examples:
|
|
54
83
|
*
|
|
55
|
-
* const f = math.parse('2 * 1 * x ^ (
|
|
56
|
-
* math.
|
|
57
|
-
* math.simplify('2 * 1 * x ^ (
|
|
84
|
+
* const f = math.parse('2 * 1 * x ^ (1 - 0)')
|
|
85
|
+
* math.simplifyCore(f) // Node "2 * x"
|
|
86
|
+
* math.simplify('2 * 1 * x ^ (1 - 0)', [math.simplifyCore]) // Node "2 * x"
|
|
58
87
|
*
|
|
59
88
|
* See also:
|
|
60
89
|
*
|
|
61
|
-
* simplify, resolve, derivative
|
|
90
|
+
* simplify, simplifyConstant, resolve, derivative
|
|
62
91
|
*
|
|
63
|
-
* @param {Node} node
|
|
92
|
+
* @param {Node | string} node
|
|
64
93
|
* The expression to be simplified
|
|
65
94
|
* @param {Object} options
|
|
66
95
|
* Simplification options, as per simplify()
|
|
@@ -68,24 +97,25 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
68
97
|
*/
|
|
69
98
|
|
|
70
99
|
|
|
71
|
-
function
|
|
100
|
+
function _simplifyCore(nodeToSimplify) {
|
|
101
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
72
102
|
var context = options ? options.context : undefined;
|
|
73
103
|
|
|
74
|
-
if (hasProperty(
|
|
104
|
+
if (hasProperty(nodeToSimplify, 'trivial', context)) {
|
|
75
105
|
// This node does nothing if it has only one argument, so if so,
|
|
76
106
|
// return that argument simplified
|
|
77
|
-
if ((0, _is.isFunctionNode)(
|
|
78
|
-
return
|
|
107
|
+
if ((0, _is.isFunctionNode)(nodeToSimplify) && nodeToSimplify.args.length === 1) {
|
|
108
|
+
return _simplifyCore(nodeToSimplify.args[0], options);
|
|
79
109
|
} // For other node types, we try the generic methods
|
|
80
110
|
|
|
81
111
|
|
|
82
112
|
var simpChild = false;
|
|
83
113
|
var childCount = 0;
|
|
84
|
-
|
|
114
|
+
nodeToSimplify.forEach(function (c) {
|
|
85
115
|
++childCount;
|
|
86
116
|
|
|
87
117
|
if (childCount === 1) {
|
|
88
|
-
simpChild =
|
|
118
|
+
simpChild = _simplifyCore(c, options);
|
|
89
119
|
}
|
|
90
120
|
});
|
|
91
121
|
|
|
@@ -94,33 +124,79 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
94
124
|
}
|
|
95
125
|
}
|
|
96
126
|
|
|
127
|
+
var node = nodeToSimplify;
|
|
128
|
+
|
|
129
|
+
if ((0, _is.isFunctionNode)(node)) {
|
|
130
|
+
var op = (0, _operators.getOperator)(node.name);
|
|
131
|
+
|
|
132
|
+
if (op) {
|
|
133
|
+
// Replace FunctionNode with a new OperatorNode
|
|
134
|
+
if (node.args.length > 2 && hasProperty(node, 'associative', context)) {
|
|
135
|
+
// unflatten into binary operations since that's what simplifyCore handles
|
|
136
|
+
while (node.args.length > 2) {
|
|
137
|
+
var last = node.args.pop();
|
|
138
|
+
var seclast = node.args.pop();
|
|
139
|
+
node.args.push(new OperatorNode(op, node.name, [last, seclast]));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
node = new OperatorNode(op, node.name, node.args);
|
|
144
|
+
} else {
|
|
145
|
+
return new FunctionNode(_simplifyCore(node.fn), node.args.map(function (n) {
|
|
146
|
+
return _simplifyCore(n, options);
|
|
147
|
+
}));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
97
151
|
if ((0, _is.isOperatorNode)(node) && node.isUnary()) {
|
|
98
|
-
var a0 =
|
|
152
|
+
var a0 = _simplifyCore(node.args[0], options);
|
|
153
|
+
|
|
154
|
+
if (node.op === '~') {
|
|
155
|
+
// bitwise not
|
|
156
|
+
if ((0, _is.isOperatorNode)(a0) && a0.isUnary() && a0.op === '~') {
|
|
157
|
+
return a0.args[0];
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (node.op === 'not') {
|
|
162
|
+
// logical not
|
|
163
|
+
if ((0, _is.isOperatorNode)(a0) && a0.isUnary() && a0.op === 'not') {
|
|
164
|
+
// Has the effect of turning the argument into a boolean
|
|
165
|
+
// So can only eliminate the double negation if
|
|
166
|
+
// the inside is already boolean
|
|
167
|
+
if (isAlwaysBoolean(a0.args[0])) {
|
|
168
|
+
return a0.args[0];
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
var finish = true;
|
|
99
174
|
|
|
100
175
|
if (node.op === '-') {
|
|
101
176
|
// unary minus
|
|
102
177
|
if ((0, _is.isOperatorNode)(a0)) {
|
|
178
|
+
if (a0.isBinary() && a0.fn === 'subtract') {
|
|
179
|
+
node = new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);
|
|
180
|
+
finish = false; // continue to process the new binary node
|
|
181
|
+
}
|
|
182
|
+
|
|
103
183
|
if (a0.isUnary() && a0.op === '-') {
|
|
104
184
|
return a0.args[0];
|
|
105
|
-
} else if (a0.isBinary() && a0.fn === 'subtract') {
|
|
106
|
-
return new OperatorNode('-', 'subtract', [a0.args[1], a0.args[0]]);
|
|
107
185
|
}
|
|
108
186
|
}
|
|
109
|
-
|
|
110
|
-
return new OperatorNode(node.op, node.fn, [a0]);
|
|
111
187
|
}
|
|
112
|
-
} else if ((0, _is.isOperatorNode)(node) && node.isBinary()) {
|
|
113
|
-
var _a = simplifyCore(node.args[0], options);
|
|
114
188
|
|
|
115
|
-
|
|
189
|
+
if (finish) return new OperatorNode(node.op, node.fn, [a0]);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
if ((0, _is.isOperatorNode)(node) && node.isBinary()) {
|
|
193
|
+
var _a = _simplifyCore(node.args[0], options);
|
|
194
|
+
|
|
195
|
+
var a1 = _simplifyCore(node.args[1], options);
|
|
116
196
|
|
|
117
197
|
if (node.op === '+') {
|
|
118
|
-
if ((0, _is.isConstantNode)(_a)) {
|
|
119
|
-
|
|
120
|
-
return a1;
|
|
121
|
-
} else if ((0, _is.isConstantNode)(a1)) {
|
|
122
|
-
return new ConstantNode(add(_a.value, a1.value));
|
|
123
|
-
}
|
|
198
|
+
if ((0, _is.isConstantNode)(_a) && isZero(_a.value)) {
|
|
199
|
+
return a1;
|
|
124
200
|
}
|
|
125
201
|
|
|
126
202
|
if ((0, _is.isConstantNode)(a1) && isZero(a1.value)) {
|
|
@@ -128,39 +204,33 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
128
204
|
}
|
|
129
205
|
|
|
130
206
|
if ((0, _is.isOperatorNode)(a1) && a1.isUnary() && a1.op === '-') {
|
|
131
|
-
|
|
207
|
+
a1 = a1.args[0];
|
|
208
|
+
node = new OperatorNode('-', 'subtract', [_a, a1]);
|
|
132
209
|
}
|
|
210
|
+
}
|
|
133
211
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return new ConstantNode(subtract(_a.value, a1.value));
|
|
139
|
-
} else if (isZero(_a.value)) {
|
|
140
|
-
return new OperatorNode('-', 'unaryMinus', [a1]);
|
|
141
|
-
}
|
|
142
|
-
} // if (node.fn === "subtract" && node.args.length === 2) {
|
|
212
|
+
if (node.op === '-') {
|
|
213
|
+
if ((0, _is.isOperatorNode)(a1) && a1.isUnary() && a1.op === '-') {
|
|
214
|
+
return _simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);
|
|
215
|
+
}
|
|
143
216
|
|
|
217
|
+
if ((0, _is.isConstantNode)(_a) && isZero(_a.value)) {
|
|
218
|
+
return _simplifyCore(new OperatorNode('-', 'unaryMinus', [a1]));
|
|
219
|
+
}
|
|
144
220
|
|
|
145
|
-
if (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
221
|
+
if ((0, _is.isConstantNode)(a1) && isZero(a1.value)) {
|
|
222
|
+
return _a;
|
|
223
|
+
}
|
|
149
224
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
}
|
|
225
|
+
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
|
226
|
+
}
|
|
153
227
|
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
} else if (node.op === '*') {
|
|
228
|
+
if (node.op === '*') {
|
|
157
229
|
if ((0, _is.isConstantNode)(_a)) {
|
|
158
230
|
if (isZero(_a.value)) {
|
|
159
231
|
return node0;
|
|
160
232
|
} else if (equal(_a.value, 1)) {
|
|
161
233
|
return a1;
|
|
162
|
-
} else if ((0, _is.isConstantNode)(a1)) {
|
|
163
|
-
return new ConstantNode(multiply(_a.value, a1.value));
|
|
164
234
|
}
|
|
165
235
|
}
|
|
166
236
|
|
|
@@ -169,83 +239,116 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
169
239
|
return node0;
|
|
170
240
|
} else if (equal(a1.value, 1)) {
|
|
171
241
|
return _a;
|
|
172
|
-
} else if ((0, _is.isOperatorNode)(_a) && _a.isBinary() && _a.op === node.op && isCommutative(node, context)) {
|
|
173
|
-
var a00 = _a.args[0];
|
|
174
|
-
|
|
175
|
-
if ((0, _is.isConstantNode)(a00)) {
|
|
176
|
-
var a00a1 = new ConstantNode(multiply(a00.value, a1.value));
|
|
177
|
-
return new OperatorNode(node.op, node.fn, [a00a1, _a.args[1]], node.implicit); // constants on left
|
|
178
|
-
}
|
|
179
242
|
}
|
|
180
243
|
|
|
181
244
|
if (isCommutative(node, context)) {
|
|
182
245
|
return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left
|
|
183
|
-
} else {
|
|
184
|
-
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
|
|
185
246
|
}
|
|
186
247
|
}
|
|
187
248
|
|
|
188
249
|
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
if (node.op === '/') {
|
|
253
|
+
if ((0, _is.isConstantNode)(_a) && isZero(_a.value)) {
|
|
254
|
+
return node0;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if ((0, _is.isConstantNode)(a1) && equal(a1.value, 1)) {
|
|
258
|
+
return _a;
|
|
196
259
|
}
|
|
197
260
|
|
|
198
261
|
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
|
199
|
-
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
if (node.op === '^') {
|
|
200
265
|
if ((0, _is.isConstantNode)(a1)) {
|
|
201
266
|
if (isZero(a1.value)) {
|
|
202
267
|
return node1;
|
|
203
268
|
} else if (equal(a1.value, 1)) {
|
|
204
269
|
return _a;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
if (node.op === 'and') {
|
|
275
|
+
if ((0, _is.isConstantNode)(_a)) {
|
|
276
|
+
if (_a.value) {
|
|
277
|
+
if (isAlwaysBoolean(a1)) return a1;
|
|
278
|
+
} else {
|
|
279
|
+
return nodeF;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
if ((0, _is.isConstantNode)(a1)) {
|
|
284
|
+
if (a1.value) {
|
|
285
|
+
if (isAlwaysBoolean(_a)) return _a;
|
|
205
286
|
} else {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
287
|
+
return nodeF;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (node.op === 'or') {
|
|
293
|
+
if ((0, _is.isConstantNode)(_a)) {
|
|
294
|
+
if (_a.value) {
|
|
295
|
+
return nodeT;
|
|
296
|
+
} else {
|
|
297
|
+
if (isAlwaysBoolean(a1)) return a1;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
if ((0, _is.isConstantNode)(a1)) {
|
|
302
|
+
if (a1.value) {
|
|
303
|
+
return nodeT;
|
|
304
|
+
} else {
|
|
305
|
+
if (isAlwaysBoolean(_a)) return _a;
|
|
216
306
|
}
|
|
217
307
|
}
|
|
218
308
|
}
|
|
219
309
|
|
|
220
310
|
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
if ((0, _is.isOperatorNode)(node)) {
|
|
314
|
+
return new OperatorNode(node.op, node.fn, node.args.map(function (a) {
|
|
315
|
+
return _simplifyCore(a, options);
|
|
224
316
|
}));
|
|
225
|
-
}
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
if ((0, _is.isArrayNode)(node)) {
|
|
226
320
|
return new ArrayNode(node.items.map(function (n) {
|
|
227
|
-
return
|
|
321
|
+
return _simplifyCore(n, options);
|
|
228
322
|
}));
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if ((0, _is.isAccessorNode)(node)) {
|
|
326
|
+
return new AccessorNode(_simplifyCore(node.object, options), _simplifyCore(node.index, options));
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
if ((0, _is.isIndexNode)(node)) {
|
|
232
330
|
return new IndexNode(node.dimensions.map(function (n) {
|
|
233
|
-
return
|
|
331
|
+
return _simplifyCore(n, options);
|
|
234
332
|
}));
|
|
235
|
-
}
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
if ((0, _is.isObjectNode)(node)) {
|
|
236
336
|
var newProps = {};
|
|
237
337
|
|
|
238
338
|
for (var prop in node.properties) {
|
|
239
|
-
newProps[prop] =
|
|
339
|
+
newProps[prop] = _simplifyCore(node.properties[prop], options);
|
|
240
340
|
}
|
|
241
341
|
|
|
242
342
|
return new ObjectNode(newProps);
|
|
243
|
-
}
|
|
244
|
-
|
|
343
|
+
} // cannot simplify
|
|
344
|
+
|
|
245
345
|
|
|
246
346
|
return node;
|
|
247
347
|
}
|
|
248
348
|
|
|
249
|
-
return
|
|
349
|
+
return typed(name, {
|
|
350
|
+
Node: _simplifyCore,
|
|
351
|
+
'Node,Object': _simplifyCore
|
|
352
|
+
});
|
|
250
353
|
});
|
|
251
354
|
exports.createSimplifyCore = createSimplifyCore;
|
|
@@ -107,7 +107,7 @@ var createLsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
107
107
|
}
|
|
108
108
|
} else if (k === 0) {
|
|
109
109
|
// singular row, RHS is zero
|
|
110
|
-
var bNew = (0, _toConsumableArray2
|
|
110
|
+
var bNew = (0, _toConsumableArray2["default"])(b);
|
|
111
111
|
bNew[i] = 1;
|
|
112
112
|
|
|
113
113
|
for (var _j = i + 1; _j < columns; _j++) {
|
|
@@ -187,7 +187,7 @@ var createLsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
187
187
|
}
|
|
188
188
|
} else if (k === 0) {
|
|
189
189
|
// singular row, RHS is zero
|
|
190
|
-
var bNew = (0, _toConsumableArray2
|
|
190
|
+
var bNew = (0, _toConsumableArray2["default"])(b);
|
|
191
191
|
bNew[i] = 1;
|
|
192
192
|
|
|
193
193
|
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
|
@@ -107,7 +107,7 @@ var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
107
107
|
}
|
|
108
108
|
} else if (k === 0) {
|
|
109
109
|
// singular row, RHS is zero
|
|
110
|
-
var bNew = (0, _toConsumableArray2
|
|
110
|
+
var bNew = (0, _toConsumableArray2["default"])(b);
|
|
111
111
|
bNew[i] = 1;
|
|
112
112
|
|
|
113
113
|
for (var _j = i - 1; _j >= 0; _j--) {
|
|
@@ -187,7 +187,7 @@ var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
187
187
|
}
|
|
188
188
|
} else if (k === 0) {
|
|
189
189
|
// singular row, RHS is zero
|
|
190
|
-
var bNew = (0, _toConsumableArray2
|
|
190
|
+
var bNew = (0, _toConsumableArray2["default"])(b);
|
|
191
191
|
bNew[i] = 1; // loop upper triangular
|
|
192
192
|
|
|
193
193
|
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
|
@@ -56,33 +56,16 @@ var createSymbolicEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencie
|
|
|
56
56
|
* Returns true if a valid manipulation making the expressions equal
|
|
57
57
|
* is found.
|
|
58
58
|
*/
|
|
59
|
+
function _symbolicEqual(e1, e2) {
|
|
60
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
61
|
+
var diff = new OperatorNode('-', 'subtract', [e1, e2]);
|
|
62
|
+
var simplified = simplify(diff, {}, options);
|
|
63
|
+
return (0, _is.isConstantNode)(simplified) && !simplified.value;
|
|
64
|
+
}
|
|
65
|
+
|
|
59
66
|
return typed(name, {
|
|
60
|
-
'
|
|
61
|
-
|
|
62
|
-
},
|
|
63
|
-
'string, string, Object': function stringStringObject(s1, s2, options) {
|
|
64
|
-
return this(parse(s1), parse(s2), options);
|
|
65
|
-
},
|
|
66
|
-
'Node, string': function NodeString(e1, s2) {
|
|
67
|
-
return this(e1, parse(s2), {});
|
|
68
|
-
},
|
|
69
|
-
'Node, string, Object': function NodeStringObject(e1, s2, options) {
|
|
70
|
-
return this(e1, parse(s2), options);
|
|
71
|
-
},
|
|
72
|
-
'string, Node': function stringNode(s1, e2) {
|
|
73
|
-
return this(parse(s1), e2, {});
|
|
74
|
-
},
|
|
75
|
-
'string, Node, Object': function stringNodeObject(s1, e2, options) {
|
|
76
|
-
return this(parse(s1), e2, options);
|
|
77
|
-
},
|
|
78
|
-
'Node, Node': function NodeNode(e1, e2) {
|
|
79
|
-
return this(e1, e2, {});
|
|
80
|
-
},
|
|
81
|
-
'Node, Node, Object': function NodeNodeObject(e1, e2, options) {
|
|
82
|
-
var diff = new OperatorNode('-', 'subtract', [e1, e2]);
|
|
83
|
-
var simplified = simplify(diff, {}, options);
|
|
84
|
-
return (0, _is.isConstantNode)(simplified) && !simplified.value;
|
|
85
|
-
}
|
|
67
|
+
'Node, Node': _symbolicEqual,
|
|
68
|
+
'Node, Node, Object': _symbolicEqual
|
|
86
69
|
});
|
|
87
70
|
});
|
|
88
71
|
exports.createSymbolicEqual = createSymbolicEqual;
|
|
@@ -42,22 +42,15 @@ var createAbs = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
|
42
42
|
*/
|
|
43
43
|
return typed(name, {
|
|
44
44
|
number: _index.absNumber,
|
|
45
|
-
Complex: function
|
|
45
|
+
'Complex | BigNumber | Fraction | Unit': function ComplexBigNumberFractionUnit(x) {
|
|
46
46
|
return x.abs();
|
|
47
47
|
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
'Array | Matrix': function ArrayMatrix(x) {
|
|
55
|
-
// deep map collection, skip zeros since abs(0) = 0
|
|
56
|
-
return (0, _collection.deepMap)(x, this, true);
|
|
57
|
-
},
|
|
58
|
-
Unit: function Unit(x) {
|
|
59
|
-
return x.abs();
|
|
60
|
-
}
|
|
48
|
+
// deep map collection, skip zeros since abs(0) = 0
|
|
49
|
+
'Array | Matrix': typed.referToSelf(function (self) {
|
|
50
|
+
return function (x) {
|
|
51
|
+
return (0, _collection.deepMap)(x, self, true);
|
|
52
|
+
};
|
|
53
|
+
})
|
|
61
54
|
});
|
|
62
55
|
});
|
|
63
56
|
exports.createAbs = createAbs;
|