Base class for all algorithms, containing generic routines and in particular the logic for index clas...
Definition Algorithm.hh:54
Definition Storage.hh:170
result_t
Keeping track of what algorithms have done to this expression.
Definition Storage.hh:200
Ex::sibling_iterator sibling_iterator
Definition ExManip.hh:14
Ex::iterator iterator
Definition ExManip.hh:12
std::multimap< Ex, Ex::iterator, tree_exact_less_for_indexmap_obj > index_map_t
A map from a pattern to the position where it occurs in the tree.
Definition IndexClassifier.hh:23
Definition evaluate.hh:95
virtual bool can_apply(iterator) override
Definition evaluate.cc:28
iterator handle_components(iterator it)
Definition evaluate.cc:132
bool is_component(iterator it) const
Definition evaluate.cc:112
bool is_scalar_function(iterator it) const
Definition evaluate.cc:33
void merge_component_children(iterator it)
Merge entries in a single 'components' node when they are for the same index value(s).
Definition evaluate.cc:507
void cleanup_components(iterator it1)
Cleanup all components in a 'components' node; that is, call the cleanup_dispatch function on them.
Definition evaluate.cc:633
bool only_rhs
Definition evaluate.hh:115
iterator dense_factor(iterator sib, const IndexClassifier::index_map_t &ind_free, const IndexClassifier::index_map_t &ind_dummy)
Expand a tensor factor into a components node with all components written out explicitly.
Definition evaluate.cc:413
iterator handle_prod(iterator it)
Definition evaluate.cc:1196
virtual result_t apply(iterator &) override
Definition evaluate.cc:39
iterator handle_derivative(iterator it)
Definition evaluate.cc:647
void simplify_components(iterator, bool run_sympy=true)
Simplify all components of a 'components' node by collecting terms and optionally running sympy's sim...
Definition evaluate.cc:1129
iterator handle_epsilon(iterator it)
Definition evaluate.cc:1057
const Ex & components
Definition evaluate.hh:114
void merge_components(iterator it1, iterator it2)
Merge the information in two 'components' nodes at the given iterators, moving all out of the second ...
Definition evaluate.cc:551
iterator wrap_scalar_in_components_node(iterator sib)
Wrap a non-component scalar node in a 'components' node.
Definition evaluate.cc:1172
void unwrap_scalar_in_components_node(iterator sib)
Inverse of the above.
Definition evaluate.cc:1182
bool call_sympy
Definition evaluate.hh:115
iterator handle_sum(iterator it)
Definition evaluate.cc:148
iterator handle_factor(sibling_iterator sib, const IndexClassifier::index_map_t &full_ind_free)
Replace a single factor with a 'components' ... The full_ind_free argument can contain a list of indi...
Definition evaluate.cc:236
General purpose brute force scalar simplification algorithm.
Definition simplify.hh:15
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
Ex rhs(Ex_ptr ex)
Definition py_ex.cc:423
void set(rset_t::iterator &num, multiplier_t fac)
Definition Storage.cc:1179