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,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
|
|