math: optimize lrint on 32bit targets
[musl.git] / src / math / nearbyintl.c
blob82852492f8108b875fa6c588af96aecf358475b9
1 #include <math.h>
2 #include <float.h>
4 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
5 long double nearbyintl(long double x)
7 return nearbyint(x);
9 #else
10 #include <fenv.h>
11 long double nearbyintl(long double x)
13 #ifdef FE_INEXACT
14 #pragma STDC FENV_ACCESS ON
15 int e;
17 e = fetestexcept(FE_INEXACT);
18 #endif
19 x = rintl(x);
20 #ifdef FE_INEXACT
21 if (!e)
22 feclearexcept(FE_INEXACT);
23 #endif
24 return x;
26 #endif