[vox-tech] location of DBL_EPSILON definition

Boris Jeremic jeremic at ucdavis.edu
Mon Jan 29 11:23:24 PST 2007



Peter Jay Salzman wrote:
> I already know the names of all my constants and what they mean.  I wante=
d a
> file that I could open and peek at numerical values.  No gcc, no web
> browser.  Just some float.h that I can open with vim, less, or grep to
> quickly get a value in 2 seconds.
> =

> Such a float.h used to exist on my hard drive.  I guess that changed with
> some gcc update.
> =

> Telling me to read the IEEE 754 standard is like telling me that I need to
> know the DNA sequence for a Fuji apple when all I really want is to eat o=
ne.
> =

> Peter
> =

> =

> =

> On Mon 29 Jan 07,  8:58 AM, Boris Jeremic <jeremic at ucdavis.edu> said:
> =

>>Then you need to read IEEE 754 (and accompanying documents...):
>>
>>
>>http://grouper.ieee.org/groups/754/
>>
>>
>>Boris
>>
>>
>>Peter Jay Salzman wrote:
>>
>>>On Fri 26 Jan 07,  9:04 AM, Boris Jeremic <jeremic at ucdavis.edu> said:
>>>
>>>
>>>>on my machine (fedora core 5) there are definitions in
>>>>
>>>>./usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include/float.h
>>>>
>>>> /* Difference between 1.0 and the minimum double greater than 1.0 */
>>>>#undef DBL_EPSILON
>>>>#define DBL_EPSILON 2.2204460492503131e-16
>>>>
>>>>
>>>>
>>>>but not in
>>>>
>>>>./usr/lib/gcc/i386-redhat-linux/4.1.0/include/float.h
>>>>
>>>>where it appears as:
>>>>
>>>>/* The difference between 1 and the least value greater than 1 that is
>>>> representable in the given floating point type, b**1-p.  */
>>>>#undef FLT_EPSILON
>>>>#undef DBL_EPSILON
>>>>#undef LDBL_EPSILON
>>>>#define FLT_EPSILON	__FLT_EPSILON__
>>>>#define DBL_EPSILON	__DBL_EPSILON__
>>>>#define LDBL_EPSILON	__LDBL_EPSILON__
>>>
>>>
>>>
>>>It's in neither place for me.
>>>
>>>
>>>
>>>>You can also calculate them yourself:
>>>
>>>
>>>Yeah, I'm aware of that, but this is not what I wanted.
>>>
>>>It's not DBL_EPSILON that I care about (I simplified my question).  I =

>>>wanted
>>>a file that I could look at and know any of the constants that are of
>>>interest to me.  It's not one constant I wanted to know, but all of them=
, =

>>>in
>>>one place.
> =

> _______________________________________________
> vox-tech mailing list
> vox-tech at lists.lugod.org
> http://lists.lugod.org/mailman/listinfo/vox-tech
> =

-------------- next part --------------
/* float.h for target with IEEE 32/64 bit and Intel 386 style 80 bit
   floating point formats */
#ifndef _FLOAT_H_
#define _FLOAT_H_
/* Produced by enquire version 4.3, CWI, Amsterdam */

   /* Radix of exponent representation */
#undef FLT_RADIX
#define FLT_RADIX 2
   /* Number of base-FLT_RADIX digits in the significand of a float */
#undef FLT_MANT_DIG
#define FLT_MANT_DIG 24
   /* Number of decimal digits of precision in a float */
#undef FLT_DIG
#define FLT_DIG 6
   /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown=
 */
#undef FLT_ROUNDS
#define FLT_ROUNDS 1
   /* Difference between 1.0 and the minimum float greater than 1.0 */
#undef FLT_EPSILON
#define FLT_EPSILON 1.19209290e-07F
   /* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */
#undef FLT_MIN_EXP
#define FLT_MIN_EXP (-125)
   /* Minimum normalised float */
#undef FLT_MIN
#define FLT_MIN 1.17549435e-38F
   /* Minimum int x such that 10**x is a normalised float */
