E.1 Contents of <float.h>

The <float.h> header file has the following contents:

#ifndef __FLOAT_LOADED
#define __FLOAT_LOADED 1

/*
 *  <float.h> - Characteristics of floating types
 *
 *  Copyright (c) 1995 by Digital Equipment Corporation.  All rights reserved.
 *
 *  DEC C for OpenVMS VAX and OpenVMS Alpha
 *  DEC C++ for OpenVMS VAX and OpenVMS Alpha
 */

#if defined(__DECC) || defined(__DECCXX)
#pragma __nostandard  /* This file uses non-ANSI-Standard features */
#else
#pragma nostandard
#endif

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __G_FLOAT
# if defined(__DECC) || defined(__DECCXX)
#  error "__G_FLOAT must be defined"
# else
#  ifdef CC$gfloat
#   define __G_FLOAT CC$gfloat
#  else
#   error "Neither __G_FLOAT nor CC$gfloat defined"
#  endif
# endif
#endif

#ifndef __IEEE_FLOAT
# define __IEEE_FLOAT 0
#endif

#ifndef __X_FLOAT
# define __X_FLOAT 0
#endif

#ifndef __D_FLOAT
# define __D_FLOAT ((!__G_FLOAT) && (!__IEEE_FLOAT))
#endif

/* Rounding mode for floating point addition: */
#ifdef __BIASED_FLT_ROUNDS
# define FLT_ROUNDS (__BIASED_FLT_ROUNDS - 1) /* use compiler-generated
                                                              value, if present */
#else
# define FLT_ROUNDS 1
#endif

/* Radix of exponent representation: */
#define FLT_RADIX       2

/* Number of FLT_RADIX digits in the mantissa including the hidden bit: */
#define __F_FLT_MANT_DIG    24
#define __G_DBL_MANT_DIG    53
#define __S_FLT_MANT_DIG    24
#define __T_FLT_MANT_DIG    53
#define __X_FLT_MANT_DIG    113

#define FLT_MANT_DIG        24

#if __G_FLOAT || __IEEE_FLOAT
# define DBL_MANT_DIG       53
#else
# define DBL_MANT_DIG       56
#endif

#if __X_FLOAT
# define LDBL_MANT_DIG      113
#else
# define LDBL_MANT_DIG      DBL_MANT_DIG
#endif

/* Number of decimal digits of precision: */
#define __F_FLT_DIG        6
#define __G_FLT_DIG        15
#define __S_FLT_DIG        6
#define __T_FLT_DIG        15
#define __X_FLT_DIG        33

#define FLT_DIG             6

#if __G_FLOAT || __IEEE_FLOAT
# define DBL_DIG            15
#else
# define DBL_DIG            16
#endif

#if __X_FLOAT
# define LDBL_DIG           33
#else
# define LDBL_DIG           DBL_DIG
#endif

/* Minimum negative integer such that FLT_RADIX raised to that power minus 1
   is a normalized floating-point number: */
#define __F_FLT_MIN_EXP    (-127)
#define __G_FLT_MIN_EXP    (-1023)
#define __S_FLT_MIN_EXP    (-125)
#define __T_FLT_MIN_EXP    (-1021)
#define __X_FLT_MIN_EXP    (-16381)

#if __IEEE_FLOAT
# define FLT_MIN_EXP        (-125)
#else
# define FLT_MIN_EXP        (-127)
#endif
#if __IEEE_FLOAT
# define DBL_MIN_EXP        (-1021)
#elif __G_FLOAT
# define DBL_MIN_EXP        (-1023)
#else
# define DBL_MIN_EXP        (-127)
#endif

#if __X_FLOAT
# define LDBL_MIN_EXP       (-16381)
#else
# define LDBL_MIN_EXP       DBL_MIN_EXP
#endif

/* Minimum negative integer such that 10 raised to that power
   is in the range of normalized floating-point numbers: */
#define __F_FLT_MIN_10_EXP  (-38)
#define __G_FLT_MIN_10_EXP  (-308)
#define __S_FLT_MIN_10_EXP  (-37)
#define __T_FLT_MIN_10_EXP  (-307)
#define __X_FLT_MIN_10_EXP  (-4931)

#ifdef __IEEE_FLOAT
# define FLT_MIN_10_EXP     (-37)
#else
# define FLT_MIN_10_EXP     (-38)
#endif

#if __IEEE_FLOAT
# define DBL_MIN_10_EXP     (-307)
#elif __G_FLOAT
# define DBL_MIN_10_EXP     (-308)
#else
# define DBL_MIN_10_EXP     (-38)
#endif

#if __X_FLOAT
# define LDBL_MIN_10_EXP    (-4931)
#else
# define LDBL_MIN_10_EXP    DBL_MIN_10_EXP
#endif

/* Maximum integer such that FLT_RADIX raised to that power minus 1
   is a representable finite floating point number: */
#define __F_FLT_MAX_EXP    127
#define __G_FLT_MAX_EXP    1023
#define __S_FLT_MAX_EXP    128
#define __T_FLT_MAX_EXP    1024
#define __X_FLT_MAX_EXP    16384

