From ae7c2d39ba090f4425995d0d1eb9fff1c91a9489 Mon Sep 17 00:00:00 2001 From: Chris Dams Date: Tue, 14 Mar 2006 18:54:55 +0000 Subject: [PATCH] Vlamirs patch for automatically simplifying e.g., csgn(x)^3 -> csgn(x). --- ginac/inifcns.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ginac/inifcns.cpp b/ginac/inifcns.cpp index 47252a8f..a8f82d8e 100644 --- a/ginac/inifcns.cpp +++ b/ginac/inifcns.cpp @@ -252,10 +252,23 @@ static ex csgn_conjugate(const ex& arg) return csgn(arg); } +static ex csgn_power(const ex & arg, const ex & exp) +{ + if (is_a(exp) && exp.info(info_flags::positive) && ex_to(exp).is_integer()) { + if (ex_to(exp).is_odd()) + return csgn(arg); + else + return power(csgn(arg), _ex2).hold(); + } else + return power(csgn(arg), exp).hold(); +} + + REGISTER_FUNCTION(csgn, eval_func(csgn_eval). evalf_func(csgn_evalf). series_func(csgn_series). - conjugate_func(csgn_conjugate)); + conjugate_func(csgn_conjugate). + power_func(csgn_power)); ////////// -- 2.49.0