4 #define PRECISION_LIB 0 14 #ifdef _STANDARD_ // standard library available 18 class FloatingPointPrecision
22 {
return numeric_limits<Real>::digits10 ; }
25 {
return numeric_limits<Real>::epsilon(); }
28 {
return numeric_limits<Real>::digits; }
33 static int MaximumDecimalExponent()
34 {
return numeric_limits<Real>::max_exponent10; }
36 static int MaximumExponent()
37 {
return numeric_limits<Real>::max_exponent; }
39 static Real LnMaximum()
45 static int MinimumDecimalExponent()
46 {
return numeric_limits<Real>::min_exponent10; }
48 static int MinimumExponent()
49 {
return numeric_limits<Real>::min_exponent; }
51 static Real LnMinimum()
55 {
return numeric_limits<Real>::radix; }
59 return numeric_limits<Real>::round_style ==
60 round_to_nearest ? 1 : 0;
66 #else // _STANDARD_ not defined 68 #ifndef SystemV // if there is float.h 74 class FloatingPointPrecision
84 {
return FLT_MANT_DIG; }
89 static int MaximumDecimalExponent()
90 {
return FLT_MAX_10_EXP; }
92 static int MaximumExponent()
93 {
return FLT_MAX_EXP; }
95 static Real LnMaximum()
101 static int MinimumDecimalExponent()
102 {
return FLT_MIN_10_EXP; }
104 static int MinimumExponent()
105 {
return FLT_MIN_EXP; }
107 static Real LnMinimum()
111 {
return FLT_RADIX; }
114 {
return FLT_ROUNDS; }
118 #endif // USING_FLOAT 123 class FloatingPointPrecision
130 static Real Epsilon()
133 static int Mantissa()
134 {
return DBL_MANT_DIG; }
139 static int MaximumDecimalExponent()
140 {
return DBL_MAX_10_EXP; }
142 static int MaximumExponent()
143 {
return DBL_MAX_EXP; }
145 static Real LnMaximum()
157 static int MinimumDecimalExponent()
158 {
return DBL_MIN_10_EXP; }
160 static int MinimumExponent()
161 {
return DBL_MIN_EXP; }
163 static Real LnMinimum()
168 {
return FLT_RADIX; }
171 {
return FLT_ROUNDS; }
175 #endif // USING_DOUBLE 177 #else // if there is no float.h 181 class FloatingPointPrecision
185 static Real Epsilon()
186 {
return pow(2.0,(
int)(1-FSIGNIF)); }
192 static Real LnMaximum()
198 static Real LnMinimum()
203 #endif // USING_FLOAT 208 class FloatingPointPrecision
212 static Real Epsilon()
213 {
return pow(2.0,(
int)(1-DSIGNIF)); }
219 static Real LnMaximum()
220 {
return LN_MAXDOUBLE; }
225 static Real LnMinimum()
226 {
return LN_MINDOUBLE; }
229 #endif // USING_DOUBLE 237 #endif // use_namespace 241 #endif // PRECISION_LIB
Real Maximum(const BaseMatrix &B)
Real Minimum(const BaseMatrix &B)