From 43e31c593da10e6bf3c726236d3d794bc428bd3c Mon Sep 17 00:00:00 2001 From: Vladimir Kisil Date: Wed, 22 Apr 2015 23:21:53 +0200 Subject: [PATCH] Improve abs(arg). Make abs(arg) return -arg if arg is negative or if -arg is known to be nonnegative. --- ginac/inifcns.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ginac/inifcns.cpp b/ginac/inifcns.cpp index 28d54fed..ecb6e007 100644 --- a/ginac/inifcns.cpp +++ b/ginac/inifcns.cpp @@ -273,6 +273,9 @@ static ex abs_eval(const ex & arg) if (arg.info(info_flags::nonnegative)) return arg; + if (arg.info(info_flags::negative) || (-arg).info(info_flags::nonnegative)) + return -arg; + if (is_ex_the_function(arg, abs)) return arg; -- 2.44.0