nerdamer 1.1.13 → 2.0.0-rc.1
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/LICENSE.md +184 -0
- package/README.md +293 -312
- 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 +1960 -0
- package/index.d.ts +10 -426
- package/output/algebra/adapters.d.ts +33 -0
- package/output/algebra/adapters.js +109 -0
- package/output/algebra/algorithms/arith.d.ts +84 -0
- package/output/algebra/algorithms/arith.js +323 -0
- package/output/algebra/algorithms/factor.d.ts +3 -0
- package/output/algebra/algorithms/factor.js +5 -0
- package/output/algebra/algorithms/factorMultivariate.d.ts +23 -0
- package/output/algebra/algorithms/factorMultivariate.js +2393 -0
- package/output/algebra/algorithms/factorUnivariate.d.ts +72 -0
- package/output/algebra/algorithms/factorUnivariate.js +1072 -0
- package/output/algebra/algorithms/gcd.d.ts +22 -0
- package/output/algebra/algorithms/gcd.js +690 -0
- package/output/algebra/algorithms/groebnerBase.d.ts +157 -0
- package/output/algebra/algorithms/groebnerBase.js +1166 -0
- package/output/algebra/algorithms/multiPoly/MultiPoly.d.ts +137 -0
- package/output/algebra/algorithms/multiPoly/MultiPoly.js +346 -0
- package/output/algebra/algorithms/poly.d.ts +228 -0
- package/output/algebra/algorithms/poly.js +1299 -0
- package/output/algebra/algorithms/rational.d.ts +17 -0
- package/output/algebra/algorithms/rational.js +115 -0
- package/output/algebra/factor/factor.d.ts +62 -0
- package/output/algebra/factor/factor.js +158 -0
- package/output/algebra/gcd/gcd.d.ts +29 -0
- package/output/algebra/gcd/gcd.js +141 -0
- package/output/algebra/groebner.d.ts +21 -0
- package/output/algebra/groebner.js +42 -0
- package/output/algebra/partfrac.d.ts +19 -0
- package/output/algebra/partfrac.js +398 -0
- package/output/algebra/polynomialize.d.ts +20 -0
- package/output/algebra/polynomialize.js +24 -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 +228 -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 +7 -0
- package/output/api/advanced.js +18 -0
- package/output/api/algebra.d.ts +17 -0
- package/output/api/algebra.js +32 -0
- package/output/api/assumptions.d.ts +4 -0
- package/output/api/assumptions.js +11 -0
- package/output/api/calculus.d.ts +9 -0
- package/output/api/calculus.js +21 -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/parser.d.ts +85 -0
- package/output/api/parser.js +16 -0
- package/output/api/solve.d.ts +10 -0
- package/output/api/solve.js +16 -0
- package/output/api/structures.d.ts +10 -0
- package/output/api/structures.js +22 -0
- package/output/calculus/derivative/diff.d.ts +30 -0
- package/output/calculus/derivative/diff.js +238 -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/adapters.d.ts +18 -0
- package/output/core/adapters.js +40 -0
- package/output/core/classes/assumption/Assumption.d.ts +218 -0
- package/output/core/classes/assumption/Assumption.js +605 -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/collection/Collection.d.ts +107 -0
- package/output/core/classes/collection/Collection.js +231 -0
- package/output/core/classes/complex/Complex.d.ts +99 -0
- package/output/core/classes/complex/Complex.js +135 -0
- package/output/core/classes/decimalSet/DecimalSet.d.ts +226 -0
- package/output/core/classes/decimalSet/DecimalSet.js +453 -0
- package/output/core/classes/dictionary/Dictionary.d.ts +102 -0
- package/output/core/classes/dictionary/Dictionary.js +213 -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 +198 -0
- package/output/core/classes/expression/Expression.d.ts +1674 -0
- package/output/core/classes/expression/Expression.js +2332 -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 +45 -0
- package/output/core/classes/expression/format.js +217 -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 +52 -0
- package/output/core/classes/expression/utils.js +189 -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 +889 -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/functions.d.ts +26 -0
- package/output/core/classes/matrix/functions.js +52 -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 +480 -0
- package/output/core/classes/parser/Parser.js +1812 -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 +160 -0
- package/output/core/classes/parser/constants.js +227 -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 +238 -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 +461 -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 +430 -0
- package/output/core/classes/parser/operations/multiply.d.ts +11 -0
- package/output/core/classes/parser/operations/multiply.js +321 -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 +35 -0
- package/output/core/classes/parser/preprocess.d.ts +14 -0
- package/output/core/classes/parser/preprocess.js +259 -0
- package/output/core/classes/parser/scripting/controlFlow.d.ts +121 -0
- package/output/core/classes/parser/scripting/controlFlow.js +355 -0
- package/output/core/classes/parser/scripting/evaluate.d.ts +10 -0
- package/output/core/classes/parser/scripting/evaluate.js +112 -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 +35 -0
- package/output/core/classes/parser/scripting/scope.js +155 -0
- package/output/core/classes/parser/types.d.ts +125 -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 +500 -0
- package/output/core/classes/polynomial/Polynomial.js +1149 -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/functions.d.ts +69 -0
- package/output/core/classes/polynomial/functions.js +126 -0
- package/output/core/classes/polynomial/utils.d.ts +62 -0
- package/output/core/classes/polynomial/utils.js +206 -0
- package/output/core/classes/rational/Rational.d.ts +504 -0
- package/output/core/classes/rational/Rational.js +779 -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 +179 -0
- package/output/core/classes/valuesSet/ValuesSet.js +381 -0
- package/output/core/classes/vector/Vector.d.ts +222 -0
- package/output/core/classes/vector/Vector.js +497 -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 +140 -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 +63 -0
- package/output/core/common/common.js +279 -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 +802 -0
- package/output/core/converters/Pattern.d.ts +71 -0
- package/output/core/converters/Pattern.js +302 -0
- package/output/core/dispatch.d.ts +34 -0
- package/output/core/dispatch.js +304 -0
- package/output/core/errors.d.ts +531 -0
- package/output/core/errors.js +621 -0
- package/output/core/functions/bigint/bigint.d.ts +121 -0
- package/output/core/functions/bigint/bigint.js +392 -0
- package/output/core/functions/bigint/primeFactor.d.ts +49 -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 +133 -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.js +482 -0
- package/output/core/functions/decimal.d.ts +24 -0
- package/output/core/functions/decimal.js +664 -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 +101 -0
- package/output/core/functions/subst.d.ts +90 -0
- package/output/core/functions/subst.js +498 -0
- package/output/core/functions/utils.d.ts +24 -0
- package/output/core/functions/utils.js +51 -0
- package/output/core/types.d.ts +48 -0
- package/output/core/types.js +2 -0
- package/output/index.d.ts +339 -0
- package/output/index.js +715 -0
- package/output/math/defint/defintDecimal.d.ts +37 -0
- package/output/math/defint/defintDecimal.js +320 -0
- package/output/math/defint/defintNative.d.ts +57 -0
- package/output/math/defint/defintNative.js +292 -0
- package/output/math/geometry.d.ts +8 -0
- package/output/math/geometry.js +32 -0
- package/output/math/math.d.ts +655 -0
- package/output/math/math.js +1811 -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 +60 -0
- package/output/math/utils.js +180 -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 +85 -0
- package/output/solve/classes/PolynomialSolver.js +292 -0
- package/output/solve/classes/SolutionSet.d.ts +153 -0
- package/output/solve/classes/SolutionSet.js +357 -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/linsolve.d.ts +51 -0
- package/output/solve/linsolve.js +225 -0
- package/output/solve/solve.d.ts +34 -0
- package/output/solve/solve.js +260 -0
- package/output/solve/solveSystem.d.ts +31 -0
- package/output/solve/solveSystem.js +290 -0
- package/output/solve/utils.d.ts +9 -0
- package/output/solve/utils.js +62 -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 +295 -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 +213 -57
- package/.travis.yml +0 -3
- package/Algebra.js +0 -4568
- package/BREAKING_CHANGES.md +0 -5
- 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,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module groebner
|
|
3
|
+
*
|
|
4
|
+
* Gröbner basis computation, elimination, ideal membership, and solving.
|
|
5
|
+
*
|
|
6
|
+
* This implementation is a Buchberger-style engine with:
|
|
7
|
+
* - configurable monomial order (LEX, GRLEX, GREVLEX)
|
|
8
|
+
* - sugar-strategy pair selection for performance
|
|
9
|
+
* - optional budgets and stats
|
|
10
|
+
* - fraction-free normal form helpers
|
|
11
|
+
* - elimination ideals
|
|
12
|
+
* - ideal membership testing
|
|
13
|
+
* - triangular back-substitution solver
|
|
14
|
+
*/
|
|
15
|
+
import { MultiPoly } from './multiPoly/MultiPoly';
|
|
16
|
+
/** Monomial order used for leading terms, pair processing, and reduction. */
|
|
17
|
+
export type MonomialOrder = 'LEX' | 'GRLEX' | 'GREVLEX';
|
|
18
|
+
/** Deterministic work counters captured when a Groebner resource budget is exceeded. */
|
|
19
|
+
export type GroebnerStats = {
|
|
20
|
+
/** Critical pairs removed from the processing queue. */
|
|
21
|
+
pairsPopped: number;
|
|
22
|
+
/** Pairs skipped because their leading monomials are relatively prime. */
|
|
23
|
+
pairsSkippedProduct: number;
|
|
24
|
+
/** Pairs skipped by Buchberger's chain criterion. */
|
|
25
|
+
pairsSkippedChain: number;
|
|
26
|
+
/** Processed pairs whose reduced S-polynomial was zero. */
|
|
27
|
+
pairsReducedToZero: number;
|
|
28
|
+
/** Nonzero reduced S-polynomials appended to the working basis. */
|
|
29
|
+
basisAppends: number;
|
|
30
|
+
};
|
|
31
|
+
/** Controls monomial order, result normalization, pair strategy, and deterministic budgets. */
|
|
32
|
+
export type GroebnerBasisOptions = {
|
|
33
|
+
/** Monomial order; defaults to `LEX`. Variable priority follows exponent index order. */
|
|
34
|
+
order?: MonomialOrder;
|
|
35
|
+
/**
|
|
36
|
+
* If true (default), return a reduced/normalized basis (canonicalize/interreduce/primitive normalize).
|
|
37
|
+
* If false, returns the raw Buchberger basis as produced by the pair loop.
|
|
38
|
+
*/
|
|
39
|
+
reduced?: boolean;
|
|
40
|
+
/** Hard cap on Buchberger pair iterations (deterministic, not time-based). */
|
|
41
|
+
maxPairsPopped?: number;
|
|
42
|
+
/** Hard cap on basis size (including initial generators). */
|
|
43
|
+
maxBasisSize?: number;
|
|
44
|
+
/**
|
|
45
|
+
* Pair selection strategy.
|
|
46
|
+
* - 'sugar' (default): use sugar degree heuristic for better performance
|
|
47
|
+
* - 'fifo': simple first-in first-out (original behavior)
|
|
48
|
+
*/
|
|
49
|
+
strategy?: 'sugar' | 'fifo';
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Thrown when a Groebner pair-count or basis-size budget is exhausted.
|
|
53
|
+
*
|
|
54
|
+
* {@link GroebnerBudgetExceeded.stats} is the live counter snapshot from the aborted
|
|
55
|
+
* computation. The error keeps that object by reference and does not freeze it.
|
|
56
|
+
*/
|
|
57
|
+
export declare class GroebnerBudgetExceeded extends Error {
|
|
58
|
+
/** Work counters at the point the budget was exceeded. */
|
|
59
|
+
readonly stats: GroebnerStats;
|
|
60
|
+
/**
|
|
61
|
+
* @param message - Human-readable budget condition.
|
|
62
|
+
* @param stats - Counter snapshot retained on the error.
|
|
63
|
+
*/
|
|
64
|
+
constructor(message: string, stats: GroebnerStats);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Computes a Groebner basis for an exact integer-coefficient ideal.
|
|
68
|
+
*
|
|
69
|
+
* @remarks
|
|
70
|
+
* Variable indices in every {@link MultiPoly} must agree with `vars`. The Buchberger
|
|
71
|
+
* engine uses fraction-free reduction. With `reduced: true`, it interreduces, removes
|
|
72
|
+
* coefficient content, normalizes leading signs, and makes a polynomial monic only
|
|
73
|
+
* when exact integer division permits it. The returned basis is sorted deterministically,
|
|
74
|
+
* and the routine works from normalized copies rather than editing the supplied generators.
|
|
75
|
+
*
|
|
76
|
+
* @param polys - Ideal generators over integer coefficients.
|
|
77
|
+
* @param vars - Variable names aligned with exponent indices.
|
|
78
|
+
* @param order - Monomial order; defaults to `LEX`.
|
|
79
|
+
* @param reduced - Return the normalized/interreduced basis; defaults to `true`.
|
|
80
|
+
* @returns New basis polynomials in deterministic presentation order.
|
|
81
|
+
*/
|
|
82
|
+
export declare function Groebner(polys: MultiPoly[], vars: string[], order?: MonomialOrder, reduced?: boolean): MultiPoly[];
|
|
83
|
+
/**
|
|
84
|
+
* Computes a Groebner basis with ordering, strategy, and budget control.
|
|
85
|
+
*
|
|
86
|
+
* @param polys - Exact integer-coefficient generators with consistent variable indices.
|
|
87
|
+
* @param opts - Ordering, normalization, pair-selection, and deterministic budget options.
|
|
88
|
+
* @returns New basis polynomials. Work statistics are exposed only when a budget is
|
|
89
|
+
* exceeded; successful calls return the basis itself.
|
|
90
|
+
* @throws {@link GroebnerBudgetExceeded} Thrown after a configured pair-count or
|
|
91
|
+
* basis-size limit is exceeded.
|
|
92
|
+
*/
|
|
93
|
+
export declare function groebnerBasisWithOptions(polys: readonly MultiPoly[], opts?: GroebnerBasisOptions): MultiPoly[];
|
|
94
|
+
/**
|
|
95
|
+
* Computes the part of the ideal that lies in the polynomial ring generated by `keepVars`.
|
|
96
|
+
*
|
|
97
|
+
* @param polys - Exact integer-coefficient generators.
|
|
98
|
+
* @param vars - All variables in exponent-index order. Variables to eliminate must
|
|
99
|
+
* precede retained variables for lexicographic elimination.
|
|
100
|
+
* @param keepVars - Variables to retain, expected to be a suffix of `vars`.
|
|
101
|
+
* @param opts - Reduction, pair strategy, and budgets; order is always `LEX`.
|
|
102
|
+
* @returns New basis polynomials involving only retained variables.
|
|
103
|
+
* @throws {@link GroebnerBudgetExceeded} Thrown when a configured budget is exceeded.
|
|
104
|
+
*/
|
|
105
|
+
export declare function eliminate(polys: MultiPoly[], vars: string[], keepVars: string[], opts?: Omit<GroebnerBasisOptions, 'order'>): MultiPoly[];
|
|
106
|
+
/**
|
|
107
|
+
* Tests exact ideal membership by reducing against a computed Groebner basis.
|
|
108
|
+
*
|
|
109
|
+
* @param f - Polynomial to test.
|
|
110
|
+
* @param polys - Exact integer-coefficient ideal generators.
|
|
111
|
+
* @param order - Monomial order; defaults to `LEX`.
|
|
112
|
+
* @param opts - Pair strategy and deterministic budgets.
|
|
113
|
+
* @returns Whether the normal form of `f` is zero.
|
|
114
|
+
* @throws {@link GroebnerBudgetExceeded} Thrown when basis computation exceeds a budget.
|
|
115
|
+
*/
|
|
116
|
+
export declare function idealMembership(f: MultiPoly, polys: MultiPoly[], order?: MonomialOrder, opts?: Omit<GroebnerBasisOptions, 'order' | 'reduced'>): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Reduces a polynomial by a basis or arbitrary reducer set using fraction-free arithmetic.
|
|
119
|
+
*
|
|
120
|
+
* @remarks
|
|
121
|
+
* This does not compute or verify a Groebner basis. The result is a canonical ideal
|
|
122
|
+
* normal form only when `basis` is already a basis for the selected order. Reduction
|
|
123
|
+
* works from normalized polynomial copies, leaving the supplied objects alone.
|
|
124
|
+
*
|
|
125
|
+
* @param f - Polynomial to reduce.
|
|
126
|
+
* @param basis - Reducers, normally a Groebner basis.
|
|
127
|
+
* @param order - Monomial order used to select leading terms.
|
|
128
|
+
* @returns The primitive-normalized remainder.
|
|
129
|
+
*/
|
|
130
|
+
export declare function reduceByBasis(f: MultiPoly, basis: readonly MultiPoly[], order?: MonomialOrder): MultiPoly;
|
|
131
|
+
/**
|
|
132
|
+
* Maps each solved variable to a reduced rational numerator/denominator pair.
|
|
133
|
+
*
|
|
134
|
+
* Only rational coordinates discovered by triangular back-substitution are represented.
|
|
135
|
+
*/
|
|
136
|
+
export type RationalSolution = Map<string, {
|
|
137
|
+
n: bigint;
|
|
138
|
+
d: bigint;
|
|
139
|
+
}>;
|
|
140
|
+
/**
|
|
141
|
+
* Solves a zero-dimensional polynomial system for rational coordinates.
|
|
142
|
+
*
|
|
143
|
+
* @remarks
|
|
144
|
+
* This is the low-level exact solver used with the Groebner representation, not the
|
|
145
|
+
* ordinary expression solver. It computes a reduced lexicographic basis, walks variables
|
|
146
|
+
* from least to most significant, applies the Rational Root Theorem to univariate
|
|
147
|
+
* constraints, and substitutes each partial assignment into its own basis copy.
|
|
148
|
+
* Irrational and complex roots are outside this routine's result set.
|
|
149
|
+
*
|
|
150
|
+
* @param polys - Exact integer-coefficient system generators.
|
|
151
|
+
* @param vars - Variables in lexicographic elimination order, most significant first.
|
|
152
|
+
* @param opts - Pair strategy and budgets forwarded to basis computation.
|
|
153
|
+
* @returns New solution maps. An empty array can mean inconsistency, no rational roots,
|
|
154
|
+
* or a non-finite/unsupported triangular result; these cases are not distinguished.
|
|
155
|
+
* @throws {@link GroebnerBudgetExceeded} Thrown when basis computation exceeds a budget.
|
|
156
|
+
*/
|
|
157
|
+
export declare function solve(polys: MultiPoly[], vars: string[], opts?: Omit<GroebnerBasisOptions, 'order' | 'reduced'>): RationalSolution[];
|