]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libquadmath/math/frexpq.c
Update most of libquadmath/math/ from glibc, automate update (PR libquadmath/68686).
[thirdparty/gcc.git] / libquadmath / math / frexpq.c
index 2bd77829bf286a4b9d20568eae85a7c1ab7a04e5..2c381e590df90c7eacfbd8be3d9929dc75f1fdac 100644 (file)
@@ -1,4 +1,4 @@
-/* frexpq.c -- __float128 version of s_frexp.c.
+/* s_frexpl.c -- long double version of s_frexp.c.
  * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
  */
 
  * ====================================================
  */
 
+#if defined(LIBM_SCCS) && !defined(lint)
+static char rcsid[] = "$NetBSD: $";
+#endif
+
 /*
  * for non-zero x
  *     x = frexpq(arg,&exp);
- * return a __float128 fp quantity x such that 0.5 <= |x| <1.0
+ * return a long double fp quantity x such that 0.5 <= |x| <1.0
  * and the corresponding binary exponent "exp". That is
  *     arg = x*2^exp.
  * If arg is inf, 0.0, or NaN, then frexpq(arg,&exp) returns arg
 static const __float128
 two114 = 2.0769187434139310514121985316880384E+34Q; /* 0x4071000000000000, 0 */
 
-__float128
-frexpq (__float128 x, int *eptr)
+__float128 frexpq(__float128 x, int *eptr)
 {
-  uint64_t hx, lx, ix;
-  GET_FLT128_WORDS64(hx,lx,x);
-  ix = 0x7fffffffffffffffULL&hx;
-  *eptr = 0;
-  if(ix>=0x7fff000000000000ULL||((ix|lx)==0)) return x + x;/* 0,inf,nan */
-  if (ix<0x0001000000000000ULL) {              /* subnormal */
-    x *= two114;
-    GET_FLT128_MSW64(hx,x);
-    ix = hx&0x7fffffffffffffffULL;
-    *eptr = -114;
-  }
-  *eptr += (ix>>48)-16382;
-  hx = (hx&0x8000ffffffffffffULL) | 0x3ffe000000000000ULL;
-  SET_FLT128_MSW64(x,hx);
-  return x;
+       uint64_t hx, lx, ix;
+       GET_FLT128_WORDS64(hx,lx,x);
+       ix = 0x7fffffffffffffffULL&hx;
+       *eptr = 0;
+       if(ix>=0x7fff000000000000ULL||((ix|lx)==0)) return x + x;/* 0,inf,nan */
+       if (ix<0x0001000000000000ULL) {         /* subnormal */
+           x *= two114;
+           GET_FLT128_MSW64(hx,x);
+           ix = hx&0x7fffffffffffffffULL;
+           *eptr = -114;
+       }
+       *eptr += (ix>>48)-16382;
+       hx = (hx&0x8000ffffffffffffULL) | 0x3ffe000000000000ULL;
+       SET_FLT128_MSW64(x,hx);
+       return x;
 }