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,4 +1,3 @@
|
|
|
1
|
-
import { deepMap } from '../../utils/collection.js';
|
|
2
1
|
import { factory } from '../../utils/factory.js';
|
|
3
2
|
import { gammaG, gammaNumber, gammaP } from '../../plain/number/index.js';
|
|
4
3
|
var name = 'gamma';
|
|
@@ -10,14 +9,15 @@ export var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
10
9
|
multiplyScalar,
|
|
11
10
|
pow,
|
|
12
11
|
BigNumber: _BigNumber,
|
|
13
|
-
Complex
|
|
12
|
+
Complex
|
|
14
13
|
} = _ref;
|
|
15
14
|
|
|
16
15
|
/**
|
|
17
16
|
* Compute the gamma function of a value using Lanczos approximation for
|
|
18
17
|
* small values, and an extended Stirling approximation for large values.
|
|
19
18
|
*
|
|
20
|
-
*
|
|
19
|
+
* To avoid confusion with the matrix Gamma function, this function does
|
|
20
|
+
* not apply to matrices.
|
|
21
21
|
*
|
|
22
22
|
* Syntax:
|
|
23
23
|
*
|
|
@@ -33,51 +33,53 @@ export var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
33
33
|
*
|
|
34
34
|
* combinations, factorial, permutations
|
|
35
35
|
*
|
|
36
|
-
* @param {number |
|
|
37
|
-
* @return {number |
|
|
36
|
+
* @param {number | BigNumber | Complex} n A real or complex number
|
|
37
|
+
* @return {number | BigNumber | Complex} The gamma of `n`
|
|
38
38
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
// So reflection formula is required
|
|
39
|
+
function gammaComplex(n) {
|
|
40
|
+
if (n.im === 0) {
|
|
41
|
+
return gammaNumber(n.re);
|
|
42
|
+
} // Lanczos approximation doesn't work well with real part lower than 0.5
|
|
43
|
+
// So reflection formula is required
|
|
44
|
+
|
|
46
45
|
|
|
46
|
+
if (n.re < 0.5) {
|
|
47
|
+
// Euler's reflection formula
|
|
48
|
+
// gamma(1-z) * gamma(z) = PI / sin(PI * z)
|
|
49
|
+
// real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]
|
|
50
|
+
// thanks to imperfect sin implementation sin(PI * n) != 0
|
|
51
|
+
// we can safely use it anyway
|
|
52
|
+
var _t = new Complex(1 - n.re, -n.im);
|
|
47
53
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// thanks to imperfect sin implementation sin(PI * n) != 0
|
|
53
|
-
// we can safely use it anyway
|
|
54
|
-
var _t = new _Complex(1 - n.re, -n.im);
|
|
54
|
+
var r = new Complex(Math.PI * n.re, Math.PI * n.im);
|
|
55
|
+
return new Complex(Math.PI).div(r.sin()).div(gammaComplex(_t));
|
|
56
|
+
} // Lanczos approximation
|
|
57
|
+
// z -= 1
|
|
55
58
|
|
|
56
|
-
var r = new _Complex(Math.PI * n.re, Math.PI * n.im);
|
|
57
|
-
return new _Complex(Math.PI).div(r.sin()).div(this(_t));
|
|
58
|
-
} // Lanczos approximation
|
|
59
|
-
// z -= 1
|
|
60
59
|
|
|
60
|
+
n = new Complex(n.re - 1, n.im); // x = gammaPval[0]
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
var x = new Complex(gammaP[0], 0); // for (i, gammaPval) in enumerate(gammaP):
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
for (var i = 1; i < gammaP.length; ++i) {
|
|
65
|
+
// x += gammaPval / (z + i)
|
|
66
|
+
var gammaPval = new Complex(gammaP[i], 0);
|
|
67
|
+
x = x.add(gammaPval.div(n.add(i)));
|
|
68
|
+
} // t = z + gammaG + 0.5
|
|
65
69
|
|
|
66
|
-
for (var i = 1; i < gammaP.length; ++i) {
|
|
67
|
-
// x += gammaPval / (z + i)
|
|
68
|
-
var gammaPval = new _Complex(gammaP[i], 0);
|
|
69
|
-
x = x.add(gammaPval.div(n.add(i)));
|
|
70
|
-
} // t = z + gammaG + 0.5
|
|
71
70
|
|
|
71
|
+
var t = new Complex(n.re + gammaG + 0.5, n.im); // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
var twoPiSqrt = Math.sqrt(2 * Math.PI);
|
|
74
|
+
var tpow = t.pow(n.add(0.5));
|
|
75
|
+
var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
|
|
74
76
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
|
|
77
|
+
return x.mul(twoPiSqrt).mul(tpow).mul(expt);
|
|
78
|
+
}
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
return typed(name, {
|
|
81
|
+
number: gammaNumber,
|
|
82
|
+
Complex: gammaComplex,
|
|
81
83
|
BigNumber: function BigNumber(n) {
|
|
82
84
|
if (n.isInteger()) {
|
|
83
85
|
return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));
|
|
@@ -88,9 +90,6 @@ export var createGamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
throw new Error('Integer BigNumber expected');
|
|
91
|
-
},
|
|
92
|
-
'Array | Matrix': function ArrayMatrix(n) {
|
|
93
|
-
return deepMap(n, this);
|
|
94
93
|
}
|
|
95
94
|
});
|
|
96
95
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { factory } from '../../utils/factory.js';
|
|
2
2
|
var name = 'kldivergence';
|
|
3
|
-
var dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'dotDivide', 'log', 'isNumeric'];
|
|
3
|
+
var dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'map', 'dotDivide', 'log', 'isNumeric'];
|
|
4
4
|
export var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
5
5
|
var {
|
|
6
6
|
typed,
|
|
@@ -8,6 +8,7 @@ export var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref
|
|
|
8
8
|
divide,
|
|
9
9
|
sum,
|
|
10
10
|
multiply,
|
|
11
|
+
map,
|
|
11
12
|
dotDivide,
|
|
12
13
|
log,
|
|
13
14
|
isNumeric
|
|
@@ -75,7 +76,7 @@ export var createKldivergence = /* #__PURE__ */factory(name, dependencies, _ref
|
|
|
75
76
|
|
|
76
77
|
var qnorm = divide(q, sum(q));
|
|
77
78
|
var pnorm = divide(p, sum(p));
|
|
78
|
-
var result = sum(multiply(qnorm,
|
|
79
|
+
var result = sum(multiply(qnorm, map(dotDivide(qnorm, pnorm), x => log(x))));
|
|
79
80
|
|
|
80
81
|
if (isNumeric(result)) {
|
|
81
82
|
return result;
|
|
@@ -10,7 +10,7 @@ var name = 'lgamma';
|
|
|
10
10
|
var dependencies = ['Complex', 'typed'];
|
|
11
11
|
export var createLgamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
12
12
|
var {
|
|
13
|
-
Complex
|
|
13
|
+
Complex,
|
|
14
14
|
typed
|
|
15
15
|
} = _ref;
|
|
16
16
|
// Stirling series is non-convergent, we need to use the recurrence `lgamma(z) = lgamma(z+1) - log z` to get
|
|
@@ -57,37 +57,37 @@ export var createLgamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
57
57
|
|
|
58
58
|
return typed(name, {
|
|
59
59
|
number: lgammaNumber,
|
|
60
|
-
Complex:
|
|
61
|
-
|
|
60
|
+
Complex: lgammaComplex,
|
|
61
|
+
BigNumber: function BigNumber() {
|
|
62
|
+
throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber");
|
|
63
|
+
}
|
|
64
|
+
});
|
|
62
65
|
|
|
63
|
-
|
|
66
|
+
function lgammaComplex(n) {
|
|
67
|
+
var TWOPI = 6.2831853071795864769252842; // 2*pi
|
|
64
68
|
|
|
65
|
-
|
|
69
|
+
var LOGPI = 1.1447298858494001741434262; // log(pi)
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
return new _Complex(NaN, NaN);
|
|
69
|
-
} else if (n.im === 0) {
|
|
70
|
-
return new _Complex(lgammaNumber(n.re), 0);
|
|
71
|
-
} else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
|
|
72
|
-
return lgammaStirling(n);
|
|
73
|
-
} else if (n.re <= REFLECTION) {
|
|
74
|
-
// Reflection formula. see Proposition 3.1 in [1]
|
|
75
|
-
var tmp = copysign(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25); // TODO: `complex.js sin` doesn't have extremely high precision, so this value `a` may lose a little precision,
|
|
76
|
-
// causing the computation results to be less accurate than the lgamma of real numbers
|
|
71
|
+
var REFLECTION = 0.1;
|
|
77
72
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
73
|
+
if (n.isNaN()) {
|
|
74
|
+
return new Complex(NaN, NaN);
|
|
75
|
+
} else if (n.im === 0) {
|
|
76
|
+
return new Complex(lgammaNumber(n.re), 0);
|
|
77
|
+
} else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
|
|
78
|
+
return lgammaStirling(n);
|
|
79
|
+
} else if (n.re <= REFLECTION) {
|
|
80
|
+
// Reflection formula. see Proposition 3.1 in [1]
|
|
81
|
+
var tmp = copysign(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);
|
|
82
|
+
var a = n.mul(Math.PI).sin().log();
|
|
83
|
+
var b = lgammaComplex(new Complex(1 - n.re, -n.im));
|
|
84
|
+
return new Complex(LOGPI, tmp).sub(a).sub(b);
|
|
85
|
+
} else if (n.im >= 0) {
|
|
86
|
+
return lgammaRecurrence(n);
|
|
87
|
+
} else {
|
|
88
|
+
return lgammaRecurrence(n.conjugate()).conjugate();
|
|
89
89
|
}
|
|
90
|
-
}
|
|
90
|
+
}
|
|
91
91
|
|
|
92
92
|
function lgammaStirling(z) {
|
|
93
93
|
// formula ref in [2]
|
|
@@ -98,7 +98,7 @@ export var createLgamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
98
98
|
// => (x - 0.5) * log(x) - x + log(2PI) / 2
|
|
99
99
|
var leftPart = z.sub(0.5).mul(z.log()).sub(z).add(lnSqrt2PI); // right part
|
|
100
100
|
|
|
101
|
-
var rz = new
|
|
101
|
+
var rz = new Complex(1, 0).div(z);
|
|
102
102
|
var rzz = rz.div(z);
|
|
103
103
|
var a = coeffs[0];
|
|
104
104
|
var b = coeffs[1];
|
|
@@ -132,6 +132,6 @@ export var createLgamma = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
132
132
|
z = z.add(1);
|
|
133
133
|
}
|
|
134
134
|
|
|
135
|
-
return lgammaStirling(z).sub(shiftprod.log()).sub(new
|
|
135
|
+
return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex(0, signflips * 2 * Math.PI * 1));
|
|
136
136
|
}
|
|
137
137
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { nearlyEqual as bigNearlyEqual } from '../../utils/bignumber/nearlyEqual.js';
|
|
2
2
|
import { nearlyEqual } from '../../utils/number.js';
|
|
3
3
|
import { factory } from '../../utils/factory.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
4
|
+
import { createMatAlgo03xDSf } from '../../type/matrix/utils/matAlgo03xDSf.js';
|
|
5
|
+
import { createMatAlgo12xSfs } from '../../type/matrix/utils/matAlgo12xSfs.js';
|
|
6
|
+
import { createMatAlgo05xSfSf } from '../../type/matrix/utils/matAlgo05xSfSf.js';
|
|
7
|
+
import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
|
|
8
|
+
import { createCompareUnits } from './compareUnits.js';
|
|
9
9
|
var name = 'compare';
|
|
10
10
|
var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];
|
|
11
11
|
export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
@@ -18,21 +18,22 @@ export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
18
18
|
Fraction,
|
|
19
19
|
DenseMatrix
|
|
20
20
|
} = _ref;
|
|
21
|
-
var
|
|
21
|
+
var matAlgo03xDSf = createMatAlgo03xDSf({
|
|
22
22
|
typed
|
|
23
23
|
});
|
|
24
|
-
var
|
|
24
|
+
var matAlgo05xSfSf = createMatAlgo05xSfSf({
|
|
25
25
|
typed,
|
|
26
26
|
equalScalar
|
|
27
27
|
});
|
|
28
|
-
var
|
|
28
|
+
var matAlgo12xSfs = createMatAlgo12xSfs({
|
|
29
29
|
typed,
|
|
30
30
|
DenseMatrix
|
|
31
31
|
});
|
|
32
|
-
var
|
|
33
|
-
typed
|
|
32
|
+
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
|
|
33
|
+
typed,
|
|
34
|
+
matrix
|
|
34
35
|
});
|
|
35
|
-
var
|
|
36
|
+
var compareUnits = createCompareUnits({
|
|
36
37
|
typed
|
|
37
38
|
});
|
|
38
39
|
/**
|
|
@@ -73,13 +74,13 @@ export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
73
74
|
* 1 when x > y, -1 when x < y, and 0 when x == y.
|
|
74
75
|
*/
|
|
75
76
|
|
|
76
|
-
return typed(name, {
|
|
77
|
+
return typed(name, createCompareNumber({
|
|
78
|
+
typed,
|
|
79
|
+
config
|
|
80
|
+
}), {
|
|
77
81
|
'boolean, boolean': function booleanBoolean(x, y) {
|
|
78
82
|
return x === y ? 0 : x > y ? 1 : -1;
|
|
79
83
|
},
|
|
80
|
-
'number, number': function numberNumber(x, y) {
|
|
81
|
-
return nearlyEqual(x, y, config.epsilon) ? 0 : x > y ? 1 : -1;
|
|
82
|
-
},
|
|
83
84
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
|
|
84
85
|
return bigNearlyEqual(x, y, config.epsilon) ? new BigNumber(0) : new BigNumber(x.cmp(y));
|
|
85
86
|
},
|
|
@@ -88,59 +89,12 @@ export var createCompare = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
|
88
89
|
},
|
|
89
90
|
'Complex, Complex': function ComplexComplex() {
|
|
90
91
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
|
91
|
-
},
|
|
92
|
-
'Unit, Unit': function UnitUnit(x, y) {
|
|
93
|
-
if (!x.equalBase(y)) {
|
|
94
|
-
throw new Error('Cannot compare units with different base');
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return this(x.value, y.value);
|
|
98
|
-
},
|
|
99
|
-
'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
|
|
100
|
-
return algorithm05(x, y, this);
|
|
101
|
-
},
|
|
102
|
-
'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
|
|
103
|
-
return algorithm03(y, x, this, true);
|
|
104
|
-
},
|
|
105
|
-
'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
|
|
106
|
-
return algorithm03(x, y, this, false);
|
|
107
|
-
},
|
|
108
|
-
'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
|
|
109
|
-
return algorithm13(x, y, this);
|
|
110
|
-
},
|
|
111
|
-
'Array, Array': function ArrayArray(x, y) {
|
|
112
|
-
// use matrix implementation
|
|
113
|
-
return this(matrix(x), matrix(y)).valueOf();
|
|
114
|
-
},
|
|
115
|
-
'Array, Matrix': function ArrayMatrix(x, y) {
|
|
116
|
-
// use matrix implementation
|
|
117
|
-
return this(matrix(x), y);
|
|
118
|
-
},
|
|
119
|
-
'Matrix, Array': function MatrixArray(x, y) {
|
|
120
|
-
// use matrix implementation
|
|
121
|
-
return this(x, matrix(y));
|
|
122
|
-
},
|
|
123
|
-
'SparseMatrix, any': function SparseMatrixAny(x, y) {
|
|
124
|
-
return algorithm12(x, y, this, false);
|
|
125
|
-
},
|
|
126
|
-
'DenseMatrix, any': function DenseMatrixAny(x, y) {
|
|
127
|
-
return algorithm14(x, y, this, false);
|
|
128
|
-
},
|
|
129
|
-
'any, SparseMatrix': function anySparseMatrix(x, y) {
|
|
130
|
-
return algorithm12(y, x, this, true);
|
|
131
|
-
},
|
|
132
|
-
'any, DenseMatrix': function anyDenseMatrix(x, y) {
|
|
133
|
-
return algorithm14(y, x, this, true);
|
|
134
|
-
},
|
|
135
|
-
'Array, any': function ArrayAny(x, y) {
|
|
136
|
-
// use matrix implementation
|
|
137
|
-
return algorithm14(matrix(x), y, this, false).valueOf();
|
|
138
|
-
},
|
|
139
|
-
'any, Array': function anyArray(x, y) {
|
|
140
|
-
// use matrix implementation
|
|
141
|
-
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
142
92
|
}
|
|
143
|
-
}
|
|
93
|
+
}, compareUnits, matrixAlgorithmSuite({
|
|
94
|
+
SS: matAlgo05xSfSf,
|
|
95
|
+
DS: matAlgo03xDSf,
|
|
96
|
+
Ss: matAlgo12xSfs
|
|
97
|
+
}));
|
|
144
98
|
});
|
|
145
99
|
export var createCompareNumber = /* #__PURE__ */factory(name, ['typed', 'config'], _ref2 => {
|
|
146
100
|
var {
|
|
@@ -79,75 +79,79 @@ export var createCompareNatural = /* #__PURE__ */factory(name, dependencies, _re
|
|
|
79
79
|
*/
|
|
80
80
|
|
|
81
81
|
return typed(name, {
|
|
82
|
-
'any, any':
|
|
83
|
-
|
|
84
|
-
var typeY = typeOf(y);
|
|
85
|
-
var c; // numeric types
|
|
82
|
+
'any, any': _compareNatural
|
|
83
|
+
}); // just to check # args
|
|
86
84
|
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
function _compareNatural(x, y) {
|
|
86
|
+
var typeX = typeOf(x);
|
|
87
|
+
var typeY = typeOf(y);
|
|
88
|
+
var c; // numeric types
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return c > 0 ? 1 : -1; // return a number
|
|
93
|
-
} else {
|
|
94
|
-
return naturalSort(typeX, typeY);
|
|
95
|
-
}
|
|
96
|
-
} // matrix types
|
|
90
|
+
if ((typeX === 'number' || typeX === 'BigNumber' || typeX === 'Fraction') && (typeY === 'number' || typeY === 'BigNumber' || typeY === 'Fraction')) {
|
|
91
|
+
c = compare(x, y);
|
|
97
92
|
|
|
93
|
+
if (c.toString() !== '0') {
|
|
94
|
+
// c can be number, BigNumber, or Fraction
|
|
95
|
+
return c > 0 ? 1 : -1; // return a number
|
|
96
|
+
} else {
|
|
97
|
+
return naturalSort(typeX, typeY);
|
|
98
|
+
}
|
|
99
|
+
} // matrix types
|
|
98
100
|
|
|
99
|
-
if (typeX === 'Array' || typeX === 'Matrix' || typeY === 'Array' || typeY === 'Matrix') {
|
|
100
|
-
c = compareMatricesAndArrays(this, x, y);
|
|
101
101
|
|
|
102
|
-
|
|
103
|
-
return c;
|
|
104
|
-
} else {
|
|
105
|
-
return naturalSort(typeX, typeY);
|
|
106
|
-
}
|
|
107
|
-
} // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'
|
|
102
|
+
var matTypes = ['Array', 'DenseMatrix', 'SparseMatrix'];
|
|
108
103
|
|
|
104
|
+
if (matTypes.includes(typeX) || matTypes.includes(typeY)) {
|
|
105
|
+
c = compareMatricesAndArrays(_compareNatural, x, y);
|
|
109
106
|
|
|
110
|
-
if (
|
|
107
|
+
if (c !== 0) {
|
|
108
|
+
return c;
|
|
109
|
+
} else {
|
|
111
110
|
return naturalSort(typeX, typeY);
|
|
112
111
|
}
|
|
112
|
+
} // in case of different types, order by name of type, i.e. 'BigNumber' < 'Complex'
|
|
113
113
|
|
|
114
|
-
if (typeX === 'Complex') {
|
|
115
|
-
return compareComplexNumbers(x, y);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (typeX === 'Unit') {
|
|
119
|
-
if (x.equalBase(y)) {
|
|
120
|
-
return this(x.value, y.value);
|
|
121
|
-
} // compare by units
|
|
122
114
|
|
|
115
|
+
if (typeX !== typeY) {
|
|
116
|
+
return naturalSort(typeX, typeY);
|
|
117
|
+
}
|
|
123
118
|
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
if (typeX === 'Complex') {
|
|
120
|
+
return compareComplexNumbers(x, y);
|
|
121
|
+
}
|
|
126
122
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
123
|
+
if (typeX === 'Unit') {
|
|
124
|
+
if (x.equalBase(y)) {
|
|
125
|
+
return _compareNatural(x.value, y.value);
|
|
126
|
+
} // compare by units
|
|
130
127
|
|
|
131
|
-
if (typeX === 'string') {
|
|
132
|
-
return naturalSort(x, y);
|
|
133
|
-
}
|
|
134
128
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
129
|
+
return compareArrays(_compareNatural, x.formatUnits(), y.formatUnits());
|
|
130
|
+
}
|
|
138
131
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
132
|
+
if (typeX === 'boolean') {
|
|
133
|
+
return compareBooleans(x, y);
|
|
134
|
+
}
|
|
142
135
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
136
|
+
if (typeX === 'string') {
|
|
137
|
+
return naturalSort(x, y);
|
|
138
|
+
}
|
|
146
139
|
|
|
140
|
+
if (typeX === 'Object') {
|
|
141
|
+
return compareObjects(_compareNatural, x, y);
|
|
142
|
+
}
|
|
147
143
|
|
|
148
|
-
|
|
144
|
+
if (typeX === 'null') {
|
|
145
|
+
return 0;
|
|
149
146
|
}
|
|
150
|
-
|
|
147
|
+
|
|
148
|
+
if (typeX === 'undefined') {
|
|
149
|
+
return 0;
|
|
150
|
+
} // this should not occur...
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
throw new TypeError('Unsupported type of value "' + typeX + '"');
|
|
154
|
+
}
|
|
151
155
|
/**
|
|
152
156
|
* Compare mixed matrix/array types, by converting to same-shaped array.
|
|
153
157
|
* This comparator is non-deterministic regarding input types.
|
|
@@ -156,6 +160,7 @@ export var createCompareNatural = /* #__PURE__ */factory(name, dependencies, _re
|
|
|
156
160
|
* @returns {number} Returns the comparison result: -1, 0, or 1
|
|
157
161
|
*/
|
|
158
162
|
|
|
163
|
+
|
|
159
164
|
function compareMatricesAndArrays(compareNatural, x, y) {
|
|
160
165
|
if (isSparseMatrix(x) && isSparseMatrix(y)) {
|
|
161
166
|
return compareArrays(compareNatural, x.toJSON().values, y.toJSON().values);
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { compareText as _compareText } from '../../utils/string.js';
|
|
2
2
|
import { factory } from '../../utils/factory.js';
|
|
3
|
-
import {
|
|
4
|
-
import { createAlgorithm13 } from '../../type/matrix/utils/algorithm13.js';
|
|
3
|
+
import { createMatrixAlgorithmSuite } from '../../type/matrix/utils/matrixAlgorithmSuite.js';
|
|
5
4
|
var name = 'compareText';
|
|
6
5
|
var dependencies = ['typed', 'matrix'];
|
|
6
|
+
_compareText.signature = 'any, any';
|
|
7
7
|
export var createCompareText = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
8
8
|
var {
|
|
9
9
|
typed,
|
|
10
10
|
matrix
|
|
11
11
|
} = _ref;
|
|
12
|
-
var
|
|
13
|
-
typed
|
|
14
|
-
|
|
15
|
-
var algorithm14 = createAlgorithm14({
|
|
16
|
-
typed
|
|
12
|
+
var matrixAlgorithmSuite = createMatrixAlgorithmSuite({
|
|
13
|
+
typed,
|
|
14
|
+
matrix
|
|
17
15
|
});
|
|
18
16
|
/**
|
|
19
17
|
* Compare two strings lexically. Comparison is case sensitive.
|
|
@@ -44,44 +42,14 @@ export var createCompareText = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
44
42
|
* 1 when x > y, -1 when x < y, and 0 when x == y.
|
|
45
43
|
*/
|
|
46
44
|
|
|
47
|
-
return typed(name, {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
},
|
|
52
|
-
'Array, Array': function ArrayArray(x, y) {
|
|
53
|
-
// use matrix implementation
|
|
54
|
-
return this(matrix(x), matrix(y)).valueOf();
|
|
55
|
-
},
|
|
56
|
-
'Array, Matrix': function ArrayMatrix(x, y) {
|
|
57
|
-
// use matrix implementation
|
|
58
|
-
return this(matrix(x), y);
|
|
59
|
-
},
|
|
60
|
-
'Matrix, Array': function MatrixArray(x, y) {
|
|
61
|
-
// use matrix implementation
|
|
62
|
-
return this(x, matrix(y));
|
|
63
|
-
},
|
|
64
|
-
'DenseMatrix, any': function DenseMatrixAny(x, y) {
|
|
65
|
-
return algorithm14(x, y, _compareText, false);
|
|
66
|
-
},
|
|
67
|
-
'any, DenseMatrix': function anyDenseMatrix(x, y) {
|
|
68
|
-
return algorithm14(y, x, _compareText, true);
|
|
69
|
-
},
|
|
70
|
-
'Array, any': function ArrayAny(x, y) {
|
|
71
|
-
// use matrix implementation
|
|
72
|
-
return algorithm14(matrix(x), y, _compareText, false).valueOf();
|
|
73
|
-
},
|
|
74
|
-
'any, Array': function anyArray(x, y) {
|
|
75
|
-
// use matrix implementation
|
|
76
|
-
return algorithm14(matrix(y), x, _compareText, true).valueOf();
|
|
77
|
-
}
|
|
78
|
-
});
|
|
45
|
+
return typed(name, _compareText, matrixAlgorithmSuite({
|
|
46
|
+
elop: _compareText,
|
|
47
|
+
Ds: true
|
|
48
|
+
}));
|
|
79
49
|
});
|
|
80
50
|
export var createCompareTextNumber = /* #__PURE__ */factory(name, ['typed'], _ref2 => {
|
|
81
51
|
var {
|
|
82
52
|
typed
|
|
83
53
|
} = _ref2;
|
|
84
|
-
return typed(name,
|
|
85
|
-
'any, any': _compareText
|
|
86
|
-
});
|
|
54
|
+
return typed(name, _compareText);
|
|
87
55
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { factory } from '../../utils/factory.js';
|
|
2
|
+
export var createCompareUnits = /* #__PURE__ */factory('compareUnits', ['typed'], _ref => {
|
|
3
|
+
var {
|
|
4
|
+
typed
|
|
5
|
+
} = _ref;
|
|
6
|
+
return {
|
|
7
|
+
'Unit, Unit': typed.referToSelf(self => (x, y) => {
|
|
8
|
+
if (!x.equalBase(y)) {
|
|
9
|
+
throw new Error('Cannot compare units with different base');
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return typed.find(self, [x.valueType(), y.valueType()])(x.value, y.value);
|
|
13
|
+
})
|
|
14
|
+
};
|
|
15
|
+
});
|