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