GiNaC 1.8.8
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Friends | List of all members
GiNaC::mul Class Reference

Product of expressions. More...

#include <mul.h>

Inheritance diagram for GiNaC::mul:
GiNaC::expairseq GiNaC::basic GiNaC::refcounted

Public Member Functions

 mul (const ex &lh, const ex &rh)
 
 mul (const exvector &v)
 
 mul (const epvector &v)
 
 mul (const epvector &v, const ex &oc, bool do_index_renaming=false)
 
 mul (epvector &&vp)
 
 mul (epvector &&vp, const ex &oc, bool do_index_renaming=false)
 
 mul (const ex &lh, const ex &mh, const ex &rh)
 
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.
 
bool has (const ex &other, unsigned options=0) const override
 Test for occurrence of a pattern.
 
ex eval () const override
 Perform automatic term rewriting rules in this class.
 
ex evalf () const override
 Evaluate object numerically.
 
ex real_part () const override
 
ex imag_part () const override
 
ex evalm () const override
 Evaluate sums, products and integer powers of matrices.
 
ex series (const relational &s, int order, unsigned options=0) const override
 Implementation of ex::series() for product.
 
ex normal (exmap &repl, exmap &rev_lookup, lst &modifier) const override
 Implementation of ex::normal() for a product.
 
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().
 
exvector get_free_indices () const override
 Return a vector containing the free indices of an expression.
 
ex conjugate () const override
 
ex algebraic_subs_mul (const exmap &m, unsigned options) const
 
- 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)
 
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 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.
 
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 basicoperator= (const basic &other)
 basic assignment operator: the other object might be of a derived class.
 
virtual basicduplicate () const
 Create a clone of this object on the heap.
 
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 exlet_op (size_t i)
 Return modifiable operand/member at position i.
 
virtual exoperator[] (const ex &index)
 
virtual exoperator[] (size_t i)
 
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 basichold () const
 Stop further evaluation.
 
unsigned gethash () const
 
const basicsetflag (unsigned f) const
 Set some status_flags.
 
const basicclearflag (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 product.
 
ex eval_ncmul (const exvector &v) const override
 
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.
 
bool expair_needs_further_processing (epp it) override
 
ex default_overall_coeff () const override
 
void combine_overall_coeff (const ex &c) override
 
void combine_overall_coeff (const ex &c1, const ex &c2) override
 
bool can_make_flat (const expair &p) const override
 
ex expand (unsigned options=0) const override
 Expand expression, i.e.
 
void find_real_imag (ex &, ex &) const
 
void print_overall_coeff (const print_context &c, const char *mul_sym) 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
 
epvector expandchildren (unsigned options) const
 Member-wise expand the expairs representing this sequence.
 
- 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 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.
 
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
 
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.
 

Static Protected Member Functions

static bool can_be_further_expanded (const ex &e)
 

Friends

class add
 
class ncmul
 
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
 

Detailed Description

Product of expressions.

Definition at line 31 of file mul.h.

Constructor & Destructor Documentation

◆ mul() [1/7]

GiNaC::mul::mul ( const ex lh,
const ex rh 
)

◆ mul() [2/7]

GiNaC::mul::mul ( const exvector v)

◆ mul() [3/7]

GiNaC::mul::mul ( const epvector v)

◆ mul() [4/7]

GiNaC::mul::mul ( const epvector v,
const ex oc,
bool  do_index_renaming = false 
)

◆ mul() [5/7]

GiNaC::mul::mul ( epvector &&  vp)

◆ mul() [6/7]

GiNaC::mul::mul ( epvector &&  vp,
const ex oc,
bool  do_index_renaming = false 
)

◆ mul() [7/7]

GiNaC::mul::mul ( const ex lh,
const ex mh,
const ex rh 
)

Member Function Documentation

◆ precedence()

unsigned GiNaC::mul::precedence ( ) const
inlineoverridevirtual

Return relative operator precedence (for parenthezing output).

Reimplemented from GiNaC::expairseq.

Definition at line 51 of file mul.h.

Referenced by do_print(), do_print_csrc(), do_print_latex(), and print_overall_coeff().

◆ info()

bool GiNaC::mul::info ( unsigned  inf) const
overridevirtual

◆ is_polynomial()

bool GiNaC::mul::is_polynomial ( const ex var) const
overridevirtual

Check whether this is a polynomial in the given variables.

Reimplemented from GiNaC::basic.

Definition at line 385 of file mul.cpp.

References GiNaC::info_flags::nonnegint, and GiNaC::expairseq::seq.

◆ degree()

int GiNaC::mul::degree ( const ex s) const
overridevirtual

Return degree of highest power in object s.

Reimplemented from GiNaC::basic.

Definition at line 396 of file mul.cpp.

References GiNaC::ex::degree(), recombine_pair_to_ex(), and GiNaC::expairseq::seq.

◆ ldegree()

int GiNaC::mul::ldegree ( const ex s) const
overridevirtual

Return degree of lowest power in object s.

Reimplemented from GiNaC::basic.

Definition at line 411 of file mul.cpp.

References GiNaC::ex::ldegree(), recombine_pair_to_ex(), and GiNaC::expairseq::seq.

◆ coeff()

ex GiNaC::mul::coeff ( const ex s,
int  n = 1 
) const
overridevirtual

Return coefficient of degree n in object s.

Reimplemented from GiNaC::basic.

Definition at line 426 of file mul.cpp.

References GiNaC::_ex0, c, GiNaC::ex::coeff(), n, GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), and GiNaC::expairseq::seq.

