about summary refs log tree commit diff
path: root/sysdeps/ieee754/flt-32/s_ceilf.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/flt-32/s_ceilf.c')
-rw-r--r--sysdeps/ieee754/flt-32/s_ceilf.c27
1 files changed, 9 insertions, 18 deletions
diff --git a/sysdeps/ieee754/flt-32/s_ceilf.c b/sysdeps/ieee754/flt-32/s_ceilf.c
index 29ccadb049..8a83201c15 100644
--- a/sysdeps/ieee754/flt-32/s_ceilf.c
+++ b/sysdeps/ieee754/flt-32/s_ceilf.c
@@ -8,30 +8,19 @@
  *
  * Developed at SunPro, a Sun Microsystems, Inc. business.
  * Permission to use, copy, modify, and distribute this
- * software is freely granted, provided that this notice 
+ * software is freely granted, provided that this notice
  * is preserved.
  * ====================================================
  */
 
-#if defined(LIBM_SCCS) && !defined(lint)
-static char rcsid[] = "$NetBSD: s_ceilf.c,v 1.4 1995/05/10 20:46:55 jtc Exp $";
-#endif
-
 #include "math.h"
 #include "math_private.h"
 
-#ifdef __STDC__
+
 static const float huge = 1.0e30;
-#else
-static float huge = 1.0e30;
-#endif
 
-#ifdef __STDC__
-	float __ceilf(float x)
-#else
-	float __ceilf(x)
-	float x;
-#endif
+float
+__ceilf(float x)
 {
 	int32_t i0,j0;
 	u_int32_t i;
@@ -39,9 +28,9 @@ static float huge = 1.0e30;
 	GET_FLOAT_WORD(i0,x);
 	j0 = ((i0>>23)&0xff)-0x7f;
 	if(j0<23) {
-	    if(j0<0) { 	/* raise inexact if x != 0 */
+	    if(j0<0) {	/* raise inexact if x != 0 */
 		if(huge+x>(float)0.0) {/* return 0*sign(x) if |x|<1 */
-		    if(i0<0) {i0=0x80000000;} 
+		    if(i0<0) {i0=0x80000000;}
 		    else if(i0!=0) { i0=0x3f800000;}
 		}
 	    } else {
@@ -53,10 +42,12 @@ static float huge = 1.0e30;
 		}
 	    }
 	} else {
-	    if(j0==0x80) return x+x;	/* inf or NaN */
+	    if(__builtin_expect(j0==0x80, 0)) return x+x; /* inf or NaN */
 	    else return x;		/* x is integral */
 	}
 	SET_FLOAT_WORD(x,i0);
 	return x;
 }
+#ifndef __ceilf
 weak_alias (__ceilf, ceilf)
+#endif