LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
solver_support.hpp
浏览该文件的文档.
1#pragma once
2
3#include "symbolic.hpp"
5#include <map>
6
8
9inline lmmc_real_t finite_midpoint(lmmc_real_t lower, lmmc_real_t upper) {
10 if (lower < 0.0 && upper > 0.0) {
11 return lower * 0.5 + upper * 0.5;
12 }
13 return lower + (upper - lower) * 0.5;
14}
15
16std::shared_ptr<SymbolicExpr> to_ptr(const SymbolicExpr& expression);
17std::map<std::string, SymbolicExpr> solve_linear_system_impl(
18 const std::vector<SymbolicExpr>& equations,
19 const std::vector<std::string>& variables, ComputationContext& context);
20std::map<std::string, SymbolicExpr> project_unconditional_linear_system(
21 const std::vector<SymbolicExpr>& equations,
22 const std::vector<std::string>& variables, ComputationContext& context);
23std::shared_ptr<SymbolicExpr> multiply_no_expand(
24 const std::shared_ptr<const SymbolicNode>& term,
25 const std::vector<std::shared_ptr<const SymbolicNode>>& denominator_factors);
26bool is_polynomial_node(const std::shared_ptr<const SymbolicNode>& node);
28 const std::shared_ptr<const SymbolicNode>& node,
29 std::vector<std::shared_ptr<const SymbolicNode>>& denominator_factors,
30 std::vector<std::shared_ptr<SymbolicExpr>>& denominator_constraints);
31
32bool contains_imaginary(const std::shared_ptr<SymbolicExpr>& expression);
33bool solver_number_value(const NumberNode& number, double& value);
34
35} // namespace LMCAS::solver_detail
bool is_polynomial_node(const std::shared_ptr< const SymbolicNode > &node)
bool solver_number_value(const NumberNode &number, double &value)
std::shared_ptr< SymbolicExpr > multiply_no_expand(const std::shared_ptr< const SymbolicNode > &term, const std::vector< std::shared_ptr< const SymbolicNode > > &denominator_factors)
std::map< std::string, SymbolicExpr > solve_linear_system_impl(const std::vector< SymbolicExpr > &equations, const std::vector< std::string > &variables, ComputationContext &context)
std::map< std::string, SymbolicExpr > project_unconditional_linear_system(const std::vector< SymbolicExpr > &equations, const std::vector< std::string > &variables, ComputationContext &context)
bool contains_imaginary(const std::shared_ptr< SymbolicExpr > &expression)
bool collect_denominator_factors(const std::shared_ptr< const SymbolicNode > &node, std::vector< std::shared_ptr< const SymbolicNode > > &denominator_factors, std::vector< std::shared_ptr< SymbolicExpr > > &denominator_constraints)
lmmc_real_t finite_midpoint(lmmc_real_t lower, lmmc_real_t upper)
std::shared_ptr< SymbolicExpr > to_ptr(const SymbolicExpr &expression)
__attribute__((visibility("default"))) ExprResult function(const std __attribute__((visibility("default"))) ExprResult finite_set(std ExprPtr upper
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context
const ExprPtr & lower
const std::string const ExprPtr & value
符号表达式主类 SymbolicExpr 及其工厂方法,运算接口.
内部 AST 定义。