Fixed a bug in atan2. It gave a division by zero error for calls like
authorJens Vollinga <jensv@nikhef.nl>
Thu, 25 Mar 2010 09:36:41 +0000 (10:36 +0100)
committerJens Vollinga <jensv@nikhef.nl>
Thu, 25 Mar 2010 09:36:41 +0000 (10:36 +0100)
atan2(-Pi,0), because arguments like -Pi were not recognized (via
info_flags) as negative but as real nevertheless.

ginac/inifcns_trans.cpp

index 39931dc..3f161d2 100644 (file)
@@ -842,7 +842,7 @@ static ex atan2_eval(const ex & y, const ex & x)
                        return _ex1_2*Pi;
 
                // atan(y, 0), y real and negative -> -Pi/2
-               if (y.info(info_flags::negative))
+               if (y.info(info_flags::real) && !y.is_zero())
                        return _ex_1_2*Pi;
        }