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
|
@@ -7,7 +7,7 @@ exports.createMatrixFromRows = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _factory = require("../../utils/factory.js");
|
|
9
9
|
|
|
10
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it
|
|
10
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
11
11
|
|
|
12
12
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
13
13
|
|
|
@@ -38,6 +38,7 @@ var createOnes = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
38
38
|
*
|
|
39
39
|
* Examples:
|
|
40
40
|
*
|
|
41
|
+
* math.ones() // returns []
|
|
41
42
|
* math.ones(3) // returns [1, 1, 1]
|
|
42
43
|
* math.ones(3, 2) // returns [[1, 1], [1, 1], [1, 1]]
|
|
43
44
|
* math.ones(3, 2, 'dense') // returns Dense Matrix [[1, 1], [1, 1], [1, 1]]
|
|
@@ -49,7 +50,7 @@ var createOnes = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
|
49
50
|
*
|
|
50
51
|
* zeros, identity, size, range
|
|
51
52
|
*
|
|
52
|
-
* @param {...number | Array} size The size of each dimension of the matrix
|
|
53
|
+
* @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix
|
|
53
54
|
* @param {string} [format] The Matrix storage format
|
|
54
55
|
*
|
|
55
56
|
* @return {Array | Matrix | number} A matrix filled with ones
|
|
@@ -14,12 +14,13 @@ var _array = require("../../utils/array.js");
|
|
|
14
14
|
var _factory = require("../../utils/factory.js");
|
|
15
15
|
|
|
16
16
|
var name = 'sqrtm';
|
|
17
|
-
var dependencies = ['typed', 'abs', 'add', 'multiply', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];
|
|
17
|
+
var dependencies = ['typed', 'abs', 'add', 'multiply', 'map', 'sqrt', 'subtract', 'inv', 'size', 'max', 'identity'];
|
|
18
18
|
var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
19
19
|
var typed = _ref.typed,
|
|
20
20
|
abs = _ref.abs,
|
|
21
21
|
add = _ref.add,
|
|
22
22
|
multiply = _ref.multiply,
|
|
23
|
+
map = _ref.map,
|
|
23
24
|
sqrt = _ref.sqrt,
|
|
24
25
|
subtract = _ref.subtract,
|
|
25
26
|
inv = _ref.inv,
|
|
@@ -88,7 +89,7 @@ var createSqrtm = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
88
89
|
case 1:
|
|
89
90
|
// Single element Array | Matrix
|
|
90
91
|
if (size[0] === 1) {
|
|
91
|
-
return
|
|
92
|
+
return map(A, sqrt);
|
|
92
93
|
} else {
|
|
93
94
|
throw new RangeError('Matrix must be square ' + '(size: ' + (0, _string.format)(size) + ')');
|
|
94
95
|
}
|
|
@@ -39,59 +39,58 @@ var createTranspose = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
39
39
|
* @param {Array | Matrix} x Matrix to be transposed
|
|
40
40
|
* @return {Array | Matrix} The transposed matrix
|
|
41
41
|
*/
|
|
42
|
-
return typed(
|
|
42
|
+
return typed(name, {
|
|
43
43
|
Array: function Array(x) {
|
|
44
|
-
|
|
45
|
-
return this(matrix(x)).valueOf();
|
|
44
|
+
return transposeMatrix(matrix(x)).valueOf();
|
|
46
45
|
},
|
|
47
|
-
Matrix:
|
|
48
|
-
|
|
49
|
-
var size = x.size(); // result
|
|
50
|
-
|
|
51
|
-
var c; // process dimensions
|
|
52
|
-
|
|
53
|
-
switch (size.length) {
|
|
54
|
-
case 1:
|
|
55
|
-
// vector
|
|
56
|
-
c = x.clone();
|
|
57
|
-
break;
|
|
58
|
-
|
|
59
|
-
case 2:
|
|
60
|
-
{
|
|
61
|
-
// rows and columns
|
|
62
|
-
var rows = size[0];
|
|
63
|
-
var columns = size[1]; // check columns
|
|
64
|
-
|
|
65
|
-
if (columns === 0) {
|
|
66
|
-
// throw exception
|
|
67
|
-
throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + (0, _string.format)(size) + ')');
|
|
68
|
-
} // process storage format
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
switch (x.storage()) {
|
|
72
|
-
case 'dense':
|
|
73
|
-
c = _denseTranspose(x, rows, columns);
|
|
74
|
-
break;
|
|
75
|
-
|
|
76
|
-
case 'sparse':
|
|
77
|
-
c = _sparseTranspose(x, rows, columns);
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
break;
|
|
46
|
+
Matrix: transposeMatrix,
|
|
47
|
+
any: _object.clone // scalars
|
|
82
48
|
|
|
83
|
-
|
|
84
|
-
// multi dimensional
|
|
85
|
-
throw new RangeError('Matrix must be a vector or two dimensional (size: ' + (0, _string.format)(this._size) + ')');
|
|
86
|
-
}
|
|
49
|
+
});
|
|
87
50
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
//
|
|
91
|
-
|
|
92
|
-
|
|
51
|
+
function transposeMatrix(x) {
|
|
52
|
+
// matrix size
|
|
53
|
+
var size = x.size(); // result
|
|
54
|
+
|
|
55
|
+
var c; // process dimensions
|
|
56
|
+
|
|
57
|
+
switch (size.length) {
|
|
58
|
+
case 1:
|
|
59
|
+
// vector
|
|
60
|
+
c = x.clone();
|
|
61
|
+
break;
|
|
62
|
+
|
|
63
|
+
case 2:
|
|
64
|
+
{
|
|
65
|
+
// rows and columns
|
|
66
|
+
var rows = size[0];
|
|
67
|
+
var columns = size[1]; // check columns
|
|
68
|
+
|
|
69
|
+
if (columns === 0) {
|
|
70
|
+
// throw exception
|
|
71
|
+
throw new RangeError('Cannot transpose a 2D matrix with no columns (size: ' + (0, _string.format)(size) + ')');
|
|
72
|
+
} // process storage format
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
switch (x.storage()) {
|
|
76
|
+
case 'dense':
|
|
77
|
+
c = _denseTranspose(x, rows, columns);
|
|
78
|
+
break;
|
|
79
|
+
|
|
80
|
+
case 'sparse':
|
|
81
|
+
c = _sparseTranspose(x, rows, columns);
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
|
|
87
|
+
default:
|
|
88
|
+
// multi dimensional
|
|
89
|
+
throw new RangeError('Matrix must be a vector or two dimensional (size: ' + (0, _string.format)(size) + ')');
|
|
93
90
|
}
|
|
94
|
-
|
|
91
|
+
|
|
92
|
+
return c;
|
|
93
|
+
}
|
|
95
94
|
|
|
96
95
|
function _denseTranspose(m, rows, columns) {
|
|
97
96
|
// matrix array
|
|
@@ -36,6 +36,7 @@ var createZeros = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
36
36
|
*
|
|
37
37
|
* Examples:
|
|
38
38
|
*
|
|
39
|
+
* math.zeros() // returns []
|
|
39
40
|
* math.zeros(3) // returns [0, 0, 0]
|
|
40
41
|
* math.zeros(3, 2) // returns [[0, 0], [0, 0], [0, 0]]
|
|
41
42
|
* math.zeros(3, 'dense') // returns [0, 0, 0]
|
|
@@ -47,7 +48,7 @@ var createZeros = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
47
48
|
*
|
|
48
49
|
* ones, identity, size, range
|
|
49
50
|
*
|
|
50
|
-
* @param {...number | Array} size The size of each dimension of the matrix
|
|
51
|
+
* @param {...(number|BigNumber) | Array} size The size of each dimension of the matrix
|
|
51
52
|
* @param {string} [format] The Matrix storage format
|
|
52
53
|
*
|
|
53
54
|
* @return {Array | Matrix} A matrix filled with zeros
|
|
@@ -52,9 +52,11 @@ var createFactorial = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
|
52
52
|
|
|
53
53
|
return gamma(n.plus(1));
|
|
54
54
|
},
|
|
55
|
-
'Array | Matrix': function
|
|
56
|
-
return
|
|
57
|
-
|
|
55
|
+
'Array | Matrix': typed.referToSelf(function (self) {
|
|
56
|
+
return function (n) {
|
|
57
|
+
return (0, _collection.deepMap)(n, self);
|
|
58
|
+
};
|
|
59
|
+
})
|
|
58
60
|
});
|
|
59
61
|
});
|
|
60
62
|
exports.createFactorial = createFactorial;
|
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.createGamma = void 0;
|
|
7
7
|
|
|
8
|
-
var _collection = require("../../utils/collection.js");
|
|
9
|
-
|
|
10
8
|
var _factory = require("../../utils/factory.js");
|
|
11
9
|
|
|
12
10
|
var _index = require("../../plain/number/index.js");
|
|
@@ -19,13 +17,14 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
19
17
|
multiplyScalar = _ref.multiplyScalar,
|
|
20
18
|
pow = _ref.pow,
|
|
21
19
|
_BigNumber = _ref.BigNumber,
|
|
22
|
-
|
|
20
|
+
Complex = _ref.Complex;
|
|
23
21
|
|
|
24
22
|
/**
|
|
25
23
|
* Compute the gamma function of a value using Lanczos approximation for
|
|
26
24
|
* small values, and an extended Stirling approximation for large values.
|
|
27
25
|
*
|
|
28
|
-
*
|
|
26
|
+
* To avoid confusion with the matrix Gamma function, this function does
|
|
27
|
+
* not apply to matrices.
|
|
29
28
|
*
|
|
30
29
|
* Syntax:
|
|
31
30
|
*
|
|
@@ -41,51 +40,53 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
41
40
|
*
|
|
42
41
|
* combinations, factorial, permutations
|
|
43
42
|
*
|
|
44
|
-
* @param {number |
|
|
45
|
-
* @return {number |
|
|
43
|
+
* @param {number | BigNumber | Complex} n A real or complex number
|
|
44
|
+
* @return {number | BigNumber | Complex} The gamma of `n`
|
|
46
45
|
*/
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
} // Lanczos approximation doesn't work well with real part lower than 0.5
|
|
53
|
-
// So reflection formula is required
|
|
46
|
+
function gammaComplex(n) {
|
|
47
|
+
if (n.im === 0) {
|
|
48
|
+
return (0, _index.gammaNumber)(n.re);
|
|
49
|
+
} // Lanczos approximation doesn't work well with real part lower than 0.5
|
|
50
|
+
// So reflection formula is required
|
|
54
51
|
|
|
55
52
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
53
|
+
if (n.re < 0.5) {
|
|
54
|
+
// Euler's reflection formula
|
|
55
|
+
// gamma(1-z) * gamma(z) = PI / sin(PI * z)
|
|
56
|
+
// real part of Z should not be integer [sin(PI) == 0 -> 1/0 - undefined]
|
|
57
|
+
// thanks to imperfect sin implementation sin(PI * n) != 0
|
|
58
|
+
// we can safely use it anyway
|
|
59
|
+
var _t = new Complex(1 - n.re, -n.im);
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
var r = new Complex(Math.PI * n.re, Math.PI * n.im);
|
|
62
|
+
return new Complex(Math.PI).div(r.sin()).div(gammaComplex(_t));
|
|
63
|
+
} // Lanczos approximation
|
|
64
|
+
// z -= 1
|
|
68
65
|
|
|
69
66
|
|
|
70
|
-
|
|
67
|
+
n = new Complex(n.re - 1, n.im); // x = gammaPval[0]
|
|
71
68
|
|
|
72
|
-
|
|
69
|
+
var x = new Complex(_index.gammaP[0], 0); // for (i, gammaPval) in enumerate(gammaP):
|
|
73
70
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
for (var i = 1; i < _index.gammaP.length; ++i) {
|
|
72
|
+
// x += gammaPval / (z + i)
|
|
73
|
+
var gammaPval = new Complex(_index.gammaP[i], 0);
|
|
74
|
+
x = x.add(gammaPval.div(n.add(i)));
|
|
75
|
+
} // t = z + gammaG + 0.5
|
|
79
76
|
|
|
80
77
|
|
|
81
|
-
|
|
78
|
+
var t = new Complex(n.re + _index.gammaG + 0.5, n.im); // y = sqrt(2 * pi) * t ** (z + 0.5) * exp(-t) * x
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
var twoPiSqrt = Math.sqrt(2 * Math.PI);
|
|
81
|
+
var tpow = t.pow(n.add(0.5));
|
|
82
|
+
var expt = t.neg().exp(); // y = [x] * [sqrt(2 * pi)] * [t ** (z + 0.5)] * [exp(-t)]
|
|
86
83
|
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
return x.mul(twoPiSqrt).mul(tpow).mul(expt);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return typed(name, {
|
|
88
|
+
number: _index.gammaNumber,
|
|
89
|
+
Complex: gammaComplex,
|
|
89
90
|
BigNumber: function BigNumber(n) {
|
|
90
91
|
if (n.isInteger()) {
|
|
91
92
|
return n.isNegative() || n.isZero() ? new _BigNumber(Infinity) : bigFactorial(n.minus(1));
|
|
@@ -96,9 +97,6 @@ var createGamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
|
96
97
|
}
|
|
97
98
|
|
|
98
99
|
throw new Error('Integer BigNumber expected');
|
|
99
|
-
},
|
|
100
|
-
'Array | Matrix': function ArrayMatrix(n) {
|
|
101
|
-
return (0, _collection.deepMap)(n, this);
|
|
102
100
|
}
|
|
103
101
|
});
|
|
104
102
|
/**
|
|
@@ -8,13 +8,14 @@ exports.createKldivergence = void 0;
|
|
|
8
8
|
var _factory = require("../../utils/factory.js");
|
|
9
9
|
|
|
10
10
|
var name = 'kldivergence';
|
|
11
|
-
var dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'dotDivide', 'log', 'isNumeric'];
|
|
11
|
+
var dependencies = ['typed', 'matrix', 'divide', 'sum', 'multiply', 'map', 'dotDivide', 'log', 'isNumeric'];
|
|
12
12
|
var createKldivergence = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
13
13
|
var typed = _ref.typed,
|
|
14
14
|
matrix = _ref.matrix,
|
|
15
15
|
divide = _ref.divide,
|
|
16
16
|
sum = _ref.sum,
|
|
17
17
|
multiply = _ref.multiply,
|
|
18
|
+
map = _ref.map,
|
|
18
19
|
dotDivide = _ref.dotDivide,
|
|
19
20
|
log = _ref.log,
|
|
20
21
|
isNumeric = _ref.isNumeric;
|
|
@@ -81,7 +82,9 @@ var createKldivergence = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
|
81
82
|
|
|
82
83
|
var qnorm = divide(q, sum(q));
|
|
83
84
|
var pnorm = divide(p, sum(p));
|
|
84
|
-
var result = sum(multiply(qnorm,
|
|
85
|
+
var result = sum(multiply(qnorm, map(dotDivide(qnorm, pnorm), function (x) {
|
|
86
|
+
return log(x);
|
|
87
|
+
})));
|
|
85
88
|
|
|
86
89
|
if (isNumeric(result)) {
|
|
87
90
|
return result;
|
|
@@ -19,7 +19,7 @@ var _number = require("../../utils/number.js");
|
|
|
19
19
|
var name = 'lgamma';
|
|
20
20
|
var dependencies = ['Complex', 'typed'];
|
|
21
21
|
var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
|
22
|
-
var
|
|
22
|
+
var Complex = _ref.Complex,
|
|
23
23
|
typed = _ref.typed;
|
|
24
24
|
// Stirling series is non-convergent, we need to use the recurrence `lgamma(z) = lgamma(z+1) - log z` to get
|
|
25
25
|
// sufficient accuracy.
|
|
@@ -65,38 +65,38 @@ var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
65
65
|
|
|
66
66
|
return typed(name, {
|
|
67
67
|
number: _index.lgammaNumber,
|
|
68
|
-
Complex:
|
|
69
|
-
var TWOPI = 6.2831853071795864769252842; // 2*pi
|
|
70
|
-
|
|
71
|
-
var LOGPI = 1.1447298858494001741434262; // log(pi)
|
|
72
|
-
|
|
73
|
-
var REFLECTION = 0.1;
|
|
74
|
-
|
|
75
|
-
if (n.isNaN()) {
|
|
76
|
-
return new _Complex(NaN, NaN);
|
|
77
|
-
} else if (n.im === 0) {
|
|
78
|
-
return new _Complex((0, _index.lgammaNumber)(n.re), 0);
|
|
79
|
-
} else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
|
|
80
|
-
return lgammaStirling(n);
|
|
81
|
-
} else if (n.re <= REFLECTION) {
|
|
82
|
-
// Reflection formula. see Proposition 3.1 in [1]
|
|
83
|
-
var tmp = (0, _number.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,
|
|
84
|
-
// causing the computation results to be less accurate than the lgamma of real numbers
|
|
85
|
-
|
|
86
|
-
var a = n.mul(Math.PI).sin().log();
|
|
87
|
-
var b = this(new _Complex(1 - n.re, -n.im));
|
|
88
|
-
return new _Complex(LOGPI, tmp).sub(a).sub(b);
|
|
89
|
-
} else if (n.im >= 0) {
|
|
90
|
-
return lgammaRecurrence(n);
|
|
91
|
-
} else {
|
|
92
|
-
return lgammaRecurrence(n.conjugate()).conjugate();
|
|
93
|
-
}
|
|
94
|
-
},
|
|
68
|
+
Complex: lgammaComplex,
|
|
95
69
|
BigNumber: function BigNumber() {
|
|
96
70
|
throw new Error("mathjs doesn't yet provide an implementation of the algorithm lgamma for BigNumber");
|
|
97
71
|
}
|
|
98
72
|
});
|
|
99
73
|
|
|
74
|
+
function lgammaComplex(n) {
|
|
75
|
+
var TWOPI = 6.2831853071795864769252842; // 2*pi
|
|
76
|
+
|
|
77
|
+
var LOGPI = 1.1447298858494001741434262; // log(pi)
|
|
78
|
+
|
|
79
|
+
var REFLECTION = 0.1;
|
|
80
|
+
|
|
81
|
+
if (n.isNaN()) {
|
|
82
|
+
return new Complex(NaN, NaN);
|
|
83
|
+
} else if (n.im === 0) {
|
|
84
|
+
return new Complex((0, _index.lgammaNumber)(n.re), 0);
|
|
85
|
+
} else if (n.re >= SMALL_RE || Math.abs(n.im) >= SMALL_IM) {
|
|
86
|
+
return lgammaStirling(n);
|
|
87
|
+
} else if (n.re <= REFLECTION) {
|
|
88
|
+
// Reflection formula. see Proposition 3.1 in [1]
|
|
89
|
+
var tmp = (0, _number.copysign)(TWOPI, n.im) * Math.floor(0.5 * n.re + 0.25);
|
|
90
|
+
var a = n.mul(Math.PI).sin().log();
|
|
91
|
+
var b = lgammaComplex(new Complex(1 - n.re, -n.im));
|
|
92
|
+
return new Complex(LOGPI, tmp).sub(a).sub(b);
|
|
93
|
+
} else if (n.im >= 0) {
|
|
94
|
+
return lgammaRecurrence(n);
|
|
95
|
+
} else {
|
|
96
|
+
return lgammaRecurrence(n.conjugate()).conjugate();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
100
|
function lgammaStirling(z) {
|
|
101
101
|
// formula ref in [2]
|
|
102
102
|
// computation ref:
|
|
@@ -106,7 +106,7 @@ var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
106
106
|
// => (x - 0.5) * log(x) - x + log(2PI) / 2
|
|
107
107
|
var leftPart = z.sub(0.5).mul(z.log()).sub(z).add(_index.lnSqrt2PI); // right part
|
|
108
108
|
|
|
109
|
-
var rz = new
|
|
109
|
+
var rz = new Complex(1, 0).div(z);
|
|
110
110
|
var rzz = rz.div(z);
|
|
111
111
|
var a = coeffs[0];
|
|
112
112
|
var b = coeffs[1];
|
|
@@ -140,7 +140,7 @@ var createLgamma = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
|
140
140
|
z = z.add(1);
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
return lgammaStirling(z).sub(shiftprod.log()).sub(new
|
|
143
|
+
return lgammaStirling(z).sub(shiftprod.log()).sub(new Complex(0, signflips * 2 * Math.PI * 1));
|
|
144
144
|
}
|
|
145
145
|
});
|
|
146
146
|
exports.createLgamma = createLgamma;
|
|
@@ -9,13 +9,13 @@ exports.createRng = createRng;
|
|
|
9
9
|
|
|
10
10
|
var _seedrandom = _interopRequireDefault(require("seedrandom"));
|
|
11
11
|
|
|
12
|
-
var singletonRandom = /* #__PURE__ */(0, _seedrandom
|
|
12
|
+
var singletonRandom = /* #__PURE__ */(0, _seedrandom["default"])(Date.now());
|
|
13
13
|
|
|
14
14
|
function createRng(randomSeed) {
|
|
15
15
|
var random; // create a new random generator with given seed
|
|
16
16
|
|
|
17
17
|
function setSeed(seed) {
|
|
18
|
-
random = seed === null ? singletonRandom : (0, _seedrandom
|
|
18
|
+
random = seed === null ? singletonRandom : (0, _seedrandom["default"])(String(seed));
|
|
19
19
|
} // initialize a seeded pseudo random number generator with config's random seed
|
|
20
20
|
|
|
21
21
|
|
|
@@ -11,15 +11,15 @@ var _number = require("../../utils/number.js");
|
|
|
11
11
|
|
|
12
12
|
var _factory = require("../../utils/factory.js");
|
|
13
13
|
|
|
14
|
-
var
|
|
14
|
+
var _matAlgo03xDSf = require("../../type/matrix/utils/matAlgo03xDSf.js");
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _matAlgo12xSfs = require("../../type/matrix/utils/matAlgo12xSfs.js");
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _matAlgo05xSfSf = require("../../type/matrix/utils/matAlgo05xSfSf.js");
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _matrixAlgorithmSuite = require("../../type/matrix/utils/matrixAlgorithmSuite.js");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _compareUnits = require("./compareUnits.js");
|
|
23
23
|
|
|
24
24
|
var name = 'compare';
|
|
25
25
|
var dependencies = ['typed', 'config', 'matrix', 'equalScalar', 'BigNumber', 'Fraction', 'DenseMatrix'];
|
|
@@ -31,21 +31,22 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
|
31
31
|
BigNumber = _ref.BigNumber,
|
|
32
32
|
Fraction = _ref.Fraction,
|
|
33
33
|
DenseMatrix = _ref.DenseMatrix;
|
|
34
|
-
var
|
|
34
|
+
var matAlgo03xDSf = (0, _matAlgo03xDSf.createMatAlgo03xDSf)({
|
|
35
35
|
typed: typed
|
|
36
36
|
});
|
|
37
|
-
var
|
|
37
|
+
var matAlgo05xSfSf = (0, _matAlgo05xSfSf.createMatAlgo05xSfSf)({
|
|
38
38
|
typed: typed,
|
|
39
39
|
equalScalar: equalScalar
|
|
40
40
|
});
|
|
41
|
-
var
|
|
41
|
+
var matAlgo12xSfs = (0, _matAlgo12xSfs.createMatAlgo12xSfs)({
|
|
42
42
|
typed: typed,
|
|
43
43
|
DenseMatrix: DenseMatrix
|
|
44
44
|
});
|
|
45
|
-
var
|
|
46
|
-
typed: typed
|
|
45
|
+
var matrixAlgorithmSuite = (0, _matrixAlgorithmSuite.createMatrixAlgorithmSuite)({
|
|
46
|
+
typed: typed,
|
|
47
|
+
matrix: matrix
|
|
47
48
|
});
|
|
48
|
-
var
|
|
49
|
+
var compareUnits = (0, _compareUnits.createCompareUnits)({
|
|
49
50
|
typed: typed
|
|
50
51
|
});
|
|
51
52
|
/**
|
|
@@ -86,13 +87,13 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
|
86
87
|
* 1 when x > y, -1 when x < y, and 0 when x == y.
|
|
87
88
|
*/
|
|
88
89
|
|
|
89
|
-
return typed(name, {
|
|
90
|
+
return typed(name, createCompareNumber({
|
|
91
|
+
typed: typed,
|
|
92
|
+
config: config
|
|
93
|
+
}), {
|
|
90
94
|
'boolean, boolean': function booleanBoolean(x, y) {
|
|
91
95
|
return x === y ? 0 : x > y ? 1 : -1;
|
|
92
96
|
},
|
|
93
|
-
'number, number': function numberNumber(x, y) {
|
|
94
|
-
return (0, _number.nearlyEqual)(x, y, config.epsilon) ? 0 : x > y ? 1 : -1;
|
|
95
|
-
},
|
|
96
97
|
'BigNumber, BigNumber': function BigNumberBigNumber(x, y) {
|
|
97
98
|
return (0, _nearlyEqual.nearlyEqual)(x, y, config.epsilon) ? new BigNumber(0) : new BigNumber(x.cmp(y));
|
|
98
99
|
},
|
|
@@ -101,59 +102,12 @@ var createCompare = /* #__PURE__ */(0, _factory.factory)(name, dependencies, fun
|
|
|
101
102
|
},
|
|
102
103
|
'Complex, Complex': function ComplexComplex() {
|
|
103
104
|
throw new TypeError('No ordering relation is defined for complex numbers');
|
|
104
|
-
},
|
|
105
|
-
'Unit, Unit': function UnitUnit(x, y) {
|
|
106
|
-
if (!x.equalBase(y)) {
|
|
107
|
-
throw new Error('Cannot compare units with different base');
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return this(x.value, y.value);
|
|
111
|
-
},
|
|
112
|
-
'SparseMatrix, SparseMatrix': function SparseMatrixSparseMatrix(x, y) {
|
|
113
|
-
return algorithm05(x, y, this);
|
|
114
|
-
},
|
|
115
|
-
'SparseMatrix, DenseMatrix': function SparseMatrixDenseMatrix(x, y) {
|
|
116
|
-
return algorithm03(y, x, this, true);
|
|
117
|
-
},
|
|
118
|
-
'DenseMatrix, SparseMatrix': function DenseMatrixSparseMatrix(x, y) {
|
|
119
|
-
return algorithm03(x, y, this, false);
|
|
120
|
-
},
|
|
121
|
-
'DenseMatrix, DenseMatrix': function DenseMatrixDenseMatrix(x, y) {
|
|
122
|
-
return algorithm13(x, y, this);
|
|
123
|
-
},
|
|
124
|
-
'Array, Array': function ArrayArray(x, y) {
|
|
125
|
-
// use matrix implementation
|
|
126
|
-
return this(matrix(x), matrix(y)).valueOf();
|
|
127
|
-
},
|
|
128
|
-
'Array, Matrix': function ArrayMatrix(x, y) {
|
|
129
|
-
// use matrix implementation
|
|
130
|
-
return this(matrix(x), y);
|
|
131
|
-
},
|
|
132
|
-
'Matrix, Array': function MatrixArray(x, y) {
|
|
133
|
-
// use matrix implementation
|
|
134
|
-
return this(x, matrix(y));
|
|
135
|
-
},
|
|
136
|
-
'SparseMatrix, any': function SparseMatrixAny(x, y) {
|
|
137
|
-
return algorithm12(x, y, this, false);
|
|
138
|
-
},
|
|
139
|
-
'DenseMatrix, any': function DenseMatrixAny(x, y) {
|
|
140
|
-
return algorithm14(x, y, this, false);
|
|
141
|
-
},
|
|
142
|
-
'any, SparseMatrix': function anySparseMatrix(x, y) {
|
|
143
|
-
return algorithm12(y, x, this, true);
|
|
144
|
-
},
|
|
145
|
-
'any, DenseMatrix': function anyDenseMatrix(x, y) {
|
|
146
|
-
return algorithm14(y, x, this, true);
|
|
147
|
-
},
|
|
148
|
-
'Array, any': function ArrayAny(x, y) {
|
|
149
|
-
// use matrix implementation
|
|
150
|
-
return algorithm14(matrix(x), y, this, false).valueOf();
|
|
151
|
-
},
|
|
152
|
-
'any, Array': function anyArray(x, y) {
|
|
153
|
-
// use matrix implementation
|
|
154
|
-
return algorithm14(matrix(y), x, this, true).valueOf();
|
|
155
105
|
}
|
|
156
|
-
}
|
|
106
|
+
}, compareUnits, matrixAlgorithmSuite({
|
|
107
|
+
SS: matAlgo05xSfSf,
|
|
108
|
+
DS: matAlgo03xDSf,
|
|
109
|
+
Ss: matAlgo12xSfs
|
|
110
|
+
}));
|
|
157
111
|
});
|
|
158
112
|
exports.createCompare = createCompare;
|
|
159
113
|
var createCompareNumber = /* #__PURE__ */(0, _factory.factory)(name, ['typed', 'config'], function (_ref2) {
|