LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::MonomialOrder类 参考

单项式序比较器,支持 Lex、GrevLex、DegLex、DegRevLex 更多...

#include <monomial_order.hpp>

LMCAS::MonomialOrder 的协作图:

Public 成员函数

 MonomialOrder (MonomialOrderType type)
 构造指定类型的单项式序
bool operator() (const Monomial &a, const Monomial &b) const
 比较两个单项式的大小
MonomialOrderType type () const
 获取序的类型

静态 Public 成员函数

static MonomialOrder deglex ()
 创建分次字典序
static MonomialOrder degrevlex ()
 创建分次逆字典序(DegRevLex)
static MonomialOrder grevlex ()
 创建分次逆字典序
static MonomialOrder lex ()
 创建字典序

静态 Private 成员函数

static bool compare_deglex (const Monomial &a, const Monomial &b)
static bool compare_grevlex (const Monomial &a, const Monomial &b)
static bool compare_lex (const Monomial &a, const Monomial &b)

Private 属性

MonomialOrderType type_

详细描述

单项式序比较器,支持 Lex、GrevLex、DegLex、DegRevLex

在文件 monomial_order.hpp 第 67 行定义.

构造及析构函数说明

◆ MonomialOrder()

LMCAS::MonomialOrder::MonomialOrder ( MonomialOrderType type)
inlineexplicit

构造指定类型的单项式序

参数
type序的类型

在文件 monomial_order.hpp 第 73 行定义.

73: type_(type) {}
MonomialOrderType type() const
获取序的类型

引用了 type() , 以及 type_.

被这些函数引用 deglex(), degrevlex(), grevlex() , 以及 lex().

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

成员函数说明

◆ compare_deglex()

bool LMCAS::MonomialOrder::compare_deglex ( const Monomial & a,
const Monomial & b )
inlinestaticprivate

在文件 monomial_order.hpp 第 136 行定义.

136 {
137 int deg_a = total_degree(a);
138 int deg_b = total_degree(b);
139 if (deg_a != deg_b) return deg_a > deg_b;
140 return compare_lex(a, b);
141 }
static bool compare_lex(const Monomial &a, const Monomial &b)
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
int total_degree(const Monomial &m)
计算单项式的全次数

引用了 LMCAS::a, LMCAS::b, compare_lex() , 以及 LMCAS::total_degree().

被这些函数引用 operator()().

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

◆ compare_grevlex()

bool LMCAS::MonomialOrder::compare_grevlex ( const Monomial & a,
const Monomial & b )
inlinestaticprivate

在文件 monomial_order.hpp 第 122 行定义.

122 {
123 int deg_a = total_degree(a);
124 int deg_b = total_degree(b);
125 if (deg_a != deg_b) return deg_a > deg_b;
126
127 size_t n = std::max(a.size(), b.size());
128 for (size_t i = n; i > 0; --i) {
129 int ai = (i - 1 < a.size()) ? a[i - 1] : 0;
130 int bi = (i - 1 < b.size()) ? b[i - 1] : 0;
131 if (ai != bi) return ai < bi;
132 }
133 return false;
134 }

引用了 LMCAS::a, LMCAS::b , 以及 LMCAS::total_degree().

被这些函数引用 operator()().

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

◆ compare_lex()

bool LMCAS::MonomialOrder::compare_lex ( const Monomial & a,
const Monomial & b )
inlinestaticprivate

在文件 monomial_order.hpp 第 112 行定义.

112 {
113 size_t n = std::max(a.size(), b.size());
114 for (size_t i = 0; i < n; ++i) {
115 int ai = (i < a.size()) ? a[i] : 0;
116 int bi = (i < b.size()) ? b[i] : 0;
117 if (ai != bi) return ai > bi;
118 }
119 return false;
120 }

引用了 LMCAS::a , 以及 LMCAS::b.

被这些函数引用 compare_deglex() , 以及 operator()().

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

◆ deglex()

MonomialOrder LMCAS::MonomialOrder::deglex ( )
inlinestatic

创建分次字典序

在文件 monomial_order.hpp 第 104 行定义.

MonomialOrder(MonomialOrderType type)
构造指定类型的单项式序

引用了 MonomialOrder() , 以及 LMCAS::DegLex.

函数调用图:

◆ degrevlex()

MonomialOrder LMCAS::MonomialOrder::degrevlex ( )
inlinestatic

创建分次逆字典序(DegRevLex)

在文件 monomial_order.hpp 第 107 行定义.

@ DegRevLex
分次逆字典序(同 GrevLex)

引用了 MonomialOrder() , 以及 LMCAS::DegRevLex.

函数调用图:

◆ grevlex()

MonomialOrder LMCAS::MonomialOrder::grevlex ( )
inlinestatic

创建分次逆字典序

在文件 monomial_order.hpp 第 101 行定义.

引用了 MonomialOrder() , 以及 LMCAS::GrevLex.

被这些函数引用 LMCAS::grevlex_to_lex().

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

◆ lex()

MonomialOrder LMCAS::MonomialOrder::lex ( )
inlinestatic

创建字典序

在文件 monomial_order.hpp 第 98 行定义.

引用了 MonomialOrder() , 以及 LMCAS::Lex.

被这些函数引用 LMCAS::grevlex_to_lex().

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

◆ operator()()

bool LMCAS::MonomialOrder::operator() ( const Monomial & a,
const Monomial & b ) const
inline

比较两个单项式的大小

参数
a左操作数
b右操作数
返回
a > b 时返回 true(按当前序)

在文件 monomial_order.hpp 第 81 行定义.

81 {
82 switch (type_) {
84 return compare_lex(a, b);
87 return compare_grevlex(a, b);
89 return compare_deglex(a, b);
90 }
91 return false;
92 }
static bool compare_grevlex(const Monomial &a, const Monomial &b)
static bool compare_deglex(const Monomial &a, const Monomial &b)

引用了 LMCAS::a, LMCAS::b, compare_deglex(), compare_grevlex(), compare_lex(), LMCAS::DegLex, LMCAS::DegRevLex, LMCAS::GrevLex, LMCAS::Lex , 以及 type_.

函数调用图:

◆ type()

MonomialOrderType LMCAS::MonomialOrder::type ( ) const
inline

获取序的类型

在文件 monomial_order.hpp 第 95 行定义.

95{ return type_; }

引用了 type_.

被这些函数引用 MonomialOrder().

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

类成员变量说明

◆ type_

MonomialOrderType LMCAS::MonomialOrder::type_
private

在文件 monomial_order.hpp 第 110 行定义.

被这些函数引用 MonomialOrder(), operator()() , 以及 type().


该类的文档由以下文件生成: