7void bk_div_mod(
const std::vector<int64_t>&
a,
const std::vector<int64_t>&
b,
8 int64_t p, std::vector<int64_t>& quotient, std::vector<int64_t>& remainder);
9std::vector<int64_t>
bk_gcd_mod(std::vector<int64_t>
a, std::vector<int64_t>
b, int64_t p);
12std::vector<std::vector<int64_t>>
bk_build_q_matrix(
const std::vector<int64_t>& f, int64_t p);
14 const std::vector<std::vector<int64_t>>& matrix, int64_t p);
16 const std::vector<int64_t>& polynomial,
17 const std::vector<std::vector<int64_t>>&
basis,
int dimension, int64_t
prime);
int64_t bk_mod_inverse(int64_t a, int64_t p)
模 p 下求乘法逆元.
std::vector< std::vector< int64_t > > bk_build_q_matrix(const std::vector< int64_t > &f, int64_t p)
构造 F_p 上的 Berlekamp 矩阵 Q。
std::vector< int64_t > bk_gcd_mod(std::vector< int64_t > a, std::vector< int64_t > b, int64_t p)
计算两个模 p 多项式的最大公因式.
void bk_div_mod(const std::vector< int64_t > &a, const std::vector< int64_t > &b, int64_t p, std::vector< int64_t > &q, std::vector< int64_t > &r)
模 p 多项式带余除法.
bool bk_is_suitable_prime(const Polynomial< Rational > &poly, int64_t prime)
判断素数是否保持多项式次数和无平方性质。
std::vector< std::vector< int64_t > > bk_null_space(const std::vector< std::vector< int64_t > > &Q, int64_t p)
std::vector< std::vector< int64_t > > bk_split_factors(const std::vector< int64_t > &f_coeffs, const std::vector< std::vector< int64_t > > &null_basis, int null_dim, int64_t p)
std::vector< int64_t > bk_reduce_to_mod_coeffs(const Polynomial< Rational > &poly, int64_t p)
以系数分母的 LCM 清除分母,再逐项取模 p。
int64_t bk_select_prime(const Polynomial< Rational > &poly)
从小素数表中选取适合 Berlekamp 分解的素数。
__attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult curve_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::shared_ptr< SymbolicExpr > & a
const std::vector< FGLMPoly > & basis
const std::string const ExprPtr & value