#if __IEEE_FLOAT
# define FLT_MAX_EXP        128
#else
# define FLT_MAX_EXP        127
#endif

#if __IEEE_FLOAT
# define DBL_MAX_EXP        1024
#elif __G_FLOAT
# define DBL_MAX_EXP        1023
#else
# define DBL_MAX_EXP        127
#endif

#if __X_FLOAT
# define LDBL_MAX_EXP       16384
#else
# define LDBL_MAX_EXP       DBL_MAX_EXP
#endif

/* Maximum integer such that 10 raised to that power
   is in the range of representable finite floating-point numbers: */
#define __F_FLT_MAX_10_EXP  38
#define __G_FLT_MAX_10_EXP  307
#define __S_FLT_MAX_10_EXP  38
#define __T_FLT_MAX_10_EXP  308
#define __X_FLT_MAX_10_EXP  4932

#define FLT_MAX_10_EXP      38

#if __IEEE_FLOAT
# define DBL_MAX_10_EXP     308
#elif __G_FLOAT
# define DBL_MAX_10_EXP     307
#else
# define DBL_MAX_10_EXP     38
#endif

#if __X_FLOAT
# define LDBL_MAX_10_EXP    4932
#else
# define LDBL_MAX_10_EXP    DBL_MAX_10_EXP
#endif

/* Maximum representable finite floating-point number: */
#define __F_FLT_MAX        1.7014117e+38f
#define __G_FLT_MAX        8.98846567431157854e+307
#ifdef __ALPHA
#define __S_FLT_MAX        3.40282347e+38f
#define __T_FLT_MAX        1.79769313486231570e+308
#define __X_FLT_MAX        1.189731495357231765085759326628007016196477e4932l
#endif

#if __IEEE_FLOAT
# define FLT_MAX            3.40282347e+38f
#else
# define FLT_MAX            1.7014117e+38f
#endif

#if __IEEE_FLOAT
# define DBL_MAX            1.79769313486231570e+308
#elif __G_FLOAT
# define DBL_MAX            8.98846567431157854e+307
#else
# ifndef __ALPHA
#  define DBL_MAX           1.70141183460469229e+38
# else
#  define DBL_MAX           1.70141183460469213e+38
# endif
#endif

#if __X_FLOAT
# define LDBL_MAX           1.189731495357231765085759326628007016196477e4932l
#else
# define LDBL_MAX           DBL_MAX
#endif

/* The difference between 1.0 and the least value greater than 1.0
   that is representable in the given floating-point type
   (i.e. 1.0 + epsilon != 1.0): */
#define __F_FLT_EPSILON    ((float)(1.0 / (1 << 23)))
#define __G_FLT_EPSILON    (1.0 / (1 << 30) / (1 << 22))
#ifdef __ALPHA
#define __S_FLT_EPSILON    1.19209290e-07f
#define __T_FLT_EPSILON    2.2204460492503131e-16
#define __X_FLT_EPSILON    1.9259299443872358530559779425849273185381e-34l
#endif

#if __IEEE_FLOAT
# define FLT_EPSILON        1.19209290e-07f
#else
# define FLT_EPSILON        ((float)(1.0 / (1 << 23)))
#endif

#if __IEEE_FLOAT
# define DBL_EPSILON        2.2204460492503131e-16

#elif __G_FLOAT || (__D_FLOAT && defined(__ALPHA))
# define DBL_EPSILON        (1.0 / (1 << 20) / (1 << 16) / (1 << 16))
#else
# define DBL_EPSILON        (1.0 / (1 << 23) / (1 << 16) / (1 << 16))
#endif

#if __X_FLOAT
# define LDBL_EPSILON       1.9259299443872358530559779425849273185381e-34l
#else
# define LDBL_EPSILON       DBL_EPSILON
#endif

/* Minimum normalized positive floating-point number: */
#define __F_FLT_MIN        ((float) 2.93873587705571877e-39)
#define __G_FLT_MIN        5.56268464626800346e-309
#ifdef __ALPHA
#define __S_FLT_MIN        1.17549435e-38f
#define __T_FLT_MIN        2.2250738585072014e-308
#define __X_FLT_MIN
        ((long double) 3.3621031431120935062626778173217526025981e-4932l)
#endif

#if __IEEE_FLOAT
# define FLT_MIN            1.17549435e-38f
#else
# define FLT_MIN            ((float)2.93873587705571877e-39)
#endif

#if __IEEE_FLOAT
# define DBL_MIN            2.2250738585072014e-308
#elif __G_FLOAT
# define DBL_MIN            5.56268464626800346e-309
#else
# define DBL_MIN            2.93873587705571877e-39
#endif

#if __X_FLOAT
# define LDBL_MIN           3.3621031431120935062626778173217526025981e-4932l
#else
# define LDBL_MIN           DBL_MIN
#endif

#ifdef __cplusplus
}
#endif

#if defined(__DECC) || defined(__DECCXX)
#pragma __standard  /* This file uses non-ANSI-Standard features */
#else
#pragma standard
#endif

#endif /* __FLOAT_LOADED */


Previous Page | Next Page | Table of Contents | Index