mathjs 10.6.4 → 11.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +63 -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 +50 -40
- package/lib/cjs/function/arithmetic/cube.js +5 -10
- package/lib/cjs/function/arithmetic/divide.js +7 -7
- package/lib/cjs/function/arithmetic/divideScalar.js +4 -18
- package/lib/cjs/function/arithmetic/dotDivide.js +22 -65
- package/lib/cjs/function/arithmetic/dotMultiply.js +16 -61
- package/lib/cjs/function/arithmetic/dotPow.js +30 -63
- package/lib/cjs/function/arithmetic/exp.js +8 -12
- package/lib/cjs/function/arithmetic/expm1.js +10 -10
- package/lib/cjs/function/arithmetic/fix.js +33 -27
- package/lib/cjs/function/arithmetic/floor.js +50 -40
- 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 +20 -23
- package/types/index.d.ts +201 -180
- package/types/index.ts +264 -57
- package/lib/cjs/utils/polyfills.js +0 -14
- package/lib/esm/utils/polyfills.js +0 -12
@@ -9,10 +9,8 @@ var _number = require("../../utils/number.js");
|
|
9
9
|
|
10
10
|
var _factory = require("../../utils/factory.js");
|
11
11
|
|
12
|
-
var _simplifyConstant = require("./simplify/simplifyConstant.js");
|
13
|
-
|
14
12
|
var name = 'rationalize';
|
15
|
-
var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
|
13
|
+
var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyConstant', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
|
16
14
|
var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
17
15
|
var config = _ref.config,
|
18
16
|
typed = _ref.typed,
|
@@ -24,6 +22,7 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
24
22
|
divide = _ref.divide,
|
25
23
|
pow = _ref.pow,
|
26
24
|
parse = _ref.parse,
|
25
|
+
simplifyConstant = _ref.simplifyConstant,
|
27
26
|
simplifyCore = _ref.simplifyCore,
|
28
27
|
simplify = _ref.simplify,
|
29
28
|
fraction = _ref.fraction,
|
@@ -39,22 +38,7 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
39
38
|
OperatorNode = _ref.OperatorNode,
|
40
39
|
SymbolNode = _ref.SymbolNode,
|
41
40
|
ParenthesisNode = _ref.ParenthesisNode;
|
42
|
-
|
43
|
-
typed: typed,
|
44
|
-
config: config,
|
45
|
-
mathWithTransform: mathWithTransform,
|
46
|
-
matrix: matrix,
|
47
|
-
fraction: fraction,
|
48
|
-
bignumber: bignumber,
|
49
|
-
AccessorNode: AccessorNode,
|
50
|
-
ArrayNode: ArrayNode,
|
51
|
-
ConstantNode: ConstantNode,
|
52
|
-
FunctionNode: FunctionNode,
|
53
|
-
IndexNode: IndexNode,
|
54
|
-
ObjectNode: ObjectNode,
|
55
|
-
OperatorNode: OperatorNode,
|
56
|
-
SymbolNode: SymbolNode
|
57
|
-
});
|
41
|
+
|
58
42
|
/**
|
59
43
|
* Transform a rationalizable expression in a rational fraction.
|
60
44
|
* If rational fraction is one variable polynomial then converts
|
@@ -108,116 +92,102 @@ var createRationalize = /* #__PURE__ */(0, _factory.factory)(name, dependencies,
|
|
108
92
|
* {Expression Node} node simplified expression
|
109
93
|
*
|
110
94
|
*/
|
95
|
+
function _rationalize(expr) {
|
96
|
+
var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
97
|
+
var detailed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
98
|
+
var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form
|
111
99
|
|
112
|
-
|
113
|
-
string: function string(expr) {
|
114
|
-
return this(parse(expr), {}, false);
|
115
|
-
},
|
116
|
-
'string, boolean': function stringBoolean(expr, detailed) {
|
117
|
-
return this(parse(expr), {}, detailed);
|
118
|
-
},
|
119
|
-
'string, Object': function stringObject(expr, scope) {
|
120
|
-
return this(parse(expr), scope, false);
|
121
|
-
},
|
122
|
-
'string, Object, boolean': function stringObjectBoolean(expr, scope, detailed) {
|
123
|
-
return this(parse(expr), scope, detailed);
|
124
|
-
},
|
125
|
-
Node: function Node(expr) {
|
126
|
-
return this(expr, {}, false);
|
127
|
-
},
|
128
|
-
'Node, boolean': function NodeBoolean(expr, detailed) {
|
129
|
-
return this(expr, {}, detailed);
|
130
|
-
},
|
131
|
-
'Node, Object': function NodeObject(expr, scope) {
|
132
|
-
return this(expr, scope, false);
|
133
|
-
},
|
134
|
-
'Node, Object, boolean': function NodeObjectBoolean(expr, scope, detailed) {
|
135
|
-
var setRules = rulesRationalize(); // Rules for change polynomial in near canonical form
|
136
|
-
|
137
|
-
var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
|
100
|
+
var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
|
138
101
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
if (nVars >= 1) {
|
149
|
-
// If expression in not a constant
|
150
|
-
expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)
|
102
|
+
var nVars = polyRet.variables.length;
|
103
|
+
var noExactFractions = {
|
104
|
+
exactFractions: false
|
105
|
+
};
|
106
|
+
var withExactFractions = {
|
107
|
+
exactFractions: true
|
108
|
+
};
|
109
|
+
expr = polyRet.expression;
|
151
110
|
|
152
|
-
|
111
|
+
if (nVars >= 1) {
|
112
|
+
// If expression in not a constant
|
113
|
+
expr = expandPower(expr); // First expand power of polynomials (cannot be made from rules!)
|
153
114
|
|
154
|
-
|
155
|
-
var eDistrDiv = true;
|
156
|
-
var redoInic = false; // Apply the initial rules, including succ div rules:
|
115
|
+
var sBefore; // Previous expression
|
157
116
|
|
158
|
-
|
159
|
-
|
117
|
+
var rules;
|
118
|
+
var eDistrDiv = true;
|
119
|
+
var redoInic = false; // Apply the initial rules, including succ div rules:
|
160
120
|
|
161
|
-
|
162
|
-
|
163
|
-
// until there are no more changes:
|
164
|
-
rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
|
165
|
-
expr = simplify(expr, rules, {}, withExactFractions);
|
166
|
-
eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
|
121
|
+
expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
|
122
|
+
var s;
|
167
123
|
|
168
|
-
|
124
|
+
while (true) {
|
125
|
+
// Alternate applying successive division rules and distr.div.rules
|
126
|
+
// until there are no more changes:
|
127
|
+
rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
|
128
|
+
expr = simplify(expr, rules, {}, withExactFractions);
|
129
|
+
eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
|
169
130
|
|
170
|
-
|
171
|
-
break; // No changes : end of the loop
|
172
|
-
}
|
131
|
+
s = expr.toString();
|
173
132
|
|
174
|
-
|
175
|
-
|
133
|
+
if (s === sBefore) {
|
134
|
+
break; // No changes : end of the loop
|
176
135
|
}
|
177
136
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
} // Apply final rules:
|
137
|
+
redoInic = true;
|
138
|
+
sBefore = s;
|
139
|
+
}
|
182
140
|
|
141
|
+
if (redoInic) {
|
142
|
+
// Apply first rules again without succ div rules (if there are changes)
|
143
|
+
expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
|
144
|
+
} // Apply final rules:
|
183
145
|
|
184
|
-
expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
|
185
|
-
} // NVars >= 1
|
186
146
|
|
147
|
+
expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
|
148
|
+
} // NVars >= 1
|
187
149
|
|
188
|
-
var coefficients = [];
|
189
|
-
var retRationalize = {};
|
190
150
|
|
191
|
-
|
192
|
-
|
193
|
-
if (nVars === 1) {
|
194
|
-
expr.args[0] = polyToCanonical(expr.args[0], coefficients);
|
195
|
-
expr.args[1] = polyToCanonical(expr.args[1]);
|
196
|
-
}
|
151
|
+
var coefficients = [];
|
152
|
+
var retRationalize = {};
|
197
153
|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
expr = polyToCanonical(expr, coefficients);
|
205
|
-
}
|
154
|
+
if (expr.type === 'OperatorNode' && expr.isBinary() && expr.op === '/') {
|
155
|
+
// Separate numerator from denominator
|
156
|
+
if (nVars === 1) {
|
157
|
+
expr.args[0] = polyToCanonical(expr.args[0], coefficients);
|
158
|
+
expr.args[1] = polyToCanonical(expr.args[1]);
|
159
|
+
}
|
206
160
|
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
161
|
+
if (detailed) {
|
162
|
+
retRationalize.numerator = expr.args[0];
|
163
|
+
retRationalize.denominator = expr.args[1];
|
164
|
+
}
|
165
|
+
} else {
|
166
|
+
if (nVars === 1) {
|
167
|
+
expr = polyToCanonical(expr, coefficients);
|
168
|
+
}
|
169
|
+
|
170
|
+
if (detailed) {
|
171
|
+
retRationalize.numerator = expr;
|
172
|
+
retRationalize.denominator = null;
|
173
|
+
}
|
174
|
+
} // nVars
|
212
175
|
|
213
176
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
177
|
+
if (!detailed) return expr;
|
178
|
+
retRationalize.coefficients = coefficients;
|
179
|
+
retRationalize.variables = polyRet.variables;
|
180
|
+
retRationalize.expression = expr;
|
181
|
+
return retRationalize;
|
182
|
+
}
|
220
183
|
|
184
|
+
return typed(name, {
|
185
|
+
Node: _rationalize,
|
186
|
+
'Node, boolean': function NodeBoolean(expr, detailed) {
|
187
|
+
return _rationalize(expr, {}, detailed);
|
188
|
+
},
|
189
|
+
'Node, Object': _rationalize,
|
190
|
+
'Node, Object, boolean': _rationalize
|
221
191
|
}); // end of typed rationalize
|
222
192
|
|
223
193
|
/**
|
@@ -12,9 +12,10 @@ var _is = require("../../utils/is.js");
|
|
12
12
|
var _factory = require("../../utils/factory.js");
|
13
13
|
|
14
14
|
var name = 'resolve';
|
15
|
-
var dependencies = ['parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
|
15
|
+
var dependencies = ['typed', 'parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
|
16
16
|
var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
17
|
-
var
|
17
|
+
var typed = _ref.typed,
|
18
|
+
parse = _ref.parse,
|
18
19
|
ConstantNode = _ref.ConstantNode,
|
19
20
|
FunctionNode = _ref.FunctionNode,
|
20
21
|
OperatorNode = _ref.OperatorNode,
|
@@ -29,9 +30,9 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
29
30
|
*
|
30
31
|
* Examples:
|
31
32
|
*
|
32
|
-
* math.resolve('x + y', {x:1, y:2}) // Node
|
33
|
-
* math.resolve(math.parse('x+y'), {x:1, y:2}) // Node
|
34
|
-
* math.simplify('x+y', {x:2, y:'x+x'}).toString()
|
33
|
+
* math.resolve('x + y', {x:1, y:2}) // Node '1 + 2'
|
34
|
+
* math.resolve(math.parse('x+y'), {x:1, y:2}) // Node '1 + 2'
|
35
|
+
* math.simplify('x+y', {x:2, y: math.parse('x+x')}).toString() // "6"
|
35
36
|
*
|
36
37
|
* See also:
|
37
38
|
*
|
@@ -46,7 +47,7 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
46
47
|
* If there is a cyclic dependency among the variables in `scope`,
|
47
48
|
* resolution is impossible and a ReferenceError is thrown.
|
48
49
|
*/
|
49
|
-
function
|
50
|
+
function _resolve(node, scope) {
|
50
51
|
var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();
|
51
52
|
|
52
53
|
// note `within`:
|
@@ -56,10 +57,6 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
56
57
|
return node;
|
57
58
|
}
|
58
59
|
|
59
|
-
if (!(0, _map.isMap)(scope)) {
|
60
|
-
scope = (0, _map.createMap)(scope);
|
61
|
-
}
|
62
|
-
|
63
60
|
if ((0, _is.isSymbolNode)(node)) {
|
64
61
|
if (within.has(node.name)) {
|
65
62
|
var variables = Array.from(within).join(', ');
|
@@ -71,7 +68,7 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
71
68
|
if ((0, _is.isNode)(value)) {
|
72
69
|
var nextWithin = new Set(within);
|
73
70
|
nextWithin.add(node.name);
|
74
|
-
return
|
71
|
+
return _resolve(value, scope, nextWithin);
|
75
72
|
} else if (typeof value === 'number') {
|
76
73
|
return parse(String(value));
|
77
74
|
} else if (value !== undefined) {
|
@@ -81,14 +78,14 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
81
78
|
}
|
82
79
|
} else if ((0, _is.isOperatorNode)(node)) {
|
83
80
|
var args = node.args.map(function (arg) {
|
84
|
-
return
|
81
|
+
return _resolve(arg, scope, within);
|
85
82
|
});
|
86
83
|
return new OperatorNode(node.op, node.fn, args, node.implicit);
|
87
84
|
} else if ((0, _is.isParenthesisNode)(node)) {
|
88
|
-
return new ParenthesisNode(
|
85
|
+
return new ParenthesisNode(_resolve(node.content, scope, within));
|
89
86
|
} else if ((0, _is.isFunctionNode)(node)) {
|
90
87
|
var _args = node.args.map(function (arg) {
|
91
|
-
return
|
88
|
+
return _resolve(arg, scope, within);
|
92
89
|
});
|
93
90
|
|
94
91
|
return new FunctionNode(node.name, _args);
|
@@ -97,10 +94,50 @@ var createResolve = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
97
94
|
|
98
95
|
|
99
96
|
return node.map(function (child) {
|
100
|
-
return
|
97
|
+
return _resolve(child, scope, within);
|
101
98
|
});
|
102
99
|
}
|
103
100
|
|
104
|
-
return resolve
|
101
|
+
return typed('resolve', {
|
102
|
+
Node: _resolve,
|
103
|
+
'Node, Map | null | undefined': _resolve,
|
104
|
+
'Node, Object': function NodeObject(n, scope) {
|
105
|
+
return _resolve(n, (0, _map.createMap)(scope));
|
106
|
+
},
|
107
|
+
// For arrays and matrices, we map `self` rather than `_resolve`
|
108
|
+
// because resolve is fairly expensive anyway, and this way
|
109
|
+
// we get nice error messages if one entry in the array has wrong type.
|
110
|
+
'Array | Matrix': typed.referToSelf(function (self) {
|
111
|
+
return function (A) {
|
112
|
+
return A.map(function (n) {
|
113
|
+
return self(n);
|
114
|
+
});
|
115
|
+
};
|
116
|
+
}),
|
117
|
+
'Array | Matrix, null | undefined': typed.referToSelf(function (self) {
|
118
|
+
return function (A) {
|
119
|
+
return A.map(function (n) {
|
120
|
+
return self(n);
|
121
|
+
});
|
122
|
+
};
|
123
|
+
}),
|
124
|
+
'Array, Object': typed.referTo('Array,Map', function (selfAM) {
|
125
|
+
return function (A, scope) {
|
126
|
+
return selfAM(A, (0, _map.createMap)(scope));
|
127
|
+
};
|
128
|
+
}),
|
129
|
+
'Matrix, Object': typed.referTo('Matrix,Map', function (selfMM) {
|
130
|
+
return function (A, scope) {
|
131
|
+
return selfMM(A, (0, _map.createMap)(scope));
|
132
|
+
};
|
133
|
+
}),
|
134
|
+
'Array | Matrix, Map': typed.referToSelf(function (self) {
|
135
|
+
return function (A, scope) {
|
136
|
+
return A.map(function (n) {
|
137
|
+
return self(n, scope);
|
138
|
+
});
|
139
|
+
};
|
140
|
+
})
|
141
|
+
});
|
105
142
|
});
|
106
143
|
exports.createResolve = createResolve;
|
@@ -17,7 +17,7 @@ var _object = require("../../../utils/object.js");
|
|
17
17
|
|
18
18
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
19
19
|
|
20
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2
|
20
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
21
21
|
|
22
22
|
var name = 'simplifyUtil';
|
23
23
|
var dependencies = ['FunctionNode', 'OperatorNode', 'SymbolNode'];
|
@@ -15,14 +15,12 @@ var _factory = require("../../utils/factory.js");
|
|
15
15
|
|
16
16
|
var _util = require("./simplify/util.js");
|
17
17
|
|
18
|
-
var _simplifyConstant = require("./simplify/simplifyConstant.js");
|
19
|
-
|
20
18
|
var _object = require("../../utils/object.js");
|
21
19
|
|
22
20
|
var _map = require("../../utils/map.js");
|
23
21
|
|
24
22
|
var name = 'simplify';
|
25
|
-
var dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', 'resolve', 'simplifyCore', '?fraction', '?bignumber', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
|
23
|
+
var dependencies = ['config', 'typed', 'parse', 'add', 'subtract', 'multiply', 'divide', 'pow', 'isZero', 'equal', 'resolve', 'simplifyConstant', 'simplifyCore', '?fraction', '?bignumber', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
|
26
24
|
var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
27
25
|
var config = _ref.config,
|
28
26
|
typed = _ref.typed,
|
@@ -35,6 +33,7 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
35
33
|
isZero = _ref.isZero,
|
36
34
|
equal = _ref.equal,
|
37
35
|
resolve = _ref.resolve,
|
36
|
+
simplifyConstant = _ref.simplifyConstant,
|
38
37
|
simplifyCore = _ref.simplifyCore,
|
39
38
|
fraction = _ref.fraction,
|
40
39
|
bignumber = _ref.bignumber,
|
@@ -49,22 +48,6 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
49
48
|
OperatorNode = _ref.OperatorNode,
|
50
49
|
ParenthesisNode = _ref.ParenthesisNode,
|
51
50
|
SymbolNode = _ref.SymbolNode;
|
52
|
-
var simplifyConstant = (0, _simplifyConstant.createSimplifyConstant)({
|
53
|
-
typed: typed,
|
54
|
-
config: config,
|
55
|
-
mathWithTransform: mathWithTransform,
|
56
|
-
matrix: matrix,
|
57
|
-
fraction: fraction,
|
58
|
-
bignumber: bignumber,
|
59
|
-
AccessorNode: AccessorNode,
|
60
|
-
ArrayNode: ArrayNode,
|
61
|
-
ConstantNode: ConstantNode,
|
62
|
-
FunctionNode: FunctionNode,
|
63
|
-
IndexNode: IndexNode,
|
64
|
-
ObjectNode: ObjectNode,
|
65
|
-
OperatorNode: OperatorNode,
|
66
|
-
SymbolNode: SymbolNode
|
67
|
-
});
|
68
51
|
|
69
52
|
var _createUtil = (0, _util.createUtil)({
|
70
53
|
FunctionNode: FunctionNode,
|
@@ -110,7 +93,10 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
110
93
|
* - 'v' - matches any Node that is not a ConstantNode
|
111
94
|
*
|
112
95
|
* The default list of rules is exposed on the function as `simplify.rules`
|
113
|
-
* and can be used as a basis to built a set of custom rules.
|
96
|
+
* and can be used as a basis to built a set of custom rules. Note that since
|
97
|
+
* the `simplifyCore` function is in the default list of rules, by default
|
98
|
+
* simplify will convert any function calls in the expression that have
|
99
|
+
* operator equivalents to their operator forms.
|
114
100
|
*
|
115
101
|
* To specify a rule as a string, separate the left and right pattern by '->'
|
116
102
|
* When specifying a rule as an object, the following keys are meaningful:
|
@@ -187,100 +173,27 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
187
173
|
*/
|
188
174
|
|
189
175
|
|
176
|
+
typed.addConversion({
|
177
|
+
from: 'Object',
|
178
|
+
to: 'Map',
|
179
|
+
convert: _map.createMap
|
180
|
+
});
|
190
181
|
var simplify = typed('simplify', {
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
'string, Map | Object': function stringMapObject(expr, scope) {
|
195
|
-
return this(parse(expr), this.rules, scope, {});
|
196
|
-
},
|
197
|
-
'string, Map | Object, Object': function stringMapObjectObject(expr, scope, options) {
|
198
|
-
return this(parse(expr), this.rules, scope, options);
|
199
|
-
},
|
200
|
-
'string, Array': function stringArray(expr, rules) {
|
201
|
-
return this(parse(expr), rules, (0, _map.createEmptyMap)(), {});
|
202
|
-
},
|
203
|
-
'string, Array, Map | Object': function stringArrayMapObject(expr, rules, scope) {
|
204
|
-
return this(parse(expr), rules, scope, {});
|
205
|
-
},
|
206
|
-
'string, Array, Map | Object, Object': function stringArrayMapObjectObject(expr, rules, scope, options) {
|
207
|
-
return this(parse(expr), rules, scope, options);
|
208
|
-
},
|
209
|
-
'Node, Map | Object': function NodeMapObject(expr, scope) {
|
210
|
-
return this(expr, this.rules, scope, {});
|
211
|
-
},
|
212
|
-
'Node, Map | Object, Object': function NodeMapObjectObject(expr, scope, options) {
|
213
|
-
return this(expr, this.rules, scope, options);
|
214
|
-
},
|
215
|
-
Node: function Node(expr) {
|
216
|
-
return this(expr, this.rules, (0, _map.createEmptyMap)(), {});
|
217
|
-
},
|
218
|
-
'Node, Array': function NodeArray(expr, rules) {
|
219
|
-
return this(expr, rules, (0, _map.createEmptyMap)(), {});
|
220
|
-
},
|
221
|
-
'Node, Array, Map | Object': function NodeArrayMapObject(expr, rules, scope) {
|
222
|
-
return this(expr, rules, scope, {});
|
182
|
+
Node: _simplify,
|
183
|
+
'Node, Map': function NodeMap(expr, scope) {
|
184
|
+
return _simplify(expr, false, scope);
|
223
185
|
},
|
224
|
-
'Node,
|
225
|
-
return
|
186
|
+
'Node, Map, Object': function NodeMapObject(expr, scope, options) {
|
187
|
+
return _simplify(expr, false, scope, options);
|
226
188
|
},
|
227
|
-
'Node, Array
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
});
|
236
|
-
|
237
|
-
while (!visited[str]) {
|
238
|
-
visited[str] = true;
|
239
|
-
_lastsym = 0; // counter for placeholder symbols
|
240
|
-
|
241
|
-
var laststr = str;
|
242
|
-
if (debug) console.log('Working on: ', str);
|
243
|
-
|
244
|
-
for (var i = 0; i < rules.length; i++) {
|
245
|
-
var rulestr = '';
|
246
|
-
|
247
|
-
if (typeof rules[i] === 'function') {
|
248
|
-
res = rules[i](res, options);
|
249
|
-
if (debug) rulestr = rules[i].name;
|
250
|
-
} else {
|
251
|
-
flatten(res, options.context);
|
252
|
-
res = applyRule(res, rules[i], options.context);
|
253
|
-
|
254
|
-
if (debug) {
|
255
|
-
rulestr = "".concat(rules[i].l.toString(), " -> ").concat(rules[i].r.toString());
|
256
|
-
}
|
257
|
-
}
|
258
|
-
|
259
|
-
if (debug) {
|
260
|
-
var newstr = res.toString({
|
261
|
-
parenthesis: 'all'
|
262
|
-
});
|
263
|
-
|
264
|
-
if (newstr !== laststr) {
|
265
|
-
console.log('Applying', rulestr, 'produced', newstr);
|
266
|
-
laststr = newstr;
|
267
|
-
}
|
268
|
-
}
|
269
|
-
/* Use left-heavy binary tree internally,
|
270
|
-
* since custom rule functions may expect it
|
271
|
-
*/
|
272
|
-
|
273
|
-
|
274
|
-
unflattenl(res, options.context);
|
275
|
-
}
|
276
|
-
|
277
|
-
str = res.toString({
|
278
|
-
parenthesis: 'all'
|
279
|
-
});
|
280
|
-
}
|
281
|
-
|
282
|
-
return res;
|
283
|
-
}
|
189
|
+
'Node, Array': _simplify,
|
190
|
+
'Node, Array, Map': _simplify,
|
191
|
+
'Node, Array, Map, Object': _simplify
|
192
|
+
});
|
193
|
+
typed.removeConversion({
|
194
|
+
from: 'Object',
|
195
|
+
to: 'Map',
|
196
|
+
convert: _map.createMap
|
284
197
|
});
|
285
198
|
simplify.defaultContext = defaultContext;
|
286
199
|
simplify.realContext = realContext;
|
@@ -294,8 +207,8 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
294
207
|
|
295
208
|
|
296
209
|
var SUPPORTED_CONSTANTS = {
|
297
|
-
true: true,
|
298
|
-
false: true,
|
210
|
+
"true": true,
|
211
|
+
"false": true,
|
299
212
|
e: true,
|
300
213
|
i: true,
|
301
214
|
Infinity: true,
|
@@ -739,7 +652,7 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
739
652
|
for (var i = 0; i < rules.length; i++) {
|
740
653
|
var rule = rules[i];
|
741
654
|
var newRule = void 0;
|
742
|
-
var ruleType = (0, _typeof2
|
655
|
+
var ruleType = (0, _typeof2["default"])(rule);
|
743
656
|
|
744
657
|
switch (ruleType) {
|
745
658
|
case 'string':
|
@@ -775,6 +688,66 @@ var createSimplify = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fu
|
|
775
688
|
return new SymbolNode('_p' + _lastsym++);
|
776
689
|
}
|
777
690
|
|
691
|
+
function _simplify(expr, rules) {
|
692
|
+
var scope = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : (0, _map.createEmptyMap)();
|
693
|
+
var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
694
|
+
var debug = options.consoleDebug;
|
695
|
+
rules = _buildRules(rules || simplify.rules, options.context);
|
696
|
+
var res = resolve(expr, scope);
|
697
|
+
res = removeParens(res);
|
698
|
+
var visited = {};
|
699
|
+
var str = res.toString({
|
700
|
+
parenthesis: 'all'
|
701
|
+
});
|
702
|
+
|
703
|
+
while (!visited[str]) {
|
704
|
+
visited[str] = true;
|
705
|
+
_lastsym = 0; // counter for placeholder symbols
|
706
|
+
|
707
|
+
var laststr = str;
|
708
|
+
if (debug) console.log('Working on: ', str);
|
709
|
+
|
710
|
+
for (var i = 0; i < rules.length; i++) {
|
711
|
+
var rulestr = '';
|
712
|
+
|
713
|
+
if (typeof rules[i] === 'function') {
|
714
|
+
res = rules[i](res, options);
|
715
|
+
if (debug) rulestr = rules[i].name;
|
716
|
+
} else {
|
717
|
+
flatten(res, options.context);
|
718
|
+
res = applyRule(res, rules[i], options.context);
|
719
|
+
|
720
|
+
if (debug) {
|
721
|
+
rulestr = "".concat(rules[i].l.toString(), " -> ").concat(rules[i].r.toString());
|
722
|
+
}
|
723
|
+
}
|
724
|
+
|
725
|
+
if (debug) {
|
726
|
+
var newstr = res.toString({
|
727
|
+
parenthesis: 'all'
|
728
|
+
});
|
729
|
+
|
730
|
+
if (newstr !== laststr) {
|
731
|
+
console.log('Applying', rulestr, 'produced', newstr);
|
732
|
+
laststr = newstr;
|
733
|
+
}
|
734
|
+
}
|
735
|
+
/* Use left-heavy binary tree internally,
|
736
|
+
* since custom rule functions may expect it
|
737
|
+
*/
|
738
|
+
|
739
|
+
|
740
|
+
unflattenl(res, options.context);
|
741
|
+
}
|
742
|
+
|
743
|
+
str = res.toString({
|
744
|
+
parenthesis: 'all'
|
745
|
+
});
|
746
|
+
}
|
747
|
+
|
748
|
+
return res;
|
749
|
+
}
|
750
|
+
|
778
751
|
function mapRule(nodes, rule, context) {
|
779
752
|
var resNodes = nodes;
|
780
753
|
|