nerdamer 1.1.13 → 2.0.0-rc.2
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/BREAKING_CHANGES.md +244 -5
- package/LICENSE.md +184 -0
- package/README.md +232 -318
- package/dist/bundle.js +2 -0
- package/dist/bundle.js.LICENSE.txt +7 -0
- package/dist/parser.js +2 -0
- package/dist/parser.js.LICENSE.txt +7 -0
- package/docs-data/parser-functions.json +2248 -0
- package/index.d.ts +10 -426
- package/output/algebra/adapters.d.ts +3 -0
- package/output/algebra/adapters.js +11 -0
- package/output/algebra/algorithms/arith.d.ts +84 -0
- package/output/algebra/algorithms/arith.js +324 -0
- package/output/algebra/algorithms/groebnerBase.d.ts +161 -0
- package/output/algebra/algorithms/groebnerBase.js +929 -0
- package/output/algebra/dispatch.d.ts +1 -0
- package/output/algebra/dispatch.js +25 -0
- package/output/algebra/factor/factor.d.ts +77 -0
- package/output/algebra/factor/factor.js +245 -0
- package/output/algebra/gcd/gcd.d.ts +30 -0
- package/output/algebra/gcd/gcd.js +95 -0
- package/output/algebra/groebner.d.ts +21 -0
- package/output/algebra/groebner.js +36 -0
- package/output/algebra/partfrac.d.ts +19 -0
- package/output/algebra/partfrac.js +365 -0
- package/output/algebra/polynomial/ModularSparsePolynomial.d.ts +131 -0
- package/output/algebra/polynomial/ModularSparsePolynomial.js +378 -0
- package/output/algebra/polynomial/ModularSparsePolynomialFactor.d.ts +40 -0
- package/output/algebra/polynomial/ModularSparsePolynomialFactor.js +661 -0
- package/output/algebra/polynomial/SparsePolynomialFactor.d.ts +64 -0
- package/output/algebra/polynomial/SparsePolynomialFactor.js +492 -0
- package/output/algebra/polynomial/SparsePolynomialGcd.d.ts +29 -0
- package/output/algebra/polynomial/SparsePolynomialGcd.js +259 -0
- package/output/algebra/polynomial/SparsePolynomialMultivariateFactor.d.ts +82 -0
- package/output/algebra/polynomial/SparsePolynomialMultivariateFactor.js +604 -0
- package/output/algebra/polynomial/modularGcd.d.ts +40 -0
- package/output/algebra/polynomial/modularGcd.js +365 -0
- package/output/algebra/polynomialize.d.ts +20 -0
- package/output/algebra/polynomialize.js +26 -0
- package/output/algebra/simplify/complexsimp.d.ts +7 -0
- package/output/algebra/simplify/complexsimp.js +24 -0
- package/output/algebra/simplify/factorCommon.d.ts +13 -0
- package/output/algebra/simplify/factorCommon.js +136 -0
- package/output/algebra/simplify/funcsimp.d.ts +26 -0
- package/output/algebra/simplify/funcsimp.js +633 -0
- package/output/algebra/simplify/invtrigrewrite.d.ts +10 -0
- package/output/algebra/simplify/invtrigrewrite.js +96 -0
- package/output/algebra/simplify/ratsimp.d.ts +21 -0
- package/output/algebra/simplify/ratsimp.js +140 -0
- package/output/algebra/simplify/simplify.d.ts +25 -0
- package/output/algebra/simplify/simplify.js +237 -0
- package/output/algebra/simplify/trigreduce.d.ts +38 -0
- package/output/algebra/simplify/trigreduce.js +424 -0
- package/output/algebra/simplify/trigrewrite.d.ts +17 -0
- package/output/algebra/simplify/trigrewrite.js +156 -0
- package/output/algebra/simplify/trigsimp.d.ts +11 -0
- package/output/algebra/simplify/trigsimp.js +369 -0
- package/output/algebra/simplify/utils.d.ts +32 -0
- package/output/algebra/simplify/utils.js +56 -0
- package/output/algebra/utils.d.ts +32 -0
- package/output/algebra/utils.js +48 -0
- package/output/api/advanced.d.ts +8 -0
- package/output/api/advanced.js +18 -0
- package/output/api/algebra.d.ts +17 -0
- package/output/api/algebra.js +35 -0
- package/output/api/assumptions.d.ts +4 -0
- package/output/api/assumptions.js +11 -0
- package/output/api/calculus.d.ts +10 -0
- package/output/api/calculus.js +22 -0
- package/output/api/core.d.ts +17 -0
- package/output/api/core.js +41 -0
- package/output/api/debug.d.ts +16 -0
- package/output/api/debug.js +23 -0
- package/output/api/languages/deu.d.ts +3 -0
- package/output/api/languages/deu.js +266 -0
- package/output/api/languages/fra.d.ts +3 -0
- package/output/api/languages/fra.js +266 -0
- package/output/api/languages/ita.d.ts +3 -0
- package/output/api/languages/ita.js +266 -0
- package/output/api/languages/nld.d.ts +3 -0
- package/output/api/languages/nld.js +266 -0
- package/output/api/languages/por.d.ts +3 -0
- package/output/api/languages/por.js +266 -0
- package/output/api/languages/spa.d.ts +3 -0
- package/output/api/languages/spa.js +266 -0
- package/output/api/parser.d.ts +93 -0
- package/output/api/parser.js +18 -0
- package/output/api/solve.d.ts +10 -0
- package/output/api/solve.js +17 -0
- package/output/api/structures.d.ts +10 -0
- package/output/api/structures.js +23 -0
- package/output/calculus/adapters.d.ts +8 -0
- package/output/calculus/adapters.js +41 -0
- package/output/calculus/derivative/diff.d.ts +30 -0
- package/output/calculus/derivative/diff.js +241 -0
- package/output/calculus/dispatch.d.ts +1 -0
- package/output/calculus/dispatch.js +25 -0
- package/output/calculus/fresnel.d.ts +16 -0
- package/output/calculus/fresnel.js +39 -0
- package/output/calculus/integrate/byParts.d.ts +18 -0
- package/output/calculus/integrate/byParts.js +339 -0
- package/output/calculus/integrate/bySubstitution.d.ts +135 -0
- package/output/calculus/integrate/bySubstitution.js +411 -0
- package/output/calculus/integrate/integrate.d.ts +38 -0
- package/output/calculus/integrate/integrate.js +652 -0
- package/output/calculus/integrate/integrationTable.d.ts +2 -0
- package/output/calculus/integrate/integrationTable.js +914 -0
- package/output/calculus/integrate/utils.d.ts +28 -0
- package/output/calculus/integrate/utils.js +96 -0
- package/output/calculus/laplace/ilaplace.d.ts +31 -0
- package/output/calculus/laplace/ilaplace.js +192 -0
- package/output/calculus/laplace/ilaplaceTable.d.ts +2 -0
- package/output/calculus/laplace/ilaplaceTable.js +200 -0
- package/output/calculus/laplace/laplace.d.ts +22 -0
- package/output/calculus/laplace/laplace.js +109 -0
- package/output/calculus/laplace/laplaceTable.d.ts +2 -0
- package/output/calculus/laplace/laplaceTable.js +187 -0
- package/output/calculus/limit/limit.d.ts +35 -0
- package/output/calculus/limit/limit.js +1183 -0
- package/output/calculus/limit/limitsTable.d.ts +2 -0
- package/output/calculus/limit/limitsTable.js +7 -0
- package/output/core/Settings.d.ts +32 -0
- package/output/core/Settings.js +68 -0
- package/output/core/classes/assumption/Assumption.d.ts +218 -0
- package/output/core/classes/assumption/Assumption.js +609 -0
- package/output/core/classes/assumption/assertiveFunctions.d.ts +6 -0
- package/output/core/classes/assumption/assertiveFunctions.js +64 -0
- package/output/core/classes/assumption/assume.d.ts +90 -0
- package/output/core/classes/assumption/assume.js +145 -0
- package/output/core/classes/assumption/dispatch.d.ts +1 -0
- package/output/core/classes/assumption/dispatch.js +11 -0
- package/output/core/classes/collection/Collection.d.ts +107 -0
- package/output/core/classes/collection/Collection.js +240 -0
- package/output/core/classes/complex/Complex.d.ts +109 -0
- package/output/core/classes/complex/Complex.js +153 -0
- package/output/core/classes/decimalSet/DecimalSet.d.ts +226 -0
- package/output/core/classes/decimalSet/DecimalSet.js +454 -0
- package/output/core/classes/dictionary/Dictionary.d.ts +102 -0
- package/output/core/classes/dictionary/Dictionary.js +216 -0
- package/output/core/classes/equation/Equation.d.ts +256 -0
- package/output/core/classes/equation/Equation.js +350 -0
- package/output/core/classes/expression/CoeffObject.d.ts +100 -0
- package/output/core/classes/expression/CoeffObject.js +197 -0
- package/output/core/classes/expression/Expression.d.ts +1691 -0
- package/output/core/classes/expression/Expression.js +2381 -0
- package/output/core/classes/expression/analysis.d.ts +25 -0
- package/output/core/classes/expression/analysis.js +218 -0
- package/output/core/classes/expression/collect.d.ts +9 -0
- package/output/core/classes/expression/collect.js +49 -0
- package/output/core/classes/expression/format.d.ts +54 -0
- package/output/core/classes/expression/format.js +340 -0
- package/output/core/classes/expression/products.d.ts +23 -0
- package/output/core/classes/expression/products.js +115 -0
- package/output/core/classes/expression/shortcuts.d.ts +35 -0
- package/output/core/classes/expression/shortcuts.js +129 -0
- package/output/core/classes/expression/traversal.d.ts +31 -0
- package/output/core/classes/expression/traversal.js +216 -0
- package/output/core/classes/expression/trig.d.ts +25 -0
- package/output/core/classes/expression/trig.js +40 -0
- package/output/core/classes/expression/utils.d.ts +61 -0
- package/output/core/classes/expression/utils.js +235 -0
- package/output/core/classes/lookupTable/LookupTable.d.ts +12 -0
- package/output/core/classes/lookupTable/LookupTable.js +55 -0
- package/output/core/classes/matrix/Matrix.d.ts +227 -0
- package/output/core/classes/matrix/Matrix.js +901 -0
- package/output/core/classes/matrix/Sylvester.d.ts +11 -0
- package/output/core/classes/matrix/Sylvester.js +54 -0
- package/output/core/classes/matrix/dispatch.d.ts +1 -0
- package/output/core/classes/matrix/dispatch.js +19 -0
- package/output/core/classes/matrix/functions.d.ts +28 -0
- package/output/core/classes/matrix/functions.js +57 -0
- package/output/core/classes/matrix/utils.d.ts +9 -0
- package/output/core/classes/matrix/utils.js +22 -0
- package/output/core/classes/parser/Parser.d.ts +493 -0
- package/output/core/classes/parser/Parser.js +1863 -0
- package/output/core/classes/parser/Token.d.ts +58 -0
- package/output/core/classes/parser/Token.js +137 -0
- package/output/core/classes/parser/constants.d.ts +162 -0
- package/output/core/classes/parser/constants.js +229 -0
- package/output/core/classes/parser/controlFlowSignals.d.ts +38 -0
- package/output/core/classes/parser/controlFlowSignals.js +60 -0
- package/output/core/classes/parser/helpers.d.ts +21 -0
- package/output/core/classes/parser/helpers.js +42 -0
- package/output/core/classes/parser/operations/add.d.ts +15 -0
- package/output/core/classes/parser/operations/add.js +236 -0
- package/output/core/classes/parser/operations/comma.d.ts +7 -0
- package/output/core/classes/parser/operations/comma.js +11 -0
- package/output/core/classes/parser/operations/compare.d.ts +21 -0
- package/output/core/classes/parser/operations/compare.js +474 -0
- package/output/core/classes/parser/operations/divide.d.ts +2 -0
- package/output/core/classes/parser/operations/divide.js +72 -0
- package/output/core/classes/parser/operations/functions.d.ts +46 -0
- package/output/core/classes/parser/operations/functions.js +438 -0
- package/output/core/classes/parser/operations/multiply.d.ts +11 -0
- package/output/core/classes/parser/operations/multiply.js +328 -0
- package/output/core/classes/parser/operations/power.d.ts +48 -0
- package/output/core/classes/parser/operations/power.js +673 -0
- package/output/core/classes/parser/operations/subtract.d.ts +3 -0
- package/output/core/classes/parser/operations/subtract.js +36 -0
- package/output/core/classes/parser/preprocess.d.ts +7 -0
- package/output/core/classes/parser/preprocess.js +246 -0
- package/output/core/classes/parser/scripting/controlFlow.d.ts +23 -0
- package/output/core/classes/parser/scripting/controlFlow.js +279 -0
- package/output/core/classes/parser/scripting/deferred.d.ts +4 -0
- package/output/core/classes/parser/scripting/deferred.js +65 -0
- package/output/core/classes/parser/scripting/dispatch.d.ts +1 -0
- package/output/core/classes/parser/scripting/dispatch.js +62 -0
- package/output/core/classes/parser/scripting/evaluate.d.ts +23 -0
- package/output/core/classes/parser/scripting/evaluate.js +128 -0
- package/output/core/classes/parser/scripting/functions.d.ts +14 -0
- package/output/core/classes/parser/scripting/functions.js +59 -0
- package/output/core/classes/parser/scripting/scope.d.ts +8 -0
- package/output/core/classes/parser/scripting/scope.js +132 -0
- package/output/core/classes/parser/types.d.ts +130 -0
- package/output/core/classes/parser/types.js +2 -0
- package/output/core/classes/parser/wrappers/IndexedReference.d.ts +31 -0
- package/output/core/classes/parser/wrappers/IndexedReference.js +68 -0
- package/output/core/classes/parser/wrappers/KeyValuePair.d.ts +24 -0
- package/output/core/classes/parser/wrappers/KeyValuePair.js +51 -0
- package/output/core/classes/polynomial/Polynomial.d.ts +504 -0
- package/output/core/classes/polynomial/Polynomial.js +1195 -0
- package/output/core/classes/polynomial/SparsePolynomial.d.ts +221 -0
- package/output/core/classes/polynomial/SparsePolynomial.js +824 -0
- package/output/core/classes/polynomial/SparsePolynomialAdapter.d.ts +56 -0
- package/output/core/classes/polynomial/SparsePolynomialAdapter.js +241 -0
- package/output/core/classes/polynomial/Term.d.ts +222 -0
- package/output/core/classes/polynomial/Term.js +430 -0
- package/output/core/classes/polynomial/adapters.d.ts +18 -0
- package/output/core/classes/polynomial/adapters.js +33 -0
- package/output/core/classes/polynomial/dispatch.d.ts +1 -0
- package/output/core/classes/polynomial/dispatch.js +14 -0
- package/output/core/classes/polynomial/functions.d.ts +77 -0
- package/output/core/classes/polynomial/functions.js +189 -0
- package/output/core/classes/polynomial/utils.d.ts +62 -0
- package/output/core/classes/polynomial/utils.js +207 -0
- package/output/core/classes/rational/Rational.d.ts +501 -0
- package/output/core/classes/rational/Rational.js +829 -0
- package/output/core/classes/seq/SEQ.d.ts +13 -0
- package/output/core/classes/seq/SEQ.js +137 -0
- package/output/core/classes/valuesSet/ValuesSet.d.ts +187 -0
- package/output/core/classes/valuesSet/ValuesSet.js +399 -0
- package/output/core/classes/vector/Vector.d.ts +222 -0
- package/output/core/classes/vector/Vector.js +501 -0
- package/output/core/classes/vector/dispatch.d.ts +1 -0
- package/output/core/classes/vector/dispatch.js +11 -0
- package/output/core/classes/vector/functions.d.ts +28 -0
- package/output/core/classes/vector/functions.js +47 -0
- package/output/core/common/classes/MathematicalAggregate.d.ts +53 -0
- package/output/core/common/classes/MathematicalAggregate.js +149 -0
- package/output/core/common/classes/Scope.d.ts +62 -0
- package/output/core/common/classes/Scope.js +122 -0
- package/output/core/common/classes/StructuredEntity.d.ts +55 -0
- package/output/core/common/classes/StructuredEntity.js +151 -0
- package/output/core/common/common.d.ts +62 -0
- package/output/core/common/common.js +74 -0
- package/output/core/common/functions/functions.d.ts +14 -0
- package/output/core/common/functions/functions.js +33 -0
- package/output/core/common/functions/structuredEntityUtils.d.ts +27 -0
- package/output/core/common/functions/structuredEntityUtils.js +40 -0
- package/output/core/converters/BaseConverter.d.ts +97 -0
- package/output/core/converters/BaseConverter.js +405 -0
- package/output/core/converters/Converter.d.ts +111 -0
- package/output/core/converters/Converter.js +806 -0
- package/output/core/converters/Pattern.d.ts +71 -0
- package/output/core/converters/Pattern.js +302 -0
- package/output/core/dispatch.d.ts +52 -0
- package/output/core/dispatch.js +26 -0
- package/output/core/errors.d.ts +316 -0
- package/output/core/errors.js +349 -0
- package/output/core/fullFunctions.d.ts +7 -0
- package/output/core/fullFunctions.js +31 -0
- package/output/core/functions/bigint/bigint.d.ts +133 -0
- package/output/core/functions/bigint/bigint.js +444 -0
- package/output/core/functions/bigint/primeFactor.d.ts +51 -0
- package/output/core/functions/bigint/primeFactor.js +267 -0
- package/output/core/functions/bigint/primes.d.ts +1 -0
- package/output/core/functions/bigint/primes.js +11 -0
- package/output/core/functions/build/definitions.d.ts +12 -0
- package/output/core/functions/build/definitions.js +139 -0
- package/output/core/functions/build/index.d.ts +32 -0
- package/output/core/functions/build/index.js +136 -0
- package/output/core/functions/complex.d.ts +90 -0
- package/output/core/functions/complex.dispatch.d.ts +1 -0
- package/output/core/functions/complex.dispatch.js +16 -0
- package/output/core/functions/complex.js +482 -0
- package/output/core/functions/decimal.d.ts +24 -0
- package/output/core/functions/decimal.js +665 -0
- package/output/core/functions/expand/expand.d.ts +42 -0
- package/output/core/functions/expand/expand.js +376 -0
- package/output/core/functions/fresnelNumeric.d.ts +12 -0
- package/output/core/functions/fresnelNumeric.js +123 -0
- package/output/core/functions/numeric.d.ts +140 -0
- package/output/core/functions/numeric.js +790 -0
- package/output/core/functions/rationalNormalization.d.ts +11 -0
- package/output/core/functions/rationalNormalization.js +117 -0
- package/output/core/functions/setFunction.d.ts +19 -0
- package/output/core/functions/setFunction.js +75 -0
- package/output/core/functions/string.d.ts +26 -0
- package/output/core/functions/string.js +102 -0
- package/output/core/functions/subst.d.ts +90 -0
- package/output/core/functions/subst.js +506 -0
- package/output/core/functions/utils.d.ts +24 -0
- package/output/core/functions/utils.js +51 -0
- package/output/core/parserFunctions.d.ts +7 -0
- package/output/core/parserFunctions.js +25 -0
- package/output/core/types.d.ts +48 -0
- package/output/core/types.js +2 -0
- package/output/index.d.ts +359 -0
- package/output/index.js +739 -0
- package/output/math/defint/defint.d.ts +18 -0
- package/output/math/defint/defint.js +60 -0
- package/output/math/defint/defintDecimal.d.ts +37 -0
- package/output/math/defint/defintDecimal.js +321 -0
- package/output/math/defint/defintNative.d.ts +57 -0
- package/output/math/defint/defintNative.js +281 -0
- package/output/math/dispatch.d.ts +1 -0
- package/output/math/dispatch.js +101 -0
- package/output/math/geometry.d.ts +12 -0
- package/output/math/geometry.js +55 -0
- package/output/math/math.d.ts +695 -0
- package/output/math/math.js +1955 -0
- package/output/math/trig.d.ts +518 -0
- package/output/math/trig.js +1444 -0
- package/output/math/trunc.d.ts +19 -0
- package/output/math/trunc.js +36 -0
- package/output/math/utils.d.ts +66 -0
- package/output/math/utils.js +219 -0
- package/output/solve/classes/DecimalMatrix.d.ts +17 -0
- package/output/solve/classes/DecimalMatrix.js +86 -0
- package/output/solve/classes/FunctionSolver.d.ts +135 -0
- package/output/solve/classes/FunctionSolver.js +433 -0
- package/output/solve/classes/MultivariateSolver.d.ts +84 -0
- package/output/solve/classes/MultivariateSolver.js +240 -0
- package/output/solve/classes/PolynomialSolver.d.ts +104 -0
- package/output/solve/classes/PolynomialSolver.js +492 -0
- package/output/solve/classes/SolutionSet.d.ts +172 -0
- package/output/solve/classes/SolutionSet.js +434 -0
- package/output/solve/classes/Solver.d.ts +17 -0
- package/output/solve/classes/Solver.js +132 -0
- package/output/solve/classes/SymbolicSolver.d.ts +74 -0
- package/output/solve/classes/SymbolicSolver.js +601 -0
- package/output/solve/dispatch.d.ts +1 -0
- package/output/solve/dispatch.js +13 -0
- package/output/solve/linsolve.d.ts +53 -0
- package/output/solve/linsolve.js +233 -0
- package/output/solve/solve.d.ts +44 -0
- package/output/solve/solve.js +368 -0
- package/output/solve/solveSystem.d.ts +31 -0
- package/output/solve/solveSystem.js +266 -0
- package/output/solve/utils.d.ts +10 -0
- package/output/solve/utils.js +58 -0
- package/output/utils/array.d.ts +42 -0
- package/output/utils/array.js +98 -0
- package/output/utils/debug.d.ts +131 -0
- package/output/utils/debug.js +296 -0
- package/output/utils/decimal.d.ts +3 -0
- package/output/utils/decimal.js +16 -0
- package/output/utils/numeric.d.ts +14 -0
- package/output/utils/numeric.js +51 -0
- package/output/utils/object.d.ts +26 -0
- package/output/utils/object.js +56 -0
- package/package.json +178 -57
- package/.travis.yml +0 -3
- package/Algebra.js +0 -4568
- package/CODE_OF_CONDUCT.md +0 -46
- package/CONTRIBUTING.md +0 -14
- package/Calculus.js +0 -2675
- package/Extra.js +0 -622
- package/Solve.js +0 -1783
- package/all.js +0 -16
- package/all.min.js +0 -1
- package/gulpfile.js +0 -16
- package/index.html +0 -158
- package/license.txt +0 -19
- package/nerdamer.core.js +0 -12510
- package/spec/LaTeX.spec.js +0 -302
- package/spec/TeXConvert.spec.js +0 -8
- package/spec/algebra.spec.js +0 -287
- package/spec/basic_parser.spec.js +0 -134
- package/spec/build.spec.js +0 -131
- package/spec/calculus.spec.js +0 -183
- package/spec/core.spec.js +0 -2970
- package/spec/extra.spec.js +0 -54
- package/spec/solve.spec.js +0 -126
- package/spec/support/jasmine.json +0 -11
- package/spec/support/utils.js +0 -42
- package/spec/text.spec.js +0 -132
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module sparsePolynomial
|
|
3
|
+
*
|
|
4
|
+
* Sparse polynomial storage with exact bigint coefficients and exponents.
|
|
5
|
+
*
|
|
6
|
+
* External references consulted for monomial representation and ordering:
|
|
7
|
+
* - SymPy monomial operations:
|
|
8
|
+
* https://github.com/sympy/sympy/blob/120ee85f346f6292b763cc195afda4f907260d4a/sympy/polys/monomials.py
|
|
9
|
+
* - SymPy lexicographic, graded lexicographic, and graded reverse lexicographic orders:
|
|
10
|
+
* https://github.com/sympy/sympy/blob/120ee85f346f6292b763cc195afda4f907260d4a/sympy/polys/orderings.py
|
|
11
|
+
* - SymPy coefficient content and primitive-part operations:
|
|
12
|
+
* https://github.com/sympy/sympy/blob/120ee85f346f6292b763cc195afda4f907260d4a/sympy/polys/densetools.py
|
|
13
|
+
* - SymPy sparse polynomial division:
|
|
14
|
+
* https://github.com/sympy/sympy/blob/120ee85f346f6292b763cc195afda4f907260d4a/sympy/polys/sparsetools.py
|
|
15
|
+
*/
|
|
16
|
+
export type MonomialOrder = 'lex' | 'grlex' | 'grevlex';
|
|
17
|
+
export type SparsePolynomialTerm = Readonly<{
|
|
18
|
+
coefficient: bigint;
|
|
19
|
+
exponents: readonly bigint[];
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Sparse polynomial with bigint coefficients and bigint exponents.
|
|
23
|
+
*
|
|
24
|
+
* The variable count is part of the polynomial rather than inferred from its support.
|
|
25
|
+
* Exponent vectors therefore have one exact entry for every variable, including zero
|
|
26
|
+
* polynomials and constants. The internal map key is an encoding detail and is never
|
|
27
|
+
* exposed or parsed by polynomial algorithms.
|
|
28
|
+
*/
|
|
29
|
+
export declare class SparsePolynomial {
|
|
30
|
+
private readonly termsByKey;
|
|
31
|
+
readonly variableCount: number;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a sparse polynomial in a ring with a fixed number of variables.
|
|
34
|
+
*
|
|
35
|
+
* Duplicate monomials are combined and zero coefficients are removed.
|
|
36
|
+
*
|
|
37
|
+
* @param variableCount - Number of variables in the polynomial ring.
|
|
38
|
+
* @param terms - Terms with exponent vectors of exactly variableCount entries.
|
|
39
|
+
*/
|
|
40
|
+
constructor(variableCount: number, terms?: Iterable<SparsePolynomialTerm>);
|
|
41
|
+
/**
|
|
42
|
+
* Verifies that an exponent vector belongs to a ring and contains only
|
|
43
|
+
* non-negative exact integer exponents.
|
|
44
|
+
*/
|
|
45
|
+
private static assertExponents;
|
|
46
|
+
/**
|
|
47
|
+
* Compares exponent vectors using the three global monomial orders required by
|
|
48
|
+
* the polynomial algorithms.
|
|
49
|
+
*/
|
|
50
|
+
static compareMonomials(a: readonly bigint[], b: readonly bigint[], order: MonomialOrder): number;
|
|
51
|
+
/** Creates a constant polynomial in a ring with variableCount variables. */
|
|
52
|
+
static constant(variableCount: number, coefficient: bigint): SparsePolynomial;
|
|
53
|
+
/**
|
|
54
|
+
* Encodes an exponent vector only for map identity.
|
|
55
|
+
*
|
|
56
|
+
* The polynomial retains the exponent vector beside the key, so no decoder exists.
|
|
57
|
+
*/
|
|
58
|
+
private static keyOf;
|
|
59
|
+
/** Creates a one-term polynomial. */
|
|
60
|
+
static monomial(variableCount: number, coefficient: bigint, exponents: readonly bigint[]): SparsePolynomial;
|
|
61
|
+
/** Creates the variable at variableIndex with coefficient one. */
|
|
62
|
+
static variable(variableCount: number, variableIndex: number): SparsePolynomial;
|
|
63
|
+
/** Creates the zero polynomial in a ring with variableCount variables. */
|
|
64
|
+
static zero(variableCount: number): SparsePolynomial;
|
|
65
|
+
/**
|
|
66
|
+
* Adds another polynomial in the same ring.
|
|
67
|
+
*
|
|
68
|
+
* Like monomials are combined exactly and zero coefficients are removed from
|
|
69
|
+
* the returned polynomial.
|
|
70
|
+
*/
|
|
71
|
+
add(other: SparsePolynomial): SparsePolynomial;
|
|
72
|
+
/**
|
|
73
|
+
* Returns the coefficient of one monomial.
|
|
74
|
+
*
|
|
75
|
+
* @param exponents - Exact exponent vector for the requested monomial.
|
|
76
|
+
*/
|
|
77
|
+
coefficient(exponents: readonly bigint[]): bigint;
|
|
78
|
+
/**
|
|
79
|
+
* Returns the coefficient polynomial at one exact power of a selected variable.
|
|
80
|
+
*
|
|
81
|
+
* The selected variable remains in the ring with exponent zero so recursive
|
|
82
|
+
* algorithms can preserve the original coordinate layout.
|
|
83
|
+
*/
|
|
84
|
+
coefficientIn(variableIndex: number, exponent: bigint): SparsePolynomial;
|
|
85
|
+
/** Returns the constant coefficient, or zero when the constant monomial is absent. */
|
|
86
|
+
constantTerm(): bigint;
|
|
87
|
+
/**
|
|
88
|
+
* Returns the positive greatest common divisor of all coefficients.
|
|
89
|
+
*
|
|
90
|
+
* The zero polynomial has coefficient content zero.
|
|
91
|
+
*/
|
|
92
|
+
content(): bigint;
|
|
93
|
+
/**
|
|
94
|
+
* Returns the degree in one variable.
|
|
95
|
+
*
|
|
96
|
+
* The zero polynomial has no degree and returns null.
|
|
97
|
+
*/
|
|
98
|
+
degree(variableIndex: number): bigint | null;
|
|
99
|
+
/**
|
|
100
|
+
* Differentiates with respect to one ring variable.
|
|
101
|
+
*
|
|
102
|
+
* Coefficients and exponents stay in bigint arithmetic, including exponents
|
|
103
|
+
* above JavaScript's safe-integer range.
|
|
104
|
+
*/
|
|
105
|
+
derivative(variableIndex: number): SparsePolynomial;
|
|
106
|
+
/**
|
|
107
|
+
* Divides every term by one monomial when the quotient stays in the integer
|
|
108
|
+
* polynomial ring.
|
|
109
|
+
*
|
|
110
|
+
* Returns null when any coefficient or exponent is not exactly divisible.
|
|
111
|
+
*/
|
|
112
|
+
divideByMonomial(divisor: SparsePolynomialTerm): SparsePolynomial | null;
|
|
113
|
+
/**
|
|
114
|
+
* Divides all coefficients by an integer scalar.
|
|
115
|
+
*
|
|
116
|
+
* @throws RangeError When the scalar is zero or does not divide every coefficient.
|
|
117
|
+
*/
|
|
118
|
+
divideByScalarExact(divisor: bigint): SparsePolynomial;
|
|
119
|
+
/**
|
|
120
|
+
* Divides by one polynomial using exact integer coefficient arithmetic.
|
|
121
|
+
*
|
|
122
|
+
* Returns null as soon as the current leading term is not exactly divisible
|
|
123
|
+
* by the divisor leading term. A successful result therefore has zero
|
|
124
|
+
* remainder in the selected monomial order.
|
|
125
|
+
*/
|
|
126
|
+
divideExact(divisor: SparsePolynomial, order?: MonomialOrder): SparsePolynomial | null;
|
|
127
|
+
/** Returns whether both polynomials have the same ring and exact nonzero terms. */
|
|
128
|
+
equals(other: SparsePolynomial): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Substitutes one variable with an exact integer while retaining the same ring.
|
|
131
|
+
*
|
|
132
|
+
* Terms that become like terms after substitution are combined in the result.
|
|
133
|
+
*/
|
|
134
|
+
evaluateVariable(variableIndex: number, value: bigint): SparsePolynomial;
|
|
135
|
+
/**
|
|
136
|
+
* Substitutes several variables with exact integers in one sparse traversal.
|
|
137
|
+
*
|
|
138
|
+
* The selected coordinates remain in the polynomial ring with exponent zero.
|
|
139
|
+
*/
|
|
140
|
+
evaluateVariables(variableIndices: readonly number[], values: readonly bigint[]): SparsePolynomial;
|
|
141
|
+
/** Returns whether the polynomial is zero or contains only a constant term. */
|
|
142
|
+
isConstant(): boolean;
|
|
143
|
+
/** Returns whether the polynomial has no nonzero terms. */
|
|
144
|
+
isZero(): boolean;
|
|
145
|
+
/**
|
|
146
|
+
* Returns the coefficient polynomial of the highest power of one variable.
|
|
147
|
+
*
|
|
148
|
+
* The selected coordinate remains present with exponent zero.
|
|
149
|
+
*/
|
|
150
|
+
leadingCoefficientIn(variableIndex: number): SparsePolynomial | null;
|
|
151
|
+
/**
|
|
152
|
+
* Returns the leading term under the requested monomial order.
|
|
153
|
+
*
|
|
154
|
+
* Variable priority follows exponent-vector index order.
|
|
155
|
+
*/
|
|
156
|
+
leadingTerm(order?: MonomialOrder): SparsePolynomialTerm | null;
|
|
157
|
+
/**
|
|
158
|
+
* Applies an exact bigint transformation to every stored coefficient while
|
|
159
|
+
* preserving the existing monomial keys and exponent vectors.
|
|
160
|
+
*/
|
|
161
|
+
mapCoefficients(mapper: (coefficient: bigint) => bigint): SparsePolynomial;
|
|
162
|
+
/** Returns the largest absolute coefficient, or zero for the zero polynomial. */
|
|
163
|
+
maxAbsoluteCoefficient(): bigint;
|
|
164
|
+
/**
|
|
165
|
+
* Multiplies by another polynomial in the same ring.
|
|
166
|
+
*
|
|
167
|
+
* Monomial exponents are added as bigints. The constructor combines products
|
|
168
|
+
* that land on the same monomial and removes coefficients that cancel to zero.
|
|
169
|
+
*/
|
|
170
|
+
multiply(other: SparsePolynomial): SparsePolynomial;
|
|
171
|
+
/**
|
|
172
|
+
* Computes the difference of two monomial-scaled polynomials in one sparse
|
|
173
|
+
* traversal. This avoids constructing the monomial factors and multiplication
|
|
174
|
+
* results used by fraction-free S-polynomials.
|
|
175
|
+
*/
|
|
176
|
+
monomialScaleSubtract(leftScalar: bigint, leftMonomialExponents: readonly bigint[], other: SparsePolynomial, rightScalar: bigint, rightMonomialExponents: readonly bigint[]): SparsePolynomial;
|
|
177
|
+
/**
|
|
178
|
+
* Computes a scaled subtraction where the right polynomial is also multiplied
|
|
179
|
+
* by one monomial. This avoids constructing the two scaled intermediate
|
|
180
|
+
* polynomials used by fraction-free reduction.
|
|
181
|
+
*/
|
|
182
|
+
scaleSubtractMonomial(leftScalar: bigint, other: SparsePolynomial, rightScalar: bigint, monomialExponents: readonly bigint[]): SparsePolynomial;
|
|
183
|
+
/**
|
|
184
|
+
* Returns the additive inverse of this polynomial.
|
|
185
|
+
*/
|
|
186
|
+
negate(): SparsePolynomial;
|
|
187
|
+
/**
|
|
188
|
+
* Makes the leading coefficient positive without changing coefficient content.
|
|
189
|
+
*/
|
|
190
|
+
normalizeLeadingSign(order?: MonomialOrder): SparsePolynomial;
|
|
191
|
+
/** Raises the polynomial to a non-negative exact integer power. */
|
|
192
|
+
pow(exponent: bigint): SparsePolynomial;
|
|
193
|
+
/**
|
|
194
|
+
* Divides by positive coefficient content while preserving the polynomial sign.
|
|
195
|
+
*/
|
|
196
|
+
primitivePart(): SparsePolynomial;
|
|
197
|
+
/**
|
|
198
|
+
* Multiplies every coefficient by an exact integer scalar.
|
|
199
|
+
*/
|
|
200
|
+
scale(scalar: bigint): SparsePolynomial;
|
|
201
|
+
/**
|
|
202
|
+
* Subtracts another polynomial in the same ring.
|
|
203
|
+
*/
|
|
204
|
+
subtract(other: SparsePolynomial): SparsePolynomial;
|
|
205
|
+
/** Number of stored nonzero terms. */
|
|
206
|
+
get termCount(): number;
|
|
207
|
+
/**
|
|
208
|
+
* Returns a copy of the stored terms.
|
|
209
|
+
*
|
|
210
|
+
* The exponent arrays themselves are frozen so callers cannot alter polynomial storage.
|
|
211
|
+
*/
|
|
212
|
+
terms(): readonly SparsePolynomialTerm[];
|
|
213
|
+
/**
|
|
214
|
+
* Returns the largest total degree among the stored monomials.
|
|
215
|
+
*
|
|
216
|
+
* The zero polynomial has no total degree and returns null.
|
|
217
|
+
*/
|
|
218
|
+
totalDegree(): bigint | null;
|
|
219
|
+
/** Returns the variable indices that occur with a positive exponent. */
|
|
220
|
+
variables(): readonly number[];
|
|
221
|
+
}
|