about summary refs log tree commit diff
path: root/sysdeps/ieee754/ldbl-128
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/ieee754/ldbl-128')
-rw-r--r--sysdeps/ieee754/ldbl-128/s_nearbyintl.c63
1 files changed, 35 insertions, 28 deletions
diff --git a/sysdeps/ieee754/ldbl-128/s_nearbyintl.c b/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
index a4ad8e82e5..8d26786f78 100644
--- a/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
+++ b/sysdeps/ieee754/ldbl-128/s_nearbyintl.c
@@ -30,7 +30,8 @@
 #include <libm-alias-ldouble.h>
 #include <math-use-builtins.h>
 
-_Float128 __nearbyintl(_Float128 x)
+_Float128
+__nearbyintl (_Float128 x)
 {
 #if USE_NEARBYINTL_BUILTIN
   return __builtin_nearbyintl (x);
@@ -41,34 +42,40 @@ _Float128 __nearbyintl(_Float128 x)
 		 L(5.19229685853482762853049632922009600E+33), /* 0x406F000000000000, 0 */
 		 L(-5.19229685853482762853049632922009600E+33)  /* 0xC06F000000000000, 0 */
   };
-	fenv_t env;
-	int64_t i0,j0,sx;
-	uint64_t i1 __attribute__ ((unused));
-	_Float128 w,t;
-	GET_LDOUBLE_WORDS64(i0,i1,x);
-	sx = (((uint64_t)i0)>>63);
-	j0 = ((i0>>48)&0x7fff)-0x3fff;
-	if(j0<112) {
-	    if(j0<0) {
-		feholdexcept (&env);
-	        w = TWO112[sx] + math_opt_barrier (x);
-	        t = w-TWO112[sx];
-		math_force_eval (t);
-	        fesetenv (&env);
-		GET_LDOUBLE_MSW64(i0,t);
-		SET_LDOUBLE_MSW64(t,(i0&0x7fffffffffffffffLL)|(sx<<63));
-	        return t;
-	    }
-	} else {
-	    if(j0==0x4000) return x+x;	/* inf or NaN */
-	    else return x;		/* x is integral */
+  fenv_t env;
+  int64_t i0, j0, sx;
+  uint64_t i1 __attribute__ ((unused));
+  _Float128 w, t;
+  GET_LDOUBLE_WORDS64 (i0, i1, x);
+  sx = (((uint64_t) i0) >> 63);
+  j0 = ((i0 >> 48) & 0x7fff) - 0x3fff;
+  if (j0 < 112)
+    {
+      if (j0 < 0)
+	{
+	  feholdexcept (&env);
+	  w = TWO112[sx] + math_opt_barrier (x);
+	  t = w - TWO112[sx];
+	  math_force_eval (t);
+	  fesetenv (&env);
+	  GET_LDOUBLE_MSW64 (i0, t);
+	  SET_LDOUBLE_MSW64 (t, (i0 & 0x7fffffffffffffffLL) | (sx << 63));
+	  return t;
 	}
-	feholdexcept (&env);
-	w = TWO112[sx] + math_opt_barrier (x);
-	t = w-TWO112[sx];
-	math_force_eval (t);
-	fesetenv (&env);
-	return t;
+    }
+  else
+    {
+      if (j0 == 0x4000)
+	return x + x;		/* inf or NaN  */
+      else
+	return x;		/* x is integral  */
+    }
+  feholdexcept (&env);
+  w = TWO112[sx] + math_opt_barrier (x);
+  t = w - TWO112[sx];
+  math_force_eval (t);
+  fesetenv (&env);
+  return t;
 #endif /* ! USE_NEARBYINTL_BUILTIN  */
 }
 libm_alias_ldouble (__nearbyint, nearbyint)