From: Vladimir V. Kisil Date: Sat, 28 Dec 2013 23:58:40 +0000 (+0000) Subject: Fix evaluation of log(p^a) -> a*log(p), if p>0 and a is real. X-Git-Tag: release_1-6-3~30 X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=commitdiff_plain;h=98433210d31a34b55c8283eb7fb7767d6c830e14 Fix evaluation of log(p^a) -> a*log(p), if p>0 and a is real. This evaluation was broken with commit e5c76f659e2e882d. --- diff --git a/ginac/inifcns_trans.cpp b/ginac/inifcns_trans.cpp index 6ee0a23b..56d909c6 100644 --- a/ginac/inifcns_trans.cpp +++ b/ginac/inifcns_trans.cpp @@ -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(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(); }