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,10 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
6
8
|
exports.createFunctionAssignmentNode = void 0;
|
|
7
9
|
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
+
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
|
|
8
22
|
var _is = require("../../utils/is.js");
|
|
9
23
|
|
|
10
24
|
var _keywords = require("../keywords.js");
|
|
@@ -19,226 +33,274 @@ var _operators = require("../operators.js");
|
|
|
19
33
|
|
|
20
34
|
var _factory = require("../../utils/factory.js");
|
|
21
35
|
|
|
36
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
37
|
+
|
|
38
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
39
|
+
|
|
22
40
|
var name = 'FunctionAssignmentNode';
|
|
23
41
|
var dependencies = ['typed', 'Node'];
|
|
24
42
|
var createFunctionAssignmentNode = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
25
43
|
var typed = _ref.typed,
|
|
26
44
|
Node = _ref.Node;
|
|
27
45
|
|
|
28
|
-
/**
|
|
29
|
-
* @constructor FunctionAssignmentNode
|
|
30
|
-
* @extends {Node}
|
|
31
|
-
* Function assignment
|
|
32
|
-
*
|
|
33
|
-
* @param {string} name Function name
|
|
34
|
-
* @param {string[] | Array.<{name: string, type: string}>} params
|
|
35
|
-
* Array with function parameter names, or an
|
|
36
|
-
* array with objects containing the name
|
|
37
|
-
* and type of the parameter
|
|
38
|
-
* @param {Node} expr The function expression
|
|
39
|
-
*/
|
|
40
|
-
function FunctionAssignmentNode(name, params, expr) {
|
|
41
|
-
if (!(this instanceof FunctionAssignmentNode)) {
|
|
42
|
-
throw new SyntaxError('Constructor must be called with the new operator');
|
|
43
|
-
} // validate input
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (typeof name !== 'string') throw new TypeError('String expected for parameter "name"');
|
|
47
|
-
if (!Array.isArray(params)) throw new TypeError('Array containing strings or objects expected for parameter "params"');
|
|
48
|
-
if (!(0, _is.isNode)(expr)) throw new TypeError('Node expected for parameter "expr"');
|
|
49
|
-
if (_keywords.keywords.has(name)) throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
|
|
50
|
-
this.name = name;
|
|
51
|
-
this.params = params.map(function (param) {
|
|
52
|
-
return param && param.name || param;
|
|
53
|
-
});
|
|
54
|
-
this.types = params.map(function (param) {
|
|
55
|
-
return param && param.type || 'any';
|
|
56
|
-
});
|
|
57
|
-
this.expr = expr;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
FunctionAssignmentNode.prototype = new Node();
|
|
61
|
-
FunctionAssignmentNode.prototype.type = 'FunctionAssignmentNode';
|
|
62
|
-
FunctionAssignmentNode.prototype.isFunctionAssignmentNode = true;
|
|
63
|
-
/**
|
|
64
|
-
* Compile a node into a JavaScript function.
|
|
65
|
-
* This basically pre-calculates as much as possible and only leaves open
|
|
66
|
-
* calculations which depend on a dynamic scope with variables.
|
|
67
|
-
* @param {Object} math Math.js namespace with functions and constants.
|
|
68
|
-
* @param {Object} argNames An object with argument names as key and `true`
|
|
69
|
-
* as value. Used in the SymbolNode to optimize
|
|
70
|
-
* for arguments from user assigned functions
|
|
71
|
-
* (see FunctionAssignmentNode) or special symbols
|
|
72
|
-
* like `end` (see IndexNode).
|
|
73
|
-
* @return {function} Returns a function which can be called like:
|
|
74
|
-
* evalNode(scope: Object, args: Object, context: *)
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
FunctionAssignmentNode.prototype._compile = function (math, argNames) {
|
|
78
|
-
var childArgNames = Object.create(argNames);
|
|
79
|
-
(0, _array.forEach)(this.params, function (param) {
|
|
80
|
-
childArgNames[param] = true;
|
|
81
|
-
}); // compile the function expression with the child args
|
|
82
|
-
|
|
83
|
-
var evalExpr = this.expr._compile(math, childArgNames);
|
|
84
|
-
|
|
85
|
-
var name = this.name;
|
|
86
|
-
var params = this.params;
|
|
87
|
-
var signature = (0, _array.join)(this.types, ',');
|
|
88
|
-
var syntax = name + '(' + (0, _array.join)(this.params, ', ') + ')';
|
|
89
|
-
return function evalFunctionAssignmentNode(scope, args, context) {
|
|
90
|
-
var signatures = {};
|
|
91
|
-
|
|
92
|
-
signatures[signature] = function () {
|
|
93
|
-
var childArgs = Object.create(args);
|
|
94
|
-
|
|
95
|
-
for (var i = 0; i < params.length; i++) {
|
|
96
|
-
childArgs[params[i]] = arguments[i];
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return evalExpr(scope, childArgs, context);
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
var fn = typed(name, signatures);
|
|
103
|
-
fn.syntax = syntax;
|
|
104
|
-
scope.set(name, fn);
|
|
105
|
-
return fn;
|
|
106
|
-
};
|
|
107
|
-
};
|
|
108
|
-
/**
|
|
109
|
-
* Execute a callback for each of the child nodes of this node
|
|
110
|
-
* @param {function(child: Node, path: string, parent: Node)} callback
|
|
111
|
-
*/
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
FunctionAssignmentNode.prototype.forEach = function (callback) {
|
|
115
|
-
callback(this.expr, 'expr', this);
|
|
116
|
-
};
|
|
117
|
-
/**
|
|
118
|
-
* Create a new FunctionAssignmentNode having it's childs be the results of calling
|
|
119
|
-
* the provided callback function for each of the childs of the original node.
|
|
120
|
-
* @param {function(child: Node, path: string, parent: Node): Node} callback
|
|
121
|
-
* @returns {FunctionAssignmentNode} Returns a transformed copy of the node
|
|
122
|
-
*/
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
FunctionAssignmentNode.prototype.map = function (callback) {
|
|
126
|
-
var expr = this._ifNode(callback(this.expr, 'expr', this));
|
|
127
|
-
|
|
128
|
-
return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);
|
|
129
|
-
};
|
|
130
|
-
/**
|
|
131
|
-
* Create a clone of this node, a shallow copy
|
|
132
|
-
* @return {FunctionAssignmentNode}
|
|
133
|
-
*/
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
FunctionAssignmentNode.prototype.clone = function () {
|
|
137
|
-
return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);
|
|
138
|
-
};
|
|
139
46
|
/**
|
|
140
47
|
* Is parenthesis needed?
|
|
141
48
|
* @param {Node} node
|
|
142
49
|
* @param {Object} parenthesis
|
|
50
|
+
* @param {string} implicit
|
|
143
51
|
* @private
|
|
144
52
|
*/
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
var precedence = (0, _operators.getPrecedence)(node, parenthesis);
|
|
149
|
-
var exprPrecedence = (0, _operators.getPrecedence)(node.expr, parenthesis);
|
|
53
|
+
function needParenthesis(node, parenthesis, implicit) {
|
|
54
|
+
var precedence = (0, _operators.getPrecedence)(node, parenthesis, implicit);
|
|
55
|
+
var exprPrecedence = (0, _operators.getPrecedence)(node.expr, parenthesis, implicit);
|
|
150
56
|
return parenthesis === 'all' || exprPrecedence !== null && exprPrecedence <= precedence;
|
|
151
57
|
}
|
|
152
|
-
/**
|
|
153
|
-
* get string representation
|
|
154
|
-
* @param {Object} options
|
|
155
|
-
* @return {string} str
|
|
156
|
-
*/
|
|
157
|
-
|
|
158
58
|
|
|
159
|
-
FunctionAssignmentNode
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
59
|
+
var FunctionAssignmentNode = /*#__PURE__*/function (_Node) {
|
|
60
|
+
(0, _inherits2["default"])(FunctionAssignmentNode, _Node);
|
|
61
|
+
|
|
62
|
+
var _super = _createSuper(FunctionAssignmentNode);
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @constructor FunctionAssignmentNode
|
|
66
|
+
* @extends {Node}
|
|
67
|
+
* Function assignment
|
|
68
|
+
*
|
|
69
|
+
* @param {string} name Function name
|
|
70
|
+
* @param {string[] | Array.<{name: string, type: string}>} params
|
|
71
|
+
* Array with function parameter names, or an
|
|
72
|
+
* array with objects containing the name
|
|
73
|
+
* and type of the parameter
|
|
74
|
+
* @param {Node} expr The function expression
|
|
75
|
+
*/
|
|
76
|
+
function FunctionAssignmentNode(name, params, expr) {
|
|
77
|
+
var _this;
|
|
78
|
+
|
|
79
|
+
(0, _classCallCheck2["default"])(this, FunctionAssignmentNode);
|
|
80
|
+
_this = _super.call(this); // validate input
|
|
81
|
+
|
|
82
|
+
if (typeof name !== 'string') {
|
|
83
|
+
throw new TypeError('String expected for parameter "name"');
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
if (!Array.isArray(params)) {
|
|
87
|
+
throw new TypeError('Array containing strings or objects expected for parameter "params"');
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (!(0, _is.isNode)(expr)) {
|
|
91
|
+
throw new TypeError('Node expected for parameter "expr"');
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (_keywords.keywords.has(name)) {
|
|
95
|
+
throw new Error('Illegal function name, "' + name + '" is a reserved keyword');
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
_this.name = name;
|
|
99
|
+
_this.params = params.map(function (param) {
|
|
100
|
+
return param && param.name || param;
|
|
101
|
+
});
|
|
102
|
+
_this.types = params.map(function (param) {
|
|
103
|
+
return param && param.type || 'any';
|
|
104
|
+
});
|
|
105
|
+
_this.expr = expr;
|
|
106
|
+
return _this;
|
|
165
107
|
}
|
|
166
108
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
109
|
+
(0, _createClass2["default"])(FunctionAssignmentNode, [{
|
|
110
|
+
key: "type",
|
|
111
|
+
get: function get() {
|
|
112
|
+
return name;
|
|
113
|
+
}
|
|
114
|
+
}, {
|
|
115
|
+
key: "isFunctionAssignmentNode",
|
|
116
|
+
get: function get() {
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Compile a node into a JavaScript function.
|
|
121
|
+
* This basically pre-calculates as much as possible and only leaves open
|
|
122
|
+
* calculations which depend on a dynamic scope with variables.
|
|
123
|
+
* @param {Object} math Math.js namespace with functions and constants.
|
|
124
|
+
* @param {Object} argNames An object with argument names as key and `true`
|
|
125
|
+
* as value. Used in the SymbolNode to optimize
|
|
126
|
+
* for arguments from user assigned functions
|
|
127
|
+
* (see FunctionAssignmentNode) or special symbols
|
|
128
|
+
* like `end` (see IndexNode).
|
|
129
|
+
* @return {function} Returns a function which can be called like:
|
|
130
|
+
* evalNode(scope: Object, args: Object, context: *)
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
}, {
|
|
134
|
+
key: "_compile",
|
|
135
|
+
value: function _compile(math, argNames) {
|
|
136
|
+
var childArgNames = Object.create(argNames);
|
|
137
|
+
(0, _array.forEach)(this.params, function (param) {
|
|
138
|
+
childArgNames[param] = true;
|
|
139
|
+
}); // compile the function expression with the child args
|
|
140
|
+
|
|
141
|
+
var evalExpr = this.expr._compile(math, childArgNames);
|
|
142
|
+
|
|
143
|
+
var name = this.name;
|
|
144
|
+
var params = this.params;
|
|
145
|
+
var signature = (0, _array.join)(this.types, ',');
|
|
146
|
+
var syntax = name + '(' + (0, _array.join)(this.params, ', ') + ')';
|
|
147
|
+
return function evalFunctionAssignmentNode(scope, args, context) {
|
|
148
|
+
var signatures = {};
|
|
149
|
+
|
|
150
|
+
signatures[signature] = function () {
|
|
151
|
+
var childArgs = Object.create(args);
|
|
152
|
+
|
|
153
|
+
for (var i = 0; i < params.length; i++) {
|
|
154
|
+
childArgs[params[i]] = arguments[i];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return evalExpr(scope, childArgs, context);
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
var fn = typed(name, signatures);
|
|
161
|
+
fn.syntax = syntax;
|
|
162
|
+
scope.set(name, fn);
|
|
163
|
+
return fn;
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Execute a callback for each of the child nodes of this node
|
|
168
|
+
* @param {function(child: Node, path: string, parent: Node)} callback
|
|
169
|
+
*/
|
|
170
|
+
|
|
171
|
+
}, {
|
|
172
|
+
key: "forEach",
|
|
173
|
+
value: function forEach(callback) {
|
|
174
|
+
callback(this.expr, 'expr', this);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Create a new FunctionAssignmentNode whose children are the results of
|
|
178
|
+
* calling the provided callback function for each child of the original
|
|
179
|
+
* node.
|
|
180
|
+
* @param {function(child: Node, path: string, parent: Node): Node} callback
|
|
181
|
+
* @returns {FunctionAssignmentNode} Returns a transformed copy of the node
|
|
182
|
+
*/
|
|
183
|
+
|
|
184
|
+
}, {
|
|
185
|
+
key: "map",
|
|
186
|
+
value: function map(callback) {
|
|
187
|
+
var expr = this._ifNode(callback(this.expr, 'expr', this));
|
|
188
|
+
|
|
189
|
+
return new FunctionAssignmentNode(this.name, this.params.slice(0), expr);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Create a clone of this node, a shallow copy
|
|
193
|
+
* @return {FunctionAssignmentNode}
|
|
194
|
+
*/
|
|
195
|
+
|
|
196
|
+
}, {
|
|
197
|
+
key: "clone",
|
|
198
|
+
value: function clone() {
|
|
199
|
+
return new FunctionAssignmentNode(this.name, this.params.slice(0), this.expr);
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* get string representation
|
|
203
|
+
* @param {Object} options
|
|
204
|
+
* @return {string} str
|
|
205
|
+
*/
|
|
206
|
+
|
|
207
|
+
}, {
|
|
208
|
+
key: "_toString",
|
|
209
|
+
value: function _toString(options) {
|
|
210
|
+
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
211
|
+
var expr = this.expr.toString(options);
|
|
212
|
+
|
|
213
|
+
if (needParenthesis(this, parenthesis, options && options.implicit)) {
|
|
214
|
+
expr = '(' + expr + ')';
|
|
215
|
+
}
|
|
174
216
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
217
|
+
return this.name + '(' + this.params.join(', ') + ') = ' + expr;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get a JSON representation of the node
|
|
221
|
+
* @returns {Object}
|
|
222
|
+
*/
|
|
223
|
+
|
|
224
|
+
}, {
|
|
225
|
+
key: "toJSON",
|
|
226
|
+
value: function toJSON() {
|
|
227
|
+
var types = this.types;
|
|
181
228
|
return {
|
|
182
|
-
|
|
183
|
-
|
|
229
|
+
mathjs: name,
|
|
230
|
+
name: this.name,
|
|
231
|
+
params: this.params.map(function (param, index) {
|
|
232
|
+
return {
|
|
233
|
+
name: param,
|
|
234
|
+
type: types[index]
|
|
235
|
+
};
|
|
236
|
+
}),
|
|
237
|
+
expr: this.expr
|
|
184
238
|
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
params.push('<span class="math-symbol math-parameter">' + (0, _string.escape)(this.params[i]) + '</span>');
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
var expr = this.expr.toHTML(options);
|
|
217
|
-
|
|
218
|
-
if (needParenthesis(this, parenthesis)) {
|
|
219
|
-
expr = '<span class="math-parenthesis math-round-parenthesis">(</span>' + expr + '<span class="math-parenthesis math-round-parenthesis">)</span>';
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
return '<span class="math-function">' + (0, _string.escape)(this.name) + '</span>' + '<span class="math-parenthesis math-round-parenthesis">(</span>' + params.join('<span class="math-separator">,</span>') + '<span class="math-parenthesis math-round-parenthesis">)</span><span class="math-operator math-assignment-operator math-variable-assignment-operator math-binary-operator">=</span>' + expr;
|
|
223
|
-
};
|
|
224
|
-
/**
|
|
225
|
-
* get LaTeX representation
|
|
226
|
-
* @param {Object} options
|
|
227
|
-
* @return {string} str
|
|
228
|
-
*/
|
|
229
|
-
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Instantiate an FunctionAssignmentNode from its JSON representation
|
|
242
|
+
* @param {Object} json
|
|
243
|
+
* An object structured like
|
|
244
|
+
* ```
|
|
245
|
+
* {"mathjs": "FunctionAssignmentNode",
|
|
246
|
+
* name: ..., params: ..., expr: ...}
|
|
247
|
+
* ```
|
|
248
|
+
* where mathjs is optional
|
|
249
|
+
* @returns {FunctionAssignmentNode}
|
|
250
|
+
*/
|
|
251
|
+
|
|
252
|
+
}, {
|
|
253
|
+
key: "toHTML",
|
|
254
|
+
value:
|
|
255
|
+
/**
|
|
256
|
+
* get HTML representation
|
|
257
|
+
* @param {Object} options
|
|
258
|
+
* @return {string} str
|
|
259
|
+
*/
|
|
260
|
+
function toHTML(options) {
|
|
261
|
+
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
262
|
+
var params = [];
|
|
263
|
+
|
|
264
|
+
for (var i = 0; i < this.params.length; i++) {
|
|
265
|
+
params.push('<span class="math-symbol math-parameter">' + (0, _string.escape)(this.params[i]) + '</span>');
|
|
266
|
+
}
|
|
230
267
|
|
|
231
|
-
|
|
232
|
-
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
233
|
-
var expr = this.expr.toTex(options);
|
|
268
|
+
var expr = this.expr.toHTML(options);
|
|
234
269
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
270
|
+
if (needParenthesis(this, parenthesis, options && options.implicit)) {
|
|
271
|
+
expr = '<span class="math-parenthesis math-round-parenthesis">(</span>' + expr + '<span class="math-parenthesis math-round-parenthesis">)</span>';
|
|
272
|
+
}
|
|
238
273
|
|
|
239
|
-
|
|
240
|
-
|
|
274
|
+
return '<span class="math-function">' + (0, _string.escape)(this.name) + '</span>' + '<span class="math-parenthesis math-round-parenthesis">(</span>' + params.join('<span class="math-separator">,</span>') + '<span class="math-parenthesis math-round-parenthesis">)</span>' + '<span class="math-operator math-assignment-operator ' + 'math-variable-assignment-operator math-binary-operator">=</span>' + expr;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* get LaTeX representation
|
|
278
|
+
* @param {Object} options
|
|
279
|
+
* @return {string} str
|
|
280
|
+
*/
|
|
281
|
+
|
|
282
|
+
}, {
|
|
283
|
+
key: "_toTex",
|
|
284
|
+
value: function _toTex(options) {
|
|
285
|
+
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
286
|
+
var expr = this.expr.toTex(options);
|
|
287
|
+
|
|
288
|
+
if (needParenthesis(this, parenthesis, options && options.implicit)) {
|
|
289
|
+
expr = "\\left(".concat(expr, "\\right)");
|
|
290
|
+
}
|
|
241
291
|
|
|
292
|
+
return '\\mathrm{' + this.name + '}\\left(' + this.params.map(_latex.toSymbol).join(',') + '\\right):=' + expr;
|
|
293
|
+
}
|
|
294
|
+
}], [{
|
|
295
|
+
key: "fromJSON",
|
|
296
|
+
value: function fromJSON(json) {
|
|
297
|
+
return new FunctionAssignmentNode(json.name, json.params, json.expr);
|
|
298
|
+
}
|
|
299
|
+
}]);
|
|
300
|
+
return FunctionAssignmentNode;
|
|
301
|
+
}(Node);
|
|
302
|
+
|
|
303
|
+
(0, _defineProperty2["default"])(FunctionAssignmentNode, "name", name);
|
|
242
304
|
return FunctionAssignmentNode;
|
|
243
305
|
}, {
|
|
244
306
|
isClass: true,
|