* math: Add inputs that yield larger errors for float type @ 2020-03-30 14:10 paul zimmermann 2020-03-31 19:30 ` Carlos O'Donell 0 siblings, 1 reply; 6+ messages in thread From: paul zimmermann @ 2020-03-30 14:10 UTC (permalink / raw) To: libc-alpha Dear all, now that my copyright assignment is ok, you'll find on [1] a first contribution that adds some inputs that yield larger errors for the float (binary32) type on x86_64. These cases were generated by exhaustive search using MPFR, thus the corresponding bounds are now definitive (on x86_64 only of course). For those functions where no case was added, this means the previous bounds were the largest ones. This exhaustive search only concerns functions with one argument. It does not cover functions like pow(x,y) or hypot(x,y) where exhaustive search would be too expensive. I would be grateful if someone could review that contribution. Paul Zimmermann [1] https://homepages.loria.fr/PZimmermann/glibc-contrib/0001-math-Add-inputs-that-yield-larger-errors-for-float-t.patch (md5sum bacf7746dd7b9cf8f8d3db12d45b932e) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: math: Add inputs that yield larger errors for float type 2020-03-30 14:10 math: Add inputs that yield larger errors for float type paul zimmermann @ 2020-03-31 19:30 ` Carlos O'Donell 2020-03-31 20:37 ` Joseph Myers 0 siblings, 1 reply; 6+ messages in thread From: Carlos O'Donell @ 2020-03-31 19:30 UTC (permalink / raw) To: paul zimmermann, libc-alpha, Joseph Myers On 3/30/20 10:10 AM, paul zimmermann wrote: > Dear all, > > now that my copyright assignment is ok, you'll find on [1] a first contribution > that adds some inputs that yield larger errors for the float (binary32) type on > x86_64. These cases were generated by exhaustive search using MPFR, thus the > corresponding bounds are now definitive (on x86_64 only of course). > > For those functions where no case was added, this means the previous bounds > were the largest ones. > > This exhaustive search only concerns functions with one argument. It does not > cover functions like pow(x,y) or hypot(x,y) where exhaustive search would be > too expensive. > > I would be grateful if someone could review that contribution. > > Paul Zimmermann > > [1] https://homepages.loria.fr/PZimmermann/glibc-contrib/0001-math-Add-inputs-that-yield-larger-errors-for-float-t.patch (md5sum bacf7746dd7b9cf8f8d3db12d45b932e) > Verified 13 new additions. Verified 13 output files updated. Verified ULPs seem reasonable. Verified libm-test-ulps seems reasonable. Looks good to me. I'd like to see Joseph give this quick review also before committing. You don't say why you limit j*/y* functions to ULP <=9, but I expect the implied intent is to avoid using such a high ULP value that it hides other genuine bugs. Reviewed-by: Carlos O'Donell <carlos@redhat.com> > From 323c6fa4915a04c4d5626a4d46c9248050489b2b Mon Sep 17 00:00:00 2001 > From: Paul Zimmermann <Paul.Zimmermann@inria.fr> > Date: Mon, 30 Mar 2020 15:55:55 +0200 > Subject: [PATCH] math: Add inputs that yield larger errors for float type > (x86_64) > > The corner cases included were generated using exhaustive search > for all float/binary32 values on x86_64 (comparing to MPFR for > correct rounding to nearest). > > For the j0/j1/y0/y1 functions, only cases with ulp error <= 9 were > included. > --- > math/auto-libm-test-in | 26 +++++++++ > math/auto-libm-test-out-asinh | 25 +++++++++ > math/auto-libm-test-out-cos | 25 +++++++++ > math/auto-libm-test-out-cosh | 25 +++++++++ > math/auto-libm-test-out-erfc | 25 +++++++++ > math/auto-libm-test-out-exp | 25 +++++++++ > math/auto-libm-test-out-exp10 | 25 +++++++++ > math/auto-libm-test-out-j0 | 25 +++++++++ > math/auto-libm-test-out-j1 | 25 +++++++++ > math/auto-libm-test-out-lgamma | 25 +++++++++ > math/auto-libm-test-out-sin | 25 +++++++++ > math/auto-libm-test-out-tgamma | 25 +++++++++ > math/auto-libm-test-out-y0 | 25 +++++++++ > math/auto-libm-test-out-y1 | 25 +++++++++ > sysdeps/x86_64/fpu/libm-test-ulps | 88 ++++++++++++++++--------------- > 15 files changed, 397 insertions(+), 42 deletions(-) > > diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in > index f36fea0ea8..708296cf80 100644 > --- a/math/auto-libm-test-in > +++ b/math/auto-libm-test-in > @@ -371,6 +371,8 @@ asinh -0x6.e26358p-4 > asinh 0x6.c92c08p-4 > asinh 0x1p-500 > asinh 0x1p-5000 > +# the next value generates larger error bounds on x86_64 (binary32) > +asinh 0xf.96c69p-8 > asinh min > asinh -min > asinh min_subnorm > @@ -4421,6 +4423,8 @@ cos 0x3.042d88p+0 > cos 0x1.8475e5afd4481p+0 > cos 1.57079697 > cos -1.57079697 > +# the next value generates larger error bounds on x86_64 (binary32) > +cos 0x2.3c6ef4p-12 > > cosh 0 > cosh -0 > @@ -4482,6 +4486,8 @@ cosh 0x2.c5d37700c6bb03a6c24b6c9b494cp+12 > cosh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12 > cosh -0x2.c5d37700c6bb03a6c24b6c9b494cp+12 > cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 > +# the next value generates larger error bounds on x86_64 (binary32) > +cosh 0x5.8bfe6p+4 > > cpow 1 0 0 0 ignore-zero-inf-sign > cpow 2 0 10 0 ignore-zero-inf-sign > @@ -4982,6 +4988,8 @@ erfc 0x6.a8a0561d8bbe942p+4 > erfc 0x6.a8a0561d8bbe9428p+4 > erfc 0x6.a893032db905274042fb05c665dcp+4 > erfc 0x6.a893032db905274042fb05c665ep+4 > +# the next value generates larger error bounds on x86_64 (binary32) > +erfc 0xd.03d06p-4 > erfc min > erfc -min > erfc min_subnorm > @@ -5096,6 +5104,8 @@ exp 0x3.248524p+0 > exp 0x1.f0b362p+0 > exp 0xd.89746a799ac4eedp+0 > exp -0x6.58b64p-4 > +# the next value generates larger error bounds on x86_64 (binary32) > +exp 0x1.fefe02p-16 > > exp10 0 > exp10 -0 > @@ -5159,6 +5169,8 @@ exp10 0x1.34413509f79fef311f12b35816f9p+12 > exp10 0x1.34413509f79fef311f12b35816fap+12 > exp10 -0x1.343793004f503231a589bac27c39p+12 > exp10 -0x1.343793004f503231a589bac27c38p+12 > +# the next value generates larger error bounds on x86_64 (binary32) > +exp10 -0xa.6f431p+0 > exp10 min > exp10 -min > exp10 min_subnorm > @@ -5734,6 +5746,8 @@ j0 -0x1.001000001p+593 > j0 0x1p1023 > j0 0x1p16382 > j0 0x1p16383 > +# the next value generates larger error bounds on x86_64 (binary32) > +j0 0x2.602774p+0 > > j1 -1.0 > j1 0.0 > @@ -5765,6 +5779,8 @@ j1 0x1p-60 > j1 0x1p-100 > j1 0x1p-600 > j1 0x1p-10000 > +# the next value generates larger error bounds on x86_64 (binary32) > +j1 0x3.ae4b2p+0 > j1 min > j1 -min > j1 min_subnorm > @@ -5903,6 +5919,8 @@ lgamma 0x1p-16445 > lgamma -0x1p-16445 > lgamma 0x1p-16494 > lgamma -0x1p-16494 > +# the next value generates larger error bounds on x86_64 (binary32) > +lgamma -0x3.ec4298p+0 > > # Values +/- 10ulp from overflow threshold. (Values very close to > # overflow threshold produce results very close of that threshold, > @@ -7205,6 +7223,8 @@ sin 0x6.287cc8749212e72p+0 > sin -0x1.02e34cp+0 > sin 0xf.f0274p+4 > sin 0x3.042d88p+0 > +# the next value generates larger error bounds on x86_64 (binary32) > +sin 0x1.d12ed2p-12 > sin max > sin -max > sin min > @@ -8159,6 +8179,8 @@ tgamma -0xa.ccfcep+0 > tgamma -0x9.418c8p+0 > tgamma -0x6.ce9158p+0 > tgamma -0xd.cbf53d0e7d06p+0 > +# the next value generates larger error bounds on x86_64 (binary32) > +tgamma -0x3.0aa534p+0 > > y0 0.125 > y0 0.75 > @@ -8185,6 +8207,8 @@ y0 0x1p-100 > y0 0x1p-110 > y0 0x1p-600 > y0 0x1p-10000 > +# the next value generates larger error bounds on x86_64 (binary32) > +y0 0xd.3432bp-4 > y0 min > y0 min_subnorm > > @@ -8213,6 +8237,8 @@ y1 0x1p-100 > y1 0x1p-110 > y1 0x1p-600 > y1 0x1p-10000 > +# the next value generates larger error bounds on x86_64 (binary32) > +y1 0x1.f7e5dcp+0 > y1 min > y1 min_subnorm > > diff --git a/math/auto-libm-test-out-asinh b/math/auto-libm-test-out-asinh > index 8520865bab..648fe066cb 100644 > --- a/math/auto-libm-test-out-asinh > +++ b/math/auto-libm-test-out-asinh > @@ -2506,6 +2506,31 @@ asinh 0x1p-5000 > = asinh tonearest binary128 0x1p-5000 : 0x1p-5000 : inexact-ok > = asinh towardzero binary128 0x1p-5000 : 0xf.fffffffffffffffffffffffffff8p-5004 : inexact-ok > = asinh upward binary128 0x1p-5000 : 0x1p-5000 : inexact-ok > +asinh 0xf.96c69p-8 > += asinh downward binary32 0xf.96c69p-8 : 0xf.94503p-8 : inexact-ok > += asinh tonearest binary32 0xf.96c69p-8 : 0xf.94504p-8 : inexact-ok > += asinh towardzero binary32 0xf.96c69p-8 : 0xf.94503p-8 : inexact-ok > += asinh upward binary32 0xf.96c69p-8 : 0xf.94504p-8 : inexact-ok > += asinh downward binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok > += asinh tonearest binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok > += asinh towardzero binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok > += asinh upward binary64 0xf.96c69p-8 : 0xf.94503821fcc7p-8 : inexact-ok > += asinh downward intel96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok > += asinh tonearest intel96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok > += asinh towardzero intel96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok > += asinh upward intel96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok > += asinh downward m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok > += asinh tonearest m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok > += asinh towardzero m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok > += asinh upward m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok > += asinh downward binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok > += asinh tonearest binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok > += asinh towardzero binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok > += asinh upward binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49358p-8 : inexact-ok > += asinh downward ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49p-8 : inexact-ok > += asinh tonearest ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d494p-8 : inexact-ok > += asinh towardzero ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49p-8 : inexact-ok > += asinh upward ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d494p-8 : inexact-ok > asinh min > = asinh downward binary32 0x4p-128 : 0x3.fffff8p-128 : inexact-ok underflow-ok errno-erange-ok > = asinh tonearest binary32 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok errno-erange-ok > diff --git a/math/auto-libm-test-out-cos b/math/auto-libm-test-out-cos > index 072e04f157..fcb5d17924 100644 > --- a/math/auto-libm-test-out-cos > +++ b/math/auto-libm-test-out-cos > @@ -3223,3 +3223,28 @@ cos -1.57079697 > = cos tonearest ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab44p-24 : inexact-ok > = cos towardzero ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab4p-24 : inexact-ok > = cos upward ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab4p-24 : inexact-ok > +cos 0x2.3c6ef4p-12 > += cos downward binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok > += cos tonearest binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok > += cos towardzero binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok > += cos upward binary32 0x2.3c6ef4p-12 : 0xf.ffffep-4 : inexact-ok > += cos downward binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffc8p-4 : inexact-ok > += cos tonearest binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffdp-4 : inexact-ok > += cos towardzero binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffc8p-4 : inexact-ok > += cos upward binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffdp-4 : inexact-ok > += cos downward intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok > += cos tonearest intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok > += cos towardzero intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok > += cos upward intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5fp-4 : inexact-ok > += cos downward m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok > += cos tonearest m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok > += cos towardzero m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok > += cos upward m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5fp-4 : inexact-ok > += cos downward binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok > += cos tonearest binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok > += cos towardzero binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok > += cos upward binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68f8p-4 : inexact-ok > += cos downward ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok > += cos tonearest ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok > += cos towardzero ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok > += cos upward ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e6cp-4 : inexact-ok > diff --git a/math/auto-libm-test-out-cosh b/math/auto-libm-test-out-cosh > index 35edd5a7ee..6039a35e41 100644 > --- a/math/auto-libm-test-out-cosh > +++ b/math/auto-libm-test-out-cosh > @@ -3385,3 +3385,28 @@ cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 > = cosh tonearest ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : plus_infty : inexact-ok overflow errno-erange > = cosh towardzero ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : 0xf.ffffffffffffbffffffffffffcp+1020 : xfail:ibm128-libgcc inexact-ok overflow errno-erange-ok > = cosh upward ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : plus_infty : xfail:ibm128-libgcc inexact-ok overflow errno-erange > +cosh 0x5.8bfe6p+4 > += cosh downward binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok > += cosh tonearest binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok > += cosh towardzero binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok > += cosh upward binary32 0x5.8bfe6p+4 : 0x8.378dap+124 : inexact-ok > += cosh downward binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok > += cosh tonearest binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok > += cosh towardzero binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok > += cosh upward binary64 0x5.8bfe6p+4 : 0x8.378d97e8a984p+124 : inexact-ok > += cosh downward intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok > += cosh tonearest intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok > += cosh towardzero intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok > += cosh upward intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b9p+124 : inexact-ok > += cosh downward m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok > += cosh tonearest m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok > += cosh towardzero m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok > += cosh upward m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b9p+124 : inexact-ok > += cosh downward binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok > += cosh tonearest binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok > += cosh towardzero binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok > += cosh upward binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a7p+124 : inexact-ok > += cosh downward ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b938p+124 : inexact-ok > += cosh tonearest ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93cp+124 : inexact-ok > += cosh towardzero ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b938p+124 : inexact-ok > += cosh upward ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93cp+124 : inexact-ok > diff --git a/math/auto-libm-test-out-erfc b/math/auto-libm-test-out-erfc > index 257370e5ba..6a921febcb 100644 > --- a/math/auto-libm-test-out-erfc > +++ b/math/auto-libm-test-out-erfc > @@ -2860,6 +2860,31 @@ erfc 0x6.a893032db905274042fb05c665ep+4 > = erfc tonearest ibm128 0x6.a893032db905274042fb05c664p+4 : 0x0p+0 : inexact-ok underflow errno-erange > = erfc towardzero ibm128 0x6.a893032db905274042fb05c664p+4 : 0x0p+0 : xfail:ibm128-libgcc inexact-ok underflow errno-erange > = erfc upward ibm128 0x6.a893032db905274042fb05c664p+4 : 0x4p-1076 : xfail:ibm128-libgcc inexact-ok underflow errno-erange-ok > +erfc 0xd.03d06p-4 > += erfc downward binary32 0xd.03d06p-4 : 0x3.fff918p-4 : inexact-ok > += erfc tonearest binary32 0xd.03d06p-4 : 0x3.fff91cp-4 : inexact-ok > += erfc towardzero binary32 0xd.03d06p-4 : 0x3.fff918p-4 : inexact-ok > += erfc upward binary32 0xd.03d06p-4 : 0x3.fff91cp-4 : inexact-ok > += erfc downward binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok > += erfc tonearest binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok > += erfc towardzero binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok > += erfc upward binary64 0xd.03d06p-4 : 0x3.fff91a7d782b2p-4 : inexact-ok > += erfc downward intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok > += erfc tonearest intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok > += erfc towardzero intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok > += erfc upward intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0068p-4 : inexact-ok > += erfc downward m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok > += erfc tonearest m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok > += erfc towardzero m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok > += erfc upward m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0068p-4 : inexact-ok > += erfc downward binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok > += erfc tonearest binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok > += erfc towardzero binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok > += erfc upward binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87ep-4 : inexact-ok > += erfc downward ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok > += erfc tonearest ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok > += erfc towardzero ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok > += erfc upward ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be9p-4 : inexact-ok > erfc min > = erfc downward binary32 0x4p-128 : 0xf.fffffp-4 : inexact-ok > = erfc tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok > diff --git a/math/auto-libm-test-out-exp b/math/auto-libm-test-out-exp > index 399f5b6b5d..38d2c52ac7 100644 > --- a/math/auto-libm-test-out-exp > +++ b/math/auto-libm-test-out-exp > @@ -4844,3 +4844,28 @@ exp -0x6.58b64p-4 > = exp tonearest ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cb8p-4 : inexact-ok > = exp towardzero ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cb8p-4 : inexact-ok > = exp upward ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cbcp-4 : inexact-ok > +exp 0x1.fefe02p-16 > += exp downward binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok > += exp tonearest binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok > += exp towardzero binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok > += exp upward binary32 0x1.fefe02p-16 : 0x1.0002p+0 : inexact-ok > += exp downward binary64 0x1.fefe02p-16 : 0x1.0001fefffffddp+0 : inexact-ok > += exp tonearest binary64 0x1.fefe02p-16 : 0x1.0001fefffffdep+0 : inexact-ok > += exp towardzero binary64 0x1.fefe02p-16 : 0x1.0001fefffffddp+0 : inexact-ok > += exp upward binary64 0x1.fefe02p-16 : 0x1.0001fefffffdep+0 : inexact-ok > += exp downward intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok > += exp tonearest intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok > += exp towardzero intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok > += exp upward intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok > += exp downward m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok > += exp tonearest m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok > += exp towardzero m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok > += exp upward m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok > += exp downward binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648616fp+0 : inexact-ok > += exp tonearest binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648617p+0 : inexact-ok > += exp towardzero binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648616fp+0 : inexact-ok > += exp upward binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648617p+0 : inexact-ok > += exp downward ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f964861p+0 : inexact-ok > += exp tonearest ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648618p+0 : inexact-ok > += exp towardzero ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f964861p+0 : inexact-ok > += exp upward ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648618p+0 : inexact-ok > diff --git a/math/auto-libm-test-out-exp10 b/math/auto-libm-test-out-exp10 > index 4ce495d78c..d078b36467 100644 > --- a/math/auto-libm-test-out-exp10 > +++ b/math/auto-libm-test-out-exp10 > @@ -3620,6 +3620,31 @@ exp10 -0x1.343793004f503231a589bac27c38p+12 > = exp10 tonearest ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x0p+0 : inexact-ok underflow errno-erange > = exp10 towardzero ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x0p+0 : xfail:ibm128-libgcc inexact-ok underflow errno-erange > = exp10 upward ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x4p-1076 : xfail:ibm128-libgcc inexact-ok underflow errno-erange-ok > +exp10 -0xa.6f431p+0 > += exp10 downward binary32 -0xa.6f431p+0 : 0x2.86b328p-36 : inexact-ok > += exp10 tonearest binary32 -0xa.6f431p+0 : 0x2.86b32cp-36 : inexact-ok > += exp10 towardzero binary32 -0xa.6f431p+0 : 0x2.86b328p-36 : inexact-ok > += exp10 upward binary32 -0xa.6f431p+0 : 0x2.86b32cp-36 : inexact-ok > += exp10 downward binary64 -0xa.6f431p+0 : 0x2.86b32a000000cp-36 : inexact-ok > += exp10 tonearest binary64 -0xa.6f431p+0 : 0x2.86b32a000000ep-36 : inexact-ok > += exp10 towardzero binary64 -0xa.6f431p+0 : 0x2.86b32a000000cp-36 : inexact-ok > += exp10 upward binary64 -0xa.6f431p+0 : 0x2.86b32a000000ep-36 : inexact-ok > += exp10 downward intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok > += exp10 tonearest intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok > += exp10 towardzero intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok > += exp10 upward intel96 -0xa.6f431p+0 : 0x2.86b32a000000da38p-36 : inexact-ok > += exp10 downward m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok > += exp10 tonearest m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok > += exp10 towardzero m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok > += exp10 upward m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da38p-36 : inexact-ok > += exp10 downward binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok > += exp10 tonearest binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok > += exp10 towardzero binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok > += exp10 upward binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3cp-36 : inexact-ok > += exp10 downward ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok > += exp10 tonearest ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok > += exp10 towardzero ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok > += exp10 upward ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69ep-36 : inexact-ok > exp10 min > = exp10 downward binary32 0x4p-128 : 0x1p+0 : inexact-ok > = exp10 tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok > diff --git a/math/auto-libm-test-out-j0 b/math/auto-libm-test-out-j0 > index dd66299f55..2b19908948 100644 > --- a/math/auto-libm-test-out-j0 > +++ b/math/auto-libm-test-out-j0 > @@ -1334,3 +1334,28 @@ j0 0x1p16383 > = j0 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok > = j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok > = j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok > +j0 0x2.602774p+0 > += j0 downward binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok > += j0 tonearest binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok > += j0 towardzero binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok > += j0 upward binary32 0x2.602774p+0 : 0x3.e8377cp-8 : inexact-ok > += j0 downward binary64 0x2.602774p+0 : 0x3.e83779fe1991p-8 : inexact-ok > += j0 tonearest binary64 0x2.602774p+0 : 0x3.e83779fe19912p-8 : inexact-ok > += j0 towardzero binary64 0x2.602774p+0 : 0x3.e83779fe1991p-8 : inexact-ok > += j0 upward binary64 0x2.602774p+0 : 0x3.e83779fe19912p-8 : inexact-ok > += j0 downward intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok > += j0 tonearest intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok > += j0 towardzero intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok > += j0 upward intel96 0x2.602774p+0 : 0x3.e83779fe19911facp-8 : inexact-ok > += j0 downward m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok > += j0 tonearest m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok > += j0 towardzero m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok > += j0 upward m68k96 0x2.602774p+0 : 0x3.e83779fe19911facp-8 : inexact-ok > += j0 downward binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok > += j0 tonearest binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok > += j0 towardzero binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok > += j0 upward binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab702p-8 : inexact-ok > += j0 downward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok > += j0 tonearest ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok > += j0 towardzero ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok > += j0 upward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab8p-8 : inexact-ok > diff --git a/math/auto-libm-test-out-j1 b/math/auto-libm-test-out-j1 > index db6896c8d9..52a4e407c8 100644 > --- a/math/auto-libm-test-out-j1 > +++ b/math/auto-libm-test-out-j1 > @@ -968,6 +968,31 @@ j1 0x1p-10000 > = j1 tonearest binary128 0x1p-10000 : 0x8p-10004 : inexact-ok > = j1 towardzero binary128 0x1p-10000 : 0x7.fffffffffffffffffffffffffffcp-10004 : inexact-ok > = j1 upward binary128 0x1p-10000 : 0x8p-10004 : inexact-ok > +j1 0x3.ae4b2p+0 > += j1 downward binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok > += j1 tonearest binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok > += j1 towardzero binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok > += j1 upward binary32 0x3.ae4b2p+0 : 0xf.d085dp-8 : inexact-ok > += j1 downward binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok > += j1 tonearest binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok > += j1 towardzero binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok > += j1 upward binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f38p-8 : inexact-ok > += j1 downward intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok > += j1 tonearest intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok > += j1 towardzero intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok > += j1 upward intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3027p-8 : inexact-ok > += j1 downward m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok > += j1 tonearest m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok > += j1 towardzero m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok > += j1 upward m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3027p-8 : inexact-ok > += j1 downward binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok > += j1 tonearest binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok > += j1 towardzero binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok > += j1 upward binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d28p-8 : inexact-ok > += j1 downward ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok > += j1 tonearest ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok > += j1 towardzero ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok > += j1 upward ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f788p-8 : inexact-ok > j1 min > = j1 downward binary32 0x4p-128 : 0x1.fffff8p-128 : inexact-ok underflow errno-erange-ok > = j1 tonearest binary32 0x4p-128 : 0x2p-128 : inexact-ok underflow errno-erange-ok > diff --git a/math/auto-libm-test-out-lgamma b/math/auto-libm-test-out-lgamma > index e685783636..36665b8560 100644 > --- a/math/auto-libm-test-out-lgamma > +++ b/math/auto-libm-test-out-lgamma > @@ -2201,6 +2201,31 @@ lgamma -0x1p-16494 > = lgamma tonearest binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e8p+12 -1 : inexact-ok > = lgamma towardzero binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e6p+12 -1 : inexact-ok > = lgamma upward binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e8p+12 -1 : inexact-ok > +lgamma -0x3.ec4298p+0 > += lgamma downward binary32 -0x3.ec4298p+0 : -0x7.d809fp-4 1 : inexact-ok > += lgamma tonearest binary32 -0x3.ec4298p+0 : -0x7.d809fp-4 1 : inexact-ok > += lgamma towardzero binary32 -0x3.ec4298p+0 : -0x7.d809e8p-4 1 : inexact-ok > += lgamma upward binary32 -0x3.ec4298p+0 : -0x7.d809e8p-4 1 : inexact-ok > += lgamma downward binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fc4p-4 1 : inexact-ok > += lgamma tonearest binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok > += lgamma towardzero binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok > += lgamma upward binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok > += lgamma downward intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16ep-4 1 : inexact-ok > += lgamma tonearest intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok > += lgamma towardzero intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok > += lgamma upward intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok > += lgamma downward m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16ep-4 1 : inexact-ok > += lgamma tonearest m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok > += lgamma towardzero m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok > += lgamma upward m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok > += lgamma downward binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad116694p-4 1 : inexact-ok > += lgamma tonearest binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad116694p-4 1 : inexact-ok > += lgamma towardzero binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad11669p-4 1 : inexact-ok > += lgamma upward binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad11669p-4 1 : inexact-ok > += lgamma downward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1168p-4 1 : inexact-ok > += lgamma tonearest ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok > += lgamma towardzero ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok > += lgamma upward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok > lgamma 0x3.12be0cp+120 > = lgamma downward binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok > = lgamma tonearest binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok > diff --git a/math/auto-libm-test-out-sin b/math/auto-libm-test-out-sin > index 4826063340..be9afb2bdb 100644 > --- a/math/auto-libm-test-out-sin > +++ b/math/auto-libm-test-out-sin > @@ -3118,6 +3118,31 @@ sin 0x3.042d88p+0 > = sin tonearest ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba9p-4 : inexact-ok > = sin towardzero ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba9p-4 : inexact-ok > = sin upward ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba98p-4 : inexact-ok > +sin 0x1.d12ed2p-12 > += sin downward binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok > += sin tonearest binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok > += sin towardzero binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok > += sin upward binary32 0x1.d12ed2p-12 : 0x1.d12ed2p-12 : inexact-ok > += sin downward binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfp-12 : inexact-ok > += sin tonearest binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffep-12 : inexact-ok > += sin towardzero binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfp-12 : inexact-ok > += sin upward binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffep-12 : inexact-ok > += sin downward intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok > += sin tonearest intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok > += sin towardzero intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok > += sin upward intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok > += sin downward m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok > += sin tonearest m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok > += sin towardzero m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok > += sin upward m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok > += sin downward binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28232p-12 : inexact-ok > += sin tonearest binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28233p-12 : inexact-ok > += sin towardzero binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28232p-12 : inexact-ok > += sin upward binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28233p-12 : inexact-ok > += sin downward ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok > += sin tonearest ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok > += sin towardzero ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok > += sin upward ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b2828p-12 : inexact-ok > sin max > = sin downward binary32 0xf.fffffp+124 : -0x8.599b4p-4 : inexact-ok > = sin tonearest binary32 0xf.fffffp+124 : -0x8.599b3p-4 : inexact-ok > diff --git a/math/auto-libm-test-out-tgamma b/math/auto-libm-test-out-tgamma > index cb12b2b1b3..a3f4f8efbe 100644 > --- a/math/auto-libm-test-out-tgamma > +++ b/math/auto-libm-test-out-tgamma > @@ -27303,3 +27303,28 @@ tgamma -0xd.cbf53d0e7d06p+0 > = tgamma tonearest ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c5ap-36 : inexact-ok > = tgamma towardzero ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c58p-36 : inexact-ok > = tgamma upward ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c5ap-36 : inexact-ok > +tgamma -0x3.0aa534p+0 > += tgamma downward binary32 -0x3.0aa534p+0 : 0x3.d05ef8p+0 : inexact-ok > += tgamma tonearest binary32 -0x3.0aa534p+0 : 0x3.d05efcp+0 : inexact-ok > += tgamma towardzero binary32 -0x3.0aa534p+0 : 0x3.d05ef8p+0 : inexact-ok > += tgamma upward binary32 -0x3.0aa534p+0 : 0x3.d05efcp+0 : inexact-ok > += tgamma downward binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok > += tgamma tonearest binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok > += tgamma towardzero binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok > += tgamma upward binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49cep+0 : inexact-ok > += tgamma downward intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok > += tgamma tonearest intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok > += tgamma towardzero intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok > += tgamma upward intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok > += tgamma downward m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok > += tgamma tonearest m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok > += tgamma towardzero m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok > += tgamma upward m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok > += tgamma downward binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok > += tgamma tonearest binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok > += tgamma towardzero binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok > += tgamma upward binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a2ap+0 : inexact-ok > += tgamma downward ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok > += tgamma tonearest ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok > += tgamma towardzero ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok > += tgamma upward ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0bp+0 : inexact-ok > diff --git a/math/auto-libm-test-out-y0 b/math/auto-libm-test-out-y0 > index cc5158ed6b..8ebb585170 100644 > --- a/math/auto-libm-test-out-y0 > +++ b/math/auto-libm-test-out-y0 > @@ -795,6 +795,31 @@ y0 0x1p-10000 > = y0 tonearest binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok > = y0 towardzero binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok > = y0 upward binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok > +y0 0xd.3432bp-4 > += y0 downward binary32 0xd.3432bp-4 : -0xf.fdd88p-8 : inexact-ok > += y0 tonearest binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok > += y0 towardzero binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok > += y0 upward binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok > += y0 downward binary64 0xd.3432bp-4 : -0xf.fdd871793bc78p-8 : inexact-ok > += y0 tonearest binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok > += y0 towardzero binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok > += y0 upward binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok > += y0 downward intel96 0xd.3432bp-4 : -0xf.fdd871793bc71fap-8 : inexact-ok > += y0 tonearest intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok > += y0 towardzero intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok > += y0 upward intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok > += y0 downward m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71fap-8 : inexact-ok > += y0 tonearest m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok > += y0 towardzero m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok > += y0 upward m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok > += y0 downward binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44118p-8 : inexact-ok > += y0 tonearest binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44118p-8 : inexact-ok > += y0 towardzero binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b4411p-8 : inexact-ok > += y0 upward binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b4411p-8 : inexact-ok > += y0 downward ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b444p-8 : inexact-ok > += y0 tonearest ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok > += y0 towardzero ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok > += y0 upward ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok > y0 min > = y0 downward binary32 0x4p-128 : -0x3.7ac89cp+4 : inexact-ok > = y0 tonearest binary32 0x4p-128 : -0x3.7ac89cp+4 : inexact-ok > diff --git a/math/auto-libm-test-out-y1 b/math/auto-libm-test-out-y1 > index af68e6c05a..76840efd72 100644 > --- a/math/auto-libm-test-out-y1 > +++ b/math/auto-libm-test-out-y1 > @@ -795,6 +795,31 @@ y1 0x1p-10000 > = y1 tonearest binary128 0x1p-10000 : -0xa.2f9836e4e441529fc2757d1f535p+9996 : inexact-ok > = y1 towardzero binary128 0x1p-10000 : -0xa.2f9836e4e441529fc2757d1f5348p+9996 : inexact-ok > = y1 upward binary128 0x1p-10000 : -0xa.2f9836e4e441529fc2757d1f5348p+9996 : inexact-ok > +y1 0x1.f7e5dcp+0 > += y1 downward binary32 0x1.f7e5dcp+0 : -0x1.ffea2cp-4 : inexact-ok > += y1 tonearest binary32 0x1.f7e5dcp+0 : -0x1.ffea2ap-4 : inexact-ok > += y1 towardzero binary32 0x1.f7e5dcp+0 : -0x1.ffea2ap-4 : inexact-ok > += y1 upward binary32 0x1.f7e5dcp+0 : -0x1.ffea2ap-4 : inexact-ok > += y1 downward binary64 0x1.f7e5dcp+0 : -0x1.ffea2a288b0ffp-4 : inexact-ok > += y1 tonearest binary64 0x1.f7e5dcp+0 : -0x1.ffea2a288b0ffp-4 : inexact-ok > += y1 towardzero binary64 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fep-4 : inexact-ok > += y1 upward binary64 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fep-4 : inexact-ok > += y1 downward intel96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea92p-4 : inexact-ok > += y1 tonearest intel96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea92p-4 : inexact-ok > += y1 towardzero intel96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9p-4 : inexact-ok > += y1 upward intel96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9p-4 : inexact-ok > += y1 downward m68k96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea92p-4 : inexact-ok > += y1 tonearest m68k96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea92p-4 : inexact-ok > += y1 towardzero m68k96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9p-4 : inexact-ok > += y1 upward m68k96 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9p-4 : inexact-ok > += y1 downward binary128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2e6fp-4 : inexact-ok > += y1 tonearest binary128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2e6fp-4 : inexact-ok > += y1 towardzero binary128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2e6ep-4 : inexact-ok > += y1 upward binary128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2e6ep-4 : inexact-ok > += y1 downward ibm128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2e8p-4 : inexact-ok > += y1 tonearest ibm128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2e8p-4 : inexact-ok > += y1 towardzero ibm128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2ep-4 : inexact-ok > += y1 upward ibm128 0x1.f7e5dcp+0 : -0x1.ffea2a288b0fea9149928e9f2ep-4 : inexact-ok > y1 min > = y1 downward binary32 0x4p-128 : -0x2.8be61p+124 : inexact-ok > = y1 tonearest binary32 0x4p-128 : -0x2.8be60cp+124 : inexact-ok > diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps > index 7dc9252bc9..196e60d0b9 100644 > --- a/sysdeps/x86_64/fpu/libm-test-ulps > +++ b/sysdeps/x86_64/fpu/libm-test-ulps > @@ -73,7 +73,7 @@ ldouble: 1 > > Function: "asinh": > double: 1 > -float: 1 > +float: 2 > float128: 3 > ldouble: 3 > > @@ -761,6 +761,7 @@ ldouble: 1 > > Function: "cos": > double: 1 > +float: 1 > float128: 1 > ldouble: 1 > > @@ -804,7 +805,7 @@ float: 1 > > Function: "cosh": > double: 1 > -float: 1 > +float: 2 > float128: 1 > ldouble: 2 > > @@ -1135,7 +1136,7 @@ ldouble: 1 > > Function: "erfc": > double: 3 > -float: 2 > +float: 3 > float128: 2 > ldouble: 3 > > @@ -1158,11 +1159,13 @@ float128: 5 > ldouble: 5 > > Function: "exp": > +float: 1 > float128: 1 > ldouble: 1 > > Function: "exp10": > double: 2 > +float: 1 > float128: 2 > ldouble: 1 > > @@ -1269,22 +1272,22 @@ ldouble: 4 > > Function: "gamma": > double: 4 > -float: 4 > +float: 7 > ldouble: 4 > > Function: "gamma_downward": > double: 5 > -float: 4 > +float: 7 > ldouble: 7 > > Function: "gamma_towardzero": > double: 5 > -float: 4 > +float: 6 > ldouble: 7 > > Function: "gamma_upward": > double: 5 > -float: 5 > +float: 6 > ldouble: 6 > > Function: "hypot": > @@ -1309,7 +1312,7 @@ ldouble: 1 > > Function: "j0": > double: 2 > -float: 2 > +float: 8 > float128: 2 > ldouble: 2 > > @@ -1320,26 +1323,26 @@ float128: 4 > ldouble: 4 > > Function: "j0_towardzero": > -double: 3 > -float: 2 > +double: 4 > +float: 5 > float128: 2 > ldouble: 5 > > Function: "j0_upward": > -double: 3 > -float: 2 > +double: 4 > +float: 5 > float128: 5 > -ldouble: 4 > +ldouble: 6 > > Function: "j1": > -double: 1 > -float: 2 > +double: 2 > +float: 9 > float128: 4 > -ldouble: 1 > +ldouble: 5 > > Function: "j1_downward": > double: 3 > -float: 3 > +float: 5 > float128: 4 > ldouble: 4 > > @@ -1381,25 +1384,25 @@ ldouble: 5 > > Function: "lgamma": > double: 4 > -float: 4 > +float: 7 > float128: 5 > ldouble: 4 > > Function: "lgamma_downward": > double: 5 > -float: 4 > +float: 7 > float128: 8 > ldouble: 7 > > Function: "lgamma_towardzero": > double: 5 > -float: 4 > +float: 6 > float128: 5 > ldouble: 7 > > Function: "lgamma_upward": > double: 5 > -float: 5 > +float: 6 > float128: 8 > ldouble: 6 > > @@ -1562,6 +1565,7 @@ float: 3 > > Function: "sin": > double: 1 > +float: 1 > float128: 1 > ldouble: 1 > > @@ -1719,37 +1723,37 @@ ldouble: 4 > > Function: "tgamma": > double: 5 > -float: 5 > +float: 8 > float128: 4 > ldouble: 5 > > Function: "tgamma_downward": > double: 5 > -float: 5 > +float: 7 > float128: 5 > ldouble: 5 > > Function: "tgamma_towardzero": > double: 5 > -float: 5 > +float: 7 > float128: 5 > ldouble: 5 > > Function: "tgamma_upward": > double: 5 > -float: 5 > +float: 8 > float128: 4 > ldouble: 5 > > Function: "y0": > -double: 2 > -float: 1 > +double: 3 > +float: 8 > float128: 3 > ldouble: 1 > > Function: "y0_downward": > double: 3 > -float: 4 > +float: 6 > float128: 4 > ldouble: 5 > > @@ -1757,37 +1761,37 @@ Function: "y0_towardzero": > double: 3 > float: 3 > float128: 3 > -ldouble: 5 > +ldouble: 6 > > Function: "y0_upward": > double: 3 > -float: 5 > +float: 6 > float128: 3 > -ldouble: 3 > +ldouble: 5 > > Function: "y1": > -double: 3 > -float: 2 > -float128: 2 > -ldouble: 2 > +double: 6 > +float: 9 > +float128: 5 > +ldouble: 3 > > Function: "y1_downward": > double: 3 > float: 2 > -float128: 4 > +float128: 5 > ldouble: 7 > > Function: "y1_towardzero": > -double: 3 > -float: 2 > -float128: 2 > +double: 4 > +float: 5 > +float128: 6 > ldouble: 5 > > Function: "y1_upward": > double: 7 > -float: 2 > -float128: 5 > -ldouble: 7 > +float: 9 > +float128: 6 > +ldouble: 9 > > Function: "yn": > double: 3 > -- > 2.25.1 > -- Cheers, Carlos. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: math: Add inputs that yield larger errors for float type 2020-03-31 19:30 ` Carlos O'Donell @ 2020-03-31 20:37 ` Joseph Myers 2020-04-01 1:47 ` Carlos O'Donell 0 siblings, 1 reply; 6+ messages in thread From: Joseph Myers @ 2020-03-31 20:37 UTC (permalink / raw) To: Carlos O'Donell; +Cc: paul zimmermann, libc-alpha On Tue, 31 Mar 2020, Carlos O'Donell via Libc-alpha wrote: > I'd like to see Joseph give this quick review also before committing. This patch is OK. > > You don't say why you limit j*/y* functions to ULP <=9, but I expect the The libm-test machinery refuses to accept a larger ULP value in a libm-test-ulps file. So any input that produces a larger ULP value results in a test FAIL. And we have Bugzilla to track known issues rather than leaving FAILs in the testsuite. -- Joseph S. Myers joseph@codesourcery.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: math: Add inputs that yield larger errors for float type 2020-03-31 20:37 ` Joseph Myers @ 2020-04-01 1:47 ` Carlos O'Donell 2020-04-01 8:40 ` paul zimmermann 0 siblings, 1 reply; 6+ messages in thread From: Carlos O'Donell @ 2020-04-01 1:47 UTC (permalink / raw) To: Joseph Myers; +Cc: paul zimmermann, libc-alpha [-- Attachment #1: Type: text/plain, Size: 4900 bytes --] On 3/31/20 4:37 PM, Joseph Myers wrote: > On Tue, 31 Mar 2020, Carlos O'Donell via Libc-alpha wrote: > >> I'd like to see Joseph give this quick review also before committing. > > This patch is OK. >> >> You don't say why you limit j*/y* functions to ULP <=9, but I expect the > > The libm-test machinery refuses to accept a larger ULP value in a > libm-test-ulps file. So any input that produces a larger ULP value > results in a test FAIL. And we have Bugzilla to track known issues rather > than leaving FAILs in the testsuite. > Paul, The changes trigger higher ULPs on my test system and one failure for y1. Things pass if I drop the y1 value e.g. 0x1.f7e5dcp+0. I don't think we can reliably add y1. I can push your patch without the y1 value, tell me if that works for you. See the attached patch. I'm using gcc version 9.2.1 20190827 (Red Hat 9.2.1-1) (GCC), and the y1 test seems sensitive to compilers. testing double (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.2497917621721319e-01 -0x1.ffea2a288b10ep-4 should be: -1.2497917621721299e-01 -0x1.ffea2a288b0ffp-4 difference: 2.0816681711721685e-16 0x1.e000000000000p-53 ulp : 15.0000 max.ulp : 3.0000 Failure: Test: y1_upward (0x1.f7e5dcp+0) Result: is: -1.2497917621721281e-01 -0x1.ffea2a288b0f3p-4 should be: -1.2497917621721296e-01 -0x1.ffea2a288b0fep-4 difference: 1.5265566588595903e-16 0x1.6000000000000p-53 ulp : 11.0000 max.ulp : 7.0000 Test suite completed: 172 test cases plus 168 tests for exception flags and 168 tests for errno executed. 2 errors occurred. testing float (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.24979288e-01 -0x1.ffea48p-4 should be: -1.24979184e-01 -0x1.ffea2cp-4 difference: 1.04308128e-07 0x1.c00000p-24 ulp : 14.0000 max.ulp : 2.0000 Test suite completed: 144 test cases plus 140 tests for exception flags and 140 tests for errno executed. 1 errors occurred. testing _Float32 (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.24979288e-01 -0x1.ffea48p-4 should be: -1.24979184e-01 -0x1.ffea2cp-4 difference: 1.04308128e-07 0x1.c00000p-24 ulp : 14.0000 max.ulp : 2.0000 Test suite completed: 144 test cases plus 140 tests for exception flags and 140 tests for errno executed. 1 errors occurred. testing _Float32x (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.2497917621721319e-01 -0x1.ffea2a288b10ep-4 should be: -1.2497917621721299e-01 -0x1.ffea2a288b0ffp-4 difference: 2.0816681711721685e-16 0x1.e000000000000p-53 ulp : 15.0000 max.ulp : 3.0000 Failure: Test: y1_upward (0x1.f7e5dcp+0) Result: is: -1.2497917621721281e-01 -0x1.ffea2a288b0f3p-4 should be: -1.2497917621721296e-01 -0x1.ffea2a288b0fep-4 difference: 1.5265566588595903e-16 0x1.6000000000000p-53 ulp : 11.0000 max.ulp : 7.0000 Test suite completed: 172 test cases plus 168 tests for exception flags and 168 tests for errno executed. 2 errors occurred. testing _Float64 (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.2497917621721319e-01 -0x1.ffea2a288b10ep-4 should be: -1.2497917621721299e-01 -0x1.ffea2a288b0ffp-4 difference: 2.0816681711721685e-16 0x1.e000000000000p-53 ulp : 15.0000 max.ulp : 3.0000 Failure: Test: y1_upward (0x1.f7e5dcp+0) Result: is: -1.2497917621721281e-01 -0x1.ffea2a288b0f3p-4 should be: -1.2497917621721296e-01 -0x1.ffea2a288b0fep-4 difference: 1.5265566588595903e-16 0x1.6000000000000p-53 ulp : 11.0000 max.ulp : 7.0000 Test suite completed: 172 test cases plus 168 tests for exception flags and 168 tests for errno executed. 2 errors occurred. testing _Float64x (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.24979176217212976465e-01 -0xf.ff515144587f5550p-7 should be: -1.24979176217212976384e-01 -0xf.ff515144587f5490p-7 difference: 8.13151629364128325505e-20 0xc.0000000000000000p-67 ulp : 12.0000 max.ulp : 7.0000 Test suite completed: 196 test cases plus 192 tests for exception flags and 192 tests for errno executed. 1 errors occurred. testing long double (without inline functions) Failure: Test: y1_downward (0x1.f7e5dcp+0) Result: is: -1.24979176217212976465e-01 -0xf.ff515144587f5550p-7 should be: -1.24979176217212976384e-01 -0xf.ff515144587f5490p-7 difference: 8.13151629364128325505e-20 0xc.0000000000000000p-67 ulp : 12.0000 max.ulp : 7.0000 Test suite completed: 196 test cases plus 192 tests for exception flags and 192 tests for errno executed. 1 errors occurred. -- Cheers, Carlos. [-- Attachment #2: 0001-math-Add-inputs-that-yield-larger-errors-for-float-t.patch --] [-- Type: text/x-patch, Size: 40291 bytes --] From 6e7273dbe15ced6feafa389704bd89593d8eb036 Mon Sep 17 00:00:00 2001 From: Paul Zimmermann <Paul.Zimmermann@inria.fr> Date: Mon, 30 Mar 2020 15:55:55 +0200 Subject: [PATCH] math: Add inputs that yield larger errors for float type (x86_64) The corner cases included were generated using exhaustive search for all float/binary32 values on x86_64 (comparing to MPFR for correct rounding to nearest). For the j0/j1/y0 functions, only cases with ulp error <= 9 were included. Reviewed-by: Carlos O'Donell <carlos@redhat.com> --- math/auto-libm-test-in | 24 +++++ math/auto-libm-test-out-asinh | 25 ++++++ math/auto-libm-test-out-cos | 25 ++++++ math/auto-libm-test-out-cosh | 25 ++++++ math/auto-libm-test-out-erfc | 25 ++++++ math/auto-libm-test-out-exp | 25 ++++++ math/auto-libm-test-out-exp10 | 25 ++++++ math/auto-libm-test-out-j0 | 25 ++++++ math/auto-libm-test-out-j1 | 25 ++++++ math/auto-libm-test-out-lgamma | 25 ++++++ math/auto-libm-test-out-sin | 25 ++++++ math/auto-libm-test-out-tgamma | 25 ++++++ math/auto-libm-test-out-y0 | 25 ++++++ .../i386/i686/fpu/multiarch/libm-test-ulps | 35 ++++---- sysdeps/x86_64/fpu/libm-test-ulps | 88 ++++++++++--------- 15 files changed, 388 insertions(+), 59 deletions(-) diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index f36fea0ea8..749eb34746 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -371,6 +371,8 @@ asinh -0x6.e26358p-4 asinh 0x6.c92c08p-4 asinh 0x1p-500 asinh 0x1p-5000 +# the next value generates larger error bounds on x86_64 (binary32) +asinh 0xf.96c69p-8 asinh min asinh -min asinh min_subnorm @@ -4421,6 +4423,8 @@ cos 0x3.042d88p+0 cos 0x1.8475e5afd4481p+0 cos 1.57079697 cos -1.57079697 +# the next value generates larger error bounds on x86_64 (binary32) +cos 0x2.3c6ef4p-12 cosh 0 cosh -0 @@ -4482,6 +4486,8 @@ cosh 0x2.c5d37700c6bb03a6c24b6c9b494cp+12 cosh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12 cosh -0x2.c5d37700c6bb03a6c24b6c9b494cp+12 cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 +# the next value generates larger error bounds on x86_64 (binary32) +cosh 0x5.8bfe6p+4 cpow 1 0 0 0 ignore-zero-inf-sign cpow 2 0 10 0 ignore-zero-inf-sign @@ -4982,6 +4988,8 @@ erfc 0x6.a8a0561d8bbe942p+4 erfc 0x6.a8a0561d8bbe9428p+4 erfc 0x6.a893032db905274042fb05c665dcp+4 erfc 0x6.a893032db905274042fb05c665ep+4 +# the next value generates larger error bounds on x86_64 (binary32) +erfc 0xd.03d06p-4 erfc min erfc -min erfc min_subnorm @@ -5096,6 +5104,8 @@ exp 0x3.248524p+0 exp 0x1.f0b362p+0 exp 0xd.89746a799ac4eedp+0 exp -0x6.58b64p-4 +# the next value generates larger error bounds on x86_64 (binary32) +exp 0x1.fefe02p-16 exp10 0 exp10 -0 @@ -5159,6 +5169,8 @@ exp10 0x1.34413509f79fef311f12b35816f9p+12 exp10 0x1.34413509f79fef311f12b35816fap+12 exp10 -0x1.343793004f503231a589bac27c39p+12 exp10 -0x1.343793004f503231a589bac27c38p+12 +# the next value generates larger error bounds on x86_64 (binary32) +exp10 -0xa.6f431p+0 exp10 min exp10 -min exp10 min_subnorm @@ -5734,6 +5746,8 @@ j0 -0x1.001000001p+593 j0 0x1p1023 j0 0x1p16382 j0 0x1p16383 +# the next value generates larger error bounds on x86_64 (binary32) +j0 0x2.602774p+0 j1 -1.0 j1 0.0 @@ -5765,6 +5779,8 @@ j1 0x1p-60 j1 0x1p-100 j1 0x1p-600 j1 0x1p-10000 +# the next value generates larger error bounds on x86_64 (binary32) +j1 0x3.ae4b2p+0 j1 min j1 -min j1 min_subnorm @@ -5903,6 +5919,8 @@ lgamma 0x1p-16445 lgamma -0x1p-16445 lgamma 0x1p-16494 lgamma -0x1p-16494 +# the next value generates larger error bounds on x86_64 (binary32) +lgamma -0x3.ec4298p+0 # Values +/- 10ulp from overflow threshold. (Values very close to # overflow threshold produce results very close of that threshold, @@ -7205,6 +7223,8 @@ sin 0x6.287cc8749212e72p+0 sin -0x1.02e34cp+0 sin 0xf.f0274p+4 sin 0x3.042d88p+0 +# the next value generates larger error bounds on x86_64 (binary32) +sin 0x1.d12ed2p-12 sin max sin -max sin min @@ -8159,6 +8179,8 @@ tgamma -0xa.ccfcep+0 tgamma -0x9.418c8p+0 tgamma -0x6.ce9158p+0 tgamma -0xd.cbf53d0e7d06p+0 +# the next value generates larger error bounds on x86_64 (binary32) +tgamma -0x3.0aa534p+0 y0 0.125 y0 0.75 @@ -8185,6 +8207,8 @@ y0 0x1p-100 y0 0x1p-110 y0 0x1p-600 y0 0x1p-10000 +# the next value generates larger error bounds on x86_64 (binary32) +y0 0xd.3432bp-4 y0 min y0 min_subnorm diff --git a/math/auto-libm-test-out-asinh b/math/auto-libm-test-out-asinh index 8520865bab..648fe066cb 100644 --- a/math/auto-libm-test-out-asinh +++ b/math/auto-libm-test-out-asinh @@ -2506,6 +2506,31 @@ asinh 0x1p-5000 = asinh tonearest binary128 0x1p-5000 : 0x1p-5000 : inexact-ok = asinh towardzero binary128 0x1p-5000 : 0xf.fffffffffffffffffffffffffff8p-5004 : inexact-ok = asinh upward binary128 0x1p-5000 : 0x1p-5000 : inexact-ok +asinh 0xf.96c69p-8 += asinh downward binary32 0xf.96c69p-8 : 0xf.94503p-8 : inexact-ok += asinh tonearest binary32 0xf.96c69p-8 : 0xf.94504p-8 : inexact-ok += asinh towardzero binary32 0xf.96c69p-8 : 0xf.94503p-8 : inexact-ok += asinh upward binary32 0xf.96c69p-8 : 0xf.94504p-8 : inexact-ok += asinh downward binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok += asinh tonearest binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok += asinh towardzero binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok += asinh upward binary64 0xf.96c69p-8 : 0xf.94503821fcc7p-8 : inexact-ok += asinh downward intel96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok += asinh tonearest intel96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok += asinh towardzero intel96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok += asinh upward intel96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok += asinh downward m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok += asinh tonearest m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok += asinh towardzero m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok += asinh upward m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok += asinh downward binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok += asinh tonearest binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok += asinh towardzero binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok += asinh upward binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49358p-8 : inexact-ok += asinh downward ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49p-8 : inexact-ok += asinh tonearest ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d494p-8 : inexact-ok += asinh towardzero ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49p-8 : inexact-ok += asinh upward ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d494p-8 : inexact-ok asinh min = asinh downward binary32 0x4p-128 : 0x3.fffff8p-128 : inexact-ok underflow-ok errno-erange-ok = asinh tonearest binary32 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok errno-erange-ok diff --git a/math/auto-libm-test-out-cos b/math/auto-libm-test-out-cos index 072e04f157..fcb5d17924 100644 --- a/math/auto-libm-test-out-cos +++ b/math/auto-libm-test-out-cos @@ -3223,3 +3223,28 @@ cos -1.57079697 = cos tonearest ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab44p-24 : inexact-ok = cos towardzero ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab4p-24 : inexact-ok = cos upward ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab4p-24 : inexact-ok +cos 0x2.3c6ef4p-12 += cos downward binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok += cos tonearest binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok += cos towardzero binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok += cos upward binary32 0x2.3c6ef4p-12 : 0xf.ffffep-4 : inexact-ok += cos downward binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffc8p-4 : inexact-ok += cos tonearest binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffdp-4 : inexact-ok += cos towardzero binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffc8p-4 : inexact-ok += cos upward binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffdp-4 : inexact-ok += cos downward intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok += cos tonearest intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok += cos towardzero intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok += cos upward intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5fp-4 : inexact-ok += cos downward m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok += cos tonearest m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok += cos towardzero m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok += cos upward m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5fp-4 : inexact-ok += cos downward binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok += cos tonearest binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok += cos towardzero binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok += cos upward binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68f8p-4 : inexact-ok += cos downward ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok += cos tonearest ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok += cos towardzero ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok += cos upward ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e6cp-4 : inexact-ok diff --git a/math/auto-libm-test-out-cosh b/math/auto-libm-test-out-cosh index 35edd5a7ee..6039a35e41 100644 --- a/math/auto-libm-test-out-cosh +++ b/math/auto-libm-test-out-cosh @@ -3385,3 +3385,28 @@ cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 = cosh tonearest ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : plus_infty : inexact-ok overflow errno-erange = cosh towardzero ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : 0xf.ffffffffffffbffffffffffffcp+1020 : xfail:ibm128-libgcc inexact-ok overflow errno-erange-ok = cosh upward ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : plus_infty : xfail:ibm128-libgcc inexact-ok overflow errno-erange +cosh 0x5.8bfe6p+4 += cosh downward binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok += cosh tonearest binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok += cosh towardzero binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok += cosh upward binary32 0x5.8bfe6p+4 : 0x8.378dap+124 : inexact-ok += cosh downward binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok += cosh tonearest binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok += cosh towardzero binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok += cosh upward binary64 0x5.8bfe6p+4 : 0x8.378d97e8a984p+124 : inexact-ok += cosh downward intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok += cosh tonearest intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok += cosh towardzero intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok += cosh upward intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b9p+124 : inexact-ok += cosh downward m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok += cosh tonearest m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok += cosh towardzero m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok += cosh upward m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b9p+124 : inexact-ok += cosh downward binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok += cosh tonearest binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok += cosh towardzero binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok += cosh upward binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a7p+124 : inexact-ok += cosh downward ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b938p+124 : inexact-ok += cosh tonearest ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93cp+124 : inexact-ok += cosh towardzero ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b938p+124 : inexact-ok += cosh upward ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93cp+124 : inexact-ok diff --git a/math/auto-libm-test-out-erfc b/math/auto-libm-test-out-erfc index 257370e5ba..6a921febcb 100644 --- a/math/auto-libm-test-out-erfc +++ b/math/auto-libm-test-out-erfc @@ -2860,6 +2860,31 @@ erfc 0x6.a893032db905274042fb05c665ep+4 = erfc tonearest ibm128 0x6.a893032db905274042fb05c664p+4 : 0x0p+0 : inexact-ok underflow errno-erange = erfc towardzero ibm128 0x6.a893032db905274042fb05c664p+4 : 0x0p+0 : xfail:ibm128-libgcc inexact-ok underflow errno-erange = erfc upward ibm128 0x6.a893032db905274042fb05c664p+4 : 0x4p-1076 : xfail:ibm128-libgcc inexact-ok underflow errno-erange-ok +erfc 0xd.03d06p-4 += erfc downward binary32 0xd.03d06p-4 : 0x3.fff918p-4 : inexact-ok += erfc tonearest binary32 0xd.03d06p-4 : 0x3.fff91cp-4 : inexact-ok += erfc towardzero binary32 0xd.03d06p-4 : 0x3.fff918p-4 : inexact-ok += erfc upward binary32 0xd.03d06p-4 : 0x3.fff91cp-4 : inexact-ok += erfc downward binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok += erfc tonearest binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok += erfc towardzero binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok += erfc upward binary64 0xd.03d06p-4 : 0x3.fff91a7d782b2p-4 : inexact-ok += erfc downward intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok += erfc tonearest intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok += erfc towardzero intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok += erfc upward intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0068p-4 : inexact-ok += erfc downward m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok += erfc tonearest m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok += erfc towardzero m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok += erfc upward m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0068p-4 : inexact-ok += erfc downward binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok += erfc tonearest binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok += erfc towardzero binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok += erfc upward binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87ep-4 : inexact-ok += erfc downward ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok += erfc tonearest ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok += erfc towardzero ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok += erfc upward ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be9p-4 : inexact-ok erfc min = erfc downward binary32 0x4p-128 : 0xf.fffffp-4 : inexact-ok = erfc tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok diff --git a/math/auto-libm-test-out-exp b/math/auto-libm-test-out-exp index 399f5b6b5d..38d2c52ac7 100644 --- a/math/auto-libm-test-out-exp +++ b/math/auto-libm-test-out-exp @@ -4844,3 +4844,28 @@ exp -0x6.58b64p-4 = exp tonearest ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cb8p-4 : inexact-ok = exp towardzero ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cb8p-4 : inexact-ok = exp upward ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cbcp-4 : inexact-ok +exp 0x1.fefe02p-16 += exp downward binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok += exp tonearest binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok += exp towardzero binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok += exp upward binary32 0x1.fefe02p-16 : 0x1.0002p+0 : inexact-ok += exp downward binary64 0x1.fefe02p-16 : 0x1.0001fefffffddp+0 : inexact-ok += exp tonearest binary64 0x1.fefe02p-16 : 0x1.0001fefffffdep+0 : inexact-ok += exp towardzero binary64 0x1.fefe02p-16 : 0x1.0001fefffffddp+0 : inexact-ok += exp upward binary64 0x1.fefe02p-16 : 0x1.0001fefffffdep+0 : inexact-ok += exp downward intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok += exp tonearest intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok += exp towardzero intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok += exp upward intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok += exp downward m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok += exp tonearest m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok += exp towardzero m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok += exp upward m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok += exp downward binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648616fp+0 : inexact-ok += exp tonearest binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648617p+0 : inexact-ok += exp towardzero binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648616fp+0 : inexact-ok += exp upward binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648617p+0 : inexact-ok += exp downward ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f964861p+0 : inexact-ok += exp tonearest ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648618p+0 : inexact-ok += exp towardzero ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f964861p+0 : inexact-ok += exp upward ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648618p+0 : inexact-ok diff --git a/math/auto-libm-test-out-exp10 b/math/auto-libm-test-out-exp10 index 4ce495d78c..d078b36467 100644 --- a/math/auto-libm-test-out-exp10 +++ b/math/auto-libm-test-out-exp10 @@ -3620,6 +3620,31 @@ exp10 -0x1.343793004f503231a589bac27c38p+12 = exp10 tonearest ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x0p+0 : inexact-ok underflow errno-erange = exp10 towardzero ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x0p+0 : xfail:ibm128-libgcc inexact-ok underflow errno-erange = exp10 upward ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x4p-1076 : xfail:ibm128-libgcc inexact-ok underflow errno-erange-ok +exp10 -0xa.6f431p+0 += exp10 downward binary32 -0xa.6f431p+0 : 0x2.86b328p-36 : inexact-ok += exp10 tonearest binary32 -0xa.6f431p+0 : 0x2.86b32cp-36 : inexact-ok += exp10 towardzero binary32 -0xa.6f431p+0 : 0x2.86b328p-36 : inexact-ok += exp10 upward binary32 -0xa.6f431p+0 : 0x2.86b32cp-36 : inexact-ok += exp10 downward binary64 -0xa.6f431p+0 : 0x2.86b32a000000cp-36 : inexact-ok += exp10 tonearest binary64 -0xa.6f431p+0 : 0x2.86b32a000000ep-36 : inexact-ok += exp10 towardzero binary64 -0xa.6f431p+0 : 0x2.86b32a000000cp-36 : inexact-ok += exp10 upward binary64 -0xa.6f431p+0 : 0x2.86b32a000000ep-36 : inexact-ok += exp10 downward intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok += exp10 tonearest intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok += exp10 towardzero intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok += exp10 upward intel96 -0xa.6f431p+0 : 0x2.86b32a000000da38p-36 : inexact-ok += exp10 downward m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok += exp10 tonearest m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok += exp10 towardzero m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok += exp10 upward m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da38p-36 : inexact-ok += exp10 downward binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok += exp10 tonearest binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok += exp10 towardzero binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok += exp10 upward binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3cp-36 : inexact-ok += exp10 downward ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok += exp10 tonearest ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok += exp10 towardzero ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok += exp10 upward ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69ep-36 : inexact-ok exp10 min = exp10 downward binary32 0x4p-128 : 0x1p+0 : inexact-ok = exp10 tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok diff --git a/math/auto-libm-test-out-j0 b/math/auto-libm-test-out-j0 index dd66299f55..2b19908948 100644 --- a/math/auto-libm-test-out-j0 +++ b/math/auto-libm-test-out-j0 @@ -1334,3 +1334,28 @@ j0 0x1p16383 = j0 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok = j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok = j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok +j0 0x2.602774p+0 += j0 downward binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok += j0 tonearest binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok += j0 towardzero binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok += j0 upward binary32 0x2.602774p+0 : 0x3.e8377cp-8 : inexact-ok += j0 downward binary64 0x2.602774p+0 : 0x3.e83779fe1991p-8 : inexact-ok += j0 tonearest binary64 0x2.602774p+0 : 0x3.e83779fe19912p-8 : inexact-ok += j0 towardzero binary64 0x2.602774p+0 : 0x3.e83779fe1991p-8 : inexact-ok += j0 upward binary64 0x2.602774p+0 : 0x3.e83779fe19912p-8 : inexact-ok += j0 downward intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok += j0 tonearest intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok += j0 towardzero intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok += j0 upward intel96 0x2.602774p+0 : 0x3.e83779fe19911facp-8 : inexact-ok += j0 downward m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok += j0 tonearest m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok += j0 towardzero m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok += j0 upward m68k96 0x2.602774p+0 : 0x3.e83779fe19911facp-8 : inexact-ok += j0 downward binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok += j0 tonearest binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok += j0 towardzero binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok += j0 upward binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab702p-8 : inexact-ok += j0 downward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok += j0 tonearest ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok += j0 towardzero ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok += j0 upward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab8p-8 : inexact-ok diff --git a/math/auto-libm-test-out-j1 b/math/auto-libm-test-out-j1 index db6896c8d9..52a4e407c8 100644 --- a/math/auto-libm-test-out-j1 +++ b/math/auto-libm-test-out-j1 @@ -968,6 +968,31 @@ j1 0x1p-10000 = j1 tonearest binary128 0x1p-10000 : 0x8p-10004 : inexact-ok = j1 towardzero binary128 0x1p-10000 : 0x7.fffffffffffffffffffffffffffcp-10004 : inexact-ok = j1 upward binary128 0x1p-10000 : 0x8p-10004 : inexact-ok +j1 0x3.ae4b2p+0 += j1 downward binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok += j1 tonearest binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok += j1 towardzero binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok += j1 upward binary32 0x3.ae4b2p+0 : 0xf.d085dp-8 : inexact-ok += j1 downward binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok += j1 tonearest binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok += j1 towardzero binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok += j1 upward binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f38p-8 : inexact-ok += j1 downward intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok += j1 tonearest intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok += j1 towardzero intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok += j1 upward intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3027p-8 : inexact-ok += j1 downward m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok += j1 tonearest m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok += j1 towardzero m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok += j1 upward m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3027p-8 : inexact-ok += j1 downward binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok += j1 tonearest binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok += j1 towardzero binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok += j1 upward binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d28p-8 : inexact-ok += j1 downward ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok += j1 tonearest ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok += j1 towardzero ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok += j1 upward ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f788p-8 : inexact-ok j1 min = j1 downward binary32 0x4p-128 : 0x1.fffff8p-128 : inexact-ok underflow errno-erange-ok = j1 tonearest binary32 0x4p-128 : 0x2p-128 : inexact-ok underflow errno-erange-ok diff --git a/math/auto-libm-test-out-lgamma b/math/auto-libm-test-out-lgamma index e685783636..36665b8560 100644 --- a/math/auto-libm-test-out-lgamma +++ b/math/auto-libm-test-out-lgamma @@ -2201,6 +2201,31 @@ lgamma -0x1p-16494 = lgamma tonearest binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e8p+12 -1 : inexact-ok = lgamma towardzero binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e6p+12 -1 : inexact-ok = lgamma upward binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e8p+12 -1 : inexact-ok +lgamma -0x3.ec4298p+0 += lgamma downward binary32 -0x3.ec4298p+0 : -0x7.d809fp-4 1 : inexact-ok += lgamma tonearest binary32 -0x3.ec4298p+0 : -0x7.d809fp-4 1 : inexact-ok += lgamma towardzero binary32 -0x3.ec4298p+0 : -0x7.d809e8p-4 1 : inexact-ok += lgamma upward binary32 -0x3.ec4298p+0 : -0x7.d809e8p-4 1 : inexact-ok += lgamma downward binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fc4p-4 1 : inexact-ok += lgamma tonearest binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok += lgamma towardzero binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok += lgamma upward binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok += lgamma downward intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16ep-4 1 : inexact-ok += lgamma tonearest intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok += lgamma towardzero intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok += lgamma upward intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok += lgamma downward m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16ep-4 1 : inexact-ok += lgamma tonearest m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok += lgamma towardzero m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok += lgamma upward m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok += lgamma downward binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad116694p-4 1 : inexact-ok += lgamma tonearest binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad116694p-4 1 : inexact-ok += lgamma towardzero binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad11669p-4 1 : inexact-ok += lgamma upward binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad11669p-4 1 : inexact-ok += lgamma downward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1168p-4 1 : inexact-ok += lgamma tonearest ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok += lgamma towardzero ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok += lgamma upward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok lgamma 0x3.12be0cp+120 = lgamma downward binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok = lgamma tonearest binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok diff --git a/math/auto-libm-test-out-sin b/math/auto-libm-test-out-sin index 4826063340..be9afb2bdb 100644 --- a/math/auto-libm-test-out-sin +++ b/math/auto-libm-test-out-sin @@ -3118,6 +3118,31 @@ sin 0x3.042d88p+0 = sin tonearest ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba9p-4 : inexact-ok = sin towardzero ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba9p-4 : inexact-ok = sin upward ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba98p-4 : inexact-ok +sin 0x1.d12ed2p-12 += sin downward binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok += sin tonearest binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok += sin towardzero binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok += sin upward binary32 0x1.d12ed2p-12 : 0x1.d12ed2p-12 : inexact-ok += sin downward binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfp-12 : inexact-ok += sin tonearest binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffep-12 : inexact-ok += sin towardzero binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfp-12 : inexact-ok += sin upward binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffep-12 : inexact-ok += sin downward intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok += sin tonearest intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok += sin towardzero intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok += sin upward intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok += sin downward m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok += sin tonearest m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok += sin towardzero m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok += sin upward m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok += sin downward binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28232p-12 : inexact-ok += sin tonearest binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28233p-12 : inexact-ok += sin towardzero binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28232p-12 : inexact-ok += sin upward binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28233p-12 : inexact-ok += sin downward ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok += sin tonearest ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok += sin towardzero ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok += sin upward ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b2828p-12 : inexact-ok sin max = sin downward binary32 0xf.fffffp+124 : -0x8.599b4p-4 : inexact-ok = sin tonearest binary32 0xf.fffffp+124 : -0x8.599b3p-4 : inexact-ok diff --git a/math/auto-libm-test-out-tgamma b/math/auto-libm-test-out-tgamma index cb12b2b1b3..a3f4f8efbe 100644 --- a/math/auto-libm-test-out-tgamma +++ b/math/auto-libm-test-out-tgamma @@ -27303,3 +27303,28 @@ tgamma -0xd.cbf53d0e7d06p+0 = tgamma tonearest ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c5ap-36 : inexact-ok = tgamma towardzero ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c58p-36 : inexact-ok = tgamma upward ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c5ap-36 : inexact-ok +tgamma -0x3.0aa534p+0 += tgamma downward binary32 -0x3.0aa534p+0 : 0x3.d05ef8p+0 : inexact-ok += tgamma tonearest binary32 -0x3.0aa534p+0 : 0x3.d05efcp+0 : inexact-ok += tgamma towardzero binary32 -0x3.0aa534p+0 : 0x3.d05ef8p+0 : inexact-ok += tgamma upward binary32 -0x3.0aa534p+0 : 0x3.d05efcp+0 : inexact-ok += tgamma downward binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok += tgamma tonearest binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok += tgamma towardzero binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok += tgamma upward binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49cep+0 : inexact-ok += tgamma downward intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok += tgamma tonearest intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok += tgamma towardzero intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok += tgamma upward intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok += tgamma downward m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok += tgamma tonearest m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok += tgamma towardzero m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok += tgamma upward m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok += tgamma downward binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok += tgamma tonearest binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok += tgamma towardzero binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok += tgamma upward binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a2ap+0 : inexact-ok += tgamma downward ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok += tgamma tonearest ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok += tgamma towardzero ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok += tgamma upward ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0bp+0 : inexact-ok diff --git a/math/auto-libm-test-out-y0 b/math/auto-libm-test-out-y0 index cc5158ed6b..8ebb585170 100644 --- a/math/auto-libm-test-out-y0 +++ b/math/auto-libm-test-out-y0 @@ -795,6 +795,31 @@ y0 0x1p-10000 = y0 tonearest binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok = y0 towardzero binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok = y0 upward binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok +y0 0xd.3432bp-4 += y0 downward binary32 0xd.3432bp-4 : -0xf.fdd88p-8 : inexact-ok += y0 tonearest binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok += y0 towardzero binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok += y0 upward binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok += y0 downward binary64 0xd.3432bp-4 : -0xf.fdd871793bc78p-8 : inexact-ok += y0 tonearest binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok += y0 towardzero binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok += y0 upward binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok += y0 downward intel96 0xd.3432bp-4 : -0xf.fdd871793bc71fap-8 : inexact-ok += y0 tonearest intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok += y0 towardzero intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok += y0 upward intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok += y0 downward m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71fap-8 : inexact-ok += y0 tonearest m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok += y0 towardzero m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok += y0 upward m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok += y0 downward binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44118p-8 : inexact-ok += y0 tonearest binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44118p-8 : inexact-ok += y0 towardzero binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b4411p-8 : inexact-ok += y0 upward binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b4411p-8 : inexact-ok += y0 downward ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b444p-8 : inexact-ok += y0 tonearest ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok += y0 towardzero ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok += y0 upward ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok y0 min = y0 downward binary32 0x4p-128 : -0x3.7ac89cp+4 : inexact-ok = y0 tonearest binary32 0x4p-128 : -0x3.7ac89cp+4 : inexact-ok diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps index d293214fbc..670a8c370a 100644 --- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps +++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps @@ -766,7 +766,7 @@ ldouble: 2 Function: "cosh": double: 1 -float: 1 +float: 2 float128: 1 ldouble: 2 @@ -1125,6 +1125,7 @@ ldouble: 5 Function: "exp": double: 1 +float: 1 float128: 1 ldouble: 1 @@ -1250,7 +1251,7 @@ ldouble: 1 Function: "j0": double: 2 -float: 2 +float: 5 float128: 2 ldouble: 2 @@ -1270,13 +1271,13 @@ Function: "j0_upward": double: 3 float: 3 float128: 5 -ldouble: 4 +ldouble: 6 Function: "j1": double: 2 -float: 2 +float: 5 float128: 4 -ldouble: 1 +ldouble: 5 Function: "j1_downward": double: 3 @@ -1575,13 +1576,13 @@ ldouble: 5 Function: "tgamma_downward": double: 6 -float: 5 +float: 7 float128: 5 ldouble: 5 Function: "tgamma_towardzero": double: 6 -float: 5 +float: 7 float128: 5 ldouble: 5 @@ -1607,37 +1608,37 @@ Function: "y0_towardzero": double: 3 float: 3 float128: 3 -ldouble: 5 +ldouble: 6 Function: "y0_upward": double: 3 float: 5 float128: 3 -ldouble: 3 +ldouble: 5 Function: "y1": double: 3 float: 2 -float128: 2 -ldouble: 2 +float128: 5 +ldouble: 3 Function: "y1_downward": double: 3 -float: 4 -float128: 4 +float: 5 +float128: 5 ldouble: 7 Function: "y1_towardzero": double: 3 -float: 2 -float128: 2 +float: 4 +float128: 6 ldouble: 5 Function: "y1_upward": double: 7 float: 3 -float128: 5 -ldouble: 7 +float128: 6 +ldouble: 9 Function: "yn": double: 3 diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index 7dc9252bc9..196e60d0b9 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -73,7 +73,7 @@ ldouble: 1 Function: "asinh": double: 1 -float: 1 +float: 2 float128: 3 ldouble: 3 @@ -761,6 +761,7 @@ ldouble: 1 Function: "cos": double: 1 +float: 1 float128: 1 ldouble: 1 @@ -804,7 +805,7 @@ float: 1 Function: "cosh": double: 1 -float: 1 +float: 2 float128: 1 ldouble: 2 @@ -1135,7 +1136,7 @@ ldouble: 1 Function: "erfc": double: 3 -float: 2 +float: 3 float128: 2 ldouble: 3 @@ -1158,11 +1159,13 @@ float128: 5 ldouble: 5 Function: "exp": +float: 1 float128: 1 ldouble: 1 Function: "exp10": double: 2 +float: 1 float128: 2 ldouble: 1 @@ -1269,22 +1272,22 @@ ldouble: 4 Function: "gamma": double: 4 -float: 4 +float: 7 ldouble: 4 Function: "gamma_downward": double: 5 -float: 4 +float: 7 ldouble: 7 Function: "gamma_towardzero": double: 5 -float: 4 +float: 6 ldouble: 7 Function: "gamma_upward": double: 5 -float: 5 +float: 6 ldouble: 6 Function: "hypot": @@ -1309,7 +1312,7 @@ ldouble: 1 Function: "j0": double: 2 -float: 2 +float: 8 float128: 2 ldouble: 2 @@ -1320,26 +1323,26 @@ float128: 4 ldouble: 4 Function: "j0_towardzero": -double: 3 -float: 2 +double: 4 +float: 5 float128: 2 ldouble: 5 Function: "j0_upward": -double: 3 -float: 2 +double: 4 +float: 5 float128: 5 -ldouble: 4 +ldouble: 6 Function: "j1": -double: 1 -float: 2 +double: 2 +float: 9 float128: 4 -ldouble: 1 +ldouble: 5 Function: "j1_downward": double: 3 -float: 3 +float: 5 float128: 4 ldouble: 4 @@ -1381,25 +1384,25 @@ ldouble: 5 Function: "lgamma": double: 4 -float: 4 +float: 7 float128: 5 ldouble: 4 Function: "lgamma_downward": double: 5 -float: 4 +float: 7 float128: 8 ldouble: 7 Function: "lgamma_towardzero": double: 5 -float: 4 +float: 6 float128: 5 ldouble: 7 Function: "lgamma_upward": double: 5 -float: 5 +float: 6 float128: 8 ldouble: 6 @@ -1562,6 +1565,7 @@ float: 3 Function: "sin": double: 1 +float: 1 float128: 1 ldouble: 1 @@ -1719,37 +1723,37 @@ ldouble: 4 Function: "tgamma": double: 5 -float: 5 +float: 8 float128: 4 ldouble: 5 Function: "tgamma_downward": double: 5 -float: 5 +float: 7 float128: 5 ldouble: 5 Function: "tgamma_towardzero": double: 5 -float: 5 +float: 7 float128: 5 ldouble: 5 Function: "tgamma_upward": double: 5 -float: 5 +float: 8 float128: 4 ldouble: 5 Function: "y0": -double: 2 -float: 1 +double: 3 +float: 8 float128: 3 ldouble: 1 Function: "y0_downward": double: 3 -float: 4 +float: 6 float128: 4 ldouble: 5 @@ -1757,37 +1761,37 @@ Function: "y0_towardzero": double: 3 float: 3 float128: 3 -ldouble: 5 +ldouble: 6 Function: "y0_upward": double: 3 -float: 5 +float: 6 float128: 3 -ldouble: 3 +ldouble: 5 Function: "y1": -double: 3 -float: 2 -float128: 2 -ldouble: 2 +double: 6 +float: 9 +float128: 5 +ldouble: 3 Function: "y1_downward": double: 3 float: 2 -float128: 4 +float128: 5 ldouble: 7 Function: "y1_towardzero": -double: 3 -float: 2 -float128: 2 +double: 4 +float: 5 +float128: 6 ldouble: 5 Function: "y1_upward": double: 7 -float: 2 -float128: 5 -ldouble: 7 +float: 9 +float128: 6 +ldouble: 9 Function: "yn": double: 3 -- 2.21.1 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: math: Add inputs that yield larger errors for float type 2020-04-01 1:47 ` Carlos O'Donell @ 2020-04-01 8:40 ` paul zimmermann 2020-04-01 12:28 ` Carlos O'Donell 0 siblings, 1 reply; 6+ messages in thread From: paul zimmermann @ 2020-04-01 8:40 UTC (permalink / raw) To: Carlos O'Donell; +Cc: joseph, libc-alpha Dear Carlos, I'm fine with pushing the patch without the y1 value. One might get failures (i.e., ulp errors > 9) on other systems. Best regards, Paul PS: I'm using gcc 9.3.0. > From: Carlos O'Donell <carlos@redhat.com> > Date: Tue, 31 Mar 2020 21:47:00 -0400 > > On 3/31/20 4:37 PM, Joseph Myers wrote: > > On Tue, 31 Mar 2020, Carlos O'Donell via Libc-alpha wrote: > > > >> I'd like to see Joseph give this quick review also before committing. > > > > This patch is OK. > >> > >> You don't say why you limit j*/y* functions to ULP <=9, but I expect the > > > > The libm-test machinery refuses to accept a larger ULP value in a > > libm-test-ulps file. So any input that produces a larger ULP value > > results in a test FAIL. And we have Bugzilla to track known issues rather > > than leaving FAILs in the testsuite. > > > > Paul, > > The changes trigger higher ULPs on my test system and one failure for y1. > > Things pass if I drop the y1 value e.g. 0x1.f7e5dcp+0. > > I don't think we can reliably add y1. > > I can push your patch without the y1 value, tell me if that works for you. > > See the attached patch. > > I'm using gcc version 9.2.1 20190827 (Red Hat 9.2.1-1) (GCC), and the y1 > test seems sensitive to compilers. > > testing double (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.2497917621721319e-01 -0x1.ffea2a288b10ep-4 > should be: -1.2497917621721299e-01 -0x1.ffea2a288b0ffp-4 > difference: 2.0816681711721685e-16 0x1.e000000000000p-53 > ulp : 15.0000 > max.ulp : 3.0000 > Failure: Test: y1_upward (0x1.f7e5dcp+0) > Result: > is: -1.2497917621721281e-01 -0x1.ffea2a288b0f3p-4 > should be: -1.2497917621721296e-01 -0x1.ffea2a288b0fep-4 > difference: 1.5265566588595903e-16 0x1.6000000000000p-53 > ulp : 11.0000 > max.ulp : 7.0000 > > Test suite completed: > 172 test cases plus 168 tests for exception flags and > 168 tests for errno executed. > 2 errors occurred. > > testing float (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.24979288e-01 -0x1.ffea48p-4 > should be: -1.24979184e-01 -0x1.ffea2cp-4 > difference: 1.04308128e-07 0x1.c00000p-24 > ulp : 14.0000 > max.ulp : 2.0000 > > Test suite completed: > 144 test cases plus 140 tests for exception flags and > 140 tests for errno executed. > 1 errors occurred. > > testing _Float32 (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.24979288e-01 -0x1.ffea48p-4 > should be: -1.24979184e-01 -0x1.ffea2cp-4 > difference: 1.04308128e-07 0x1.c00000p-24 > ulp : 14.0000 > max.ulp : 2.0000 > > Test suite completed: > 144 test cases plus 140 tests for exception flags and > 140 tests for errno executed. > 1 errors occurred. > > testing _Float32x (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.2497917621721319e-01 -0x1.ffea2a288b10ep-4 > should be: -1.2497917621721299e-01 -0x1.ffea2a288b0ffp-4 > difference: 2.0816681711721685e-16 0x1.e000000000000p-53 > ulp : 15.0000 > max.ulp : 3.0000 > Failure: Test: y1_upward (0x1.f7e5dcp+0) > Result: > is: -1.2497917621721281e-01 -0x1.ffea2a288b0f3p-4 > should be: -1.2497917621721296e-01 -0x1.ffea2a288b0fep-4 > difference: 1.5265566588595903e-16 0x1.6000000000000p-53 > ulp : 11.0000 > max.ulp : 7.0000 > > Test suite completed: > 172 test cases plus 168 tests for exception flags and > 168 tests for errno executed. > 2 errors occurred. > > testing _Float64 (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.2497917621721319e-01 -0x1.ffea2a288b10ep-4 > should be: -1.2497917621721299e-01 -0x1.ffea2a288b0ffp-4 > difference: 2.0816681711721685e-16 0x1.e000000000000p-53 > ulp : 15.0000 > max.ulp : 3.0000 > Failure: Test: y1_upward (0x1.f7e5dcp+0) > Result: > is: -1.2497917621721281e-01 -0x1.ffea2a288b0f3p-4 > should be: -1.2497917621721296e-01 -0x1.ffea2a288b0fep-4 > difference: 1.5265566588595903e-16 0x1.6000000000000p-53 > ulp : 11.0000 > max.ulp : 7.0000 > > Test suite completed: > 172 test cases plus 168 tests for exception flags and > 168 tests for errno executed. > 2 errors occurred. > > testing _Float64x (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.24979176217212976465e-01 -0xf.ff515144587f5550p-7 > should be: -1.24979176217212976384e-01 -0xf.ff515144587f5490p-7 > difference: 8.13151629364128325505e-20 0xc.0000000000000000p-67 > ulp : 12.0000 > max.ulp : 7.0000 > > Test suite completed: > 196 test cases plus 192 tests for exception flags and > 192 tests for errno executed. > 1 errors occurred. > > testing long double (without inline functions) > Failure: Test: y1_downward (0x1.f7e5dcp+0) > Result: > is: -1.24979176217212976465e-01 -0xf.ff515144587f5550p-7 > should be: -1.24979176217212976384e-01 -0xf.ff515144587f5490p-7 > difference: 8.13151629364128325505e-20 0xc.0000000000000000p-67 > ulp : 12.0000 > max.ulp : 7.0000 > > Test suite completed: > 196 test cases plus 192 tests for exception flags and > 192 tests for errno executed. > 1 errors occurred. > > > -- > Cheers, > Carlos. > > [2:text/x-patch Show Save:0001-math-Add-inputs-that-yield-larger-errors-for-float-t.patch (39kB)] > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: math: Add inputs that yield larger errors for float type 2020-04-01 8:40 ` paul zimmermann @ 2020-04-01 12:28 ` Carlos O'Donell 0 siblings, 0 replies; 6+ messages in thread From: Carlos O'Donell @ 2020-04-01 12:28 UTC (permalink / raw) To: paul zimmermann; +Cc: joseph, libc-alpha On 4/1/20 4:40 AM, paul zimmermann wrote: > Dear Carlos, > > I'm fine with pushing the patch without the y1 value. One might get failures > (i.e., ulp errors > 9) on other systems. Pushed. We'll see how it goes for other machines and update the ULPs accordingly. -- Cheers, Carlos. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-04-01 12:28 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-03-30 14:10 math: Add inputs that yield larger errors for float type paul zimmermann 2020-03-31 19:30 ` Carlos O'Donell 2020-03-31 20:37 ` Joseph Myers 2020-04-01 1:47 ` Carlos O'Donell 2020-04-01 8:40 ` paul zimmermann 2020-04-01 12:28 ` Carlos O'Donell
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).