1#include <fenv.h> 2#include <math.h> 3 4/* nearbyint is the same as rint, but it must not raise the inexact exception */ 5 6double nearbyint(double x) 7{ 8#ifdef FE_INEXACT 9 #pragma STDC FENV_ACCESS ON 10 int e; 11 12 e = fetestexcept(FE_INEXACT); 13#endif 14 x = rint(x); 15#ifdef FE_INEXACT 16 if (!e) 17 feclearexcept(FE_INEXACT); 18#endif 19 return x; 20} 21