}
}
-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());
}
}
// 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