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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
1
2
|
import { isAccessorNode, isIndexNode, isNode, isSymbolNode } from '../../utils/is.js';
|
|
2
3
|
import { getSafeProperty, setSafeProperty } from '../../utils/customs.js';
|
|
3
4
|
import { factory } from '../../utils/factory.js';
|
|
@@ -20,305 +21,316 @@ export var createAssignmentNode = /* #__PURE__ */factory(name, dependencies, _re
|
|
|
20
21
|
subset,
|
|
21
22
|
matrix
|
|
22
23
|
});
|
|
23
|
-
|
|
24
|
-
*
|
|
25
|
-
* @
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* Syntax:
|
|
31
|
-
*
|
|
32
|
-
* new AssignmentNode(symbol, value)
|
|
33
|
-
* new AssignmentNode(object, index, value)
|
|
34
|
-
*
|
|
35
|
-
* Usage:
|
|
36
|
-
*
|
|
37
|
-
* new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2
|
|
38
|
-
* new AssignmentNode(new SymbolNode('a'), new IndexNode('b'), new ConstantNode(2)) // a.b=2
|
|
39
|
-
* new AssignmentNode(new SymbolNode('a'), new IndexNode(1, 2), new ConstantNode(3)) // a[1,2]=3
|
|
40
|
-
*
|
|
41
|
-
* @param {SymbolNode | AccessorNode} object Object on which to assign a value
|
|
42
|
-
* @param {IndexNode} [index=null] Index, property name or matrix
|
|
43
|
-
* index. Optional. If not provided
|
|
44
|
-
* and `object` is a SymbolNode,
|
|
45
|
-
* the property is assigned to the
|
|
46
|
-
* global scope.
|
|
47
|
-
* @param {Node} value The value to be assigned
|
|
24
|
+
/*
|
|
25
|
+
* Is parenthesis needed?
|
|
26
|
+
* @param {node} node
|
|
27
|
+
* @param {string} [parenthesis='keep']
|
|
28
|
+
* @param {string} implicit
|
|
29
|
+
* @private
|
|
48
30
|
*/
|
|
49
31
|
|
|
50
|
-
function
|
|
51
|
-
if (!
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
this.object = object;
|
|
56
|
-
this.index = value ? index : null;
|
|
57
|
-
this.value = value || index; // validate input
|
|
58
|
-
|
|
59
|
-
if (!isSymbolNode(object) && !isAccessorNode(object)) {
|
|
60
|
-
throw new TypeError('SymbolNode or AccessorNode expected as "object"');
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (isSymbolNode(object) && object.name === 'end') {
|
|
64
|
-
throw new Error('Cannot assign to symbol "end"');
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (this.index && !isIndexNode(this.index)) {
|
|
68
|
-
// index is optional
|
|
69
|
-
throw new TypeError('IndexNode expected as "index"');
|
|
32
|
+
function needParenthesis(node, parenthesis, implicit) {
|
|
33
|
+
if (!parenthesis) {
|
|
34
|
+
parenthesis = 'keep';
|
|
70
35
|
}
|
|
71
36
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
37
|
+
var precedence = getPrecedence(node, parenthesis, implicit);
|
|
38
|
+
var exprPrecedence = getPrecedence(node.value, parenthesis, implicit);
|
|
39
|
+
return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;
|
|
40
|
+
}
|
|
75
41
|
|
|
42
|
+
class AssignmentNode extends Node {
|
|
43
|
+
/**
|
|
44
|
+
* @constructor AssignmentNode
|
|
45
|
+
* @extends {Node}
|
|
46
|
+
*
|
|
47
|
+
* Define a symbol, like `a=3.2`, update a property like `a.b=3.2`, or
|
|
48
|
+
* replace a subset of a matrix like `A[2,2]=42`.
|
|
49
|
+
*
|
|
50
|
+
* Syntax:
|
|
51
|
+
*
|
|
52
|
+
* new AssignmentNode(symbol, value)
|
|
53
|
+
* new AssignmentNode(object, index, value)
|
|
54
|
+
*
|
|
55
|
+
* Usage:
|
|
56
|
+
*
|
|
57
|
+
* new AssignmentNode(new SymbolNode('a'), new ConstantNode(2)) // a=2
|
|
58
|
+
* new AssignmentNode(new SymbolNode('a'),
|
|
59
|
+
* new IndexNode('b'),
|
|
60
|
+
* new ConstantNode(2)) // a.b=2
|
|
61
|
+
* new AssignmentNode(new SymbolNode('a'),
|
|
62
|
+
* new IndexNode(1, 2),
|
|
63
|
+
* new ConstantNode(3)) // a[1,2]=3
|
|
64
|
+
*
|
|
65
|
+
* @param {SymbolNode | AccessorNode} object
|
|
66
|
+
* Object on which to assign a value
|
|
67
|
+
* @param {IndexNode} [index=null]
|
|
68
|
+
* Index, property name or matrix index. Optional. If not provided
|
|
69
|
+
* and `object` is a SymbolNode, the property is assigned to the
|
|
70
|
+
* global scope.
|
|
71
|
+
* @param {Node} value
|
|
72
|
+
* The value to be assigned
|
|
73
|
+
*/
|
|
74
|
+
constructor(object, index, value) {
|
|
75
|
+
super();
|
|
76
|
+
this.object = object;
|
|
77
|
+
this.index = value ? index : null;
|
|
78
|
+
this.value = value || index; // validate input
|
|
79
|
+
|
|
80
|
+
if (!isSymbolNode(object) && !isAccessorNode(object)) {
|
|
81
|
+
throw new TypeError('SymbolNode or AccessorNode expected as "object"');
|
|
82
|
+
}
|
|
76
83
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (this.index) {
|
|
80
|
-
return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';
|
|
81
|
-
} else {
|
|
82
|
-
return this.object.name || '';
|
|
83
|
-
}
|
|
84
|
-
}.bind(this),
|
|
85
|
-
set: function set() {
|
|
86
|
-
throw new Error('Cannot assign a new name, name is read-only');
|
|
84
|
+
if (isSymbolNode(object) && object.name === 'end') {
|
|
85
|
+
throw new Error('Cannot assign to symbol "end"');
|
|
87
86
|
}
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
87
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
* Compile a node into a JavaScript function.
|
|
96
|
-
* This basically pre-calculates as much as possible and only leaves open
|
|
97
|
-
* calculations which depend on a dynamic scope with variables.
|
|
98
|
-
* @param {Object} math Math.js namespace with functions and constants.
|
|
99
|
-
* @param {Object} argNames An object with argument names as key and `true`
|
|
100
|
-
* as value. Used in the SymbolNode to optimize
|
|
101
|
-
* for arguments from user assigned functions
|
|
102
|
-
* (see FunctionAssignmentNode) or special symbols
|
|
103
|
-
* like `end` (see IndexNode).
|
|
104
|
-
* @return {function} Returns a function which can be called like:
|
|
105
|
-
* evalNode(scope: Object, args: Object, context: *)
|
|
106
|
-
*/
|
|
88
|
+
if (this.index && !isIndexNode(this.index)) {
|
|
89
|
+
// index is optional
|
|
90
|
+
throw new TypeError('IndexNode expected as "index"');
|
|
91
|
+
}
|
|
107
92
|
|
|
108
|
-
|
|
109
|
-
|
|
93
|
+
if (!isNode(this.value)) {
|
|
94
|
+
throw new TypeError('Node expected as "value"');
|
|
95
|
+
}
|
|
96
|
+
} // class name for typing purposes:
|
|
110
97
|
|
|
111
|
-
var evalIndex = this.index ? this.index._compile(math, argNames) : null;
|
|
112
98
|
|
|
113
|
-
|
|
99
|
+
// readonly property name
|
|
100
|
+
get name() {
|
|
101
|
+
if (this.index) {
|
|
102
|
+
return this.index.isObjectProperty() ? this.index.getObjectProperty() : '';
|
|
103
|
+
} else {
|
|
104
|
+
return this.object.name || '';
|
|
105
|
+
}
|
|
106
|
+
}
|
|
114
107
|
|
|
115
|
-
|
|
108
|
+
get type() {
|
|
109
|
+
return name;
|
|
110
|
+
}
|
|
116
111
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
112
|
+
get isAssignmentNode() {
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Compile a node into a JavaScript function.
|
|
117
|
+
* This basically pre-calculates as much as possible and only leaves open
|
|
118
|
+
* calculations which depend on a dynamic scope with variables.
|
|
119
|
+
* @param {Object} math Math.js namespace with functions and constants.
|
|
120
|
+
* @param {Object} argNames An object with argument names as key and `true`
|
|
121
|
+
* as value. Used in the SymbolNode to optimize
|
|
122
|
+
* for arguments from user assigned functions
|
|
123
|
+
* (see FunctionAssignmentNode) or special symbols
|
|
124
|
+
* like `end` (see IndexNode).
|
|
125
|
+
* @return {function} Returns a function which can be called like:
|
|
126
|
+
* evalNode(scope: Object, args: Object, context: *)
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
_compile(math, argNames) {
|
|
131
|
+
var evalObject = this.object._compile(math, argNames);
|
|
132
|
+
|
|
133
|
+
var evalIndex = this.index ? this.index._compile(math, argNames) : null;
|
|
134
|
+
|
|
135
|
+
var evalValue = this.value._compile(math, argNames);
|
|
136
|
+
|
|
137
|
+
var name = this.object.name;
|
|
138
|
+
|
|
139
|
+
if (!this.index) {
|
|
140
|
+
// apply a variable to the scope, for example `a=2`
|
|
141
|
+
if (!isSymbolNode(this.object)) {
|
|
142
|
+
throw new TypeError('SymbolNode expected as object');
|
|
143
|
+
}
|
|
122
144
|
|
|
123
|
-
return function evalAssignmentNode(scope, args, context) {
|
|
124
|
-
var value = evalValue(scope, args, context);
|
|
125
|
-
scope.set(name, value);
|
|
126
|
-
return value;
|
|
127
|
-
};
|
|
128
|
-
} else if (this.index.isObjectProperty()) {
|
|
129
|
-
// apply an object property for example `a.b=2`
|
|
130
|
-
var prop = this.index.getObjectProperty();
|
|
131
|
-
return function evalAssignmentNode(scope, args, context) {
|
|
132
|
-
var object = evalObject(scope, args, context);
|
|
133
|
-
var value = evalValue(scope, args, context);
|
|
134
|
-
setSafeProperty(object, prop, value);
|
|
135
|
-
return value;
|
|
136
|
-
};
|
|
137
|
-
} else if (isSymbolNode(this.object)) {
|
|
138
|
-
// update a matrix subset, for example `a[2]=3`
|
|
139
|
-
return function evalAssignmentNode(scope, args, context) {
|
|
140
|
-
var childObject = evalObject(scope, args, context);
|
|
141
|
-
var value = evalValue(scope, args, context);
|
|
142
|
-
var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context
|
|
143
|
-
|
|
144
|
-
scope.set(name, assign(childObject, index, value));
|
|
145
|
-
return value;
|
|
146
|
-
};
|
|
147
|
-
} else {
|
|
148
|
-
// isAccessorNode(node.object) === true
|
|
149
|
-
// update a matrix subset, for example `a.b[2]=3`
|
|
150
|
-
// we will not use the compile function of the AccessorNode, but compile it
|
|
151
|
-
// ourselves here as we need the parent object of the AccessorNode:
|
|
152
|
-
// wee need to apply the updated object to parent object
|
|
153
|
-
var evalParentObject = this.object.object._compile(math, argNames);
|
|
154
|
-
|
|
155
|
-
if (this.object.index.isObjectProperty()) {
|
|
156
|
-
var parentProp = this.object.index.getObjectProperty();
|
|
157
145
|
return function evalAssignmentNode(scope, args, context) {
|
|
158
|
-
var parent = evalParentObject(scope, args, context);
|
|
159
|
-
var childObject = getSafeProperty(parent, parentProp);
|
|
160
|
-
var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context
|
|
161
|
-
|
|
162
146
|
var value = evalValue(scope, args, context);
|
|
163
|
-
|
|
147
|
+
scope.set(name, value);
|
|
164
148
|
return value;
|
|
165
149
|
};
|
|
166
|
-
} else {
|
|
167
|
-
//
|
|
168
|
-
var
|
|
169
|
-
|
|
150
|
+
} else if (this.index.isObjectProperty()) {
|
|
151
|
+
// apply an object property for example `a.b=2`
|
|
152
|
+
var prop = this.index.getObjectProperty();
|
|
170
153
|
return function evalAssignmentNode(scope, args, context) {
|
|
171
|
-
var
|
|
172
|
-
var parentIndex = evalParentIndex(scope, args, parent); // Important: we pass parent instead of context
|
|
173
|
-
|
|
174
|
-
var childObject = access(parent, parentIndex);
|
|
175
|
-
var index = evalIndex(scope, args, childObject); // Important: we pass childObject instead of context
|
|
176
|
-
|
|
154
|
+
var object = evalObject(scope, args, context);
|
|
177
155
|
var value = evalValue(scope, args, context);
|
|
178
|
-
|
|
156
|
+
setSafeProperty(object, prop, value);
|
|
179
157
|
return value;
|
|
180
158
|
};
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
* @param {function(child: Node, path: string, parent: Node)} callback
|
|
187
|
-
*/
|
|
159
|
+
} else if (isSymbolNode(this.object)) {
|
|
160
|
+
// update a matrix subset, for example `a[2]=3`
|
|
161
|
+
return function evalAssignmentNode(scope, args, context) {
|
|
162
|
+
var childObject = evalObject(scope, args, context);
|
|
163
|
+
var value = evalValue(scope, args, context); // Important: we pass childObject instead of context:
|
|
188
164
|
|
|
165
|
+
var index = evalIndex(scope, args, childObject);
|
|
166
|
+
scope.set(name, assign(childObject, index, value));
|
|
167
|
+
return value;
|
|
168
|
+
};
|
|
169
|
+
} else {
|
|
170
|
+
// isAccessorNode(node.object) === true
|
|
171
|
+
// update a matrix subset, for example `a.b[2]=3`
|
|
172
|
+
// we will not use the compile function of the AccessorNode, but
|
|
173
|
+
// compile it ourselves here as we need the parent object of the
|
|
174
|
+
// AccessorNode:
|
|
175
|
+
// wee need to apply the updated object to parent object
|
|
176
|
+
var evalParentObject = this.object.object._compile(math, argNames);
|
|
177
|
+
|
|
178
|
+
if (this.object.index.isObjectProperty()) {
|
|
179
|
+
var parentProp = this.object.index.getObjectProperty();
|
|
180
|
+
return function evalAssignmentNode(scope, args, context) {
|
|
181
|
+
var parent = evalParentObject(scope, args, context);
|
|
182
|
+
var childObject = getSafeProperty(parent, parentProp); // Important: we pass childObject instead of context:
|
|
183
|
+
|
|
184
|
+
var index = evalIndex(scope, args, childObject);
|
|
185
|
+
var value = evalValue(scope, args, context);
|
|
186
|
+
setSafeProperty(parent, parentProp, assign(childObject, index, value));
|
|
187
|
+
return value;
|
|
188
|
+
};
|
|
189
|
+
} else {
|
|
190
|
+
// if some parameters use the 'end' parameter, we need to calculate
|
|
191
|
+
// the size
|
|
192
|
+
var evalParentIndex = this.object.index._compile(math, argNames);
|
|
189
193
|
|
|
190
|
-
|
|
191
|
-
|
|
194
|
+
return function evalAssignmentNode(scope, args, context) {
|
|
195
|
+
var parent = evalParentObject(scope, args, context); // Important: we pass parent instead of context:
|
|
192
196
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
}
|
|
197
|
+
var parentIndex = evalParentIndex(scope, args, parent);
|
|
198
|
+
var childObject = access(parent, parentIndex); // Important: we pass childObject instead of context
|
|
196
199
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
200
|
+
var index = evalIndex(scope, args, childObject);
|
|
201
|
+
var value = evalValue(scope, args, context);
|
|
202
|
+
assign(parent, parentIndex, assign(childObject, index, value));
|
|
203
|
+
return value;
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Execute a callback for each of the child nodes of this node
|
|
210
|
+
* @param {function(child: Node, path: string, parent: Node)} callback
|
|
211
|
+
*/
|
|
205
212
|
|
|
206
213
|
|
|
207
|
-
|
|
208
|
-
|
|
214
|
+
forEach(callback) {
|
|
215
|
+
callback(this.object, 'object', this);
|
|
209
216
|
|
|
210
|
-
|
|
217
|
+
if (this.index) {
|
|
218
|
+
callback(this.index, 'index', this);
|
|
219
|
+
}
|
|
211
220
|
|
|
212
|
-
|
|
221
|
+
callback(this.value, 'value', this);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Create a new AssignmentNode whose children are the results of calling
|
|
225
|
+
* the provided callback function for each child of the original node.
|
|
226
|
+
* @param {function(child: Node, path: string, parent: Node): Node} callback
|
|
227
|
+
* @returns {AssignmentNode} Returns a transformed copy of the node
|
|
228
|
+
*/
|
|
213
229
|
|
|
214
|
-
return new AssignmentNode(object, index, value);
|
|
215
|
-
};
|
|
216
|
-
/**
|
|
217
|
-
* Create a clone of this node, a shallow copy
|
|
218
|
-
* @return {AssignmentNode}
|
|
219
|
-
*/
|
|
220
230
|
|
|
231
|
+
map(callback) {
|
|
232
|
+
var object = this._ifNode(callback(this.object, 'object', this));
|
|
221
233
|
|
|
222
|
-
|
|
223
|
-
return new AssignmentNode(this.object, this.index, this.value);
|
|
224
|
-
};
|
|
225
|
-
/*
|
|
226
|
-
* Is parenthesis needed?
|
|
227
|
-
* @param {node} node
|
|
228
|
-
* @param {string} [parenthesis='keep']
|
|
229
|
-
* @private
|
|
230
|
-
*/
|
|
234
|
+
var index = this.index ? this._ifNode(callback(this.index, 'index', this)) : null;
|
|
231
235
|
|
|
236
|
+
var value = this._ifNode(callback(this.value, 'value', this));
|
|
232
237
|
|
|
233
|
-
|
|
234
|
-
if (!parenthesis) {
|
|
235
|
-
parenthesis = 'keep';
|
|
238
|
+
return new AssignmentNode(object, index, value);
|
|
236
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Create a clone of this node, a shallow copy
|
|
242
|
+
* @return {AssignmentNode}
|
|
243
|
+
*/
|
|
237
244
|
|
|
238
|
-
var precedence = getPrecedence(node, parenthesis);
|
|
239
|
-
var exprPrecedence = getPrecedence(node.value, parenthesis);
|
|
240
|
-
return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Get string representation
|
|
244
|
-
* @param {Object} options
|
|
245
|
-
* @return {string}
|
|
246
|
-
*/
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
AssignmentNode.prototype._toString = function (options) {
|
|
250
|
-
var object = this.object.toString(options);
|
|
251
|
-
var index = this.index ? this.index.toString(options) : '';
|
|
252
|
-
var value = this.value.toString(options);
|
|
253
245
|
|
|
254
|
-
|
|
255
|
-
|
|
246
|
+
clone() {
|
|
247
|
+
return new AssignmentNode(this.object, this.index, this.value);
|
|
256
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Get string representation
|
|
251
|
+
* @param {Object} options
|
|
252
|
+
* @return {string}
|
|
253
|
+
*/
|
|
257
254
|
|
|
258
|
-
return object + index + ' = ' + value;
|
|
259
|
-
};
|
|
260
|
-
/**
|
|
261
|
-
* Get a JSON representation of the node
|
|
262
|
-
* @returns {Object}
|
|
263
|
-
*/
|
|
264
255
|
|
|
256
|
+
_toString(options) {
|
|
257
|
+
var object = this.object.toString(options);
|
|
258
|
+
var index = this.index ? this.index.toString(options) : '';
|
|
259
|
+
var value = this.value.toString(options);
|
|
265
260
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
object: this.object,
|
|
270
|
-
index: this.index,
|
|
271
|
-
value: this.value
|
|
272
|
-
};
|
|
273
|
-
};
|
|
274
|
-
/**
|
|
275
|
-
* Instantiate an AssignmentNode from its JSON representation
|
|
276
|
-
* @param {Object} json An object structured like
|
|
277
|
-
* `{"mathjs": "AssignmentNode", object: ..., index: ..., value: ...}`,
|
|
278
|
-
* where mathjs is optional
|
|
279
|
-
* @returns {AssignmentNode}
|
|
280
|
-
*/
|
|
261
|
+
if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {
|
|
262
|
+
value = '(' + value + ')';
|
|
263
|
+
}
|
|
281
264
|
|
|
265
|
+
return object + index + ' = ' + value;
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get a JSON representation of the node
|
|
269
|
+
* @returns {Object}
|
|
270
|
+
*/
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
toJSON() {
|
|
274
|
+
return {
|
|
275
|
+
mathjs: name,
|
|
276
|
+
object: this.object,
|
|
277
|
+
index: this.index,
|
|
278
|
+
value: this.value
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Instantiate an AssignmentNode from its JSON representation
|
|
283
|
+
* @param {Object} json
|
|
284
|
+
* An object structured like
|
|
285
|
+
* `{"mathjs": "AssignmentNode", object: ..., index: ..., value: ...}`,
|
|
286
|
+
* where mathjs is optional
|
|
287
|
+
* @returns {AssignmentNode}
|
|
288
|
+
*/
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
static fromJSON(json) {
|
|
292
|
+
return new AssignmentNode(json.object, json.index, json.value);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get HTML representation
|
|
296
|
+
* @param {Object} options
|
|
297
|
+
* @return {string}
|
|
298
|
+
*/
|
|
282
299
|
|
|
283
|
-
AssignmentNode.fromJSON = function (json) {
|
|
284
|
-
return new AssignmentNode(json.object, json.index, json.value);
|
|
285
|
-
};
|
|
286
|
-
/**
|
|
287
|
-
* Get HTML representation
|
|
288
|
-
* @param {Object} options
|
|
289
|
-
* @return {string}
|
|
290
|
-
*/
|
|
291
300
|
|
|
301
|
+
toHTML(options) {
|
|
302
|
+
var object = this.object.toHTML(options);
|
|
303
|
+
var index = this.index ? this.index.toHTML(options) : '';
|
|
304
|
+
var value = this.value.toHTML(options);
|
|
292
305
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
var value = this.value.toHTML(options);
|
|
306
|
+
if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {
|
|
307
|
+
value = '<span class="math-paranthesis math-round-parenthesis">(</span>' + value + '<span class="math-paranthesis math-round-parenthesis">)</span>';
|
|
308
|
+
}
|
|
297
309
|
|
|
298
|
-
|
|
299
|
-
value = '<span class="math-paranthesis math-round-parenthesis">(</span>' + value + '<span class="math-paranthesis math-round-parenthesis">)</span>';
|
|
310
|
+
return object + index + '<span class="math-operator math-assignment-operator ' + 'math-variable-assignment-operator math-binary-operator">=</span>' + value;
|
|
300
311
|
}
|
|
312
|
+
/**
|
|
313
|
+
* Get LaTeX representation
|
|
314
|
+
* @param {Object} options
|
|
315
|
+
* @return {string}
|
|
316
|
+
*/
|
|
301
317
|
|
|
302
|
-
return object + index + '<span class="math-operator math-assignment-operator math-variable-assignment-operator math-binary-operator">=</span>' + value;
|
|
303
|
-
};
|
|
304
|
-
/**
|
|
305
|
-
* Get LaTeX representation
|
|
306
|
-
* @param {Object} options
|
|
307
|
-
* @return {string}
|
|
308
|
-
*/
|
|
309
318
|
|
|
319
|
+
_toTex(options) {
|
|
320
|
+
var object = this.object.toTex(options);
|
|
321
|
+
var index = this.index ? this.index.toTex(options) : '';
|
|
322
|
+
var value = this.value.toTex(options);
|
|
310
323
|
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
var value = this.value.toTex(options);
|
|
324
|
+
if (needParenthesis(this, options && options.parenthesis, options && options.implicit)) {
|
|
325
|
+
value = "\\left(".concat(value, "\\right)");
|
|
326
|
+
}
|
|
315
327
|
|
|
316
|
-
|
|
317
|
-
value = "\\left(".concat(value, "\\right)");
|
|
328
|
+
return object + index + ':=' + value;
|
|
318
329
|
}
|
|
319
330
|
|
|
320
|
-
|
|
321
|
-
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
_defineProperty(AssignmentNode, "name", name);
|
|
322
334
|
|
|
323
335
|
return AssignmentNode;
|
|
324
336
|
}, {
|