dns response handling: ignore presence of wrong-type RRs
[musl] / src / math / rint.c
1 #include <float.h>
2 #include <math.h>
3 #include <stdint.h>
4
5 #if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
6 #define EPS DBL_EPSILON
7 #elif FLT_EVAL_METHOD==2
8 #define EPS LDBL_EPSILON
9 #endif
10 static const double_t toint = 1/EPS;
11
12 double rint(double x)
13 {
14         union {double f; uint64_t i;} u = {x};
15         int e = u.i>>52 & 0x7ff;
16         int s = u.i>>63;
17         double_t y;
18
19         if (e >= 0x3ff+52)
20                 return x;
21         if (s)
22                 y = x - toint + toint;
23         else
24                 y = x + toint - toint;
25         if (y == 0)
26                 return s ? -0.0 : 0;
27         return y;
28 }