mathjs 10.0.2 → 10.2.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 +37 -0
- package/NOTICE +1 -1
- package/README.md +10 -2
- package/bin/cli.js +1 -1
- package/docs/expressions/algebra.md +27 -0
- package/docs/expressions/syntax.md +1 -1
- 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/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 +6 -0
- 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 +47 -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 +6 -0
- 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 +47 -7
- 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 +6 -0
- package/docs/reference/functions/subtract.md +6 -0
- package/docs/reference/functions/sum.md +6 -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 +4 -0
- package/lib/browser/math.js +7 -7
- 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/dependenciesInvmod.generated.js +41 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesLeafCount.generated.js +23 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesRationalize.generated.js +18 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesResolve.generated.js +32 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplify.generated.js +21 -0
- package/lib/cjs/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +65 -0
- package/lib/cjs/entry/dependenciesAny.generated.js +32 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesRationalize.generated.js +18 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesResolve.generated.js +32 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplify.generated.js +21 -0
- package/lib/cjs/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +65 -0
- package/lib/cjs/entry/dependenciesNumber.generated.js +16 -0
- package/lib/cjs/entry/impureFunctionsAny.generated.js +78 -29
- package/lib/cjs/entry/impureFunctionsNumber.generated.js +102 -60
- package/lib/cjs/entry/pureFunctionsAny.generated.js +65 -55
- package/lib/cjs/entry/pureFunctionsNumber.generated.js +46 -48
- package/lib/cjs/expression/Help.js +4 -0
- package/lib/cjs/expression/Parser.js +1 -1
- package/lib/cjs/expression/embeddedDocs/core/typed.js +1 -1
- package/lib/cjs/expression/embeddedDocs/embeddedDocs.js +20 -6
- 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/arithmetic/invmod.js +15 -0
- package/lib/cjs/expression/embeddedDocs/function/matrix/forEach.js +1 -1
- package/lib/cjs/expression/node/FunctionNode.js +7 -7
- 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/factoriesAny.js +32 -0
- package/lib/cjs/factoriesNumber.js +16 -0
- 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 +36 -39
- package/lib/cjs/function/algebra/resolve.js +106 -0
- package/lib/cjs/function/algebra/simplify/simplifyConstant.js +226 -32
- package/lib/cjs/function/algebra/simplify/util.js +171 -33
- package/lib/cjs/function/algebra/simplify.js +608 -191
- package/lib/cjs/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +83 -31
- package/lib/cjs/function/algebra/solver/lsolveAll.js +2 -2
- package/lib/cjs/function/algebra/solver/usolveAll.js +2 -2
- 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 +73 -0
- 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 +5 -5
- package/lib/cjs/function/matrix/matrixFromColumns.js +1 -1
- package/lib/cjs/function/matrix/matrixFromRows.js +1 -1
- package/lib/cjs/function/probability/util/seededRNG.js +2 -2
- package/lib/cjs/function/relational/compareNatural.js +6 -6
- package/lib/cjs/header.js +3 -3
- 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 +1 -1
- 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/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/version.js +1 -1
- package/lib/esm/entry/dependenciesAny/dependenciesInvmod.generated.js +24 -0
- package/lib/esm/entry/dependenciesAny/dependenciesLeafCount.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesRationalize.generated.js +12 -0
- package/lib/esm/entry/dependenciesAny/dependenciesResolve.generated.js +18 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplify.generated.js +14 -0
- package/lib/esm/entry/dependenciesAny/dependenciesSimplifyCore.generated.js +40 -0
- package/lib/esm/entry/dependenciesAny.generated.js +4 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesRationalize.generated.js +12 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesResolve.generated.js +18 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplify.generated.js +14 -0
- package/lib/esm/entry/dependenciesNumber/dependenciesSimplifyCore.generated.js +40 -0
- package/lib/esm/entry/dependenciesNumber.generated.js +2 -0
- package/lib/esm/entry/impureFunctionsAny.generated.js +68 -22
- package/lib/esm/entry/impureFunctionsNumber.generated.js +92 -52
- package/lib/esm/entry/pureFunctionsAny.generated.js +53 -42
- package/lib/esm/entry/pureFunctionsNumber.generated.js +32 -32
- package/lib/esm/expression/Help.js +4 -0
- package/lib/esm/expression/embeddedDocs/core/typed.js +1 -1
- package/lib/esm/expression/embeddedDocs/embeddedDocs.js +10 -1
- 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/arithmetic/invmod.js +8 -0
- package/lib/esm/expression/embeddedDocs/function/matrix/forEach.js +1 -1
- package/lib/esm/factoriesAny.js +4 -0
- package/lib/esm/factoriesNumber.js +2 -0
- package/lib/esm/function/algebra/leafCount.js +59 -0
- package/lib/esm/function/algebra/rationalize.js +36 -38
- package/lib/esm/function/algebra/resolve.js +95 -0
- package/lib/esm/function/algebra/simplify/simplifyConstant.js +200 -32
- package/lib/esm/function/algebra/simplify/util.js +170 -34
- package/lib/esm/function/algebra/simplify.js +603 -186
- package/lib/esm/function/algebra/{simplify/simplifyCore.js → simplifyCore.js} +75 -31
- package/lib/esm/function/arithmetic/invmod.js +57 -0
- package/lib/esm/header.js +1 -1
- package/lib/esm/plain/number/combinations.js +18 -6
- package/lib/esm/version.js +1 -1
- package/package.json +21 -15
- package/types/index.d.ts +48 -6
- package/lib/cjs/function/algebra/simplify/resolve.js +0 -76
- package/lib/esm/function/algebra/simplify/resolve.js +0 -67
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { bignumberDocs } from './construction/bignumber.js';
|
|
2
|
+
import { printDocs } from './function/utils/print.js';
|
|
2
3
|
import { typeOfDocs } from './function/utils/typeOf.js';
|
|
3
4
|
import { isZeroDocs } from './function/utils/isZero.js';
|
|
4
5
|
import { isPrimeDocs } from './function/utils/isPrime.js';
|
|
@@ -135,6 +136,7 @@ import { bitOrDocs } from './function/bitwise/bitOr.js';
|
|
|
135
136
|
import { bitNotDocs } from './function/bitwise/bitNot.js';
|
|
136
137
|
import { bitAndDocs } from './function/bitwise/bitAnd.js';
|
|
137
138
|
import { xgcdDocs } from './function/arithmetic/xgcd.js';
|
|
139
|
+
import { invmodDocs } from './function/arithmetic/invmod.js';
|
|
138
140
|
import { unaryPlusDocs } from './function/arithmetic/unaryPlus.js';
|
|
139
141
|
import { unaryMinusDocs } from './function/arithmetic/unaryMinus.js';
|
|
140
142
|
import { squareDocs } from './function/arithmetic/square.js';
|
|
@@ -173,8 +175,11 @@ import { qrDocs } from './function/algebra/qr.js';
|
|
|
173
175
|
import { usolveDocs } from './function/algebra/usolve.js';
|
|
174
176
|
import { usolveAllDocs } from './function/algebra/usolveAll.js';
|
|
175
177
|
import { sluDocs } from './function/algebra/slu.js';
|
|
178
|
+
import { leafCountDocs } from './function/algebra/leafCount.js';
|
|
176
179
|
import { rationalizeDocs } from './function/algebra/rationalize.js';
|
|
177
180
|
import { simplifyDocs } from './function/algebra/simplify.js';
|
|
181
|
+
import { simplifyCoreDocs } from './function/algebra/simplifyCore.js';
|
|
182
|
+
import { resolveDocs } from './function/algebra/resolve.js';
|
|
178
183
|
import { lupDocs } from './function/algebra/lup.js';
|
|
179
184
|
import { lsolveDocs } from './function/algebra/lsolve.js';
|
|
180
185
|
import { lsolveAllDocs } from './function/algebra/lsolveAll.js';
|
|
@@ -464,7 +469,10 @@ export var embeddedDocs = {
|
|
|
464
469
|
lsolveAll: lsolveAllDocs,
|
|
465
470
|
lup: lupDocs,
|
|
466
471
|
lusolve: lusolveDocs,
|
|
472
|
+
leafCount: leafCountDocs,
|
|
467
473
|
simplify: simplifyDocs,
|
|
474
|
+
resolve: resolveDocs,
|
|
475
|
+
simplifyCore: simplifyCoreDocs,
|
|
468
476
|
rationalize: rationalizeDocs,
|
|
469
477
|
slu: sluDocs,
|
|
470
478
|
usolve: usolveDocs,
|
|
@@ -507,6 +515,7 @@ export var embeddedDocs = {
|
|
|
507
515
|
unaryMinus: unaryMinusDocs,
|
|
508
516
|
unaryPlus: unaryPlusDocs,
|
|
509
517
|
xgcd: xgcdDocs,
|
|
518
|
+
invmod: invmodDocs,
|
|
510
519
|
// functions - bitwise
|
|
511
520
|
bitAnd: bitAndDocs,
|
|
512
521
|
bitNot: bitNotDocs,
|
|
@@ -668,7 +677,7 @@ export var embeddedDocs = {
|
|
|
668
677
|
isPositive: isPositiveDocs,
|
|
669
678
|
isPrime: isPrimeDocs,
|
|
670
679
|
isZero: isZeroDocs,
|
|
671
|
-
|
|
680
|
+
print: printDocs,
|
|
672
681
|
typeOf: typeOfDocs,
|
|
673
682
|
numeric: numericDocs
|
|
674
683
|
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var leafCountDocs = {
|
|
2
|
+
name: 'leafCount',
|
|
3
|
+
category: 'Algebra',
|
|
4
|
+
syntax: ['leafCount(expr)'],
|
|
5
|
+
description: 'Computes the number of leaves in the parse tree of the given expression',
|
|
6
|
+
examples: ['leafCount("e^(i*pi)-1")', 'leafCount(parse("{a: 22/7, b: 10^(1/2)}"))'],
|
|
7
|
+
seealso: ['simplify']
|
|
8
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export var resolveDocs = {
|
|
2
|
+
name: 'resolve',
|
|
3
|
+
category: 'Algebra',
|
|
4
|
+
syntax: ['resolve(node, scope)'],
|
|
5
|
+
description: 'Recursively substitute variables in an expression tree.',
|
|
6
|
+
examples: ['resolve(parse("1 + x"), { x: 7 })', 'resolve(parse("size(text)"), { text: "Hello World" })', 'resolve(parse("x + y"), { x: parse("3z") })', 'resolve(parse("3x"), { x: parse("y+z"), z: parse("w^y") })'],
|
|
7
|
+
seealso: ['simplify', 'evaluate'],
|
|
8
|
+
mayThrow: ['ReferenceError']
|
|
9
|
+
};
|
|
@@ -4,5 +4,5 @@ export var simplifyDocs = {
|
|
|
4
4
|
syntax: ['simplify(expr)', 'simplify(expr, rules)'],
|
|
5
5
|
description: 'Simplify an expression tree.',
|
|
6
6
|
examples: ['simplify("3 + 2 / 4")', 'simplify("2x + x")', 'f = parse("x * (x + 2 + x)")', 'simplified = simplify(f)', 'simplified.evaluate({x: 2})'],
|
|
7
|
-
seealso: ['derivative', 'parse', '
|
|
7
|
+
seealso: ['simplifyCore', 'derivative', 'evaluate', 'parse', 'rationalize', 'resolve']
|
|
8
8
|
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var simplifyCoreDocs = {
|
|
2
|
+
name: 'simplifyCore',
|
|
3
|
+
category: 'Algebra',
|
|
4
|
+
syntax: ['simplifyCore(node)'],
|
|
5
|
+
description: 'Perform simple one-pass simplifications on an expression tree.',
|
|
6
|
+
examples: ['simplifyCore(parse("0*x"))', 'simplifyCore(parse("(x+0)*2"))'],
|
|
7
|
+
seealso: ['simplify', 'evaluate']
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export var invmodDocs = {
|
|
2
|
+
name: 'invmod',
|
|
3
|
+
category: 'Arithmetic',
|
|
4
|
+
syntax: ['invmod(a, b)'],
|
|
5
|
+
description: 'Calculate the (modular) multiplicative inverse of a modulo b. Solution to the equation ax ≣ 1 (mod b)',
|
|
6
|
+
examples: ['invmod(8, 12)=NaN', 'invmod(7, 13)=2', 'math.invmod(15151, 15122)=10429'],
|
|
7
|
+
seealso: ['gcd', 'xgcd']
|
|
8
|
+
};
|
|
@@ -3,6 +3,6 @@ export var forEachDocs = {
|
|
|
3
3
|
category: 'Matrix',
|
|
4
4
|
syntax: ['forEach(x, callback)'],
|
|
5
5
|
description: 'Iterates over all elements of a matrix/array, and executes the given callback function.',
|
|
6
|
-
examples: [
|
|
6
|
+
examples: [],
|
|
7
7
|
seealso: ['map', 'sort', 'filter']
|
|
8
8
|
};
|
package/lib/esm/factoriesAny.js
CHANGED
|
@@ -53,6 +53,7 @@ export { createSqrt } from './function/arithmetic/sqrt.js';
|
|
|
53
53
|
export { createSquare } from './function/arithmetic/square.js';
|
|
54
54
|
export { createSubtract } from './function/arithmetic/subtract.js';
|
|
55
55
|
export { createXgcd } from './function/arithmetic/xgcd.js';
|
|
56
|
+
export { createInvmod } from './function/arithmetic/invmod.js';
|
|
56
57
|
export { createDotMultiply } from './function/arithmetic/dotMultiply.js';
|
|
57
58
|
export { createBitAnd } from './function/bitwise/bitAnd.js';
|
|
58
59
|
export { createBitNot } from './function/bitwise/bitNot.js';
|
|
@@ -240,7 +241,10 @@ export { createStirlingS2 } from './function/combinatorics/stirlingS2.js';
|
|
|
240
241
|
export { createBellNumbers } from './function/combinatorics/bellNumbers.js';
|
|
241
242
|
export { createCatalan } from './function/combinatorics/catalan.js';
|
|
242
243
|
export { createComposition } from './function/combinatorics/composition.js';
|
|
244
|
+
export { createLeafCount } from './function/algebra/leafCount.js';
|
|
243
245
|
export { createSimplify } from './function/algebra/simplify.js';
|
|
246
|
+
export { createSimplifyCore } from './function/algebra/simplifyCore.js';
|
|
247
|
+
export { createResolve } from './function/algebra/resolve.js';
|
|
244
248
|
export { createDerivative } from './function/algebra/derivative.js';
|
|
245
249
|
export { createRationalize } from './function/algebra/rationalize.js';
|
|
246
250
|
export { createReviver } from './json/reviver.js';
|
|
@@ -13,7 +13,9 @@ export { createChainClass } from './type/chain/Chain.js';
|
|
|
13
13
|
export { createHelp } from './expression/function/help.js';
|
|
14
14
|
export { createChain } from './type/chain/function/chain.js'; // algebra
|
|
15
15
|
|
|
16
|
+
export { createResolve } from './function/algebra/resolve.js';
|
|
16
17
|
export { createSimplify } from './function/algebra/simplify.js';
|
|
18
|
+
export { createSimplifyCore } from './function/algebra/simplifyCore.js';
|
|
17
19
|
export { createDerivative } from './function/algebra/derivative.js';
|
|
18
20
|
export { createRationalize } from './function/algebra/rationalize.js'; // arithmetic
|
|
19
21
|
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { factory } from '../../utils/factory.js';
|
|
2
|
+
var name = 'leafCount';
|
|
3
|
+
var dependencies = ['parse', 'typed'];
|
|
4
|
+
export var createLeafCount = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
5
|
+
var {
|
|
6
|
+
parse,
|
|
7
|
+
typed
|
|
8
|
+
} = _ref;
|
|
9
|
+
|
|
10
|
+
// This does the real work, but we don't have to recurse through
|
|
11
|
+
// a typed call if we separate it out
|
|
12
|
+
function countLeaves(node) {
|
|
13
|
+
var count = 0;
|
|
14
|
+
node.forEach(n => {
|
|
15
|
+
count += countLeaves(n);
|
|
16
|
+
});
|
|
17
|
+
return count || 1;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Gives the number of "leaf nodes" in the parse tree of the given expression
|
|
21
|
+
* A leaf node is one that has no subexpressions, essentially either a
|
|
22
|
+
* symbol or a constant. Note that `5!` has just one leaf, the '5'; the
|
|
23
|
+
* unary factorial operator does not add a leaf. On the other hand,
|
|
24
|
+
* function symbols do add leaves, so `sin(x)/cos(x)` has four leaves.
|
|
25
|
+
*
|
|
26
|
+
* The `simplify()` function should generally not increase the `leafCount()`
|
|
27
|
+
* of an expression, although currently there is no guarantee that it never
|
|
28
|
+
* does so. In many cases, `simplify()` reduces the leaf count.
|
|
29
|
+
*
|
|
30
|
+
* Syntax:
|
|
31
|
+
*
|
|
32
|
+
* leafCount(expr)
|
|
33
|
+
*
|
|
34
|
+
* Examples:
|
|
35
|
+
*
|
|
36
|
+
* math.leafCount('x') // 1
|
|
37
|
+
* math.leafCount(math.parse('a*d-b*c')) // 4
|
|
38
|
+
* math.leafCount('[a,b;c,d][0,1]') // 6
|
|
39
|
+
*
|
|
40
|
+
* See also:
|
|
41
|
+
*
|
|
42
|
+
* simplify
|
|
43
|
+
*
|
|
44
|
+
* @param {Node|string} expr The expression to count the leaves of
|
|
45
|
+
*
|
|
46
|
+
* @return {number} The number of leaves of `expr`
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
return typed(name, {
|
|
52
|
+
string: function string(expr) {
|
|
53
|
+
return this(parse(expr));
|
|
54
|
+
},
|
|
55
|
+
Node: function Node(expr) {
|
|
56
|
+
return countLeaves(expr);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { isInteger } from '../../utils/number.js';
|
|
2
2
|
import { factory } from '../../utils/factory.js';
|
|
3
3
|
import { createSimplifyConstant } from './simplify/simplifyConstant.js';
|
|
4
|
-
import { createSimplifyCore } from './simplify/simplifyCore.js';
|
|
5
4
|
var name = 'rationalize';
|
|
6
|
-
var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', '
|
|
5
|
+
var dependencies = ['config', 'typed', 'equal', 'isZero', 'add', 'subtract', 'multiply', 'divide', 'pow', 'parse', 'simplifyCore', 'simplify', '?bignumber', '?fraction', 'mathWithTransform', 'matrix', 'AccessorNode', 'ArrayNode', 'ConstantNode', 'FunctionNode', 'IndexNode', 'ObjectNode', 'OperatorNode', 'SymbolNode', 'ParenthesisNode'];
|
|
7
6
|
export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
8
7
|
var {
|
|
9
8
|
config,
|
|
@@ -16,13 +15,19 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
16
15
|
divide,
|
|
17
16
|
pow,
|
|
18
17
|
parse,
|
|
18
|
+
simplifyCore,
|
|
19
19
|
simplify,
|
|
20
20
|
fraction,
|
|
21
21
|
bignumber,
|
|
22
22
|
mathWithTransform,
|
|
23
|
+
matrix,
|
|
24
|
+
AccessorNode,
|
|
25
|
+
ArrayNode,
|
|
23
26
|
ConstantNode,
|
|
24
|
-
OperatorNode,
|
|
25
27
|
FunctionNode,
|
|
28
|
+
IndexNode,
|
|
29
|
+
ObjectNode,
|
|
30
|
+
OperatorNode,
|
|
26
31
|
SymbolNode,
|
|
27
32
|
ParenthesisNode
|
|
28
33
|
} = _ref;
|
|
@@ -30,25 +35,17 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
30
35
|
typed,
|
|
31
36
|
config,
|
|
32
37
|
mathWithTransform,
|
|
38
|
+
matrix,
|
|
33
39
|
fraction,
|
|
34
40
|
bignumber,
|
|
41
|
+
AccessorNode,
|
|
42
|
+
ArrayNode,
|
|
35
43
|
ConstantNode,
|
|
36
|
-
OperatorNode,
|
|
37
44
|
FunctionNode,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var simplifyCore = createSimplifyCore({
|
|
41
|
-
equal,
|
|
42
|
-
isZero,
|
|
43
|
-
add,
|
|
44
|
-
subtract,
|
|
45
|
-
multiply,
|
|
46
|
-
divide,
|
|
47
|
-
pow,
|
|
48
|
-
ConstantNode,
|
|
45
|
+
IndexNode,
|
|
46
|
+
ObjectNode,
|
|
49
47
|
OperatorNode,
|
|
50
|
-
|
|
51
|
-
ParenthesisNode
|
|
48
|
+
SymbolNode
|
|
52
49
|
});
|
|
53
50
|
/**
|
|
54
51
|
* Transform a rationalizable expression in a rational fraction.
|
|
@@ -93,13 +90,13 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
93
90
|
* @param {Object|boolean} optional scope of expression or true for already evaluated rational expression at input
|
|
94
91
|
* @param {Boolean} detailed optional True if return an object, false if return expression node (default)
|
|
95
92
|
*
|
|
96
|
-
* @return {Object | Node} The rational polynomial of `expr` or
|
|
97
|
-
* {
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
93
|
+
* @return {Object | Node} The rational polynomial of `expr` or an object
|
|
94
|
+
* `{expression, numerator, denominator, variables, coefficients}`, where
|
|
95
|
+
* `expression` is a `Node` with the node simplified expression,
|
|
96
|
+
* `numerator` is a `Node` with the simplified numerator of expression,
|
|
97
|
+
* `denominator` is a `Node` or `boolean` with the simplified denominator or `false` (if there is no denominator),
|
|
98
|
+
* `variables` is an array with variable names,
|
|
99
|
+
* and `coefficients` is an array with coefficients of numerator sorted by increased exponent
|
|
103
100
|
* {Expression Node} node simplified expression
|
|
104
101
|
*
|
|
105
102
|
*/
|
|
@@ -132,6 +129,12 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
132
129
|
var polyRet = polynomial(expr, scope, true, setRules.firstRules); // Check if expression is a rationalizable polynomial
|
|
133
130
|
|
|
134
131
|
var nVars = polyRet.variables.length;
|
|
132
|
+
var noExactFractions = {
|
|
133
|
+
exactFractions: false
|
|
134
|
+
};
|
|
135
|
+
var withExactFractions = {
|
|
136
|
+
exactFractions: true
|
|
137
|
+
};
|
|
135
138
|
expr = polyRet.expression;
|
|
136
139
|
|
|
137
140
|
if (nVars >= 1) {
|
|
@@ -142,18 +145,16 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
142
145
|
|
|
143
146
|
var rules;
|
|
144
147
|
var eDistrDiv = true;
|
|
145
|
-
var redoInic = false;
|
|
146
|
-
expr = simplify(expr, setRules.firstRules, {}, {
|
|
147
|
-
exactFractions: false
|
|
148
|
-
}); // Apply the initial rules, including succ div rules
|
|
148
|
+
var redoInic = false; // Apply the initial rules, including succ div rules:
|
|
149
149
|
|
|
150
|
+
expr = simplify(expr, setRules.firstRules, {}, noExactFractions);
|
|
150
151
|
var s;
|
|
151
152
|
|
|
152
153
|
while (true) {
|
|
153
|
-
//
|
|
154
|
+
// Alternate applying successive division rules and distr.div.rules
|
|
155
|
+
// until there are no more changes:
|
|
154
156
|
rules = eDistrDiv ? setRules.distrDivRules : setRules.sucDivRules;
|
|
155
|
-
expr = simplify(expr, rules);
|
|
156
|
-
|
|
157
|
+
expr = simplify(expr, rules, {}, withExactFractions);
|
|
157
158
|
eDistrDiv = !eDistrDiv; // Swap between Distr.Div and Succ. Div. Rules
|
|
158
159
|
|
|
159
160
|
s = expr.toString();
|
|
@@ -168,14 +169,11 @@ export var createRationalize = /* #__PURE__ */factory(name, dependencies, _ref =
|
|
|
168
169
|
|
|
169
170
|
if (redoInic) {
|
|
170
171
|
// Apply first rules again without succ div rules (if there are changes)
|
|
171
|
-
expr = simplify(expr, setRules.firstRulesAgain, {},
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
172
|
+
expr = simplify(expr, setRules.firstRulesAgain, {}, noExactFractions);
|
|
173
|
+
} // Apply final rules:
|
|
174
|
+
|
|
175
175
|
|
|
176
|
-
expr = simplify(expr, setRules.finalRules, {},
|
|
177
|
-
exactFractions: false
|
|
178
|
-
}); // Apply final rules
|
|
176
|
+
expr = simplify(expr, setRules.finalRules, {}, noExactFractions);
|
|
179
177
|
} // NVars >= 1
|
|
180
178
|
|
|
181
179
|
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { createMap, isMap } from '../../utils/map.js';
|
|
2
|
+
import { isFunctionNode, isNode, isOperatorNode, isParenthesisNode, isSymbolNode } from '../../utils/is.js';
|
|
3
|
+
import { factory } from '../../utils/factory.js';
|
|
4
|
+
var name = 'resolve';
|
|
5
|
+
var dependencies = ['parse', 'ConstantNode', 'FunctionNode', 'OperatorNode', 'ParenthesisNode'];
|
|
6
|
+
export var createResolve = /* #__PURE__ */factory(name, dependencies, _ref => {
|
|
7
|
+
var {
|
|
8
|
+
parse,
|
|
9
|
+
ConstantNode,
|
|
10
|
+
FunctionNode,
|
|
11
|
+
OperatorNode,
|
|
12
|
+
ParenthesisNode
|
|
13
|
+
} = _ref;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* resolve(expr, scope) replaces variable nodes with their scoped values
|
|
17
|
+
*
|
|
18
|
+
* Syntax:
|
|
19
|
+
*
|
|
20
|
+
* resolve(expr, scope)
|
|
21
|
+
*
|
|
22
|
+
* Examples:
|
|
23
|
+
*
|
|
24
|
+
* math.resolve('x + y', {x:1, y:2}) // Node {1 + 2}
|
|
25
|
+
* math.resolve(math.parse('x+y'), {x:1, y:2}) // Node {1 + 2}
|
|
26
|
+
* math.simplify('x+y', {x:2, y:'x+x'}).toString() // "6"
|
|
27
|
+
*
|
|
28
|
+
* See also:
|
|
29
|
+
*
|
|
30
|
+
* simplify, evaluate
|
|
31
|
+
*
|
|
32
|
+
* @param {Node} node
|
|
33
|
+
* The expression tree to be simplified
|
|
34
|
+
* @param {Object} scope
|
|
35
|
+
* Scope specifying variables to be resolved
|
|
36
|
+
* @return {Node} Returns `node` with variables recursively substituted.
|
|
37
|
+
* @throws {ReferenceError}
|
|
38
|
+
* If there is a cyclic dependency among the variables in `scope`,
|
|
39
|
+
* resolution is impossible and a ReferenceError is thrown.
|
|
40
|
+
*/
|
|
41
|
+
function resolve(node, scope) {
|
|
42
|
+
var within = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : new Set();
|
|
43
|
+
|
|
44
|
+
// note `within`:
|
|
45
|
+
// `within` is not documented, since it is for internal cycle
|
|
46
|
+
// detection only
|
|
47
|
+
if (!scope) {
|
|
48
|
+
return node;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (!isMap(scope)) {
|
|
52
|
+
scope = createMap(scope);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (isSymbolNode(node)) {
|
|
56
|
+
if (within.has(node.name)) {
|
|
57
|
+
var variables = Array.from(within).join(', ');
|
|
58
|
+
throw new ReferenceError("recursive loop of variable definitions among {".concat(variables, "}"));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
var value = scope.get(node.name);
|
|
62
|
+
|
|
63
|
+
if (isNode(value)) {
|
|
64
|
+
var nextWithin = new Set(within);
|
|
65
|
+
nextWithin.add(node.name);
|
|
66
|
+
return resolve(value, scope, nextWithin);
|
|
67
|
+
} else if (typeof value === 'number') {
|
|
68
|
+
return parse(String(value));
|
|
69
|
+
} else if (value !== undefined) {
|
|
70
|
+
return new ConstantNode(value);
|
|
71
|
+
} else {
|
|
72
|
+
return node;
|
|
73
|
+
}
|
|
74
|
+
} else if (isOperatorNode(node)) {
|
|
75
|
+
var args = node.args.map(function (arg) {
|
|
76
|
+
return resolve(arg, scope, within);
|
|
77
|
+
});
|
|
78
|
+
return new OperatorNode(node.op, node.fn, args, node.implicit);
|
|
79
|
+
} else if (isParenthesisNode(node)) {
|
|
80
|
+
return new ParenthesisNode(resolve(node.content, scope, within));
|
|
81
|
+
} else if (isFunctionNode(node)) {
|
|
82
|
+
var _args = node.args.map(function (arg) {
|
|
83
|
+
return resolve(arg, scope, within);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
return new FunctionNode(node.name, _args);
|
|
87
|
+
} // Otherwise just recursively resolve any children (might also work
|
|
88
|
+
// for some of the above special cases)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
return node.map(child => resolve(child, scope, within));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return resolve;
|
|
95
|
+
});
|