]> www.ginac.de Git - ginac.git/blobdiff - ginac/expairseq.cpp
Add support for Texinfo-5.0.
[ginac.git] / ginac / expairseq.cpp
index 296575a8382f770ae26bc714ab9ebb02806bdbe6..7c6e5223653889730407aa0fd5a246417cc06f6d 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of sequences of expression pairs. */
 
 /*
- *  GiNaC Copyright (C) 1999-2010 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2011 Johannes Gutenberg University Mainz, Germany
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -371,23 +371,10 @@ ex expairseq::conjugate() const
                return *this;
        }
        ex result = thisexpairseq(newepv ? *newepv : seq, x);
-       if (newepv) {
-               delete newepv;
-       }
+       delete newepv;
        return result;
 }
 
-bool expairseq::is_polynomial(const ex & var) const
-{
-       if (!is_exactly_a<add>(*this) && !is_exactly_a<mul>(*this))
-               return basic::is_polynomial(var);
-       for (epvector::const_iterator i=seq.begin(); i!=seq.end(); ++i) {
-               if (!(i->rest).is_polynomial(var))
-                       return false;
-       }
-       return true;
-}
-
 bool expairseq::match(const ex & pattern, exmap & repl_lst) const
 {
        // This differs from basic::match() because we want "a+b+c+d" to
@@ -466,7 +453,7 @@ ex expairseq::subs(const exmap & m, unsigned options) const
 {
        std::auto_ptr<epvector> vp = subschildren(m, options);
        if (vp.get())
-               return ex_to<basic>(thisexpairseq(vp, overall_coeff, true));
+               return ex_to<basic>(thisexpairseq(vp, overall_coeff, (options & subs_options::no_index_renaming) == 0));
        else if ((options & subs_options::algebraic) && is_exactly_a<mul>(*this))
                return static_cast<const mul *>(this)->algebraic_subs_mul(m, options);
        else
@@ -886,7 +873,7 @@ void expairseq::construct_from_2_ex(const ex &lh, const ex &rh)
 }
 
 void expairseq::construct_from_2_expairseq(const expairseq &s1,
-                                                                                  const expairseq &s2)
+                                           const expairseq &s2)
 {
        combine_overall_coeff(s1.overall_coeff);
        combine_overall_coeff(s2.overall_coeff);
@@ -941,7 +928,7 @@ void expairseq::construct_from_2_expairseq(const expairseq &s1,
 }
 
 void expairseq::construct_from_expairseq_ex(const expairseq &s,
-                                                                                       const ex &e)
+                                            const ex &e)
 {
        combine_overall_coeff(s.overall_coeff);
        if (is_exactly_a<numeric>(e)) {
@@ -1006,7 +993,7 @@ void expairseq::construct_from_exvector(const exvector &v)
 {
        // simplifications: +(a,+(b,c),d) -> +(a,b,c,d) (associativity)
        //                  +(d,b,c,a) -> +(a,b,c,d) (canonicalization)
-       //                  +(...,x,*(x,c1),*(x,c2)) -> +(...,*(x,1+c1+c2)) (c1, c2 numeric())
+       //                  +(...,x,*(x,c1),*(x,c2)) -> +(...,*(x,1+c1+c2)) (c1, c2 numeric)
        //                  (same for (+,*) -> (*,^)
 
        make_flat(v);
@@ -1022,8 +1009,8 @@ void expairseq::construct_from_epvector(const epvector &v, bool do_index_renamin
 {
        // simplifications: +(a,+(b,c),d) -> +(a,b,c,d) (associativity)
        //                  +(d,b,c,a) -> +(a,b,c,d) (canonicalization)
-       //                  +(...,x,*(x,c1),*(x,c2)) -> +(...,*(x,1+c1+c2)) (c1, c2 numeric())
-       //                  (same for (+,*) -> (*,^)
+       //                  +(...,x,*(x,c1),*(x,c2)) -> +(...,*(x,1+c1+c2)) (c1, c2 numeric)
+       //                  same for (+,*) -> (*,^)
 
        make_flat(v, do_index_renaming);
 #if EXPAIRSEQ_USE_HASHTAB
@@ -1445,7 +1432,7 @@ bool expairseq::has_coeff_0() const
 }
 
 void expairseq::add_numerics_to_hashtab(epvector::iterator first_numeric,
-                                                                               epvector::const_iterator last_non_zero)
+                                        epvector::const_iterator last_non_zero)
 {
        if (first_numeric == seq.end()) return; // no numerics