//////////
integral::integral()
- :
- x((new symbol())->setflag(status_flags::dynallocated))
+ : x(dynallocate<symbol>())
{}
//////////
if (ea==eb)
return _ex0;
- if (are_ex_trivially_equal(eintvar,x) && are_ex_trivially_equal(ea,a)
- && are_ex_trivially_equal(eb,b) && are_ex_trivially_equal(ef,f))
+ if (are_ex_trivially_equal(eintvar,x) && are_ex_trivially_equal(ea,a) &&
+ are_ex_trivially_equal(eb,b) && are_ex_trivially_equal(ef,f))
return this->hold();
- return (new integral(eintvar, ea, eb, ef))
- ->setflag(status_flags::dynallocated | status_flags::evaluated);
+ return dynallocate<integral>(eintvar, ea, eb, ef).setflag(status_flags::evaluated);
}
ex integral::evalf(int level) const
}
// 12.34 is just an arbitrary number used to check whether a number
- // results after subsituting a number for the integration variable.
- if (is_exactly_a<numeric>(ea) && is_exactly_a<numeric>(eb)
- && is_exactly_a<numeric>(ef.subs(x==12.34).evalf())) {
+ // results after substituting a number for the integration variable.
+ if (is_exactly_a<numeric>(ea) && is_exactly_a<numeric>(eb) &&
+ is_exactly_a<numeric>(ef.subs(x==12.34).evalf())) {
return adaptivesimpson(x, ea, eb, ef);
}
- if (are_ex_trivially_equal(a, ea) && are_ex_trivially_equal(b, eb)
- && are_ex_trivially_equal(f, ef))
+ if (are_ex_trivially_equal(a, ea) && are_ex_trivially_equal(b, eb) &&
+ are_ex_trivially_equal(f, ef))
return *this;
else
- return (new integral(x, ea, eb, ef))
- ->setflag(status_flags::dynallocated);
+ return dynallocate<integral>(x, ea, eb, ef);
}
int integral::max_integration_level = 15;
return (prefactor*integral(x, newa, newb, rest)).expand(options);
}
- if (are_ex_trivially_equal(a, newa) && are_ex_trivially_equal(b, newb)
- && are_ex_trivially_equal(f, newf)) {
+ if (are_ex_trivially_equal(a, newa) && are_ex_trivially_equal(b, newb) &&
+ are_ex_trivially_equal(f, newf)) {
if (options==0)
this->setflag(status_flags::expanded);
return *this;
}
- const basic & newint = (new integral(x, newa, newb, newf))
- ->setflag(status_flags::dynallocated);
+ const integral & newint = dynallocate<integral>(x, newa, newb, newf);
if (options == 0)
newint.setflag(status_flags::expanded);
return newint;
ex conjb = b.conjugate();
ex conjf = f.conjugate().subs(x.conjugate()==x);
- if (are_ex_trivially_equal(a, conja) && are_ex_trivially_equal(b, conjb)
- && are_ex_trivially_equal(f, conjf))
+ if (are_ex_trivially_equal(a, conja) && are_ex_trivially_equal(b, conjb) &&
+ are_ex_trivially_equal(f, conjf))
return *this;
- return (new integral(x, conja, conjb, conjf))
- ->setflag(status_flags::dynallocated);
+ return dynallocate<integral>(x, conja, conjb, conjf);
}
ex integral::eval_integ() const