LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
multivariate_conversion.hpp
浏览该文件的文档.
1#pragma once
2
5
6namespace LMCAS::detail {
7
8inline 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
27inline 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
38inline std::shared_ptr<SymbolicExpr> multipoly_term_to_expression(
39 const Monomial& monomial, const Rational& coefficient,
40 const std::vector<std::string>& variables) {
42 multipoly_term_factors(monomial, coefficient, variables));
43}
44
45}
多元多项式因式分解器公共 API。
多元 Hensel 提升(单变量步)
std::vector< std::shared_ptr< SymbolicExpr > > multipoly_term_factors(const Monomial &monomial, const Rational &coefficient, const std::vector< std::string > &variables)
const std::string & variable
std::shared_ptr< SymbolicExpr > multiply_expression_factors(const std::vector< std::shared_ptr< SymbolicExpr > > &factors)
std::shared_ptr< SymbolicExpr > multipoly_term_to_expression(const Monomial &monomial, const Rational &coefficient, const std::vector< std::string > &variables)
std::vector< int > Monomial
单项式类型,以整数向量表示各变量的指数
int total_degree(const Monomial &m)
计算单项式的全次数
内部 AST 定义。