LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
berlekamp_support.hpp
浏览该文件的文档.
1#pragma once
3
5std::vector<int64_t> bk_reduce_to_mod_coeffs(const Polynomial<Rational>& poly, int64_t p);
6int64_t bk_mod_inverse(int64_t value, int64_t prime);
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);
10bool bk_is_suitable_prime(const Polynomial<Rational>& poly, int64_t prime);
11int64_t bk_select_prime(const Polynomial<Rational>& poly);
12std::vector<std::vector<int64_t>> bk_build_q_matrix(const std::vector<int64_t>& f, int64_t p);
13std::vector<std::vector<int64_t>> bk_null_space(
14 const std::vector<std::vector<int64_t>>& matrix, int64_t p);
15std::vector<std::vector<int64_t>> bk_split_factors(
16 const std::vector<int64_t>& polynomial,
17 const std::vector<std::vector<int64_t>>& basis, int dimension, int64_t prime);
18}
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 分解的素数。
const MultiPoly & b
__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