25 #ifndef __PRECISION_H__
26 #define __PRECISION_H__
28 #ifndef __FLT_EPSILON__
29 #define __FLT_EPSILON__ 1.1920928955078125e-07
32 #define __FLT_MIN__ 1.1754943508222875e-38
35 #define __FLT_MAX__ 3.4028234663852886e+38
38 #ifndef __DBL_EPSILON__
39 #define __DBL_EPSILON__ 2.2204460492503131e-16
42 #define __DBL_MIN__ 2.2250738585072014e-308
45 #define __DBL_MAX__ 1.7976931348623157e+308
48 #if NR_DOUBLE_SIZE == 12
50 #ifndef __LDBL_EPSILON__
51 #define __LDBL_EPSILON__ 1.0842021724855044e-19
54 #define __LDBL_MIN__ 3.3621031431120935e-4932
57 #define __LDBL_MAX__ 1.1897314953572318e+4932
60 #elif NR_DOUBLE_SIZE == 16
62 #ifndef __LDBL_EPSILON__
63 #define __LDBL_EPSILON__ 1.9259299443872359e-34
66 #define __LDBL_MIN__ 3.3621031431120935e-4932
69 #define __LDBL_MAX__ 1.1897314953572318e+4932
75 #if NR_DOUBLE_SIZE == 4
78 #define NR_EPSI __FLT_EPSILON__
79 #define NR_MIN __FLT_MIN__
80 #define NR_MAX __FLT_MAX__
84 #elif NR_DOUBLE_SIZE == 8
86 #define NR_TYPE double
87 #define NR_EPSI __DBL_EPSILON__
88 #define NR_MIN __DBL_MIN__
89 #define NR_MAX __DBL_MAX__
93 #elif NR_DOUBLE_SIZE == 12
95 #define NR_TYPE long double
96 #define NR_EPSI __LDBL_EPSILON__
97 #define NR_MIN __LDBL_MIN__
98 #define NR_MAX __LDBL_MAX__
102 #elif NR_DOUBLE_SIZE == 16
104 #define NR_TYPE long double
105 #define NR_EPSI __LDBL_EPSILON__
106 #define NR_MIN __LDBL_MIN__
107 #define NR_MAX __LDBL_MAX__
108 #define NR_TINY 1e-15
113 #define NR_INF nr_inf
114 #define NR_NAN nr_nan
118 extern nr_double_t
nr_inf;
119 extern nr_double_t
nr_nan;
__BEGIN_DECLS nr_double_t nr_inf