about summary refs log tree commit diff
path: root/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-10-12 11:27:51 -0400
committerUlrich Drepper <drepper@gmail.com>2011-10-12 11:27:51 -0400
commit0ac5ae2335292908f39031b1ea9fe8edce433c0f (patch)
treef9d26c8abc0de39d18d4c13e70f6022cdc6b461f /sysdeps/ieee754/ldbl-96/e_lgammal_r.c
parenta843a204a3e8a0dd53584dad3668771abaec84ac (diff)
downloadglibc-0ac5ae2335292908f39031b1ea9fe8edce433c0f.tar.gz
glibc-0ac5ae2335292908f39031b1ea9fe8edce433c0f.tar.xz
glibc-0ac5ae2335292908f39031b1ea9fe8edce433c0f.zip
Optimize libm
libm is now somewhat integrated with gcc's -ffinite-math-only option
and lots of the wrapper functions have been optimized.
Diffstat (limited to 'sysdeps/ieee754/ldbl-96/e_lgammal_r.c')
-rw-r--r--sysdeps/ieee754/ldbl-96/e_lgammal_r.c30
1 files changed, 5 insertions, 25 deletions
diff --git a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
index 36e336565c..8a20e5e135 100644
--- a/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
+++ b/sysdeps/ieee754/ldbl-96/e_lgammal_r.c
@@ -94,11 +94,7 @@
 #include "math.h"
 #include "math_private.h"
 
-#ifdef __STDC__
 static const long double
-#else
-static long double
-#endif
   half = 0.5L,
   one = 1.0L,
   pi = 3.14159265358979323846264L,
@@ -204,20 +200,10 @@ static long double
   w6 = -1.880801938119376907179E-3L,
   w7 =  4.885026142432270781165E-3L;
 
-#ifdef __STDC__
 static const long double zero = 0.0L;
-#else
-static long double zero = 0.0L;
-#endif
 
-#ifdef __STDC__
 static long double
 sin_pi (long double x)
-#else
-static long double
-sin_pi (x)
-     long double x;
-#endif
 {
   long double y, z;
   int n, ix;
@@ -283,15 +269,8 @@ sin_pi (x)
 }
 
 
-#ifdef __STDC__
 long double
 __ieee754_lgammal_r (long double x, int *signgamp)
-#else
-long double
-__ieee754_lgammal_r (x, signgamp)
-     long double x;
-     int *signgamp;
-#endif
 {
   long double t, y, z, nadj, p, p1, p2, q, r, w;
   int i, ix;
@@ -301,7 +280,7 @@ __ieee754_lgammal_r (x, signgamp)
   GET_LDOUBLE_WORDS (se, i0, i1, x);
   ix = se & 0x7fff;
 
-  if ((ix | i0 | i1) == 0)
+  if (__builtin_expect((ix | i0 | i1) == 0, 0))
     {
       if (se & 0x8000)
 	*signgamp = -1;
@@ -311,10 +290,10 @@ __ieee754_lgammal_r (x, signgamp)
   ix = (ix << 16) | (i0 >> 16);
 
   /* purge off +-inf, NaN, +-0, and negative arguments */
-  if (ix >= 0x7fff0000)
+  if (__builtin_expect(ix >= 0x7fff0000, 0))
     return x * x;
 
-  if (ix < 0x3fc08000) /* 2^-63 */
+  if (__builtin_expect(ix < 0x3fc08000, 0)) /* 2^-63 */
     {				/* |x|<2**-63, return -log(|x|) */
       if (se & 0x8000)
 	{
@@ -438,7 +417,7 @@ __ieee754_lgammal_r (x, signgamp)
       z = one / x;
       y = z * z;
       w = w0 + z * (w1
-          + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7))))));
+	  + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7))))));
       r = (x - half) * (t - one) + w;
     }
   else
@@ -448,3 +427,4 @@ __ieee754_lgammal_r (x, signgamp)
     r = nadj - r;
   return r;
 }
+strong_alias (__ieee754_lgammal_r, __lgammal_r_finite)