X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fadd.cpp;h=ad0ac1fc7f8bc4cf3c2e710a87e92a0f2ebf4a26;hp=804f07ae8ddebc12aaf83be08a8e4c8018fd415e;hb=955cb185a85535ab328ffedbfccdc508ce80fa91;hpb=b5e7e31e6d33bbae4d635c27637c7e114b043735 diff --git a/ginac/add.cpp b/ginac/add.cpp index 804f07ae..ad0ac1fc 100644 --- a/ginac/add.cpp +++ b/ginac/add.cpp @@ -26,6 +26,7 @@ #include "add.h" #include "mul.h" #include "debugmsg.h" +#include "utils.h" #ifndef NO_GINAC_NAMESPACE namespace GiNaC { @@ -87,7 +88,7 @@ add::add(ex const & lh, ex const & rh) { debugmsg("add constructor from ex,ex",LOGLEVEL_CONSTRUCT); tinfo_key = TINFO_add; - overall_coeff=exZERO(); + overall_coeff=_ex0(); construct_from_2_ex(lh,rh); GINAC_ASSERT(is_canonical()); } @@ -96,7 +97,7 @@ add::add(exvector const & v) { debugmsg("add constructor from exvector",LOGLEVEL_CONSTRUCT); tinfo_key = TINFO_add; - overall_coeff=exZERO(); + overall_coeff=_ex0(); construct_from_exvector(v); GINAC_ASSERT(is_canonical()); } @@ -122,7 +123,7 @@ add::add(epvector const & v) { debugmsg("add constructor from epvector",LOGLEVEL_CONSTRUCT); tinfo_key = TINFO_add; - overall_coeff=exZERO(); + overall_coeff=_ex0(); construct_from_epvector(v); GINAC_ASSERT(is_canonical()); } @@ -173,10 +174,10 @@ void add::print(ostream & os, unsigned upper_precedence) const if (coeff.csgn()==-1) os << '-'; first=false; } - if (!coeff.is_equal(numONE()) && - !coeff.is_equal(numMINUSONE())) { + if (!coeff.is_equal(_num1()) && + !coeff.is_equal(_num_1())) { if (coeff.csgn()==-1) - (numMINUSONE()*coeff).print(os, precedence); + (_num_1()*coeff).print(os, precedence); else coeff.print(os, precedence); os << '*'; @@ -219,16 +220,16 @@ void add::printcsrc(ostream & os, unsigned type, unsigned upper_precedence) cons while (it != itend) { // If the coefficient is -1, it is replaced by a single minus sign - if (it->coeff.compare(numONE()) == 0) { + if (it->coeff.compare(_num1()) == 0) { it->rest.bp->printcsrc(os, type, precedence); - } else if (it->coeff.compare(numMINUSONE()) == 0) { + } else if (it->coeff.compare(_num_1()) == 0) { os << "-"; it->rest.bp->printcsrc(os, type, precedence); - } else if (ex_to_numeric(it->coeff).numer().compare(numONE()) == 0) { + } else if (ex_to_numeric(it->coeff).numer().compare(_num1()) == 0) { it->rest.bp->printcsrc(os, type, precedence); os << "/"; ex_to_numeric(it->coeff).denom().printcsrc(os, type, precedence); - } else if (ex_to_numeric(it->coeff).numer().compare(numMINUSONE()) == 0) { + } else if (ex_to_numeric(it->coeff).numer().compare(_num_1()) == 0) { os << "-"; it->rest.bp->printcsrc(os, type, precedence); os << "/"; @@ -241,11 +242,11 @@ void add::printcsrc(ostream & os, unsigned type, unsigned upper_precedence) cons // Separator is "+", except if the following expression would have a leading minus sign it++; - if (it != itend && !(it->coeff.compare(numZERO()) < 0 || (it->coeff.compare(numONE()) == 0 && is_ex_exactly_of_type(it->rest, numeric) && it->rest.compare(numZERO()) < 0))) + if (it != itend && !(it->coeff.compare(_num0()) < 0 || (it->coeff.compare(_num1()) == 0 && is_ex_exactly_of_type(it->rest, numeric) && it->rest.compare(_num0()) < 0))) os << "+"; } - if (!overall_coeff.is_equal(exZERO())) { + if (!overall_coeff.is_equal(_ex0())) { if (overall_coeff.info(info_flags::positive)) os << '+'; overall_coeff.bp->printcsrc(os,type,precedence); } @@ -276,7 +277,7 @@ bool add::info(unsigned inf) const int add::degree(symbol const & s) const { int deg=INT_MIN; - if (!overall_coeff.is_equal(exZERO())) { + if (!overall_coeff.is_equal(_ex0())) { deg=0; } int cur_deg; @@ -290,7 +291,7 @@ int add::degree(symbol const & s) const int add::ldegree(symbol const & s) const { int deg=INT_MAX; - if (!overall_coeff.is_equal(exZERO())) { + if (!overall_coeff.is_equal(_ex0())) { deg=0; } int cur_deg; @@ -344,7 +345,7 @@ ex add::eval(int level) const if (flags & status_flags::evaluated) { GINAC_ASSERT(seq.size()>0); - GINAC_ASSERT((seq.size()>1)||!overall_coeff.is_equal(exZERO())); + GINAC_ASSERT((seq.size()>1)||!overall_coeff.is_equal(_ex0())); return *this; } @@ -352,7 +353,7 @@ ex add::eval(int level) const if (seq_size==0) { // +(;c) -> c return overall_coeff; - } else if ((seq_size==1)&&overall_coeff.is_equal(exZERO())) { + } else if ((seq_size==1)&&overall_coeff.is_equal(_ex0())) { // +(x;0) -> x return recombine_pair_to_ex(*(seq.begin())); } @@ -423,12 +424,12 @@ expair add::split_ex_to_pair(ex const & e) const ex numfactor=mulref.overall_coeff; // mul * mulcopyp=static_cast(mulref.duplicate()); mul * mulcopyp=new mul(mulref); - mulcopyp->overall_coeff=exONE(); + mulcopyp->overall_coeff=_ex1(); mulcopyp->clearflag(status_flags::evaluated); mulcopyp->clearflag(status_flags::hash_calculated); return expair(mulcopyp->setflag(status_flags::dynallocated),numfactor); } - return expair(e,exONE()); + return expair(e,_ex1()); } expair add::combine_ex_with_coeff_to_pair(ex const & e, @@ -440,21 +441,21 @@ expair add::combine_ex_with_coeff_to_pair(ex const & e, ex numfactor=mulref.overall_coeff; //mul * mulcopyp=static_cast(mulref.duplicate()); mul * mulcopyp=new mul(mulref); - mulcopyp->overall_coeff=exONE(); + mulcopyp->overall_coeff=_ex1(); mulcopyp->clearflag(status_flags::evaluated); mulcopyp->clearflag(status_flags::hash_calculated); - if (are_ex_trivially_equal(c,exONE())) { + if (are_ex_trivially_equal(c,_ex1())) { return expair(mulcopyp->setflag(status_flags::dynallocated),numfactor); - } else if (are_ex_trivially_equal(numfactor,exONE())) { + } else if (are_ex_trivially_equal(numfactor,_ex1())) { return expair(mulcopyp->setflag(status_flags::dynallocated),c); } return expair(mulcopyp->setflag(status_flags::dynallocated), ex_to_numeric(numfactor).mul_dyn(ex_to_numeric(c))); } else if (is_ex_exactly_of_type(e,numeric)) { - if (are_ex_trivially_equal(c,exONE())) { - return expair(e,exONE()); + if (are_ex_trivially_equal(c,_ex1())) { + return expair(e,_ex1()); } - return expair(ex_to_numeric(e).mul_dyn(ex_to_numeric(c)),exONE()); + return expair(ex_to_numeric(e).mul_dyn(ex_to_numeric(c)),_ex1()); } return expair(e,c); } @@ -466,8 +467,8 @@ expair add::combine_pair_with_coeff_to_pair(expair const & p, GINAC_ASSERT(is_ex_exactly_of_type(c,numeric)); if (is_ex_exactly_of_type(p.rest,numeric)) { - GINAC_ASSERT(ex_to_numeric(p.coeff).is_equal(numONE())); // should be normalized - return expair(ex_to_numeric(p.rest).mul_dyn(ex_to_numeric(c)),exONE()); + GINAC_ASSERT(ex_to_numeric(p.coeff).is_equal(_num1())); // should be normalized + return expair(ex_to_numeric(p.rest).mul_dyn(ex_to_numeric(c)),_ex1()); } return expair(p.rest,ex_to_numeric(p.coeff).mul_dyn(ex_to_numeric(c))); @@ -475,9 +476,9 @@ expair add::combine_pair_with_coeff_to_pair(expair const & p, ex add::recombine_pair_to_ex(expair const & p) const { - //if (p.coeff.compare(exONE())==0) { - //if (are_ex_trivially_equal(p.coeff,exONE())) { - if (ex_to_numeric(p.coeff).is_equal(numONE())) { + //if (p.coeff.compare(_ex1())==0) { + //if (are_ex_trivially_equal(p.coeff,_ex1())) { + if (ex_to_numeric(p.coeff).is_equal(_num1())) { return p.rest; } else { return p.rest*p.coeff;