LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::anonymous_namespace{fglm_polynomial.cpp} 命名空间参考

函数

Monomial add_monomials (const Monomial &left, const Monomial &right, std::size_t num_vars)
bool reduce_leading_term (FGLMPoly &polynomial, const std::vector< FGLMPoly > &basis, const Monomial &leading, const MonomialOrder &order)
void subtract_leading_multiple (FGLMPoly &polynomial, const FGLMPoly &divisor, const Monomial &divisor_leading, const Monomial &leading, const MonomialOrder &order)
Monomial subtract_monomials (const Monomial &left, const Monomial &right, std::size_t num_vars)

函数说明

◆ add_monomials()

Monomial LMCAS::anonymous_namespace{fglm_polynomial.cpp}::add_monomials ( const Monomial & left,
const Monomial & right,
std::size_t num_vars )

在文件 fglm_polynomial.cpp 第 20 行定义.

21 {
22 Monomial result(num_vars, 0);
23 for (std::size_t i = 0; i < num_vars; ++i) {
24 const int left_value = i < left.size() ? left[i] : 0;
25 const int right_value = i < right.size() ? right[i] : 0;
26 result[i] = left_value + right_value;
27 }
28 return result;
29}
std::vector< int > Monomial
单项式类型,以整数向量表示各变量的指数
const ExprPtr & right

引用了 add_monomials() , 以及 LMCAS::right.

被这些函数引用 add_monomials() , 以及 subtract_leading_multiple().

函数调用图:
这是这个函数的调用关系图:

◆ reduce_leading_term()

bool LMCAS::anonymous_namespace{fglm_polynomial.cpp}::reduce_leading_term ( FGLMPoly & polynomial,
const std::vector< FGLMPoly > & basis,
const Monomial & leading,
const MonomialOrder & order )

在文件 fglm_polynomial.cpp 第 48 行定义.

50 {
51 for (const auto& divisor : basis) {
52 if (divisor.is_zero()) {
53 continue;
54 }
55 const Monomial divisor_leading = divisor.lead_monomial();
56 if (!divides_monomial(divisor_leading, leading)) {
57 continue;
58 }
60 polynomial, divisor, divisor_leading, leading, order);
61 return true;
62 }
63 return false;
64}
void subtract_leading_multiple(FGLMPoly &polynomial, const FGLMPoly &divisor, const Monomial &divisor_leading, const Monomial &leading, const MonomialOrder &order)
const std::vector< FGLMPoly > const MonomialOrder & order
bool divides_monomial(const Monomial &divisor, const Monomial &target)
判断 divisor 是否整除 target
const std::vector< FGLMPoly > & basis

引用了 LMCAS::basis, LMCAS::divides_monomial(), LMCAS::order, reduce_leading_term() , 以及 subtract_leading_multiple().

被这些函数引用 reduce_leading_term().

函数调用图:
这是这个函数的调用关系图:

◆ subtract_leading_multiple()

void LMCAS::anonymous_namespace{fglm_polynomial.cpp}::subtract_leading_multiple ( FGLMPoly & polynomial,
const FGLMPoly & divisor,
const Monomial & divisor_leading,
const Monomial & leading,
const MonomialOrder & order )

在文件 fglm_polynomial.cpp 第 31 行定义.

34 {
35 const Monomial quotient = subtract_monomials(
36 leading, divisor_leading, polynomial.num_vars);
37 const Rational coefficient =
38 polynomial.lead_coeff() / divisor.lead_coeff();
39 for (const auto& [monomial, value] : divisor.terms) {
40 polynomial.add_term(
41 add_monomials(quotient, monomial, polynomial.num_vars),
42 -(coefficient * value));
43 }
44 polynomial.sort_terms(order);
45 polynomial.normalize();
46}
Monomial add_monomials(const Monomial &left, const Monomial &right, std::size_t num_vars)
Monomial subtract_monomials(const Monomial &left, const Monomial &right, std::size_t num_vars)
const std::string const ExprPtr & value

引用了 add_monomials(), LMCAS::order, subtract_leading_multiple(), subtract_monomials() , 以及 LMCAS::value.

被这些函数引用 reduce_leading_term() , 以及 subtract_leading_multiple().

函数调用图:
这是这个函数的调用关系图:

◆ subtract_monomials()

Monomial LMCAS::anonymous_namespace{fglm_polynomial.cpp}::subtract_monomials ( const Monomial & left,
const Monomial & right,
std::size_t num_vars )

在文件 fglm_polynomial.cpp 第 9 行定义.

10 {
11 Monomial result(num_vars, 0);
12 for (std::size_t i = 0; i < num_vars; ++i) {
13 const int left_value = i < left.size() ? left[i] : 0;
14 const int right_value = i < right.size() ? right[i] : 0;
15 result[i] = left_value - right_value;
16 }
17 return result;
18}

引用了 LMCAS::right , 以及 subtract_monomials().

被这些函数引用 subtract_leading_multiple() , 以及 subtract_monomials().

函数调用图:
这是这个函数的调用关系图: