This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Many new math failures


Andreas Jaeger <aj@suse.de> writes:

> Ulrich Drepper <drepper@redhat.com> writes:
>
>> On Fri, 2002-06-21 at 09:12, Andreas Jaeger wrote:
>>
>>> I used GCC 3.1 for this.  I don't have a problem adding compiler
>>> dependent ULPs, just send me the ULPs file and I'll integrate it.
>>
>> Don't just blindly incorporate them.  They have to be complared with the
>> old file.  I hope you did this already for the files you checked in.
>
> The new file uses different values, it's not easy to compare them.
>
>> gcc 3 had build (actually test) failures forever due to larger errors. 
>> Instead of adjusting the accepted errors we have to see whether we can
>> make the code more stable to reduce the variations in gcc's output.
>
>
> The old version needed the appended patch to pass the testsuite with
> GCC 3.1.  I think that should indicate the functions we should look
> at.
>
> But I'll do a build with GCC 2.95 now and compare the files,
> Andreas

Here's a diff between the GCC 2.95 results (run on Pentium3) and GCC
3.1 results (on Athlon + P3),

So, in some ways we get worse, in others better numbers between these
two compilers.

Andreas

--- gcc-2.95.ulps	Sun Jun 23 08:11:16 2002
+++ /cvs/libc/sysdeps/i386/fpu/libm-test-ulps	Fri Jun 21 12:02:13 2002
@@ -35,16 +35,14 @@
 # cacosh
 Test "Real part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
 double: 1
-float: 4
+float: 9
 idouble: 1
-ifloat: 4
+ifloat: 9
 ildouble: 6
 ldouble: 6
 Test "Imaginary part of: cacosh (-2 - 3 i) == -1.9833870299165354323470769028940395 + 2.1414491111159960199416055713254211 i":
 double: 1
-float: 4
 idouble: 1
-ifloat: 4
 ildouble: 1
 ldouble: 1
 Test "Real part of: cacosh (0.75 + 1.25 i) == 1.13239363160530819522266333696834467 + 1.11752014915610270578240049553777969 i":
@@ -310,8 +308,8 @@
 float: 3
 idouble: 1
 ifloat: 3
-ildouble: 37
-ldouble: 37
+ildouble: 370
+ldouble: 370
 Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
 double: 1
 float: 4
@@ -356,6 +354,9 @@
 ifloat: 1
 ildouble: 1
 ldouble: 1
+Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+float: 1
+ifloat: 1
 
 # ctan
 Test "Real part of: ctan (-2 - 3 i) == 0.0037640256415042482 - 1.0032386273536098014 i":
@@ -380,11 +381,16 @@
 ildouble: 5
 ldouble: 5
 Test "Imaginary part of: ctanh (-2 - 3 i) == -0.9653858790221331242 + 0.0098843750383224937 i":
+float: 1
+ifloat: 1
 ildouble: 25
 ldouble: 25
 Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
-double: 1
-idouble: 1
+float: 1
+ifloat: 1
+Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+float: 1
+ifloat: 1
 Test "Imaginary part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
 double: 1
 float: 1
@@ -432,6 +438,8 @@
 
 # gamma
 Test "gamma (-0.5) == log(2*sqrt(pi))":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
@@ -462,9 +470,9 @@
 ildouble: 1
 ldouble: 1
 Test "j0 (10.0) == -0.245935764451348335197760862485328754":
-double: 2
+double: 1
 float: 1
-idouble: 2
+idouble: 1
 ifloat: 1
 Test "j0 (2.0) == 0.223890779141235668051827454649948626":
 float: 1
@@ -504,9 +512,9 @@
 ildouble: 1
 ldouble: 1
 Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
-double: 2
+double: 1
 float: 1
-idouble: 2
+idouble: 1
 ifloat: 1
 Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
 float: 1
@@ -535,19 +543,28 @@
 ildouble: 1
 ldouble: 1
 Test "jn (10, -1.0) == 0.263061512368745320699785368779050294e-9":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
+Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
+float: 1
+ifloat: 1
 Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
+float: 1
+ifloat: 1
 ildouble: 2
 ldouble: 2
 Test "jn (10, 1.0) == 0.263061512368745320699785368779050294e-9":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
 ildouble: 2
 ldouble: 2
 Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
@@ -556,13 +573,16 @@
 Test "jn (3, -1.0) == -0.0195633539826684059189053216217515083":
 ildouble: 1
 ldouble: 1
+Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
+float: 1
+ifloat: 1
 Test "jn (3, 1.0) == 0.0195633539826684059189053216217515083":
 ildouble: 1
 ldouble: 1
 Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
-double: 2
+double: 1
 float: 1
-idouble: 2
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
@@ -572,12 +592,12 @@
 
 # lgamma
 Test "lgamma (-0.5) == log(2*sqrt(pi))":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 Test "lgamma (0.7) == 0.26086724653166651439":
-double: 1
 float: 1
-idouble: 1
 ifloat: 1
 Test "lgamma (1.2) == -0.853740900033158497197e-1":
 double: 1
@@ -634,9 +654,9 @@
 
 # tgamma
 Test "tgamma (-0.5) == -2 sqrt (pi)":
-double: 1
+double: 2
 float: 1
-idouble: 1
+idouble: 2
 ifloat: 1
 ildouble: 1
 ldouble: 1
@@ -648,11 +668,12 @@
 float: 1
 idouble: 1
 ifloat: 1
+Test "tgamma (4) == 6":
+ildouble: 1
+ldouble: 1
 
 # y0
 Test "y0 (0.125) == -1.38968062514384052915582277745018693":
-double: 1
-idouble: 1
 ildouble: 1
 ldouble: 1
 Test "y0 (0.75) == -0.137172769385772397522814379396581855":
@@ -661,13 +682,8 @@
 idouble: 1
 ifloat: 1
 Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
-float: 1
-ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "y0 (1.5) == 0.382448923797758843955068554978089862":
-float: 1
-ifloat: 1
 Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
 float: 1
 ifloat: 1
@@ -683,12 +699,6 @@
 Test "y1 (0.125) == -5.19993611253477499595928744876579921":
 ildouble: 1
 ldouble: 1
-Test "y1 (1.0) == -0.781212821300288716547150000047964821":
-double: 1
-idouble: 1
-Test "y1 (1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
 Test "y1 (10.0) == 0.249015424206953883923283474663222803":
 double: 2
 float: 2
@@ -709,8 +719,6 @@
 
 # yn
 Test "yn (0, 0.125) == -1.38968062514384052915582277745018693":
-double: 1
-idouble: 1
 ildouble: 1
 ldouble: 1
 Test "yn (0, 0.75) == -0.137172769385772397522814379396581855":
@@ -719,13 +727,8 @@
 idouble: 1
 ifloat: 1
 Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
-float: 1
-ifloat: 1
 ildouble: 1
 ldouble: 1
-Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
-float: 1
-ifloat: 1
 Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
 float: 1
 ifloat: 1
@@ -739,12 +742,6 @@
 Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
 ildouble: 1
 ldouble: 1
-Test "yn (1, 1.0) == -0.781212821300288716547150000047964821":
-double: 1
-idouble: 1
-Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
-float: 1
-ifloat: 1
 Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
 double: 2
 float: 2
@@ -779,20 +776,18 @@
 ifloat: 1
 Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
 double: 1
+float: 1
 idouble: 1
+ifloat: 1
 Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
-double: 1
 float: 1
-idouble: 1
 ifloat: 1
 Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
 ildouble: 1
 ldouble: 1
 Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
 double: 1
-float: 1
 idouble: 1
-ifloat: 1
 ildouble: 2
 ldouble: 2
 Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
@@ -821,17 +816,15 @@
 
 Function: Real part of "cacosh":
 double: 1
-float: 4
+float: 9
 idouble: 1
-ifloat: 4
+ifloat: 9
 ildouble: 6
 ldouble: 6
 
 Function: Imaginary part of "cacosh":
 double: 1
-float: 4
 idouble: 1
-ifloat: 4
 ildouble: 1
 ldouble: 1
 
@@ -1003,6 +996,8 @@
 ldouble: 3
 
 Function: Real part of "ctanh":
+float: 1
+ifloat: 1
 ildouble: 5
 ldouble: 5
 
@@ -1032,6 +1027,8 @@
 ldouble: 8
 
 Function: "gamma":
+double: 1
+idouble: 1
 ildouble: 1
 ldouble: 1
 
@@ -1039,9 +1036,9 @@
 float: 1
 
 Function: "j0":
-double: 2
+double: 1
 float: 1
-idouble: 2
+idouble: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
@@ -1055,10 +1052,10 @@
 ldouble: 1
 
 Function: "jn":
-double: 2
-float: 1
-idouble: 2
-ifloat: 1
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
 ildouble: 2
 ldouble: 2
 
@@ -1096,9 +1093,9 @@
 idouble: 1
 
 Function: "tgamma":
-double: 1
+double: 2
 float: 1
-idouble: 1
+idouble: 2
 ifloat: 1
 ildouble: 1
 ldouble: 1

-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]