#include "power.h"
#include "archive.h"
#include "inifcns.h"
-#include "tostring.h"
#include "utils.h"
#include "hash_seed.h"
#include "remember.h"
set_name("unnamed_function", "\\\\mbox{unnamed}");
nparams = 0;
eval_f = evalf_f = real_part_f = imag_part_f = conjugate_f = expand_f
- = derivative_f = expl_derivative_f = power_f = series_f = 0;
+ = derivative_f = expl_derivative_f = power_f = series_f = nullptr;
info_f = 0;
evalf_params_first = true;
use_return_type = false;
// the following lines have been generated for max. @maxargs@ parameters
+++ for N in range(1, maxargs + 1):
function::function(unsigned ser, @seq('const ex & param%(n)d', N)@)
- : exprseq(@seq('param%(n)d', N)@), serial(ser)
+ : exprseq{@seq('param%(n)d', N)@}, serial(ser)
{
}
---
clearflag(status_flags::evaluated);
}
-function::function(unsigned ser, const exvector & v, bool discardable)
- : exprseq(v,discardable), serial(ser)
+function::function(unsigned ser, const exvector & v)
+ : exprseq(v), serial(ser)
{
}
ex function::eval(int level) const
{
+ if ((level == 1) && (flags & status_flags::evaluated)) {
+ return *this;
+ }
+
if (level>1) {
// first evaluate children, then we will end up here again
return function(serial,evalchildren(level));
}
}
- if (opt.eval_f==0) {
+ if (opt.eval_f==nullptr) {
return this->hold();
}
}
}
// 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
return serial;
++serial;
}
- throw (std::runtime_error("no function '" + name + "' with " + ToString(nparams) + " parameters defined"));
+ throw (std::runtime_error("no function '" + name + "' with " + std::to_string(nparams) + " parameters defined"));
}
/** Return the print name of the function. */