mirror of git://sourceware.org/git/glibc.git
Update.
2001-07-23 Stephen L Moshier <moshier@mediaone.net> * sysdeps/ieee754/ldbl-128/s_expm1l.c (__expm1l): Return proper sign for 0 input. Return NaN with no exception for NaN input.
This commit is contained in:
parent
1a9cbbbf75
commit
514abd20fe
|
@ -1,3 +1,8 @@
|
||||||
|
2001-07-23 Stephen L Moshier <moshier@mediaone.net>
|
||||||
|
|
||||||
|
* sysdeps/ieee754/ldbl-128/s_expm1l.c (__expm1l): Return proper
|
||||||
|
sign for 0 input. Return NaN with no exception for NaN input.
|
||||||
|
|
||||||
2001-07-23 Ulrich Drepper <drepper@redhat.com>
|
2001-07-23 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* iconv/gconv_builtin.h: ISO-106464/UTF-8/ transformation must
|
* iconv/gconv_builtin.h: ISO-106464/UTF-8/ transformation must
|
||||||
|
|
|
@ -81,14 +81,6 @@ __expm1l (long double x)
|
||||||
ieee854_long_double_shape_type u;
|
ieee854_long_double_shape_type u;
|
||||||
int k;
|
int k;
|
||||||
|
|
||||||
/* Overflow. */
|
|
||||||
if (x > maxlog)
|
|
||||||
return (big * big);
|
|
||||||
|
|
||||||
/* Minimum value. */
|
|
||||||
if (x < minarg)
|
|
||||||
return (4.0 / big - 1.0L);
|
|
||||||
|
|
||||||
/* Detect infinity and NaN. */
|
/* Detect infinity and NaN. */
|
||||||
u.value = x;
|
u.value = x;
|
||||||
ix = u.parts32.w0;
|
ix = u.parts32.w0;
|
||||||
|
@ -104,10 +96,22 @@ __expm1l (long double x)
|
||||||
else
|
else
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
/* NaN. */
|
/* NaN. No invalid exception. */
|
||||||
return (x + x);
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* expm1(+- 0) = +- 0. */
|
||||||
|
if ((ix == 0) && (u.parts32.w1 | u.parts32.w2 | u.parts32.w3) == 0)
|
||||||
|
return x;
|
||||||
|
|
||||||
|
/* Overflow. */
|
||||||
|
if (x > maxlog)
|
||||||
|
return (big * big);
|
||||||
|
|
||||||
|
/* Minimum value. */
|
||||||
|
if (x < minarg)
|
||||||
|
return (4.0/big - 1.0L);
|
||||||
|
|
||||||
/* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
|
/* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
|
||||||
xx = C1 + C2; /* ln 2. */
|
xx = C1 + C2; /* ln 2. */
|
||||||
px = __floorl (0.5 + x / xx);
|
px = __floorl (0.5 + x / xx);
|
||||||
|
|
Loading…
Reference in New Issue