summaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-03-16 20:08:02 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-03-16 20:08:02 +0000
commitc36e1d2369f149a64c759f3ad6f4cc5a03b03b62 (patch)
treee08402c0a348536aedf71d15bc7c4de01089066c /math
parent11b90b9f504df5b2da91ce3a06c1657d99e4a95f (diff)
downloadglibc-c36e1d2369f149a64c759f3ad6f4cc5a03b03b62.tar.gz
Disable Bessel function TLOSS errors in POSIX mode.
Diffstat (limited to 'math')
-rw-r--r--math/libm-test.inc28
-rw-r--r--math/w_j0.c4
-rw-r--r--math/w_j0f.c4
-rw-r--r--math/w_j0l.c4
-rw-r--r--math/w_j1.c4
-rw-r--r--math/w_j1f.c4
-rw-r--r--math/w_j1l.c4
-rw-r--r--math/w_jn.c4
-rw-r--r--math/w_jnf.c4
-rw-r--r--math/w_jnl.c7
10 files changed, 48 insertions, 19 deletions
diff --git a/math/libm-test.inc b/math/libm-test.inc
index 8bcaa8869f..5638b76869 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -3686,6 +3686,12 @@ j0_test (void)
TEST_f_f (j0, 4.0, -3.9714980986384737228659076845169804197562E-1L);
TEST_f_f (j0, -4.0, -3.9714980986384737228659076845169804197562E-1L);
+ TEST_f_f (j0, 0x1.d7ce3ap+107L, 2.775523647291230802651040996274861694514e-17L);
+
+#ifndef TEST_FLOAT
+ TEST_f_f (j0, -0x1.001000001p+593L, -3.927269966354206207832593635798954916263e-90L);
+#endif
+
END (j0);
}
@@ -3721,6 +3727,12 @@ j1_test (void)
TEST_f_f (j1, 8.0, 0.234636346853914624381276651590454612L);
TEST_f_f (j1, 10.0, 0.0434727461688614366697487680258592883L);
+ TEST_f_f (j1, 0x1.3ffp+74L, 1.818984347516051243459364437186082741567e-12L);
+
+#ifndef TEST_FLOAT
+ TEST_f_f (j1, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L);
+#endif
+
END (j1);
}
@@ -3801,7 +3813,9 @@ jn_test (void)
TEST_ff_f (jn, 6, 2.4048255576957729L, 0.34048184720278336646673682895929161E-2L);
TEST_ff_f (jn, 7, 2.4048255576957729L, 0.60068836573295394221291569249883076E-3L);
TEST_ff_f (jn, 8, 2.4048255576957729L, 0.92165786705344923232879022467054148E-4L);
- TEST_ff_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L)
+ TEST_ff_f (jn, 9, 2.4048255576957729L, 0.12517270977961513005428966643852564E-4L);
+
+ TEST_ff_f (jn, 2, 0x1.ffff62p+99L, -4.43860668048170034334926693188979974489e-16L);
END (jn);
}
@@ -7152,6 +7166,12 @@ y0_test (void)
TEST_f_f (y0, 8.0, 0.223521489387566220527323400498620359L);
TEST_f_f (y0, 10.0, 0.0556711672835993914244598774101900481L);
+ TEST_f_f (y0, 0x1.3ffp+74L, 1.818984347516051243459467456433028748678e-12L);
+
+#ifndef TEST_FLOAT
+ TEST_f_f (y0, 0x1.ff00000000002p+840L, 1.846591691699331493194965158699937660696e-127L);
+#endif
+
END (y0);
}
@@ -7186,6 +7206,12 @@ y1_test (void)
TEST_f_f (y1, 8.0, -0.158060461731247494255555266187483550L);
TEST_f_f (y1, 10.0, 0.249015424206953883923283474663222803L);
+ TEST_f_f (y1, 0x1.27e204p+99L, -8.881610148467797208469612080785210013461e-16L);
+
+#ifndef TEST_FLOAT
+ TEST_f_f (y1, 0x1.001000001p+593L, 3.927269966354206207832593635798954916263e-90L);
+#endif
+
END (y1);
}
diff --git a/math/w_j0.c b/math/w_j0.c
index f8d3724756..0171a0bc72 100644
--- a/math/w_j0.c
+++ b/math/w_j0.c
@@ -26,7 +26,7 @@ double
j0 (double x)
{
if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j0(|x|>X_TLOSS) */
return __kernel_standard (x, x, 34);
@@ -53,7 +53,7 @@ y0 (double x)
else if (x == 0.0)
/* d = -one/(x-x) */
return __kernel_standard (x, x, 8);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* y0(x>X_TLOSS) */
return __kernel_standard (x, x, 35);
}
diff --git a/math/w_j0f.c b/math/w_j0f.c
index cef36aab1b..9e1681a243 100644
--- a/math/w_j0f.c
+++ b/math/w_j0f.c
@@ -26,7 +26,7 @@ float
j0f (float x)
{
if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j0(|x|>X_TLOSS) */
return __kernel_standard_f (x, x, 134);
@@ -51,7 +51,7 @@ y0f (float x)
else if (x == 0.0f)
/* d = -one/(x-x) */
return __kernel_standard_f (x, x, 108);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* y0(x>X_TLOSS) */
return __kernel_standard_f (x, x, 135);
}
diff --git a/math/w_j0l.c b/math/w_j0l.c
index 144f33c0db..54c9c89029 100644
--- a/math/w_j0l.c
+++ b/math/w_j0l.c
@@ -26,7 +26,7 @@ long double
__j0l (long double x)
{
if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j0(|x|>X_TLOSS) */
return __kernel_standard (x, x, 234);
@@ -51,7 +51,7 @@ __y0l (long double x)
else if (x == 0.0L)
/* d = -one/(x-x) */
return __kernel_standard (x, x, 208);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* y0(x>X_TLOSS) */
return __kernel_standard (x, x, 235);
}
diff --git a/math/w_j1.c b/math/w_j1.c
index e9a5357b76..40600503ee 100644
--- a/math/w_j1.c
+++ b/math/w_j1.c
@@ -26,7 +26,7 @@ double
j1 (double x)
{
if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j1(|x|>X_TLOSS) */
return __kernel_standard (x, x, 36);
@@ -53,7 +53,7 @@ y1 (double x)
else if (x == 0.0)
/* d = -one/(x-x) */
return __kernel_standard (x, x, 10);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* y1(x>X_TLOSS) */
return __kernel_standard (x, x, 37);
}
diff --git a/math/w_j1f.c b/math/w_j1f.c
index 29bd949eea..a3f5ee2e27 100644
--- a/math/w_j1f.c
+++ b/math/w_j1f.c
@@ -26,7 +26,7 @@ float
j1f (float x)
{
if (__builtin_expect (isgreater (fabsf (x), X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j1(|x|>X_TLOSS) */
return __kernel_standard_f (x, x, 136);
@@ -51,7 +51,7 @@ y1f (float x)
else if (x == 0.0f)
/* d = -one/(x-x) */
return __kernel_standard_f (x, x, 110);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* y1(x>X_TLOSS) */
return __kernel_standard_f (x, x, 137);
}
diff --git a/math/w_j1l.c b/math/w_j1l.c
index 01b8551252..208377ecaf 100644
--- a/math/w_j1l.c
+++ b/math/w_j1l.c
@@ -26,7 +26,7 @@ long double
__j1l (long double x)
{
if (__builtin_expect (isgreater (fabsl (x), X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* j1(|x|>X_TLOSS) */
return __kernel_standard (x, x, 236);
@@ -51,7 +51,7 @@ __y1l (long double x)
else if (x == 0.0L)
/* d = -one/(x-x) */
return __kernel_standard (x, x, 210);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* y1(x>X_TLOSS) */
return __kernel_standard (x, x, 237);
}
diff --git a/math/w_jn.c b/math/w_jn.c
index fd3fb162f2..63658a93c2 100644
--- a/math/w_jn.c
+++ b/math/w_jn.c
@@ -26,7 +26,7 @@ double
jn (int n, double x)
{
if (__builtin_expect (isgreater (fabs (x), X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* jn(n,|x|>X_TLOSS) */
return __kernel_standard (n, x, 38);
@@ -53,7 +53,7 @@ yn (int n, double x)
else if (x == 0.0)
/* d = -one/(x-x) */
return __kernel_standard (n, x, 12);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* yn(n,x>X_TLOSS) */
return __kernel_standard (n, x, 39);
}
diff --git a/math/w_jnf.c b/math/w_jnf.c
index 36d6f6d573..41d9bc5711 100644
--- a/math/w_jnf.c
+++ b/math/w_jnf.c
@@ -26,7 +26,7 @@ float
jnf (int n, float x)
{
if (__builtin_expect (isgreater (fabsf (x), (float) X_TLOSS), 0)
- && _LIB_VERSION != _IEEE_)
+ && _LIB_VERSION != _IEEE_ && _LIB_VERSION != _POSIX_)
/* jn(n,|x|>X_TLOSS) */
return __kernel_standard_f (n, x, 138);
@@ -51,7 +51,7 @@ ynf (int n, float x)
else if (x == 0.0)
/* d = -one/(x-x) */
return __kernel_standard_f (n, x, 112);
- else
+ else if (_LIB_VERSION != _POSIX_)
/* yn(n,x>X_TLOSS) */
return __kernel_standard_f (n, x, 139);
}
diff --git a/math/w_jnl.c b/math/w_jnl.c
index 148817ff44..2028d488df 100644
--- a/math/w_jnl.c
+++ b/math/w_jnl.c
@@ -54,7 +54,10 @@ long double __jnl(int n, long double x) /* wrapper jnl */
#else
long double z;
z = __ieee754_jnl(n,x);
- if(_LIB_VERSION == _IEEE_ || __isnanl(x) ) return z;
+ if (_LIB_VERSION == _IEEE_
+ || _LIB_VERSION == _POSIX_
+ || __isnanl(x))
+ return z;
if(fabsl(x)>X_TLOSS) {
return __kernel_standard((double)n,x,238); /* jn(|x|>X_TLOSS,n) */
} else
@@ -79,7 +82,7 @@ long double __ynl(int n, long double x) /* wrapper ynl */
/* d = zero/(x-x); */
return __kernel_standard((double)n,x,213);
}
- if(x>X_TLOSS) {
+ if(x>X_TLOSS && _LIB_VERSION != _POSIX_) {
return __kernel_standard((double)n,x,239); /* yn(x>X_TLOSS,n) */
} else
return z;