nearbyint.c raw

   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  
   6  double 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