mathjs 10.1.1 → 10.4.0
Sign up to get free protection for your applications and to get access to all the features.
- package/HISTORY.md +43 -0
- package/docs/expressions/algebra.md +27 -0
- package/docs/expressions/syntax.md +31 -2
- package/docs/reference/functions/abs.md +6 -0
- package/docs/reference/functions/acos.md +6 -0
- package/docs/reference/functions/acosh.md +6 -0
- package/docs/reference/functions/acot.md +6 -0
- package/docs/reference/functions/acoth.md +6 -0
- package/docs/reference/functions/acsc.md +6 -0
- package/docs/reference/functions/acsch.md +6 -0
- package/docs/reference/functions/add.md +6 -0
- package/docs/reference/functions/and.md +6 -0
- package/docs/reference/functions/apply.md +6 -0
- package/docs/reference/functions/arg.md +6 -0
- package/docs/reference/functions/asec.md +6 -0
- package/docs/reference/functions/asech.md +6 -0
- package/docs/reference/functions/asin.md +6 -0
- package/docs/reference/functions/asinh.md +6 -0
- package/docs/reference/functions/atan.md +6 -0
- package/docs/reference/functions/atan2.md +6 -0
- package/docs/reference/functions/atanh.md +6 -0
- package/docs/reference/functions/bellNumbers.md +6 -0
- package/docs/reference/functions/bin.md +6 -0
- package/docs/reference/functions/bitAnd.md +6 -0
- package/docs/reference/functions/bitNot.md +6 -0
- package/docs/reference/functions/bitOr.md +6 -0
- package/docs/reference/functions/bitXor.md +6 -0
- package/docs/reference/functions/catalan.md +6 -0
- package/docs/reference/functions/cbrt.md +6 -0
- package/docs/reference/functions/ceil.md +6 -0
- package/docs/reference/functions/clone.md +6 -0
- package/docs/reference/functions/column.md +6 -0
- package/docs/reference/functions/combinations.md +6 -0
- package/docs/reference/functions/combinationsWithRep.md +6 -0
- package/docs/reference/functions/compare.md +6 -0
- package/docs/reference/functions/compareNatural.md +6 -0
- package/docs/reference/functions/compareText.md +6 -0
- package/docs/reference/functions/compile.md +6 -0
- package/docs/reference/functions/composition.md +6 -0
- package/docs/reference/functions/concat.md +6 -0
- package/docs/reference/functions/conj.md +6 -0
- package/docs/reference/functions/cos.md +6 -0
- package/docs/reference/functions/cosh.md +6 -0
- package/docs/reference/functions/cot.md +6 -0
- package/docs/reference/functions/coth.md +6 -0
- package/docs/reference/functions/count.md +6 -0
- package/docs/reference/functions/cross.md +6 -0
- package/docs/reference/functions/csc.md +6 -0
- package/docs/reference/functions/csch.md +6 -0
- package/docs/reference/functions/ctranspose.md +6 -0
- package/docs/reference/functions/cube.md +6 -0
- package/docs/reference/functions/cumsum.md +57 -0
- package/docs/reference/functions/deepEqual.md +6 -0
- package/docs/reference/functions/derivative.md +6 -0
- package/docs/reference/functions/det.md +6 -0
- package/docs/reference/functions/diag.md +6 -0
- package/docs/reference/functions/diff.md +6 -0
- package/docs/reference/functions/distance.md +6 -0
- package/docs/reference/functions/divide.md +6 -0
- package/docs/reference/functions/dot.md +6 -0
- package/docs/reference/functions/dotDivide.md +6 -0
- package/docs/reference/functions/dotMultiply.md +6 -0
- package/docs/reference/functions/dotPow.md +6 -0
- package/docs/reference/functions/eigs.md +6 -0
- package/docs/reference/functions/equal.md +6 -0
- package/docs/reference/functions/equalText.md +6 -0
- package/docs/reference/functions/erf.md +6 -0
- package/docs/reference/functions/evaluate.md +6 -0
- package/docs/reference/functions/exp.md +6 -0
- package/docs/reference/functions/expm.md +6 -0
- package/docs/reference/functions/expm1.md +6 -0
- package/docs/reference/functions/factorial.md +6 -0
- package/docs/reference/functions/filter.md +6 -0
- package/docs/reference/functions/fix.md +6 -0
- package/docs/reference/functions/flatten.md +6 -0
- package/docs/reference/functions/floor.md +6 -0
- package/docs/reference/functions/forEach.md +6 -0
- package/docs/reference/functions/format.md +7 -1
- package/docs/reference/functions/gamma.md +6 -0
- package/docs/reference/functions/gcd.md +6 -0
- package/docs/reference/functions/getMatrixDataType.md +6 -0
- package/docs/reference/functions/hasNumericValue.md +6 -0
- package/docs/reference/functions/help.md +6 -0
- package/docs/reference/functions/hex.md +6 -0
- package/docs/reference/functions/hypot.md +6 -0
- package/docs/reference/functions/identity.md +6 -0
- package/docs/reference/functions/im.md +6 -0
- package/docs/reference/functions/intersect.md +6 -0
- package/docs/reference/functions/inv.md +6 -0
- package/docs/reference/functions/invmod.md +6 -0
- package/docs/reference/functions/isInteger.md +6 -0
- package/docs/reference/functions/isNaN.md +6 -0
- package/docs/reference/functions/isNegative.md +6 -0
- package/docs/reference/functions/isNumeric.md +6 -0
- package/docs/reference/functions/isPositive.md +6 -0
- package/docs/reference/functions/isPrime.md +6 -0
- package/docs/reference/functions/isZero.md +6 -0
- package/docs/reference/functions/kldivergence.md +6 -0
- package/docs/reference/functions/kron.md +6 -0
- package/docs/reference/functions/larger.md +6 -0
- package/docs/reference/functions/largerEq.md +6 -0
- package/docs/reference/functions/lcm.md +6 -0
- package/docs/reference/functions/leafCount.md +52 -0
- package/docs/reference/functions/leftShift.md +6 -0
- package/docs/reference/functions/log.md +6 -0
- package/docs/reference/functions/log10.md +6 -0
- package/docs/reference/functions/log1p.md +6 -0
- package/docs/reference/functions/log2.md +6 -0
- package/docs/reference/functions/lsolve.md +6 -0
- package/docs/reference/functions/lsolveAll.md +6 -0
- package/docs/reference/functions/lup.md +6 -0
- package/docs/reference/functions/lusolve.md +6 -0
- package/docs/reference/functions/mad.md +6 -0
- package/docs/reference/functions/map.md +28 -5
- package/docs/reference/functions/matrixFromColumns.md +6 -0
- package/docs/reference/functions/matrixFromFunction.md +6 -0
- package/docs/reference/functions/matrixFromRows.md +6 -0
- package/docs/reference/functions/max.md +6 -0
- package/docs/reference/functions/mean.md +6 -0
- package/docs/reference/functions/median.md +6 -0
- package/docs/reference/functions/min.md +6 -0
- package/docs/reference/functions/mod.md +6 -0
- package/docs/reference/functions/mode.md +6 -0
- package/docs/reference/functions/multinomial.md +6 -0
- package/docs/reference/functions/multiply.md +6 -0
- package/docs/reference/functions/norm.md +6 -0
- package/docs/reference/functions/not.md +6 -0
- package/docs/reference/functions/nthRoot.md +6 -0
- package/docs/reference/functions/nthRoots.md +6 -0
- package/docs/reference/functions/numeric.md +6 -0
- package/docs/reference/functions/oct.md +6 -0
- package/docs/reference/functions/ones.md +6 -0
- package/docs/reference/functions/or.md +6 -0
- package/docs/reference/functions/parser.md +6 -0
- package/docs/reference/functions/partitionSelect.md +6 -0
- package/docs/reference/functions/permutations.md +6 -0
- package/docs/reference/functions/pickRandom.md +6 -0
- package/docs/reference/functions/pow.md +6 -0
- package/docs/reference/functions/print.md +6 -0
- package/docs/reference/functions/prod.md +6 -0
- package/docs/reference/functions/qr.md +6 -0
- package/docs/reference/functions/quantileSeq.md +6 -0
- package/docs/reference/functions/random.md +6 -0
- package/docs/reference/functions/randomInt.md +6 -0
- package/docs/reference/functions/range.md +6 -0
- package/docs/reference/functions/rationalize.md +7 -1
- package/docs/reference/functions/re.md +6 -0
- package/docs/reference/functions/reshape.md +7 -0
- package/docs/reference/functions/resize.md +6 -0
- package/docs/reference/functions/resolve.md +46 -0
- package/docs/reference/functions/rightArithShift.md +6 -0
- package/docs/reference/functions/rightLogShift.md +6 -0
- package/docs/reference/functions/rotate.md +6 -0
- package/docs/reference/functions/rotationMatrix.md +6 -0
- package/docs/reference/functions/round.md +6 -0
- package/docs/reference/functions/row.md +6 -0
- package/docs/reference/functions/sec.md +6 -0
- package/docs/reference/functions/sech.md +6 -0
- package/docs/reference/functions/setCartesian.md +6 -0
- package/docs/reference/functions/setDifference.md +6 -0
- package/docs/reference/functions/setDistinct.md +6 -0
- package/docs/reference/functions/setIntersect.md +6 -0
- package/docs/reference/functions/setIsSubset.md +6 -0
- package/docs/reference/functions/setMultiplicity.md +6 -0
- package/docs/reference/functions/setPowerset.md +6 -0
- package/docs/reference/functions/setSize.md +6 -0
- package/docs/reference/functions/setSymDifference.md +6 -0
- package/docs/reference/functions/setUnion.md +6 -0
- package/docs/reference/functions/sign.md +6 -0
- package/docs/reference/functions/simplify.md +43 -6
- package/docs/reference/functions/simplifyCore.md +50 -0
- package/docs/reference/functions/sin.md +6 -0
- package/docs/reference/functions/sinh.md +6 -0
- package/docs/reference/functions/size.md +6 -0
- package/docs/reference/functions/slu.md +6 -0
- package/docs/reference/functions/smaller.md +6 -0
- package/docs/reference/functions/smallerEq.md +6 -0
- package/docs/reference/functions/sort.md +6 -0
- package/docs/reference/functions/sqrt.md +6 -0
- package/docs/reference/functions/sqrtm.md +6 -0
- package/docs/reference/functions/square.md +6 -0
- package/docs/reference/functions/squeeze.md +6 -0
- package/docs/reference/functions/std.md +6 -0
- package/docs/reference/functions/stirlingS2.md +6 -0
- package/docs/reference/functions/subset.md +16 -2
- package/docs/reference/functions/subtract.md +6 -0
- package/docs/reference/functions/sum.md +8 -1
- package/docs/reference/functions/symbolicEqual.md +62 -0
- package/docs/reference/functions/tan.md +6 -0
- package/docs/reference/functions/tanh.md +6 -0
- package/docs/reference/functions/to.md +6 -0
- package/docs/reference/functions/trace.md +6 -0
- package/docs/reference/functions/transpose.md +6 -0
- package/docs/reference/functions/typeOf.md +6 -0
- package/docs/reference/functions/unaryMinus.md +6 -0
- package/docs/reference/functions/unaryPlus.md +6 -0
- package/docs/reference/functions/unequal.md +6 -0
- package/docs/reference/functions/usolve.md +6 -0
- package/docs/reference/functions/usolveAll.md +6 -0
- package/docs/reference/functions/variance.md +6 -0
- package/docs/reference/functions/xgcd.md +6 -0
- package/docs/reference/functions/xor.md +6 -0
- package/docs/reference/functions/zeros.md +6 -0
- package/docs/reference/functions.md +6 -1
- package/lib/browser/math.js +6 -6
- package/lib/browser/math.js.map +1 -1
- package/lib/cjs/core/create.js +4 -4
- package/lib/cjs/core/function/import.js +3 -3
- package/lib/cjs/core/function/typed.js +2 -2
- 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/dependenciesCumSum.generated.js +26 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesCumSumTransform.generated.js +26 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +3 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +6 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +29 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +48 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesCumSum.generated.js +26 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesCumSumTransform.generated.js +26 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +3 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +6 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +32 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +85 -33
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +102 -64
- package/lib/cjs/entry/pureFunctionsAny.generated.js +68 -64
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +51 -47
- package/lib/cjs/expression/Help.js +4 -0
- package/lib/cjs/expression/Parser.js +1 -1
- package/lib/cjs/expression/embeddedDocs/construction/fraction.js +3 -3
- package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +250 -235
- package/lib/cjs/expression/embeddedDocs/function/algebra/leafCount.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/resolve.js +16 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/simplify.js +1 -1
- package/lib/cjs/expression/embeddedDocs/function/algebra/simplifyCore.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/algebra/symbolicEqual.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/subset.js +2 -2
- package/lib/cjs/expression/embeddedDocs/function/statistics/cumsum.js +15 -0
- package/lib/cjs/expression/node/FunctionNode.js +80 -61
- package/lib/cjs/expression/node/IndexNode.js +1 -1
- package/lib/cjs/expression/node/Node.js +3 -3
- package/lib/cjs/expression/node/ObjectNode.js +1 -1
- package/lib/cjs/expression/node/utils/access.js +1 -1
- package/lib/cjs/expression/node/utils/assign.js +1 -1
- package/lib/cjs/expression/parse.js +13 -13
- package/lib/cjs/expression/transform/cumsum.transform.js +57 -0
- package/lib/cjs/expression/transform/sum.transform.js +1 -1
- package/lib/cjs/factoriesAny.js +48 -0
- package/lib/cjs/factoriesNumber.js +33 -1
- package/lib/cjs/function/algebra/decomposition/qr.js +1 -1
- package/lib/cjs/function/algebra/leafCount.js +66 -0
- package/lib/cjs/function/algebra/rationalize.js +24 -41
- package/lib/cjs/function/algebra/resolve.js +106 -0
- package/lib/cjs/function/algebra/simplify/simplifyConstant.js +5 -5
- package/lib/cjs/function/algebra/simplify/util.js +171 -33
- package/lib/cjs/function/algebra/simplify.js +562 -207
- package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +68 -44
- 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 +88 -0
- package/lib/cjs/function/arithmetic/ceil.js +3 -3
- package/lib/cjs/function/arithmetic/floor.js +3 -3
- package/lib/cjs/function/arithmetic/invmod.js +1 -1
- package/lib/cjs/function/arithmetic/norm.js +1 -1
- package/lib/cjs/function/arithmetic/round.js +1 -1
- package/lib/cjs/function/matrix/eigs/complexEigs.js +13 -11
- package/lib/cjs/function/matrix/map.js +53 -15
- package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
- package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
- package/lib/cjs/function/matrix/subset.js +15 -5
- package/lib/cjs/function/probability/util/seededRNG.js +2 -2
- package/lib/cjs/function/relational/compareNatural.js +6 -6
- package/lib/cjs/function/statistics/cumsum.js +151 -0
- package/lib/cjs/function/statistics/sum.js +1 -1
- package/lib/cjs/function/string/format.js +1 -1
- package/lib/cjs/header.js +2 -2
- package/lib/cjs/plain/bignumber/index.js +1 -1
- package/lib/cjs/plain/number/combinations.js +18 -6
- package/lib/cjs/type/bignumber/BigNumber.js +2 -2
- package/lib/cjs/type/bignumber/function/bignumber.js +1 -1
- package/lib/cjs/type/boolean.js +2 -2
- package/lib/cjs/type/complex/Complex.js +14 -14
- package/lib/cjs/type/complex/function/complex.js +1 -1
- package/lib/cjs/type/fraction/Fraction.js +6 -6
- package/lib/cjs/type/fraction/function/fraction.js +21 -9
- package/lib/cjs/type/matrix/DenseMatrix.js +5 -5
- package/lib/cjs/type/matrix/SparseMatrix.js +2 -2
- package/lib/cjs/type/number.js +1 -1
- package/lib/cjs/type/string.js +2 -2
- package/lib/cjs/type/unit/Unit.js +8 -8
- package/lib/cjs/utils/collection.js +3 -27
- 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 +6 -6
- 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 +7 -7
- package/lib/cjs/utils/string.js +2 -2
- package/lib/cjs/utils/switch.js +31 -0
- package/lib/cjs/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesCumSum.generated.js +14 -0
- package/lib/esm/entry/dependenciesAny/dependenciesCumSumTransform.generated.js +14 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +2 -0
- package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +4 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSymbolicEqual.generated.js +16 -0
- package/lib/esm/entry/dependenciesAny.generated.js +6 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesCumSum.generated.js +14 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesCumSumTransform.generated.js +14 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +2 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +4 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +4 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +74 -26
- package/lib/esm/entry/impureFunctionsNumber.generated.js +89 -53
- package/lib/esm/entry/pureFunctionsAny.generated.js +54 -49
- package/lib/esm/entry/pureFunctionsNumber.generated.js +36 -31
- package/lib/esm/expression/Help.js +4 -0
- package/lib/esm/expression/embeddedDocs/construction/fraction.js +3 -3
- package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +222 -212
- package/lib/esm/expression/embeddedDocs/function/algebra/leafCount.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/resolve.js +9 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/simplify.js +1 -1
- package/lib/esm/expression/embeddedDocs/function/algebra/simplifyCore.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/algebra/symbolicEqual.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/subset.js +2 -2
- package/lib/esm/expression/embeddedDocs/function/statistics/cumsum.js +8 -0
- package/lib/esm/expression/node/FunctionNode.js +70 -53
- package/lib/esm/expression/transform/cumsum.transform.js +48 -0
- package/lib/esm/expression/transform/sum.transform.js +1 -1
- package/lib/esm/factoriesAny.js +6 -0
- package/lib/esm/factoriesNumber.js +4 -0
- package/lib/esm/function/algebra/leafCount.js +59 -0
- package/lib/esm/function/algebra/rationalize.js +24 -40
- package/lib/esm/function/algebra/resolve.js +95 -0
- package/lib/esm/function/algebra/simplify/simplifyConstant.js +3 -3
- package/lib/esm/function/algebra/simplify/util.js +170 -34
- package/lib/esm/function/algebra/simplify.js +557 -202
- package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +61 -45
- package/lib/esm/function/algebra/symbolicEqual.js +80 -0
- package/lib/esm/function/matrix/eigs/complexEigs.js +8 -6
- package/lib/esm/function/matrix/map.js +53 -15
- package/lib/esm/function/matrix/subset.js +15 -5
- package/lib/esm/function/statistics/cumsum.js +139 -0
- package/lib/esm/function/statistics/sum.js +1 -1
- package/lib/esm/function/string/format.js +1 -1
- package/lib/esm/plain/number/combinations.js +18 -6
- package/lib/esm/type/fraction/function/fraction.js +20 -8
- package/lib/esm/utils/collection.js +1 -26
- package/lib/esm/utils/switch.js +24 -0
- package/lib/esm/version.js +1 -1
- package/package.json +15 -10
- package/types/index.d.ts +155 -13
- package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
- package/lib/esm/function/algebra/simplify/resolve.js +0 -67
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.createSimplifyCore = void 0;
|
7
7
|
|
8
|
-
var _is = require("
|
8
|
+
var _is = require("../../utils/is.js");
|
9
9
|
|
10
|
-
var
|
10
|
+
var _util = require("./simplify/util.js");
|
11
|
+
|
12
|
+
var _factory = require("../../utils/factory.js");
|
11
13
|
|
12
14
|
var name = 'simplifyCore';
|
13
|
-
var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode'];
|
15
|
+
var dependencies = ['equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'ParenthesisNode', 'SymbolNode'];
|
14
16
|
var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
15
17
|
var equal = _ref.equal,
|
16
18
|
isZero = _ref.isZero,
|
@@ -26,15 +28,18 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
26
28
|
IndexNode = _ref.IndexNode,
|
27
29
|
ObjectNode = _ref.ObjectNode,
|
28
30
|
OperatorNode = _ref.OperatorNode,
|
29
|
-
ParenthesisNode = _ref.ParenthesisNode
|
31
|
+
ParenthesisNode = _ref.ParenthesisNode,
|
32
|
+
SymbolNode = _ref.SymbolNode;
|
30
33
|
var node0 = new ConstantNode(0);
|
31
34
|
var node1 = new ConstantNode(1);
|
32
35
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}
|
36
|
+
var _createUtil = (0, _util.createUtil)({
|
37
|
+
FunctionNode: FunctionNode,
|
38
|
+
OperatorNode: OperatorNode,
|
39
|
+
SymbolNode: SymbolNode
|
40
|
+
}),
|
41
|
+
hasProperty = _createUtil.hasProperty,
|
42
|
+
isCommutative = _createUtil.isCommutative;
|
38
43
|
/**
|
39
44
|
* simplifyCore() performs single pass simplification suitable for
|
40
45
|
* applications requiring ultimate performance. In contrast, simplify()
|
@@ -43,31 +48,54 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
43
48
|
*
|
44
49
|
* Syntax:
|
45
50
|
*
|
46
|
-
*
|
51
|
+
* simplifyCore(expr)
|
47
52
|
*
|
48
53
|
* Examples:
|
49
54
|
*
|
50
55
|
* const f = math.parse('2 * 1 * x ^ (2 - 1)')
|
51
|
-
* math.
|
52
|
-
* math.simplify('2 * 1 * x ^ (2 - 1)', [math.
|
56
|
+
* math.simpifyCore(f) // Node {2 * x}
|
57
|
+
* math.simplify('2 * 1 * x ^ (2 - 1)', [math.simplifyCore]) // Node {2 * x}
|
53
58
|
*
|
54
59
|
* See also:
|
55
60
|
*
|
56
|
-
* derivative
|
61
|
+
* simplify, resolve, derivative
|
57
62
|
*
|
58
63
|
* @param {Node} node
|
59
64
|
* The expression to be simplified
|
65
|
+
* @param {Object} options
|
66
|
+
* Simplification options, as per simplify()
|
67
|
+
* @return {Node} Returns expression with basic simplifications applied
|
60
68
|
*/
|
61
69
|
|
62
70
|
|
63
|
-
function simplifyCore(node) {
|
64
|
-
|
65
|
-
var a0 = simplifyCore(node.args[0]);
|
71
|
+
function simplifyCore(node, options) {
|
72
|
+
var context = options ? options.context : undefined;
|
66
73
|
|
67
|
-
|
68
|
-
|
69
|
-
|
74
|
+
if (hasProperty(node, 'trivial', context)) {
|
75
|
+
// This node does nothing if it has only one argument, so if so,
|
76
|
+
// return that argument simplified
|
77
|
+
if ((0, _is.isFunctionNode)(node) && node.args.length === 1) {
|
78
|
+
return simplifyCore(node.args[0], options);
|
79
|
+
} // For other node types, we try the generic methods
|
80
|
+
|
81
|
+
|
82
|
+
var simpChild = false;
|
83
|
+
var childCount = 0;
|
84
|
+
node.forEach(function (c) {
|
85
|
+
++childCount;
|
86
|
+
|
87
|
+
if (childCount === 1) {
|
88
|
+
simpChild = simplifyCore(c, options);
|
89
|
+
}
|
90
|
+
});
|
91
|
+
|
92
|
+
if (childCount === 1) {
|
93
|
+
return simpChild;
|
70
94
|
}
|
95
|
+
}
|
96
|
+
|
97
|
+
if ((0, _is.isOperatorNode)(node) && node.isUnary()) {
|
98
|
+
var a0 = simplifyCore(node.args[0], options);
|
71
99
|
|
72
100
|
if (node.op === '-') {
|
73
101
|
// unary minus
|
@@ -82,9 +110,9 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
82
110
|
return new OperatorNode(node.op, node.fn, [a0]);
|
83
111
|
}
|
84
112
|
} else if ((0, _is.isOperatorNode)(node) && node.isBinary()) {
|
85
|
-
var _a = simplifyCore(node.args[0]);
|
113
|
+
var _a = simplifyCore(node.args[0], options);
|
86
114
|
|
87
|
-
var a1 = simplifyCore(node.args[1]);
|
115
|
+
var a1 = simplifyCore(node.args[1], options);
|
88
116
|
|
89
117
|
if (node.op === '+') {
|
90
118
|
if ((0, _is.isConstantNode)(_a)) {
|
@@ -120,7 +148,7 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
120
148
|
}
|
121
149
|
|
122
150
|
if ((0, _is.isOperatorNode)(a1) && a1.isUnary() && a1.op === '-') {
|
123
|
-
return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]));
|
151
|
+
return simplifyCore(new OperatorNode('+', 'add', [_a, a1.args[0]]), options);
|
124
152
|
}
|
125
153
|
|
126
154
|
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
@@ -141,7 +169,7 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
141
169
|
return node0;
|
142
170
|
} else if (equal(a1.value, 1)) {
|
143
171
|
return _a;
|
144
|
-
} else if ((0, _is.isOperatorNode)(_a) && _a.isBinary() && _a.op === node.op) {
|
172
|
+
} else if ((0, _is.isOperatorNode)(_a) && _a.isBinary() && _a.op === node.op && isCommutative(node, context)) {
|
145
173
|
var a00 = _a.args[0];
|
146
174
|
|
147
175
|
if ((0, _is.isConstantNode)(a00)) {
|
@@ -150,7 +178,11 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
150
178
|
}
|
151
179
|
}
|
152
180
|
|
153
|
-
|
181
|
+
if (isCommutative(node, context)) {
|
182
|
+
return new OperatorNode(node.op, node.fn, [a1, _a], node.implicit); // constants on left
|
183
|
+
} else {
|
184
|
+
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
|
185
|
+
}
|
154
186
|
}
|
155
187
|
|
156
188
|
return new OperatorNode(node.op, node.fn, [_a, a1], node.implicit);
|
@@ -183,36 +215,28 @@ var createSimplifyCore = /* #__PURE__ */(0, _factory.factory)(name, dependencies
|
|
183
215
|
}
|
184
216
|
}
|
185
217
|
}
|
186
|
-
|
187
|
-
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
188
218
|
}
|
189
|
-
} else if ((0, _is.isParenthesisNode)(node)) {
|
190
|
-
var c = simplifyCore(node.content);
|
191
219
|
|
192
|
-
|
193
|
-
return c;
|
194
|
-
}
|
195
|
-
|
196
|
-
return new ParenthesisNode(c);
|
220
|
+
return new OperatorNode(node.op, node.fn, [_a, a1]);
|
197
221
|
} else if ((0, _is.isFunctionNode)(node)) {
|
198
|
-
return new FunctionNode(simplifyCore(node.fn),
|
222
|
+
return new FunctionNode(simplifyCore(node.fn), node.args.map(function (n) {
|
223
|
+
return simplifyCore(n, options);
|
224
|
+
}));
|
199
225
|
} else if ((0, _is.isArrayNode)(node)) {
|
200
|
-
return new ArrayNode(
|
226
|
+
return new ArrayNode(node.items.map(function (n) {
|
227
|
+
return simplifyCore(n, options);
|
228
|
+
}));
|
201
229
|
} else if ((0, _is.isAccessorNode)(node)) {
|
202
|
-
|
203
|
-
|
204
|
-
if ((0, _is.isParenthesisNode)(obj)) {
|
205
|
-
obj = obj.content;
|
206
|
-
}
|
207
|
-
|
208
|
-
return new AccessorNode(obj, simplifyCore(node.index));
|
230
|
+
return new AccessorNode(simplifyCore(node.object, options), simplifyCore(node.index, options));
|
209
231
|
} else if ((0, _is.isIndexNode)(node)) {
|
210
|
-
return new IndexNode(
|
232
|
+
return new IndexNode(node.dimensions.map(function (n) {
|
233
|
+
return simplifyCore(n, options);
|
234
|
+
}));
|
211
235
|
} else if ((0, _is.isObjectNode)(node)) {
|
212
236
|
var newProps = {};
|
213
237
|
|
214
238
|
for (var prop in node.properties) {
|
215
|
-
newProps[prop] = simplifyCore(node.properties[prop]);
|
239
|
+
newProps[prop] = simplifyCore(node.properties[prop], options);
|
216
240
|
}
|
217
241
|
|
218
242
|
return new ObjectNode(newProps);
|
@@ -107,7 +107,7 @@ var createLsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
107
107
|
}
|
108
108
|
} else if (k === 0) {
|
109
109
|
// singular row, RHS is zero
|
110
|
-
var bNew = (0, _toConsumableArray2
|
110
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
111
111
|
bNew[i] = 1;
|
112
112
|
|
113
113
|
for (var _j = i + 1; _j < columns; _j++) {
|
@@ -187,7 +187,7 @@ var createLsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
187
187
|
}
|
188
188
|
} else if (k === 0) {
|
189
189
|
// singular row, RHS is zero
|
190
|
-
var bNew = (0, _toConsumableArray2
|
190
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
191
191
|
bNew[i] = 1;
|
192
192
|
|
193
193
|
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
@@ -107,7 +107,7 @@ var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
107
107
|
}
|
108
108
|
} else if (k === 0) {
|
109
109
|
// singular row, RHS is zero
|
110
|
-
var bNew = (0, _toConsumableArray2
|
110
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
111
111
|
bNew[i] = 1;
|
112
112
|
|
113
113
|
for (var _j = i - 1; _j >= 0; _j--) {
|
@@ -187,7 +187,7 @@ var createUsolveAll = /* #__PURE__ */(0, _factory.factory)(name, dependencies, f
|
|
187
187
|
}
|
188
188
|
} else if (k === 0) {
|
189
189
|
// singular row, RHS is zero
|
190
|
-
var bNew = (0, _toConsumableArray2
|
190
|
+
var bNew = (0, _toConsumableArray2.default)(b);
|
191
191
|
bNew[i] = 1; // loop upper triangular
|
192
192
|
|
193
193
|
for (var _j3 = 0, _lastIndex2 = iIndices.length; _j3 < _lastIndex2; _j3++) {
|
@@ -0,0 +1,88 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.createSymbolicEqual = void 0;
|
7
|
+
|
8
|
+
var _is = require("../../utils/is.js");
|
9
|
+
|
10
|
+
var _factory = require("../../utils/factory.js");
|
11
|
+
|
12
|
+
var name = 'symbolicEqual';
|
13
|
+
var dependencies = ['parse', 'simplify', 'typed', 'OperatorNode'];
|
14
|
+
var createSymbolicEqual = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) {
|
15
|
+
var parse = _ref.parse,
|
16
|
+
simplify = _ref.simplify,
|
17
|
+
typed = _ref.typed,
|
18
|
+
OperatorNode = _ref.OperatorNode;
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Attempts to determine if two expressions are symbolically equal, i.e.
|
22
|
+
* one is the result of valid algebraic manipulations on the other.
|
23
|
+
* Currently, this simply checks if the difference of the two expressions
|
24
|
+
* simplifies down to 0. So there are two important caveats:
|
25
|
+
* 1. whether two expressions are symbolically equal depends on the
|
26
|
+
* manipulations allowed. Therefore, this function takes an optional
|
27
|
+
* third argument, which are the options that control the behavior
|
28
|
+
* as documented for the `simplify()` function.
|
29
|
+
* 2. it is in general intractable to find the minimal simplification of
|
30
|
+
* an arbitrarily complicated expression. So while a `true` value
|
31
|
+
* of `symbolicEqual` ensures that the two expressions can be manipulated
|
32
|
+
* to match each other, a `false` value does not absolutely rule this out.
|
33
|
+
*
|
34
|
+
* Syntax:
|
35
|
+
*
|
36
|
+
* symbolicEqual(expr1, expr2)
|
37
|
+
* symbolicEqual(expr1, expr2, options)
|
38
|
+
*
|
39
|
+
* Examples:
|
40
|
+
*
|
41
|
+
* symbolicEqual('x*y', 'y*x') // true
|
42
|
+
* symbolicEqual('x*y', 'y*x', {context: {multiply: {commutative: false}}})
|
43
|
+
* //false
|
44
|
+
* symbolicEqual('x/y', '(y*x^(-1))^(-1)') // true
|
45
|
+
* symbolicEqual('abs(x)','x') // false
|
46
|
+
* symbolicEqual('abs(x)','x', simplify.positiveContext) // true
|
47
|
+
*
|
48
|
+
* See also:
|
49
|
+
*
|
50
|
+
* simplify, evaluate
|
51
|
+
*
|
52
|
+
* @param {Node|string} expr1 The first expression to compare
|
53
|
+
* @param {Node|string} expr2 The second expression to compare
|
54
|
+
* @param {Object} [options] Optional option object, passed to simplify
|
55
|
+
* @returns {boolean}
|
56
|
+
* Returns true if a valid manipulation making the expressions equal
|
57
|
+
* is found.
|
58
|
+
*/
|
59
|
+
return typed(name, {
|
60
|
+
'string, string': function stringString(s1, s2) {
|
61
|
+
return this(parse(s1), parse(s2), {});
|
62
|
+
},
|
63
|
+
'string, string, Object': function stringStringObject(s1, s2, options) {
|
64
|
+
return this(parse(s1), parse(s2), options);
|
65
|
+
},
|
66
|
+
'Node, string': function NodeString(e1, s2) {
|
67
|
+
return this(e1, parse(s2), {});
|
68
|
+
},
|
69
|
+
'Node, string, Object': function NodeStringObject(e1, s2, options) {
|
70
|
+
return this(e1, parse(s2), options);
|
71
|
+
},
|
72
|
+
'string, Node': function stringNode(s1, e2) {
|
73
|
+
return this(parse(s1), e2, {});
|
74
|
+
},
|
75
|
+
'string, Node, Object': function stringNodeObject(s1, e2, options) {
|
76
|
+
return this(parse(s1), e2, options);
|
77
|
+
},
|
78
|
+
'Node, Node': function NodeNode(e1, e2) {
|
79
|
+
return this(e1, e2, {});
|
80
|
+
},
|
81
|
+
'Node, Node, Object': function NodeNodeObject(e1, e2, options) {
|
82
|
+
var diff = new OperatorNode('-', 'subtract', [e1, e2]);
|
83
|
+
var simplified = simplify(diff, {}, options);
|
84
|
+
return (0, _is.isConstantNode)(simplified) && !simplified.value;
|
85
|
+
}
|
86
|
+
});
|
87
|
+
});
|
88
|
+
exports.createSymbolicEqual = createSymbolicEqual;
|
@@ -91,7 +91,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
91
91
|
return round(x, n);
|
92
92
|
} else {
|
93
93
|
var _$split = "".concat(x, "e").split('e'),
|
94
|
-
_$split2 = (0, _slicedToArray2
|
94
|
+
_$split2 = (0, _slicedToArray2.default)(_$split, 2),
|
95
95
|
number = _$split2[0],
|
96
96
|
exponent = _$split2[1];
|
97
97
|
|
@@ -99,7 +99,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
99
99
|
|
100
100
|
var _$split3 = "".concat(result, "e").split('e');
|
101
101
|
|
102
|
-
var _$split4 = (0, _slicedToArray2
|
102
|
+
var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
|
103
103
|
|
104
104
|
number = _$split4[0];
|
105
105
|
exponent = _$split4[1];
|
@@ -123,7 +123,7 @@ var createCeil = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functi
|
|
123
123
|
if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
124
124
|
return round(x, n);
|
125
125
|
} else {
|
126
|
-
return x.toDecimalPlaces(n.toNumber(), _decimal
|
126
|
+
return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_CEIL);
|
127
127
|
}
|
128
128
|
},
|
129
129
|
Fraction: function Fraction(x) {
|
@@ -88,7 +88,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
88
88
|
return round(x, n);
|
89
89
|
} else {
|
90
90
|
var _$split = "".concat(x, "e").split('e'),
|
91
|
-
_$split2 = (0, _slicedToArray2
|
91
|
+
_$split2 = (0, _slicedToArray2.default)(_$split, 2),
|
92
92
|
number = _$split2[0],
|
93
93
|
exponent = _$split2[1];
|
94
94
|
|
@@ -96,7 +96,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
96
96
|
|
97
97
|
var _$split3 = "".concat(result, "e").split('e');
|
98
98
|
|
99
|
-
var _$split4 = (0, _slicedToArray2
|
99
|
+
var _$split4 = (0, _slicedToArray2.default)(_$split3, 2);
|
100
100
|
|
101
101
|
number = _$split4[0];
|
102
102
|
exponent = _$split4[1];
|
@@ -120,7 +120,7 @@ var createFloor = /* #__PURE__ */(0, _factory.factory)(name, dependencies, funct
|
|
120
120
|
if ((0, _nearlyEqual.nearlyEqual)(x, round(x, n), config.epsilon)) {
|
121
121
|
return round(x, n);
|
122
122
|
} else {
|
123
|
-
return x.toDecimalPlaces(n.toNumber(), _decimal
|
123
|
+
return x.toDecimalPlaces(n.toNumber(), _decimal.default.ROUND_FLOOR);
|
124
124
|
}
|
125
125
|
},
|
126
126
|
Fraction: function Fraction(x) {
|
@@ -60,7 +60,7 @@ var createInvmod = /* #__PURE__ */(0, _factory.factory)(name, dependencies, func
|
|
60
60
|
res = res.valueOf();
|
61
61
|
|
62
62
|
var _res = res,
|
63
|
-
_res2 = (0, _slicedToArray2
|
63
|
+
_res2 = (0, _slicedToArray2.default)(_res, 2),
|
64
64
|
gcd = _res2[0],
|
65
65
|
inv = _res2[1];
|
66
66
|
|
@@ -25,7 +25,7 @@ var _index = require("../../plain/number/index.js");
|
|
25
25
|
|
26
26
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
27
27
|
|
28
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2
|
28
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
29
29
|
|
30
30
|
var NO_INT = 'Number of decimals in function round must be an integer';
|
31
31
|
var name = 'round';
|
@@ -11,7 +11,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
11
11
|
|
12
12
|
var _object = require("../../../utils/object.js");
|
13
13
|
|
14
|
-
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
|
14
|
+
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; } } }; }
|
15
15
|
|
16
16
|
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); }
|
17
17
|
|
@@ -80,7 +80,7 @@ function createComplexEigs(_ref) {
|
|
80
80
|
|
81
81
|
if (findVectors) {
|
82
82
|
vectors = findEigenvectors(arr, N, C, values, prec, type);
|
83
|
-
vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2
|
83
|
+
vectors = matrixFromColumns.apply(void 0, (0, _toConsumableArray2.default)(vectors));
|
84
84
|
}
|
85
85
|
|
86
86
|
return {
|
@@ -100,8 +100,9 @@ function createComplexEigs(_ref) {
|
|
100
100
|
function balance(arr, N, prec, type, findVectors) {
|
101
101
|
var big = type === 'BigNumber';
|
102
102
|
var cplx = type === 'Complex';
|
103
|
-
var
|
104
|
-
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
|
103
|
+
var realzero = big ? bignumber(0) : 0;
|
104
|
+
var one = big ? bignumber(1) : cplx ? complex(1) : 1;
|
105
|
+
var realone = big ? bignumber(1) : 1; // base of the floating-point arithmetic
|
105
106
|
|
106
107
|
var radix = big ? bignumber(10) : 2;
|
107
108
|
var radixSq = multiplyScalar(radix, radix); // the diagonal transformation matrix R
|
@@ -122,12 +123,13 @@ function createComplexEigs(_ref) {
|
|
122
123
|
for (var i = 0; i < N; i++) {
|
123
124
|
// compute the taxicab norm of i-th column and row
|
124
125
|
// TODO optimize for complex numbers
|
125
|
-
var colNorm =
|
126
|
-
var rowNorm =
|
126
|
+
var colNorm = realzero;
|
127
|
+
var rowNorm = realzero;
|
127
128
|
|
128
129
|
for (var j = 0; j < N; j++) {
|
129
130
|
if (i === j) continue;
|
130
|
-
var c = abs(arr[i][j]);
|
131
|
+
var c = abs(arr[i][j]); // should be real
|
132
|
+
|
131
133
|
colNorm = addScalar(colNorm, c);
|
132
134
|
rowNorm = addScalar(rowNorm, c);
|
133
135
|
}
|
@@ -136,7 +138,7 @@ function createComplexEigs(_ref) {
|
|
136
138
|
// find integer power closest to balancing the matrix
|
137
139
|
// (we want to scale only by integer powers of radix,
|
138
140
|
// so that we don't lose any precision due to round-off)
|
139
|
-
var f =
|
141
|
+
var f = realone;
|
140
142
|
var _c = colNorm;
|
141
143
|
var rowDivRadix = divideScalar(rowNorm, radix);
|
142
144
|
var rowMulRadix = multiplyScalar(rowNorm, radix);
|
@@ -360,7 +362,7 @@ function createComplexEigs(_ref) {
|
|
360
362
|
} else if (n === 2 || smaller(abs(arr[n - 2][n - 3]), prec)) {
|
361
363
|
lastConvergenceBefore = 0;
|
362
364
|
var ll = eigenvalues2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1]);
|
363
|
-
lambdas.push.apply(lambdas, (0, _toConsumableArray2
|
365
|
+
lambdas.push.apply(lambdas, (0, _toConsumableArray2.default)(ll)); // keep track of transformations
|
364
366
|
|
365
367
|
if (findVectors) {
|
366
368
|
Sdiag.unshift(jordanBase2x2(arr[n - 2][n - 2], arr[n - 2][n - 1], arr[n - 1][n - 2], arr[n - 1][n - 1], ll[0], ll[1], prec, type));
|
@@ -488,7 +490,7 @@ function createComplexEigs(_ref) {
|
|
488
490
|
solutions.push(approxVec);
|
489
491
|
}
|
490
492
|
|
491
|
-
vectors.push.apply(vectors, (0, _toConsumableArray2
|
493
|
+
vectors.push.apply(vectors, (0, _toConsumableArray2.default)(solutions.map(function (v) {
|
492
494
|
return flatten(v);
|
493
495
|
})));
|
494
496
|
}
|
@@ -568,7 +570,7 @@ function createComplexEigs(_ref) {
|
|
568
570
|
for (var i = 0; i < arr.length; i++) {
|
569
571
|
var _arr$i;
|
570
572
|
|
571
|
-
(_arr$i = arr[i]).push.apply(_arr$i, (0, _toConsumableArray2
|
573
|
+
(_arr$i = arr[i]).push.apply(_arr$i, (0, _toConsumableArray2.default)(Array(N - arr[i].length).fill(0)));
|
572
574
|
} // add rows
|
573
575
|
|
574
576
|
|
@@ -15,8 +15,15 @@ var createMap = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
15
15
|
var typed = _ref.typed;
|
16
16
|
|
17
17
|
/**
|
18
|
-
* Create a new matrix or array with the results of
|
19
|
-
* each entry of
|
18
|
+
* Create a new matrix or array with the results of a callback function executed on
|
19
|
+
* each entry of a given matrix/array.
|
20
|
+
*
|
21
|
+
* For each entry of the input, the callback is invoked with three arguments:
|
22
|
+
* the value of the entry, the index at which that entry occurs, and the full
|
23
|
+
* matrix/array being traversed. Note that because the matrix/array might be
|
24
|
+
* multidimensional, the "index" argument is always an array of numbers giving
|
25
|
+
* the index in each dimension. This is true even for vectors: the "index"
|
26
|
+
* argument is an array of length 1, rather than simply a number.
|
20
27
|
*
|
21
28
|
* Syntax:
|
22
29
|
*
|
@@ -28,15 +35,25 @@ var createMap = /* #__PURE__ */(0, _factory.factory)(name, dependencies, functio
|
|
28
35
|
* return value * value
|
29
36
|
* }) // returns [1, 4, 9]
|
30
37
|
*
|
38
|
+
* // The calling convention for the callback can cause subtleties:
|
39
|
+
* math.map([1, 2, 3], math.format)
|
40
|
+
* // throws TypeError: map attempted to call 'format(1,[0])' but argument 2 of type Array does not match expected type number or function or Object or string or boolean
|
41
|
+
* // [This happens because `format` _can_ take a second argument,
|
42
|
+
* // but its semantics don't match that of the 2nd argument `map` provides]
|
43
|
+
*
|
44
|
+
* // To avoid this error, use a function that takes exactly the
|
45
|
+
* // desired arguments:
|
46
|
+
* math.map([1, 2, 3], x => math.format(x)) // returns ['1', '2', '3']
|
47
|
+
*
|
31
48
|
* See also:
|
32
49
|
*
|
33
50
|
* filter, forEach, sort
|
34
51
|
*
|
35
|
-
* @param {Matrix | Array} x The
|
36
|
-
* @param {Function} callback
|
37
|
-
*
|
38
|
-
*
|
39
|
-
*
|
52
|
+
* @param {Matrix | Array} x The input to iterate on.
|
53
|
+
* @param {Function} callback
|
54
|
+
* The function to call (as described above) on each entry of the input
|
55
|
+
* @return {Matrix | array}
|
56
|
+
* Transformed map of x; always has the same type and shape as x
|
40
57
|
*/
|
41
58
|
return typed(name, {
|
42
59
|
'Array, function': _map,
|
@@ -66,14 +83,35 @@ function _map(array, callback) {
|
|
66
83
|
return recurse(child, index.concat(i));
|
67
84
|
});
|
68
85
|
} else {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
86
|
+
try {
|
87
|
+
// invoke the callback function with the right number of arguments
|
88
|
+
if (args === 1) {
|
89
|
+
return callback(value);
|
90
|
+
} else if (args === 2) {
|
91
|
+
return callback(value, index);
|
92
|
+
} else {
|
93
|
+
// 3 or -1
|
94
|
+
return callback(value, index, array);
|
95
|
+
}
|
96
|
+
} catch (err) {
|
97
|
+
// But maybe the arguments still weren't right
|
98
|
+
if (err instanceof TypeError && 'data' in err && err.data.category === 'wrongType') {
|
99
|
+
var newmsg = "map attempted to call '".concat(err.data.fn, "(").concat(value);
|
100
|
+
var indexString = JSON.stringify(index);
|
101
|
+
|
102
|
+
if (args === 2) {
|
103
|
+
newmsg += ',' + indexString;
|
104
|
+
} else if (args !== 1) {
|
105
|
+
newmsg += ",".concat(indexString, ",").concat(array);
|
106
|
+
}
|
107
|
+
|
108
|
+
newmsg += ")' but argument ".concat(err.data.index + 1, " of type ");
|
109
|
+
newmsg += "".concat(err.data.actual, " does not match expected type ");
|
110
|
+
newmsg += err.data.expected.join(' or ');
|
111
|
+
throw new TypeError(newmsg);
|
112
|
+
}
|
113
|
+
|
114
|
+
throw err;
|
77
115
|
}
|
78
116
|
}
|
79
117
|
};
|
@@ -7,7 +7,7 @@ exports.createMatrixFromColumns = 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
|
|
@@ -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
|
|