mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
Small optimization of generic exp2
This commit is contained in:
parent
1004d1821e
commit
99ce7b04ed
@ -1,5 +1,7 @@
|
||||
2011-10-17 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
* sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Small optimization.
|
||||
|
||||
* sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c: New file.
|
||||
|
||||
* sysdeps/x86_64/fpu/math_private.h: Relax asm requirements for
|
||||
|
@ -53,8 +53,19 @@ __ieee754_exp2 (double x)
|
||||
static const double lomark = (double) (DBL_MIN_EXP - DBL_MANT_DIG - 1);
|
||||
|
||||
/* Check for usual case. */
|
||||
if (isless (x, himark) && isgreaterequal (x, lomark))
|
||||
if (__builtin_expect (isless (x, himark), 1))
|
||||
{
|
||||
/* Exceptional cases: */
|
||||
if (__builtin_expect (! isgreaterequal (x, lomark), 0))
|
||||
{
|
||||
if (__isinf (x))
|
||||
/* e^-inf == 0, with no error. */
|
||||
return 0;
|
||||
else
|
||||
/* Underflow */
|
||||
return TWOM1000 * TWOM1000;
|
||||
}
|
||||
|
||||
static const double THREEp42 = 13194139533312.0;
|
||||
int tval, unsafe;
|
||||
double rx, x22, result;
|
||||
@ -120,16 +131,6 @@ __ieee754_exp2 (double x)
|
||||
else
|
||||
return result * scale_u.d;
|
||||
}
|
||||
/* Exceptional cases: */
|
||||
else if (isless (x, himark))
|
||||
{
|
||||
if (__isinf (x))
|
||||
/* e^-inf == 0, with no error. */
|
||||
return 0;
|
||||
else
|
||||
/* Underflow */
|
||||
return TWOM1000 * TWOM1000;
|
||||
}
|
||||
else
|
||||
/* Return x, if x is a NaN or Inf; or overflow, otherwise. */
|
||||
return TWO1023*x;
|
||||
|
Loading…
Reference in New Issue
Block a user