LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::anonymous_namespace{symbolic_set.cpp} 命名空间参考

函数

Result< void > consume (ComputationContext &context)
std::optional< bool > exact_interval_membership (const std::shared_ptr< const SymbolicNode > &element, const IntervalNode &interval)
bool exact_value (const std::shared_ptr< const SymbolicNode > &node, Rational &value)
SymbolicSetResult failure (CasErrc code, std::string message)
std::shared_ptr< const FiniteSetNode > finite_set_node (const SymbolicExpr &expression)
SymbolicSetResult from_nodes (std::vector< std::shared_ptr< const SymbolicNode > > elements)

变量

constexpr const char * kOperation = "symbolic_set"

函数说明

◆ consume()

Result< void > LMCAS::anonymous_namespace{symbolic_set.cpp}::consume ( ComputationContext & context)

在文件 symbolic_set.cpp 第 19 行定义.

19 {
20 return context.consume_steps(1, kOperation);
21}
const std::vector< Polynomial< BigInt > > const BigInt ComputationContext & context

引用了 consume(), LMCAS::context , 以及 kOperation.

被这些函数引用 consume().

函数调用图:
这是这个函数的调用关系图:

◆ exact_interval_membership()

std::optional< bool > LMCAS::anonymous_namespace{symbolic_set.cpp}::exact_interval_membership ( const std::shared_ptr< const SymbolicNode > & element,
const IntervalNode & interval )

在文件 symbolic_set.cpp 第 52 行定义.

53 {
54 Rational value;
55 Rational lower;
56 Rational upper;
57 if (!exact_value(element, value)) {
58 return std::nullopt;
59 }
60 if (!exact_value(interval.lower(), lower) || !exact_value(interval.upper(), upper)) {
61 return std::nullopt;
62 }
63 if (value < lower || upper < value) {
64 return false;
65 }
66 if (value == lower && !interval.lower_closed()) {
67 return false;
68 }
69 return value != upper || interval.upper_closed();
70}
bool exact_value(const std::shared_ptr< const SymbolicNode > &node, Rational &value)
const ExprPtr & element
__attribute__((visibility("default"))) ExprResult function(const std __attribute__((visibility("default"))) ExprResult finite_set(std ExprPtr upper
ExprResult interval(ExprPtr lower, ExprPtr upper, bool lower_closed, bool upper_closed)
const ExprPtr & lower
const std::string const ExprPtr & value

引用了 LMCAS::element, exact_interval_membership(), exact_value(), LMCAS::interval(), LMCAS::lower, LMCAS::upper , 以及 LMCAS::value.

被这些函数引用 exact_interval_membership().

函数调用图:
这是这个函数的调用关系图:

◆ exact_value()

bool LMCAS::anonymous_namespace{symbolic_set.cpp}::exact_value ( const std::shared_ptr< const SymbolicNode > & node,
Rational & value )

在文件 symbolic_set.cpp 第 27 行定义.

27 {
28 auto number = std::dynamic_pointer_cast<const NumberNode>(node);
29 if (!number) return false;
30 if (std::holds_alternative<BigInt>(number->value())) {
31 value = Rational(std::get<BigInt>(number->value()));
32 return true;
33 }
34 if (std::holds_alternative<Rational>(number->value())) {
35 value = std::get<Rational>(number->value());
36 return true;
37 }
38 return false;
39}

引用了 exact_value() , 以及 LMCAS::value.

被这些函数引用 exact_interval_membership() , 以及 exact_value().

函数调用图:
这是这个函数的调用关系图:

◆ failure()

SymbolicSetResult LMCAS::anonymous_namespace{symbolic_set.cpp}::failure ( CasErrc code,
std::string message )

在文件 symbolic_set.cpp 第 15 行定义.

15 {
16 return SymbolicSetResult::failure(code, std::move(message), kOperation);
17}
static Result failure(CasErrc code, std::string message, std::string operation={})

引用了 failure(), LMCAS::Result< std::shared_ptr< SymbolicExpr > >::failure() , 以及 kOperation.

被这些函数引用 failure() , 以及 from_nodes().

函数调用图:
这是这个函数的调用关系图:

◆ finite_set_node()

std::shared_ptr< const FiniteSetNode > LMCAS::anonymous_namespace{symbolic_set.cpp}::finite_set_node ( const SymbolicExpr & expression)

在文件 symbolic_set.cpp 第 23 行定义.

23 {
24 return std::dynamic_pointer_cast<const FiniteSetNode>(detail::node(expression));
25}
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept

引用了 finite_set_node() , 以及 LMCAS::detail::node().

被这些函数引用 finite_set_node().

函数调用图:
这是这个函数的调用关系图:

◆ from_nodes()

SymbolicSetResult LMCAS::anonymous_namespace{symbolic_set.cpp}::from_nodes ( std::vector< std::shared_ptr< const SymbolicNode > > elements)

在文件 symbolic_set.cpp 第 41 行定义.

41 {
42 try {
44 detail::make_node<FiniteSetNode>(std::move(elements))));
45 } catch (const std::bad_alloc&) {
46 return failure(CasErrc::ResourceLimit, "finite set allocation failed");
47 } catch (const std::exception& error) {
48 return failure(CasErrc::InvalidArgument, error.what());
49 }
50}
static Result success(std::shared_ptr< SymbolicExpr > value)
SymbolicSetResult failure(CasErrc code, std::string message)
std::shared_ptr<::LMCAS::SymbolicExpr > make_expression_ptr(SymbolicNodePtr root)
std::shared_ptr< const Node > make_node(Args &&... args)

引用了 failure(), from_nodes(), LMCAS::InvalidArgument, LMCAS::detail::make_expression_ptr(), LMCAS::detail::make_node(), LMCAS::ResourceLimit , 以及 LMCAS::Result< std::shared_ptr< SymbolicExpr > >::success().

被这些函数引用 from_nodes().

函数调用图:
这是这个函数的调用关系图:

变量说明

◆ kOperation

const char* LMCAS::anonymous_namespace{symbolic_set.cpp}::kOperation = "symbolic_set"
constexpr

在文件 symbolic_set.cpp 第 13 行定义.

被这些函数引用 consume() , 以及 failure().