|
GiNaC 1.8.9
|
Non-commutative product of expressions. More...
#include <ncmul.h>
Public Member Functions | |
| ncmul (const ex &lh, const ex &rh) | |
| ncmul (const ex &f1, const ex &f2, const ex &f3) | |
| ncmul (const ex &f1, const ex &f2, const ex &f3, const ex &f4) | |
| ncmul (const ex &f1, const ex &f2, const ex &f3, const ex &f4, const ex &f5) | |
| ncmul (const ex &f1, const ex &f2, const ex &f3, const ex &f4, const ex &f5, const ex &f6) | |
| ncmul (const exvector &v) | |
| ncmul (exvector &&v) | |
| unsigned | precedence () const override |
| Return relative operator precedence (for parenthezing output). | |
| bool | info (unsigned inf) const override |
| Information about the object. | |
| int | degree (const ex &s) const override |
| Return degree of highest power in object s. | |
| int | ldegree (const ex &s) const override |
| Return degree of lowest power in object s. | |
| ex | expand (unsigned options=0) const override |
| Expand expression, i.e. | |
| ex | coeff (const ex &s, int n=1) const override |
| Return coefficient of degree n in object s. | |
| ex | eval () const override |
| Perform automatic term rewriting rules in this class. | |
| ex | evalm () const override |
| Evaluate sums, products and integer powers of matrices. | |
| exvector | get_free_indices () const override |
| Return a vector containing the free indices of an expression. | |
| ex | thiscontainer (const exvector &v) const override |
| ex | thiscontainer (exvector &&v) const override |
| ex | conjugate () const override |
| ex | real_part () const override |
| ex | imag_part () const override |
| const exvector & | get_factors () const |
Public Member Functions inherited from GiNaC::container< C > | |
| container (STLT const &s) | |
| container (STLT &&v) | |
| container (exvector::const_iterator b, exvector::const_iterator e) | |
| container (std::initializer_list< ex > il) | |
| size_t | nops () const override |
| Number of operands/members. | |
| ex | op (size_t i) const override |
| Return operand/member at position i. | |
| ex & | let_op (size_t i) override |
| Return modifiable operand/member at position i. | |
| ex | subs (const exmap &m, unsigned options=0) const override |
| Substitute a set of objects by arbitrary expressions. | |
| void | read_archive (const archive_node &n, lst &sym_lst) override |
| Load (deserialize) the object from an archive node. | |
| void | archive (archive_node &n) const override |
| Archive the object. | |
| container & | prepend (const ex &b) |
| Add element at front. | |
| container & | append (const ex &b) |
| Add element at back. | |
| container & | remove_first () |
| Remove first element. | |
| container & | remove_last () |
| Remove last element. | |
| container & | remove_all () |
| Remove all elements. | |
| container & | sort () |
| Sort elements. | |
| container & | unique () |
| Remove adjacent duplicate elements. | |
| 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*. | |
| basic (const basic &other) | |
| const basic & | operator= (const basic &other) |
| basic assignment operator: the other object might be of a derived class. | |
| virtual basic * | duplicate () const |
| Create a clone of this object on the heap. | |
| virtual ex | evalf () const |
| Evaluate object numerically. | |
| virtual ex | eval_integ () const |
| Evaluate integrals, if result is known. | |
| virtual ex | eval_indexed (const basic &i) const |
| Perform automatic symbolic evaluations on indexed expression that contains this object as the base expression. | |
| virtual void | print (const print_context &c, unsigned level=0) const |
| Output to stream. | |
| virtual void | dbgprint () const |
| Little wrapper around print to be called within a debugger. | |
| virtual void | dbgprinttree () const |
| Little wrapper around printtree to be called within a debugger. | |
| virtual ex | operator[] (const ex &index) const |
| virtual ex | operator[] (size_t i) const |
| 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. | |
| virtual bool | match (const ex &pattern, exmap &repls) const |
| Check whether the expression matches a given pattern. | |
| virtual ex | map (map_function &f) const |
| Construct new expression by applying the specified function to all sub-expressions (one level only, not recursively). | |
| 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. | |
| virtual ex | collect (const ex &s, bool distributed=false) const |
| Sort expanded expression in terms of powers of some object(s). | |
| virtual ex | series (const relational &r, int order, unsigned options=0) const |
| Default implementation of ex::series(). | |
| virtual ex | normal (exmap &repl, exmap &rev_lookup, lst &modifier) const |
| Default implementation of ex::normal(). | |
| virtual ex | to_rational (exmap &repl) const |
| Default implementation of ex::to_rational(). | |
| 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. | |
| virtual numeric | max_coefficient () const |
| Implementation ex::max_coefficient(). | |
| virtual ex | add_indexed (const ex &self, const ex &other) const |
| Add two indexed expressions. | |
| virtual ex | scalar_mul_indexed (const ex &self, const numeric &other) const |
| Multiply an indexed expression with a scalar. | |
| 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. | |
| template<class T > | |
| void | print_dispatch (const print_context &c, unsigned level) const |
| Like print(), but dispatch to the specified class. | |
| void | print_dispatch (const registered_class_info &ri, const print_context &c, unsigned level) const |
| Like print(), but dispatch to the specified class. | |
| ex | subs_one_level (const exmap &m, unsigned options) const |
| Helper function for subs(). | |
| ex | diff (const symbol &s, unsigned nth=1) const |
| Default interface of nth derivative ex::diff(s, n). | |
| int | compare (const basic &other) const |
| Compare objects syntactically to establish canonical ordering. | |
| bool | is_equal (const basic &other) const |
| Test for syntactic equality. | |
| const basic & | hold () const |
| Stop further evaluation. | |
| unsigned | gethash () const |
| const basic & | setflag (unsigned f) const |
| Set some status_flags. | |
| const basic & | clearflag (unsigned f) const |
| Clear some status_flags. | |
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 Member Functions | |
| ex | derivative (const symbol &s) const override |
| Implementation of ex::diff() for a non-commutative product. | |
| unsigned | return_type () const override |
| return_type_t | return_type_tinfo () const override |
| void | do_print (const print_context &c, unsigned level) const |
| void | do_print_csrc (const print_context &c, unsigned level) const |
| size_t | count_factors (const ex &e) const |
| void | append_factors (exvector &v, const ex &e) const |
| exvector | expandchildren (unsigned options) const |
Protected Member Functions inherited from GiNaC::container< C > | |
| bool | is_equal_same_type (const basic &other) const override |
| Returns true if two objects of same type are equal. | |
| virtual ex | thiscontainer (const STLT &v) const |
| Similar to duplicate(), but with a preset sequence. | |
| virtual ex | thiscontainer (STLT &&v) const |
| Similar to duplicate(), but with a preset sequence (which gets pilfered). | |
| 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. | |
| 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. | |
| virtual int | compare_same_type (const basic &other) const |
| Returns order relation between two objects of same type. | |
| 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. | |
| void | ensure_if_modifiable () const |
| Ensure the object may be modified without hurting others, throws if this is not the case. | |
| void | do_print (const print_context &c, unsigned level) const |
| Default output to stream. | |
| void | do_print_tree (const print_tree &c, unsigned level) const |
| Tree output to stream. | |
| void | do_print_python_repr (const print_python_repr &c, unsigned level) const |
| Python parsable output to stream. | |
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) |
Friends | |
| class | power |
| ex | reeval_ncmul (const exvector &v) |
| ex | hold_ncmul (const exvector &v) |
Additional Inherited Members | |
Public Types inherited from GiNaC::container< C > | |
| typedef STLT::const_iterator | const_iterator |
| typedef STLT::const_reverse_iterator | const_reverse_iterator |
Protected Types inherited from GiNaC::container< C > | |
| typedef container_storage< C >::STLT | STLT |
Protected Types inherited from GiNaC::container_storage< C > | |
| typedef C< ex > | STLT |
Static Protected Member Functions inherited from GiNaC::container< C > | |
| static unsigned | get_default_flags () |
| Specialization of container::get_default_flags() for lst. | |
| static char | get_open_delim () |
| Specialization of container::get_open_delim() for lst. | |
| static char | get_close_delim () |
| Specialization of container::get_close_delim() for lst. | |
Static Protected Member Functions inherited from GiNaC::container_storage< C > | |
| static void | reserve (STLT &, size_t) |
Protected Attributes inherited from GiNaC::basic | |
| unsigned | flags |
| of type status_flags | |
| unsigned | hashvalue |
| hash value | |
Protected Attributes inherited from GiNaC::container_storage< C > | |
| STLT | seq |
|
inlineoverridevirtual |
Return relative operator precedence (for parenthezing output).
Reimplemented from GiNaC::container< C >.
Definition at line 57 of file ncmul.h.
Referenced by do_print(), and do_print_csrc().
|
overridevirtual |
|
overridevirtual |
Return degree of highest power in object s.
Reimplemented from GiNaC::basic.
Definition at line 195 of file ncmul.cpp.
References GiNaC::basic::is_equal(), and GiNaC::container_storage< C >::seq.
|
overridevirtual |
Return degree of lowest power in object s.
Reimplemented from GiNaC::basic.
Definition at line 207 of file ncmul.cpp.
References GiNaC::basic::is_equal(), and GiNaC::container_storage< C >::seq.
|
overridevirtual |
Expand expression, i.e.
multiply it out and return the result as a new expression.
Reimplemented from GiNaC::basic.
Definition at line 119 of file ncmul.cpp.
References GiNaC::_ex1, expandchildren(), GiNaC::status_flags::expanded, k, GiNaC::container< C >::op(), options, GiNaC::rename_dummy_indices_uniquely(), GiNaC::container_storage< C >::seq, and GiNaC::basic::setflag().
Return coefficient of degree n in object s.
Reimplemented from GiNaC::basic.
Definition at line 219 of file ncmul.cpp.
References GiNaC::_ex0, GiNaC::_ex1, c, GiNaC::ex::coeff(), GiNaC::basic::is_equal(), n, and GiNaC::container_storage< C >::seq.
Referenced by GiNaC::add::coeff().
|
overridevirtual |
Perform automatic term rewriting rules in this class.
In the following x, x1, x2,... stand for a symbolic variables of type ex and c, c1, c2... stand for such expressions that contain a plain number.
Reimplemented from GiNaC::basic.
Definition at line 288 of file ncmul.cpp.
References GiNaC::_ex1, append_factors(), GiNaC::return_types::commutative, count_factors(), GiNaC::status_flags::evaluated, GiNaC::factor(), factors, GiNaC::basic::flags, GINAC_ASSERT, GiNaC::make_flat_inserter::handle_factor(), GiNaC::return_types::noncommutative, GiNaC::return_types::noncommutative_composite, GiNaC::container_storage< C >::reserve(), and GiNaC::container_storage< C >::seq.
|
overridevirtual |
Evaluate sums, products and integer powers of matrices.
Reimplemented from GiNaC::basic.
Definition at line 423 of file ncmul.cpp.
References GiNaC::ex::begin(), GiNaC::matrix::mul(), and GiNaC::container_storage< C >::seq.
|
overridevirtual |
Return a vector containing the free indices of an expression.
Reimplemented from GiNaC::basic.
Definition at line 495 of file indexed.cpp.
References GiNaC::find_free_and_dummy(), GiNaC::ex::get_free_indices(), GiNaC::container< C >::nops(), and GiNaC::container< C >::op().
|
overridevirtual |
Reimplemented from GiNaC::container< C >.
Definition at line 459 of file ncmul.cpp.
References GiNaC::container< C >::begin(), GiNaC::container< C >::conjugate(), GiNaC::container< C >::end(), GiNaC::is_clifford_tinfo(), GiNaC::return_types::noncommutative, GiNaC::container< C >::nops(), return_type(), and return_type_tinfo().
|
overridevirtual |
Reimplemented from GiNaC::container< C >.
Definition at line 478 of file ncmul.cpp.
References GiNaC::basic::real_part().
|
overridevirtual |
Reimplemented from GiNaC::container< C >.
Definition at line 483 of file ncmul.cpp.
References GiNaC::basic::imag_part().
Implementation of ex::diff() for a non-commutative product.
It applies the product rule.
Reimplemented from GiNaC::basic.
Definition at line 493 of file ncmul.cpp.
References GiNaC::ex::diff(), GiNaC::container_storage< C >::seq, and GiNaC::ex::swap().
|
overrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Definition at line 515 of file ncmul.cpp.
References GiNaC::return_types::commutative, GiNaC::container< C >::end(), GINAC_ASSERT, GiNaC::return_types::noncommutative, GiNaC::return_types::noncommutative_composite, and GiNaC::container_storage< C >::seq.
Referenced by conjugate().
|
overrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Definition at line 545 of file ncmul.cpp.
References GiNaC::return_types::noncommutative, and GiNaC::container_storage< C >::seq.
Referenced by conjugate().
|
protected |
Definition at line 101 of file ncmul.cpp.
References c, precedence(), and GiNaC::container< C >::printseq().
|
protected |
Definition at line 106 of file ncmul.cpp.
References c, precedence(), and GiNaC::container< C >::printseq().
|
protected |
Definition at line 252 of file ncmul.cpp.
References GiNaC::return_types::commutative, count_factors(), factors, GiNaC::ex::nops(), GiNaC::ex::op(), and GiNaC::ex::return_type().
Referenced by count_factors(), and eval().
Definition at line 265 of file ncmul.cpp.
References append_factors(), GiNaC::return_types::commutative, GiNaC::ex::nops(), GiNaC::ex::op(), and GiNaC::ex::return_type().
Referenced by append_factors(), and eval().
|
protected |
Definition at line 569 of file ncmul.cpp.
References GiNaC::are_ex_trivially_equal(), GiNaC::container< C >::end(), GiNaC::ex::expand(), options, and GiNaC::container_storage< C >::seq.
Referenced by expand().
| const exvector & GiNaC::ncmul::get_factors | ( | ) | const |
Definition at line 599 of file ncmul.cpp.
References GiNaC::container_storage< C >::seq.