1#include "libm.h"
2#include <fenv.h>
3#include <math.h>
4
5/* nearbyint is the same as rint, but it must not raise the inexact exception */
6
7double nearbyint(double x) {
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