1 #include "rrd_nan_inf.h"
3 int done_nan = 0;
4 int done_inf = 0;
6 double dnan;
7 double dinf;
9 #if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
10 #include <math.h>
12 #define NAN_FUNC (double)fmod(0.0,0.0)
13 #define INF_FUNC (double)fabs((double)log(0.0))
15 #else
17 #define NAN_FUNC (double)(0.0/0.0)
18 #define INF_FUNC (double)(1.0/0.0)
20 #endif
22 double set_to_DNAN(
23 void)
24 {
25 if (!done_nan) {
26 dnan = NAN_FUNC;
27 done_nan = 1;
28 }
29 return dnan;
30 }
32 double set_to_DINF(
33 void)
34 {
35 if (!done_inf) {
36 dinf = INF_FUNC;
37 done_inf = 1;
38 }
39 return dinf;
40 }