glibc/math/auto-libm-test-in

2790 lines
67 KiB
Plaintext
Raw Normal View History

# libm test inputs for gen-auto-libm-tests.c.
# Copyright (C) 1997-2015 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
#
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with the GNU C Library; if not, see
# <http://www.gnu.org/licenses/>. */
acos 0
acos -0
acos 1
acos -1
acos 0.5
acos -0.5
acos 0.75
acos 2e-17
acos 0.0625
acos 0x0.ffffffp0
acos -0x0.ffffffp0
acos 0x0.ffffffff8p0
acos -0x0.ffffffff8p0
acos 0x0.ffffffffffffp0
acos -0x0.ffffffffffffp0
acos 0x0.ffffffffffffffffp0
acos -0x0.ffffffffffffffffp0
acos 0x1p-5
acos 0x1p-10
acos 0x1p-15
acos 0x1p-20
acos 0x1p-25
acos 0x1p-30
acos 0x1p-35
acos 0x1p-40
acos 0x1p-45
acos 0x1p-50
acos 0x1p-55
acos 0x1p-60
acos 0x1p-65
acos 0x1p-70
acos 0x1p-75
acos 0x1p-80
acos 0x1p-85
acos 0x1p-90
acos 0x1p-95
acos 0x1p-100
acos 0x1p-105
acos 0x1p-110
acos 0x1p-115
acos 0x1p-120
acos -0x1p-5
acos -0x1p-25
acos -0x1p-45
acos -0x1p-65
acos -0x1p-85
acos -0x1p-105
acos -0x1p-125
acos min
acos -min
acos min_subnorm
acos -min_subnorm
acosh 1
acosh 1.625
acosh 7
acosh 100
acosh 1e5
acosh 0x1p8
acosh 0x1p9
acosh 0x1p10
acosh 0x1p11
acosh 0x1p12
acosh 0x1p13
acosh 0x1p24
acosh 0x1p25
acosh 0x1p26
acosh 0x1p27
acosh 0x1p28
acosh 0x1p29
acosh 0x1p30
acosh 0x1p31
acosh 0x1p32
acosh 0x1p33
acosh 0x1p48
acosh 0x1p49
acosh 0x1p50
acosh 0x1p51
acosh 0x1p52
acosh 0x1p53
acosh 0x1p54
acosh 0x1p55
acosh 0x1p56
acosh 0x1p57
acosh 0x1p58
acosh 0x1p59
acosh 0x1p100
acosh 0x1p500
acosh 0x1p5000
acosh max no-test-inline
asin 0
asin -0
asin 0.5
asin -0.5
asin 1.0
asin -1.0
asin 0.75
asin 0x0.ffffffp0
asin -0x0.ffffffp0
asin 0x0.ffffffff8p0
asin -0x0.ffffffff8p0
asin 0x0.ffffffffffffp0
asin -0x0.ffffffffffffp0
asin 0x0.ffffffffffffffffp0
asin -0x0.ffffffffffffffffp0
Fix asin missing underflows (bug 16351). Similar to various other bugs in this area, some asin implementations do not raise the underflow exception for subnormal arguments, when the result is tiny and inexact. This patch forces the exception in a similar way to previous fixes. Tested for x86_64, x86, powerpc and mips64. [BZ #16351] * sysdeps/i386/fpu/e_asin.S (dbl_min): New object. (MO): New macro. (__ieee754_asin): Force underflow exception for results with small absolute value. * sysdeps/i386/fpu/e_asinf.S (flt_min): New object. (MO): New macro. (__ieee754_asinf): Force underflow exception for results with small absolute value. * sysdeps/ieee754/dbl-64/e_asin.c: Include <float.h> and <math.h>. (__ieee754_asin): Force underflow exception for results with small absolute value. * sysdeps/ieee754/flt-32/e_asinf.c: Include <float.h>. (__ieee754_asinf): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128/e_asinl.c: Include <float.h>. (__ieee754_asinl): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128ibm/e_asinl.c: Include <float.h>. (__ieee754_asinl): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-96/e_asinl.c: Include <float.h>. (__ieee754_asinl): Force underflow exception for results with small absolute value. * sysdeps/x86_64/fpu/multiarch/e_asin.c [HAVE_FMA4_SUPPORT]: Include <math.h>. * math/auto-libm-test-in: Do not mark underflow exceptions as possibly missing for bug 16351. * math/auto-libm-test-out: Regenerated.
2015-02-26 17:18:54 +00:00
asin min
asin -min
asin min_subnorm
asin -min_subnorm
asinh 0
asinh -0
asinh 0.75
asinh 1
asinh 10
asinh 100
asinh 1e6
asinh 0x1p8
asinh 0x1p9
asinh 0x1p10
asinh 0x1p11
asinh 0x1p12
asinh 0x1p13
asinh 0x1p24
asinh 0x1p25
asinh 0x1p26
asinh 0x1p27
asinh 0x1p28
asinh 0x1p29
asinh 0x1p30
asinh 0x1p31
asinh 0x1p32
asinh 0x1p33
asinh 0x1p48
asinh 0x1p49
asinh 0x1p50
asinh 0x1p51
asinh 0x1p52
asinh 0x1p53
asinh 0x1p54
asinh 0x1p55
asinh 0x1p56
asinh 0x1p57
asinh 0x1p58
asinh 0x1p59
asinh 0x1p100
asinh 0x1p500
asinh 0x1p5000
asinh 0x1p-8
asinh 0x1p-9
asinh 0x1p-10
asinh 0x1p-11
asinh 0x1p-12
asinh 0x1p-13
asinh 0x1p-24
asinh 0x1p-25
asinh 0x1p-26
asinh 0x1p-27
asinh 0x1p-28
asinh 0x1p-29
asinh 0x1p-30
asinh 0x1p-31
asinh 0x1p-32
asinh 0x1p-33
asinh 0x1p-48
asinh 0x1p-49
asinh 0x1p-50
asinh 0x1p-51
asinh 0x1p-52
asinh 0x1p-53
asinh 0x1p-54
asinh 0x1p-55
asinh 0x1p-56
asinh 0x1p-57
asinh 0x1p-58
asinh 0x1p-59
asinh 0x1p-100
# Bug 16350: underflow exception may be missing.
asinh 0x1p-500 missing-underflow
asinh 0x1p-5000 missing-underflow
asinh min missing-underflow
asinh -min missing-underflow
asinh min_subnorm missing-underflow
asinh -min_subnorm missing-underflow
asinh max no-test-inline
asinh -max no-test-inline
atan 0
atan -0
atan max
atan -max
atan 1
atan -1
atan 0.75
atan 0x1p-5
atan 2.5
atan 10
atan 1e6
Fix atan / atan2 missing underflows (bug 15319). This patch fixes bug 15319, missing underflows from atan / atan2 when the result of atan is very close to its small argument (or that of atan2 is very close to the ratio of its arguments, which may be an exact division). The usual approach of doing an underflowing computation if the computed result is subnormal is followed. For 32-bit x86, there are extra complications: the inline __ieee754_atan2 in bits/mathinline.h needs to be disabled for float and double because other libm functions using it generally rely on getting proper underflow exceptions from it, while the out-of-line functions have to remove excess range and precision from the underflowing result so as to return an exact 0 in the case where errno should be set for underflow to 0. (The failures I saw without that are similar to those Carlos reported for other functions, where I haven't seen a response to <https://sourceware.org/ml/libc-alpha/2015-01/msg00485.html> confirming if my diagnosis is correct. Arguably all libm functions with float and double returns should remove excess range and precision, but that's a separate matter.) The x86_64 long double case reported in a comment in bug 15319 is not a bug (it's an argument of LDBL_MIN, and x86_64 is an after-rounding architecture so the correct IEEE result is not to raise underflow in the given rounding mode, in addition to treating the result as an exact LDBL_MIN being within the newly clarified documentation of accuracy goals). I'm presuming that the fpatan instruction can be trusted to raise appropriate exceptions when the (long double) result underflows (after rounding) and so no changes are needed for x86 / x86_64 long double functions here; empirically this is the case for the cases covered in the testsuite, on my system. Tested for x86_64, x86, powerpc and mips64. Only 32-bit x86 needs ulps updates (for the changes to inlines meaning some functions no longer get excess precision from their __ieee754_atan2* calls). [BZ #15319] * sysdeps/i386/fpu/e_atan2.S (dbl_min): New object. (MO): New macro. (__ieee754_atan2): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/e_atan2f.S (flt_min): New object. (MO): New macro. (__ieee754_atan2f): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/s_atan.S (dbl_min): New object. (MO): New macro. (__atan): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/s_atanf.S (flt_min): New object. (MO): New macro. (__atanf): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/ieee754/dbl-64/e_atan2.c: Include <float.h> and <math.h>. (__ieee754_atan2): Force underflow exception for results with small absolute value. * sysdeps/ieee754/dbl-64/s_atan.c: Include <float.h> and <math_private.h>. (atan): Force underflow exception for results with small absolute value. * sysdeps/ieee754/flt-32/s_atanf.c: Include <float.h>. (__atanf): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128/s_atanl.c: Include <float.h> and <math.h>. (__atanl): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128ibm/s_atanl.c: Include <float.h>. (__atanl): Force underflow exception for results with small absolute value. * sysdeps/x86/fpu/bits/mathinline.h [!__SSE2_MATH__ && !__x86_64__ && __LIBC_INTERNAL_MATH_INLINES] (__ieee754_atan2): Only define inline for long double. * sysdeps/x86_64/fpu/multiarch/e_atan2.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Include <math.h>. * math/auto-libm-test-in: Do not mark underflow exceptions as possibly missing for bug 15319. Add more tests of atan2. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (casin_test_data): Do not mark underflow exceptions as possibly missing for bug 15319. (casinh_test_data): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update.
2015-02-18 21:10:49 +00:00
atan 0x1p-100
atan 0x1p-600
atan 0x1p-10000
atan min
atan -min
atan min_subnorm
atan -min_subnorm
# atan2 (0,x) == 0 for x > 0.
atan2 0 1
# atan2 (-0,x) == -0 for x > 0.
atan2 -0 1
atan2 0 0
atan2 -0 0
# atan2 (+0,x) == +pi for x < 0.
atan2 0 -1
# atan2 (-0,x) == -pi for x < 0.
atan2 -0 -1
atan2 0 -0
atan2 -0 -0
# atan2 (y,+0) == pi/2 for y > 0.
atan2 1 0
# atan2 (y,-0) == pi/2 for y > 0.
atan2 1 -0
# atan2 (y,+0) == -pi/2 for y < 0.
atan2 -1 0
# atan2 (y,-0) == -pi/2 for y < 0.
atan2 -1 -0
atan2 max max
atan2 max -max
atan2 -max max
atan2 -max -max
atan2 max min
atan2 -max -min
atan2 -max min
atan2 max -min
atan2 max min_subnorm
atan2 -max -min_subnorm
atan2 -max min_subnorm
atan2 max -min_subnorm
atan2 0.75 1
atan2 -0.75 1.0
atan2 0.75 -1.0
atan2 -0.75 -1.0
atan2 0.390625 .00029
atan2 1.390625 0.9296875
atan2 -0.00756827042671106339 -.001792735857538728036
atan2 0x1.00000000000001p0 0x1.00000000000001p0
atan2 min min
atan2 min -min
atan2 -min min
atan2 -min -min
atan2 min_subnorm min_subnorm
atan2 min_subnorm -min_subnorm
atan2 -min_subnorm min_subnorm
atan2 -min_subnorm -min_subnorm
atan2 1 -max
atan2 -1 -max
atan2 min -max
atan2 -min -max
atan2 min_subnorm -max
atan2 -min_subnorm -max
Fix atan / atan2 missing underflows (bug 15319). This patch fixes bug 15319, missing underflows from atan / atan2 when the result of atan is very close to its small argument (or that of atan2 is very close to the ratio of its arguments, which may be an exact division). The usual approach of doing an underflowing computation if the computed result is subnormal is followed. For 32-bit x86, there are extra complications: the inline __ieee754_atan2 in bits/mathinline.h needs to be disabled for float and double because other libm functions using it generally rely on getting proper underflow exceptions from it, while the out-of-line functions have to remove excess range and precision from the underflowing result so as to return an exact 0 in the case where errno should be set for underflow to 0. (The failures I saw without that are similar to those Carlos reported for other functions, where I haven't seen a response to <https://sourceware.org/ml/libc-alpha/2015-01/msg00485.html> confirming if my diagnosis is correct. Arguably all libm functions with float and double returns should remove excess range and precision, but that's a separate matter.) The x86_64 long double case reported in a comment in bug 15319 is not a bug (it's an argument of LDBL_MIN, and x86_64 is an after-rounding architecture so the correct IEEE result is not to raise underflow in the given rounding mode, in addition to treating the result as an exact LDBL_MIN being within the newly clarified documentation of accuracy goals). I'm presuming that the fpatan instruction can be trusted to raise appropriate exceptions when the (long double) result underflows (after rounding) and so no changes are needed for x86 / x86_64 long double functions here; empirically this is the case for the cases covered in the testsuite, on my system. Tested for x86_64, x86, powerpc and mips64. Only 32-bit x86 needs ulps updates (for the changes to inlines meaning some functions no longer get excess precision from their __ieee754_atan2* calls). [BZ #15319] * sysdeps/i386/fpu/e_atan2.S (dbl_min): New object. (MO): New macro. (__ieee754_atan2): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/e_atan2f.S (flt_min): New object. (MO): New macro. (__ieee754_atan2f): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/s_atan.S (dbl_min): New object. (MO): New macro. (__atan): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/s_atanf.S (flt_min): New object. (MO): New macro. (__atanf): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/ieee754/dbl-64/e_atan2.c: Include <float.h> and <math.h>. (__ieee754_atan2): Force underflow exception for results with small absolute value. * sysdeps/ieee754/dbl-64/s_atan.c: Include <float.h> and <math_private.h>. (atan): Force underflow exception for results with small absolute value. * sysdeps/ieee754/flt-32/s_atanf.c: Include <float.h>. (__atanf): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128/s_atanl.c: Include <float.h> and <math.h>. (__atanl): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128ibm/s_atanl.c: Include <float.h>. (__atanl): Force underflow exception for results with small absolute value. * sysdeps/x86/fpu/bits/mathinline.h [!__SSE2_MATH__ && !__x86_64__ && __LIBC_INTERNAL_MATH_INLINES] (__ieee754_atan2): Only define inline for long double. * sysdeps/x86_64/fpu/multiarch/e_atan2.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Include <math.h>. * math/auto-libm-test-in: Do not mark underflow exceptions as possibly missing for bug 15319. Add more tests of atan2. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (casin_test_data): Do not mark underflow exceptions as possibly missing for bug 15319. (casinh_test_data): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update.
2015-02-18 21:10:49 +00:00
atan2 1 max
atan2 -1 max
atan2 min max
atan2 -min max
atan2 min_subnorm max
atan2 -min_subnorm max
atan2 min 1
atan2 -min 1
atan2 min_subnorm 1
atan2 -min_subnorm 1
atan2 min -1
atan2 -min -1
atan2 min_subnorm -1
atan2 -min_subnorm -1
atanh 0
atanh -0
atanh 0.75
atanh -0.75
atanh 0.25
atanh 0x1p-5
atanh 0x1p-10
atanh 0x1.2345p-20
atanh 0x1p-8
atanh 0x1p-9
atanh 0x1p-10
atanh 0x1p-11
atanh 0x1p-12
atanh 0x1p-13
atanh 0x1p-24
atanh 0x1p-25
atanh 0x1p-26
atanh 0x1p-27
atanh 0x1p-28
atanh 0x1p-29
atanh 0x1p-30
atanh 0x1p-31
atanh 0x1p-32
atanh 0x1p-33
atanh 0x1p-48
atanh 0x1p-49
atanh 0x1p-50
atanh 0x1p-51
atanh 0x1p-52
atanh 0x1p-53
atanh 0x1p-54
atanh 0x1p-55
atanh 0x1p-56
atanh 0x1p-57
atanh 0x1p-58
atanh 0x1p-59
atanh 0x1p-100
# Bug 16352: underflow exception may be missing.
atanh 0x1p-500 missing-underflow
atanh 0x1p-5000 missing-underflow
Relax gen-auto-libm-tests may-underflow rules, test log1p in all rounding modes. gen-auto-libm-tests presently allows but does not require underflow exceptions for results with magnitude in the range (greatest subnormal, least normal]. In some cases, the magnitude of the exact result is very slightly above the least normal, but rounding in the implementation results in it effectively computing an infinite-precision result that is slightly below the least normal, so raising an underflow exception. This is in accordance with the documented accuracy goals, but results in testsuite failures. This patch changes the logic to allow underflows when the mathematical result is up to 0.5ulp above the least normal (so in any case where the round-to-nearest result is the least normal). Ideally underflows in all these cases would be accepted only when an underflow with the actual result is consistent with the rounding mode (in FE_TOWARDZERO mode, a return value of the least normal implies that the infinite-precision result did not underflow so there should be no underflow exception, for example), so as to match the documented goals more precisely - whereas at present the tests for exceptions are completely independent of the tests of the returned values. (The same applies to overflow exceptions as well - they too should be checked for consistency with the result, as in FE_TOWARDZERO mode a result 1ulp below the largest finite value should be inconsistent with an overflow exception and cause a failure with overflow rather than simply being considered a 1ulp error when overflow is expected.) But the present patch at least deals with the cases causing spurious failures so that (a) certain existing tests no longer need to be marked as having spurious exceptions (such markings in auto-libm-test-in end up applying to more cases than just those they are needed for) and (b) log1p can be tested in all rounding modes without introducing more such failures. This patch duly moves tests of log1p to ALL_RM_TEST. Tested x86_64 and x86 and ulps updated accordingly. [BZ #16357] [BZ #16599] * math/gen-auto-libm-tests.c (fp_format_desc): Add field min_plus_half. (fp_formats): Update initializers. (init_fp_formats): Initialize new field. (output_for_one_input_case): Allow underflow for results up to min_plus_half. * math/libm-test.inc (log1p_test): Use ALL_RM_TEST. * math/auto-libm-test-in: Don't mark some underflows from asin and atanh as spurious. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-03-25 12:26:06 +00:00
atanh min missing-underflow
atanh -min missing-underflow
atanh min_subnorm missing-underflow
atanh -min_subnorm missing-underflow
# cabs (x,y) == cabs (y,x).
cabs 0.75 12.390625
# cabs (x,y) == cabs (-x,y).
cabs -12.390625 0.75
# cabs (x,y) == cabs (-y,x).
cabs -0.75 12.390625
# cabs (x,y) == cabs (-x,-y).
cabs -12.390625 -0.75
# cabs (x,y) == cabs (-y,-x).
cabs -0.75 -12.390625
# cabs (x,0) == fabs (x).
cabs -0.75 0
cabs 0.75 0
cabs -1.0 0
cabs 1.0 0
cabs -5.7e7 0
cabs 5.7e7 0
cabs 0.75 1.25
# carg (x + i 0) == 0 for x > 0.
carg 2.0 0
# carg (x - i 0) == -0 for x > 0.
carg 2.0 -0
carg 0 0
carg 0 -0
# carg (x + i 0) == +pi for x < 0.
carg -2.0 0
# carg (x - i 0) == -pi for x < 0.
carg -2.0 -0
carg -0 0
carg -0 -0
# carg (+0 + i y) == pi/2 for y > 0.
carg 0 2.0
# carg (-0 + i y) == pi/2 for y > 0.
carg -0 2.0
# carg (+0 + i y) == -pi/2 for y < 0.
carg 0 -2.0
# carg (-0 + i y) == -pi/2 for y < 0.
carg -0 -2.0
cbrt 0.0
cbrt -0
cbrt -0.001
cbrt 8
cbrt -27.0
cbrt 0.9921875
cbrt 0.75
cbrt 0x1p16383
cbrt 0x1p-16383
cbrt 1e5
cbrt max
cbrt -max
cbrt min
cbrt -min
cbrt min_subnorm
cbrt -min_subnorm
Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc. This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-20 12:32:44 +00:00
ccos 0.0 0.0
ccos -0 0.0
ccos 0.0 -0
ccos -0 -0
ccos 0.75 1.25
ccos -2 -3
ccos 0.75 89.5
ccos 0.75 -89.5
ccos -0.75 89.5
ccos -0.75 -89.5
ccos 0.75 710.5
ccos 0.75 -710.5
ccos -0.75 710.5
ccos -0.75 -710.5
ccos 0.75 11357.25
ccos 0.75 -11357.25
ccos -0.75 11357.25
ccos -0.75 -11357.25
ccos 0x1p-149 180
ccos 0x1p-1074 1440
ccos 0x1p-16434 22730
ccos min_subnorm_p120 0x1p-120
ccos 0x1p-120 min_subnorm_p120
ccosh 0.0 0.0
ccosh -0 0.0
ccosh 0.0 -0
ccosh -0 -0
ccosh 0.75 1.25
ccosh -2 -3
ccosh 89.5 0.75
ccosh -89.5 0.75
ccosh 89.5 -0.75
ccosh -89.5 -0.75
ccosh 710.5 0.75
ccosh -710.5 0.75
ccosh 710.5 -0.75
ccosh -710.5 -0.75
ccosh 11357.25 0.75
ccosh -11357.25 0.75
ccosh 11357.25 -0.75
ccosh -11357.25 -0.75
ccosh 180 0x1p-149
ccosh 1440 0x1p-1074
ccosh 22730 0x1p-16434
ccosh min_subnorm_p120 0x1p-120
ccosh 0x1p-120 min_subnorm_p120
cexp 0 0
cexp -0 0
cexp 0 -0
cexp -0 -0
cexp 0.75 1.25
cexp -2.0 -3.0
cexp 0 0x1p65
cexp 0 -0x1p65
cexp 50 0x1p127
cexp 0 1e22
cexp 0 0x1p1023
cexp 500 0x1p1023
cexp 0 0x1p16383
cexp -10000 0x1p16383
cexp 88.75 0.75
cexp -95 0.75
cexp 709.8125 0.75
cexp -720 0.75
cexp 11356.5625 0.75
cexp -11370 0.75
cexp 180 0x1p-149
cexp 1440 0x1p-1074
cexp 22730 0x1p-16434
cexp 1e6 0
cexp 1e6 min
cexp 1e6 -min
# Bug 16348: spurious underflow may occur.
cexp min min_subnorm spurious-underflow:ldbl-96-intel:x86 spurious-underflow:ldbl-96-intel:x86_64
cexp min -min_subnorm spurious-underflow:ldbl-96-intel:x86 spurious-underflow:ldbl-96-intel:x86_64
clog 0.75 1.25
clog -2 -3
clog 0x1.fffffep+127 0x1.fffffep+127
clog 0x1.fffffep+127 1.0
clog 0x1p-149 0x1p-149
clog 0x1p-147 0x1p-147
clog 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023
clog 0x1.fffffffffffffp+1023 0x1p+1023
clog 0x1p-1074 0x1p-1074
clog 0x1p-1073 0x1p-1073
clog 0x1.fp+16383 0x1.fp+16383
clog 0x1.fp+16383 0x1p+16383
clog 0x1p-16440 0x1p-16441
clog 0x1p-149 0x1.fp+127
clog -0x1p-149 0x1.fp+127
clog 0x1p-149 -0x1.fp+127
clog -0x1p-149 -0x1.fp+127
clog -0x1.fp+127 0x1p-149
clog -0x1.fp+127 -0x1p-149
clog 0x1.fp+127 0x1p-149
clog 0x1.fp+127 -0x1p-149
clog 0x1p-1074 0x1.fp+1023
clog -0x1p-1074 0x1.fp+1023
clog 0x1p-1074 -0x1.fp+1023
clog -0x1p-1074 -0x1.fp+1023
clog -0x1.fp+1023 0x1p-1074
clog -0x1.fp+1023 -0x1p-1074
clog 0x1.fp+1023 0x1p-1074
clog 0x1.fp+1023 -0x1p-1074
clog 0x1p-16445 0x1.fp+16383
clog -0x1p-16445 0x1.fp+16383
clog 0x1p-16445 -0x1.fp+16383
clog -0x1p-16445 -0x1.fp+16383
clog -0x1.fp+16383 0x1p-16445
clog -0x1.fp+16383 -0x1p-16445
clog 0x1.fp+16383 0x1p-16445
clog 0x1.fp+16383 -0x1p-16445
clog 0x1p-16494 0x1.fp+16383
clog -0x1p-16494 0x1.fp+16383
clog 0x1p-16494 -0x1.fp+16383
clog -0x1p-16494 -0x1.fp+16383
clog -0x1.fp+16383 0x1p-16494
clog -0x1.fp+16383 -0x1p-16494
clog 0x1.fp+16383 0x1p-16494
clog 0x1.fp+16383 -0x1p-16494
clog 1.0 0x1.234566p-10
clog -1.0 0x1.234566p-20
clog 0x1.234566p-30 1.0
clog -0x1.234566p-40 -1.0
clog 0x1.234566p-50 1.0
clog 0x1.234566p-60 1.0
clog 0x1p-62 1.0
clog 0x1p-63 1.0
clog 0x1p-64 1.0
clog 0x1p-510 1.0
clog 0x1p-511 1.0
clog 0x1p-512 1.0
clog 0x1p-8190 1.0
clog 0x1p-8191 1.0
clog 0x1p-8192 1.0
clog 0x1.000566p0 0x1.234p-10
clog 0x1.000566p0 0x1.234p-100
clog -0x1.0000000123456p0 0x1.2345678p-30
clog -0x1.0000000123456p0 0x1.2345678p-1000
clog 0x1.00000000000000123456789abcp0 0x1.23456789p-60
clog 0x1.00000000000000123456789abcp0 0x1.23456789p-1000
clog 0x0.ffffffp0 0x0.ffffffp-100
clog 0x0.fffffffffffff8p0 0x0.fffffffffffff8p-1000
clog 0x0.ffffffffffffffffp0 0x0.ffffffffffffffffp-15000
clog 0x1a6p-10 0x3a5p-10
clog 0xf2p-10 0x3e3p-10
clog 0x4d4ep-15 0x6605p-15
clog 0x2818p-15 0x798fp-15
clog 0x9b57bp-20 0xcb7b4p-20
clog 0x2731p-20 0xfffd0p-20
clog 0x2ede88p-23 0x771c3fp-23
clog 0x11682p-23 0x7ffed1p-23
clog 0xa1f2c1p-24 0xc643aep-24
clog 0x659feap-24 0xeaf6f9p-24
clog 0x4447d7175p-35 0x6c445e00ap-35
clog 0x2dd46725bp-35 0x7783a1284p-35
clog 0x164c74eea876p-45 0x16f393482f77p-45
clog 0xfe961079616p-45 0x1bc37e09e6d1p-45
clog 0xa4722f19346cp-51 0x7f9631c5e7f07p-51
clog 0x10673dd0f2481p-51 0x7ef1d17cefbd2p-51
clog 0x8ecbf810c4ae6p-52 0xd479468b09a37p-52
clog 0x5b06b680ea2ccp-52 0xef452b965da9fp-52
clog 0x659b70ab7971bp-53 0x1f5d111e08abecp-53
clog 0x15cfbd1990d1ffp-53 0x176a3973e09a9ap-53
clog 0x1367a310575591p-54 0x3cfcc0a0541f60p-54
clog 0x55cb6d0c83af5p-55 0x7fe33c0c7c4e90p-55
clog 0x298c62cb546588a7p-63 0x7911b1dfcc4ecdaep-63
clog 0x4d9c37e2b5cb4533p-63 0x65c98be2385a042ep-63
clog 0x602fd5037c4792efp-64 0xed3e2086dcca80b8p-64
clog 0x6b10b4f3520217b6p-64 0xe8893cbb449253a1p-64
clog 0x81b7efa81fc35ad1p-65 0x1ef4b835f1c79d812p-65
clog 0x3f96469050f650869c2p-75 0x6f16b2c9c8b05988335p-75
clog 0x3157fc1d73233e580c8p-75 0x761b52ccd435d7c7f5fp-75
clog 0x155f8afc4c48685bf63610p-85 0x17d0cf2652cdbeb1294e19p-85
clog 0x13836d58a13448d750b4b9p-85 0x195ca7bc3ab4f9161edbe6p-85
clog 0x1df515eb171a808b9e400266p-95 0x7c71eb0cd4688dfe98581c77p-95
clog 0xe33f66c9542ca25cc43c867p-95 0x7f35a68ebd3704a43c465864p-95
clog 0x6771f22c64ed551b857c128b4cp-105 0x1f570e7a13cc3cf2f44fd793ea1p-105
clog 0x15d8ab6ed05ca514086ac3a1e84p-105 0x1761e480aa094c0b10b34b09ce9p-105
clog 0x187190c1a334497bdbde5a95f48p-106 0x3b25f08062d0a095c4cfbbc338dp-106
clog 0x6241ef0da53f539f02fad67dabp-106 0x3fb46641182f7efd9caa769dac0p-106
clog 0x3e1d0a105ac4ebeacd9c6952d34cp-112 0xf859b3d1b06d005dcbb5516d5479p-112
clog 0x47017a2e36807acb1e5214b209dep-112 0xf5f4a550c9d75e3bb1839d865f0dp-112
clog 0x148f818cb7a9258fca942ade2a0cap-113 0x18854a34780b8333ec53310ad7001p-113
clog 0xfd95243681c055c2632286921092p-113 0x1bccabcd29ca2152860ec29e34ef7p-113
clog 0xdb85c467ee2aadd5f425fe0f4b8dp-114 0x3e83162a0f95f1dcbf97dddf410eap-114
clog 0x1415bcaf2105940d49a636e98ae59p-115 0x7e6a150adfcd1b0921d44b31f40f4p-115
clog10 0.75 1.25
clog10 -2 -3
clog10 0x1.fffffep+127 0x1.fffffep+127
clog10 0x1.fffffep+127 1.0
clog10 0x1p-149 0x1p-149
clog10 0x1p-147 0x1p-147
clog10 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023
clog10 0x1.fffffffffffffp+1023 0x1p+1023
clog10 0x1p-1074 0x1p-1074
clog10 0x1p-1073 0x1p-1073
clog10 0x1.fp+16383 0x1.fp+16383
clog10 0x1.fp+16383 0x1p+16383
clog10 0x1p-16440 0x1p-16441
clog10 0x1p-149 0x1.fp+127
clog10 -0x1p-149 0x1.fp+127
clog10 0x1p-149 -0x1.fp+127
clog10 -0x1p-149 -0x1.fp+127
clog10 -0x1.fp+127 0x1p-149
clog10 -0x1.fp+127 -0x1p-149
clog10 0x1.fp+127 0x1p-149
clog10 0x1.fp+127 -0x1p-149
clog10 0x1p-1074 0x1.fp+1023
clog10 -0x1p-1074 0x1.fp+1023
clog10 0x1p-1074 -0x1.fp+1023
clog10 -0x1p-1074 -0x1.fp+1023
clog10 -0x1.fp+1023 0x1p-1074
clog10 -0x1.fp+1023 -0x1p-1074
clog10 0x1.fp+1023 0x1p-1074
clog10 0x1.fp+1023 -0x1p-1074
clog10 0x1p-16445 0x1.fp+16383
clog10 -0x1p-16445 0x1.fp+16383
clog10 0x1p-16445 -0x1.fp+16383
clog10 -0x1p-16445 -0x1.fp+16383
clog10 -0x1.fp+16383 0x1p-16445
clog10 -0x1.fp+16383 -0x1p-16445
clog10 0x1.fp+16383 0x1p-16445
clog10 0x1.fp+16383 -0x1p-16445
clog10 0x1p-16494 0x1.fp+16383
clog10 -0x1p-16494 0x1.fp+16383
clog10 0x1p-16494 -0x1.fp+16383
clog10 -0x1p-16494 -0x1.fp+16383
clog10 -0x1.fp+16383 0x1p-16494
clog10 -0x1.fp+16383 -0x1p-16494
clog10 0x1.fp+16383 0x1p-16494
clog10 0x1.fp+16383 -0x1p-16494
clog10 1.0 0x1.234566p-10
clog10 -1.0 0x1.234566p-20
clog10 0x1.234566p-30 1.0
clog10 -0x1.234566p-40 -1.0
clog10 0x1.234566p-50 1.0
clog10 0x1.234566p-60 1.0
clog10 0x1p-61 1.0
clog10 0x1p-62 1.0
clog10 0x1p-63 1.0
clog10 0x1p-509 1.0
clog10 0x1p-510 1.0
clog10 0x1p-511 1.0
clog10 0x1p-8189 1.0
clog10 0x1p-8190 1.0
clog10 0x1p-8191 1.0
clog10 0x1.000566p0 0x1.234p-10
clog10 0x1.000566p0 0x1.234p-100
clog10 -0x1.0000000123456p0 0x1.2345678p-30
clog10 -0x1.0000000123456p0 0x1.2345678p-1000
clog10 0x1.00000000000000123456789abcp0 0x1.23456789p-60
clog10 0x1.00000000000000123456789abcp0 0x1.23456789p-1000
clog10 0x0.ffffffp0 0x0.ffffffp-100
clog10 0x0.fffffffffffff8p0 0x0.fffffffffffff8p-1000
clog10 0x0.ffffffffffffffffp0 0x0.ffffffffffffffffp-15000
clog10 0x1a6p-10 0x3a5p-10
clog10 0xf2p-10 0x3e3p-10
clog10 0x4d4ep-15 0x6605p-15
clog10 0x2818p-15 0x798fp-15
clog10 0x9b57bp-20 0xcb7b4p-20
clog10 0x2731p-20 0xfffd0p-20
clog10 0x2ede88p-23 0x771c3fp-23
clog10 0x11682p-23 0x7ffed1p-23
clog10 0xa1f2c1p-24 0xc643aep-24
clog10 0x659feap-24 0xeaf6f9p-24
clog10 0x4447d7175p-35 0x6c445e00ap-35
clog10 0x2dd46725bp-35 0x7783a1284p-35
clog10 0x164c74eea876p-45 0x16f393482f77p-45
clog10 0xfe961079616p-45 0x1bc37e09e6d1p-45
clog10 0xa4722f19346cp-51 0x7f9631c5e7f07p-51
clog10 0x10673dd0f2481p-51 0x7ef1d17cefbd2p-51
clog10 0x8ecbf810c4ae6p-52 0xd479468b09a37p-52
clog10 0x5b06b680ea2ccp-52 0xef452b965da9fp-52
clog10 0x659b70ab7971bp-53 0x1f5d111e08abecp-53
clog10 0x15cfbd1990d1ffp-53 0x176a3973e09a9ap-53
clog10 0x1367a310575591p-54 0x3cfcc0a0541f60p-54
clog10 0x55cb6d0c83af5p-55 0x7fe33c0c7c4e90p-55
clog10 0x298c62cb546588a7p-63 0x7911b1dfcc4ecdaep-63
clog10 0x4d9c37e2b5cb4533p-63 0x65c98be2385a042ep-63
clog10 0x602fd5037c4792efp-64 0xed3e2086dcca80b8p-64
clog10 0x6b10b4f3520217b6p-64 0xe8893cbb449253a1p-64
clog10 0x81b7efa81fc35ad1p-65 0x1ef4b835f1c79d812p-65
clog10 0x3f96469050f650869c2p-75 0x6f16b2c9c8b05988335p-75
clog10 0x3157fc1d73233e580c8p-75 0x761b52ccd435d7c7f5fp-75
clog10 0x155f8afc4c48685bf63610p-85 0x17d0cf2652cdbeb1294e19p-85
clog10 0x13836d58a13448d750b4b9p-85 0x195ca7bc3ab4f9161edbe6p-85
clog10 0x1df515eb171a808b9e400266p-95 0x7c71eb0cd4688dfe98581c77p-95
clog10 0xe33f66c9542ca25cc43c867p-95 0x7f35a68ebd3704a43c465864p-95
clog10 0x6771f22c64ed551b857c128b4cp-105 0x1f570e7a13cc3cf2f44fd793ea1p-105
clog10 0x15d8ab6ed05ca514086ac3a1e84p-105 0x1761e480aa094c0b10b34b09ce9p-105
clog10 0x187190c1a334497bdbde5a95f48p-106 0x3b25f08062d0a095c4cfbbc338dp-106
clog10 0x6241ef0da53f539f02fad67dabp-106 0x3fb46641182f7efd9caa769dac0p-106
clog10 0x3e1d0a105ac4ebeacd9c6952d34cp-112 0xf859b3d1b06d005dcbb5516d5479p-112
clog10 0x47017a2e36807acb1e5214b209dep-112 0xf5f4a550c9d75e3bb1839d865f0dp-112
clog10 0x148f818cb7a9258fca942ade2a0cap-113 0x18854a34780b8333ec53310ad7001p-113
clog10 0xfd95243681c055c2632286921092p-113 0x1bccabcd29ca2152860ec29e34ef7p-113
clog10 0xdb85c467ee2aadd5f425fe0f4b8dp-114 0x3e83162a0f95f1dcbf97dddf410eap-114
clog10 0x1415bcaf2105940d49a636e98ae59p-115 0x7e6a150adfcd1b0921d44b31f40f4p-115
cos 0
cos -0
cos pi/3
cos 2pi/3
cos pi/2
cos 0.75
cos 0x1p65
cos -0x1p65
cos 0.80190127184058835
cos 0x1.442f74p+15
cos 1e22
cos 0x1p1023
cos 0x1p16383
cos 0x1p+120
cos 0x1p+127
cos 0x1.fffff8p+127
cos 0x1.fffffep+127
cos 0x1p+50
cos 0x1p+28
cos 0x1.000000cf4a2a2p0
cos 0x1.0000010b239a9p0
cos 0x1.00000162a932bp0
cos 0x1.000002d452a10p0
cos 0x1.000005bc7d86dp0
cos 0x1.200145a975ce6p32
cos 1
cos 2
cos 3
cos 4
cos 5
cos 6
cos 7
cos 8
cos 9
cos 10
cos max
cos -max
cos min
cos -min
cos min_subnorm
cos -min_subnorm
cosh 0
cosh -0
cosh 0.75
cosh 709.8893558127259666434838436543941497802734375
cosh -709.8893558127259666434838436543941497802734375
cosh 22
cosh 23
cosh 24
cosh 0x1p-5
cosh 0x1p-20
cosh -1
cosh 50
cosh -0xb.60713p+0
# GCC bug 59666: results on directed rounding may be incorrect.
cosh max no-test-inline xfail-rounding:ldbl-128ibm
cosh -max no-test-inline xfail-rounding:ldbl-128ibm
Fix cosh spurious underflows from expm1 (bug 16354), inaccurate results near 0 (bug 17061). This patch fixes bug 16354, spurious underflows from cosh when a tiny argument is passed to expm1 and expm1 correctly underflows although the final result of cosh should be 1. As noted in that bug, some cases are latent because of expm1 implementations not raising underflow (bug 16353), but all the implementations are fixed similarly. They already contained checks for tiny arguments, but the checks were too late to avoid underflow from expm1 (although they would avoid underflow from subsequent squaring of the result of expm1); they are moved before the expm1 calls. The thresholds used for considering arguments tiny are not particularly consistent in how they relate to the precision of the floating-point format in question. They are, however, all sufficient to ensure that the round-to-nearest result of cosh is indeed 1 below the threshold (although sometimes they are smaller than necessary). But the previous logic did not return 1, but the previously computed 1 + expm1(abs(x)) value. And the thresholds in the ldbl-128 and ldbl-128ibm code (0x1p-71L - I suspect 0x3f8b was intended in the code instead of 0x3fb8 - and (roughly) 0x1p-55L) are not sufficient for that value to be 1. So by moving the test for tiny arguments, and consequently returning 1 directly now the expm1 value hasn't been computed by that point, this patch also fixes bug 17061, the (large number of ulps) inaccuracy for small arguments in those implementations. Tests for that bug are duly added. Tested x86_64 and x86 and ulps updated accordingly. Also tested for mips64 and powerpc32 to validate the ldbl-128 and ldbl-128ibm changes. [BZ #16354] [BZ #17061] * sysdeps/ieee754/dbl-64/e_cosh.c (__ieee754_cosh): Check for small arguments before calling __expm1. * sysdeps/ieee754/flt-32/e_coshf.c (__ieee754_coshf): Check for small arguments before calling __expm1f. * sysdeps/ieee754/ldbl-128/e_coshl.c (__ieee754_coshl): Check for small arguments before calling __expm1l. * sysdeps/ieee754/ldbl-128ibm/e_coshl.c (__ieee754_coshl): Likewise. * sysdeps/ieee754/ldbl-96/e_coshl.c (__ieee754_coshl): Likewise. * math/auto-libm-test-in: Add more cosh tests. Do not allow spurious underflow for some cosh tests. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update.
2014-06-23 20:20:10 +00:00
cosh min
cosh -min
cosh min_subnorm
cosh -min_subnorm
cosh 0x1p-56
cosh -0x1p-56
cosh 0x1p-72
cosh -0x1p-72
# Test values either side of overflow for each floating-point format.
cosh 0x5.96a7ep+4
cosh 0x5.96a7e8p+4
cosh -0x5.96a7ep+4
cosh -0x5.96a7e8p+4
# GCC bug 59666: results on directed rounding may be incorrect.
cosh 0x2.c679d1f73f0fap+8 xfail-rounding:ldbl-128ibm
cosh 0x2.c679d1f73f0fcp+8 xfail-rounding:ldbl-128ibm
cosh -0x2.c679d1f73f0fap+8 xfail-rounding:ldbl-128ibm
cosh -0x2.c679d1f73f0fcp+8 xfail-rounding:ldbl-128ibm
cosh 0x2.c679d1f73f0fb624d358b213a7p+8 xfail-rounding:ldbl-128ibm
cosh 0x2.c679d1f73f0fb624d358b213a8p+8 xfail-rounding:ldbl-128ibm
cosh -0x2.c679d1f73f0fb624d358b213a7p+8 xfail-rounding:ldbl-128ibm
cosh -0x2.c679d1f73f0fb624d358b213a8p+8 xfail-rounding:ldbl-128ibm
cosh 0x2.c5d37700c6bb03a4p+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh 0x2.c5d37700c6bb03a8p+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh -0x2.c5d37700c6bb03a4p+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh -0x2.c5d37700c6bb03a8p+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh 0x2.c5d37700c6bb03a6c24b6c9b494cp+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh -0x2.c5d37700c6bb03a6c24b6c9b494cp+12 no-test-inline xfail-rounding:ldbl-128ibm
cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12 no-test-inline xfail-rounding:ldbl-128ibm
Test cpow in all rounding modes. This patch enables testing of cpow in all rounding modes using ALL_RM_TEST. There were two reasons this was previously deferred: * MPC has complicated rounding-mode-dependent rules for the signs of exact zero real or imaginary parts in the result of mpc_pow. Annex G does not impose any such requirements and I don't think glibc should try to implement any particular logic here. This patch adds support for gen-auto-libm-tests passing the IGNORE_ZERO_INF_SIGN flag to libm-test.inc. * Error accumulations in some tests in non-default rounding modes exceed the maximum error permitted in libm-test.inc. This patch marks the problem tests with xfail-rounding. (It might be possible to reduce the accumulations a bit by using round-to-nearest when cpow calls clog, but I don't think there's much point; the implementation approach for cpow is fundamentally deficient, as discussed in the existing bug for cpow inaccuracy which can reasonably be considered to cover these less-inaccurate cases as well. It's possible that the test "cpow 2 0 10 0" will also need xfail-rounding on some platforms.) Tested x86_64 and x86 and ulps updated accordingly. * math/gen-auto-libm-tests.c: Document use of ignore-zero-inf-sign. (input_flag_type): Add value flag_ignore_zero_inf_sign. (input_flags): Add ignore-zero-inf-sign. (output_for_one_input_case): Handle flag_ignore_zero_inf_sign. * math/gen-libm-test.pl (generate_testfile): Handle ignore-zero-inf-sign. * math/auto-libm-test-in: Mark some cpow tests with ignore-zero-inf-sign and some with xfail-rounding. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (cpow_test): Use ALL_RM_TEST. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-06-23 20:15:14 +00:00
cpow 1 0 0 0 ignore-zero-inf-sign
cpow 2 0 10 0 ignore-zero-inf-sign
# Bug 14473: cpow results inaccurate.
cpow e 0 0 2pi xfail
Test cpow in all rounding modes. This patch enables testing of cpow in all rounding modes using ALL_RM_TEST. There were two reasons this was previously deferred: * MPC has complicated rounding-mode-dependent rules for the signs of exact zero real or imaginary parts in the result of mpc_pow. Annex G does not impose any such requirements and I don't think glibc should try to implement any particular logic here. This patch adds support for gen-auto-libm-tests passing the IGNORE_ZERO_INF_SIGN flag to libm-test.inc. * Error accumulations in some tests in non-default rounding modes exceed the maximum error permitted in libm-test.inc. This patch marks the problem tests with xfail-rounding. (It might be possible to reduce the accumulations a bit by using round-to-nearest when cpow calls clog, but I don't think there's much point; the implementation approach for cpow is fundamentally deficient, as discussed in the existing bug for cpow inaccuracy which can reasonably be considered to cover these less-inaccurate cases as well. It's possible that the test "cpow 2 0 10 0" will also need xfail-rounding on some platforms.) Tested x86_64 and x86 and ulps updated accordingly. * math/gen-auto-libm-tests.c: Document use of ignore-zero-inf-sign. (input_flag_type): Add value flag_ignore_zero_inf_sign. (input_flags): Add ignore-zero-inf-sign. (output_for_one_input_case): Handle flag_ignore_zero_inf_sign. * math/gen-libm-test.pl (generate_testfile): Handle ignore-zero-inf-sign. * math/auto-libm-test-in: Mark some cpow tests with ignore-zero-inf-sign and some with xfail-rounding. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (cpow_test): Use ALL_RM_TEST. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-06-23 20:15:14 +00:00
cpow 2 3 4 0 xfail-rounding
Test cpow in all rounding modes. This patch enables testing of cpow in all rounding modes using ALL_RM_TEST. There were two reasons this was previously deferred: * MPC has complicated rounding-mode-dependent rules for the signs of exact zero real or imaginary parts in the result of mpc_pow. Annex G does not impose any such requirements and I don't think glibc should try to implement any particular logic here. This patch adds support for gen-auto-libm-tests passing the IGNORE_ZERO_INF_SIGN flag to libm-test.inc. * Error accumulations in some tests in non-default rounding modes exceed the maximum error permitted in libm-test.inc. This patch marks the problem tests with xfail-rounding. (It might be possible to reduce the accumulations a bit by using round-to-nearest when cpow calls clog, but I don't think there's much point; the implementation approach for cpow is fundamentally deficient, as discussed in the existing bug for cpow inaccuracy which can reasonably be considered to cover these less-inaccurate cases as well. It's possible that the test "cpow 2 0 10 0" will also need xfail-rounding on some platforms.) Tested x86_64 and x86 and ulps updated accordingly. * math/gen-auto-libm-tests.c: Document use of ignore-zero-inf-sign. (input_flag_type): Add value flag_ignore_zero_inf_sign. (input_flags): Add ignore-zero-inf-sign. (output_for_one_input_case): Handle flag_ignore_zero_inf_sign. * math/gen-libm-test.pl (generate_testfile): Handle ignore-zero-inf-sign. * math/auto-libm-test-in: Mark some cpow tests with ignore-zero-inf-sign and some with xfail-rounding. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (cpow_test): Use ALL_RM_TEST. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-06-23 20:15:14 +00:00
cpow 0.75 1.25 0.75 1.25 xfail-rounding
cpow 0.75 1.25 1.0 1.0 xfail-rounding
cpow 0.75 1.25 1.0 0.0
cpow 0.75 1.25 0.0 1.0
Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc. This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-20 12:32:44 +00:00
csqrt 0 0
csqrt 0 -0
csqrt -0 0
csqrt -0 -0
csqrt 16.0 -30.0
csqrt -1 0
csqrt 0 2
csqrt 119 120
csqrt 0.75 1.25
csqrt -2 -3
csqrt -2 3
# Principal square root should be returned (i.e., non-negative real part).
csqrt 0 -1
csqrt 0x1.fffffep+127 0x1.fffffep+127
csqrt 0x1.fffffep+127 1.0
csqrt 0x1p-149 0x1p-149
csqrt 0x1p-147 0x1p-147
csqrt 0 0x1p-149
csqrt 0x1p-50 0x1p-149
csqrt 0x1p+127 0x1p-149
csqrt 0x1p-149 0x1p+127
csqrt 0x1.000002p-126 0x1.000002p-126
csqrt -0x1.000002p-126 -0x1.000002p-126
csqrt 0x1.fffffffffffffp+1023 0x1.fffffffffffffp+1023
csqrt 0x1.fffffffffffffp+1023 0x1p+1023
csqrt 0x1p-1074 0x1p-1074
csqrt 0x1p-1073 0x1p-1073
csqrt 0 0x1p-1074
csqrt 0x1p-500 0x1p-1074
csqrt 0x1p+1023 0x1p-1074
csqrt 0x1p-1074 0x1p+1023
csqrt 0x1.0000000000001p-1022 0x1.0000000000001p-1022
csqrt -0x1.0000000000001p-1022 -0x1.0000000000001p-1022
csqrt 0x1.fp+16383 0x1.fp+16383
csqrt 0x1.fp+16383 0x1p+16383
csqrt 0x1p-16440 0x1p-16441
csqrt 0 0x1p-16445
csqrt 0x1p-5000 0x1p-16445
csqrt 0x1p+16383 0x1p-16445
csqrt 0x1p-16445 0x1p+16383
csqrt 0x1.0000000000000002p-16382 0x1.0000000000000002p-16382
csqrt -0x1.0000000000000002p-16382 -0x1.0000000000000002p-16382
csqrt 0 0x1p-16494
csqrt 0x1p-5000 0x1p-16494
csqrt 0x1p+16383 0x1p-16494
csqrt 0x1p-16494 0x1p+16383
csqrt 0x1.0000000000000000000000000001p-16382 0x1.0000000000000000000000000001p-16382
csqrt -0x1.0000000000000000000000000001p-16382 -0x1.0000000000000000000000000001p-16382
ctan 0 0
ctan 0 -0
ctan -0 0
ctan -0 -0
ctan 0.75 1.25
ctan -2 -3
ctan 1 45
ctan 1 47
ctan 1 355
ctan 1 365
# GCC bug 59666: results on directed rounding may be incorrect.
ctan 1 5680 xfail-rounding:ldbl-128ibm
ctan 1 5690 xfail-rounding:ldbl-128ibm
Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc. This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-20 12:32:44 +00:00
ctan 0x3.243f6cp-1 0
ctan 0x1p127 1
ctan 0x1p1023 1
ctan 0x1p16383 1
# GCC bug 59666: results on directed rounding may be incorrect.
ctan 50000 50000 xfail-rounding:ldbl-128ibm
ctan 50000 -50000 xfail-rounding:ldbl-128ibm
ctan -50000 50000 xfail-rounding:ldbl-128ibm
ctan -50000 -50000 xfail-rounding:ldbl-128ibm
Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc. This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-20 12:32:44 +00:00
ctan 0x1.921fb6p+0 0x1p-149
ctan 0x1.921fb54442d18p+0 0x1p-1074
ctan 0x1.921fb54442d1846ap+0 0x1p-16445
ctanh 0 0
ctanh 0 -0
ctanh -0 0
ctanh -0 -0
ctanh 0 pi/4
ctanh 0.75 1.25
ctanh -2 -3
ctanh 45 1
ctanh 47 1
ctanh 355 1
ctanh 365 1
# GCC bug 59666: results on directed rounding may be incorrect.
ctanh 5680 1 xfail-rounding:ldbl-128ibm
ctanh 5690 1 xfail-rounding:ldbl-128ibm
Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc. This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-20 12:32:44 +00:00
ctanh 0 0x3.243f6cp-1
ctanh 1 0x1p127
ctanh 1 0x1p1023
ctanh 1 0x1p16383
# GCC bug 59666: results on directed rounding may be incorrect.
ctanh 50000 50000 xfail-rounding:ldbl-128ibm
ctanh 50000 -50000 xfail-rounding:ldbl-128ibm
ctanh -50000 50000 xfail-rounding:ldbl-128ibm
ctanh -50000 -50000 xfail-rounding:ldbl-128ibm
Move various TEST_c_c tests from libm-test.inc to auto-libm-test-inc. This patch moves tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Other TEST_c_c functions aren't moved for now (although the relevant table entries are put in gen-auto-libm-tests for it to know how to handle them): clog10 because of a known MPC bug causing it to hang for at least some pure imaginary inputs (fixed in SVN, but I'd rather not rely on unreleased versions of MPFR or MPC even if relying on very recent releases); the inverse trig and hyperbolic functions because of known slowness in special cases; and csin / csinh because of observed slowness that I need to investigate and report to the MPC maintainers. Slowness can be bypassed by moving to incremental generation (only for new / changed tests) rather than regenerating the whole of auto-libm-test-out every time, but that needs implementing. (This patch takes the time for running gen-auto-libm-tests from about one second to seven, on my system, which I think is reasonable. The slow functions would make it take several minutes at least, which seems unreasonable.) Tested x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add tests of ccos, ccosh, cexp, clog, csqrt, ctan and ctanh. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): New macro. (TEST_COND_x86): Likewise. (ccos_test_data): Use AUTO_TESTS_c_c. (ccosh_test_data): Likewise. (cexp_test_data): Likewise. (clog_test_data): Likewise. (csqrt_test_data): Likewise. (ctan_test_data): Likewise. (ctan_tonearest_test_data): Likewise. (ctan_towardzero_test_data): Likewise. (ctan_downward_test_data): Likewise. (ctan_upward_test_data): Likewise. (ctanh_test_data): Likewise. (ctanh_tonearest_test_data): Likewise. (ctanh_towardzero_test_data): Likewise. (ctanh_downward_test_data): Likewise. (ctanh_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (func_calc_method): Add value mpc_c_c. (func_calc_desc): Add mpc_c_c union field. (FUNC_mpc_c_c): New macro. (test_functions): Add cacos, cacosh, casin, casinh, catan, catanh, ccos, ccosh, cexp, clog, clog10, csin, csinh, csqrt, ctan and ctanh. (special_fill_min_subnorm_p120): New function. (special_real_inputs): Add min_subnorm_p120. (calc_generic_results): Handle mpc_c_c. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-20 12:32:44 +00:00
ctanh 0x1p-149 0x1.921fb6p+0
ctanh 0x1p-1074 0x1.921fb54442d18p+0
ctanh 0x1p-16445 0x1.921fb54442d1846ap+0
erf 0
erf -0
erf 0.125
erf 0.75
erf 1.25
erf 2.0
erf 4.125
erf 27.0
erf -27.0
erf -0x1.fffffffffffff8p-2
Fix erf underflow handling near 0 (bug 16516). Bug 16516 reports spurious underflows from erf (for all floating-point types), when the result is close to underflowing but does not actually underflow. erf (x) is about (2/sqrt(pi))*x for x close to 0, so there are subnormal arguments for which it does not underflow. The various implementations do (x + efx*x) (for efx = 2/sqrt(pi) - 1), for greater accuracy than if just using a single multiplication by an approximation to 2/sqrt(pi) (effectively, this way there are a few more bits in the approximation to 2/sqrt(pi)). This can introduce underflows when efx*x underflows even though the final result does not, so a scaled calculation with 8*efx is done in these cases - but 8 is not a big enough scale factor to avoid all such underflows. 16 is (any underflows with a scale factor of 16 would only occur when the final result underflows), so this patch changes the code to use that factor. Rather than recomputing all the values of the efx8 variable, it is removed, leaving it to the compiler's constant folding to compute 16*efx. As such scaling can also lose underflows when the final scaling down happens to be exact, appropriate checks are added to ensure underflow exceptions occur when required in such cases. Tested x86_64 and x86; no ulps updates needed. Also spot-checked for powerpc32 and mips64 to verify the changes to the ldbl-128ibm and ldbl-128 implementations. [BZ #16516] * sysdeps/ieee754/dbl-64/s_erf.c (efx8): Remove variable. (__erf): Scale by 16 instead of 8 in potentially underflowing case. Ensure exception if result actually underflows. * sysdeps/ieee754/flt-32/s_erff.c (efx8): Remove variable. (__erff): Scale by 16 instead of 8 in potentially underflowing case. Ensure exception if result actually underflows. * sysdeps/ieee754/ldbl-128/s_erfl.c: Include <float.h>. (efx8): Remove variable. (__erfl): Scale by 16 instead of 8 in potentially underflowing case. Ensure exception if result actually underflows. * sysdeps/ieee754/ldbl-128ibm/s_erfl.c: Include <float.h>. (efx8): Remove variable. (__erfl): Scale by 16 instead of 8 in potentially underflowing case. Ensure exception if result actually underflows. * sysdeps/ieee754/ldbl-96/s_erfl.c: Include <float.h>. (efx8): Remove variable. (__erfl): Scale by 16 instead of 8 in potentially underflowing case. Ensure exception if result actually underflows. * math/auto-libm-test-in: Add more tests of erf. * math/auto-libm-test-out: Regenerated.
2014-05-14 12:34:03 +00:00
erf 0x1.c5bf94p-127
erf 0x3.8b7fa8p-128
erf -0x3.8b7f12369ded8p-1024
erf 0x3.8b7f12369ded5518p-16384
erf 26.0
erf 28.0
erf 100
erf 106
erf 106.5
erf 106.625
erf 107
erf 108
erf 1000
erf max
erfc 0.0
erfc -0
erfc 0.125
erfc 0.75
erfc 1.25
erfc 2.0
erfc 0x1.f7303cp+1
erfc 4.125
erfc 0x1.ffa002p+2
erfc 0x1.ffffc8p+2
erfc -0x1.fffffffffffff8p-2
erfc 26.0
erfc 27.0
erfc 28.0
erfc 0x1.ffff56789abcdef0123456789a8p+2
erfc 100
erfc 106
erfc 106.5
erfc 106.625
erfc 107
erfc 108
erfc 1000
erfc max
exp 0
exp -0
exp 1
exp 2
exp 3
exp 0.75
exp 50.0
exp 88.72269439697265625
exp 709.75
# GCC bug 59666: results on directed rounding may be incorrect.
exp 1000.0 xfail-rounding:ldbl-128ibm
exp 710 xfail-rounding:ldbl-128ibm
exp -1234
# GCC bug 59666: results on directed rounding may be incorrect.
exp 0x2.c679d1f73f0fb628p+8 xfail-rounding:ldbl-128ibm
exp 1e5 xfail-rounding:ldbl-128ibm
exp max xfail-rounding:ldbl-128ibm
exp -7.4444006192138124e+02
exp -0x1.75f113c30b1c8p+9
exp -max
exp -11342.8125
exp 0x1p-10
exp -0x1p-10
exp 0x1p-20
exp -0x1p-20
exp 0x1p-30
exp -0x1p-30
exp 0x1p-40
exp -0x1p-40
exp 0x1p-50
exp -0x1p-50
exp 0x1p-60
exp -0x1p-60
exp 0x1p-100
exp -0x1p-100
exp min
exp -min
exp min_subnorm
exp -min_subnorm
exp10 0
exp10 -0
exp10 3
exp10 -1
exp10 36
exp10 -36
exp10 305
exp10 -305
# GCC bug 59666: results on directed rounding may be incorrect.
exp10 4932 xfail-rounding:ldbl-128ibm
Fix x86 / x86_64 expl / expl10l wild results in directed rounding modes (bug 16356). This patch fixes bug 16356, bad results from x86 / x86_64 expl / exp10l in directed rounding modes, the most serious of the bugs shown up by my patch expanding libm test coverage. When I fixed bug 16293, I thought it was only necessary to set round-to-nearest when using frndint in expm1 functions, because in other cases the cancellation error from having the resulting fractional part close to 1 or -1 would not be significant. However, in expl and exp10l, the way the final fractional part gets computed (something more complicated than a simple subtraction, because more precision is needed than you'd get that way) can result in a value outside the range [-1, 1] when the argument to frndint was very close to an integer and was rounded the "wrong" way because of the rounding mode - and the f2xm1 instruction has undefined results if its argument is outside [-1, 1], so resulting in the large errors seen. So this patch removes the USE_AS_EXPM1L conditionals on the round-to-nearest settings, so all of expl, expm1l and exp10l now get round-to-nearest used for frndint (meaning the final fractional part can at most be slightly above 0.5 in magnitude). Associated tests of exp and exp10 are added and testing of exp10 in directed rounding modes enabled. Tested x86_64 and x86 and ulps updated accordingly. * sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL): Also set round-to-nearest for [!USE_AS_EXPM1L]. * sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL): Likewise. * math/auto-libm-test-in: Do not expect cosh tests to fail. Add more tests of exp and exp10. Expect some exp10 tests to miss exceptions or fail in directed rounding modes. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (exp10_tonearest_test_data): New array. (exp10_test_tonearest): New function. (exp10_towardzero_test_data): New array. (exp10_test_towardzero): New function. (exp10_downward_test_data): New array. (exp10_test_downward): New function. (exp10_upward_test_data): New array. (exp10_test_upward): New function. (main): Call the new functions. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-21 13:07:16 +00:00
# Bug 16361: underflow exception may be misssing
exp10 -4932 missing-underflow:ldbl-96-intel:x86 missing-underflow:ldbl-96-intel:x86_64
# GCC bug 59666: results on directed rounding may be incorrect.
exp10 1e5 xfail-rounding:ldbl-128ibm
exp10 -1e5
# GCC bug 59666: results on directed rounding may be incorrect.
exp10 1e6 xfail-rounding:ldbl-128ibm
exp10 -1e6
# GCC bug 59666: results on directed rounding may be incorrect.
exp10 max xfail-rounding:ldbl-128ibm
exp10 -max
exp10 0.75
# GCC bug 59666: results on directed rounding may be incorrect.
exp10 0x1.348e45573a1dd72cp+8 xfail-rounding:ldbl-128ibm
exp10 0x1p-10
exp10 -0x1p-10
exp10 0x1p-20
exp10 -0x1p-20
exp10 0x1p-30
exp10 -0x1p-30
exp10 0x1p-40
exp10 -0x1p-40
exp10 0x1p-50
exp10 -0x1p-50
exp10 0x1p-60
exp10 -0x1p-60
exp10 0x1p-100
exp10 -0x1p-100
exp10 min
exp10 -min
exp10 min_subnorm
exp10 -min_subnorm
exp2 0
exp2 -0
exp2 10
exp2 -1
exp2 1e6
exp2 -1e6
exp2 max
exp2 -max
exp2 0.75
exp2 100.5
exp2 127
exp2 -149
exp2 1000.25
exp2 1023
exp2 -1074
exp2 16383
exp2 -16400
exp2 0x1p-10
exp2 -0x1p-10
exp2 0x1p-20
exp2 -0x1p-20
exp2 0x1p-30
exp2 -0x1p-30
exp2 0x1p-40
exp2 -0x1p-40
exp2 0x1p-50
exp2 -0x1p-50
exp2 0x1p-60
exp2 -0x1p-60
exp2 0x1p-100
exp2 -0x1p-100
exp2 min
exp2 -min
exp2 min_subnorm
exp2 -min_subnorm
expm1 0
expm1 -0
expm1 1
expm1 0.75
expm1 50.0
expm1 127.0
expm1 500.0
# GCC bug 59666: results on directed rounding may be incorrect.
expm1 11356.25 xfail-rounding:ldbl-128ibm
expm1 -10.0
expm1 -16.0
expm1 -17.0
expm1 -18.0
expm1 -36.0
expm1 -37.0
expm1 -38.0
expm1 -44.0
expm1 -45.0
expm1 -46.0
expm1 -73.0
expm1 -74.0
expm1 -75.0
expm1 -78.0
expm1 -79.0
expm1 -80.0
expm1 -100.0
expm1 -1000.0
expm1 -10000.0
expm1 -100000.0
# GCC bug 59666: results on directed rounding may be incorrect.
expm1 100000.0 xfail-rounding:ldbl-128ibm
expm1 max xfail-rounding:ldbl-128ibm
expm1 -max
Fix x86/x86_64 expm1 inaccuracy near 0 in directed rounding modes (bug 16293). Bug 16293 is inaccuracy of x86/x86_64 versions of expm1, near 0 in directed rounding modes, that arises from frndint rounding the exponent to 1 or -1 instead of 0, resulting in large cancellation error. This inaccuracy in turn affects other functions such as sinh that use expm1. This patch fixes the problem by setting round-to-nearest mode temporarily around the affected calls to frndint. I don't think this is needed for other uses of frndint, such as in exp itself, as only for expm1 is the cancellation error significant. Tested x86_64 and x86 and ulps updated accordingly. * sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Set round-to-nearest mode when using frndint. * sysdeps/i386/fpu/s_expm1.S (__expm1): Likewise. * sysdeps/i386/fpu/s_expm1f.S (__expm1f): Likewise. * sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Likewise. * math/auto-libm-test-in: Add more tests of expm1. Do not expect sinh test to fail. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): Remove macro. (TEST_COND_x86): Likewise. (expm1_tonearest_test_data): New array. (expm1_test_tonearest): New function. (expm1_towardzero_test_data): New array. (expm1_test_towardzero): New function. (expm1_downward_test_data): New array. (expm1_test_downward): New function. (expm1_upward_test_data): New array. (expm1_test_upward): New function. (main): Run the new test functions. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-19 13:36:10 +00:00
expm1 0x1p-2
expm1 -0x1p-2
expm1 0x1p-10
expm1 -0x1p-10
expm1 0x1p-20
expm1 -0x1p-20
expm1 0x1p-29
expm1 -0x1p-29
expm1 0x1p-32
expm1 -0x1p-32
expm1 0x1p-50
expm1 -0x1p-50
expm1 0x1p-64
expm1 -0x1p-64
expm1 0x1p-100
expm1 -0x1p-100
# Bug 16353: underflow exception may be missing
expm1 0x4.0000000000000028p-16384 missing-underflow
Move tests of fma from libm-test.inc to auto-libm-test-in. This patch moves tests of fma to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Because fma can have exact zero results depending on the rounding mode, results of fma cannot always be determined from a single value computed in higher precision with a sticky bit. Thus, this patch adds support for recomputing results with the original MPFR/MPC function in the case where an exact zero is involved. (This also affects some results for cpow; when we start testing cpow in all rounding modes, I think it will be most appropriate to make those tests use IGNORE_ZERO_INF_SIGN, since ISO C does not attempt to determine signs of zero results, or special caes in general, for cpow, and I think signs of zero for cpow are beyond the scope of glibc's accuracy goals.) Simply treating the existing test inputs for fma like those for other functions (i.e., as representing the given value rounded up or down to any of the supported floating-point formats) increases the size of auto-libm-test-out by about 16MB (i.e., about half the file is fma test data). While rounded versions of tests are perfectly reasonable test inputs for fma, in this case having them seems excessive, so this patch allows functions to specify in gen-auto-libm-tests that the given test inputs are only to be interpreted exactly, not as corresponding to values rounded up and down. This reduces the size of the generated test data for fma to a more reasonable 2MB. A consequence of this patch is that fma is now tested for correct presence or absence of "inexact" exceptions, where previously this wasn't tested because I didn't want to try to add that test coverage manually to all the existing tests. As far as I know, the existing fma implementations are already correct in this regard. This patch provides the first cases where the gen-auto-libm-tests support for distinguishing before-rounding/after-rounding underflow actually produces separate entries in auto-libm-test-out (for functions without exactly determined results, the affected cases are all considered underflow-optional, so this only affects functions like fma with exactly determined results). I didn't see any signs of problems with this logic in the output. Tested x86_64 and x86. * math/auto-libm-test-in: Add tests of fma. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (fma_test_data): Use AUTO_TESTS_fff_f. (fma_towardzero_test_data): Likewise. (fma_downward_test_data): Likewise. (fma_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (rounding_mode_desc): Add field mpc_mode. (rounding_modes): Add values for new field. (func_calc_method): Add value mpfr_fff_f. (func_calc_desc): Add mpfr_fff_f union field. (test_function): Add field exact_args. (FUNC): Add macro argument EXACT_ARGS. (FUNC_mpfr_f_f): Update call to FUNC. (FUNC_mpfr_f_f): Likewise. (FUNC_mpfr_ff_f): Likewise. (FUNC_mpfr_if_f): Likewise. (FUNC_mpc_c_f): Likewise. (FUNC_mpc_c_c): Likewise. (test_functions): Add fma. Update calls to FUNC. (handle_input_arg): Add argument exact_args. (add_test): Update call to handle_input_arg. (calc_generic_results): Add argument mode. Handle mpfr_fff_f. (output_for_one_input_case): Update call to calc_generic_results. Recalculate exact zero results in each rounding mode.
2014-02-18 21:48:51 +00:00
fma 1.0 2.0 3.0
fma 1.25 0.75 0.0625
fma 0 0 0
fma 0 0 -0
fma 0 -0 0
fma 0 -0 -0
fma -0 0 0
fma -0 0 -0
fma -0 -0 0
fma -0 -0 -0
fma 1.0 0 0
fma 1.0 0 -0
fma 1.0 -0 0
fma 1.0 -0 -0
fma -1.0 0 0
fma -1.0 0 -0
fma -1.0 -0 0
fma -1.0 -0 -0
fma 0 1.0 0
fma 0 1.0 -0
fma 0 -1.0 0
fma 0 -1.0 -0
fma -0 1.0 0
fma -0 1.0 -0
fma -0 -1.0 0
fma -0 -1.0 -0
fma 1.0 1.0 -1.0
fma 1.0 -1.0 1.0
fma -1.0 1.0 1.0
fma -1.0 -1.0 -1.0
fma 0 0 1
fma 0 0 2
fma 0 0 max
fma 0 1 1
fma 1 0 1
fma 0 1 2
fma 1 0 2
fma 0 1 max
fma 1 0 max
Move tests of fma from libm-test.inc to auto-libm-test-in. This patch moves tests of fma to auto-libm-test-in, adding the required support to gen-auto-libm-tests. Because fma can have exact zero results depending on the rounding mode, results of fma cannot always be determined from a single value computed in higher precision with a sticky bit. Thus, this patch adds support for recomputing results with the original MPFR/MPC function in the case where an exact zero is involved. (This also affects some results for cpow; when we start testing cpow in all rounding modes, I think it will be most appropriate to make those tests use IGNORE_ZERO_INF_SIGN, since ISO C does not attempt to determine signs of zero results, or special caes in general, for cpow, and I think signs of zero for cpow are beyond the scope of glibc's accuracy goals.) Simply treating the existing test inputs for fma like those for other functions (i.e., as representing the given value rounded up or down to any of the supported floating-point formats) increases the size of auto-libm-test-out by about 16MB (i.e., about half the file is fma test data). While rounded versions of tests are perfectly reasonable test inputs for fma, in this case having them seems excessive, so this patch allows functions to specify in gen-auto-libm-tests that the given test inputs are only to be interpreted exactly, not as corresponding to values rounded up and down. This reduces the size of the generated test data for fma to a more reasonable 2MB. A consequence of this patch is that fma is now tested for correct presence or absence of "inexact" exceptions, where previously this wasn't tested because I didn't want to try to add that test coverage manually to all the existing tests. As far as I know, the existing fma implementations are already correct in this regard. This patch provides the first cases where the gen-auto-libm-tests support for distinguishing before-rounding/after-rounding underflow actually produces separate entries in auto-libm-test-out (for functions without exactly determined results, the affected cases are all considered underflow-optional, so this only affects functions like fma with exactly determined results). I didn't see any signs of problems with this logic in the output. Tested x86_64 and x86. * math/auto-libm-test-in: Add tests of fma. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (fma_test_data): Use AUTO_TESTS_fff_f. (fma_towardzero_test_data): Likewise. (fma_downward_test_data): Likewise. (fma_upward_test_data): Likewise. * math/gen-auto-libm-tests.c (rounding_mode_desc): Add field mpc_mode. (rounding_modes): Add values for new field. (func_calc_method): Add value mpfr_fff_f. (func_calc_desc): Add mpfr_fff_f union field. (test_function): Add field exact_args. (FUNC): Add macro argument EXACT_ARGS. (FUNC_mpfr_f_f): Update call to FUNC. (FUNC_mpfr_f_f): Likewise. (FUNC_mpfr_ff_f): Likewise. (FUNC_mpfr_if_f): Likewise. (FUNC_mpc_c_f): Likewise. (FUNC_mpc_c_c): Likewise. (test_functions): Add fma. Update calls to FUNC. (handle_input_arg): Add argument exact_args. (add_test): Update call to handle_input_arg. (calc_generic_results): Add argument mode. Handle mpfr_fff_f. (output_for_one_input_case): Update call to calc_generic_results. Recalculate exact zero results in each rounding mode.
2014-02-18 21:48:51 +00:00
# Bug 6801: errno setting may be missing.
fma min min 0 missing-errno
fma min min -0 missing-errno
fma min -min 0 missing-errno
fma min -min -0 missing-errno
fma -min min 0 missing-errno
fma -min min -0 missing-errno
fma -min -min 0 missing-errno
fma -min -min -0 missing-errno
# Bug 6801: errno setting may be missing.
# Bug 13304: results on directed rounding may be incorrect.
fma max max min missing-errno xfail-rounding:ldbl-128ibm
fma max max -min missing-errno xfail-rounding:ldbl-128ibm
fma max -max min missing-errno xfail-rounding:ldbl-128ibm
fma max -max -min missing-errno xfail-rounding:ldbl-128ibm
fma -max max min missing-errno xfail-rounding:ldbl-128ibm
fma -max max -min missing-errno xfail-rounding:ldbl-128ibm
fma -max -max min missing-errno xfail-rounding:ldbl-128ibm
fma -max -max -min missing-errno xfail-rounding:ldbl-128ibm
fma 0x1.7ff8p+13 0x1.000002p+0 0x1.ffffp-24
fma 0x1.fffp+0 0x1.00001p+0 -0x1.fffp+0
fma 0x1.9abcdep+127 0x0.9abcdep-126 -0x1.f08948p+0
fma 0x1.9abcdep+100 0x0.9abcdep-126 -0x1.f08948p-27
fma 0x1.fffffep+127 0x1.001p+0 -0x1.fffffep+127
fma -0x1.fffffep+127 0x1.fffffep+0 0x1.fffffep+127
fma 0x1.fffffep+127 2.0 -0x1.fffffep+127
fma 0x1.4p-126 0x1.000004p-1 0x1p-128
fma -0x1.4p-126 0x1.000004p-1 -0x1p-128
fma 0x1.fffff8p-126 0x1.000002p-1 0x1p-149
fma -0x1.fffff8p-126 0x1.000002p-1 -0x1p-149
fma 0x1p-149 0x1p-1 0x0.fffffep-126
fma -0x1p-149 0x1p-1 -0x0.fffffep-126
fma 0x1p-149 0x1.1p-1 0x0.fffffep-126
fma -0x1p-149 0x1.1p-1 -0x0.fffffep-126
fma 0x1p-149 0x1p-149 0x1p127
fma 0x1p-149 -0x1p-149 0x1p127
fma 0x1p-149 0x1p-149 -0x1p127
fma 0x1p-149 -0x1p-149 -0x1p127
fma 0x1p-149 0x1p-149 0x1p-126
fma 0x1p-149 -0x1p-149 0x1p-126
fma 0x1p-149 0x1p-149 -0x1p-126
fma 0x1p-149 -0x1p-149 -0x1p-126
fma 0x1p-149 0x1p-149 0x0.fffffep-126
fma 0x1p-149 -0x1p-149 0x0.fffffep-126
fma 0x1p-149 0x1p-149 -0x0.fffffep-126
fma 0x1p-149 -0x1p-149 -0x0.fffffep-126
fma 0x1p-149 0x1p-149 0x1p-149
# Bug 6801: errno setting may be missing.
fma 0x1p-149 -0x1p-149 0x1p-149 missing-errno
fma 0x1p-149 0x1p-149 -0x1p-149 missing-errno
fma 0x1p-149 -0x1p-149 -0x1p-149
fma 0x0.fffp0 0x0.fffp0 -0x0.ffep0
fma 0x0.fffp0 -0x0.fffp0 0x0.ffep0
fma -0x0.fffp0 0x0.fffp0 0x0.ffep0
fma -0x0.fffp0 -0x0.fffp0 -0x0.ffep0
fma 0x1.000002p-126 0x1.000002p-26 0x1p127
fma 0x1.000002p-126 -0x1.000002p-26 0x1p127
fma 0x1.000002p-126 0x1.000002p-26 -0x1p127
fma 0x1.000002p-126 -0x1.000002p-26 -0x1p127
fma 0x1.000002p-126 0x1.000002p-26 0x1p103
fma 0x1.000002p-126 -0x1.000002p-26 0x1p103
fma 0x1.000002p-126 0x1.000002p-26 -0x1p103
fma 0x1.000002p-126 -0x1.000002p-26 -0x1p103
fma 0x1.7fp+13 0x1.0000000000001p+0 0x1.ffep-48
fma 0x1.fffp+0 0x1.0000000000001p+0 -0x1.fffp+0
fma 0x1.0000002p+0 0x1.ffffffcp-1 0x1p-300
fma 0x1.0000002p+0 0x1.ffffffcp-1 -0x1p-300
fma 0x1.deadbeef2feedp+1023 0x0.deadbeef2feedp-1022 -0x1.a05f8c01a4bfbp+1
fma 0x1.deadbeef2feedp+900 0x0.deadbeef2feedp-1022 -0x1.a05f8c01a4bfbp-122
fma 0x1.fffffffffffffp+1023 0x1.001p+0 -0x1.fffffffffffffp+1023
fma -0x1.fffffffffffffp+1023 0x1.fffffffffffffp+0 0x1.fffffffffffffp+1023
fma 0x1.fffffffffffffp+1023 2.0 -0x1.fffffffffffffp+1023
# Bug 6801: errno setting may be missing.
fma 0x1.6a09e667f3bccp-538 0x1.6a09e667f3bccp-538 0.0 missing-errno
fma 0x1.deadbeef2feedp-495 0x1.deadbeef2feedp-495 -0x1.bf86a5786a574p-989
fma 0x1.deadbeef2feedp-503 0x1.deadbeef2feedp-503 -0x1.bf86a5786a574p-1005
fma 0x1p-537 0x1p-538 0x1p-1074
fma 0x1.7fffff8p-968 0x1p-106 0x0.000001p-1022
fma 0x1.4000004p-967 0x1p-106 0x0.000001p-1022
fma 0x1.4p-967 -0x1p-106 -0x0.000001p-1022
fma -0x1.19cab66d73e17p-959 0x1.c7108a8c5ff51p-107 -0x0.80b0ad65d9b64p-1022
fma -0x1.d2eaed6e8e9d3p-979 -0x1.4e066c62ac9ddp-63 -0x0.9245e6b003454p-1022
fma 0x1.153d650bb9f06p-907 0x1.2d01230d48407p-125 -0x0.b278d5acfc3cp-1022
fma -0x1.fffffffffffffp-711 0x1.fffffffffffffp-275 0x1.fffffe00007ffp-983
fma 0x1.4p-1022 0x1.0000000000002p-1 0x1p-1024
fma -0x1.4p-1022 0x1.0000000000002p-1 -0x1p-1024
fma 0x1.ffffffffffffcp-1022 0x1.0000000000001p-1 0x1p-1074
fma -0x1.ffffffffffffcp-1022 0x1.0000000000001p-1 -0x1p-1074
fma 0x1p-1074 0x1p-1 0x0.fffffffffffffp-1022
fma -0x1p-1074 0x1p-1 -0x0.fffffffffffffp-1022
fma 0x1p-1074 0x1.1p-1 0x0.fffffffffffffp-1022
fma -0x1p-1074 0x1.1p-1 -0x0.fffffffffffffp-1022
fma 0x1p-1074 0x1p-1074 0x1p1023
fma 0x1p-1074 -0x1p-1074 0x1p1023
fma 0x1p-1074 0x1p-1074 -0x1p1023
fma 0x1p-1074 -0x1p-1074 -0x1p1023
fma 0x1p-1074 0x1p-1074 0x1p-1022
fma 0x1p-1074 -0x1p-1074 0x1p-1022
fma 0x1p-1074 0x1p-1074 -0x1p-1022
fma 0x1p-1074 -0x1p-1074 -0x1p-1022
fma 0x1p-1074 0x1p-1074 0x0.fffffffffffffp-1022
fma 0x1p-1074 -0x1p-1074 0x0.fffffffffffffp-1022
fma 0x1p-1074 0x1p-1074 -0x0.fffffffffffffp-1022
fma 0x1p-1074 -0x1p-1074 -0x0.fffffffffffffp-1022
fma 0x1p-1074 0x1p-1074 0x1p-1074
# Bug 6801: errno setting may be missing.
fma 0x1p-1074 -0x1p-1074 0x1p-1074 missing-errno
fma 0x1p-1074 0x1p-1074 -0x1p-1074 missing-errno
fma 0x1p-1074 -0x1p-1074 -0x1p-1074
fma 0x0.fffffffffffff8p0 0x0.fffffffffffff8p0 -0x0.fffffffffffffp0
fma 0x0.fffffffffffff8p0 -0x0.fffffffffffff8p0 0x0.fffffffffffffp0
fma -0x0.fffffffffffff8p0 0x0.fffffffffffff8p0 0x0.fffffffffffffp0
fma -0x0.fffffffffffff8p0 -0x0.fffffffffffff8p0 -0x0.fffffffffffffp0
fma 0x1.0000000000001p-1022 0x1.0000000000001p-55 0x1p1023
fma 0x1.0000000000001p-1022 -0x1.0000000000001p-55 0x1p1023
fma 0x1.0000000000001p-1022 0x1.0000000000001p-55 -0x1p1023
fma 0x1.0000000000001p-1022 -0x1.0000000000001p-55 -0x1p1023
fma 0x1.0000000000001p-1022 0x1.0000000000001p-55 0x1p970
fma 0x1.0000000000001p-1022 -0x1.0000000000001p-55 0x1p970
fma 0x1.0000000000001p-1022 0x1.0000000000001p-55 -0x1p970
fma 0x1.0000000000001p-1022 -0x1.0000000000001p-55 -0x1p970
fma -0x8.03fcp+3696 0xf.fffffffffffffffp-6140 0x8.3ffffffffffffffp-2450
fma 0x9.fcp+2033 -0x8.000e1f000ff800fp-3613 -0xf.fffffffffffc0ffp-1579
fma 0xc.7fc000003ffffffp-1194 0x8.1e0003fffffffffp+15327 -0x8.fffep+14072
fma -0x8.0001fc000000003p+1798 0xcp-2230 0x8.f7e000000000007p-468
fma 0xc.0000000000007ffp+10130 -0x8.000000000000001p+4430 0xc.07000000001ffffp+14513
fma 0xb.ffffp-4777 0x8.000000fffffffffp-11612 -0x0.3800fff8p-16385
fma 0x1.4p-16382 0x1.0000000000000004p-1 0x1p-16384
fma -0x1.4p-16382 0x1.0000000000000004p-1 -0x1p-16384
fma 0x1.fffffffffffffff8p-16382 0x1.0000000000000002p-1 0x1p-16445
fma -0x1.fffffffffffffff8p-16382 0x1.0000000000000002p-1 -0x1p-16445
fma 0x1p-16445 0x1p-1 0x0.fffffffffffffffep-16382
fma -0x1p-16445 0x1p-1 -0x0.fffffffffffffffep-16382
fma 0x1p-16445 0x1.1p-1 0x0.fffffffffffffffep-16382
fma -0x1p-16445 0x1.1p-1 -0x0.fffffffffffffffep-16382
fma 0x1p-16445 0x1p-16445 0x1p16383
fma 0x1p-16445 -0x1p-16445 0x1p16383
fma 0x1p-16445 0x1p-16445 -0x1p16383
fma 0x1p-16445 -0x1p-16445 -0x1p16383
fma 0x1p-16445 0x1p-16445 0x1p-16382
fma 0x1p-16445 -0x1p-16445 0x1p-16382
fma 0x1p-16445 0x1p-16445 -0x1p-16382
fma 0x1p-16445 -0x1p-16445 -0x1p-16382
fma 0x1p-16445 0x1p-16445 0x0.fffffffffffffffep-16382
fma 0x1p-16445 -0x1p-16445 0x0.fffffffffffffffep-16382
fma 0x1p-16445 0x1p-16445 -0x0.fffffffffffffffep-16382
fma 0x1p-16445 -0x1p-16445 -0x0.fffffffffffffffep-16382
fma 0x1p-16445 0x1p-16445 0x1p-16445
# Bug 6801: errno setting may be missing.
fma 0x1p-16445 -0x1p-16445 0x1p-16445 missing-errno
fma 0x1p-16445 0x1p-16445 -0x1p-16445 missing-errno
fma 0x1p-16445 -0x1p-16445 -0x1p-16445
fma 0x0.ffffffffffffffffp0 0x0.ffffffffffffffffp0 -0x0.fffffffffffffffep0
fma 0x0.ffffffffffffffffp0 -0x0.ffffffffffffffffp0 0x0.fffffffffffffffep0
fma -0x0.ffffffffffffffffp0 0x0.ffffffffffffffffp0 0x0.fffffffffffffffep0
fma -0x0.ffffffffffffffffp0 -0x0.ffffffffffffffffp0 -0x0.fffffffffffffffep0
fma 0x1.0000000000000002p-16382 0x1.0000000000000002p-66 0x1p16383
fma 0x1.0000000000000002p-16382 -0x1.0000000000000002p-66 0x1p16383
fma 0x1.0000000000000002p-16382 0x1.0000000000000002p-66 -0x1p16383
fma 0x1.0000000000000002p-16382 -0x1.0000000000000002p-66 -0x1p16383
fma 0x1.0000000000000002p-16382 0x1.0000000000000002p-66 0x1p16319
fma 0x1.0000000000000002p-16382 -0x1.0000000000000002p-66 0x1p16319
fma 0x1.0000000000000002p-16382 0x1.0000000000000002p-66 -0x1p16319
fma 0x1.0000000000000002p-16382 -0x1.0000000000000002p-66 -0x1p16319
fma 0x1.bb2de33e02ccbbfa6e245a7c1f71p-2584 -0x1.6b500daf0580d987f1bc0cadfcddp-13777 0x1.613cd91d9fed34b33820e5ab9d8dp-16378
fma -0x1.f949b880cacb0f0c61540105321dp-5954 -0x1.3876cec84b4140f3bd6198731b7ep-10525 -0x0.a5dc1c6cfbc498c54fb0b504bf19p-16382
fma -0x1.0000fffffffffp-16221 0x1.0000001fffff8007fep-239 0x0.ff87ffffffffffffe000003fffffp-16382
fma -0x1.ac79c9376ef447f3827c9e9de008p-2228 -0x1.5ba830022b6139e21fbe7270cad8p-6314 0x1.e8282b6a26bb6a9daf5c8e73e9f9p-8616
fma -0x1.c69749ec574caaa2ab8e97ddb9f3p+2652 0x1.f34235ff9d095449c29b4831b62dp+3311 0x1.fbe4302df23354dbd0c4d3cfe606p+5879
fma -0x1.ca8835fc6ecfb5398625fc891be5p-1686 0x1.621e1972bbe2180e5be9dd7d8df5p-7671 -0x1.7d2d21b73b52cf20dec2a83902a4p-9395
fma -0x1.55cff679ec49c2541fab41fc843ep-11819 0x1.e60e9f464f9e8df0509647c7c971p+12325 0x1.eaa2a7649d765c2f564f7a5beca7p+454
fma 0x1.f0e7b1454908576f2537d863cf9bp+11432 0x1.cdce52f09d4ca76e68706f34b5d5p-1417 -0x1.2e986187c70f146235ea2066e486p+9979
fma 0x1.f102f7da4a57a3a4aab620e29452p-3098 -0x1.cc06a4ff40248f9e2dcc4b6afd84p-11727 0x1.d512a11126b5ac8ed8973b8580c8p-14849
fma -0x1.fc47ac7434b993cd8dcb2b431f25p-3816 0x1.fbc9750da8468852d84558e1db6dp-5773 -0x1.00a98abf783f75c40fe5b7a37d86p-9607
fma 0x1.00000000000007ffffffffffffffp-9045 -0x1.ffffffffffff80000001ffffffffp+4773 -0x1.f8p-4316
fma 0x1.4e922764c90701d4a2f21d01893dp-8683 -0x1.955a12e2d7c9447c27fa022fc865p+212 -0x1.e9634462eaef96528b90b6944578p-8521
fma 0x1.801181509c03bdbef10d6165588cp-15131 0x1.ad86f8e57d3d40bfa8007780af63p-368 -0x1.6e9df0dab1c9f1d7a6043c390741p-15507
fma 0x1.ffffffffffffffp0 0x1.000000000000008p0 -0x1p-1000
fma 0x1.4p-16382 0x1.0000000000000000000000000002p-1 0x1p-16384
fma -0x1.4p-16382 0x1.0000000000000000000000000002p-1 -0x1p-16384
fma 0x1.fffffffffffffffffffffffffffcp-16382 0x1.0000000000000000000000000001p-1 0x1p-16494
fma -0x1.fffffffffffffffffffffffffffcp-16382 0x1.0000000000000000000000000001p-1 -0x1p-16494
fma 0x1p-16494 0x1p-1 0x0.ffffffffffffffffffffffffffffp-16382
fma -0x1p-16494 0x1p-1 -0x0.ffffffffffffffffffffffffffffp-16382
fma 0x1p-16494 0x1.1p-1 0x0.ffffffffffffffffffffffffffffp-16382
fma -0x1p-16494 0x1.1p-1 -0x0.ffffffffffffffffffffffffffffp-16382
fma 0x1p-16494 0x1p-16494 0x1p16383
fma 0x1p-16494 -0x1p-16494 0x1p16383
fma 0x1p-16494 0x1p-16494 -0x1p16383
fma 0x1p-16494 -0x1p-16494 -0x1p16383
fma 0x1p-16494 0x1p-16494 0x1p-16382
fma 0x1p-16494 -0x1p-16494 0x1p-16382
fma 0x1p-16494 0x1p-16494 -0x1p-16382
fma 0x1p-16494 -0x1p-16494 -0x1p-16382
fma 0x1p-16494 0x1p-16494 0x0.ffffffffffffffffffffffffffffp-16382
fma 0x1p-16494 -0x1p-16494 0x0.ffffffffffffffffffffffffffffp-16382
fma 0x1p-16494 0x1p-16494 -0x0.ffffffffffffffffffffffffffffp-16382
fma 0x1p-16494 -0x1p-16494 -0x0.ffffffffffffffffffffffffffffp-16382
fma 0x1p-16494 0x1p-16494 0x1p-16494
# Bug 6801: errno setting may be missing.
fma 0x1p-16494 -0x1p-16494 0x1p-16494 missing-errno
fma 0x1p-16494 0x1p-16494 -0x1p-16494 missing-errno
fma 0x1p-16494 -0x1p-16494 -0x1p-16494
fma 0x0.ffffffffffffffffffffffffffff8p0 0x0.ffffffffffffffffffffffffffff8p0 -0x0.ffffffffffffffffffffffffffffp0
fma 0x0.ffffffffffffffffffffffffffff8p0 -0x0.ffffffffffffffffffffffffffff8p0 0x0.ffffffffffffffffffffffffffffp0
fma -0x0.ffffffffffffffffffffffffffff8p0 0x0.ffffffffffffffffffffffffffff8p0 0x0.ffffffffffffffffffffffffffffp0
fma -0x0.ffffffffffffffffffffffffffff8p0 -0x0.ffffffffffffffffffffffffffff8p0 -0x0.ffffffffffffffffffffffffffffp0
fma 0x1.0000000000000000000000000001p-16382 0x1.0000000000000000000000000001p-66 0x1p16383
fma 0x1.0000000000000000000000000001p-16382 -0x1.0000000000000000000000000001p-66 0x1p16383
fma 0x1.0000000000000000000000000001p-16382 0x1.0000000000000000000000000001p-66 -0x1p16383
fma 0x1.0000000000000000000000000001p-16382 -0x1.0000000000000000000000000001p-66 -0x1p16383
fma 0x1.0000000000000000000000000001p-16382 0x1.0000000000000000000000000001p-66 0x1p16319
fma 0x1.0000000000000000000000000001p-16382 -0x1.0000000000000000000000000001p-66 0x1p16319
fma 0x1.0000000000000000000000000001p-16382 0x1.0000000000000000000000000001p-66 -0x1p16319
fma 0x1.0000000000000000000000000001p-16382 -0x1.0000000000000000000000000001p-66 -0x1p16319
hypot 0 0
hypot 0 -0
hypot -0 0
hypot -0 -0
# hypot (x,y) == hypot (+-x, +-y).
hypot 0.7 12.4
hypot -0.7 12.4
hypot 0.7 -12.4
hypot -0.7 -12.4
hypot 12.4 0.7
hypot -12.4 0.7
hypot 12.4 -0.7
hypot -12.4 -0.7
# hypot (x,0) == fabs (x).
hypot 0.75 0
hypot -0.75 0
hypot -5.7e7 0
hypot 0.75 1.25
hypot 1.0 0x1p-61
hypot 0x1p+0 0x1.fp-129
hypot 0x1.23456789abcdef0123456789ab8p-500 0x1.23456789abcdef0123456789ab8p-500
hypot 0x3p125 0x4p125 no-test-inline:flt-32
hypot 0x1.234566p-126 0x1.234566p-126 no-test-inline:flt-32
hypot 0x3p1021 0x4p1021 no-test-inline:dbl-64
hypot 0x1p+0 0x0.3ep-1022 no-test-inline:dbl-64
hypot 0x3p16381 0x4p16381 no-test-inline
hypot 0x1p-149 0x1p-149
hypot 0x1p-1074 0x1p-1074
hypot 0x1p-16445 0x1p-16445 no-test-inline
hypot 0x1p-16494 0x1p-16494 no-test-inline
hypot 0x0.fffffep-126 0x0.fp-127
hypot 0x0.fffffep-126 0x0.fp-130
hypot 0x0.fffffffffffffp-1022 0x0.fp-1023
hypot 0x0.fffffffffffffp-1022 0x0.fp-1026
hypot 0x0.ffffffp-16382 0x0.fp-16383 no-test-inline
hypot 0x0.ffffffp-16382 0x0.fp-16386 no-test-inline
hypot 0 min_subnorm no-test-inline
j0 -1.0
j0 0.0
j0 0.125
j0 0.75
j0 1.0
j0 1.5
j0 2.0
j0 8.0
j0 10.0
j0 4.0
j0 -4.0
j0 0x1.d7ce3ap+107
j0 -0x1.001000001p+593
j0 0x1p1023
j0 0x1p16382
j0 0x1p16383
j1 -1.0
j1 0.0
j1 0.125
j1 0.75
j1 1.0
j1 1.5
j1 2.0
j1 8.0
j1 10.0
j1 0x1.3ffp+74
j1 0x1.ff00000000002p+840
j1 0x1p1023
j1 0x1p16382
j1 0x1p16383
# jn (0, x) == j0 (x).
jn 0 -1.0
jn 0 0.0
jn 0 0.125
jn 0 0.75
jn 0 1.0
jn 0 1.5
jn 0 2.0
jn 0 8.0
jn 0 10.0
jn 0 4.0
jn 0 -4.0
# jn (1, x) == j1 (x).
jn 1 -1.0
jn 1 0.0
jn 1 0.125
jn 1 0.75
jn 1 1.0
jn 1 1.5
jn 1 2.0
jn 1 8.0
jn 1 10.0
jn 3 -1.0
jn 3 0.0
jn 3 0.125
jn 3 0.75
jn 3 1.0
jn 3 2.0
jn 3 10.0
jn 10 -1.0
jn 10 0.0
jn 10 0.125
jn 10 0.75
jn 10 1.0
jn 10 2.0
jn 10 10.0
jn 2 2.4048255576957729
jn 3 2.4048255576957729
jn 4 2.4048255576957729
jn 5 2.4048255576957729
jn 6 2.4048255576957729
jn 7 2.4048255576957729
jn 8 2.4048255576957729
jn 9 2.4048255576957729
jn 2 0x1.ffff62p+99
jn 2 0x1p127
jn 2 0x1p1023
jn 2 0x1p16383
lgamma max
lgamma 1
lgamma 3
lgamma 0.5
lgamma -0.5
lgamma 0.7
lgamma 1.2
lgamma 0x1p-5
lgamma -0x1p-5
lgamma 0x1p-10
lgamma -0x1p-10
lgamma 0x1p-15
lgamma -0x1p-15
lgamma 0x1p-20
lgamma -0x1p-20
lgamma 0x1p-25
lgamma -0x1p-25
lgamma 0x1p-30
lgamma -0x1p-30
lgamma 0x1p-40
lgamma -0x1p-40
lgamma 0x1p-50
lgamma -0x1p-50
lgamma 0x1p-60
lgamma -0x1p-60
lgamma 0x1p-64
lgamma -0x1p-64
lgamma 0x1p-70
lgamma -0x1p-70
lgamma 0x1p-100
lgamma -0x1p-100
lgamma 0x1p-126
lgamma -0x1p-126
lgamma 0x1p-149
lgamma -0x1p-149
lgamma 0x1p-200
lgamma -0x1p-200
lgamma 0x1p-500
lgamma -0x1p-500
lgamma 0x1p-1000
lgamma -0x1p-1000
lgamma 0x1p-1022
lgamma -0x1p-1022
lgamma 0x1p-1074
lgamma -0x1p-1074
lgamma 0x1p-5000
lgamma -0x1p-5000
lgamma 0x1p-10000
lgamma -0x1p-10000
lgamma 0x1p-16382
lgamma -0x1p-16382
lgamma 0x1p-16445
lgamma -0x1p-16445
lgamma 0x1p-16494
lgamma -0x1p-16494
log 1
log e
log 1/e
log 2
log 10
log 0.75
log min
log min_subnorm
log10 1
log10 0.1
log10 10.0
log10 100.0
log10 10000.0
log10 e
log10 0.75
log10 min
log10 min_subnorm
log1p 0
log1p -0
log1p e-1
log1p -0.25
log1p -0.875
# Bug 16339: underflow exception may be missing.
log1p min missing-underflow
log1p min_subnorm missing-underflow
log1p -min missing-underflow
log1p -min_subnorm missing-underflow
log1p 0x1p10
log1p 0x1p20
log1p 0x1p30
log1p 0x1p50
log1p 0x1p60
log1p 0x1p100
log1p 0x1p1000
log1p max
log2 1
log2 e
log2 2.0
log2 16.0
log2 256.0
log2 0.75
Add more tests of log2. In testing for x86_64 on an AMD processor, I observed libm test failures of the form: testing long double (without inline functions) Failure: Test: log2_downward (0x2.b7e151628aed4p+0) Result: is: 1.44269504088896356633e+00 0xb.8aa3b295c17f67600000p-3 should be: 1.44269504088896356622e+00 0xb.8aa3b295c17f67500000p-3 difference: 1.08420217248550443400e-19 0x8.00000000000000000000p-66 ulp : 1.0000 max.ulp : 0.0000 Maximal error of `log2_downward' is : 1 ulp accepted: 0 ulp These issues arise because the maximum ulps when regenerating on one processor are not the same as on another processor, so regeneration on several processors may be needed when updating libm-test-ulps to avoid failures for some users testing glibc - but such regeneration on multiple processors is inconvenient. Causes can be: on x86 and, for x86_64, for long double, variation in results of x87 instructions for transcendental operations between processors; on x86, variation in compiler excess precision between compiler versions and configurations; on any processor where the compiler may contract expressions using fused multiply-add, variation in what contraction occurs. Although it's hard to be sure libm-test-ulps covers all ulps that may be seen in any configuration for the given architecture, in practice it helps simply to add wider test coverage to make it more likely that, when testing on one processor, the ulps seen are the biggest that can be seen for that function on that processor, and hopefully they are also the biggest that can be seen for that function in other configurations for that architecture. Thus, this patch adds some tests of log2 that increase the ulps I see on x86_64 on an Intel processor, so that hopefully future from-scratch regenerations on that processor will produce ulps big enough not to have errors from testing on AMD processors. These tests were found by randomly generating inputs and seeing what produced ulps larger than those currently in libm-test-ulps. Of course such increases also improve the accuracy of the empirical table of known ulps generated from libm-test-ulps files that goes in the manual. Tested for x86_64 and x86 and ulps updated accordingly. * math/auto-libm-test-in: Add more tests of log2. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2015-03-24 23:06:28 +00:00
log2 0x1.28d3b4p+0
log2 0xe.d99dap-4
log2 0x1.63d202d04392cp+0
log2 0xf.d9ce0b1a50e08p-4
log2 0x1.07465bdc7e41b52ep+0
log2 0xf.4dfb4p-48
log2 min
log2 min_subnorm
pow 0 0
pow 0 -0
pow -0 0
pow -0 -0
pow 10 0
pow 10 -0
pow -10 0
pow -10 -0
pow 1 1
pow 1 -1
pow 1 1.25
pow 1 -1.25
pow 1 0x1p62
pow 1 0x1p63
pow 1 0x1p64
pow 1 0x1p72
pow 1 min_subnorm
pow 1 -min_subnorm
# pow (x, +-0) == 1.
pow 32.75 0
pow 32.75 -0
pow -32.75 0
pow -32.75 -0
pow 0x1p72 0
pow 0x1p72 -0
pow 0x1p-72 0
pow 0x1p-72 -0
pow 0x1p72 0x1p72
pow 10 -0x1p72
pow max max
pow 10 -max
pow 0 1
pow 0 11
pow -0 1
pow -0 11
pow 0 2
pow 0 11.1
pow -0 2
pow -0 11.1
# pow (+0, y) == +0 for y an odd integer > 0.
pow 0.0 27
pow 0.0 0xffffff
pow 0.0 0x1.fffffffffffffp+52
pow 0.0 0x1.fffffffffffffffep+63
pow 0.0 0x1.ffffffffffffffffffffffffff8p+105
pow 0.0 0x1.ffffffffffffffffffffffffffffp+112
# pow (-0, y) == -0 for y an odd integer > 0.
pow -0 27
pow -0 0xffffff
pow -0 0x1fffffe
pow -0 0x1.fffffffffffffp+52
pow -0 0x1.fffffffffffffp+53
pow -0 0x1.fffffffffffffffep+63
pow -0 0x1.fffffffffffffffep+64
pow -0 0x1.ffffffffffffffffffffffffff8p+105
pow -0 0x1.ffffffffffffffffffffffffff8p+106
pow -0 0x1.ffffffffffffffffffffffffffffp+112
pow -0 0x1.ffffffffffffffffffffffffffffp+113
# pow (+0, y) == +0 for y > 0 and not an odd integer.
pow 0.0 4
pow 0.0 0x1p24
pow 0.0 0x1p127
pow 0.0 max
pow 0.0 min_subnorm
# pow (-0, y) == +0 for y > 0 and not an odd integer.
pow -0 4
pow -0 0x1p24
pow -0 0x1p127
pow -0 max
pow -0 min_subnorm
pow 16 0.25
pow 0x1p64 0.125
pow 2 4
pow 256 8
pow 0.75 1.25
pow -7.49321e+133 -9.80818e+16
pow -1.0 -0xffffff
pow -1.0 -0x1fffffe
pow -1.0 -0x1.fffffffffffffp+52
pow -1.0 -0x1.fffffffffffffp+53
pow -1.0 -0x1.fffffffffffffffep+63
pow -1.0 -0x1.fffffffffffffffep+64
pow -1.0 -0x1.ffffffffffffffffffffffffff8p+105
pow -1.0 -0x1.ffffffffffffffffffffffffff8p+106
pow -1.0 -0x1.ffffffffffffffffffffffffffffp+112
pow -1.0 -0x1.ffffffffffffffffffffffffffffp+113
pow -1.0 -max
pow -1.0 0xffffff
pow -1.0 0x1fffffe
pow -1.0 0x1.fffffffffffffp+52
pow -1.0 0x1.fffffffffffffp+53
pow -1.0 0x1.fffffffffffffffep+63
pow -1.0 0x1.fffffffffffffffep+64
pow -1.0 0x1.ffffffffffffffffffffffffff8p+105
pow -1.0 0x1.ffffffffffffffffffffffffff8p+106
pow -1.0 0x1.ffffffffffffffffffffffffffffp+112
pow -1.0 0x1.ffffffffffffffffffffffffffffp+113
pow -1.0 max
pow -2.0 126
pow -2.0 127
pow -2.0 -126
pow -2.0 -127
pow -2.0 -0xffffff
pow -2.0 -0x1fffffe
pow -2.0 -0x1.fffffffffffffp+52
pow -2.0 -0x1.fffffffffffffp+53
pow -2.0 -0x1.fffffffffffffffep+63
pow -2.0 -0x1.fffffffffffffffep+64
pow -2.0 -0x1.ffffffffffffffffffffffffff8p+105
pow -2.0 -0x1.ffffffffffffffffffffffffff8p+106
pow -2.0 -0x1.ffffffffffffffffffffffffffffp+112
pow -2.0 -0x1.ffffffffffffffffffffffffffffp+113
pow -2.0 -max
pow -2.0 0xffffff
pow -2.0 0x1fffffe
pow -2.0 0x1.fffffffffffffp+52
pow -2.0 0x1.fffffffffffffp+53
pow -2.0 0x1.fffffffffffffffep+63
pow -2.0 0x1.fffffffffffffffep+64
pow -2.0 0x1.ffffffffffffffffffffffffff8p+105
pow -2.0 0x1.ffffffffffffffffffffffffff8p+106
pow -2.0 0x1.ffffffffffffffffffffffffffffp+112
pow -2.0 0x1.ffffffffffffffffffffffffffffp+113
pow -2.0 max
pow -max -2
pow -max -3
pow -max 2
pow -max 3
pow -max -0xffffff
pow -max -0x1fffffe
pow -max -0x1.fffffffffffffp+52
pow -max -0x1.fffffffffffffp+53
pow -max -0x1.fffffffffffffffep+63
pow -max -0x1.fffffffffffffffep+64
pow -max -0x1.ffffffffffffffffffffffffff8p+105
pow -max -0x1.ffffffffffffffffffffffffff8p+106
pow -max -0x1.ffffffffffffffffffffffffffffp+112
pow -max -0x1.ffffffffffffffffffffffffffffp+113
pow -max -max
pow -max 0xffffff
pow -max 0x1fffffe
pow -max 0x1.fffffffffffffp+52
pow -max 0x1.fffffffffffffp+53
pow -max 0x1.fffffffffffffffep+63
pow -max 0x1.fffffffffffffffep+64
pow -max 0x1.ffffffffffffffffffffffffff8p+105
pow -max 0x1.ffffffffffffffffffffffffff8p+106
pow -max 0x1.ffffffffffffffffffffffffffffp+112
pow -max 0x1.ffffffffffffffffffffffffffffp+113
pow -max max
Fix pow overflow in non-default rounding modes (bug 16315). This patch fixes bug 16315, bad pow handling of overflow/underflow in non-default rounding modes. Tests of pow are duly converted to ALL_RM_TEST to run all tests in all rounding modes. There are two main issues here. First, various implementations compute a negative result by negating a positive result, but this yields inappropriate overflow / underflow values for directed rounding, so either overflow / underflow results need recomputing in the correct sign, or the relevant overflowing / underflowing operation needs to be made to have a result of the correct sign. Second, the dbl-64 implementation sets FE_TONEAREST internally; in the overflow / underflow case, the result needs recomputing in the original rounding mode. Tested x86_64 and x86 and ulps updated accordingly. [BZ #16315] * sysdeps/i386/fpu/e_pow.S (__ieee754_pow): Ensure possibly overflowing or underflowing operations take place with sign of result. * sysdeps/i386/fpu/e_powf.S (__ieee754_powf): Likewise. * sysdeps/i386/fpu/e_powl.S (__ieee754_powl): Likewise. * sysdeps/ieee754/dbl-64/e_pow.c: Include <math.h>. (__ieee754_pow): Recompute overflowing and underflowing results in original rounding mode. * sysdeps/x86/fpu/powl_helper.c: Include <stdbool.h>. (__powl_helper): Allow negative argument X and scale negated value as needed. Avoid passing value outside [-1, 1] to f2xm1. * sysdeps/x86_64/fpu/e_powl.S (__ieee754_powl): Ensure possibly overflowing or underflowing operations take place with sign of result. * sysdeps/x86_64/fpu/multiarch/e_pow.c [HAVE_FMA4_SUPPORT]: Include <math.h>. * math/auto-libm-test-in: Add more tests of pow. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (pow_test): Use ALL_RM_TEST. (pow_tonearest_test_data): Remove. (pow_test_tonearest): Likewise. (pow_towardzero_test_data): Likewise. (pow_test_towardzero): Likewise. (pow_downward_test_data): Likewise. (pow_test_downward): Likewise. (pow_upward_test_data): Likewise. (pow_test_upward): Likewise. (main): Don't call removed functions. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-06-23 20:12:33 +00:00
pow -0x1p65 2
pow -0x1p65 3
pow -0x1p65 4
pow -0x1p65 5
pow -0x1p43 3
pow -0x1p43 4
pow -0x1p43 5
pow -0x1p33 4
pow -0x1p33 5
pow -0x1p26 5
pow -0x1p-65 -2
pow -0x1p-65 -3
pow -0x1p-65 -4
pow -0x1p-65 -5
pow -0x1p-43 -3
pow -0x1p-43 -4
pow -0x1p-43 -5
pow -0x1p-33 -4
pow -0x1p-33 -5
pow -0x1p-26 -5
pow -0x1p513 2
pow -0x1p513 3
pow -0x1p513 4
pow -0x1p513 5
pow -0x1p342 3
pow -0x1p342 4
pow -0x1p342 5
pow -0x1p257 4
pow -0x1p257 5
pow -0x1p205 5
pow -0x1p-513 -2
pow -0x1p-513 -3
pow -0x1p-513 -4
pow -0x1p-513 -5
pow -0x1p-342 -3
pow -0x1p-342 -4
pow -0x1p-342 -5
pow -0x1p-257 -4
pow -0x1p-257 -5
pow -0x1p-205 -5
pow -0x1p8192 2
pow -0x1p8192 3
pow -0x1p8192 4
pow -0x1p8192 5
pow -0x1p5462 3
pow -0x1p5462 4
pow -0x1p5462 5
pow -0x1p4097 4
pow -0x1p4097 5
pow -0x1p3277 5
pow -0x1p64 257
pow -0x1p-8192 -2
pow -0x1p-8192 -3
pow -0x1p-8192 -4
pow -0x1p-8192 -5
pow -0x1p-5462 -3
pow -0x1p-5462 -4
pow -0x1p-5462 -5
pow -0x1p-4097 -4
pow -0x1p-4097 -5
pow -0x1p-3277 -5
pow -0x1p-64 -257
pow -0.5 126
pow -0.5 127
pow -0.5 -126
pow -0.5 -127
pow -0.5 -0xffffff
pow -0.5 -0x1fffffe
pow -0.5 -0x1.fffffffffffffp+52
pow -0.5 -0x1.fffffffffffffp+53
pow -0.5 -0x1.fffffffffffffffep+63
pow -0.5 -0x1.fffffffffffffffep+64
pow -0.5 -0x1.ffffffffffffffffffffffffff8p+105
pow -0.5 -0x1.ffffffffffffffffffffffffff8p+106
pow -0.5 -0x1.ffffffffffffffffffffffffffffp+112
pow -0.5 -0x1.ffffffffffffffffffffffffffffp+113
pow -0.5 -max
pow -0.5 0xffffff
pow -0.5 0x1fffffe
pow -0.5 0x1.fffffffffffffp+52
pow -0.5 0x1.fffffffffffffp+53
pow -0.5 0x1.fffffffffffffffep+63
pow -0.5 0x1.fffffffffffffffep+64
pow -0.5 0x1.ffffffffffffffffffffffffff8p+105
pow -0.5 0x1.ffffffffffffffffffffffffff8p+106
pow -0.5 0x1.ffffffffffffffffffffffffffffp+112
pow -0.5 0x1.ffffffffffffffffffffffffffffp+113
pow -0.5 max
pow -min -2
pow -min -3
pow -min 1
pow -min 2
pow -min 3
pow -min -0xffffff
pow -min -0x1fffffe
pow -min -0x1.fffffffffffffp+52
pow -min -0x1.fffffffffffffp+53
pow -min -0x1.fffffffffffffffep+63
pow -min -0x1.fffffffffffffffep+64
pow -min -0x1.ffffffffffffffffffffffffff8p+105
pow -min -0x1.ffffffffffffffffffffffffff8p+106
pow -min -0x1.ffffffffffffffffffffffffffffp+112
pow -min -0x1.ffffffffffffffffffffffffffffp+113
pow -min -max
pow -min 0xffffff
pow -min 0x1fffffe
pow -min 0x1.fffffffffffffp+52
pow -min 0x1.fffffffffffffp+53
pow -min 0x1.fffffffffffffffep+63
pow -min 0x1.fffffffffffffffep+64
pow -min 0x1.ffffffffffffffffffffffffff8p+105
pow -min 0x1.ffffffffffffffffffffffffff8p+106
pow -min 0x1.ffffffffffffffffffffffffffffp+112
pow -min 0x1.ffffffffffffffffffffffffffffp+113
pow -min max
pow 0x0.ffffffp0 10
pow 0x0.ffffffp0 100
pow 0x0.ffffffp0 1000
pow 0x0.ffffffp0 0x1p24
pow 0x0.ffffffp0 0x1p30
pow 0x0.ffffffp0 0x1.234566p30
pow 0x0.ffffffp0 -10
pow 0x0.ffffffp0 -100
pow 0x0.ffffffp0 -1000
pow 0x0.ffffffp0 -0x1p24
pow 0x0.ffffffp0 -0x1p30
pow 0x0.ffffffp0 -0x1.234566p30
pow 0x1.000002p0 0x1p24
pow 0x1.000002p0 0x1.234566p29
pow 0x1.000002p0 -0x1.234566p29
pow 0x0.fffffffffffff8p0 0x1.23456789abcdfp62
pow 0x0.fffffffffffff8p0 -0x1.23456789abcdfp62
pow 0x1.0000000000001p0 0x1.23456789abcdfp61
pow 0x1.0000000000001p0 -0x1.23456789abcdfp61
pow 0x0.ffffffffffffffffp0 0x1.23456789abcdef0ep77
pow 0x0.ffffffffffffffffp0 -0x1.23456789abcdef0ep77
pow 0x1.0000000000000002p0 0x1.23456789abcdef0ep76
pow 0x1.0000000000000002p0 -0x1.23456789abcdef0ep76
pow 0x0.ffffffffffffffffffffffffffff8p0 0x1.23456789abcdef0123456789abcdp126
pow 0x0.ffffffffffffffffffffffffffff8p0 -0x1.23456789abcdef0123456789abcdp126
pow 0x1.0000000000000000000000000001p0 0x1.23456789abcdef0123456789abcdp125
pow 0x1.0000000000000000000000000001p0 -0x1.23456789abcdef0123456789abcdp125
pow 1e4932 0.75
pow 1e4928 0.75
pow 1e4924 0.75
pow 1e4920 0.75
pow 10.0 4932.0
pow 10.0 4931.0
pow 10.0 4930.0
pow 10.0 4929.0
pow 10.0 -4931.0
pow 10.0 -4930.0
pow 10.0 -4929.0
pow 1e27 182.0
pow 1e27 -182.0
pow min_subnorm min_subnorm
pow min_subnorm -min_subnorm
pow max min_subnorm
pow max -min_subnorm
pow 0.99 min_subnorm
pow 0.99 -min_subnorm
pow 1.01 min_subnorm
pow 1.01 -min_subnorm
pow 2.0 -100000.0
pow 1.0625 1.125
pow 1.5 1.03125
pow 0x1.7d1a0a6f2p+681 1.5
sin 0
sin -0
sin pi/6
sin -pi/6
sin pi/2
sin -pi/2
sin 0.75
sin 0x1p65
sin -0x1p65
sin 0x1.7f4134p+103
sin 0.80190127184058835
sin 2.522464e-1
sin 1e22
sin 0x1p1023
sin 0x1p16383
sin 0x1p+120
sin 0x1p+127
sin 0x1.fffff8p+127
sin 0x1.fffffep+127
sin 0x1p+50
sin 0x1p+28
sin 0.93340582292648832662962377071381
sin 2.3328432680770916363144351635128
sin 3.7439477503636453548097051680088
sin 3.9225160069792437411706487182528
sin 4.0711651639931289992091478779912
sin 4.7858438478542097982426639646292
sin 5.9840767662578002727968851104379
sin 1
sin 2
sin 3
sin 4
sin 5
sin 6
sin 7
sin 8
sin 9
sin 10
sin 0x1.2001469775ce6p32
sincos 0
sincos -0
sincos pi/2
sincos pi/6
sincos pi/3
sincos 0.75
sincos 0x1p65
sincos -0x1p65
sincos 0.80190127184058835
sincos 1e22
sincos 0x1p1023
sincos 0x1p16383
sincos 0x1p+120
sincos 0x1p+127
sincos 0x1.fffff8p+127
sincos 0x1.fffffep+127
sincos 0x1p+50
sincos 0x1p+28
sinh 0
sinh -0
sinh 0.75
Fix x86/x86_64 expm1 inaccuracy near 0 in directed rounding modes (bug 16293). Bug 16293 is inaccuracy of x86/x86_64 versions of expm1, near 0 in directed rounding modes, that arises from frndint rounding the exponent to 1 or -1 instead of 0, resulting in large cancellation error. This inaccuracy in turn affects other functions such as sinh that use expm1. This patch fixes the problem by setting round-to-nearest mode temporarily around the affected calls to frndint. I don't think this is needed for other uses of frndint, such as in exp itself, as only for expm1 is the cancellation error significant. Tested x86_64 and x86 and ulps updated accordingly. * sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Set round-to-nearest mode when using frndint. * sysdeps/i386/fpu/s_expm1.S (__expm1): Likewise. * sysdeps/i386/fpu/s_expm1f.S (__expm1f): Likewise. * sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Likewise. * math/auto-libm-test-in: Add more tests of expm1. Do not expect sinh test to fail. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (TEST_COND_x86_64): Remove macro. (TEST_COND_x86): Likewise. (expm1_tonearest_test_data): New array. (expm1_test_tonearest): New function. (expm1_towardzero_test_data): New array. (expm1_test_towardzero): New function. (expm1_downward_test_data): New array. (expm1_test_downward): New function. (expm1_upward_test_data): New array. (expm1_test_upward): New function. (main): Run the new test functions. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-19 13:36:10 +00:00
sinh 0x8p-32
sinh 22
sinh 23
sinh 24
sinh -0x7.55d7f8p-4
sinh -0x3.f392f8p-4
sinh 0x1.c56446p+0
sinh 0x6.cac622d51eebcp-4
sinh -0x5.c4cb02389c094p+0
sinh -0x1.646850f515ef2p+0
sinh -0x7.a8c5f68c81fae5dp-4
sinh 0x3.4a037p-4
sinh -0x3.eba6dbcbeceb2p-4
sinh -0x2.55f63p+0
sqrt 0
sqrt -0
sqrt 2209
sqrt 4
sqrt 2
sqrt 0.25
sqrt 6642.25
sqrt 15190.5625
sqrt 0.75
2013-11-29 16:31:16 +00:00
sqrt 0x1.fffffffffffffp+1023
sqrt 0x1.ffffffffffffbp+1023
sqrt 0x1.ffffffffffff7p+1023
sqrt 0x1.ffffffffffff3p+1023
sqrt 0x1.fffffffffffefp+1023
sqrt 0x1.fffffffffffebp+1023
sqrt 0x1.fffffffffffe7p+1023
sqrt 0x1.fffffffffffe3p+1023
sqrt 0x1.fffffffffffdfp+1023
sqrt 0x1.fffffffffffdbp+1023
sqrt 0x1.fffffffffffd7p+1023
sqrt 0x1.0000000000003p-1022
sqrt 0x1.0000000000007p-1022
sqrt 0x1.000000000000bp-1022
sqrt 0x1.000000000000fp-1022
sqrt 0x1.0000000000013p-1022
sqrt 0x1.0000000000017p-1022
sqrt 0x1.000000000001bp-1022
sqrt 0x1.000000000001fp-1022
sqrt 0x1.0000000000023p-1022
sqrt 0x1.0000000000027p-1022
sqrt 0x1.000000000002bp-1022
sqrt 0x1.000000000002fp-1022
sqrt 0x1.0000000000033p-1022
sqrt 0x1.0000000000037p-1022
sqrt 0x1.7167bc36eaa3bp+6
sqrt 0x1.7570994273ad7p+6
sqrt 0x1.7dae969442fe6p+6
sqrt 0x1.7f8444fcf67e5p+6
sqrt 0x1.8364650e63a54p+6
sqrt 0x1.85bedd274edd8p+6
sqrt 0x1.8609cf496ab77p+6
sqrt 0x1.873849c70a375p+6
sqrt 0x1.8919c962cbaaep+6
sqrt 0x1.8de4493e22dc6p+6
sqrt 0x1.924829a17a288p+6
sqrt 0x1.92702cd992f12p+6
sqrt 0x1.92b763a8311fdp+6
sqrt 0x1.947da013c7293p+6
sqrt 0x1.9536091c494d2p+6
sqrt 0x1.61b04c6p-1019
sqrt 0x1.93789f1p-1018
sqrt 0x1.a1989b4p-1018
sqrt 0x1.f93bc9p-1018
sqrt 0x1.2f675e3p-1017
sqrt 0x1.a158508p-1017
sqrt 0x1.cd31f078p-1017
sqrt 0x1.33b43b08p-1016
sqrt 0x1.6e66a858p-1016
sqrt 0x1.8661cbf8p-1016
sqrt 0x1.bbb221b4p-1016
sqrt 0x1.c4942f3cp-1016
sqrt 0x1.dbb258c8p-1016
sqrt 0x1.57103ea4p-1015
sqrt 0x1.9b294f88p-1015
sqrt 0x1.0000000000001p+0
sqrt 0x1.fffffffffffffp-1
tan 0
tan -0
tan pi/4
tan 0.75
tan 0x1p65
tan -0x1p65
tan 0xc.9p-4
tan 0xc.908p-4
tan 0xc.90cp-4
tan 0xc.90ep-4
tan 0xc.90fp-4
tan 0xc.90f8p-4
tan 0xc.90fcp-4
tan 0xc.90fdp-4
tan 0xc.90fd8p-4
tan 0xc.90fdap-4
tan 0xc.ap-4
tan 0xc.98p-4
tan 0xc.94p-4
tan 0xc.92p-4
tan 0xc.91p-4
tan 0xc.90fep-4
tan 0xc.90fdcp-4
tan 0xc.90fdbp-4
tan -0xc.9p-4
tan -0xc.908p-4
tan -0xc.90cp-4
tan -0xc.90ep-4
tan -0xc.90fp-4
tan -0xc.90f8p-4
tan -0xc.90fcp-4
tan -0xc.90fdp-4
tan -0xc.90fd8p-4
tan -0xc.90fdap-4
tan -0xc.ap-4
tan -0xc.98p-4
tan -0xc.94p-4
tan -0xc.92p-4
tan -0xc.91p-4
tan -0xc.90fep-4
tan -0xc.90fdcp-4
tan -0xc.90fdbp-4
tan 1e22
tan 0x1p1023
tan 0x1p16383
tan 1
tan 2
tan 3
tan 4
tan 5
tan 6
tan 7
tan 8
tan 9
tan 10
tanh 0
tanh -0
tanh 0.75
tanh -0.75
tanh 1.0
tanh -1.0
tanh 0x1p-57
tgamma 0.5
tgamma -0.5
tgamma 1
tgamma 2
tgamma 3
tgamma 4
tgamma 5
tgamma 6
tgamma 7
tgamma 8
tgamma 9
tgamma 10
tgamma 0.7
tgamma 1.2
tgamma 1.5
tgamma 2.5
tgamma 3.5
tgamma 4.5
tgamma 5.5
tgamma 6.5
tgamma 7.5
tgamma 8.5
tgamma 9.5
tgamma -1.5
tgamma -2.5
tgamma -3.5
tgamma -4.5
tgamma -5.5
tgamma -6.5
tgamma -7.5
tgamma -8.5
tgamma -9.5
tgamma 0x1p-24
tgamma -0x1p-24
tgamma 0x1p-53
tgamma -0x1p-53
tgamma 0x1p-64
tgamma -0x1p-64
tgamma 0x1p-106
tgamma -0x1p-106
tgamma 0x1p-113
tgamma -0x1p-113
tgamma 0x1p-127
tgamma -0x1p-127
tgamma 0x1p-128
tgamma -0x1p-128
tgamma 0x1p-149
tgamma -0x1p-149
tgamma 0x1p-1023
tgamma -0x1p-1023
tgamma 0x1p-1024
tgamma -0x1p-1024
tgamma 0x1p-1074
tgamma -0x1p-1074
tgamma 0x1p-16383
tgamma -0x1p-16383
tgamma 0x1p-16384
tgamma -0x1p-16384
tgamma 0x1p-16445
tgamma -0x1p-16445
tgamma 0x1p-16494
tgamma -0x1p-16494
tgamma 0x8.00001p0
tgamma 0x7.fffff8p0
tgamma 0x7.000008p0
tgamma 0x6.fffff8p0
tgamma 0x6.000008p0
tgamma 0x5.fffff8p0
tgamma 0x5.000008p0
tgamma 0x4.fffff8p0
tgamma 0x4.000008p0
tgamma 0x3.fffffcp0
tgamma 0x3.000004p0
tgamma 0x2.fffffcp0
tgamma 0x2.000004p0
tgamma 0x1.fffffep0
tgamma 0x1.000002p0
tgamma 0x0.ffffffp0
tgamma -0x0.ffffffp0
tgamma -0x1.000002p0
tgamma -0x1.fffffep0
tgamma -0x2.000004p0
tgamma -0x2.fffffcp0
tgamma -0x3.000004p0
tgamma -0x3.fffffcp0
tgamma -0x4.000008p0
tgamma -0x4.fffff8p0
tgamma -0x5.000008p0
tgamma -0x5.fffff8p0
tgamma -0x6.000008p0
tgamma -0x6.fffff8p0
tgamma -0x7.000008p0
tgamma -0x7.fffff8p0
tgamma -0x8.00001p0
tgamma -0x9.fffffp0
tgamma -0xa.00001p0
tgamma -0x13.ffffep0
tgamma -0x14.00002p0
tgamma -0x1d.ffffep0
tgamma -0x1e.00002p0
tgamma -0x27.ffffcp0
tgamma -0x28.00004p0
tgamma -0x28.ffffcp0
tgamma -0x29.00004p0
tgamma -0x29.ffffcp0
tgamma -0x2a.00004p0
tgamma 0x8.0000000000008p0
tgamma 0x7.ffffffffffffcp0
tgamma 0x7.0000000000004p0
tgamma 0x6.ffffffffffffcp0
tgamma 0x6.0000000000004p0
tgamma 0x5.ffffffffffffcp0
tgamma 0x5.0000000000004p0
tgamma 0x4.ffffffffffffcp0
tgamma 0x4.0000000000004p0
tgamma 0x3.ffffffffffffep0
tgamma 0x3.0000000000002p0
tgamma 0x2.ffffffffffffep0
tgamma 0x2.0000000000002p0
tgamma 0x1.fffffffffffffp0
tgamma 0x1.0000000000001p0
tgamma 0x0.fffffffffffff8p0
tgamma -0x0.fffffffffffff8p0
tgamma -0x1.0000000000001p0
tgamma -0x1.fffffffffffffp0
tgamma -0x2.0000000000002p0
tgamma -0x2.ffffffffffffep0
tgamma -0x3.0000000000002p0
tgamma -0x3.ffffffffffffep0
tgamma -0x4.0000000000004p0
tgamma -0x4.ffffffffffffcp0
tgamma -0x5.0000000000004p0
tgamma -0x5.ffffffffffffcp0
tgamma -0x6.0000000000004p0
tgamma -0x6.ffffffffffffcp0
tgamma -0x7.0000000000004p0
tgamma -0x7.ffffffffffffcp0
tgamma -0x8.0000000000008p0
tgamma -0x9.ffffffffffff8p0
tgamma -0xa.0000000000008p0
tgamma -0x13.ffffffffffffp0
tgamma -0x14.000000000001p0
tgamma -0x1d.ffffffffffffp0
tgamma -0x1e.000000000001p0
tgamma -0x27.fffffffffffep0
tgamma -0x28.000000000002p0
tgamma -0x28.fffffffffffep0
tgamma -0x29.000000000002p0
tgamma -0x29.fffffffffffep0
tgamma -0x2a.000000000002p0
tgamma -0x31.fffffffffffep0
tgamma -0x32.000000000002p0
tgamma -0x63.fffffffffffcp0
tgamma -0x64.000000000004p0
tgamma -0x95.fffffffffff8p0
tgamma -0x96.000000000008p0
tgamma -0xb4.fffffffffff8p0
tgamma -0xb5.000000000008p0
tgamma -0xb5.fffffffffff8p0
tgamma -0xb6.000000000008p0
tgamma -0xb6.fffffffffff8p0
tgamma -0xb7.000000000008p0
tgamma -0xb7.fffffffffff8p0
tgamma -0xb8.000000000008p0
tgamma 0x8.00000000000000000000000004p0
tgamma 0x7.fffffffffffffffffffffffffep0
tgamma 0x7.00000000000000000000000002p0
tgamma 0x6.fffffffffffffffffffffffffep0
tgamma 0x6.00000000000000000000000002p0
tgamma 0x5.fffffffffffffffffffffffffep0
tgamma 0x5.00000000000000000000000002p0
tgamma 0x4.fffffffffffffffffffffffffep0
tgamma 0x4.00000000000000000000000002p0
tgamma 0x3.ffffffffffffffffffffffffffp0
tgamma 0x3.00000000000000000000000001p0
tgamma 0x2.ffffffffffffffffffffffffffp0
tgamma 0x2.00000000000000000000000001p0
tgamma 0x1.ffffffffffffffffffffffffff8p0
tgamma 0x1.000000000000000000000000008p0
tgamma 0x0.ffffffffffffffffffffffffffcp0
tgamma -0x0.ffffffffffffffffffffffffffcp0
tgamma -0x1.000000000000000000000000008p0
tgamma -0x1.ffffffffffffffffffffffffff8p0
tgamma -0x2.00000000000000000000000001p0
tgamma -0x2.ffffffffffffffffffffffffffp0
tgamma -0x3.00000000000000000000000001p0
tgamma -0x3.ffffffffffffffffffffffffffp0
tgamma -0x4.00000000000000000000000002p0
tgamma -0x4.fffffffffffffffffffffffffep0
tgamma -0x5.00000000000000000000000002p0
tgamma -0x5.fffffffffffffffffffffffffep0
tgamma -0x6.00000000000000000000000002p0
tgamma -0x6.fffffffffffffffffffffffffep0
tgamma -0x7.00000000000000000000000002p0
tgamma -0x7.fffffffffffffffffffffffffep0
tgamma -0x8.00000000000000000000000004p0
tgamma -0x9.fffffffffffffffffffffffffcp0
tgamma -0xa.00000000000000000000000004p0
tgamma -0x13.fffffffffffffffffffffffff8p0
tgamma -0x14.00000000000000000000000008p0
tgamma -0x1d.fffffffffffffffffffffffff8p0
tgamma -0x1e.00000000000000000000000008p0
tgamma -0x27.fffffffffffffffffffffffffp0
tgamma -0x28.0000000000000000000000001p0
tgamma -0x28.fffffffffffffffffffffffffp0
tgamma -0x29.0000000000000000000000001p0
tgamma -0x29.fffffffffffffffffffffffffp0
tgamma -0x2a.0000000000000000000000001p0
tgamma -0x31.fffffffffffffffffffffffffp0
tgamma -0x32.0000000000000000000000001p0
tgamma -0x63.ffffffffffffffffffffffffep0
tgamma -0x64.0000000000000000000000002p0
tgamma -0x95.ffffffffffffffffffffffffcp0
tgamma -0x96.0000000000000000000000004p0
tgamma -0xb4.ffffffffffffffffffffffffcp0
tgamma -0xb5.0000000000000000000000004p0
tgamma -0xb5.ffffffffffffffffffffffffcp0
tgamma -0xb6.0000000000000000000000004p0
tgamma -0xb6.ffffffffffffffffffffffffcp0
tgamma -0xb7.0000000000000000000000004p0
tgamma -0xb7.ffffffffffffffffffffffffcp0
tgamma -0xb8.0000000000000000000000004p0
tgamma -0xbb.ffffffffffffffffffffffffcp0
tgamma -0xbc.0000000000000000000000004p0
tgamma -0xbc.ffffffffffffffffffffffffcp0
tgamma -0xbd.0000000000000000000000004p0
tgamma -0xbd.ffffffffffffffffffffffffcp0
tgamma -0xbe.0000000000000000000000004p0
tgamma -0xbe.ffffffffffffffffffffffffcp0
tgamma -0xbf.0000000000000000000000004p0
tgamma 0x8.000000000000001p0
tgamma 0x7.fffffffffffffff8p0
tgamma 0x7.0000000000000008p0
tgamma 0x6.fffffffffffffff8p0
tgamma 0x6.0000000000000008p0
tgamma 0x5.fffffffffffffff8p0
tgamma 0x5.0000000000000008p0
tgamma 0x4.fffffffffffffff8p0
tgamma 0x4.0000000000000008p0
tgamma 0x3.fffffffffffffffcp0
tgamma 0x3.0000000000000004p0
tgamma 0x2.fffffffffffffffcp0
tgamma 0x2.0000000000000004p0
tgamma 0x1.fffffffffffffffep0
tgamma 0x1.0000000000000002p0
tgamma 0x0.ffffffffffffffffp0
tgamma -0x0.ffffffffffffffffp0
tgamma -0x1.0000000000000002p0
tgamma -0x1.fffffffffffffffep0
tgamma -0x2.0000000000000004p0
tgamma -0x2.fffffffffffffffcp0
tgamma -0x3.0000000000000004p0
tgamma -0x3.fffffffffffffffcp0
tgamma -0x4.0000000000000008p0
tgamma -0x4.fffffffffffffff8p0
tgamma -0x5.0000000000000008p0
tgamma -0x5.fffffffffffffff8p0
tgamma -0x6.0000000000000008p0
tgamma -0x6.fffffffffffffff8p0
tgamma -0x7.0000000000000008p0
tgamma -0x7.fffffffffffffff8p0
tgamma -0x8.000000000000001p0
tgamma -0x9.fffffffffffffffp0
tgamma -0xa.000000000000001p0
tgamma -0x13.ffffffffffffffep0
tgamma -0x14.000000000000002p0
tgamma -0x1d.ffffffffffffffep0
tgamma -0x1e.000000000000002p0
tgamma -0x27.ffffffffffffffcp0
tgamma -0x28.000000000000004p0
tgamma -0x28.ffffffffffffffcp0
tgamma -0x29.000000000000004p0
tgamma -0x29.ffffffffffffffcp0
tgamma -0x2a.000000000000004p0
tgamma -0x31.ffffffffffffffcp0
tgamma -0x32.000000000000004p0
tgamma -0x63.ffffffffffffff8p0
tgamma -0x64.000000000000008p0
tgamma -0x95.ffffffffffffffp0
tgamma -0x96.00000000000001p0
tgamma -0xb4.ffffffffffffffp0
tgamma -0xb5.00000000000001p0
tgamma -0xb5.ffffffffffffffp0
tgamma -0xb6.00000000000001p0
tgamma -0xb6.ffffffffffffffp0
tgamma -0xb7.00000000000001p0
tgamma -0xb7.ffffffffffffffp0
tgamma -0xb8.00000000000001p0
tgamma -0xbb.ffffffffffffffp0
tgamma -0xbc.00000000000001p0
tgamma -0xbc.ffffffffffffffp0
tgamma -0xbd.00000000000001p0
tgamma -0xbd.ffffffffffffffp0
tgamma -0xbe.00000000000001p0
tgamma -0xbe.ffffffffffffffp0
tgamma -0xbf.00000000000001p0
tgamma -0xf9.ffffffffffffffp0
tgamma -0xfa.00000000000001p0
tgamma -0x1f3.fffffffffffffep0
tgamma -0x1f4.00000000000002p0
tgamma -0x2ed.fffffffffffffcp0
tgamma -0x2ee.00000000000004p0
tgamma -0x3e7.fffffffffffffcp0
tgamma -0x3e8.00000000000004p0
tgamma -0x4e1.fffffffffffff8p0
tgamma -0x4e2.00000000000008p0
tgamma -0x5db.fffffffffffff8p0
tgamma -0x5dc.00000000000008p0
tgamma -0x6d5.fffffffffffff8p0
tgamma -0x6d6.00000000000008p0
tgamma -0x6e2.fffffffffffff8p0
tgamma -0x6e3.00000000000008p0
tgamma -0x6e3.fffffffffffff8p0
tgamma -0x6e4.00000000000008p0
tgamma -0x6e4.fffffffffffff8p0
tgamma -0x6e5.00000000000008p0
tgamma -0x6e5.fffffffffffff8p0
tgamma -0x6e6.00000000000008p0
tgamma 0x8.0000000000000000000000000008p0
tgamma 0x7.fffffffffffffffffffffffffffcp0
tgamma 0x7.0000000000000000000000000004p0
tgamma 0x6.fffffffffffffffffffffffffffcp0
tgamma 0x6.0000000000000000000000000004p0
tgamma 0x5.fffffffffffffffffffffffffffcp0
tgamma 0x5.0000000000000000000000000004p0
tgamma 0x4.fffffffffffffffffffffffffffcp0
tgamma 0x4.0000000000000000000000000004p0
tgamma 0x3.fffffffffffffffffffffffffffep0
tgamma 0x3.0000000000000000000000000002p0
tgamma 0x2.fffffffffffffffffffffffffffep0
tgamma 0x2.0000000000000000000000000002p0
tgamma 0x1.ffffffffffffffffffffffffffffp0
tgamma 0x1.0000000000000000000000000001p0
tgamma 0x0.ffffffffffffffffffffffffffff8p0
tgamma -0x0.ffffffffffffffffffffffffffff8p0
tgamma -0x1.0000000000000000000000000001p0
tgamma -0x1.ffffffffffffffffffffffffffffp0
tgamma -0x2.0000000000000000000000000002p0
tgamma -0x2.fffffffffffffffffffffffffffep0
tgamma -0x3.0000000000000000000000000002p0
tgamma -0x3.fffffffffffffffffffffffffffep0
tgamma -0x4.0000000000000000000000000004p0
tgamma -0x4.fffffffffffffffffffffffffffcp0
tgamma -0x5.0000000000000000000000000004p0
tgamma -0x5.fffffffffffffffffffffffffffcp0
tgamma -0x6.0000000000000000000000000004p0
tgamma -0x6.fffffffffffffffffffffffffffcp0
tgamma -0x7.0000000000000000000000000004p0
tgamma -0x7.fffffffffffffffffffffffffffcp0
tgamma -0x8.0000000000000000000000000008p0
tgamma -0x9.fffffffffffffffffffffffffff8p0
tgamma -0xa.0000000000000000000000000008p0
tgamma -0x13.fffffffffffffffffffffffffffp0
tgamma -0x14.000000000000000000000000001p0
tgamma -0x1d.fffffffffffffffffffffffffffp0
tgamma -0x1e.000000000000000000000000001p0
tgamma -0x27.ffffffffffffffffffffffffffep0
tgamma -0x28.000000000000000000000000002p0
tgamma -0x28.ffffffffffffffffffffffffffep0
tgamma -0x29.000000000000000000000000002p0
tgamma -0x29.ffffffffffffffffffffffffffep0
tgamma -0x2a.000000000000000000000000002p0
tgamma -0x31.ffffffffffffffffffffffffffep0
tgamma -0x32.000000000000000000000000002p0
tgamma -0x63.ffffffffffffffffffffffffffcp0
tgamma -0x64.000000000000000000000000004p0
tgamma -0x95.ffffffffffffffffffffffffff8p0
tgamma -0x96.000000000000000000000000008p0
tgamma -0xb4.ffffffffffffffffffffffffff8p0
tgamma -0xb5.000000000000000000000000008p0
tgamma -0xb5.ffffffffffffffffffffffffff8p0
tgamma -0xb6.000000000000000000000000008p0
tgamma -0xb6.ffffffffffffffffffffffffff8p0
tgamma -0xb7.000000000000000000000000008p0
tgamma -0xb7.ffffffffffffffffffffffffff8p0
tgamma -0xb8.000000000000000000000000008p0
tgamma -0xbb.ffffffffffffffffffffffffff8p0
tgamma -0xbc.000000000000000000000000008p0
tgamma -0xbc.ffffffffffffffffffffffffff8p0
tgamma -0xbd.000000000000000000000000008p0
tgamma -0xbd.ffffffffffffffffffffffffff8p0
tgamma -0xbe.000000000000000000000000008p0
tgamma -0xbe.ffffffffffffffffffffffffff8p0
tgamma -0xbf.000000000000000000000000008p0
tgamma -0xf9.ffffffffffffffffffffffffff8p0
tgamma -0xfa.000000000000000000000000008p0
tgamma -0x1f3.ffffffffffffffffffffffffffp0
tgamma -0x1f4.00000000000000000000000001p0
tgamma -0x2ed.fffffffffffffffffffffffffep0
tgamma -0x2ee.00000000000000000000000002p0
tgamma -0x3e7.fffffffffffffffffffffffffep0
tgamma -0x3e8.00000000000000000000000002p0
tgamma -0x4e1.fffffffffffffffffffffffffcp0
tgamma -0x4e2.00000000000000000000000004p0
tgamma -0x5db.fffffffffffffffffffffffffcp0
tgamma -0x5dc.00000000000000000000000004p0
tgamma -0x6d5.fffffffffffffffffffffffffcp0
tgamma -0x6d6.00000000000000000000000004p0
tgamma -0x6e2.fffffffffffffffffffffffffcp0
tgamma -0x6e3.00000000000000000000000004p0
tgamma -0x6e3.fffffffffffffffffffffffffcp0
tgamma -0x6e4.00000000000000000000000004p0
tgamma -0x6e4.fffffffffffffffffffffffffcp0
tgamma -0x6e5.00000000000000000000000004p0
tgamma -0x6e5.fffffffffffffffffffffffffcp0
tgamma -0x6e6.00000000000000000000000004p0
tgamma -0x6eb.fffffffffffffffffffffffffcp0
tgamma -0x6ec.00000000000000000000000004p0
tgamma -0x6ec.fffffffffffffffffffffffffcp0
tgamma -0x6ed.00000000000000000000000004p0
tgamma -0x6ed.fffffffffffffffffffffffffcp0
tgamma -0x6ee.00000000000000000000000004p0
tgamma -0x6ee.fffffffffffffffffffffffffcp0
tgamma -0x6ef.00000000000000000000000004p0
tgamma -0x1.0a32a2p+5
tgamma -0x1.5800000080001p+7
tgamma 18.5
tgamma 19.5
tgamma 23.5
tgamma 29.5
tgamma 30.5
tgamma 31.5
tgamma 32.5
tgamma 33.5
tgamma 34.5
tgamma 0x2.30a43cp+4
tgamma 0x2.30a44p+4
tgamma 0xa.b9fd72b0fb238p+4
tgamma 0xa.b9fd72b0fb24p+4
tgamma 0xa.b9fd72b0fb23a9ddbf0d3804f4p+4
tgamma 0xa.b9fd72b0fb23a9ddbf0d3804f8p+4
tgamma 0x6.db8c603359a97108p+8
tgamma 0x6.db8c603359a9711p+8
tgamma 0x6.db8c603359a971081bc4a2e9dfdp+8
tgamma 0x6.db8c603359a971081bc4a2e9dfd4p+8
tgamma 1e3
tgamma -100000.5
y0 0.125
y0 0.75
y0 1.0
y0 1.5
y0 2.0
y0 8.0
y0 10.0
y0 0x1.3ffp+74
y0 0x1.ff00000000002p+840
y0 0x1p1023
y0 0x1p16382
y0 0x1p16383
y0 0x1p-10
y0 0x1p-20
y0 0x1p-30
y0 0x1p-40
y0 0x1p-50
y0 0x1p-60
y0 0x1p-70
y0 0x1p-80
y0 0x1p-90
y0 0x1p-100
y0 0x1p-110
y0 min
y0 min_subnorm
y1 0.125
y1 0.75
y1 1.0
y1 1.5
y1 2.0
y1 8.0
y1 10.0
y1 0x1.27e204p+99
y1 0x1.001000001p+593
y1 0x1p1023
y1 0x1p16382
y1 0x1p16383
y1 0x1p-10
y1 0x1p-20
y1 0x1p-30
y1 0x1p-40
y1 0x1p-50
y1 0x1p-60
y1 0x1p-70
y1 0x1p-80
y1 0x1p-90
y1 0x1p-100
y1 0x1p-110
y1 min
y1 min_subnorm
# yn (0, x) == y0 (x).
yn 0 0.125
yn 0 0.75
yn 0 1.0
yn 0 1.5
yn 0 2.0
yn 0 8.0
yn 0 10.0
# yn (1, x) == y1 (x).
yn 1 0.125
yn 1 0.75
yn 1 1.0
yn 1 1.5
yn 1 2.0
yn 1 8.0
yn 1 10.0
# yn (-1, x) == -y1 (x).
yn -1 1.0
# yn (3, x).
yn 3 0.125
yn 3 0.75
yn 3 1.0
yn 3 2.0
yn 3 10.0
# yn (10, x).
yn 10 0.125
yn 10 0.75
yn 10 1.0
yn 10 2.0
yn 10 10.0
yn -10 1.0
yn 10 min
yn 2 0x1.ffff62p+99
yn 2 0x1p127
yn 2 0x1p1023
yn 2 0x1p16383
yn 0 min
yn 0 min_subnorm
yn 1 min
yn 1 min_subnorm
yn -1 min
yn -1 min_subnorm
yn 2 min
yn 2 min_subnorm
yn -2 min
yn -2 min_subnorm
yn 17 min
yn 17 min_subnorm
yn -17 min
yn -17 min_subnorm
yn 42 min
yn 42 min_subnorm
yn -42 min
yn -42 min_subnorm