Referenced by print_overall_coeff().

◆ has()

bool GiNaC::mul::has ( const ex pattern,
unsigned  options = 0 
) const
overridevirtual

Test for occurrence of a pattern.

An object 'has' a pattern if it matches the pattern itself or one of the children 'has' it. As a consequence (according to the definition of children) given e=x+y+z, e.has(x) is true but e.has(x+y) is false.

Reimplemented from GiNaC::basic.

Definition at line 753 of file mul.cpp.

References GiNaC::has_options::algebraic, GiNaC::algebraic_match_mul_with_mul(), GiNaC::basic::has(), GiNaC::expairseq::nops(), and options.

◆ eval()

ex GiNaC::mul::eval ( ) const
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.

  • *(...,x;0) -> 0
  • *(+(x1,x2,...);c) -> *(+(*(x1,c),*(x2,c),...))
  • *(x;1) -> x
  • *(;c) -> c

Reimplemented from GiNaC::expairseq.

Definition at line 467 of file mul.cpp.

References GiNaC::_ex0, GiNaC::_ex1, GiNaC::_num1_p, GiNaC::_num_1_p, c, GiNaC::basic::clearflag(), GiNaC::ex::coeff(), GiNaC::add::combine_pair_with_coeff_to_pair(), GiNaC::numeric::div(), GiNaC::expairseq::evalchildren(), GiNaC::status_flags::evaluated, GiNaC::status_flags::expanded, GiNaC::basic::flags, GINAC_ASSERT, GiNaC::status_flags::hash_calculated, GiNaC::basic::hold(), GiNaC::numeric::integer_content(), GiNaC::ex::is_equal(), GiNaC::numeric::is_integer(), GiNaC::numeric::is_pos_integer(), GiNaC::ex::is_zero(), last, likely, GiNaC::numeric::mul(), GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), GiNaC::expairseq::seq, and unlikely.

Referenced by do_print_latex().

◆ evalf()

ex GiNaC::mul::evalf ( ) const
overridevirtual

Evaluate object numerically.

Reimplemented from GiNaC::basic.

Definition at line 576 of file mul.cpp.

References GiNaC::ex::evalf(), GiNaC::expairseq::overall_coeff, and GiNaC::expairseq::seq.

◆ real_part()

ex GiNaC::mul::real_part ( ) const
overridevirtual

Reimplemented from GiNaC::basic.

Definition at line 607 of file mul.cpp.

References find_real_imag().

◆ imag_part()

ex GiNaC::mul::imag_part ( ) const
overridevirtual

Reimplemented from GiNaC::basic.

Definition at line 614 of file mul.cpp.

References find_real_imag().

◆ evalm()

ex GiNaC::mul::evalm ( ) const
overridevirtual

Evaluate sums, products and integer powers of matrices.

Reimplemented from GiNaC::basic.

Definition at line 621 of file mul.cpp.

References GiNaC::_ex1, GiNaC::ex::end(), GiNaC::ex::evalm(), m, GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), GiNaC::expairseq::seq, and split_ex_to_pair().

◆ series()

ex GiNaC::mul::series ( const relational r,
int  order,
unsigned  options = 0 
) const
overridevirtual

◆ normal()

ex GiNaC::mul::normal ( exmap repl,
exmap rev_lookup,
lst modifier 
) const
overridevirtual

Implementation of ex::normal() for a product.

It cancels common factors from fractions.

