GiNaC 1.8.7
|
Wrapper template for making GiNaC classes out of STL containers. More...
#include <container.h>
Public Types | |
typedef STLT::const_iterator | const_iterator |
typedef STLT::const_reverse_iterator | const_reverse_iterator |
Public Member Functions | |
container (STLT const &s) | |
container (STLT &&v) | |
container (exvector::const_iterator b, exvector::const_iterator e) | |
container (std::initializer_list< ex > il) | |
bool | info (unsigned inf) const override |
Information about the object. More... | |
unsigned | precedence () const override |
Return relative operator precedence (for parenthezing output). More... | |
size_t | nops () const override |
Number of operands/members. More... | |
ex | op (size_t i) const override |
Return operand/member at position i. More... | |
ex & | let_op (size_t i) override |
Return modifiable operand/member at position i. More... | |
ex | subs (const exmap &m, unsigned options=0) const override |
Substitute a set of objects by arbitrary expressions. More... | |
void | read_archive (const archive_node &n, lst &sym_lst) override |
Load (deserialize) the object from an archive node. More... | |
void | archive (archive_node &n) const override |
Archive the object. More... | |
container & | prepend (const ex &b) |
Add element at front. More... | |
container & | append (const ex &b) |
Add element at back. More... | |
container & | remove_first () |
Remove first element. More... | |
container & | remove_last () |
Remove last element. More... | |
container & | remove_all () |
Remove all elements. More... | |
container & | sort () |
Sort elements. More... | |
container & | unique () |
Remove adjacent duplicate elements. More... | |
const_iterator | begin () const |
const_iterator | end () const |
const_reverse_iterator | rbegin () const |
const_reverse_iterator | rend () const |
Public Member Functions inherited from GiNaC::basic | |
virtual | ~basic () |
basic destructor, virtual because class ex will delete objects of derived classes via a basic*. More... | |
basic (const basic &other) | |
const basic & | operator= (const basic &other) |
basic assignment operator: the other object might be of a derived class. More... | |
virtual basic * | duplicate () const |
Create a clone of this object on the heap. More... | |
virtual ex | eval () const |
Perform automatic non-interruptive term rewriting rules. More... | |
virtual ex | evalf () const |
Evaluate object numerically. More... | |
virtual ex | evalm () const |
Evaluate sums, products and integer powers of matrices. More... | |
virtual ex | eval_integ () const |
Evaluate integrals, if result is known. More... | |
virtual ex | eval_indexed (const basic &i) const |
Perform automatic symbolic evaluations on indexed expression that contains this object as the base expression. More... | |
virtual void | print (const print_context &c, unsigned level=0) const |
Output to stream. More... | |
virtual void | dbgprint () const |
Little wrapper around print to be called within a debugger. More... | |
virtual void | dbgprinttree () const |
Little wrapper around printtree to be called within a debugger. More... | |
virtual unsigned | precedence () const |
Return relative operator precedence (for parenthezing output). More... | |
virtual bool | info (unsigned inf) const |
Information about the object. More... | |
virtual size_t | nops () const |
Number of operands/members. More... | |
virtual ex | op (size_t i) const |
Return operand/member at position i. More... | |
virtual ex | operator[] (const ex &index) const |
virtual ex | operator[] (size_t i) const |
virtual ex & | let_op (size_t i) |
Return modifiable operand/member at position i. More... | |
virtual ex & | operator[] (const ex &index) |
virtual ex & | operator[] (size_t i) |
virtual bool | has (const ex &other, unsigned options=0) const |
Test for occurrence of a pattern. More... | |
virtual bool | match (const ex &pattern, exmap &repls) const |
Check whether the expression matches a given pattern. More... | |
virtual ex | subs (const exmap &m, unsigned options=0) const |
Substitute a set of objects by arbitrary expressions. More... | |
virtual ex | map (map_function &f) const |
Construct new expression by applying the specified function to all sub-expressions (one level only, not recursively). More... | |
virtual void | accept (GiNaC::visitor &v) const |
virtual bool | is_polynomial (const ex &var) const |
Check whether this is a polynomial in the given variables. More... | |
virtual int | degree (const ex &s) const |
Return degree of highest power in object s. More... | |
virtual int | ldegree (const ex &s) const |
Return degree of lowest power in object s. More... | |
virtual ex | coeff (const ex &s, int n=1) const |
Return coefficient of degree n in object s. More... | |
virtual ex | expand (unsigned options=0) const |
Expand expression, i.e. More... | |
virtual ex | collect (const ex &s, bool distributed=false) const |
Sort expanded expression in terms of powers of some object(s). More... | |
virtual ex | series (const relational &r, int order, unsigned options=0) const |
Default implementation of ex::series(). More... | |
virtual ex | normal (exmap &repl, exmap &rev_lookup, lst &modifier) const |
Default implementation of ex::normal(). More... | |
virtual ex | to_rational (exmap &repl) const |
Default implementation of ex::to_rational(). More... | |
virtual ex | to_polynomial (exmap &repl) const |
virtual numeric | integer_content () const |
virtual ex | smod (const numeric &xi) const |
Apply symmetric modular homomorphism to an expanded multivariate polynomial. More... | |
virtual numeric | max_coefficient () const |
Implementation ex::max_coefficient(). More... | |
virtual exvector | get_free_indices () const |
Return a vector containing the free indices of an expression. More... | |
virtual ex | add_indexed (const ex &self, const ex &other) const |
Add two indexed expressions. More... | |
virtual ex | scalar_mul_indexed (const ex &self, const numeric &other) const |
Multiply an indexed expression with a scalar. More... | |
virtual bool | contract_with (exvector::iterator self, exvector::iterator other, exvector &v) const |
Try to contract two indexed expressions that appear in the same product. More... | |
virtual unsigned | return_type () const |
virtual return_type_t | return_type_tinfo () const |
virtual ex | conjugate () const |
virtual ex | real_part () const |
virtual ex | imag_part () const |
template<class T > | |
void | print_dispatch (const print_context &c, unsigned level) const |
Like print(), but dispatch to the specified class. More... | |
void | print_dispatch (const registered_class_info &ri, const print_context &c, unsigned level) const |
Like print(), but dispatch to the specified class. More... | |
virtual void | archive (archive_node &n) const |
Save (serialize) the object into archive node. More... | |
virtual void | read_archive (const archive_node &n, lst &syms) |
Load (deserialize) the object from an archive node. More... | |
ex | subs_one_level (const exmap &m, unsigned options) const |
Helper function for subs(). More... | |
ex | diff (const symbol &s, unsigned nth=1) const |
Default interface of nth derivative ex::diff(s, n). More... | |
int | compare (const basic &other) const |
Compare objects syntactically to establish canonical ordering. More... | |
bool | is_equal (const basic &other) const |
Test for syntactic equality. More... | |
const basic & | hold () const |
Stop further evaluation. More... | |
unsigned | gethash () const |
const basic & | setflag (unsigned f) const |
Set some status_flags. More... | |
const basic & | clearflag (unsigned f) const |
Clear some status_flags. More... | |
Public Member Functions inherited from GiNaC::refcounted | |
refcounted () noexcept | |
unsigned int | add_reference () noexcept |
unsigned int | remove_reference () noexcept |
unsigned int | get_refcount () const noexcept |
void | set_refcount (unsigned int r) noexcept |
Protected Types | |
typedef container_storage< C >::STLT | STLT |
Protected Types inherited from GiNaC::container_storage< C > | |
typedef C< ex > | STLT |
Protected Member Functions | |
ex | conjugate () const override |
ex | real_part () const override |
ex | imag_part () const override |
bool | is_equal_same_type (const basic &other) const override |
Returns true if two objects of same type are equal. More... | |
virtual ex | thiscontainer (const STLT &v) const |
Similar to duplicate(), but with a preset sequence. More... | |
virtual ex | thiscontainer (STLT &&v) const |
Similar to duplicate(), but with a preset sequence (which gets pilfered). More... | |
virtual void | printseq (const print_context &c, char openbracket, char delim, char closebracket, unsigned this_precedence, unsigned upper_precedence=0) const |
Print sequence of contained elements. More... | |
void | do_print (const print_context &c, unsigned level) const |
void | do_print_tree (const print_tree &c, unsigned level) const |
void | do_print_python (const print_python &c, unsigned level) const |
void | do_print_python_repr (const print_python_repr &c, unsigned level) const |
STLT | subschildren (const exmap &m, unsigned options=0) const |
Protected Member Functions inherited from GiNaC::basic | |
basic () | |
virtual ex | eval_ncmul (const exvector &v) const |
virtual bool | match_same_type (const basic &other) const |
Returns true if the attributes of two objects are similar enough for a match. More... | |
virtual ex | derivative (const symbol &s) const |
Default implementation of ex::diff(). More... | |
virtual int | compare_same_type (const basic &other) const |
Returns order relation between two objects of same type. More... | |
virtual bool | is_equal_same_type (const basic &other) const |
Returns true if two objects of same type are equal. More... | |
virtual unsigned | calchash () const |
Compute the hash value of an object and if it makes sense to store it in the objects status_flags, do so. More... | |
void | ensure_if_modifiable () const |
Ensure the object may be modified without hurting others, throws if this is not the case. More... | |
void | do_print (const print_context &c, unsigned level) const |
Default output to stream. More... | |
void | do_print_tree (const print_tree &c, unsigned level) const |
Tree output to stream. More... | |
void | do_print_python_repr (const print_python_repr &c, unsigned level) const |
Python parsable output to stream. More... | |
Protected Member Functions inherited from GiNaC::container_storage< C > | |
container_storage () | |
container_storage (size_t n, const ex &e) | |
container_storage (std::initializer_list< ex > il) | |
template<class In > | |
container_storage (In b, In e) | |
void | reserve (size_t) |
~container_storage () | |
void | reserve (size_t n) |
void | reserve (std::vector< ex > &v, size_t n) |
Static Protected Member Functions | |
static unsigned | get_default_flags () |
Specialization of container::get_default_flags() for lst. More... | |
static char | get_open_delim () |
Specialization of container::get_open_delim() for lst. More... | |
static char | get_close_delim () |
Specialization of container::get_close_delim() for lst. More... | |
Static Protected Member Functions inherited from GiNaC::container_storage< C > | |
static void | reserve (STLT &, size_t) |
Private Member Functions | |
void | sort_ (std::random_access_iterator_tag) |
void | sort_ (std::input_iterator_tag) |
void | unique_ () |
void | unique_ () |
Specialization of container::unique_() for std::list. More... | |
Additional Inherited Members | |
Protected Attributes inherited from GiNaC::basic | |
unsigned | flags |
of type status_flags More... | |
unsigned | hashvalue |
hash value More... | |
Protected Attributes inherited from GiNaC::container_storage< C > | |
STLT | seq |
Wrapper template for making GiNaC classes out of STL containers.
Definition at line 73 of file container.h.
|
protected |
Definition at line 76 of file container.h.
typedef STLT::const_iterator GiNaC::container< C >::const_iterator |
Definition at line 79 of file container.h.
typedef STLT::const_reverse_iterator GiNaC::container< C >::const_reverse_iterator |
Definition at line 80 of file container.h.
|
inline |
Definition at line 90 of file container.h.
References GiNaC::container< C >::get_default_flags(), GiNaC::container_storage< C >::seq, and GiNaC::basic::setflag().
Referenced by GiNaC::container< C >::thiscontainer().
|
inlineexplicit |
Definition at line 96 of file container.h.
References GiNaC::container< C >::get_default_flags(), GiNaC::container_storage< C >::seq, and GiNaC::basic::setflag().
|
inline |
Definition at line 102 of file container.h.
References GiNaC::container< C >::get_default_flags(), and GiNaC::basic::setflag().
|
inline |
Definition at line 108 of file container.h.
References GiNaC::container< C >::get_default_flags(), and GiNaC::basic::setflag().
|
inlinestaticprotected |
Specialization of container::get_default_flags() for lst.
Definition at line 84 of file container.h.
Referenced by GiNaC::container< C >::container(), and GiNaC::container< C >::read_archive().
|
inlinestaticprotected |
Specialization of container::get_open_delim() for lst.
Definition at line 85 of file container.h.
|
inlinestaticprotected |
Specialization of container::get_close_delim() for lst.
Definition at line 86 of file container.h.
|
inlineoverridevirtual |
Information about the object.
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::function, GiNaC::indexed, and GiNaC::ncmul.
Definition at line 116 of file container.h.
|
inlineoverridevirtual |
Return relative operator precedence (for parenthezing output).
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::function, GiNaC::indexed, and GiNaC::ncmul.
Definition at line 117 of file container.h.
Referenced by GiNaC::fderivative::do_print(), GiNaC::fderivative::do_print_csrc(), GiNaC::fderivative::do_print_latex(), and GiNaC::function::print().
|
inlineoverridevirtual |
Number of operands/members.
Reimplemented from GiNaC::basic.
Definition at line 118 of file container.h.
References GiNaC::container_storage< C >::seq.
Referenced by GiNaC::function::calchash(), GiNaC::ncmul::conjugate(), GiNaC::ex::denom(), GiNaC::diag_matrix(), GiNaC::fderivative::do_print_tree(), GiNaC::G3_eval(), GiNaC::G3_evalf(), GiNaC::ncmul::get_free_indices(), GiNaC::H_evalf(), GiNaC::container< C >::imag_part(), GiNaC::is_discriminant_of_quadratic_number_field(), GiNaC::iterated_integral_evalf_impl(), GiNaC::lst_to_matrix(), GiNaC::ex::normal(), GiNaC::basic::normal(), GiNaC::add::normal(), GiNaC::mul::normal(), GiNaC::power::normal(), GiNaC::ex::numer(), GiNaC::ex::numer_denom(), GiNaC::function::print(), GiNaC::container< C >::real_part(), GiNaC::sqrfree(), and GiNaC::ex::subs().
|
overridevirtual |
Return operand/member at position i.
Reimplemented from GiNaC::basic.
Definition at line 295 of file container.h.
References GINAC_ASSERT, and GiNaC::nops().
Referenced by GiNaC::function::calchash(), GiNaC::ex::denom(), GiNaC::mul::expand(), GiNaC::ncmul::expand(), GiNaC::ncmul::get_free_indices(), GiNaC::H_evalf(), GiNaC::indexed::imag_part(), GiNaC::is_discriminant_of_quadratic_number_field(), GiNaC::kronecker_symbol(), GiNaC::ex::normal(), GiNaC::basic::normal(), GiNaC::add::normal(), GiNaC::mul::normal(), GiNaC::power::normal(), GiNaC::ex::numer(), GiNaC::ex::numer_denom(), GiNaC::indexed::real_part(), GiNaC::rename_dummy_indices_uniquely(), GiNaC::indexed::return_type(), GiNaC::indexed::return_type_tinfo(), GiNaC::sqrfree(), GiNaC::symm(), and GiNaC::symmetrize_cyclic().
|
overridevirtual |
Return modifiable operand/member at position i.
Reimplemented from GiNaC::basic.
Definition at line 305 of file container.h.
References GINAC_ASSERT, and GiNaC::nops().
|
overridevirtual |
Substitute a set of objects by arbitrary expressions.
The ex returned will already be evaluated.
Reimplemented from GiNaC::basic.
Definition at line 316 of file container.h.
References GiNaC::is_a(), m, and options.
|
inlineoverridevirtual |
Load (deserialize) the object from an archive node.
Construct object from archive_node.
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::fderivative, GiNaC::function, and GiNaC::indexed.
Definition at line 123 of file container.h.
References GiNaC::container< C >::get_default_flags(), n, GiNaC::container_storage< C >::reserve(), GiNaC::container_storage< C >::seq, and GiNaC::basic::setflag().
|
inlineoverridevirtual |
Archive the object.
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::fderivative, GiNaC::function, and GiNaC::indexed.
Definition at line 138 of file container.h.
References GiNaC::archive_node::add_ex(), n, and GiNaC::container_storage< C >::seq.
|
inlineoverrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::function, and GiNaC::ncmul.
Definition at line 147 of file container.h.
References GiNaC::are_ex_trivially_equal(), GiNaC::container_storage< C >::reserve(), GiNaC::container_storage< C >::seq, GiNaC::container< C >::thiscontainer(), and x.
Referenced by GiNaC::ncmul::conjugate().
|
inlineoverrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::function, GiNaC::indexed, and GiNaC::ncmul.
Definition at line 174 of file container.h.
References GiNaC::container< C >::begin(), cont, GiNaC::container< C >::end(), GiNaC::container< C >::nops(), GiNaC::container_storage< C >::reserve(), and GiNaC::container< C >::thiscontainer().
|
inlineoverrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::function, GiNaC::indexed, and GiNaC::ncmul.
Definition at line 185 of file container.h.
References GiNaC::container< C >::begin(), cont, GiNaC::container< C >::end(), GiNaC::container< C >::nops(), GiNaC::container_storage< C >::reserve(), and GiNaC::container< C >::thiscontainer().
|
overrideprotectedvirtual |
Returns true if two objects of same type are equal.
Normally needs not be reimplemented as long as it wasn't overwritten by some parent class, since it just calls compare_same_type(). The reason why this function exists is that sometimes it is easier to determine equality than an order relation and then it can be overridden.
Reimplemented from GiNaC::basic.
Reimplemented in GiNaC::fderivative, and GiNaC::function.
Definition at line 362 of file container.h.
References GINAC_ASSERT, and GiNaC::container_storage< C >::seq.
Referenced by GiNaC::function::is_equal_same_type().
|
inlineprotectedvirtual |
Similar to duplicate(), but with a preset sequence.
Must be overridden by derived classes.
Definition at line 202 of file container.h.
References GiNaC::container< C >::container().
Referenced by GiNaC::container< C >::conjugate(), GiNaC::container< C >::imag_part(), and GiNaC::container< C >::real_part().
|
inlineprotectedvirtual |
Similar to duplicate(), but with a preset sequence (which gets pilfered).
Must be overridden by derived classes.
Definition at line 206 of file container.h.
References GiNaC::container< C >::container().
|
protectedvirtual |
Print sequence of contained elements.
Definition at line 451 of file container.h.
References c.
Referenced by GiNaC::fderivative::do_print(), GiNaC::ncmul::do_print(), GiNaC::ncmul::do_print_csrc(), GiNaC::fderivative::do_print_csrc(), GiNaC::fderivative::do_print_latex(), and GiNaC::function::print().
|
inlineprivate |
Definition at line 214 of file container.h.
References GiNaC::container_storage< C >::seq.
|
inlineprivate |
Definition at line 219 of file container.h.
References GiNaC::container_storage< C >::seq.
|
inlineprivate |
Definition at line 224 of file container.h.
References GiNaC::container_storage< C >::seq.
container< C > & GiNaC::container< C >::prepend | ( | const ex & | b | ) |
Add element at front.
Definition at line 382 of file container.h.
container< C > & GiNaC::container< C >::append | ( | const ex & | b | ) |
Add element at back.
Definition at line 391 of file container.h.
Referenced by GiNaC::ifactor(), GiNaC::Li_eval(), GiNaC::lsolve(), GiNaC::symbol::read_archive(), GiNaC::replace_with_symbol(), GiNaC::sqrfree(), GiNaC::symm(), and GiNaC::symmetrize_cyclic().
container< C > & GiNaC::container< C >::remove_first |
Remove first element.
Definition at line 400 of file container.h.
Referenced by GiNaC::sqrfree(), and GiNaC::symmetrize_cyclic().
container< C > & GiNaC::container< C >::remove_last |
Remove last element.
Definition at line 409 of file container.h.
container< C > & GiNaC::container< C >::remove_all |
Remove all elements.
Definition at line 418 of file container.h.
container< C > & GiNaC::container< C >::sort |
Sort elements.
Definition at line 427 of file container.h.
container< C > & GiNaC::container< C >::unique |
Remove adjacent duplicate elements.
Definition at line 442 of file container.h.
|
inline |
Definition at line 239 of file container.h.
References GiNaC::container_storage< C >::seq.
Referenced by GiNaC::ex::antisymmetrize(), GiNaC::ncmul::conjugate(), GiNaC::G3_eval(), GiNaC::G3_evalf(), GiNaC::H_evalf(), GiNaC::container< C >::imag_part(), GiNaC::kronecker_symbol(), GiNaC::container< C >::real_part(), GiNaC::ex::subs(), GiNaC::ex::symmetrize(), GiNaC::ex::symmetrize_cyclic(), GiNaC::zeta1_evalf(), GiNaC::zeta2_evalf(), and GiNaC::zeta2_print_latex().
|
inline |
Definition at line 240 of file container.h.
References GiNaC::container_storage< C >::seq.
Referenced by GiNaC::ex::antisymmetrize(), GiNaC::fderivative::archive(), GiNaC::ncmul::conjugate(), GiNaC::fderivative::do_print(), GiNaC::fderivative::do_print_csrc(), GiNaC::fderivative::do_print_latex(), GiNaC::fderivative::do_print_tree(), GiNaC::ncmul::expandchildren(), GiNaC::H_evalf(), GiNaC::container< C >::imag_part(), GiNaC::kronecker_symbol(), GiNaC::container< C >::real_part(), GiNaC::ncmul::return_type(), GiNaC::ex::subs(), GiNaC::ex::symmetrize(), and GiNaC::ex::symmetrize_cyclic().
|
inline |
Definition at line 241 of file container.h.
References GiNaC::container_storage< C >::seq.
|
inline |
Definition at line 242 of file container.h.
References GiNaC::container_storage< C >::seq.
|
protected |
Definition at line 260 of file container.h.
References c.
|
protected |
Definition at line 267 of file container.h.
References c, and GiNaC::nops().
|
protected |
Definition at line 282 of file container.h.
References c.
|
protected |
Definition at line 288 of file container.h.
References c.
|
protected |
Definition at line 474 of file container.h.
References GiNaC::are_ex_trivially_equal(), m, options, and GiNaC::ex::subs().
|
inlineprivate |
Specialization of container::unique_() for std::list.
Definition at line 435 of file container.h.