From da280093ff035f98551a4930d9eab20a43c5e3e2 Mon Sep 17 00:00:00 2001 From: enge Date: Mon, 26 Aug 2013 14:40:23 +0000 Subject: atan, atanh: Fix discrepancy with C standard for (+-0, +-1). atan.c: Fix special case. atan.dat: Fix tests. git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@1301 211d60ee-9f03-0410-a15a-8952a2c7a4e4 --- src/atan.c | 10 +++++----- tests/atan.dat | 12 +++++------- tests/atanh.dat | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/atan.c b/src/atan.c index 70e1726..b962955 100644 --- a/src/atan.c +++ b/src/atan.c @@ -1,6 +1,6 @@ /* mpc_atan -- arctangent of a complex number. -Copyright (C) 2009, 2010, 2011, 2012 INRIA +Copyright (C) 2009, 2010, 2011, 2012, 2013 INRIA This file is part of GNU MPC. @@ -133,10 +133,10 @@ mpc_atan (mpc_ptr rop, mpc_srcptr op, mpc_rnd_t rnd) } else if (cmp_1 == 0) { - /* atan(+/-0+i) = NaN +i*inf - atan(+/-0-i) = NaN -i*inf */ - mpfr_set_nan (mpc_realref (rop)); - mpfr_set_inf (mpc_imagref (rop), s_im ? -1 : +1); + /* atan(+/-0 +i) = +/-0 +i*inf + atan(+/-0 -i) = +/-0 -i*inf */ + mpfr_set_zero (mpc_realref (rop), s_re ? -1 : +1); + mpfr_set_inf (mpc_imagref (rop), s_im ? -1 : +1); } else { diff --git a/tests/atan.dat b/tests/atan.dat index f3ba3ec..871f706 100644 --- a/tests/atan.dat +++ b/tests/atan.dat @@ -1,6 +1,6 @@ # Data file for mpc_atan. # -# Copyright (C) 2009, 2012 INRIA +# Copyright (C) 2009, 2012, 2013 INRIA # # This file is part of GNU MPC. # @@ -113,8 +113,8 @@ - + 53 +0x1921FB54442D18p-52 53 -0x1269621134DB92p-55 53 +0 53 -7 N N + + 53 -0x1921FB54442D18p-52 53 -0x19C041F7ED8D33p-53 53 -0 53 -1.5 N N - + 53 +0x1921FB54442D18p-52 53 -0x19C041F7ED8D33p-53 53 +0 53 -1.5 N N -0 0 53 nan 53 -inf 53 -0 53 -1 N N -0 0 53 nan 53 -inf 53 +0 53 -1 N N +0 0 53 -0 53 -inf 53 -0 53 -1 N N +0 0 53 +0 53 -inf 53 +0 53 -1 N N 0 + 53 -0 53 -0x15AA16394D481Fp-52 53 -0 53 -0.875 N N 0 + 53 +0 53 -0x15AA16394D481Fp-52 53 +0 53 -0.875 N N 0 + 53 -0 53 -0x1015891C9EAEF7p-55 53 -0 53 -0.125 N N @@ -123,15 +123,13 @@ 0 - 53 -0 53 +0x1015891C9EAEF7p-55 53 -0 53 +0.125 N N 0 - 53 +0 53 +0x15AA16394D481Fp-52 53 +0 53 +0.875 N N 0 - 53 -0 53 +0x15AA16394D481Fp-52 53 -0 53 +0.875 N N -0 0 53 nan 53 +inf 53 +0 53 +1 N N -0 0 53 nan 53 +inf 53 -0 53 +1 N N +0 0 53 +0 53 +inf 53 +0 53 +1 N N +0 0 53 -0 53 +inf 53 -0 53 +1 N N - - 53 +0x1921FB54442D18p-52 53 +0x19C041F7ED8D33p-53 53 +0 53 +1.5 N N + - 53 -0x1921FB54442D18p-52 53 +0x19C041F7ED8D33p-53 53 -0 53 +1.5 N N - - 53 +0x1921FB54442D18p-52 53 +0x1269621134DB92p-55 53 +0 53 +7 N N + - 53 -0x1921FB54442D18p-52 53 +0x1269621134DB92p-55 53 -0 53 +7 N N 0 + 53 +0 53 0x1FFFFFFFFFFF82p-52 53 +0 53 0x1ED9505E1BC3C2p-53 N N -0 0 53 nan 53 -inf 53 +0 53 -1 N N -0 0 53 nan 53 +inf 53 +0 53 +1 N N + - 512 0x6487ED5110B4611A62633145C06E0E68948127044533E63A0105DF531D89CD9128A5043CC71A026EF7CA8CD9E69D218D98158536F92F8A1BA7F09AB6B6A8E123p-510 512 0x5D137113B914461DA3202D77346EE4980DA5FD0BAD68F5A7928DCA9F632750D9BFFA00654C523929F15DED554EC6BC476DB2C46FA433E569227085E0BDEA86FFp-509 512 0 512 0x1018734E311AB77B710F9212969B3C86E8F388BB7DA5BAF74ADE078F43D96456D088C8A0B2A370159DFB8D4A4BC51BCDA91F2DCD01B2EC610C62AA33FAD1688p-504 N Z + - 12 0xC91p-11 12 0x6F1p-50 12 +0 12 0x9380000000 N N diff --git a/tests/atanh.dat b/tests/atanh.dat index fa939e2..c6517a8 100644 --- a/tests/atanh.dat +++ b/tests/atanh.dat @@ -1,6 +1,6 @@ # Data file for mpc_atanh. # -# Copyright (C) 2009 INRIA +# Copyright (C) 2009, 2013 INRIA # # This file is part of GNU MPC. # -- cgit v1.2.1