|
GiNaC 1.8.9
|
Sum of expressions. More...
#include <add.h>
Public Member Functions | |
| add (const ex &lh, const ex &rh) | |
| add (const exvector &v) | |
| add (const epvector &v) | |
| add (const epvector &v, const ex &oc) | |
| add (epvector &&v) | |
| add (epvector &&v, const ex &oc) | |
| unsigned | precedence () const override |
| Return relative operator precedence (for parenthezing output). | |
| bool | info (unsigned inf) const override |
| Information about the object. | |
| bool | is_polynomial (const ex &var) const override |
| Check whether this is a polynomial in the given variables. | |
| 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 | 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. | |
| ex | series (const relational &r, int order, unsigned options=0) const override |
| Implementation of ex::series() for sums. | |
| ex | normal (exmap &repl, exmap &rev_lookup, lst &modifier) const override |
| Implementation of ex::normal() for a sum. | |
| numeric | integer_content () const override |
| ex | smod (const numeric &xi) const override |
| Apply symmetric modular homomorphism to an expanded multivariate polynomial. | |
| numeric | max_coefficient () const override |
| Implementation ex::max_coefficient(). | |
| ex | conjugate () const override |
| ex | real_part () const override |
| ex | imag_part () const override |
| exvector | get_free_indices () const override |
| Return a vector containing the free indices of an expression. | |
| ex | eval_ncmul (const exvector &v) const override |
Public Member Functions inherited from GiNaC::expairseq | |
| expairseq (const ex &lh, const ex &rh) | |
| expairseq (const exvector &v) | |
| expairseq (const epvector &v, const ex &oc, bool do_index_renaming=false) | |
| expairseq (epvector &&vp, const ex &oc, bool do_index_renaming=false) | |
| unsigned | precedence () const override |
| Return relative operator precedence (for parenthezing output). | |
| bool | info (unsigned inf) const override |
| Information about the object. | |
| size_t | nops () const override |
| Number of operands/members. | |
| ex | op (size_t i) const override |
| Return operand/member at position i. | |
| ex | map (map_function &f) const override |
| Construct new expression by applying the specified function to all sub-expressions (one level only, not recursively). | |
| ex | eval () const override |
| Perform coefficient-wise automatic term rewriting rules in this class. | |
| ex | to_rational (exmap &repl) const override |
| Implementation of ex::to_rational() for expairseqs. | |
| ex | to_polynomial (exmap &repl) const override |
| Implementation of ex::to_polynomial() for expairseqs. | |
| bool | match (const ex &pattern, exmap &repl_lst) const override |
| Check whether the expression matches a given pattern. | |
| ex | subs (const exmap &m, unsigned options=0) const override |
| Substitute a set of objects by arbitrary expressions. | |
| ex | conjugate () const override |
| void | archive (archive_node &n) const override |
| Save (serialize) the object into archive node. | |
| void | read_archive (const archive_node &n, lst &syms) override |
| Load (deserialize) the object from an archive node. | |
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 & | let_op (size_t i) |
| Return modifiable operand/member at position i. | |
| 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 void | accept (GiNaC::visitor &v) const |
| virtual ex | collect (const ex &s, bool distributed=false) const |
| Sort expanded expression in terms of powers of some object(s). | |
| 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 sum. | |
| unsigned | return_type () const override |
| return_type_t | return_type_tinfo () const override |
| ex | thisexpairseq (const epvector &v, const ex &oc, bool do_index_renaming=false) const override |
| Create an object of this type. | |
| ex | thisexpairseq (epvector &&vp, const ex &oc, bool do_index_renaming=false) const override |
| expair | split_ex_to_pair (const ex &e) const override |
| Form an expair from an ex, using the corresponding semantics. | |
| expair | combine_ex_with_coeff_to_pair (const ex &e, const ex &c) const override |
| expair | combine_pair_with_coeff_to_pair (const expair &p, const ex &c) const override |
| ex | recombine_pair_to_ex (const expair &p) const override |
| Form an ex out of an expair, using the corresponding semantics. | |
| ex | expand (unsigned options=0) const override |
| Expand expression, i.e. | |
| void | print_add (const print_context &c, const char *openbrace, const char *closebrace, const char *mul_sym, unsigned level) const |
| void | do_print (const print_context &c, unsigned level) const |
| void | do_print_latex (const print_latex &c, unsigned level) const |
| void | do_print_csrc (const print_csrc &c, unsigned level) const |
| void | do_print_python_repr (const print_python_repr &c, unsigned level) const |
Protected Member Functions inherited from GiNaC::expairseq | |
| bool | is_equal_same_type (const basic &other) const override |
| Returns true if two objects of same type are equal. | |
| unsigned | return_type () const override |
| unsigned | calchash () const override |
| Compute the hash value of an object and if it makes sense to store it in the objects status_flags, do so. | |
| ex | expand (unsigned options=0) const override |
| Expand expression, i.e. | |
| virtual void | printseq (const print_context &c, char delim, unsigned this_precedence, unsigned upper_precedence) const |
| virtual void | printpair (const print_context &c, const expair &p, unsigned upper_precedence) const |
| virtual bool | expair_needs_further_processing (epp it) |
| virtual ex | default_overall_coeff () const |
| virtual void | combine_overall_coeff (const ex &c) |
| virtual void | combine_overall_coeff (const ex &c1, const ex &c2) |
| virtual bool | can_make_flat (const expair &p) const |
| void | do_print (const print_context &c, unsigned level) const |
| void | do_print_tree (const print_tree &c, unsigned level) const |
| void | construct_from_2_ex (const ex &lh, const ex &rh) |
| void | construct_from_2_expairseq (const expairseq &s1, const expairseq &s2) |
| void | construct_from_expairseq_ex (const expairseq &s, const ex &e) |
| void | construct_from_exvector (const exvector &v) |
| void | construct_from_epvector (const epvector &v, bool do_index_renaming=false) |
| void | construct_from_epvector (epvector &&v, bool do_index_renaming=false) |
| void | make_flat (const exvector &v) |
| Combine this expairseq with argument exvector. | |
| void | make_flat (const epvector &v, bool do_index_renaming=false) |
| Combine this expairseq with argument epvector. | |
| void | canonicalize () |
| Brings this expairseq into a sorted (canonical) form. | |
| void | combine_same_terms_sorted_seq () |
| Compact a presorted expairseq by combining all matching expairs to one each. | |
| bool | is_canonical () const |
| Check if this expairseq is in sorted (canonical) form. | |
| epvector | expandchildren (unsigned options) const |
| Member-wise expand the expairs in this sequence. | |
| epvector | evalchildren () const |
| Member-wise evaluate the expairs in this sequence. | |
| epvector | subschildren (const exmap &m, unsigned options=0) const |
| Member-wise substitute in this sequence. | |
Protected Member Functions inherited from GiNaC::basic | |
| basic () | |
| 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. | |
| 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. | |
Friends | |
| class | mul |
| class | power |
Additional Inherited Members | |
Protected Attributes inherited from GiNaC::expairseq | |
| epvector | seq |
| ex | overall_coeff |
Protected Attributes inherited from GiNaC::basic | |
| unsigned | flags |
| of type status_flags | |
| unsigned | hashvalue |
| hash value | |
Definition at line 59 of file add.cpp.
References GiNaC::_ex0, GiNaC::expairseq::construct_from_2_ex(), GINAC_ASSERT, GiNaC::expairseq::is_canonical(), and GiNaC::expairseq::overall_coeff.
| GiNaC::add::add | ( | const exvector & | v | ) |
Definition at line 66 of file add.cpp.
References GiNaC::_ex0, GiNaC::expairseq::construct_from_exvector(), GINAC_ASSERT, GiNaC::expairseq::is_canonical(), and GiNaC::expairseq::overall_coeff.
| GiNaC::add::add | ( | const epvector & | v | ) |
Definition at line 73 of file add.cpp.
References GiNaC::_ex0, GiNaC::expairseq::construct_from_epvector(), GINAC_ASSERT, GiNaC::expairseq::is_canonical(), and GiNaC::expairseq::overall_coeff.
Definition at line 80 of file add.cpp.
References GiNaC::expairseq::construct_from_epvector(), GINAC_ASSERT, GiNaC::expairseq::is_canonical(), and GiNaC::expairseq::overall_coeff.
| GiNaC::add::add | ( | epvector && | v | ) |
Definition at line 87 of file add.cpp.
References GiNaC::_ex0, GiNaC::expairseq::construct_from_epvector(), GINAC_ASSERT, GiNaC::expairseq::is_canonical(), and GiNaC::expairseq::overall_coeff.
Definition at line 94 of file add.cpp.
References GiNaC::expairseq::construct_from_epvector(), GINAC_ASSERT, GiNaC::expairseq::is_canonical(), and GiNaC::expairseq::overall_coeff.
|
inlineoverridevirtual |
Return relative operator precedence (for parenthezing output).
Reimplemented from GiNaC::basic.
Definition at line 49 of file add.h.
Referenced by do_print_csrc(), and print_add().
|
overridevirtual |
Information about the object.
Reimplemented from GiNaC::basic.
Definition at line 221 of file add.cpp.
References GiNaC::info_flags::cinteger, GiNaC::info_flags::cinteger_polynomial, GiNaC::info_flags::crational, GiNaC::info_flags::crational_polynomial, GiNaC::info_flags::even, GiNaC::ex::info(), info(), GiNaC::info_flags::integer, GiNaC::info_flags::integer_polynomial, GiNaC::ex::is_zero(), GiNaC::info_flags::nonnegative, GiNaC::info_flags::nonnegint, GiNaC::expairseq::overall_coeff, GiNaC::info_flags::polynomial, GiNaC::info_flags::posint, GiNaC::info_flags::positive, GiNaC::info_flags::rational, GiNaC::info_flags::rational_function, GiNaC::info_flags::rational_polynomial, GiNaC::info_flags::real, recombine_pair_to_ex(), and GiNaC::expairseq::seq.
Referenced by info().
|
overridevirtual |
Check whether this is a polynomial in the given variables.
Reimplemented from GiNaC::basic.
Definition at line 252 of file add.cpp.
References GiNaC::expairseq::seq.
|
overridevirtual |
Return degree of highest power in object s.
Reimplemented from GiNaC::basic.
Definition at line 262 of file add.cpp.
References GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, and GiNaC::expairseq::seq.
|
overridevirtual |
Return degree of lowest power in object s.
Reimplemented from GiNaC::basic.
Definition at line 277 of file add.cpp.
References GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, and GiNaC::expairseq::seq.
Return coefficient of degree n in object s.
Reimplemented from GiNaC::basic.
Definition at line 292 of file add.cpp.
References GiNaC::_ex0, GiNaC::clifford_max_label(), GiNaC::ex::coeff(), GiNaC::ncmul::coeff(), GiNaC::dirac_ONE(), GiNaC::ex::is_zero(), n, GiNaC::expairseq::overall_coeff, and GiNaC::expairseq::seq.
Referenced by print_add(), and smod().
|
overridevirtual |
Perform automatic term rewriting rules in this class.
In the following x stands for a symbolic variables of type ex and c stands for such an expression that contain a plain number.
Reimplemented from GiNaC::basic.
Definition at line 326 of file add.cpp.
References GiNaC::return_types::commutative, GiNaC::expairseq::evalchildren(), GiNaC::status_flags::evaluated, GiNaC::basic::flags, GINAC_ASSERT, GiNaC::basic::hold(), GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), GiNaC::expairseq::seq, and unlikely.
|
overridevirtual |
Evaluate sums, products and integer powers of matrices.
Reimplemented from GiNaC::basic.
Definition at line 360 of file add.cpp.
References GiNaC::matrix::add(), GiNaC::ex::evalm(), m, GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), GiNaC::expairseq::seq, and split_ex_to_pair().
|
overridevirtual |
Implementation of ex::series() for sums.
This performs series addition when adding pseries objects.
Reimplemented from GiNaC::basic.
Definition at line 749 of file pseries.cpp.
References GiNaC::_ex1, GiNaC::expairseq::op(), options, order, GiNaC::expairseq::overall_coeff, r, GiNaC::expairseq::seq, and GiNaC::ex::series().
Implementation of ex::normal() for a sum.
It expands terms and performs fractional addition.
Reimplemented from GiNaC::basic.
Definition at line 2336 of file normal.cpp.
References expand(), GiNaC::frac_cancel(), GiNaC::gcd(), GINAC_ASSERT, n, GiNaC::subs_options::no_pattern, GiNaC::container< C >::nops(), GiNaC::ex::normal(), GiNaC::container< C >::op(), GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), and GiNaC::expairseq::seq.
|
overridevirtual |
Reimplemented from GiNaC::basic.
Definition at line 333 of file normal.cpp.
References GiNaC::_num0_p, GiNaC::_num1_p, c, GiNaC::denom(), GiNaC::gcd(), GINAC_ASSERT, GiNaC::lcm(), GiNaC::numer(), GiNaC::expairseq::overall_coeff, and GiNaC::expairseq::seq.
Apply symmetric modular homomorphism to an expanded multivariate polynomial.
This function is usually used internally by heur_gcd().
| xi | modulus |
Reimplemented from GiNaC::basic.
Definition at line 1213 of file normal.cpp.
References coeff(), GINAC_ASSERT, GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, GiNaC::expairseq::seq, and GiNaC::smod().
|
overridevirtual |
Implementation ex::max_coefficient().
Reimplemented from GiNaC::basic.
Definition at line 1171 of file normal.cpp.
References GiNaC::abs(), GINAC_ASSERT, GiNaC::expairseq::overall_coeff, and GiNaC::expairseq::seq.
|
overridevirtual |
Reimplemented from GiNaC::basic.
Definition at line 390 of file add.cpp.
References GiNaC::are_ex_trivially_equal(), GiNaC::ex::conjugate(), GiNaC::expairseq::nops(), and GiNaC::expairseq::op().
|
overridevirtual |
Reimplemented from GiNaC::basic.
Definition at line 414 of file add.cpp.
References GiNaC::ex::coeff(), GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, GiNaC::info_flags::real, GiNaC::ex::real_part(), recombine_pair_to_ex(), GiNaC::expairseq::seq, and split_ex_to_pair().
|
overridevirtual |
Reimplemented from GiNaC::basic.
Definition at line 431 of file add.cpp.
References GiNaC::ex::coeff(), GiNaC::ex::imag_part(), GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, GiNaC::info_flags::real, recombine_pair_to_ex(), GiNaC::expairseq::seq, and split_ex_to_pair().
|
overridevirtual |
Return a vector containing the free indices of an expression.
Reimplemented from GiNaC::basic.
Definition at line 465 of file indexed.cpp.
References GiNaC::ex::get_free_indices(), GiNaC::indices_consistent(), GiNaC::expairseq::nops(), and GiNaC::expairseq::op().
Reimplemented from GiNaC::basic.
Definition at line 448 of file add.cpp.
References GiNaC::expairseq::seq.
Implementation of ex::diff() for a sum.
It differentiates each term.
Reimplemented from GiNaC::basic.
Definition at line 460 of file add.cpp.
References GiNaC::expairseq::seq.
|
overrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Definition at line 479 of file add.cpp.
References GiNaC::return_types::commutative, and GiNaC::expairseq::seq.
|
overrideprotectedvirtual |
Reimplemented from GiNaC::basic.
Definition at line 487 of file add.cpp.
References GiNaC::expairseq::seq.
|
overrideprotectedvirtual |
Create an object of this type.
This method works similar to a constructor. It is useful because expairseq has (at least) two possible different semantics but we want to inherit methods thus avoiding code duplication. Sometimes a method in expairseq has to create a new one of the same semantics, which cannot be done by a ctor because the name (add, mul,...) is unknown on the expairseq level. In order for this trick to work a derived class must of course override this definition.
Reimplemented from GiNaC::expairseq.
|
overrideprotectedvirtual |
Reimplemented from GiNaC::expairseq.
Form an expair from an ex, using the corresponding semantics.
Reimplemented from GiNaC::expairseq.
Definition at line 507 of file add.cpp.
References GiNaC::_ex1, GiNaC::basic::clearflag(), GiNaC::status_flags::evaluated, GiNaC::status_flags::hash_calculated, GiNaC::ex::is_equal(), and GiNaC::expairseq::overall_coeff.
Referenced by evalm(), imag_part(), and real_part().
|
overrideprotectedvirtual |
Reimplemented from GiNaC::expairseq.
Definition at line 522 of file add.cpp.
References GiNaC::_ex1, c, GiNaC::basic::clearflag(), GiNaC::status_flags::evaluated, GINAC_ASSERT, GiNaC::status_flags::hash_calculated, GiNaC::ex::is_equal(), likely, and GiNaC::expairseq::overall_coeff.
|
overrideprotectedvirtual |
Reimplemented from GiNaC::expairseq.
Definition at line 548 of file add.cpp.
References GiNaC::_ex1, GiNaC::_num1_p, c, GiNaC::expair::coeff, GINAC_ASSERT, and GiNaC::expair::rest.
Referenced by GiNaC::mul::eval(), and GiNaC::power::expand_add_2().
Form an ex out of an expair, using the corresponding semantics.
Reimplemented from GiNaC::expairseq.
Definition at line 562 of file add.cpp.
References GiNaC::_num1_p, GiNaC::expair::coeff, and GiNaC::expair::rest.
Referenced by eval(), evalm(), GiNaC::power::expand(), imag_part(), info(), normal(), and real_part().
|
overrideprotectedvirtual |
Expand expression, i.e.
multiply it out and return the result as a new expression.
Reimplemented from GiNaC::basic.
Definition at line 570 of file add.cpp.
References GiNaC::expairseq::expandchildren(), GiNaC::status_flags::expanded, options, GiNaC::expairseq::overall_coeff, and GiNaC::basic::setflag().
Referenced by normal().
|
protected |
Definition at line 113 of file add.cpp.
References GiNaC::_num1_p, GiNaC::_num_1_p, c, coeff(), GiNaC::ex::is_equal(), GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, precedence(), GiNaC::basic::print(), GiNaC::ex::print(), and GiNaC::expairseq::seq.
Referenced by do_print(), and do_print_latex().
|
protected |
Definition at line 158 of file add.cpp.
References c, and print_add().
|
protected |
Definition at line 163 of file add.cpp.
References c, and print_add().
|
protected |
Definition at line 168 of file add.cpp.
References GiNaC::_ex1, GiNaC::_ex_1, GiNaC::_num1_p, GiNaC::_num_1_p, c, GiNaC::ex::info(), GiNaC::ex::is_zero(), GiNaC::expairseq::overall_coeff, GiNaC::info_flags::positive, precedence(), GiNaC::ex::print(), GiNaC::info_flags::real, and GiNaC::expairseq::seq.
|
protected |
Definition at line 210 of file add.cpp.
References c, GiNaC::expairseq::nops(), GiNaC::expairseq::op(), and GiNaC::ex::print().