return *this;
}
+bool power::is_polynomial(const ex & var) const
+{
+ if (exponent.has(var))
+ return false;
+ if (!exponent.info(info_flags::nonnegint))
+ return false;
+ return basis.is_polynomial(var);
+}
+
int power::degree(const ex & s) const
{
if (is_equal(ex_to<basic>(s)))
* @see ex::diff */
ex power::derivative(const symbol & s) const
{
- if (exponent.info(info_flags::real)) {
+ if (is_a<numeric>(exponent)) {
// D(b^r) = r * b^(r-1) * D(b) (faster than the formula below)
epvector newseq;
newseq.reserve(2);
return basis.return_type();
}
-const basic* power::return_type_tinfo() const
+tinfo_t power::return_type_tinfo() const
{
return basis.return_type_tinfo();
}