From 98433210d31a34b55c8283eb7fb7767d6c830e14 Mon Sep 17 00:00:00 2001 From: "Vladimir V. Kisil" Date: Sat, 28 Dec 2013 23:58:40 +0000 Subject: [PATCH] Fix evaluation of log(p^a) -> a*log(p), if p>0 and a is real. This evaluation was broken with commit e5c76f659e2e882d. --- ginac/inifcns_trans.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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(); } -- 2.44.0