+2013-03-21 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #15285]
+ * sysdeps/ieee754/ldbl-128/e_j0l.c: Include <float.h>.
+ (__ieee754_j0l): Do not improve calculations using cos of twice
+ input for inputs above LDBL_MAX / 2.0L.
+ (__ieee754_y0l): Likewise.
+ * sysdeps/ieee754/ldbl-128/e_j1l.c: Include <float.h>.
+ (__ieee754_j1l): Do not improve calculations using cos of twice
+ input for inputs above LDBL_MAX / 2.0L.
+ (__ieee754_y1l): Likewise.
+ * math/libm-test.inc (j0_test): Add another test.
+ (j1_test): Likewise.
+ (y0_test): Likewise.
+ (y1_test): Likewise.
+ * sysdeps/i386/fpu/libm-test-ulps: Update.
+
2013-03-21 Siddhesh Poyarekar <siddhesh@redhat.com>
* Rules ($(objpfx)bench-%.c): Include code from a C source
11561, 12723, 13550, 13951, 14142, 14176, 14200, 14317, 14327, 14496,
14812, 14920, 14964, 14981, 14982, 14985, 14994, 14996, 15003, 15006,
15020, 15023, 15036, 15054, 15055, 15062, 15078, 15160, 15232, 15234,
- 15283, 15287.
+ 15283, 15285, 15287.
* Add support for calling C++11 thread_local object destructors on thread
and program exit. This needs compiler support for offloading C++11
#ifndef TEST_FLOAT
TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L);
+ TEST_f_f (j0, 0x1p1023L, -1.5665258060609012834424478437196679802783e-155L);
#endif
#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
#ifndef TEST_FLOAT
TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L);
+ TEST_f_f (j1, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L);
#endif
#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
#ifndef TEST_FLOAT
TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L);
+ TEST_f_f (y0, 0x1p1023L, 8.2687542933709649327986678723012001545638e-155L);
#endif
#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
#ifndef TEST_FLOAT
TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L);
+ TEST_f_f (y1, 0x1p1023L, 1.5665258060609012834424478437196679802783e-155L);
#endif
#if defined TEST_LDOUBLE && LDBL_MAX_EXP >= 16384
Test "j0 (0x1.d7ce3ap+107) == 2.775523647291230802651040996274861694514e-17":
float: 1
ifloat: 1
+Test "j0 (0x1p1023) == -1.5665258060609012834424478437196679802783e-155":
+double: 1
+idouble: 1
Test "j0 (0x1p16382) == -1.2193782500509000574176799046642541129387e-2466":
ildouble: 1
ldouble: 1
Test "y1 (0x1p-10) == -6.5190099301063115047395187618929589514382e+02":
float: 1
ifloat: 1
+Test "y1 (0x1p1023) == 1.5665258060609012834424478437196679802783e-155":
+double: 1
+idouble: 1
Test "y1 (0x1p16382) == 1.2193782500509000574176799046642541129387e-2466":
ildouble: 1
ldouble: 1
#include <math.h>
#include <math_private.h>
+#include <float.h>
/* 1 / sqrt(pi) */
static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
__sincosl (xx, &s, &c);
ss = s - c;
cc = s + c;
- z = -__cosl (xx + xx);
- if ((s * c) < 0)
- cc = z / ss;
- else
- ss = z / cc;
+ if (xx <= LDBL_MAX / 2.0L)
+ {
+ z = -__cosl (xx + xx);
+ if ((s * c) < 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
if (xx > 0x1p256L)
return ONEOSQPI * cc / __ieee754_sqrtl (xx);
__sincosl (x, &s, &c);
ss = s - c;
cc = s + c;
- z = -__cosl (x + x);
- if ((s * c) < 0)
- cc = z / ss;
- else
- ss = z / cc;
+ if (xx <= LDBL_MAX / 2.0L)
+ {
+ z = -__cosl (x + x);
+ if ((s * c) < 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
if (xx > 0x1p256L)
return ONEOSQPI * ss / __ieee754_sqrtl (x);
#include <math.h>
#include <math_private.h>
+#include <float.h>
/* 1 / sqrt(pi) */
static const long double ONEOSQPI = 5.6418958354775628694807945156077258584405E-1L;
__sincosl (xx, &s, &c);
ss = -s - c;
cc = s - c;
- z = __cosl (xx + xx);
- if ((s * c) > 0)
- cc = z / ss;
- else
- ss = z / cc;
+ if (xx <= LDBL_MAX / 2.0L)
+ {
+ z = __cosl (xx + xx);
+ if ((s * c) > 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
if (xx > 0x1p256L)
{
__sincosl (xx, &s, &c);
ss = -s - c;
cc = s - c;
- z = __cosl (xx + xx);
- if ((s * c) > 0)
- cc = z / ss;
- else
- ss = z / cc;
+ if (xx <= LDBL_MAX / 2.0L)
+ {
+ z = __cosl (xx + xx);
+ if ((s * c) > 0)
+ cc = z / ss;
+ else
+ ss = z / cc;
+ }
if (xx > 0x1p256L)
return ONEOSQPI * ss / __ieee754_sqrtl (xx);