diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-06-23 22:24:20 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-06-23 22:24:20 +0000 |
commit | ad39cce0da0161dba69781c53349acf2e23f156c (patch) | |
tree | 1c7b29a8fe9358aa720485ca439db53d6749b379 | |
parent | 8b1bab5ffa235bc494c33fdbe4c9994202936cfc (diff) | |
download | glibc-ad39cce0da0161dba69781c53349acf2e23f156c.tar.gz |
Fix sin, sincos missing underflows (bug 16526, bug 16538).
Similar to various other bugs in this area, some sin and sincos
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, mips64 and powerpc.
[BZ #16526]
[BZ #16538]
* sysdeps/ieee754/dbl-64/s_sin.c: Include <float.h>.
(__sin): Force underflow exception for arguments with small
absolute value.
* sysdeps/ieee754/flt-32/k_sinf.c: Include <float.h>.
(__kernel_sinf): Force underflow exception for arguments with
small absolute value.
* sysdeps/ieee754/ldbl-128/k_sincosl.c: Include <float.h>.
(__kernel_sincosl): Force underflow exception for arguments with
small absolute value.
* sysdeps/ieee754/ldbl-128/k_sinl.c: Include <float.h>.
(__kernel_sinl): Force underflow exception for arguments with
small absolute value.
* sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: Include <float.h>.
(__kernel_sincosl): Force underflow exception for arguments with
small absolute value.
* sysdeps/ieee754/ldbl-128ibm/k_sinl.c: Include <float.h>.
(__kernel_sinl): Force underflow exception for arguments with
small absolute value.
* sysdeps/ieee754/ldbl-96/k_sinl.c: Include <float.h>.
(__kernel_sinl): Force underflow exception for arguments with
small absolute value.
* sysdeps/powerpc/fpu/k_sinf.c: Include <float.h>.
(__kernel_sinf): Force underflow exception for arguments with
small absolute value.
* math/auto-libm-test-in: Add more tests of sin and sincos.
* math/auto-libm-test-out: Regenerated.
-rw-r--r-- | ChangeLog | 29 | ||||
-rw-r--r-- | NEWS | 28 | ||||
-rw-r--r-- | math/auto-libm-test-in | 8 | ||||
-rw-r--r-- | math/auto-libm-test-out | 632 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/s_sin.c | 10 | ||||
-rw-r--r-- | sysdeps/ieee754/flt-32/k_sinf.c | 11 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/k_sincosl.c | 20 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/k_sinl.c | 10 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/k_sincosl.c | 20 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128ibm/k_sinl.c | 10 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-96/k_sinl.c | 10 | ||||
-rw-r--r-- | sysdeps/powerpc/fpu/k_sinf.c | 6 |
12 files changed, 762 insertions, 32 deletions
@@ -1,5 +1,34 @@ 2015-06-23 Joseph Myers <joseph@codesourcery.com> + [BZ #16526] + [BZ #16538] + * sysdeps/ieee754/dbl-64/s_sin.c: Include <float.h>. + (__sin): Force underflow exception for arguments with small + absolute value. + * sysdeps/ieee754/flt-32/k_sinf.c: Include <float.h>. + (__kernel_sinf): Force underflow exception for arguments with + small absolute value. + * sysdeps/ieee754/ldbl-128/k_sincosl.c: Include <float.h>. + (__kernel_sincosl): Force underflow exception for arguments with + small absolute value. + * sysdeps/ieee754/ldbl-128/k_sinl.c: Include <float.h>. + (__kernel_sinl): Force underflow exception for arguments with + small absolute value. + * sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: Include <float.h>. + (__kernel_sincosl): Force underflow exception for arguments with + small absolute value. + * sysdeps/ieee754/ldbl-128ibm/k_sinl.c: Include <float.h>. + (__kernel_sinl): Force underflow exception for arguments with + small absolute value. + * sysdeps/ieee754/ldbl-96/k_sinl.c: Include <float.h>. + (__kernel_sinl): Force underflow exception for arguments with + small absolute value. + * sysdeps/powerpc/fpu/k_sinf.c: Include <float.h>. + (__kernel_sinf): Force underflow exception for arguments with + small absolute value. + * math/auto-libm-test-in: Add more tests of sin and sincos. + * math/auto-libm-test-out: Regenerated. + [BZ #18245] [BZ #18583] * sysdeps/ieee754/k_standardl.c: Include <fenv.h>. @@ -11,20 +11,20 @@ Version 2.22 438, 4719, 6792, 13028, 13064, 14094, 14841, 14906, 14958, 15319, 15467, 15790, 15969, 16159, 16339, 16350, 16351, 16352, 16353, 16361, 16512, - 16560, 16704, 16783, 16850, 17053, 17090, 17195, 17269, 17293, 17322, - 17403, 17523, 17542, 17569, 17581, 17588, 17596, 17620, 17621, 17628, - 17631, 17692, 17711, 17715, 17776, 17779, 17792, 17836, 17912, 17916, - 17930, 17932, 17944, 17949, 17964, 17965, 17967, 17969, 17977, 17978, - 17987, 17991, 17996, 17998, 17999, 18007, 18019, 18020, 18029, 18030, - 18032, 18034, 18036, 18038, 18039, 18042, 18043, 18046, 18047, 18049, - 18068, 18080, 18093, 18100, 18104, 18110, 18111, 18116, 18125, 18128, - 18138, 18185, 18196, 18197, 18206, 18210, 18211, 18217, 18219, 18220, - 18221, 18234, 18244, 18245, 18247, 18287, 18319, 18324, 18333, 18346, - 18371, 18397, 18409, 18410, 18412, 18418, 18422, 18434, 18444, 18468, - 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, 18507, 18512, - 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, 18532, 18533, - 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, 18547, 18553, - 18558, 18569, 18583. + 16526, 16538, 16560, 16704, 16783, 16850, 17053, 17090, 17195, 17269, + 17293, 17322, 17403, 17523, 17542, 17569, 17581, 17588, 17596, 17620, + 17621, 17628, 17631, 17692, 17711, 17715, 17776, 17779, 17792, 17836, + 17912, 17916, 17930, 17932, 17944, 17949, 17964, 17965, 17967, 17969, + 17977, 17978, 17987, 17991, 17996, 17998, 17999, 18007, 18019, 18020, + 18029, 18030, 18032, 18034, 18036, 18038, 18039, 18042, 18043, 18046, + 18047, 18049, 18068, 18080, 18093, 18100, 18104, 18110, 18111, 18116, + 18125, 18128, 18138, 18185, 18196, 18197, 18206, 18210, 18211, 18217, + 18219, 18220, 18221, 18234, 18244, 18245, 18247, 18287, 18319, 18324, + 18333, 18346, 18371, 18397, 18409, 18410, 18412, 18418, 18422, 18434, + 18444, 18468, 18469, 18470, 18479, 18483, 18495, 18496, 18497, 18498, + 18507, 18512, 18513, 18519, 18520, 18522, 18527, 18528, 18529, 18530, + 18532, 18533, 18534, 18536, 18539, 18540, 18542, 18544, 18545, 18546, + 18547, 18553, 18558, 18569, 18583. * Cache information can be queried via sysconf() function on s390 e.g. with _SC_LEVEL1_ICACHE_SIZE as argument. diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index d1502ad107..6545583480 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -2317,6 +2317,10 @@ sin 0x1.2001469775ce6p32 sin -0x3.3de320f6be87ep+1020 sin 0xe.9f1e5bc3bb88p+112 sin 0x4.7857dp+68 +sin min +sin -min +sin min_subnorm +sin -min_subnorm sincos 0 sincos -0 @@ -2339,6 +2343,10 @@ sincos 0x1p+28 sincos -0x3.3de320f6be87ep+1020 sincos 0xe.9f1e5bc3bb88p+112 sincos 0x4.7857dp+68 +sincos min +sincos -min +sincos min_subnorm +sincos -min_subnorm sinh 0 sinh -0 diff --git a/math/auto-libm-test-out b/math/auto-libm-test-out index 89a4ffc6b2..f3672dbc46 100644 --- a/math/auto-libm-test-out +++ b/math/auto-libm-test-out @@ -181969,6 +181969,322 @@ sin 0x4.7857dp+68 = sin tonearest ldbl-128ibm 0x4.7857dp+68L : -0x1.ffb679ba994b76173f9040638p-4L : inexact-ok = sin towardzero ldbl-128ibm 0x4.7857dp+68L : -0x1.ffb679ba994b76173f9040637f8p-4L : inexact-ok = sin upward ldbl-128ibm 0x4.7857dp+68L : -0x1.ffb679ba994b76173f9040637f8p-4L : inexact-ok +sin min += sin downward flt-32 0x4p-128f : 0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok += sin tonearest flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok += sin towardzero flt-32 0x4p-128f : 0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok += sin upward flt-32 0x4p-128f : 0x4p-128f : inexact-ok underflow-ok errno-erange-ok += sin downward dbl-64 0x4p-128 : 0x3.ffffffffffffep-128 : inexact-ok += sin tonearest dbl-64 0x4p-128 : 0x4p-128 : inexact-ok += sin towardzero dbl-64 0x4p-128 : 0x3.ffffffffffffep-128 : inexact-ok += sin upward dbl-64 0x4p-128 : 0x4p-128 : inexact-ok += sin downward ldbl-96-intel 0x4p-128L : 0x3.fffffffffffffffcp-128L : inexact-ok += sin tonearest ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok += sin towardzero ldbl-96-intel 0x4p-128L : 0x3.fffffffffffffffcp-128L : inexact-ok += sin upward ldbl-96-intel 0x4p-128L : 0x4p-128L : inexact-ok += sin downward ldbl-96-m68k 0x4p-128L : 0x3.fffffffffffffffcp-128L : inexact-ok += sin tonearest ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok += sin towardzero ldbl-96-m68k 0x4p-128L : 0x3.fffffffffffffffcp-128L : inexact-ok += sin upward ldbl-96-m68k 0x4p-128L : 0x4p-128L : inexact-ok += sin downward ldbl-128 0x4p-128L : 0x3.fffffffffffffffffffffffffffep-128L : inexact-ok += sin tonearest ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok += sin towardzero ldbl-128 0x4p-128L : 0x3.fffffffffffffffffffffffffffep-128L : inexact-ok += sin upward ldbl-128 0x4p-128L : 0x4p-128L : inexact-ok += sin downward ldbl-128ibm 0x4p-128L : 0x3.ffffffffffffffffffffffffffp-128L : inexact-ok += sin tonearest ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok += sin towardzero ldbl-128ibm 0x4p-128L : 0x3.ffffffffffffffffffffffffffp-128L : inexact-ok += sin upward ldbl-128ibm 0x4p-128L : 0x4p-128L : inexact-ok += sin downward dbl-64 0x4p-1024 : 0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok += sin tonearest dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok += sin towardzero dbl-64 0x4p-1024 : 0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok += sin upward dbl-64 0x4p-1024 : 0x4p-1024 : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-96-intel 0x4p-1024L : 0x3.fffffffffffffffcp-1024L : inexact-ok += sin tonearest ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok += sin towardzero ldbl-96-intel 0x4p-1024L : 0x3.fffffffffffffffcp-1024L : inexact-ok += sin upward ldbl-96-intel 0x4p-1024L : 0x4p-1024L : inexact-ok += sin downward ldbl-96-m68k 0x4p-1024L : 0x3.fffffffffffffffcp-1024L : inexact-ok += sin tonearest ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok += sin towardzero ldbl-96-m68k 0x4p-1024L : 0x3.fffffffffffffffcp-1024L : inexact-ok += sin upward ldbl-96-m68k 0x4p-1024L : 0x4p-1024L : inexact-ok += sin downward ldbl-128 0x4p-1024L : 0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok += sin tonearest ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok += sin towardzero ldbl-128 0x4p-1024L : 0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok += sin upward ldbl-128 0x4p-1024L : 0x4p-1024L : inexact-ok += sin downward ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128ibm 0x4p-1024L : 0x4p-1024L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-intel 0x4p-16384L : 0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-96-intel 0x4p-16384L : 0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-96-intel 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-96-m68k 0x4p-16384L : 0x3.fffffffffffffffcp-16384L : inexact-ok += sin tonearest ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok += sin towardzero ldbl-96-m68k 0x4p-16384L : 0x3.fffffffffffffffcp-16384L : inexact-ok += sin upward ldbl-96-m68k 0x4p-16384L : 0x4p-16384L : inexact-ok += sin downward ldbl-128 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-128 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-128 0x4p-16384L : 0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-intel 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-m68k 0x2p-16384L : 0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-96-m68k 0x2p-16384L : 0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 0x2p-16384L : 0x2p-16384L : inexact-ok underflow errno-erange-ok += sin downward dbl-64 0x8p-972 : 0x7.ffffffffffffcp-972 : inexact-ok += sin tonearest dbl-64 0x8p-972 : 0x8p-972 : inexact-ok += sin towardzero dbl-64 0x8p-972 : 0x7.ffffffffffffcp-972 : inexact-ok += sin upward dbl-64 0x8p-972 : 0x8p-972 : inexact-ok += sin downward ldbl-96-intel 0x8p-972L : 0x7.fffffffffffffff8p-972L : inexact-ok += sin tonearest ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok += sin towardzero ldbl-96-intel 0x8p-972L : 0x7.fffffffffffffff8p-972L : inexact-ok += sin upward ldbl-96-intel 0x8p-972L : 0x8p-972L : inexact-ok += sin downward ldbl-96-m68k 0x8p-972L : 0x7.fffffffffffffff8p-972L : inexact-ok += sin tonearest ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok += sin towardzero ldbl-96-m68k 0x8p-972L : 0x7.fffffffffffffff8p-972L : inexact-ok += sin upward ldbl-96-m68k 0x8p-972L : 0x8p-972L : inexact-ok += sin downward ldbl-128 0x8p-972L : 0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok += sin tonearest ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok += sin towardzero ldbl-128 0x8p-972L : 0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok += sin upward ldbl-128 0x8p-972L : 0x8p-972L : inexact-ok += sin downward ldbl-128ibm 0x8p-972L : 0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-128ibm 0x8p-972L : 0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-128ibm 0x8p-972L : 0x8p-972L : inexact-ok underflow-ok errno-erange-ok +sin -min += sin downward flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok += sin tonearest flt-32 -0x4p-128f : -0x4p-128f : inexact-ok underflow-ok errno-erange-ok += sin towardzero flt-32 -0x4p-128f : -0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok += sin upward flt-32 -0x4p-128f : -0x3.fffff8p-128f : inexact-ok underflow-ok errno-erange-ok += sin downward dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok += sin tonearest dbl-64 -0x4p-128 : -0x4p-128 : inexact-ok += sin towardzero dbl-64 -0x4p-128 : -0x3.ffffffffffffep-128 : inexact-ok += sin upward dbl-64 -0x4p-128 : -0x3.ffffffffffffep-128 : inexact-ok += sin downward ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok += sin tonearest ldbl-96-intel -0x4p-128L : -0x4p-128L : inexact-ok += sin towardzero ldbl-96-intel -0x4p-128L : -0x3.fffffffffffffffcp-128L : inexact-ok += sin upward ldbl-96-intel -0x4p-128L : -0x3.fffffffffffffffcp-128L : inexact-ok += sin downward ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok += sin tonearest ldbl-96-m68k -0x4p-128L : -0x4p-128L : inexact-ok += sin towardzero ldbl-96-m68k -0x4p-128L : -0x3.fffffffffffffffcp-128L : inexact-ok += sin upward ldbl-96-m68k -0x4p-128L : -0x3.fffffffffffffffcp-128L : inexact-ok += sin downward ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok += sin tonearest ldbl-128 -0x4p-128L : -0x4p-128L : inexact-ok += sin towardzero ldbl-128 -0x4p-128L : -0x3.fffffffffffffffffffffffffffep-128L : inexact-ok += sin upward ldbl-128 -0x4p-128L : -0x3.fffffffffffffffffffffffffffep-128L : inexact-ok += sin downward ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok += sin tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L : inexact-ok += sin towardzero ldbl-128ibm -0x4p-128L : -0x3.ffffffffffffffffffffffffffp-128L : inexact-ok += sin upward ldbl-128ibm -0x4p-128L : -0x3.ffffffffffffffffffffffffffp-128L : inexact-ok += sin downward dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok += sin tonearest dbl-64 -0x4p-1024 : -0x4p-1024 : inexact-ok underflow-ok errno-erange-ok += sin towardzero dbl-64 -0x4p-1024 : -0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok += sin upward dbl-64 -0x4p-1024 : -0x3.ffffffffffffcp-1024 : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok += sin tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L : inexact-ok += sin towardzero ldbl-96-intel -0x4p-1024L : -0x3.fffffffffffffffcp-1024L : inexact-ok += sin upward ldbl-96-intel -0x4p-1024L : -0x3.fffffffffffffffcp-1024L : inexact-ok += sin downward ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok += sin tonearest ldbl-96-m68k -0x4p-1024L : -0x4p-1024L : inexact-ok += sin towardzero ldbl-96-m68k -0x4p-1024L : -0x3.fffffffffffffffcp-1024L : inexact-ok += sin upward ldbl-96-m68k -0x4p-1024L : -0x3.fffffffffffffffcp-1024L : inexact-ok += sin downward ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok += sin tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L : inexact-ok += sin towardzero ldbl-128 -0x4p-1024L : -0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok += sin upward ldbl-128 -0x4p-1024L : -0x3.fffffffffffffffffffffffffffep-1024L : inexact-ok += sin downward ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-96-intel -0x4p-16384L : -0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-96-intel -0x4p-16384L : -0x3.fffffffffffffff8p-16384L : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok += sin tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L : inexact-ok += sin towardzero ldbl-96-m68k -0x4p-16384L : -0x3.fffffffffffffffcp-16384L : inexact-ok += sin upward ldbl-96-m68k -0x4p-16384L : -0x3.fffffffffffffffcp-16384L : inexact-ok += sin downward ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-128 -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-128 -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-96-m68k -0x2p-16384L : -0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-96-m68k -0x2p-16384L : -0x1.fffffffffffffffcp-16384L : inexact-ok underflow-ok errno-erange-ok += sin downward ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L : inexact-ok underflow errno-erange-ok += sin downward dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok += sin tonearest dbl-64 -0x8p-972 : -0x8p-972 : inexact-ok += sin towardzero dbl-64 -0x8p-972 : -0x7.ffffffffffffcp-972 : inexact-ok += sin upward dbl-64 -0x8p-972 : -0x7.ffffffffffffcp-972 : inexact-ok += sin downward ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok += sin tonearest ldbl-96-intel -0x8p-972L : -0x8p-972L : inexact-ok += sin towardzero ldbl-96-intel -0x8p-972L : -0x7.fffffffffffffff8p-972L : inexact-ok += sin upward ldbl-96-intel -0x8p-972L : -0x7.fffffffffffffff8p-972L : inexact-ok += sin downward ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok += sin tonearest ldbl-96-m68k -0x8p-972L : -0x8p-972L : inexact-ok += sin towardzero ldbl-96-m68k -0x8p-972L : -0x7.fffffffffffffff8p-972L : inexact-ok += sin upward ldbl-96-m68k -0x8p-972L : -0x7.fffffffffffffff8p-972L : inexact-ok += sin downward ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok += sin tonearest ldbl-128 -0x8p-972L : -0x8p-972L : inexact-ok += sin towardzero ldbl-128 -0x8p-972L : -0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok += sin upward ldbl-128 -0x8p-972L : -0x7.fffffffffffffffffffffffffffcp-972L : inexact-ok += sin downward ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok += sin tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L : inexact-ok underflow-ok errno-erange-ok += sin towardzero ldbl-128ibm -0x8p-972L : -0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok += sin upward ldbl-128ibm -0x8p-972L : -0x7.fffffffffffffffffffffffffcp-972L : inexact-ok underflow-ok errno-erange-ok +sin min_subnorm += sin downward flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok += sin tonearest flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok += sin towardzero flt-32 0x8p-152f : 0x0p+0f : inexact-ok underflow errno-erange-ok += sin upward flt-32 0x8p-152f : 0x8p-152f : inexact-ok underflow errno-erange-ok += sin downward dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok += sin tonearest dbl-64 0x8p-152 : 0x8p-152 : inexact-ok += sin towardzero dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 : inexact-ok += sin upward dbl-64 0x8p-152 : 0x8p-152 : inexact-ok += sin downward ldbl-96-intel 0x8p-152L : 0x7.fffffffffffffff8p-152L : inexact-ok += sin tonearest ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok += sin towardzero ldbl-96-intel 0x8p-152L : 0x7.fffffffffffffff8p-152L : inexact-ok += sin upward ldbl-96-intel 0x8p-152L : 0x8p-152L : inexact-ok += sin downward ldbl-96-m68k 0x8p-152L : 0x7.fffffffffffffff8p-152L : inexact-ok += sin tonearest ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok += sin towardzero ldbl-96-m68k 0x8p-152L : 0x7.fffffffffffffff8p-152L : inexact-ok += sin upward ldbl-96-m68k 0x8p-152L : 0x8p-152L : inexact-ok += sin downward ldbl-128 0x8p-152L : 0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok += sin tonearest ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok += sin towardzero ldbl-128 0x8p-152L : 0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok += sin upward ldbl-128 0x8p-152L : 0x8p-152L : inexact-ok += sin downward ldbl-128ibm 0x8p-152L : 0x7.fffffffffffffffffffffffffep-152L : inexact-ok += sin tonearest ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok += sin towardzero ldbl-128ibm 0x8p-152L : 0x7.fffffffffffffffffffffffffep-152L : inexact-ok += sin upward ldbl-128ibm 0x8p-152L : 0x8p-152L : inexact-ok += sin downward dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow errno-erange-ok += sin tonearest dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += sin towardzero dbl-64 0x4p-1076 : 0x0p+0 : inexact-ok underflow errno-erange-ok += sin upward dbl-64 0x4p-1076 : 0x4p-1076 : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok += sin tonearest ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok += sin towardzero ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok += sin upward ldbl-96-intel 0x4p-1076L : 0x4p-1076L : inexact-ok += sin downward ldbl-96-m68k 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok += sin tonearest ldbl-96-m68k 0x4p-1076L : 0x4p-1076L : inexact-ok += sin towardzero ldbl-96-m68k 0x4p-1076L : 0x3.fffffffffffffffcp-1076L : inexact-ok += sin upward ldbl-96-m68k 0x4p-1076L : 0x4p-1076L : inexact-ok += sin downward ldbl-128 0x4p-1076L : 0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok += sin tonearest ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok += sin towardzero ldbl-128 0x4p-1076L : 0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok += sin upward ldbl-128 0x4p-1076L : 0x4p-1076L : inexact-ok += sin downward ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128ibm 0x4p-1076L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128ibm 0x4p-1076L : 0x4p-1076L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-intel 0x8p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-intel 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-intel 0x8p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-intel 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-m68k 0x8p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-m68k 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-m68k 0x8p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-m68k 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 0x8p-16448L : 0x8p-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-m68k 0x4p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-m68k 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-m68k 0x4p-16448L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-m68k 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 0x4p-16448L : 0x4p-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 0x4p-16496L : 0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 0x4p-16496L : 0x4p-16496L : inexact-ok underflow errno-erange-ok +sin -min_subnorm += sin downward flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow errno-erange-ok += sin tonearest flt-32 -0x8p-152f : -0x8p-152f : inexact-ok underflow errno-erange-ok += sin towardzero flt-32 -0x8p-152f : -0x0p+0f : inexact-ok underflow errno-erange-ok += sin upward flt-32 -0x8p-152f : -0x0p+0f : inexact-ok underflow errno-erange-ok += sin downward dbl-64 -0x8p-152 : -0x8p-152 : inexact-ok += sin tonearest dbl-64 -0x8p-152 : -0x8p-152 : inexact-ok += sin towardzero dbl-64 -0x8p-152 : -0x7.ffffffffffffcp-152 : inexact-ok += sin upward dbl-64 -0x8p-152 : -0x7.ffffffffffffcp-152 : inexact-ok += sin downward ldbl-96-intel -0x8p-152L : -0x8p-152L : inexact-ok += sin tonearest ldbl-96-intel -0x8p-152L : -0x8p-152L : inexact-ok += sin towardzero ldbl-96-intel -0x8p-152L : -0x7.fffffffffffffff8p-152L : inexact-ok += sin upward ldbl-96-intel -0x8p-152L : -0x7.fffffffffffffff8p-152L : inexact-ok += sin downward ldbl-96-m68k -0x8p-152L : -0x8p-152L : inexact-ok += sin tonearest ldbl-96-m68k -0x8p-152L : -0x8p-152L : inexact-ok += sin towardzero ldbl-96-m68k -0x8p-152L : -0x7.fffffffffffffff8p-152L : inexact-ok += sin upward ldbl-96-m68k -0x8p-152L : -0x7.fffffffffffffff8p-152L : inexact-ok += sin downward ldbl-128 -0x8p-152L : -0x8p-152L : inexact-ok += sin tonearest ldbl-128 -0x8p-152L : -0x8p-152L : inexact-ok += sin towardzero ldbl-128 -0x8p-152L : -0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok += sin upward ldbl-128 -0x8p-152L : -0x7.fffffffffffffffffffffffffffcp-152L : inexact-ok += sin downward ldbl-128ibm -0x8p-152L : -0x8p-152L : inexact-ok += sin tonearest ldbl-128ibm -0x8p-152L : -0x8p-152L : inexact-ok += sin towardzero ldbl-128ibm -0x8p-152L : -0x7.fffffffffffffffffffffffffep-152L : inexact-ok += sin upward ldbl-128ibm -0x8p-152L : -0x7.fffffffffffffffffffffffffep-152L : inexact-ok += sin downward dbl-64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok += sin tonearest dbl-64 -0x4p-1076 : -0x4p-1076 : inexact-ok underflow errno-erange-ok += sin towardzero dbl-64 -0x4p-1076 : -0x0p+0 : inexact-ok underflow errno-erange-ok += sin upward dbl-64 -0x4p-1076 : -0x0p+0 : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-intel -0x4p-1076L : -0x4p-1076L : inexact-ok += sin tonearest ldbl-96-intel -0x4p-1076L : -0x4p-1076L : inexact-ok += sin towardzero ldbl-96-intel -0x4p-1076L : -0x3.fffffffffffffffcp-1076L : inexact-ok += sin upward ldbl-96-intel -0x4p-1076L : -0x3.fffffffffffffffcp-1076L : inexact-ok += sin downward ldbl-96-m68k -0x4p-1076L : -0x4p-1076L : inexact-ok += sin tonearest ldbl-96-m68k -0x4p-1076L : -0x4p-1076L : inexact-ok += sin towardzero ldbl-96-m68k -0x4p-1076L : -0x3.fffffffffffffffcp-1076L : inexact-ok += sin upward ldbl-96-m68k -0x4p-1076L : -0x3.fffffffffffffffcp-1076L : inexact-ok += sin downward ldbl-128 -0x4p-1076L : -0x4p-1076L : inexact-ok += sin tonearest ldbl-128 -0x4p-1076L : -0x4p-1076L : inexact-ok += sin towardzero ldbl-128 -0x4p-1076L : -0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok += sin upward ldbl-128 -0x4p-1076L : -0x3.fffffffffffffffffffffffffffep-1076L : inexact-ok += sin downward ldbl-128ibm -0x4p-1076L : -0x4p-1076L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128ibm -0x4p-1076L : -0x4p-1076L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128ibm -0x4p-1076L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128ibm -0x4p-1076L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-intel -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-intel -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-intel -0x8p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-intel -0x8p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-m68k -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-m68k -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-m68k -0x8p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-m68k -0x8p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-128 -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 -0x8p-16448L : -0x8p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-96-m68k -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-96-m68k -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-96-m68k -0x4p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-96-m68k -0x4p-16448L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin downward ldbl-128 -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 -0x4p-16448L : -0x4p-16448L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L : inexact-ok underflow errno-erange-ok += sin downward ldbl-128 -0x4p-16496L : -0x4p-16496L : inexact-ok underflow errno-erange-ok += sin tonearest ldbl-128 -0x4p-16496L : -0x4p-16496L : inexact-ok underflow errno-erange-ok += sin towardzero ldbl-128 -0x4p-16496L : -0x0p+0L : inexact-ok underflow errno-erange-ok += sin upward ldbl-128 -0x4p-16496L : -0x0p+0L : inexact-ok underflow errno-erange-ok sincos 0 = sincos downward flt-32 0x0p+0f : 0x0p+0f 0x1p+0f : inexact-ok = sincos tonearest flt-32 0x0p+0f : 0x0p+0f 0x1p+0f : inexact-ok @@ -183142,6 +183458,322 @@ sincos 0x4.7857dp+68 = sincos tonearest ldbl-128ibm 0x4.7857dp+68L : -0x1.ffb679ba994b76173f9040638p-4L -0xf.dfe902135fc1c18492e869a3f8p-4L : inexact-ok = sincos towardzero ldbl-128ibm 0x4.7857dp+68L : -0x1.ffb679ba994b76173f9040637f8p-4L -0xf.dfe902135fc1c18492e869a3f8p-4L : inexact-ok = sincos upward ldbl-128ibm 0x4.7857dp+68L : -0x1.ffb679ba994b76173f9040637f8p-4L -0xf.dfe902135fc1c18492e869a3f8p-4L : inexact-ok +sincos min += sincos downward flt-32 0x4p-128f : 0x3.fffff8p-128f 0xf.fffffp-4f : inexact-ok underflow-ok errno-erange-ok += sincos tonearest flt-32 0x4p-128f : 0x4p-128f 0x1p+0f : inexact-ok underflow-ok errno-erange-ok += sincos towardzero flt-32 0x4p-128f : 0x3.fffff8p-128f 0xf.fffffp-4f : inexact-ok underflow-ok errno-erange-ok += sincos upward flt-32 0x4p-128f : 0x4p-128f 0x1p+0f : inexact-ok underflow-ok errno-erange-ok += sincos downward dbl-64 0x4p-128 : 0x3.ffffffffffffep-128 0xf.ffffffffffff8p-4 : inexact-ok += sincos tonearest dbl-64 0x4p-128 : 0x4p-128 0x1p+0 : inexact-ok += sincos towardzero dbl-64 0x4p-128 : 0x3.ffffffffffffep-128 0xf.ffffffffffff8p-4 : inexact-ok += sincos upward dbl-64 0x4p-128 : 0x4p-128 0x1p+0 : inexact-ok += sincos downward ldbl-96-intel 0x4p-128L : 0x3.fffffffffffffffcp-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel 0x4p-128L : 0x3.fffffffffffffffcp-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k 0x4p-128L : 0x3.fffffffffffffffcp-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k 0x4p-128L : 0x3.fffffffffffffffcp-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos downward ldbl-128 0x4p-128L : 0x3.fffffffffffffffffffffffffffep-128L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 0x4p-128L : 0x3.fffffffffffffffffffffffffffep-128L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm 0x4p-128L : 0x3.ffffffffffffffffffffffffffp-128L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos tonearest ldbl-128ibm 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128ibm 0x4p-128L : 0x3.ffffffffffffffffffffffffffp-128L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos upward ldbl-128ibm 0x4p-128L : 0x4p-128L 0x1p+0L : inexact-ok += sincos downward dbl-64 0x4p-1024 : 0x3.ffffffffffffcp-1024 0xf.ffffffffffff8p-4 : inexact-ok underflow-ok errno-erange-ok += sincos tonearest dbl-64 0x4p-1024 : 0x4p-1024 0x1p+0 : inexact-ok underflow-ok errno-erange-ok += sincos towardzero dbl-64 0x4p-1024 : 0x3.ffffffffffffcp-1024 0xf.ffffffffffff8p-4 : inexact-ok underflow-ok errno-erange-ok += sincos upward dbl-64 0x4p-1024 : 0x4p-1024 0x1p+0 : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-96-intel 0x4p-1024L : 0x3.fffffffffffffffcp-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel 0x4p-1024L : 0x3.fffffffffffffffcp-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k 0x4p-1024L : 0x3.fffffffffffffffcp-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k 0x4p-1024L : 0x3.fffffffffffffffcp-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok += sincos downward ldbl-128 0x4p-1024L : 0x3.fffffffffffffffffffffffffffep-1024L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 0x4p-1024L : 0x3.fffffffffffffffffffffffffffep-1024L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128ibm 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128ibm 0x4p-1024L : 0x3.ffffffffffffcp-1024L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128ibm 0x4p-1024L : 0x4p-1024L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-intel 0x4p-16384L : 0x3.fffffffffffffff8p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-96-intel 0x4p-16384L : 0x4p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-96-intel 0x4p-16384L : 0x3.fffffffffffffff8p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-96-intel 0x4p-16384L : 0x4p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-96-m68k 0x4p-16384L : 0x3.fffffffffffffffcp-16384L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k 0x4p-16384L : 0x4p-16384L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k 0x4p-16384L : 0x3.fffffffffffffffcp-16384L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k 0x4p-16384L : 0x4p-16384L 0x1p+0L : inexact-ok += sincos downward ldbl-128 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-128 0x4p-16384L : 0x4p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-128 0x4p-16384L : 0x3.fffffffffffffffffffffffffffcp-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-128 0x4p-16384L : 0x4p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-intel 0x2p-16384L : 0x2p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-intel 0x2p-16384L : 0x1.fffffffffffffff8p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-intel 0x2p-16384L : 0x2p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-m68k 0x2p-16384L : 0x1.fffffffffffffffcp-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-96-m68k 0x2p-16384L : 0x2p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-96-m68k 0x2p-16384L : 0x1.fffffffffffffffcp-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-96-m68k 0x2p-16384L : 0x2p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 0x2p-16384L : 0x2p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 0x2p-16384L : 0x1.fffffffffffffffffffffffffffcp-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 0x2p-16384L : 0x2p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward dbl-64 0x8p-972 : 0x7.ffffffffffffcp-972 0xf.ffffffffffff8p-4 : inexact-ok += sincos tonearest dbl-64 0x8p-972 : 0x8p-972 0x1p+0 : inexact-ok += sincos towardzero dbl-64 0x8p-972 : 0x7.ffffffffffffcp-972 0xf.ffffffffffff8p-4 : inexact-ok += sincos upward dbl-64 0x8p-972 : 0x8p-972 0x1p+0 : inexact-ok += sincos downward ldbl-96-intel 0x8p-972L : 0x7.fffffffffffffff8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel 0x8p-972L : 0x7.fffffffffffffff8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k 0x8p-972L : 0x7.fffffffffffffff8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k 0x8p-972L : 0x7.fffffffffffffff8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok += sincos downward ldbl-128 0x8p-972L : 0x7.fffffffffffffffffffffffffffcp-972L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 0x8p-972L : 0x7.fffffffffffffffffffffffffffcp-972L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm 0x8p-972L : 0x7.fffffffffffffffffffffffffcp-972L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-128ibm 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-128ibm 0x8p-972L : 0x7.fffffffffffffffffffffffffcp-972L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-128ibm 0x8p-972L : 0x8p-972L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok +sincos -min += sincos downward flt-32 -0x4p-128f : -0x4p-128f 0xf.fffffp-4f : inexact-ok underflow-ok errno-erange-ok += sincos tonearest flt-32 -0x4p-128f : -0x4p-128f 0x1p+0f : inexact-ok underflow-ok errno-erange-ok += sincos towardzero flt-32 -0x4p-128f : -0x3.fffff8p-128f 0xf.fffffp-4f : inexact-ok underflow-ok errno-erange-ok += sincos upward flt-32 -0x4p-128f : -0x3.fffff8p-128f 0x1p+0f : inexact-ok underflow-ok errno-erange-ok += sincos downward dbl-64 -0x4p-128 : -0x4p-128 0xf.ffffffffffff8p-4 : inexact-ok += sincos tonearest dbl-64 -0x4p-128 : -0x4p-128 0x1p+0 : inexact-ok += sincos towardzero dbl-64 -0x4p-128 : -0x3.ffffffffffffep-128 0xf.ffffffffffff8p-4 : inexact-ok += sincos upward dbl-64 -0x4p-128 : -0x3.ffffffffffffep-128 0x1p+0 : inexact-ok += sincos downward ldbl-96-intel -0x4p-128L : -0x4p-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel -0x4p-128L : -0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel -0x4p-128L : -0x3.fffffffffffffffcp-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel -0x4p-128L : -0x3.fffffffffffffffcp-128L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k -0x4p-128L : -0x4p-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k -0x4p-128L : -0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k -0x4p-128L : -0x3.fffffffffffffffcp-128L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k -0x4p-128L : -0x3.fffffffffffffffcp-128L 0x1p+0L : inexact-ok += sincos downward ldbl-128 -0x4p-128L : -0x4p-128L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 -0x4p-128L : -0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 -0x4p-128L : -0x3.fffffffffffffffffffffffffffep-128L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 -0x4p-128L : -0x3.fffffffffffffffffffffffffffep-128L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm -0x4p-128L : -0x4p-128L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos tonearest ldbl-128ibm -0x4p-128L : -0x4p-128L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128ibm -0x4p-128L : -0x3.ffffffffffffffffffffffffffp-128L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos upward ldbl-128ibm -0x4p-128L : -0x3.ffffffffffffffffffffffffffp-128L 0x1p+0L : inexact-ok += sincos downward dbl-64 -0x4p-1024 : -0x4p-1024 0xf.ffffffffffff8p-4 : inexact-ok underflow-ok errno-erange-ok += sincos tonearest dbl-64 -0x4p-1024 : -0x4p-1024 0x1p+0 : inexact-ok underflow-ok errno-erange-ok += sincos towardzero dbl-64 -0x4p-1024 : -0x3.ffffffffffffcp-1024 0xf.ffffffffffff8p-4 : inexact-ok underflow-ok errno-erange-ok += sincos upward dbl-64 -0x4p-1024 : -0x3.ffffffffffffcp-1024 0x1p+0 : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-96-intel -0x4p-1024L : -0x4p-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel -0x4p-1024L : -0x4p-1024L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel -0x4p-1024L : -0x3.fffffffffffffffcp-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel -0x4p-1024L : -0x3.fffffffffffffffcp-1024L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k -0x4p-1024L : -0x4p-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k -0x4p-1024L : -0x4p-1024L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k -0x4p-1024L : -0x3.fffffffffffffffcp-1024L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k -0x4p-1024L : -0x3.fffffffffffffffcp-1024L 0x1p+0L : inexact-ok += sincos downward ldbl-128 -0x4p-1024L : -0x4p-1024L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 -0x4p-1024L : -0x4p-1024L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 -0x4p-1024L : -0x3.fffffffffffffffffffffffffffep-1024L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 -0x4p-1024L : -0x3.fffffffffffffffffffffffffffep-1024L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm -0x4p-1024L : -0x4p-1024L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128ibm -0x4p-1024L : -0x4p-1024L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128ibm -0x4p-1024L : -0x3.ffffffffffffcp-1024L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-intel -0x4p-16384L : -0x4p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-96-intel -0x4p-16384L : -0x4p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-96-intel -0x4p-16384L : -0x3.fffffffffffffff8p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-96-intel -0x4p-16384L : -0x3.fffffffffffffff8p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-96-m68k -0x4p-16384L : -0x4p-16384L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k -0x4p-16384L : -0x4p-16384L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k -0x4p-16384L : -0x3.fffffffffffffffcp-16384L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k -0x4p-16384L : -0x3.fffffffffffffffcp-16384L 0x1p+0L : inexact-ok += sincos downward ldbl-128 -0x4p-16384L : -0x4p-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-128 -0x4p-16384L : -0x4p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-128 -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-128 -0x4p-16384L : -0x3.fffffffffffffffffffffffffffcp-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-96-intel -0x2p-16384L : -0x2p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-intel -0x2p-16384L : -0x2p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-intel -0x2p-16384L : -0x1.fffffffffffffff8p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-m68k -0x2p-16384L : -0x2p-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-96-m68k -0x2p-16384L : -0x2p-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-96-m68k -0x2p-16384L : -0x1.fffffffffffffffcp-16384L 0xf.fffffffffffffffp-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-96-m68k -0x2p-16384L : -0x1.fffffffffffffffcp-16384L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos downward ldbl-128 -0x2p-16384L : -0x2p-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 -0x2p-16384L : -0x2p-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 -0x2p-16384L : -0x1.fffffffffffffffffffffffffffcp-16384L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward dbl-64 -0x8p-972 : -0x8p-972 0xf.ffffffffffff8p-4 : inexact-ok += sincos tonearest dbl-64 -0x8p-972 : -0x8p-972 0x1p+0 : inexact-ok += sincos towardzero dbl-64 -0x8p-972 : -0x7.ffffffffffffcp-972 0xf.ffffffffffff8p-4 : inexact-ok += sincos upward dbl-64 -0x8p-972 : -0x7.ffffffffffffcp-972 0x1p+0 : inexact-ok += sincos downward ldbl-96-intel -0x8p-972L : -0x8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel -0x8p-972L : -0x8p-972L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel -0x8p-972L : -0x7.fffffffffffffff8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel -0x8p-972L : -0x7.fffffffffffffff8p-972L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k -0x8p-972L : -0x8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k -0x8p-972L : -0x8p-972L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k -0x8p-972L : -0x7.fffffffffffffff8p-972L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k -0x8p-972L : -0x7.fffffffffffffff8p-972L 0x1p+0L : inexact-ok += sincos downward ldbl-128 -0x8p-972L : -0x8p-972L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 -0x8p-972L : -0x8p-972L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 -0x8p-972L : -0x7.fffffffffffffffffffffffffffcp-972L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 -0x8p-972L : -0x7.fffffffffffffffffffffffffffcp-972L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm -0x8p-972L : -0x8p-972L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow-ok errno-erange-ok += sincos tonearest ldbl-128ibm -0x8p-972L : -0x8p-972L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok += sincos towardzero ldbl-128ibm -0x8p-972L : -0x7.fffffffffffffffffffffffffcp-972L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow-ok errno-erange-ok += sincos upward ldbl-128ibm -0x8p-972L : -0x7.fffffffffffffffffffffffffcp-972L 0x1p+0L : inexact-ok underflow-ok errno-erange-ok +sincos min_subnorm += sincos downward flt-32 0x8p-152f : 0x0p+0f 0xf.fffffp-4f : inexact-ok underflow errno-erange-ok += sincos tonearest flt-32 0x8p-152f : 0x8p-152f 0x1p+0f : inexact-ok underflow errno-erange-ok += sincos towardzero flt-32 0x8p-152f : 0x0p+0f 0xf.fffffp-4f : inexact-ok underflow errno-erange-ok += sincos upward flt-32 0x8p-152f : 0x8p-152f 0x1p+0f : inexact-ok underflow errno-erange-ok += sincos downward dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 0xf.ffffffffffff8p-4 : inexact-ok += sincos tonearest dbl-64 0x8p-152 : 0x8p-152 0x1p+0 : inexact-ok += sincos towardzero dbl-64 0x8p-152 : 0x7.ffffffffffffcp-152 0xf.ffffffffffff8p-4 : inexact-ok += sincos upward dbl-64 0x8p-152 : 0x8p-152 0x1p+0 : inexact-ok += sincos downward ldbl-96-intel 0x8p-152L : 0x7.fffffffffffffff8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel 0x8p-152L : 0x7.fffffffffffffff8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k 0x8p-152L : 0x7.fffffffffffffff8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k 0x8p-152L : 0x7.fffffffffffffff8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos downward ldbl-128 0x8p-152L : 0x7.fffffffffffffffffffffffffffcp-152L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 0x8p-152L : 0x7.fffffffffffffffffffffffffffcp-152L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm 0x8p-152L : 0x7.fffffffffffffffffffffffffep-152L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos tonearest ldbl-128ibm 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128ibm 0x8p-152L : 0x7.fffffffffffffffffffffffffep-152L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos upward ldbl-128ibm 0x8p-152L : 0x8p-152L 0x1p+0L : inexact-ok += sincos downward dbl-64 0x4p-1076 : 0x0p+0 0xf.ffffffffffff8p-4 : inexact-ok underflow errno-erange-ok += sincos tonearest dbl-64 0x4p-1076 : 0x4p-1076 0x1p+0 : inexact-ok underflow errno-erange-ok += sincos towardzero dbl-64 0x4p-1076 : 0x0p+0 0xf.ffffffffffff8p-4 : inexact-ok underflow errno-erange-ok += sincos upward dbl-64 0x4p-1076 : 0x4p-1076 0x1p+0 : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel 0x4p-1076L : 0x3.fffffffffffffffcp-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k 0x4p-1076L : 0x3.fffffffffffffffcp-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k 0x4p-1076L : 0x3.fffffffffffffffcp-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok += sincos downward ldbl-128 0x4p-1076L : 0x3.fffffffffffffffffffffffffffep-1076L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 0x4p-1076L : 0x3.fffffffffffffffffffffffffffep-1076L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm 0x4p-1076L : 0x0p+0L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128ibm 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128ibm 0x4p-1076L : 0x0p+0L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128ibm 0x4p-1076L : 0x4p-1076L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-intel 0x8p-16448L : 0x0p+0L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-intel 0x8p-16448L : 0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-intel 0x8p-16448L : 0x0p+0L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-intel 0x8p-16448L : 0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-m68k 0x8p-16448L : 0x4p-16448L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-m68k 0x8p-16448L : 0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-m68k 0x8p-16448L : 0x4p-16448L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-m68k 0x8p-16448L : 0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 0x8p-16448L : 0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 0x8p-16448L : 0x7.fffffffffffcp-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 0x8p-16448L : 0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-m68k 0x4p-16448L : 0x0p+0L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-m68k 0x4p-16448L : 0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-m68k 0x4p-16448L : 0x0p+0L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-m68k 0x4p-16448L : 0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 0x4p-16448L : 0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 0x4p-16448L : 0x3.fffffffffffcp-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 0x4p-16448L : 0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-128 0x4p-16496L : 0x0p+0L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 0x4p-16496L : 0x4p-16496L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 0x4p-16496L : 0x0p+0L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 0x4p-16496L : 0x4p-16496L 0x1p+0L : inexact-ok underflow errno-erange-ok +sincos -min_subnorm += sincos downward flt-32 -0x8p-152f : -0x8p-152f 0xf.fffffp-4f : inexact-ok underflow errno-erange-ok += sincos tonearest flt-32 -0x8p-152f : -0x8p-152f 0x1p+0f : inexact-ok underflow errno-erange-ok += sincos towardzero flt-32 -0x8p-152f : -0x0p+0f 0xf.fffffp-4f : inexact-ok underflow errno-erange-ok += sincos upward flt-32 -0x8p-152f : -0x0p+0f 0x1p+0f : inexact-ok underflow errno-erange-ok += sincos downward dbl-64 -0x8p-152 : -0x8p-152 0xf.ffffffffffff8p-4 : inexact-ok += sincos tonearest dbl-64 -0x8p-152 : -0x8p-152 0x1p+0 : inexact-ok += sincos towardzero dbl-64 -0x8p-152 : -0x7.ffffffffffffcp-152 0xf.ffffffffffff8p-4 : inexact-ok += sincos upward dbl-64 -0x8p-152 : -0x7.ffffffffffffcp-152 0x1p+0 : inexact-ok += sincos downward ldbl-96-intel -0x8p-152L : -0x8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel -0x8p-152L : -0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel -0x8p-152L : -0x7.fffffffffffffff8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel -0x8p-152L : -0x7.fffffffffffffff8p-152L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k -0x8p-152L : -0x8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k -0x8p-152L : -0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k -0x8p-152L : -0x7.fffffffffffffff8p-152L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k -0x8p-152L : -0x7.fffffffffffffff8p-152L 0x1p+0L : inexact-ok += sincos downward ldbl-128 -0x8p-152L : -0x8p-152L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 -0x8p-152L : -0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 -0x8p-152L : -0x7.fffffffffffffffffffffffffffcp-152L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 -0x8p-152L : -0x7.fffffffffffffffffffffffffffcp-152L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm -0x8p-152L : -0x8p-152L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos tonearest ldbl-128ibm -0x8p-152L : -0x8p-152L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128ibm -0x8p-152L : -0x7.fffffffffffffffffffffffffep-152L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok += sincos upward ldbl-128ibm -0x8p-152L : -0x7.fffffffffffffffffffffffffep-152L 0x1p+0L : inexact-ok += sincos downward dbl-64 -0x4p-1076 : -0x4p-1076 0xf.ffffffffffff8p-4 : inexact-ok underflow errno-erange-ok += sincos tonearest dbl-64 -0x4p-1076 : -0x4p-1076 0x1p+0 : inexact-ok underflow errno-erange-ok += sincos towardzero dbl-64 -0x4p-1076 : -0x0p+0 0xf.ffffffffffff8p-4 : inexact-ok underflow errno-erange-ok += sincos upward dbl-64 -0x4p-1076 : -0x0p+0 0x1p+0 : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-intel -0x4p-1076L : -0x4p-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-intel -0x4p-1076L : -0x4p-1076L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-intel -0x4p-1076L : -0x3.fffffffffffffffcp-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-intel -0x4p-1076L : -0x3.fffffffffffffffcp-1076L 0x1p+0L : inexact-ok += sincos downward ldbl-96-m68k -0x4p-1076L : -0x4p-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos tonearest ldbl-96-m68k -0x4p-1076L : -0x4p-1076L 0x1p+0L : inexact-ok += sincos towardzero ldbl-96-m68k -0x4p-1076L : -0x3.fffffffffffffffcp-1076L 0xf.fffffffffffffffp-4L : inexact-ok += sincos upward ldbl-96-m68k -0x4p-1076L : -0x3.fffffffffffffffcp-1076L 0x1p+0L : inexact-ok += sincos downward ldbl-128 -0x4p-1076L : -0x4p-1076L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos tonearest ldbl-128 -0x4p-1076L : -0x4p-1076L 0x1p+0L : inexact-ok += sincos towardzero ldbl-128 -0x4p-1076L : -0x3.fffffffffffffffffffffffffffep-1076L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok += sincos upward ldbl-128 -0x4p-1076L : -0x3.fffffffffffffffffffffffffffep-1076L 0x1p+0L : inexact-ok += sincos downward ldbl-128ibm -0x4p-1076L : -0x4p-1076L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128ibm -0x4p-1076L : -0x4p-1076L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128ibm -0x4p-1076L : -0x0p+0L 0xf.fffffffffffffffffffffffffcp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128ibm -0x4p-1076L : -0x0p+0L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-intel -0x8p-16448L : -0x8p-16448L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-intel -0x8p-16448L : -0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-intel -0x8p-16448L : -0x0p+0L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-intel -0x8p-16448L : -0x0p+0L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-m68k -0x8p-16448L : -0x8p-16448L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-m68k -0x8p-16448L : -0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-m68k -0x8p-16448L : -0x4p-16448L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-m68k -0x8p-16448L : -0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-128 -0x8p-16448L : -0x8p-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 -0x8p-16448L : -0x8p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 -0x8p-16448L : -0x7.fffffffffffcp-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-96-m68k -0x4p-16448L : -0x4p-16448L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-96-m68k -0x4p-16448L : -0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-96-m68k -0x4p-16448L : -0x0p+0L 0xf.fffffffffffffffp-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-96-m68k -0x4p-16448L : -0x0p+0L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-128 -0x4p-16448L : -0x4p-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 -0x4p-16448L : -0x4p-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 -0x4p-16448L : -0x3.fffffffffffcp-16448L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos downward ldbl-128 -0x4p-16496L : -0x4p-16496L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos tonearest ldbl-128 -0x4p-16496L : -0x4p-16496L 0x1p+0L : inexact-ok underflow errno-erange-ok += sincos towardzero ldbl-128 -0x4p-16496L : -0x0p+0L 0xf.fffffffffffffffffffffffffff8p-4L : inexact-ok underflow errno-erange-ok += sincos upward ldbl-128 -0x4p-16496L : -0x0p+0L 0x1p+0L : inexact-ok underflow errno-erange-ok sinh 0 = sinh downward flt-32 0x0p+0f : 0x0p+0f : inexact-ok = sinh tonearest flt-32 0x0p+0f : 0x0p+0f : inexact-ok diff --git a/sysdeps/ieee754/dbl-64/s_sin.c b/sysdeps/ieee754/dbl-64/s_sin.c index ea89ad5cb2..eff120e88d 100644 --- a/sysdeps/ieee754/dbl-64/s_sin.c +++ b/sysdeps/ieee754/dbl-64/s_sin.c @@ -48,6 +48,7 @@ #include <errno.h> +#include <float.h> #include "endian.h" #include "mydefs.h" #include "usncs.h" @@ -295,7 +296,14 @@ __sin (double x) m = u.i[HIGH_HALF]; k = 0x7fffffff & m; /* no sign */ if (k < 0x3e500000) /* if x->0 =>sin(x)=x */ - retval = x; + { + if (fabs (x) < DBL_MIN) + { + double force_underflow = x * x; + math_force_eval (force_underflow); + } + retval = x; + } /*---------------------------- 2^-26 < |x|< 0.25 ----------------------*/ else if (k < 0x3fd00000) { diff --git a/sysdeps/ieee754/flt-32/k_sinf.c b/sysdeps/ieee754/flt-32/k_sinf.c index 0bafd83cf0..0c98a2ae91 100644 --- a/sysdeps/ieee754/flt-32/k_sinf.c +++ b/sysdeps/ieee754/flt-32/k_sinf.c @@ -17,6 +17,7 @@ static char rcsid[] = "$NetBSD: k_sinf.c,v 1.4 1995/05/10 20:46:33 jtc Exp $"; #endif +#include <float.h> #include <math.h> #include <math_private.h> @@ -36,7 +37,15 @@ float __kernel_sinf(float x, float y, int iy) GET_FLOAT_WORD(ix,x); ix &= 0x7fffffff; /* high word of x */ if(ix<0x32000000) /* |x| < 2**-27 */ - {if((int)x==0) return x;} /* generate inexact */ + { + if (fabsf (x) < FLT_MIN) + { + float force_underflow = x * x; + math_force_eval (force_underflow); + } + if ((int) x == 0) + return x; /* generate inexact */ + } z = x*x; v = z*x; r = S2+z*(S3+z*(S4+z*(S5+z*S6))); diff --git a/sysdeps/ieee754/ldbl-128/k_sincosl.c b/sysdeps/ieee754/ldbl-128/k_sincosl.c index 2f66dee6d8..7b5c4b0e81 100644 --- a/sysdeps/ieee754/ldbl-128/k_sincosl.c +++ b/sysdeps/ieee754/ldbl-128/k_sincosl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <float.h> #include <math.h> #include <math_private.h> @@ -109,12 +110,19 @@ __kernel_sincosl(long double x, long double y, long double *sinx, long double *c /* Argument is small enough to approximate it by a Chebyshev polynomial of degree 16(17). */ if (tix < 0x3fc60000) /* |x| < 2^-57 */ - if (!((int)x)) /* generate inexact */ - { - *sinx = x; - *cosx = ONE; - return; - } + { + if (fabsl (x) < LDBL_MIN) + { + long double force_underflow = x * x; + math_force_eval (force_underflow); + } + if (!((int)x)) /* generate inexact */ + { + *sinx = x; + *cosx = ONE; + return; + } + } z = x * x; *sinx = x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8))))))))); diff --git a/sysdeps/ieee754/ldbl-128/k_sinl.c b/sysdeps/ieee754/ldbl-128/k_sinl.c index b15521badf..04d539ff1a 100644 --- a/sysdeps/ieee754/ldbl-128/k_sinl.c +++ b/sysdeps/ieee754/ldbl-128/k_sinl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <float.h> #include <math.h> #include <math_private.h> @@ -90,7 +91,14 @@ __kernel_sinl(long double x, long double y, int iy) /* Argument is small enough to approximate it by a Chebyshev polynomial of degree 17. */ if (tix < 0x3fc60000) /* |x| < 2^-57 */ - if (!((int)x)) return x; /* generate inexact */ + { + if (fabsl (x) < LDBL_MIN) + { + long double force_underflow = x * x; + math_force_eval (force_underflow); + } + if (!((int)x)) return x; /* generate inexact */ + } z = x * x; return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8))))))))); diff --git a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c index f831e3f1f3..0a76e1c7e7 100644 --- a/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c +++ b/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <float.h> #include <math.h> #include <math_private.h> @@ -112,12 +113,19 @@ __kernel_sincosl(long double x, long double y, long double *sinx, long double *c /* Argument is small enough to approximate it by a Chebyshev polynomial of degree 16(17). */ if (tix < 0x3c600000) /* |x| < 2^-57 */ - if (!((int)x)) /* generate inexact */ - { - *sinx = x; - *cosx = ONE; - return; - } + { + if (fabsl (x) < LDBL_MIN) + { + long double force_underflow = x * x; + math_force_eval (force_underflow); + } + if (!((int)x)) /* generate inexact */ + { + *sinx = x; + *cosx = ONE; + return; + } + } z = x * x; *sinx = x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8))))))))); diff --git a/sysdeps/ieee754/ldbl-128ibm/k_sinl.c b/sysdeps/ieee754/ldbl-128ibm/k_sinl.c index d6602fe365..2050cd2b49 100644 --- a/sysdeps/ieee754/ldbl-128ibm/k_sinl.c +++ b/sysdeps/ieee754/ldbl-128ibm/k_sinl.c @@ -17,6 +17,7 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#include <float.h> #include <math.h> #include <math_private.h> @@ -93,7 +94,14 @@ __kernel_sinl(long double x, long double y, int iy) /* Argument is small enough to approximate it by a Chebyshev polynomial of degree 17. */ if (tix < 0x3c600000) /* |x| < 2^-57 */ - if (!((int)x)) return x; /* generate inexact */ + { + if (fabsl (x) < LDBL_MIN) + { + long double force_underflow = x * x; + math_force_eval (force_underflow); + } + if (!((int)x)) return x; /* generate inexact */ + } z = x * x; return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8))))))))); diff --git a/sysdeps/ieee754/ldbl-96/k_sinl.c b/sysdeps/ieee754/ldbl-96/k_sinl.c index 179262a735..b7b5ae359d 100644 --- a/sysdeps/ieee754/ldbl-96/k_sinl.c +++ b/sysdeps/ieee754/ldbl-96/k_sinl.c @@ -20,6 +20,7 @@ /* The polynomials have not been optimized for extended-precision and may contain more terms than needed. */ +#include <float.h> #include <math.h> #include <math_private.h> @@ -94,7 +95,14 @@ __kernel_sinl(long double x, long double y, int iy) /* Argument is small enough to approximate it by a Chebyshev polynomial of degree 17. */ if (absx < 0x1p-33L) - if (!((int)x)) return x; /* generate inexact */ + { + if (fabsl (x) < LDBL_MIN) + { + long double force_underflow = x * x; + math_force_eval (force_underflow); + } + if (!((int)x)) return x; /* generate inexact */ + } z = x * x; return x + (x * (z*(SIN1+z*(SIN2+z*(SIN3+z*(SIN4+ z*(SIN5+z*(SIN6+z*(SIN7+z*SIN8))))))))); diff --git a/sysdeps/powerpc/fpu/k_sinf.c b/sysdeps/powerpc/fpu/k_sinf.c index 64df0c9142..e2850dfc2c 100644 --- a/sysdeps/powerpc/fpu/k_sinf.c +++ b/sysdeps/powerpc/fpu/k_sinf.c @@ -17,6 +17,7 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, see <http://www.gnu.org/licenses/>. */ +#include <float.h> #include <math.h> #include <fenv.h> #include <math_private.h> @@ -40,7 +41,10 @@ __kernel_sinf (float x, float y, int iy) ix = __builtin_fabsf (x); if (ix < twom27) { /* |x| < 2**-27 */ - __feraiseexcept (FE_INEXACT); + if (ix < FLT_MIN && ix != 0.0f) + __feraiseexcept (FE_UNDERFLOW|FE_INEXACT); + else + __feraiseexcept (FE_INEXACT); return x; } z = x * x; |