From: Andreas Jaeger <aj@suse.de>
To: Glibc hackers <libc-hacker@sources.redhat.com>
Subject: BZ#2153: cacosh bug
Date: Sun, 15 Jan 2006 15:44:00 -0000 [thread overview]
Message-ID: <m3bqydpkco.fsf@gromit.moeb> (raw)
[-- Attachment #1: Type: text/plain, Size: 12448 bytes --]
The appended patch fixes BZ#2153. Ok to commit?
I only updated the ulps file for x86-64, other archs might need a
similar change.
Andreas
2006-01-15 Andreas Jaeger <aj@suse.de>
* sysdeps/x86_64/fpu/libm-test-ulps: Updated.
BZ #2153
* math/s_cacosh.c (__cacosh): Do not return a negative
value. Patch by Wes Loewer <wjltemp-temp01@yahoo.com>.
* math/s_cacoshl.c (__cacoshl): Likewise.
* math/s_cacoshf.c (__cacoshf): Likewise.
* math/libm-test.inc (cacosh_test): Add new testcases and fix
existing ones.
============================================================
Index: math/s_cacosh.c
--- math/s_cacosh.c 14 Dec 2005 10:12:27 -0000 1.1
+++ math/s_cacosh.c 15 Jan 2006 15:43:35 -0000
@@ -1,5 +1,5 @@
/* Return arc hyperbole cosine for double value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -73,6 +73,9 @@ __cacosh (__complex__ double x)
y = __csqrt (y);
+ if (__real__ x < 0.0)
+ y = -y;
+
__real__ y += __real__ x;
__imag__ y += __imag__ x;
============================================================
Index: math/s_cacoshf.c
--- math/s_cacoshf.c 14 Dec 2005 10:12:45 -0000 1.1
+++ math/s_cacoshf.c 15 Jan 2006 15:43:35 -0000
@@ -1,5 +1,5 @@
/* Return arc hyperbole cosine for float value.
- Copyright (C) 1997 Free Software Foundation, Inc.
+ Copyright (C) 1997, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -75,6 +75,9 @@ __cacoshf (__complex__ float x)
y = __csqrtf (y);
+ if (__real__ x < 0.0)
+ y = -y;
+
__real__ y += __real__ x;
__imag__ y += __imag__ x;
============================================================
Index: math/s_cacoshl.c
--- math/s_cacoshl.c 14 Dec 2005 10:13:05 -0000 1.1
+++ math/s_cacoshl.c 15 Jan 2006 15:43:35 -0000
@@ -1,5 +1,5 @@
/* Return arc hyperbole cosine for long double value.
- Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+ Copyright (C) 1997, 1998, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
@@ -73,6 +73,9 @@ __cacoshl (__complex__ long double x)
y = __csqrtl (y);
+ if (__real__ x < 0.0)
+ y = -y;
+
__real__ y += __real__ x;
__imag__ y += __imag__ x;
============================================================
Index: math/libm-test.inc
--- math/libm-test.inc 13 Oct 2005 19:07:12 -0000 1.66
+++ math/libm-test.inc 15 Jan 2006 15:43:36 -0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
@@ -1116,7 +1116,11 @@ cacosh_test (void)
TEST_c_c (cacosh, nan_value, nan_value, nan_value, nan_value);
TEST_c_c (cacosh, 0.75L, 1.25L, 1.13239363160530819522266333696834467L, 1.11752014915610270578240049553777969L);
- TEST_c_c (cacosh, -2, -3, -1.9833870299165354323470769028940395L, 2.1414491111159960199416055713254211L);
+ TEST_c_c (cacosh, -2, -3, 1.9833870299165354323470769028940395L, -2.1414491111159960199416055713254211L);
+ TEST_c_c (cacosh, 0.3, 0.4, 0.405112337178030872507338405200229579L, 1.29016676450309079292712537938218583L);
+ TEST_c_c (cacosh, -0.3, 0.4, 0.405112337178030872507338405200229579L, 1.85142588908670244553551800389731705L);
+ TEST_c_c (cacosh, 0.3, -0.4, 0.405112337178030872507338405200229579L, -1.29016676450309079292712537938218583L);
+ TEST_c_c (cacosh, -0.3, -0.4, 0.405112337178030872507338405200229579L, -1.85142588908670244553551800389731705L);
END (cacosh, complex);
}
============================================================
Index: sysdeps/x86_64/fpu/libm-test-ulps
--- sysdeps/x86_64/fpu/libm-test-ulps 20 Jul 2005 18:15:21 -0000 1.10
+++ sysdeps/x86_64/fpu/libm-test-ulps 15 Jan 2006 15:43:36 -0000
@@ -48,20 +48,54 @@ ildouble: 2
ldouble: 2
# cacosh
-Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
+Test "Real part of: cacosh (-0.3 + 0.4 i) == 0.405112337178030872507338405200229579 + 1.85142588908670244553551800389731705 i":
+float: 1
+ifloat: 1
+ildouble: 735
+ldouble: 735
+Test "Imaginary part of: cacosh (-0.3 + 0.4 i) == 0.405112337178030872507338405200229579 + 1.85142588908670244553551800389731705 i":
+ildouble: 119
+ldouble: 119
+Test "Real part of: cacosh (-0.3 - 0.4 i) == 0.405112337178030872507338405200229579 - 1.85142588908670244553551800389731705 i":
+float: 1
+ifloat: 1
+ildouble: 735
+ldouble: 735
+Test "Imaginary part of: cacosh (-0.3 - 0.4 i) == 0.405112337178030872507338405200229579 - 1.85142588908670244553551800389731705 i":
+ldouble: 119
+Test "Real part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
double: 1
float: 7
idouble: 1
ifloat: 7
ildouble: 6
ldouble: 6
-Test "Imaginary part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
+Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
double: 1
float: 3
idouble: 1
ifloat: 3
ildouble: 1
ldouble: 1
+Test "Real part of: cacosh (0.3 + 0.4 i) == 0.405112337178030872507338405200229579 + 1.29016676450309079292712537938218583 i":
+float: 1
+ifloat: 1
+ildouble: 735
+ldouble: 735
+Test "Imaginary part of: cacosh (0.3 + 0.4 i) == 0.405112337178030872507338405200229579 + 1.29016676450309079292712537938218583 i":
+ildouble: 118
+ldouble: 118
+Test "Real part of: cacosh (0.3 - 0.4 i) == 0.405112337178030872507338405200229579 - 1.29016676450309079292712537938218583 i":
+float: 1
+ifloat: 1
+ildouble: 735
+ldouble: 735
+Test "Imaginary part of: cacosh (0.3 - 0.4 i) == 0.405112337178030872507338405200229579 - 1.29016676450309079292712537938218583 i":
+ildouble: 118
+ldouble: 118
+Test "Imaginary part of: cacosh (-0.3 - 0.4 i) == 0.405112337178030872507338405200229579 - 1.85142588908670244553551800389731705 i":
+ildouble: 119
+ldouble: 119
Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i":
ildouble: 1
ldouble: 1
@@ -103,8 +137,8 @@ double: 1
float: 1
idouble: 1
ifloat: 1
-ldouble: 1
ildouble: 1
+ldouble: 1
# catan
Test "Real part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
@@ -168,10 +202,10 @@ ifloat: 1
ildouble: 1
ldouble: 1
Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
-ildouble: 1
-ldouble: 1
float: 1
ifloat: 1
+ildouble: 1
+ldouble: 1
# ccosh
Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
@@ -304,6 +338,9 @@ idouble: 1
ifloat: 1
# cos
+Test "cos (0.80190127184058835) == 0.69534156199418473":
+double: 1
+idouble: 1
Test "cos (M_PI_6l * 2.0) == 0.5":
double: 1
float: 1
@@ -323,16 +360,13 @@ idouble: 1
ifloat: 1
ildouble: 1
ldouble: 1
-Test "cos (0.80190127184058835) == 0.69534156199418473":
-double: 1
-idouble: 1
# cpow
Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
float: 1
ifloat: 1
-ldouble: 1
ildouble: 1
+ldouble: 1
Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
float: 1
ifloat: 1
@@ -380,15 +414,15 @@ ildouble: 1
ldouble: 1
# csin
+Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
+double: 1
+idouble: 1
Test "Real part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
ildouble: 1
ldouble: 1
Test "Imaginary part of: csin (0.75 + 1.25 i) == 1.28722291002649188575873510790565441 + 1.17210635989270256101081285116138863 i":
float: 1
ifloat: 1
-Test "Imaginary part of: csin (-2 - 3 i) == -9.15449914691142957346729954460983256 + 4.16890695996656435075481305885375484 i":
-double: 1
-idouble: 1
# csinh
Test "Real part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
@@ -440,12 +474,12 @@ ldouble: 3
# ctanh
Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+double: 1
float: 2
+idouble: 1
ifloat: 2
ildouble: 5
ldouble: 5
-double: 1
-idouble: 1
Test "Imaginary part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
ildouble: 25
ldouble: 25
@@ -456,10 +490,10 @@ Test "Real part of: ctanh (0.75 + 1.25 i
double: 1
idouble: 1
Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
-ildouble: 1
-ldouble: 1
double: 1
idouble: 1
+ildouble: 1
+ldouble: 1
# erf
Test "erf (1.25) == 0.922900128256458230136523481197281140":
@@ -481,26 +515,26 @@ ldouble: 1
# exp10
Test "exp10 (-1) == 0.1":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
ildouble: 1
ldouble: 1
+Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
+double: 1
float: 1
+idouble: 1
ifloat: 1
-double: 2
-idouble: 2
-Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
ildouble: 2
ldouble: 2
-float: 1
-ifloat: 1
-double: 1
-idouble: 1
Test "exp10 (3) == 1000":
-ildouble: 8
-ldouble: 8
-float: 2
-ifloat: 2
double: 6
+float: 2
idouble: 6
+ifloat: 2
+ildouble: 8
+ldouble: 8
# expm1
Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
@@ -714,12 +748,12 @@ ldouble: 1
# log10
Test "log10 (0.75) == -0.124938736608299953132449886193870744":
-ildouble: 1
-ldouble: 1
-float: 2
-ifloat: 2
double: 1
+float: 2
idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
Test "log10 (e) == log10(e)":
float: 1
ifloat: 1
@@ -732,6 +766,9 @@ float: 1
ifloat: 1
# sincos
+Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
+double: 1
+idouble: 1
Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
double: 1
float: 1
@@ -754,9 +791,6 @@ ldouble: 1
Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
float: 1
ifloat: 1
-Test "sincos (0.80190127184058835, &sin_res, &cos_res) puts 0.69534156199418473 in cos_res":
-double: 1
-idouble: 1
# tan
Test "tan (pi/4) == 1":
@@ -970,16 +1004,16 @@ double: 1
float: 7
idouble: 1
ifloat: 7
-ildouble: 6
-ldouble: 6
+ildouble: 735
+ldouble: 735
Function: Imaginary part of "cacosh":
double: 1
float: 3
idouble: 1
ifloat: 3
-ildouble: 1
-ldouble: 1
+ildouble: 119
+ldouble: 119
Function: Real part of "casin":
double: 1
@@ -1178,12 +1212,12 @@ ildouble: 5
ldouble: 5
Function: Imaginary part of "ctanh":
+double: 1
float: 1
+idouble: 1
ifloat: 1
ildouble: 25
ldouble: 25
-double: 1
-idouble: 1
Function: "erf":
double: 1
@@ -1196,12 +1230,12 @@ ildouble: 1
ldouble: 1
Function: "exp10":
-ildouble: 8
-ldouble: 8
-float: 2
-ifloat: 2
double: 6
+float: 2
idouble: 6
+ifloat: 2
+ildouble: 8
+ldouble: 8
Function: "expm1":
double: 1
@@ -1250,12 +1284,12 @@ ildouble: 1
ldouble: 1
Function: "log10":
+double: 1
float: 2
+idouble: 1
ifloat: 2
ildouble: 1
ldouble: 1
-double: 1
-idouble: 1
Function: "log1p":
float: 1
--
Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
SUSE Linux Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GPG fingerprint = 93A3 365E CE47 B889 DF7F FED1 389A 563C C272 A126
[-- Attachment #2: Type: application/pgp-signature, Size: 188 bytes --]
next reply other threads:[~2006-01-15 15:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-01-15 15:44 Andreas Jaeger [this message]
2006-01-15 17:25 ` Ulrich Drepper
2006-01-15 17:40 ` Andreas Jaeger
2006-01-15 17:47 ` Ulrich Drepper
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3bqydpkco.fsf@gromit.moeb \
--to=aj@suse.de \
--cc=libc-hacker@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).