]> www.ginac.de Git - ginac.git/blobdiff - ginac/function.cppy
Make .eval() evaluate top-level only.
[ginac.git] / ginac / function.cppy
index 7030bca66afc6759a1264b244142132e692ec317..686a76e6386d610d4d2aa07493471b42054e2951 100644 (file)
@@ -362,11 +362,10 @@ next_context:
        }
 }
 
-ex function::eval(int level) const
+ex function::eval() const
 {
-       if (level>1) {
-               // first evaluate children, then we will end up here again
-               return function(serial,evalchildren(level));
+       if (flags & status_flags::evaluated) {
+               return *this;
        }
 
        GINAC_ASSERT(serial<registered_functions().size());
@@ -792,8 +791,7 @@ ex function::power(const ex & power_param) const // power of function
                }
        }
        // No power function defined? Fall back to returning a power object.
-       return (new GiNaC::power(*this, power_param))->setflag(status_flags::dynallocated |
-                                                              status_flags::evaluated);
+       return dynallocate<GiNaC::power>(*this, power_param).setflag(status_flags::evaluated);
 }
 
 ex function::expand(unsigned options) const