LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::fglm_detail 命名空间参考

命名空间

namespace  anonymous_namespace{fglm_dimension.cpp}

类

class  GaussianEliminator
class  MonomialEnumerator

函数

void generate_degree (Monomial &current, size_t variable, int remaining, std::vector< Monomial > &monomials)
bool has_pure_generators (const std::vector< Monomial > &leading, size_t num_vars)
bool is_standard (const Monomial &monomial, const std::vector< Monomial > &leading)
std::vector< Monomial > leading_monomials (const std::vector< FGLMPoly > &basis)

函数说明

◆ generate_degree()

void LMCAS::fglm_detail::generate_degree ( Monomial & current,
size_t variable,
int remaining,
std::vector< Monomial > & monomials )

在文件 fglm_dimension.cpp 第 47 行定义.

48 {
49 if (variable == current.size() - 1) {
50 current[variable] = remaining;
51 monomials.push_back(current);
52 current[variable] = 0;
53 return;
54 }
55 for (int exponent = 0; exponent <= remaining; ++exponent) {
56 current[variable] = exponent;
57 generate_degree(current, variable + 1, remaining - exponent, monomials);
58 }
59 current[variable] = 0;
60}
void generate_degree(Monomial &current, size_t variable, int remaining, std::vector< Monomial > &monomials)
const std::string & variable
const ExprPtr & exponent

引用了 LMCAS::exponent, generate_degree() , 以及 LMCAS::variable.

被这些函数引用 generate_degree() , 以及 LMCAS::quotient_dimension().

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

◆ has_pure_generators()

bool LMCAS::fglm_detail::has_pure_generators ( const std::vector< Monomial > & leading,
size_t num_vars )

在文件 fglm_dimension.cpp 第 25 行定义.

25 {
26 for (size_t variable = 0; variable < num_vars; ++variable) {
27 bool found = false;
28 for (const auto& monomial : leading) {
29 if (is_pure_power(monomial, variable, num_vars)) {
30 found = true;
31 break;
32 }
33 }
34 if (!found) return false;
35 }
36 return true;
37}

引用了 has_pure_generators() , 以及 LMCAS::variable.

被这些函数引用 LMCAS::fglm_convert() , 以及 has_pure_generators().

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

◆ is_standard()

bool LMCAS::fglm_detail::is_standard ( const Monomial & monomial,
const std::vector< Monomial > & leading )

在文件 fglm_dimension.cpp 第 18 行定义.

18 {
19 for (const auto& divisor : leading) {
20 if (divides_monomial(divisor, monomial)) return false;
21 }
22 return true;
23}
bool divides_monomial(const Monomial &divisor, const Monomial &target)
判断 divisor 是否整除 target

引用了 LMCAS::divides_monomial() , 以及 is_standard().

被这些函数引用 LMCAS::fglm_convert(), LMCAS::anonymous_namespace{fglm.cpp}::generate_standard_degree(), is_standard() , 以及 LMCAS::quotient_dimension().

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

◆ leading_monomials()

std::vector< Monomial > LMCAS::fglm_detail::leading_monomials ( const std::vector< FGLMPoly > & basis)

在文件 fglm_dimension.cpp 第 39 行定义.

39 {
40 std::vector<Monomial> leading;
41 for (const auto& polynomial : basis) {
42 if (!polynomial.is_zero()) leading.push_back(polynomial.lead_monomial());
43 }
44 return leading;
45}
const std::vector< FGLMPoly > & basis

引用了 LMCAS::basis , 以及 leading_monomials().

被这些函数引用 leading_monomials(), LMCAS::quotient_dimension() , 以及 LMCAS::anonymous_namespace{fglm.cpp}::standard_basis().

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