1*c9945492SAndroid Build Coastguard Worker #include <math.h> 2*c9945492SAndroid Build Coastguard Worker #include <float.h> 3*c9945492SAndroid Build Coastguard Worker 4*c9945492SAndroid Build Coastguard Worker #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 nearbyintl(long double x)5*c9945492SAndroid Build Coastguard Workerlong double nearbyintl(long double x) 6*c9945492SAndroid Build Coastguard Worker { 7*c9945492SAndroid Build Coastguard Worker return nearbyint(x); 8*c9945492SAndroid Build Coastguard Worker } 9*c9945492SAndroid Build Coastguard Worker #else 10*c9945492SAndroid Build Coastguard Worker #include <fenv.h> nearbyintl(long double x)11*c9945492SAndroid Build Coastguard Workerlong double nearbyintl(long double x) 12*c9945492SAndroid Build Coastguard Worker { 13*c9945492SAndroid Build Coastguard Worker #ifdef FE_INEXACT 14*c9945492SAndroid Build Coastguard Worker #pragma STDC FENV_ACCESS ON 15*c9945492SAndroid Build Coastguard Worker int e; 16*c9945492SAndroid Build Coastguard Worker 17*c9945492SAndroid Build Coastguard Worker e = fetestexcept(FE_INEXACT); 18*c9945492SAndroid Build Coastguard Worker #endif 19*c9945492SAndroid Build Coastguard Worker x = rintl(x); 20*c9945492SAndroid Build Coastguard Worker #ifdef FE_INEXACT 21*c9945492SAndroid Build Coastguard Worker if (!e) 22*c9945492SAndroid Build Coastguard Worker feclearexcept(FE_INEXACT); 23*c9945492SAndroid Build Coastguard Worker #endif 24*c9945492SAndroid Build Coastguard Worker return x; 25*c9945492SAndroid Build Coastguard Worker } 26*c9945492SAndroid Build Coastguard Worker #endif 27