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 { isNode, isSymbolNode } from '../../utils/is.js';
|
|
2
3
|
import { factory } from '../../utils/factory.js';
|
|
3
4
|
import { getPrecedence } from '../operators.js';
|
|
@@ -8,278 +9,286 @@ export var createRangeNode = /* #__PURE__ */factory(name, dependencies, _ref =>
|
|
|
8
9
|
Node
|
|
9
10
|
} = _ref;
|
|
10
11
|
|
|
11
|
-
/**
|
|
12
|
-
* @constructor RangeNode
|
|
13
|
-
* @extends {Node}
|
|
14
|
-
* create a range
|
|
15
|
-
* @param {Node} start included lower-bound
|
|
16
|
-
* @param {Node} end included upper-bound
|
|
17
|
-
* @param {Node} [step] optional step
|
|
18
|
-
*/
|
|
19
|
-
function RangeNode(start, end, step) {
|
|
20
|
-
if (!(this instanceof RangeNode)) {
|
|
21
|
-
throw new SyntaxError('Constructor must be called with the new operator');
|
|
22
|
-
} // validate inputs
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (!isNode(start)) throw new TypeError('Node expected');
|
|
26
|
-
if (!isNode(end)) throw new TypeError('Node expected');
|
|
27
|
-
if (step && !isNode(step)) throw new TypeError('Node expected');
|
|
28
|
-
if (arguments.length > 3) throw new Error('Too many arguments');
|
|
29
|
-
this.start = start; // included lower-bound
|
|
30
|
-
|
|
31
|
-
this.end = end; // included upper-bound
|
|
32
|
-
|
|
33
|
-
this.step = step || null; // optional step
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
RangeNode.prototype = new Node();
|
|
37
|
-
RangeNode.prototype.type = 'RangeNode';
|
|
38
|
-
RangeNode.prototype.isRangeNode = true;
|
|
39
|
-
/**
|
|
40
|
-
* Check whether the RangeNode needs the `end` symbol to be defined.
|
|
41
|
-
* This end is the size of the Matrix in current dimension.
|
|
42
|
-
* @return {boolean}
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
RangeNode.prototype.needsEnd = function () {
|
|
46
|
-
// find all `end` symbols in this RangeNode
|
|
47
|
-
var endSymbols = this.filter(function (node) {
|
|
48
|
-
return isSymbolNode(node) && node.name === 'end';
|
|
49
|
-
});
|
|
50
|
-
return endSymbols.length > 0;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Compile a node into a JavaScript function.
|
|
54
|
-
* This basically pre-calculates as much as possible and only leaves open
|
|
55
|
-
* calculations which depend on a dynamic scope with variables.
|
|
56
|
-
* @param {Object} math Math.js namespace with functions and constants.
|
|
57
|
-
* @param {Object} argNames An object with argument names as key and `true`
|
|
58
|
-
* as value. Used in the SymbolNode to optimize
|
|
59
|
-
* for arguments from user assigned functions
|
|
60
|
-
* (see FunctionAssignmentNode) or special symbols
|
|
61
|
-
* like `end` (see IndexNode).
|
|
62
|
-
* @return {function} Returns a function which can be called like:
|
|
63
|
-
* evalNode(scope: Object, args: Object, context: *)
|
|
64
|
-
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
RangeNode.prototype._compile = function (math, argNames) {
|
|
68
|
-
var range = math.range;
|
|
69
|
-
|
|
70
|
-
var evalStart = this.start._compile(math, argNames);
|
|
71
|
-
|
|
72
|
-
var evalEnd = this.end._compile(math, argNames);
|
|
73
|
-
|
|
74
|
-
if (this.step) {
|
|
75
|
-
var evalStep = this.step._compile(math, argNames);
|
|
76
|
-
|
|
77
|
-
return function evalRangeNode(scope, args, context) {
|
|
78
|
-
return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
|
|
79
|
-
};
|
|
80
|
-
} else {
|
|
81
|
-
return function evalRangeNode(scope, args, context) {
|
|
82
|
-
return range(evalStart(scope, args, context), evalEnd(scope, args, context));
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
/**
|
|
87
|
-
* Execute a callback for each of the child nodes of this node
|
|
88
|
-
* @param {function(child: Node, path: string, parent: Node)} callback
|
|
89
|
-
*/
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
RangeNode.prototype.forEach = function (callback) {
|
|
93
|
-
callback(this.start, 'start', this);
|
|
94
|
-
callback(this.end, 'end', this);
|
|
95
|
-
|
|
96
|
-
if (this.step) {
|
|
97
|
-
callback(this.step, 'step', this);
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* Create a new RangeNode having it's childs be the results of calling
|
|
102
|
-
* the provided callback function for each of the childs of the original node.
|
|
103
|
-
* @param {function(child: Node, path: string, parent: Node): Node} callback
|
|
104
|
-
* @returns {RangeNode} Returns a transformed copy of the node
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
RangeNode.prototype.map = function (callback) {
|
|
109
|
-
return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Create a clone of this node, a shallow copy
|
|
113
|
-
* @return {RangeNode}
|
|
114
|
-
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
RangeNode.prototype.clone = function () {
|
|
118
|
-
return new RangeNode(this.start, this.end, this.step && this.step);
|
|
119
|
-
};
|
|
120
12
|
/**
|
|
121
13
|
* Calculate the necessary parentheses
|
|
122
14
|
* @param {Node} node
|
|
123
15
|
* @param {string} parenthesis
|
|
16
|
+
* @param {string} implicit
|
|
124
17
|
* @return {Object} parentheses
|
|
125
18
|
* @private
|
|
126
19
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
function calculateNecessaryParentheses(node, parenthesis) {
|
|
130
|
-
var precedence = getPrecedence(node, parenthesis);
|
|
20
|
+
function calculateNecessaryParentheses(node, parenthesis, implicit) {
|
|
21
|
+
var precedence = getPrecedence(node, parenthesis, implicit);
|
|
131
22
|
var parens = {};
|
|
132
|
-
var startPrecedence = getPrecedence(node.start, parenthesis);
|
|
23
|
+
var startPrecedence = getPrecedence(node.start, parenthesis, implicit);
|
|
133
24
|
parens.start = startPrecedence !== null && startPrecedence <= precedence || parenthesis === 'all';
|
|
134
25
|
|
|
135
26
|
if (node.step) {
|
|
136
|
-
var stepPrecedence = getPrecedence(node.step, parenthesis);
|
|
27
|
+
var stepPrecedence = getPrecedence(node.step, parenthesis, implicit);
|
|
137
28
|
parens.step = stepPrecedence !== null && stepPrecedence <= precedence || parenthesis === 'all';
|
|
138
29
|
}
|
|
139
30
|
|
|
140
|
-
var endPrecedence = getPrecedence(node.end, parenthesis);
|
|
31
|
+
var endPrecedence = getPrecedence(node.end, parenthesis, implicit);
|
|
141
32
|
parens.end = endPrecedence !== null && endPrecedence <= precedence || parenthesis === 'all';
|
|
142
33
|
return parens;
|
|
143
34
|
}
|
|
144
|
-
/**
|
|
145
|
-
* Get string representation
|
|
146
|
-
* @param {Object} options
|
|
147
|
-
* @return {string} str
|
|
148
|
-
*/
|
|
149
|
-
|
|
150
35
|
|
|
151
|
-
RangeNode
|
|
152
|
-
|
|
153
|
-
|
|
36
|
+
class RangeNode extends Node {
|
|
37
|
+
/**
|
|
38
|
+
* @constructor RangeNode
|
|
39
|
+
* @extends {Node}
|
|
40
|
+
* create a range
|
|
41
|
+
* @param {Node} start included lower-bound
|
|
42
|
+
* @param {Node} end included upper-bound
|
|
43
|
+
* @param {Node} [step] optional step
|
|
44
|
+
*/
|
|
45
|
+
constructor(start, end, step) {
|
|
46
|
+
super(); // validate inputs
|
|
47
|
+
|
|
48
|
+
if (!isNode(start)) throw new TypeError('Node expected');
|
|
49
|
+
if (!isNode(end)) throw new TypeError('Node expected');
|
|
50
|
+
if (step && !isNode(step)) throw new TypeError('Node expected');
|
|
51
|
+
if (arguments.length > 3) throw new Error('Too many arguments');
|
|
52
|
+
this.start = start; // included lower-bound
|
|
53
|
+
|
|
54
|
+
this.end = end; // included upper-bound
|
|
55
|
+
|
|
56
|
+
this.step = step || null; // optional step
|
|
57
|
+
}
|
|
154
58
|
|
|
155
|
-
|
|
156
|
-
|
|
59
|
+
get type() {
|
|
60
|
+
return name;
|
|
61
|
+
}
|
|
157
62
|
|
|
158
|
-
|
|
159
|
-
|
|
63
|
+
get isRangeNode() {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check whether the RangeNode needs the `end` symbol to be defined.
|
|
68
|
+
* This end is the size of the Matrix in current dimension.
|
|
69
|
+
* @return {boolean}
|
|
70
|
+
*/
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
needsEnd() {
|
|
74
|
+
// find all `end` symbols in this RangeNode
|
|
75
|
+
var endSymbols = this.filter(function (node) {
|
|
76
|
+
return isSymbolNode(node) && node.name === 'end';
|
|
77
|
+
});
|
|
78
|
+
return endSymbols.length > 0;
|
|
160
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Compile a node into a JavaScript function.
|
|
82
|
+
* This basically pre-calculates as much as possible and only leaves open
|
|
83
|
+
* calculations which depend on a dynamic scope with variables.
|
|
84
|
+
* @param {Object} math Math.js namespace with functions and constants.
|
|
85
|
+
* @param {Object} argNames An object with argument names as key and `true`
|
|
86
|
+
* as value. Used in the SymbolNode to optimize
|
|
87
|
+
* for arguments from user assigned functions
|
|
88
|
+
* (see FunctionAssignmentNode) or special symbols
|
|
89
|
+
* like `end` (see IndexNode).
|
|
90
|
+
* @return {function} Returns a function which can be called like:
|
|
91
|
+
* evalNode(scope: Object, args: Object, context: *)
|
|
92
|
+
*/
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
_compile(math, argNames) {
|
|
96
|
+
var range = math.range;
|
|
97
|
+
|
|
98
|
+
var evalStart = this.start._compile(math, argNames);
|
|
99
|
+
|
|
100
|
+
var evalEnd = this.end._compile(math, argNames);
|
|
101
|
+
|
|
102
|
+
if (this.step) {
|
|
103
|
+
var evalStep = this.step._compile(math, argNames);
|
|
104
|
+
|
|
105
|
+
return function evalRangeNode(scope, args, context) {
|
|
106
|
+
return range(evalStart(scope, args, context), evalEnd(scope, args, context), evalStep(scope, args, context));
|
|
107
|
+
};
|
|
108
|
+
} else {
|
|
109
|
+
return function evalRangeNode(scope, args, context) {
|
|
110
|
+
return range(evalStart(scope, args, context), evalEnd(scope, args, context));
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Execute a callback for each of the child nodes of this node
|
|
116
|
+
* @param {function(child: Node, path: string, parent: Node)} callback
|
|
117
|
+
*/
|
|
161
118
|
|
|
162
|
-
str = start;
|
|
163
119
|
|
|
164
|
-
|
|
165
|
-
|
|
120
|
+
forEach(callback) {
|
|
121
|
+
callback(this.start, 'start', this);
|
|
122
|
+
callback(this.end, 'end', this);
|
|
166
123
|
|
|
167
|
-
if (
|
|
168
|
-
step
|
|
124
|
+
if (this.step) {
|
|
125
|
+
callback(this.step, 'step', this);
|
|
169
126
|
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Create a new RangeNode whose children are the results of calling
|
|
130
|
+
* the provided callback function for each child of the original node.
|
|
131
|
+
* @param {function(child: Node, path: string, parent: Node): Node} callback
|
|
132
|
+
* @returns {RangeNode} Returns a transformed copy of the node
|
|
133
|
+
*/
|
|
170
134
|
|
|
171
|
-
|
|
135
|
+
|
|
136
|
+
map(callback) {
|
|
137
|
+
return new RangeNode(this._ifNode(callback(this.start, 'start', this)), this._ifNode(callback(this.end, 'end', this)), this.step && this._ifNode(callback(this.step, 'step', this)));
|
|
172
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Create a clone of this node, a shallow copy
|
|
141
|
+
* @return {RangeNode}
|
|
142
|
+
*/
|
|
173
143
|
|
|
174
|
-
var end = this.end.toString(options);
|
|
175
144
|
|
|
176
|
-
|
|
177
|
-
|
|
145
|
+
clone() {
|
|
146
|
+
return new RangeNode(this.start, this.end, this.step && this.step);
|
|
178
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Get string representation
|
|
150
|
+
* @param {Object} options
|
|
151
|
+
* @return {string} str
|
|
152
|
+
*/
|
|
179
153
|
|
|
180
|
-
str += ':' + end;
|
|
181
|
-
return str;
|
|
182
|
-
};
|
|
183
|
-
/**
|
|
184
|
-
* Get a JSON representation of the node
|
|
185
|
-
* @returns {Object}
|
|
186
|
-
*/
|
|
187
154
|
|
|
155
|
+
_toString(options) {
|
|
156
|
+
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
157
|
+
var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit); // format string as start:step:stop
|
|
188
158
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
mathjs: 'RangeNode',
|
|
192
|
-
start: this.start,
|
|
193
|
-
end: this.end,
|
|
194
|
-
step: this.step
|
|
195
|
-
};
|
|
196
|
-
};
|
|
197
|
-
/**
|
|
198
|
-
* Instantiate an RangeNode from its JSON representation
|
|
199
|
-
* @param {Object} json An object structured like
|
|
200
|
-
* `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
|
|
201
|
-
* where mathjs is optional
|
|
202
|
-
* @returns {RangeNode}
|
|
203
|
-
*/
|
|
159
|
+
var str;
|
|
160
|
+
var start = this.start.toString(options);
|
|
204
161
|
|
|
162
|
+
if (parens.start) {
|
|
163
|
+
start = '(' + start + ')';
|
|
164
|
+
}
|
|
205
165
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
* Get HTML representation
|
|
211
|
-
* @param {Object} options
|
|
212
|
-
* @return {string} str
|
|
213
|
-
*/
|
|
166
|
+
str = start;
|
|
167
|
+
|
|
168
|
+
if (this.step) {
|
|
169
|
+
var step = this.step.toString(options);
|
|
214
170
|
|
|
171
|
+
if (parens.step) {
|
|
172
|
+
step = '(' + step + ')';
|
|
173
|
+
}
|
|
215
174
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
var parens = calculateNecessaryParentheses(this, parenthesis); // format string as start:step:stop
|
|
175
|
+
str += ':' + step;
|
|
176
|
+
}
|
|
219
177
|
|
|
220
|
-
|
|
221
|
-
|
|
178
|
+
var end = this.end.toString(options);
|
|
179
|
+
|
|
180
|
+
if (parens.end) {
|
|
181
|
+
end = '(' + end + ')';
|
|
182
|
+
}
|
|
222
183
|
|
|
223
|
-
|
|
224
|
-
|
|
184
|
+
str += ':' + end;
|
|
185
|
+
return str;
|
|
225
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* Get a JSON representation of the node
|
|
189
|
+
* @returns {Object}
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
toJSON() {
|
|
194
|
+
return {
|
|
195
|
+
mathjs: name,
|
|
196
|
+
start: this.start,
|
|
197
|
+
end: this.end,
|
|
198
|
+
step: this.step
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Instantiate an RangeNode from its JSON representation
|
|
203
|
+
* @param {Object} json
|
|
204
|
+
* An object structured like
|
|
205
|
+
* `{"mathjs": "RangeNode", "start": ..., "end": ..., "step": ...}`,
|
|
206
|
+
* where mathjs is optional
|
|
207
|
+
* @returns {RangeNode}
|
|
208
|
+
*/
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
static fromJSON(json) {
|
|
212
|
+
return new RangeNode(json.start, json.end, json.step);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Get HTML representation
|
|
216
|
+
* @param {Object} options
|
|
217
|
+
* @return {string} str
|
|
218
|
+
*/
|
|
226
219
|
|
|
227
|
-
str = start;
|
|
228
220
|
|
|
229
|
-
|
|
230
|
-
var
|
|
221
|
+
toHTML(options) {
|
|
222
|
+
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
223
|
+
var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit); // format string as start:step:stop
|
|
231
224
|
|
|
232
|
-
|
|
233
|
-
|
|
225
|
+
var str;
|
|
226
|
+
var start = this.start.toHTML(options);
|
|
227
|
+
|
|
228
|
+
if (parens.start) {
|
|
229
|
+
start = '<span class="math-parenthesis math-round-parenthesis">(</span>' + start + '<span class="math-parenthesis math-round-parenthesis">)</span>';
|
|
234
230
|
}
|
|
235
231
|
|
|
236
|
-
str
|
|
237
|
-
}
|
|
232
|
+
str = start;
|
|
238
233
|
|
|
239
|
-
|
|
234
|
+
if (this.step) {
|
|
235
|
+
var step = this.step.toHTML(options);
|
|
240
236
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
237
|
+
if (parens.step) {
|
|
238
|
+
step = '<span class="math-parenthesis math-round-parenthesis">(</span>' + step + '<span class="math-parenthesis math-round-parenthesis">)</span>';
|
|
239
|
+
}
|
|
244
240
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
};
|
|
248
|
-
/**
|
|
249
|
-
* Get LaTeX representation
|
|
250
|
-
* @params {Object} options
|
|
251
|
-
* @return {string} str
|
|
252
|
-
*/
|
|
241
|
+
str += '<span class="math-operator math-range-operator">:</span>' + step;
|
|
242
|
+
}
|
|
253
243
|
|
|
244
|
+
var end = this.end.toHTML(options);
|
|
254
245
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
var str = this.start.toTex(options);
|
|
246
|
+
if (parens.end) {
|
|
247
|
+
end = '<span class="math-parenthesis math-round-parenthesis">(</span>' + end + '<span class="math-parenthesis math-round-parenthesis">)</span>';
|
|
248
|
+
}
|
|
259
249
|
|
|
260
|
-
|
|
261
|
-
|
|
250
|
+
str += '<span class="math-operator math-range-operator">:</span>' + end;
|
|
251
|
+
return str;
|
|
262
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Get LaTeX representation
|
|
255
|
+
* @params {Object} options
|
|
256
|
+
* @return {string} str
|
|
257
|
+
*/
|
|
263
258
|
|
|
264
|
-
if (this.step) {
|
|
265
|
-
var step = this.step.toTex(options);
|
|
266
259
|
|
|
267
|
-
|
|
268
|
-
|
|
260
|
+
_toTex(options) {
|
|
261
|
+
var parenthesis = options && options.parenthesis ? options.parenthesis : 'keep';
|
|
262
|
+
var parens = calculateNecessaryParentheses(this, parenthesis, options && options.implicit);
|
|
263
|
+
var str = this.start.toTex(options);
|
|
264
|
+
|
|
265
|
+
if (parens.start) {
|
|
266
|
+
str = "\\left(".concat(str, "\\right)");
|
|
269
267
|
}
|
|
270
268
|
|
|
271
|
-
|
|
272
|
-
|
|
269
|
+
if (this.step) {
|
|
270
|
+
var step = this.step.toTex(options);
|
|
271
|
+
|
|
272
|
+
if (parens.step) {
|
|
273
|
+
step = "\\left(".concat(step, "\\right)");
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
str += ':' + step;
|
|
277
|
+
}
|
|
273
278
|
|
|
274
|
-
|
|
279
|
+
var end = this.end.toTex(options);
|
|
275
280
|
|
|
276
|
-
|
|
277
|
-
|
|
281
|
+
if (parens.end) {
|
|
282
|
+
end = "\\left(".concat(end, "\\right)");
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
str += ':' + end;
|
|
286
|
+
return str;
|
|
278
287
|
}
|
|
279
288
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
_defineProperty(RangeNode, "name", name);
|
|
283
292
|
|
|
284
293
|
return RangeNode;
|
|
285
294
|
}, {
|