LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
multivariate_conversion.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
internal/symbolic_ast.hpp
"
4
#include "
multivariate_factor.hpp
"
5
6
namespace
LMCAS::detail
{
7
8
inline
std::vector<std::shared_ptr<SymbolicExpr>>
multipoly_term_factors
(
9
const
Monomial
& monomial,
const
Rational& coefficient,
10
const
std::vector<std::string>& variables) {
11
std::vector<std::shared_ptr<SymbolicExpr>> factors;
12
if
(coefficient != Rational(1) ||
total_degree
(monomial) == 0) {
13
factors.push_back(SymbolicExpr::number(coefficient));
14
}
15
for
(std::size_t index = 0;
16
index < variables.size() && index < monomial.size(); ++index) {
17
if
(monomial[index] == 0)
continue
;
18
auto
variable
= SymbolicExpr::variable(variables[index]);
19
factors.push_back(monomial[index] == 1
20
?
variable
21
: SymbolicExpr::power(
22
variable
, SymbolicExpr::number(monomial[index])));
23
}
24
return
factors;
25
}
26
27
inline
std::shared_ptr<SymbolicExpr>
multiply_expression_factors
(
28
const
std::vector<std::shared_ptr<SymbolicExpr>>& factors) {
29
auto
expression = factors.empty()
30
? SymbolicExpr::number(1)
31
: factors.front();
32
for
(std::size_t index = 1; index < factors.size(); ++index) {
33
expression = SymbolicExpr::multiply(expression, factors[index]);
34
}
35
return
expression;
36
}
37
38
inline
std::shared_ptr<SymbolicExpr>
multipoly_term_to_expression
(
39
const
Monomial
& monomial,
const
Rational& coefficient,
40
const
std::vector<std::string>& variables) {
41
return
multiply_expression_factors
(
42
multipoly_term_factors
(monomial, coefficient, variables));
43
}
44
45
}
multivariate_factor.hpp
多元多项式因式分解器公共 API。
LMCAS::detail
多元 Hensel 提升(单变量步)
定义
assumption_context.hpp:31
LMCAS::detail::multipoly_term_factors
std::vector< std::shared_ptr< SymbolicExpr > > multipoly_term_factors(const Monomial &monomial, const Rational &coefficient, const std::vector< std::string > &variables)
定义
multivariate_conversion.hpp:8
LMCAS::detail::variable
const std::string & variable
定义
expression_transform.hpp:22
LMCAS::detail::multiply_expression_factors
std::shared_ptr< SymbolicExpr > multiply_expression_factors(const std::vector< std::shared_ptr< SymbolicExpr > > &factors)
定义
multivariate_conversion.hpp:27
LMCAS::detail::multipoly_term_to_expression
std::shared_ptr< SymbolicExpr > multipoly_term_to_expression(const Monomial &monomial, const Rational &coefficient, const std::vector< std::string > &variables)
定义
multivariate_conversion.hpp:38
LMCAS::Monomial
std::vector< int > Monomial
单项式类型,以整数向量表示各变量的指数
定义
monomial_order.hpp:15
LMCAS::total_degree
int total_degree(const Monomial &m)
计算单项式的全次数
定义
monomial_order.hpp:30
symbolic_ast.hpp
内部 AST 定义。
src
internal
multivariate_conversion.hpp
生成于
, 为 LMCAS使用
1.18.0