From 23245cfd36090c62026a4093e9523c321fcf53f2 Mon Sep 17 00:00:00 2001
From: "Vladimir V. Kisil" <kisilv@maths.leeds.ac.uk>
Date: Mon, 4 Nov 2013 12:47:25 +0000
Subject: [PATCH 2/2] Fixing log evaluation of a power.

Adding the rule
log(p^a) -> a*log(p), if p>0 and a is real
to log_eval()

Signed-off-by: Vladimir V. Kisil <kisilv@maths.leeds.ac.uk>
---
 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 6ee0a23..56d909c 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<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();
 }
 
-- 
1.8.4.rc3

