]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libquadmath/math/nearbyintq.c
Update most of libquadmath/math/ from glibc, automate update (PR libquadmath/68686).
[thirdparty/gcc.git] / libquadmath / math / nearbyintq.c
index b250927ea2a9bdb86d92e930aaa04aa1c3ad414a..1e24c46da8bd2d442b4aa08604b7342b8630cbab 100644 (file)
@@ -1,4 +1,4 @@
-/* nearbyintq.c -- __float128 version of s_nearbyint.c.
+/* s_nearbyintl.c -- long double version of s_nearbyint.c.
  * Conversion to IEEE quad long double by Jakub Jelinek, jj@ultra.linux.cz.
  */
 
  */
 
 #include "quadmath-imp.h"
-#ifdef HAVE_FENV_H
-# include <fenv.h>
-# if defined HAVE_FEHOLDEXCEPT && defined HAVE_FESETENV
-#   define USE_FENV_H
-# endif
-#endif
 
 static const __float128
 TWO112[2]={
@@ -37,12 +31,9 @@ TWO112[2]={
  -5.19229685853482762853049632922009600E+33Q  /* 0xC06F000000000000, 0 */
 };
 
-__float128
-nearbyintq(__float128 x)
+__float128 nearbyintq(__float128 x)
 {
-#ifdef USE_FENV_H
        fenv_t env;
-#endif
        int64_t i0,j0,sx;
        uint64_t i1 __attribute__ ((unused));
        __float128 w,t;
@@ -51,15 +42,11 @@ nearbyintq(__float128 x)
        j0 = ((i0>>48)&0x7fff)-0x3fff;
        if(j0<112) {
            if(j0<0) {
-#ifdef USE_FENV_H
                feholdexcept (&env);
-#endif
-               w = TWO112[sx]+x;
+               w = TWO112[sx] + math_opt_barrier (x);
                t = w-TWO112[sx];
                math_force_eval (t);
-#ifdef USE_FENV_H
                fesetenv (&env);
-#endif
                GET_FLT128_MSW64(i0,t);
                SET_FLT128_MSW64(t,(i0&0x7fffffffffffffffLL)|(sx<<63));
                return t;
@@ -68,14 +55,10 @@ nearbyintq(__float128 x)
            if(j0==0x4000) return x+x;  /* inf or NaN */
            else return x;              /* x is integral */
        }
-#ifdef USE_FENV_H
        feholdexcept (&env);
-#endif
-       w = TWO112[sx]+x;
+       w = TWO112[sx] + math_opt_barrier (x);
        t = w-TWO112[sx];
        math_force_eval (t);
-#ifdef USE_FENV_H      
        fesetenv (&env);
-#endif
        return t;
 }