See also
ex::normal()

Reimplemented from GiNaC::basic.

Definition at line 2401 of file normal.cpp.

References GiNaC::frac_cancel(), n, GiNaC::subs_options::no_pattern, GiNaC::container< C >::nops(), GiNaC::container< C >::op(), GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), and GiNaC::expairseq::seq.

◆ integer_content()

numeric GiNaC::mul::integer_content ( ) const
overridevirtual

◆ smod()

ex GiNaC::mul::smod ( const numeric xi) const
overridevirtual

Apply symmetric modular homomorphism to an expanded multivariate polynomial.

This function is usually used internally by heur_gcd().

Parameters
ximodulus
Returns
mapped polynomial
See also
heur_gcd

Reimplemented from GiNaC::basic.

Definition at line 1228 of file normal.cpp.

References GiNaC::basic::clearflag(), GiNaC::status_flags::evaluated, GINAC_ASSERT, GiNaC::status_flags::hash_calculated, GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), GiNaC::expairseq::seq, and GiNaC::smod().

◆ max_coefficient()

numeric GiNaC::mul::max_coefficient ( ) const
overridevirtual

Implementation ex::max_coefficient().

See also
heur_gcd

Reimplemented from GiNaC::basic.

Definition at line 1185 of file normal.cpp.

References GiNaC::abs(), GINAC_ASSERT, GiNaC::expairseq::overall_coeff, recombine_pair_to_ex(), and GiNaC::expairseq::seq.

◆ get_free_indices()

exvector GiNaC::mul::get_free_indices ( ) const
overridevirtual

Return a vector containing the free indices of an expression.

Reimplemented from GiNaC::basic.

Definition at line 480 of file indexed.cpp.

References GiNaC::find_free_and_dummy(), GiNaC::ex::get_free_indices(), GiNaC::expairseq::nops(), and GiNaC::expairseq::op().

◆ conjugate()

ex GiNaC::mul::conjugate ( ) const
overridevirtual

◆ derivative()

ex GiNaC::mul::derivative ( const symbol s) const
overrideprotectedvirtual

Implementation of ex::diff() for a product.

It applies the product rule.

See also
ex::diff

Reimplemented from GiNaC::basic.

Definition at line 862 of file mul.cpp.

References GiNaC::_ex1, GiNaC::ex::begin(), GiNaC::ex::coeff(), GiNaC::basic::diff(), GiNaC::expairseq::overall_coeff, GiNaC::pow(), GiNaC::expairseq::seq, split_ex_to_pair(), and GiNaC::expair::swap().

◆ eval_ncmul()

ex GiNaC::mul::eval_ncmul ( const exvector v) const
overrideprotectedvirtual

Reimplemented from GiNaC::basic.

Definition at line 659 of file mul.cpp.

References GiNaC::return_types::noncommutative, and GiNaC::expairseq::seq.

◆ return_type()

unsigned GiNaC::mul::return_type ( ) const
overrideprotectedvirtual

◆ return_type_tinfo()

return_type_t GiNaC::mul::return_type_tinfo ( ) const
overrideprotectedvirtual

Reimplemented from GiNaC::basic.

Definition at line 921 of file mul.cpp.

References GiNaC::return_types::noncommutative, and GiNaC::expairseq::seq.

◆ thisexpairseq() [1/2]

ex GiNaC::mul::thisexpairseq ( const epvector v,
const ex oc,
bool  do_index_renaming = false 
) const
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.

Definition at line 935 of file mul.cpp.

Referenced by conjugate().

◆ thisexpairseq() [2/2]

ex GiNaC::mul::thisexpairseq ( epvector &&  vp,
const ex oc,
bool  do_index_renaming = false 
) const
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 940 of file mul.cpp.

◆ split_ex_to_pair()

expair GiNaC::mul::split_ex_to_pair ( const ex e) const
overrideprotectedvirtual

Form an expair from an ex, using the corresponding semantics.

See also
expairseq::recombine_pair_to_ex()

Reimplemented from GiNaC::expairseq.

Definition at line 945 of file mul.cpp.

References GiNaC::_ex1, GiNaC::power::basis, and GiNaC::power::exponent.

Referenced by combine_ex_with_coeff_to_pair(), combine_pair_with_coeff_to_pair(), conjugate(), derivative(), evalm(), expair_needs_further_processing(), expand(), and expandchildren().

◆ combine_ex_with_coeff_to_pair()

expair GiNaC::mul::combine_ex_with_coeff_to_pair ( const ex e,
const ex c 
) const
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 955 of file mul.cpp.

