LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::SymbolicNode类 参考abstract

#include </home/runner/work/docs/docs/LMCAS/src/internal/symbolic_ast/base.hpp>

类 LMCAS::SymbolicNode 继承关系图:
LMCAS::SymbolicNode 的协作图:

Public 成员函数

virtual ~SymbolicNode ()=default
virtual void accept (LMCAS::detail::SymbolicVisitor &visitor) const =0
virtual std::shared_ptr< const SymbolicNode > clone () const =0
int compare (const SymbolicNode &other) const
 与另一个节点进行全序比较.
bool equals (const SymbolicNode &other) const
 判断两个节点是否结构相等.
std::size_t hash () const
 获取节点哈希值(带缓存).
virtual bool is_number () const
virtual bool is_one () const
virtual bool is_positive () const
virtual bool is_zero () const
virtual int type_priority () const =0

Protected 成员函数

 SymbolicNode ()=default
 SymbolicNode (const SymbolicNode &)
virtual int compare_same_type (const SymbolicNode &other) const =0
virtual std::size_t compute_hash () const =0
SymbolicNode & operator= (const SymbolicNode &)

Protected 属性

std::atomic< std::size_t > cached_hash {0}
std::atomic< bool > hash_computed {false}

详细描述

在文件 base.hpp 第 147 行定义.

构造及析构函数说明

◆ SymbolicNode() [1/2]

◆ SymbolicNode() [2/2]

LMCAS::SymbolicNode::SymbolicNode ( const SymbolicNode & )
inlineprotected

在文件 base.hpp 第 153 行定义.

153: cached_hash(0), hash_computed(false) {}
std::atomic< std::size_t > cached_hash
std::atomic< bool > hash_computed

引用了 SymbolicNode(), cached_hash , 以及 hash_computed.

函数调用图:

◆ ~SymbolicNode()

virtual LMCAS::SymbolicNode::~SymbolicNode ( )
virtualdefault

成员函数说明

◆ accept()

virtual void LMCAS::SymbolicNode::accept ( LMCAS::detail::SymbolicVisitor & visitor) const
pure virtual

在 LMCAS::AddNode, LMCAS::ComplexNode, LMCAS::FiniteSetNode, LMCAS::FunctionNode, LMCAS::IntegralNode, LMCAS::IntervalNode, LMCAS::LimitNode, LMCAS::LogicalNode, LMCAS::MatrixNode, LMCAS::MembershipNode, LMCAS::MultiplyNode, LMCAS::NumberNode, LMCAS::PiecewiseNode, LMCAS::PowerNode, LMCAS::ProductNode, LMCAS::QuantifierNode, LMCAS::QuantityNode, LMCAS::RelationalNode, LMCAS::RootOfNode, LMCAS::SetBuilderNode, LMCAS::SummationNode, LMCAS::TransformNode, LMCAS::UninterpretedFunctionNode , 以及 LMCAS::VariableNode 内被实现.

被这些函数引用 LMCAS::anonymous_namespace{expression_analysis.cpp}::all_names(), LMCAS::anonymous_namespace{complex_analysis.cpp}::contains_explicit_complex(), LMCAS::contains_transcendental_of_var(), LMCAS::anonymous_namespace{solver_groebner_system.cpp}::convert_basis_polynomial(), LMCAS::determine_search_interval(), LMCAS::expression_depends_on_variable(), LMCAS::free_variables(), LMCAS::anonymous_namespace{complex_analysis.cpp}::has_function_of_explicit_complex(), LMCAS::anonymous_namespace{limit_result.cpp}::has_infinity(), LMCAS::anonymous_namespace{complex_analysis.cpp}::has_z_dependent_function(), LMCAS::detail::integration_depends_on_variable(), LMCAS::anonymous_namespace{limit_result.cpp}::limit_complex_at_point() , 以及 LMCAS::anonymous_namespace{solver_groebner_system.cpp}::validate_basis_input().

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

◆ clone()

◆ compare()

int LMCAS::SymbolicNode::compare ( const SymbolicNode & other) const
inline

与另一个节点进行全序比较.

参数
other待比较的节点
返回
小于返回 -1,等于返回 0,大于返回 1

在文件 base.hpp 第 183 行定义.

183 {
184 if (type_priority() != other.type_priority()) {
185 return type_priority() < other.type_priority() ? -1 : 1;
186 }
187 return compare_same_type(other);
188 }
virtual int compare_same_type(const SymbolicNode &other) const =0
virtual int type_priority() const =0

引用了 SymbolicNode(), compare_same_type() , 以及 type_priority().

