]> www.ginac.de Git - ginac.git/blobdiff - ginac/inifcns_trans.cpp
Fix evaluation of log(p^a) -> a*log(p), if p>0 and a is real.
[ginac.git] / ginac / inifcns_trans.cpp
index 6ee0a23b0c388d1146123cb2c4654536f0442b3e..56d909c6a2a40c7b48276cb98644a8da148a9b74 100644 (file)
@@ -174,7 +174,12 @@ static ex log_eval(const ex & x)
                if (t.info(info_flags::real))
                        return t;
        }
-       
+
+       // log(p^a) -> a*log(p), if p>0 and a is real
+       if (is_exactly_a<power>(x) && x.op(0).info(info_flags::positive) && x.op(1).info(info_flags::real)) {
+               return x.op(1)*log(x.op(0));
+       }
+
        return log(x).hold();
 }