]> www.ginac.de Git - ginac.git/blobdiff - ginac/power.cpp
[bugfix] ex::is_polynomial(x): fix miscomputations
[ginac.git] / ginac / power.cpp
index 87792b922099215e6b00b9744724eef7ca481ab6..1bd122b8767c6a31c1dedcdf09689425ff2b7021 100644 (file)
@@ -289,11 +289,16 @@ ex power::map(map_function & f) const
 
 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);
+       if (basis.is_polynomial(var)) {
+               if (basis.has(var))
+                       // basis is non-constant polynomial in var
+                       return exponent.info(info_flags::nonnegint);
+               else
+                       // basis is constant in var
+                       return !exponent.has(var);
+       }
+       // basis is a non-polynomial function of var
+       return false;
 }
 
 int power::degree(const ex & s) const