被这些函数引用 LMCAS::anonymous_namespace{symbolic_cancel.cpp}::combine_fraction_terms() , 以及 LMCAS::endpoints_equivalent().

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

◆ compare_same_type()

virtual int LMCAS::SymbolicNode::compare_same_type ( const SymbolicNode & other) const
protectedpure virtual

在 LMCAS::AddNode, LMCAS::ComplexNode, LMCAS::FiniteSetNode, LMCAS::FunctionNode, LMCAS::IntegralNode, LMCAS::IntervalNode, LMCAS::LimitNode, LMCAS::LogicalNode, LMCAS::MatrixNode, LMCAS::MembershipNode, LMCAS::MultiplyNode, LMCAS::NumberNode, LMCAS::PiecewiseNode, LMCAS::PowerNode, LMCAS::ProductNode, LMCAS::QuantifierNode, LMCAS::QuantityNode, LMCAS::RelationalNode, LMCAS::RootOfNode, LMCAS::SetBuilderNode, LMCAS::SummationNode, LMCAS::TransformNode, LMCAS::UninterpretedFunctionNode , 以及 LMCAS::VariableNode 内被实现.

引用了 SymbolicNode().

被这些函数引用 compare() , 以及 equals().

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

◆ compute_hash()

virtual std::size_t LMCAS::SymbolicNode::compute_hash ( ) const
protectedpure virtual

◆ equals()

bool LMCAS::SymbolicNode::equals ( const SymbolicNode & other) const
inline

判断两个节点是否结构相等.

参数
other待比较的节点
返回
相等返回 true

在文件 base.hpp 第 195 行定义.

195 {
196 if (this == &other) return true;
197 if (hash() != other.hash()) return false;
198 if (type_priority() != other.type_priority()) return false;
199 return compare_same_type(other) == 0;
200 }
std::size_t hash() const
获取节点哈希值(带缓存).

引用了 SymbolicNode(), compare_same_type(), hash() , 以及 type_priority().

被这些函数引用 LMCAS::complementary_square(), LMCAS::anonymous_namespace{relation_store.cpp}::expr_equals(), LMCAS::match_recursive(), LMCAS::tf_remove_exp_factor() , 以及 LMCAS::tf_substitute_expr().

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

◆ hash()

std::size_t LMCAS::SymbolicNode::hash ( ) const
inline

获取节点哈希值(带缓存).

返回
哈希值

在文件 base.hpp 第 168 行定义.

168 {
169 if (!hash_computed.load(std::memory_order_acquire)) {
170 std::size_t h = compute_hash();
171 cached_hash.store(h, std::memory_order_relaxed);
172 hash_computed.store(true, std::memory_order_release);
173 return h;
174 }
175 return cached_hash.load(std::memory_order_relaxed);
176 }
virtual std::size_t compute_hash() const =0

引用了 cached_hash, compute_hash() , 以及 hash_computed.

被这些函数引用 LMCAS::MatrixNode::compute_hash(), LMCAS::VariableNode::compute_hash() , 以及 equals().

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

◆ is_number()

virtual bool LMCAS::SymbolicNode::is_number ( ) const
inlinevirtual

被 LMCAS::NumberNode 重载.

在文件 base.hpp 第 201 行定义.

201{ return false; }

◆ is_one()

virtual bool LMCAS::SymbolicNode::is_one ( ) const
inlinevirtual

被 LMCAS::NumberNode 重载.

在文件 base.hpp 第 202 行定义.

202{ return false; }

◆ is_positive()

virtual bool LMCAS::SymbolicNode::is_positive ( ) const
inlinevirtual

被 LMCAS::NumberNode 重载.

在文件 base.hpp 第 204 行定义.

204{ return false; }

◆ is_zero()

virtual bool LMCAS::SymbolicNode::is_zero ( ) const
inlinevirtual

◆ operator=()

SymbolicNode & LMCAS::SymbolicNode::operator= ( const SymbolicNode & )
inlineprotected

在文件 base.hpp 第 154 行定义.

154{ return *this; }

引用了 SymbolicNode().

函数调用图:

◆ type_priority()

类成员变量说明

◆ cached_hash

std::atomic<std::size_t> LMCAS::SymbolicNode::cached_hash {0}
mutableprotected

在文件 base.hpp 第 149 行定义.

被这些函数引用 SymbolicNode() , 以及 hash().

◆ hash_computed

std::atomic<bool> LMCAS::SymbolicNode::hash_computed {false}
mutableprotected

在文件 base.hpp 第 150 行定义.

被这些函数引用 SymbolicNode() , 以及 hash().


该类的文档由以下文件生成: