carl
24.04
Computer ARithmetic Library
|
Includes the algorithms 6.2 and 6.3 from the book Algorithms for Computer Algebra by Geddes, Czaper, Labahn. More...
#include <MultivariateHensel.h>
Public Member Functions | |
DiophantineEquations (unsigned p, unsigned k) | |
std::vector< Polynomial > | solveMultivariateDiophantine (const std::vector< Polynomial > &a, const MultiPoly &c, const std::map< Variable, GFNumber< Integer >> &I, unsigned d) const |
Solve in the domain Z_(p^k)[x_!,...,x_v] the multivariate polynomial diophantine equation sigma_1 * b_1 + ... More... | |
std::vector< Polynomial > | univariateDiophantine (const std::vector< Polynomial > &a, Variable::Arg x, unsigned m) const |
Solve in Z_(p^k)[x] the univariate polynomial Diophantine equation: s_1 x b_1 + ... More... | |
Private Types | |
typedef UnivariatePolynomial< GFNumber< Integer > > | Polynomial |
typedef MultivariatePolynomial< GFNumber< Integer > > | MultiPoly |
Private Member Functions | |
std::vector< Polynomial > | MultiTermEEAlift (const std::vector< Polynomial > &a) const |
std::vector< Polynomial > | EEAlift (Polynomial a, Polynomial b) const |
EEAlift computes s,t such that s*a + tb == 1 (mod p^k) with deg(s) < deg(b) and deg(t) < deg(a). More... | |
Private Attributes | |
const GaloisField< Integer > * | mGf_pk |
const GaloisField< Integer > * | mGf_p |
Includes the algorithms 6.2 and 6.3 from the book Algorithms for Computer Algebra by Geddes, Czaper, Labahn.
The Algorithms are used to computer the Multivariate GCD.
Definition at line 25 of file MultivariateHensel.h.
|
private |
Definition at line 28 of file MultivariateHensel.h.
|
private |
Definition at line 27 of file MultivariateHensel.h.
|
inline |
Definition at line 33 of file MultivariateHensel.h.
|
inlineprivate |
EEAlift computes s,t such that s*a + tb == 1 (mod p^k) with deg(s) < deg(b) and deg(t) < deg(a).
Assumption GCD(a mod p, b mod p) = 1 in Z_p[x]
a | Polynomial in Z_p^k[x] |
b | Polynomial in Z_p^k[x] |
Definition at line 200 of file MultivariateHensel.h.
|
inlineprivate |
Definition at line 164 of file MultivariateHensel.h.
|
inline |
Solve in the domain Z_(p^k)[x_!,...,x_v] the multivariate polynomial diophantine equation sigma_1 * b_1 + ...
sigma_r * b_r = c (mod <I^(d+1), p^k>) where, in terms of the given list of polynomials a_1,...,a_r the polynomials b_i, i = 1,...,r, are defined by: b_i = a_1 * ... * a_(i-1) * a_(i+1) * ... * a_r. The unique solution sigma_i, i = 1,...,r, will be computed such that degree(sigma_i,x_i) < degree(a_i,x_1).
Conditions: (1) p must not divide lcoeff(a_i mod I), i = 1,...,r; (2) A_i mod <I,p>, i = 1,...,r, must be pairwise relatively prime in Z_p[x_1]; (3) degree(c,x_1) < sum(degree(a_i,x_1), i = 1,...,r)
The prime integer p and the positive integer k must bei specified in the constructor.
a | A list a of r > 1 polynomials in the domain Z_(p^k)[x_1,...,x_v]. |
c | A polynomial c from Z_(p^k)[x_1,...,x_v]. |
I | A list of equations [x_2 = alpha_2,...,x_v = alpha_v]. |
d | A nonnegative integer d specifying the maximum total degree with respect to x_2,...,x_v of the desired result. |
Definition at line 65 of file MultivariateHensel.h.
|
inline |
Solve in Z_(p^k)[x] the univariate polynomial Diophantine equation: s_1 x b_1 + ...
s_r x b_r === x^m (mod p^k) where in terms of the given list a: [a_1, ... a_r] the polynomials b_i for i = 1...r are defined by: b_i = a_1 x ... x a_{i-1} x a_{i+1} x ... x a_r The unique solution s_1,... s_r, will be computed such that deg(s_i) < deg(a_i).
Definition at line 139 of file MultivariateHensel.h.
|
private |
Definition at line 30 of file MultivariateHensel.h.
|
private |
Definition at line 29 of file MultivariateHensel.h.