]> www.ginac.de Git - ginac.git/blobdiff - ginac/pseries.cpp
Make .eval() evaluate top-level only.
[ginac.git] / ginac / pseries.cpp
index 08809fd18c2af3e54806f1ac3febcb970fc8862e..31a92002958399818659b65e83094b498a66dbc4 100644 (file)
@@ -384,20 +384,18 @@ ex pseries::collect(const ex &s, bool distributed) const
 }
 
 /** Perform coefficient-wise automatic term rewriting rules in this class. */
-ex pseries::eval(int level) const
+ex pseries::eval() const
 {
-       if (level == 1)
-               return this->hold();
-       
-       if (level == -max_recursion_level)
-               throw (std::runtime_error("pseries::eval(): recursion limit exceeded"));
+       if (flags & status_flags::evaluated) {
+               return *this;
+       }
        
        // Construct a new series with evaluated coefficients
        epvector new_seq;
        new_seq.reserve(seq.size());
        epvector::const_iterator it = seq.begin(), itend = seq.end();
        while (it != itend) {
-               new_seq.push_back(expair(it->rest.eval(level-1), it->coeff));
+               new_seq.push_back(expair(it->rest, it->coeff));
                ++it;
        }
        return dynallocate<pseries>(relational(var,point), std::move(new_seq)).setflag(status_flags::evaluated);