make DNAN and DINF faster by caching the result of the first calculation -- pascal...
[rrdtool.git] / src / rrd_nan_inf.c
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
22 double set_to_DNAN(void)
23 {
24   if ( !done_nan ) { dnan = NAN_FUNC; done_nan = 1; }
25   return dnan;
26 }
27
28 double set_to_DINF(void)
29 {
30   if ( !done_inf ) { dinf = INF_FUNC; done_inf = 1; }
31   return dinf;
32 }