LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
expression_analysis.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
internal/symbolic_ast.hpp
"
4
#include "
computation_context.hpp
"
5
#include "
result.hpp
"
6
#include "
polynomial_conversion.hpp
"
7
8
#include <optional>
9
#include <set>
10
#include <string>
11
12
namespace
LMCAS
{
13
LMCAS_API
std::optional<int>
exact_small_integer_node
(
14
const
detail::SymbolicNodePtr
& node,
int
min_value,
int
max_value);
15
16
namespace
detail
{
17
std::optional<Rational>
exact_rational_value
(
const
NumberNode& number);
18
std::optional<Rational>
exact_rational_value
(
const
SymbolicNodePtr
&
node
);
19
20
constexpr
RelationOp
reversed_relation
(
RelationOp
op
)
noexcept
{
21
switch
(
op
) {
22
case
RelationOp::GT
:
return
RelationOp::LT
;
23
case
RelationOp::GEQ
:
return
RelationOp::LEQ
;
24
case
RelationOp::LT
:
return
RelationOp::GT
;
25
case
RelationOp::LEQ
:
return
RelationOp::GEQ
;
26
default
:
return
op
;
27
}
28
}
29
30
Result<Polynomial<SymbolicPolyCoeff>
>
symbolic_to_poly_checked
(
31
const
SymbolicExpr& expression,
const
std::string&
variable
,
32
ComputationContext
&
context
);
33
std::vector<std::shared_ptr<SymbolicExpr>>
make_rootof_solutions_impl
(
34
const
Polynomial<SymbolicPolyCoeff>
& polynomial,
35
const
std::string&
variable
,
ComputationContext
&
context
);
36
37
struct
AffineForm
{
38
std::shared_ptr<SymbolicExpr>
slope
;
39
std::shared_ptr<SymbolicExpr>
offset
;
40
};
41
Result<std::optional<AffineForm>
>
recognize_affine
(
42
const
SymbolicExpr& expression,
const
std::string&
variable
,
43
ComputationContext
&
context
);
44
45
bool
is_imaginary_unit_name
(
const
std::string&
name
);
46
std::set<std::string>
all_variable_names
(
47
const
SymbolicNodePtr
& expression,
RewriteBudget
*
budget
=
nullptr
);
48
bool
integration_depends_on_variable
(
49
const
SymbolicNodePtr
& expression,
const
std::string&
variable
,
50
RewriteBudget
*
budget
=
nullptr
);
51
}
52
LMCAS_API
std::set<std::string>
free_variables
(
53
const
detail::SymbolicNodePtr
& expression,
54
detail::RewriteBudget
* budget =
nullptr
);
55
LMCAS_API
bool
expression_depends_on_variable
(
56
const
detail::SymbolicNodePtr
& expression,
57
const
std::string&
variable
,
58
detail::RewriteBudget
* budget =
nullptr
);
59
LMCAS_API
detail::SymbolicNodePtr
substitute_free
(
60
const
detail::SymbolicNodePtr
& expression,
61
const
std::string&
variable
,
62
const
detail::SymbolicNodePtr
& replacement,
63
detail::RewriteBudget
* budget =
nullptr
);
64
65
}
LMCAS::ComputationContext
定义
computation_context.hpp:99
LMCAS::Polynomial
一元多项式模板类
定义
polynomial.hpp:52
LMCAS::Result
定义
result.hpp:39
LMCAS::detail::RewriteBudget
定义
rewrite_budget.hpp:15
computation_context.hpp
LMCAS_API
#define LMCAS_API
定义
lmcas_export.hpp:13
LMCAS::detail
多元 Hensel 提升(单变量步)
定义
assumption_context.hpp:31
LMCAS::detail::symbolic_to_poly_checked
Result< Polynomial< SymbolicPolyCoeff > > symbolic_to_poly_checked(const SymbolicExpr &expression, const std::string &variable, ComputationContext &context)
定义
poly_utils.cpp:462
LMCAS::detail::is_imaginary_unit_name
bool is_imaginary_unit_name(const std::string &name)
定义
expression_analysis.cpp:302
LMCAS::detail::node
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept
定义
base.hpp:91
LMCAS::detail::AffineForm::slope
std::shared_ptr< SymbolicExpr > slope
定义
expression_analysis.hpp:38
LMCAS::detail::variable
const std::string & variable
定义
expression_transform.hpp:22
LMCAS::detail::SymbolicNodePtr
std::shared_ptr< const SymbolicNode > SymbolicNodePtr
定义
base.hpp:73
LMCAS::detail::integration_depends_on_variable
bool integration_depends_on_variable(const SymbolicNodePtr &expression, const std::string &variable, RewriteBudget *budget=nullptr)
定义
expression_analysis.cpp:328
LMCAS::detail::exact_rational_value
std::optional< Rational > exact_rational_value(const NumberNode &number)
定义
expression_analysis.cpp:243
LMCAS::detail::make_rootof_solutions_impl
std::vector< std::shared_ptr< SymbolicExpr > > make_rootof_solutions_impl(const Polynomial< SymbolicPolyCoeff > &polynomial, const std::string &variable, ComputationContext &context)
定义
root_of_identity.cpp:103
LMCAS::detail::budget
RewriteBudget & budget
定义
expression_transform.hpp:16
LMCAS::detail::context
std::size_t std::size_t ComputationContext & context
定义
exact_algebraic.hpp:27
LMCAS::detail::all_variable_names
std::set< std::string > all_variable_names(const SymbolicNodePtr &expression, RewriteBudget *budget=nullptr)
定义
expression_analysis.cpp:306
LMCAS::detail::recognize_affine
Result< std::optional< AffineForm > > recognize_affine(const SymbolicExpr &expression, const std::string &variable, ComputationContext &context)
定义
expression_analysis.cpp:261
LMCAS::detail::AffineForm::offset
std::shared_ptr< SymbolicExpr > offset
定义
expression_analysis.hpp:39
LMCAS::detail::reversed_relation
constexpr RelationOp reversed_relation(RelationOp op) noexcept
定义
expression_analysis.hpp:20
LMCAS::detail::AffineForm
定义
expression_analysis.hpp:37
LMCAS
定义
assumption.hpp:11
LMCAS::variable
const std::string & variable
定义
expr.hpp:286
LMCAS::context
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
定义
exact_factorization.hpp:65
LMCAS::expression_depends_on_variable
bool expression_depends_on_variable(const detail::SymbolicNodePtr &expression, const std::string &variable, detail::RewriteBudget *budget)
定义
expression_analysis.cpp:319
LMCAS::RelationOp
RelationOp
Stable relational operator used by public APIs.
定义
symbolic.hpp:39
LMCAS::RelationOp::LEQ
@ LEQ
定义
symbolic.hpp:44
LMCAS::RelationOp::LT
@ LT
定义
symbolic.hpp:42
LMCAS::RelationOp::GT
@ GT
定义
symbolic.hpp:43
LMCAS::RelationOp::GEQ
@ GEQ
定义
symbolic.hpp:45
LMCAS::op
const ExprPtr RelationOp op
定义
expr.hpp:151
LMCAS::exact_small_integer_node
std::optional< int > exact_small_integer_node(const detail::SymbolicNodePtr &node, int min_value, int max_value)
定义
expression_analysis.cpp:279
LMCAS::free_variables
std::set< std::string > free_variables(const detail::SymbolicNodePtr &expression, detail::RewriteBudget *budget)
定义
expression_analysis.cpp:312
LMCAS::name
__attribute__((visibility("default"))) Result< EqvProfile > eqv_profile_from_name(const std const std::string & name
定义
equivalence_options.hpp:41
LMCAS::substitute_free
detail::SymbolicNodePtr substitute_free(const detail::SymbolicNodePtr &expression, const std::string &variable, const detail::SymbolicNodePtr &replacement, detail::RewriteBudget *budget)
定义
expression_analysis.cpp:336
polynomial_conversion.hpp
符号表达式与一元多项式的转换。
result.hpp
symbolic_ast.hpp
内部 AST 定义。
src
internal
expression_analysis.hpp
生成于
, 为 LMCAS使用
1.18.0