References GiNaC::_ex1, c, GINAC_ASSERT, GiNaC::pow(), and split_ex_to_pair().

◆ combine_pair_with_coeff_to_pair()

expair GiNaC::mul::combine_pair_with_coeff_to_pair ( const expair p,
const ex c 
) const
overrideprotectedvirtual

◆ recombine_pair_to_ex()

ex GiNaC::mul::recombine_pair_to_ex ( const expair p) const
overrideprotectedvirtual

◆ expair_needs_further_processing()

bool GiNaC::mul::expair_needs_further_processing ( epp  it)
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 1006 of file mul.cpp.

References GiNaC::_ex1, GiNaC::expair::is_equal(), recombine_pair_to_ex(), and split_ex_to_pair().

◆ default_overall_coeff()

ex GiNaC::mul::default_overall_coeff ( ) const
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 1029 of file mul.cpp.

References GiNaC::_ex1.

◆ combine_overall_coeff() [1/2]

void GiNaC::mul::combine_overall_coeff ( const ex c)
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 1034 of file mul.cpp.

References c, GINAC_ASSERT, and GiNaC::expairseq::overall_coeff.

◆ combine_overall_coeff() [2/2]

void GiNaC::mul::combine_overall_coeff ( const ex c1,
const ex c2 
)
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 1041 of file mul.cpp.

References GINAC_ASSERT, GiNaC::expairseq::overall_coeff, and power.

◆ can_make_flat()

bool GiNaC::mul::can_make_flat ( const expair p) const
overrideprotectedvirtual

Reimplemented from GiNaC::expairseq.

Definition at line 1049 of file mul.cpp.

References GiNaC::expair::coeff, GINAC_ASSERT, GiNaC::ex::info(), and GiNaC::info_flags::integer.

◆ expand()

ex GiNaC::mul::expand ( unsigned  options = 0) const
overrideprotectedvirtual

◆ algebraic_subs_mul()

ex GiNaC::mul::algebraic_subs_mul ( const exmap m,
unsigned  options 
) const

◆ find_real_imag()

void GiNaC::mul::find_real_imag ( ex rp,
ex ip 
) const
protected

◆ print_overall_coeff()

void GiNaC::mul::print_overall_coeff ( const print_context c,
const char *  mul_sym 
) const
protected

◆ do_print()

void GiNaC::mul::do_print ( const print_context c,
unsigned  level 
) const
protected

◆ do_print_latex()

void GiNaC::mul::do_print_latex ( const print_latex c,
unsigned  level 
) const
protected

◆ do_print_csrc()

void GiNaC::mul::do_print_csrc ( const print_csrc c,
unsigned  level 
) const
protected

◆ do_print_python_repr()

void GiNaC::mul::do_print_python_repr ( const print_python_repr c,
unsigned  level 
) const
protected

Definition at line 260 of file mul.cpp.

References c, GiNaC::expairseq::nops(), GiNaC::expairseq::op(), and GiNaC::ex::print().

◆ can_be_further_expanded()

bool GiNaC::mul::can_be_further_expanded ( const ex e)
staticprotected

Definition at line 1057 of file mul.cpp.

References GiNaC::ex::info(), GiNaC::ex::op(), and GiNaC::info_flags::posint.

Referenced by expand().

◆ expandchildren()

epvector GiNaC::mul::expandchildren ( unsigned  options) const
protected

Member-wise expand the expairs representing this sequence.

This must be overridden from expairseq::expandchildren() and done iteratively in order to allow for early cancellations and thus safe memory.

See also
mul::expand()
Returns
epvector containing expanded pairs, empty if no members had to be changed.

Definition at line 1257 of file mul.cpp.

References GiNaC::are_ex_trivially_equal(), GiNaC::ex::begin(), GiNaC::ex::expand(), GiNaC::factor(), last, options, recombine_pair_to_ex(), GiNaC::expairseq::seq, and split_ex_to_pair().

Referenced by expand().

Friends And Related Symbol Documentation

◆ add

friend class add
friend

Definition at line 35 of file mul.h.

◆ ncmul

friend class ncmul
friend

Definition at line 36 of file mul.h.

◆ power

friend class power
friend

Definition at line 37 of file mul.h.

Referenced by combine_overall_coeff(), and do_print_csrc().


The documentation for this class was generated from the following files:

This page is part of the GiNaC developer's reference. It was generated automatically by doxygen. For an introduction, see the tutorial.