(root)/
glibc-2.38/
include/
float.h
       1  #ifndef _LIBC_FLOAT_H
       2  #define _LIBC_FLOAT_H
       3  
       4  #define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
       5  #include <bits/libc-header-start.h>
       6  
       7  /* Some tests also define this macro, requiring a check here to avoid
       8     errors for duplicate definitions (see GCC bug 91451).  */
       9  #if !defined _ISOMAC && !defined __STDC_WANT_IEC_60559_TYPES_EXT__
      10  # define __STDC_WANT_IEC_60559_TYPES_EXT__
      11  #endif
      12  
      13  #include_next <float.h>
      14  
      15  /* Supplement float.h macros for _FloatN and _FloatNx for older
      16     compilers which do not yet support the type.  These are described
      17     in TS 18661-3.  */
      18  #include <features.h>
      19  #include <bits/floatn.h>
      20  #if !__GNUC_PREREQ (7, 0) && __GLIBC_USE (IEC_60559_TYPES_EXT)
      21  
      22  # if __HAVE_FLOAT128
      23  #  define FLT128_MANT_DIG	113
      24  #  define FLT128_DECIMAL_DIG	36
      25  #  define FLT128_DIG		33
      26  #  define FLT128_MIN_EXP	(-16381)
      27  #  define FLT128_MIN_10_EXP	(-4931)
      28  #  define FLT128_MAX_EXP	16384
      29  #  define FLT128_MAX_10_EXP	4932
      30  #  define FLT128_MAX					\
      31    __f128 (1.18973149535723176508575932662800702e+4932)
      32  #  define FLT128_EPSILON				\
      33    __f128 (1.92592994438723585305597794258492732e-34)
      34  #  define FLT128_MIN					\
      35    __f128 (3.36210314311209350626267781732175260e-4932)
      36  #  define FLT128_TRUE_MIN				\
      37    __f128 (6.47517511943802511092443895822764655e-4966)
      38  # endif
      39  
      40  /* Types other than _Float128 are typedefs for other types with old
      41     compilers.  */
      42  
      43  # if __HAVE_FLOAT32
      44  #  define FLT32_MANT_DIG	FLT_MANT_DIG
      45  #  define FLT32_DECIMAL_DIG	FLT_DECIMAL_DIG
      46  #  define FLT32_DIG		FLT_DIG
      47  #  define FLT32_MIN_EXP		FLT_MIN_EXP
      48  #  define FLT32_MIN_10_EXP	FLT_MIN_10_EXP
      49  #  define FLT32_MAX_EXP		FLT_MAX_EXP
      50  #  define FLT32_MAX_10_EXP	FLT_MAX_10_EXP
      51  #  define FLT32_MAX		FLT_MAX
      52  #  define FLT32_EPSILON		FLT_EPSILON
      53  #  define FLT32_MIN		FLT_MIN
      54  #  define FLT32_TRUE_MIN	FLT_TRUE_MIN
      55  # endif
      56  
      57  # if __HAVE_FLOAT64
      58  #  define FLT64_MANT_DIG	DBL_MANT_DIG
      59  #  define FLT64_DECIMAL_DIG	DBL_DECIMAL_DIG
      60  #  define FLT64_DIG		DBL_DIG
      61  #  define FLT64_MIN_EXP		DBL_MIN_EXP
      62  #  define FLT64_MIN_10_EXP	DBL_MIN_10_EXP
      63  #  define FLT64_MAX_EXP		DBL_MAX_EXP
      64  #  define FLT64_MAX_10_EXP	DBL_MAX_10_EXP
      65  #  define FLT64_MAX		DBL_MAX
      66  #  define FLT64_EPSILON		DBL_EPSILON
      67  #  define FLT64_MIN		DBL_MIN
      68  #  define FLT64_TRUE_MIN	DBL_TRUE_MIN
      69  # endif
      70  
      71  # if __HAVE_FLOAT32X
      72  #  define FLT32X_MANT_DIG	DBL_MANT_DIG
      73  #  define FLT32X_DECIMAL_DIG	DBL_DECIMAL_DIG
      74  #  define FLT32X_DIG		DBL_DIG
      75  #  define FLT32X_MIN_EXP	DBL_MIN_EXP
      76  #  define FLT32X_MIN_10_EXP	DBL_MIN_10_EXP
      77  #  define FLT32X_MAX_EXP	DBL_MAX_EXP
      78  #  define FLT32X_MAX_10_EXP	DBL_MAX_10_EXP
      79  #  define FLT32X_MAX		DBL_MAX
      80  #  define FLT32X_EPSILON	DBL_EPSILON
      81  #  define FLT32X_MIN		DBL_MIN
      82  #  define FLT32X_TRUE_MIN	DBL_TRUE_MIN
      83  # endif
      84  
      85  # if __HAVE_FLOAT64X
      86  #  if __HAVE_FLOAT64X_LONG_DOUBLE
      87  #   define FLT64X_MANT_DIG	LDBL_MANT_DIG
      88  #   define FLT64X_DECIMAL_DIG	LDBL_DECIMAL_DIG
      89  #   define FLT64X_DIG		LDBL_DIG
      90  #   define FLT64X_MIN_EXP	LDBL_MIN_EXP
      91  #   define FLT64X_MIN_10_EXP	LDBL_MIN_10_EXP
      92  #   define FLT64X_MAX_EXP	LDBL_MAX_EXP
      93  #   define FLT64X_MAX_10_EXP	LDBL_MAX_10_EXP
      94  #   define FLT64X_MAX		LDBL_MAX
      95  #   define FLT64X_EPSILON	LDBL_EPSILON
      96  #   define FLT64X_MIN		LDBL_MIN
      97  #   define FLT64X_TRUE_MIN	LDBL_TRUE_MIN
      98  #  else
      99  #   define FLT64X_MANT_DIG	FLT128_MANT_DIG
     100  #   define FLT64X_DECIMAL_DIG	FLT128_DECIMAL_DIG
     101  #   define FLT64X_DIG		FLT128_DIG
     102  #   define FLT64X_MIN_EXP	FLT128_MIN_EXP
     103  #   define FLT64X_MIN_10_EXP	FLT128_MIN_10_EXP
     104  #   define FLT64X_MAX_EXP	FLT128_MAX_EXP
     105  #   define FLT64X_MAX_10_EXP	FLT128_MAX_10_EXP
     106  #   define FLT64X_MAX		FLT128_MAX
     107  #   define FLT64X_EPSILON	FLT128_EPSILON
     108  #   define FLT64X_MIN		FLT128_MIN
     109  #   define FLT64X_TRUE_MIN	FLT128_TRUE_MIN
     110  #  endif
     111  # endif
     112  
     113  #endif
     114  
     115  #endif /* _LIBC_FLOAT_H */