#undef FLT_MIN_10_EXP
#define FLT_MIN_10_EXP (-37)
   /* Maximum int x such that FLT_RADIX**(x-1) is a representable float */
#undef FLT_MAX_EXP
#define FLT_MAX_EXP 128
   /* Maximum float */
#undef FLT_MAX
#define FLT_MAX 3.40282347e+38F
   /* Maximum int x such that 10**x is a representable float */
#undef FLT_MAX_10_EXP
#define FLT_MAX_10_EXP 38

   /* Number of base-FLT_RADIX digits in the significand of a double */
#undef DBL_MANT_DIG
#define DBL_MANT_DIG 53
   /* Number of decimal digits of precision in a double */
#undef DBL_DIG
#define DBL_DIG 15
   /* Difference between 1.0 and the minimum double greater than 1.0 */
#undef DBL_EPSILON
#define DBL_EPSILON 2.2204460492503131e-16
   /* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */
#undef DBL_MIN_EXP
#define DBL_MIN_EXP (-1021)
   /* Minimum normalised double */
#undef DBL_MIN
#define DBL_MIN 2.2250738585072014e-308
   /* Minimum int x such that 10**x is a normalised double */
#undef DBL_MIN_10_EXP
#define DBL_MIN_10_EXP (-307)
   /* Maximum int x such that FLT_RADIX**(x-1) is a representable double */
#undef DBL_MAX_EXP
#define DBL_MAX_EXP 1024
   /* Maximum double */
#undef DBL_MAX
#define DBL_MAX 1.7976931348623157e+308
   /* Maximum int x such that 10**x is a representable double */
#undef DBL_MAX_10_EXP
#define DBL_MAX_10_EXP 308

   /* Number of base-FLT_RADIX digits in the significand of a long double */
#undef LDBL_MANT_DIG
#define LDBL_MANT_DIG 64
   /* Number of decimal digits of precision in a long double */
#undef LDBL_DIG
#define LDBL_DIG 18
   /* Difference between 1.0 and the minimum long double greater than 1.0 */
#undef LDBL_EPSILON
#define LDBL_EPSILON 1.08420217248550443401e-19L
   /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double =
*/
#undef LDBL_MIN_EXP
#define LDBL_MIN_EXP (-16381)
   /* Minimum normalised long double */
#undef LDBL_MIN
#define LDBL_MIN 3.36210314311209350626e-4932L
   /* Minimum int x such that 10**x is a normalised long double */
#undef LDBL_MIN_10_EXP
#define LDBL_MIN_10_EXP (-4931)
   /* Maximum int x such that FLT_RADIX**(x-1) is a representable long doub=
le */
#undef LDBL_MAX_EXP
#define LDBL_MAX_EXP 16384
   /* Maximum long double */
#undef LDBL_MAX
#define LDBL_MAX 1.18973149535723176502e+4932L
   /* Maximum int x such that 10**x is a representable long double */
#undef LDBL_MAX_10_EXP
#define LDBL_MAX_10_EXP 4932

#if defined (__STDC_VERSION__) && __STDC_VERSION__ >=3D 199901L
   /* The floating-point expression evaluation method.
        -1  indeterminate
         0  evaluate all operations and constants just to the range and
            precision of the type
         1  evaluate operations and constants of type float and double
            to the range and precision of the double type, evaluate
            long double operations and constants to the range and
            precision of the long double type
         2  evaluate all operations and constants to the range and
            precision of the long double type
   */
# undef FLT_EVAL_METHOD
# define FLT_EVAL_METHOD	2

   /* Number of decimal digits to enable rounding to the given number of
      decimal digits without loss of precision.
         if FLT_RADIX =3D=3D 10^n:  #mantissa * log10 (FLT_RADIX)
         else                :  ceil (1 + #mantissa * log10 (FLT_RADIX))
      where #mantissa is the number of bits in the mantissa of the widest
      supported floating-point type.
   */
# undef DECIMAL_DIG
# define DECIMAL_DIG	21

#endif	/* C99 */

#endif /*  _FLOAT_H___ */


More information about the vox-tech mailing list