LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
fglm_internal.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
fglm.hpp
"
4
#include <set>
5
#include <vector>
6
7
namespace
LMCAS::fglm_detail
{
8
class
MonomialEnumerator
{
9
public
:
10
MonomialEnumerator
(
size_t
num_vars,
const
MonomialOrder
&
order
,
int
max_degree);
11
bool
next
(
Monomial
& out);
12
13
private
:
14
struct
HeapCmp
{
15
const
MonomialOrder
*
order
;
16
bool
operator()
(
const
Monomial
&
a
,
const
Monomial
&
b
)
const
{
17
return
(*
order
)(
a
,
b
);
18
}
19
};
20
21
size_t
num_vars_
;
22
MonomialOrder
order_
;
23
int
max_degree_
;
24
std::vector<Monomial>
heap_
;
25
std::set<Monomial>
visited_
;
26
HeapCmp
cmp_
{&
order_
};
27
28
void
push
(
const
Monomial
& monomial);
29
};
30
class
GaussianEliminator
{
31
public
:
32
bool
add_vector
(
const
std::vector<Rational>& vector,
33
std::vector<Rational>& combination);
34
35
private
:
36
std::vector<std::vector<Rational>>
rows_
;
37
std::vector<size_t>
pivots_
;
38
std::vector<std::vector<Rational>>
combinations_
;
39
size_t
basis_count_
= 0;
40
};
41
42
bool
is_standard
(
const
Monomial
& monomial,
const
std::vector<Monomial>& leading);
43
bool
has_pure_generators
(
const
std::vector<Monomial>& leading,
size_t
num_vars);
44
std::vector<Monomial>
leading_monomials
(
const
std::vector<FGLMPoly>&
basis
);
45
void
generate_degree
(
Monomial
& current,
size_t
variable
,
int
remaining,
46
std::vector<Monomial>& monomials);
47
48
}
LMCAS::MonomialOrder
单项式序比较器,支持 Lex、GrevLex、DegLex、DegRevLex
定义
monomial_order.hpp:67
LMCAS::fglm_detail::GaussianEliminator
定义
fglm_internal.hpp:30
LMCAS::fglm_detail::GaussianEliminator::rows_
std::vector< std::vector< Rational > > rows_
定义
fglm_internal.hpp:36
LMCAS::fglm_detail::GaussianEliminator::basis_count_
size_t basis_count_
定义
fglm_internal.hpp:39
LMCAS::fglm_detail::GaussianEliminator::add_vector
bool add_vector(const std::vector< Rational > &vector, std::vector< Rational > &combination)
定义
fglm_linear.cpp:37
LMCAS::fglm_detail::GaussianEliminator::pivots_
std::vector< size_t > pivots_
定义
fglm_internal.hpp:37
LMCAS::fglm_detail::GaussianEliminator::combinations_
std::vector< std::vector< Rational > > combinations_
定义
fglm_internal.hpp:38
LMCAS::fglm_detail::MonomialEnumerator::push
void push(const Monomial &monomial)
定义
fglm_linear.cpp:30
LMCAS::fglm_detail::MonomialEnumerator::next
bool next(Monomial &out)
定义
fglm_linear.cpp:13
LMCAS::fglm_detail::MonomialEnumerator::MonomialEnumerator
MonomialEnumerator(size_t num_vars, const MonomialOrder &order, int max_degree)
定义
fglm_linear.cpp:6
LMCAS::fglm_detail::MonomialEnumerator::max_degree_
int max_degree_
定义
fglm_internal.hpp:23
LMCAS::fglm_detail::MonomialEnumerator::heap_
std::vector< Monomial > heap_
定义
fglm_internal.hpp:24
LMCAS::fglm_detail::MonomialEnumerator::order_
MonomialOrder order_
定义
fglm_internal.hpp:22
LMCAS::fglm_detail::MonomialEnumerator::num_vars_
size_t num_vars_
定义
fglm_internal.hpp:21
LMCAS::fglm_detail::MonomialEnumerator::visited_
std::set< Monomial > visited_
定义
fglm_internal.hpp:25
LMCAS::fglm_detail::MonomialEnumerator::cmp_
HeapCmp cmp_
定义
fglm_internal.hpp:26
fglm.hpp
FGLM 算法:零维理想 Gröbner 基在不同单项式序之间的转换.
LMCAS::fglm_detail
定义
fglm_dimension.cpp:3
LMCAS::fglm_detail::generate_degree
void generate_degree(Monomial ¤t, size_t variable, int remaining, std::vector< Monomial > &monomials)
定义
fglm_dimension.cpp:47
LMCAS::fglm_detail::leading_monomials
std::vector< Monomial > leading_monomials(const std::vector< FGLMPoly > &basis)
定义
fglm_dimension.cpp:39
LMCAS::fglm_detail::is_standard
bool is_standard(const Monomial &monomial, const std::vector< Monomial > &leading)
定义
fglm_dimension.cpp:18
LMCAS::fglm_detail::has_pure_generators
bool has_pure_generators(const std::vector< Monomial > &leading, size_t num_vars)
定义
fglm_dimension.cpp:25
LMCAS::variable
const std::string & variable
定义
expr.hpp:286
LMCAS::Monomial
std::vector< int > Monomial
单项式类型,以整数向量表示各变量的指数
定义
monomial_order.hpp:15
LMCAS::order
const std::vector< FGLMPoly > const MonomialOrder & order
定义
fglm.hpp:103
LMCAS::b
const MultiPoly & b
定义
multivariate_factor.hpp:92
LMCAS::a
__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
定义
vector_calculus_curves.hpp:50
LMCAS::basis
const std::vector< FGLMPoly > & basis
定义
fglm.hpp:102
LMCAS::fglm_detail::MonomialEnumerator::HeapCmp
定义
fglm_internal.hpp:14
LMCAS::fglm_detail::MonomialEnumerator::HeapCmp::operator()
bool operator()(const Monomial &a, const Monomial &b) const
定义
fglm_internal.hpp:16
LMCAS::fglm_detail::MonomialEnumerator::HeapCmp::order
const MonomialOrder * order
定义
fglm_internal.hpp:15
src
internal
fglm_internal.hpp
生成于
, 为 LMCAS使用
1.18.0