X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_nan_inf.c;h=2a5ac1455cd3c50b57fca647b5e59fcf99a477bc;hb=674dee5af23a9cf9488f11880368c64a5ad70026;hp=f40555d29cc38aa88a5d644839e2549d921cb096;hpb=bac209eb1d120c27acc1ede8fa7dfef81f3eaaf1;p=rrdtool.git diff --git a/src/rrd_nan_inf.c b/src/rrd_nan_inf.c index f40555d..2a5ac14 100644 --- a/src/rrd_nan_inf.c +++ b/src/rrd_nan_inf.c @@ -1,15 +1,32 @@ #include "rrd_nan_inf.h" -#if defined(WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) +int done_nan = 0; +int done_inf = 0; +double dnan; +double dinf; + +#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) #include -double set_to_DNAN(void) { return (double)fmod(0.0,0.0); } -double set_to_DINF(void) { return (double)fabs((double)log(0.0)); } +#define NAN_FUNC (double)fmod(0.0,0.0) +#define INF_FUNC (double)fabs((double)log(0.0)) #else -double set_to_DNAN(void) { return (double)(0.0/0.0); } -double set_to_DINF(void) { return (double)(1.0/0.0); } +#define NAN_FUNC (double)(0.0/0.0) +#define INF_FUNC (double)(1.0/0.0) #endif + +double set_to_DNAN(void) +{ + if ( !done_nan ) { dnan = NAN_FUNC; done_nan = 1; } + return dnan; +} + +double set_to_DINF(void) +{ + if ( !done_inf ) { dinf = INF_FUNC; done_inf = 1; } + return dinf; +}