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,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module poly
|
|
3
|
+
*
|
|
4
|
+
* Core polynomial representation and operations.
|
|
5
|
+
*
|
|
6
|
+
* This file contains both univariate and multivariate utilities used by:
|
|
7
|
+
* - multivariate GCD (Zippel-style)
|
|
8
|
+
* - multivariate factorization (evaluation + Hensel lifting)
|
|
9
|
+
* - Gröbner basis computations
|
|
10
|
+
*
|
|
11
|
+
* Notes:
|
|
12
|
+
* - Univariate polynomials over Z are represented as coefficient arrays `ZPoly`.
|
|
13
|
+
* - Multivariate polynomials are represented by `MultiPoly` (see near bottom of file).
|
|
14
|
+
*/
|
|
15
|
+
import { MultiPoly } from './multiPoly/MultiPoly';
|
|
16
|
+
/**
|
|
17
|
+
* Univariate polynomial utilities over Z[x] (bigint coefficients)
|
|
18
|
+
* and over F_p[x] (explicit modulus carried in the polynomial object).
|
|
19
|
+
*
|
|
20
|
+
* Canonical exports:
|
|
21
|
+
* - Z[x]: z*
|
|
22
|
+
* - F_p[x]: fp*
|
|
23
|
+
*/
|
|
24
|
+
export type ZPoly = bigint[];
|
|
25
|
+
export type Vars = readonly string[];
|
|
26
|
+
export type InternalPoly = {
|
|
27
|
+
vars: Vars;
|
|
28
|
+
terms: Map<string, bigint>;
|
|
29
|
+
};
|
|
30
|
+
/** Returns a trimmed copy (does not mutate input). */
|
|
31
|
+
export declare function zTrim(a: ZPoly): ZPoly;
|
|
32
|
+
/** True iff polynomial is identically 0. */
|
|
33
|
+
export declare function zIsZero(a: ZPoly): boolean;
|
|
34
|
+
export declare function zLC(a: ZPoly): bigint;
|
|
35
|
+
export declare function zSub(a: ZPoly, b: ZPoly): ZPoly;
|
|
36
|
+
/** Returns q iff a = b*q exactly; otherwise null. */
|
|
37
|
+
export declare function zTryDivExact(a: ZPoly, b: ZPoly): ZPoly | null;
|
|
38
|
+
/** Returns q such that a = b*q. Throws if division is not exact. */
|
|
39
|
+
export declare function zDivExact(a: ZPoly, b: ZPoly): ZPoly;
|
|
40
|
+
export declare function zScale(a: ZPoly, k: bigint): ZPoly;
|
|
41
|
+
/**
|
|
42
|
+
* Normalize polynomial by extracting nonnegative content and fixing the sign
|
|
43
|
+
* so the leading coefficient is positive.
|
|
44
|
+
*
|
|
45
|
+
* - For 0 returns { content: 0, primitive: 0 }
|
|
46
|
+
* - For nonzero returns { content: c, primitive: p } where:
|
|
47
|
+
* - c = gcd(|coeffs|) >= 1
|
|
48
|
+
* - p has gcd(|coeffs|)=1
|
|
49
|
+
* - LC(p) > 0
|
|
50
|
+
*/
|
|
51
|
+
export declare function zNormalizePrimitiveSign(a: ZPoly): {
|
|
52
|
+
content: bigint;
|
|
53
|
+
primitive: ZPoly;
|
|
54
|
+
};
|
|
55
|
+
/** Normalize only by sign (units in Z are ±1). Does not strip content. */
|
|
56
|
+
export declare function zNormalizeSign(aIn: ZPoly): ZPoly;
|
|
57
|
+
/** Primitive part with positive leading coefficient. */
|
|
58
|
+
export declare function zPrimitivePart(a: ZPoly): ZPoly;
|
|
59
|
+
/** Pseudo-remainder of `a` by `b` over Z[x]. */
|
|
60
|
+
export declare function zPseudoRemainder(aIn: ZPoly, bIn: ZPoly): ZPoly;
|
|
61
|
+
/** Primitive PRS GCD over Z[x] with positive leading coefficient. */
|
|
62
|
+
export declare function zGcdPrimitivePRS(fIn: ZPoly, gIn: ZPoly): ZPoly;
|
|
63
|
+
/** Full GCD over Z[x], including gcd(content(f), content(g)). */
|
|
64
|
+
export declare function zGcdFull(fIn: ZPoly, gIn: ZPoly): ZPoly;
|
|
65
|
+
export declare function zDerivative(a: ZPoly): ZPoly;
|
|
66
|
+
/** Multiply by x^k. */
|
|
67
|
+
export declare function zShift(a: ZPoly, k: number): ZPoly;
|
|
68
|
+
export type FpPoly = {
|
|
69
|
+
p: bigint;
|
|
70
|
+
coeffs: ZPoly;
|
|
71
|
+
};
|
|
72
|
+
export declare function fpAdd(a: FpPoly, b: FpPoly): FpPoly;
|
|
73
|
+
export declare function fpSub(a: FpPoly, b: FpPoly): FpPoly;
|
|
74
|
+
export declare function fpScale(a: FpPoly, k: bigint): FpPoly;
|
|
75
|
+
export declare function fpMul(a: FpPoly, b: FpPoly): FpPoly;
|
|
76
|
+
export declare function fpDivRem(a: FpPoly, b: FpPoly): {
|
|
77
|
+
q: FpPoly;
|
|
78
|
+
r: FpPoly;
|
|
79
|
+
};
|
|
80
|
+
export declare function fpGCD(a: FpPoly, b: FpPoly): FpPoly;
|
|
81
|
+
/** Trim and reduce coefficients modulo m (does not mutate input). */
|
|
82
|
+
export declare function zTrimMod(a: ZPoly, m: bigint): ZPoly;
|
|
83
|
+
/** Map coefficients to symmetric representatives modulo m (each in (-m/2, m/2]). */
|
|
84
|
+
export declare function zToSymmetricMod(poly: ZPoly, m: bigint): ZPoly;
|
|
85
|
+
export declare function zAddMod(a: ZPoly, b: ZPoly, m: bigint): ZPoly;
|
|
86
|
+
export declare function zSubMod(a: ZPoly, b: ZPoly, m: bigint): ZPoly;
|
|
87
|
+
export declare function zScaleMod(a: ZPoly, k: bigint, m: bigint): ZPoly;
|
|
88
|
+
export declare function zMulMod(a: ZPoly, b: ZPoly, m: bigint): ZPoly;
|
|
89
|
+
/**
|
|
90
|
+
* Polynomial long division in (Z/mZ)[x] assuming the leading coefficient of b
|
|
91
|
+
* is invertible modulo m.
|
|
92
|
+
*/
|
|
93
|
+
export declare function zDivRemMod(a: ZPoly, b: ZPoly, m: bigint): {
|
|
94
|
+
q: ZPoly;
|
|
95
|
+
r: ZPoly;
|
|
96
|
+
};
|
|
97
|
+
export declare function isOnePoly(p: MultiPoly): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Return a trimmed clone of p (removes zero coefficients).
|
|
100
|
+
* MultiPoly does not guarantee trimming after every operation; keep this
|
|
101
|
+
* as the single canonical normalization entry point for algorithms.
|
|
102
|
+
*/
|
|
103
|
+
export declare function mvNormalize(p: MultiPoly): MultiPoly;
|
|
104
|
+
/**
|
|
105
|
+
* Divide by coefficient content, returning {content, primitive}.
|
|
106
|
+
* For the zero polynomial returns {0, 0}.
|
|
107
|
+
*/
|
|
108
|
+
export declare function mvDivideByCoeffContent(p: MultiPoly): {
|
|
109
|
+
content: bigint;
|
|
110
|
+
primitive: MultiPoly;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Normalize by extracting coefficient content and fixing sign so the
|
|
114
|
+
* lex-leading term coefficient is positive.
|
|
115
|
+
*
|
|
116
|
+
* - For 0 returns { content: 0, primitive: 0 }
|
|
117
|
+
* - For nonzero returns { content: c>=1, primitive } with:
|
|
118
|
+
* - coeff-content(primitive)=1
|
|
119
|
+
* - lex-leading term coefficient > 0
|
|
120
|
+
*/
|
|
121
|
+
export declare function mvNormalizePrimitiveSignLex(p: MultiPoly): {
|
|
122
|
+
content: bigint;
|
|
123
|
+
primitive: MultiPoly;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Normalize the sign of a polynomial that is univariate in `varIndex` without changing its content.
|
|
127
|
+
*
|
|
128
|
+
* IMPORTANT: This is intended for evaluation/interpolation pipelines where dividing by coefficient
|
|
129
|
+
* content would introduce a point-dependent scaling and break reconstruction.
|
|
130
|
+
*/
|
|
131
|
+
export declare function mvNormalizeSignUnivariateInVar(p: MultiPoly, varIndex: number): MultiPoly;
|
|
132
|
+
export declare function denseToKey(exps: readonly number[]): string;
|
|
133
|
+
/** Return the variable indices that occur in p, sorted ascending. */
|
|
134
|
+
export declare function mvVariablesSorted(p: MultiPoly): number[];
|
|
135
|
+
export declare function mapCombineInPlace<K, V>(dest: Map<K, V>, src: ReadonlyMap<K, V>, combine: (a: V, b: V) => V, isZero: (v: V) => boolean, zero: () => V): void;
|
|
136
|
+
/** Add two polynomials. */
|
|
137
|
+
export declare function addPoly(a: MultiPoly, b: MultiPoly): MultiPoly;
|
|
138
|
+
/** Subtract b from a. */
|
|
139
|
+
export declare function subPoly(a: MultiPoly, b: MultiPoly): MultiPoly;
|
|
140
|
+
/** Negate polynomial. */
|
|
141
|
+
export declare function negPoly(a: MultiPoly): MultiPoly;
|
|
142
|
+
/** Multiply all coefficients of a polynomial by a scalar. */
|
|
143
|
+
export declare function scalePoly(a: MultiPoly, k: bigint): MultiPoly;
|
|
144
|
+
/** Multiply polynomials. */
|
|
145
|
+
export declare function mulPoly(a: MultiPoly, b: MultiPoly): MultiPoly;
|
|
146
|
+
/** Structural equality of two polynomials (assumes both are already trimmed/normalized). */
|
|
147
|
+
export declare function equalPoly(a: MultiPoly, b: MultiPoly): boolean;
|
|
148
|
+
/**
|
|
149
|
+
* Leading term in lex order (highest exponents lexicographically).
|
|
150
|
+
* Returns the dense exponent vector (length nVars) and its coefficient.
|
|
151
|
+
*/
|
|
152
|
+
export declare function leadTermLex(p: MultiPoly, nVars: number): {
|
|
153
|
+
exp: number[];
|
|
154
|
+
coeff: bigint;
|
|
155
|
+
} | null;
|
|
156
|
+
/**
|
|
157
|
+
* Compute a conservative number of variables from the support of one or more polynomials.
|
|
158
|
+
* Returns maxVarIndex+1 across all terms (or 0 if all are zero).
|
|
159
|
+
*/
|
|
160
|
+
export declare function mvNumVars(...polys: MultiPoly[]): number;
|
|
161
|
+
/**
|
|
162
|
+
* Exact division A/B in Z[x0..] using the canonical lex-leading-term algorithm.
|
|
163
|
+
* Returns null if division is not exact.
|
|
164
|
+
*/
|
|
165
|
+
export declare function mvExactDiv(A: MultiPoly, B: MultiPoly): MultiPoly | null;
|
|
166
|
+
/**
|
|
167
|
+
* Exact division by a monomial (single-term polynomial).
|
|
168
|
+
* Returns null if `m` is not a monomial or division is not exact.
|
|
169
|
+
*/
|
|
170
|
+
export declare function mvExactDivByMonomial(p: MultiPoly, m: MultiPoly): MultiPoly | null;
|
|
171
|
+
export declare function monoDividesDense(a: readonly number[], b: readonly number[]): boolean;
|
|
172
|
+
export declare function monoSubDense(b: readonly number[], a: readonly number[]): number[];
|
|
173
|
+
/**
|
|
174
|
+
* Substitute a single variable (by index) with an integer value.
|
|
175
|
+
* The chosen variable's exponent is set to 0 in every term.
|
|
176
|
+
*/
|
|
177
|
+
export declare function substituteVarIndex(p: MultiPoly, varIndex: number, value: bigint): MultiPoly;
|
|
178
|
+
/**
|
|
179
|
+
* Remove a variable index from a polynomial by shifting indices > varIndex down.
|
|
180
|
+
* (Assumes the removed variable is no longer used, but handles exponents safely.)
|
|
181
|
+
*/
|
|
182
|
+
export declare function removeVarIndex(p: MultiPoly, varIndex: number): MultiPoly;
|
|
183
|
+
/**
|
|
184
|
+
* Add a variable index to a polynomial by shifting indices >= varIndex up.
|
|
185
|
+
*/
|
|
186
|
+
export declare function addVarIndex(p: MultiPoly, varIndex: number): MultiPoly;
|
|
187
|
+
/** Convert univariate coefficient array (number, low→high) to MultiPoly in `varIndex`. */
|
|
188
|
+
export declare function fromUnivariate(coeffs: number[], varIndex?: number): MultiPoly;
|
|
189
|
+
/**
|
|
190
|
+
* Convert MultiPoly to univariate coefficient array (numbers) if it only has one variable.
|
|
191
|
+
* Returns null if polynomial has more than one variable.
|
|
192
|
+
*/
|
|
193
|
+
export declare function toUnivariate(p: MultiPoly, varIndex?: number): number[] | null;
|
|
194
|
+
/**
|
|
195
|
+
* View multivariate polynomial as univariate in varIndex with polynomial coefficients.
|
|
196
|
+
* Returns array of [coefficient polynomial, degree] pairs sorted by degree.
|
|
197
|
+
*/
|
|
198
|
+
export declare function viewAsUnivariate(p: MultiPoly, varIndex: number): Array<[MultiPoly, number]>;
|
|
199
|
+
/** Reconstruct polynomial from univariate view. */
|
|
200
|
+
export declare function fromUnivariateView(terms: Array<[MultiPoly, number]>, varIndex: number): MultiPoly;
|
|
201
|
+
/**
|
|
202
|
+
* Pseudo-division of multivariate polynomials viewed as univariate in `varIndex`.
|
|
203
|
+
* Returns [q, r] such that lc(b)^k * a = q*b + r with deg(r) < deg(b) in `varIndex`.
|
|
204
|
+
*/
|
|
205
|
+
export declare function pseudoDivide(a: MultiPoly, b: MultiPoly, varIndex: number): [MultiPoly, MultiPoly];
|
|
206
|
+
/**
|
|
207
|
+
* Primitive GCD for multivariate polynomials, computed by viewing the inputs
|
|
208
|
+
* as univariate in `varIndex` with multivariate coefficients.
|
|
209
|
+
*/
|
|
210
|
+
export declare function multiPolyGCD(a: MultiPoly, b: MultiPoly, varIndex: number): MultiPoly;
|
|
211
|
+
/**
|
|
212
|
+
* Content of a polynomial with respect to one variable, i.e. the gcd of the
|
|
213
|
+
* coefficient-polynomials in the univariate view.
|
|
214
|
+
*/
|
|
215
|
+
export declare function mvContentInVar(p: MultiPoly, varIndex: number): MultiPoly;
|
|
216
|
+
/**
|
|
217
|
+
* Primitive part of a polynomial relative to the univariate view in `varIndex`.
|
|
218
|
+
*/
|
|
219
|
+
export declare function primitivePart(p: MultiPoly, varIndex: number): MultiPoly;
|
|
220
|
+
/**
|
|
221
|
+
* Extract quadratic coefficients of `p` viewed as `A*v^2 + B*v + C`.
|
|
222
|
+
* Terms with degree > 2 in `v` are silently ignored.
|
|
223
|
+
*/
|
|
224
|
+
export declare function quadraticCoeffsInVar(p: MultiPoly, v: number): {
|
|
225
|
+
A: MultiPoly;
|
|
226
|
+
B: MultiPoly;
|
|
227
|
+
C: MultiPoly;
|
|
228
|
+
};
|