home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / cset21v1.zip / IBMCPP / INCLUDE / FLOAT.H < prev    next >
Text File  |  1993-09-17  |  7KB  |  184 lines

  1. #pragma info( none )
  2. #ifndef __CHKHDR__
  3.    #pragma info( none )
  4. #endif
  5. #pragma info( restore )
  6.  
  7. #ifndef __float_h
  8.    #define __float_h
  9.  
  10.    #ifdef __cplusplus
  11.       extern "C" {
  12.    #endif
  13.  
  14.    /********************************************************************/
  15.    /*  <float.h> header file                                           */
  16.    /*                                                                  */
  17.    /*  Licensed Materials - Property of IBM                            */
  18.    /*                                                                  */
  19.    /*  IBM C/C++ Tools Version 2.01                                    */
  20.    /*  Copyright (C) International Business Machines Corp., 1991,1993  */
  21.    /*  All rights reserved                                             */
  22.    /*                                                                  */
  23.    /*  US Government Users Restricted Rights -                         */
  24.    /*  Use, duplication, or disclosure restricted                      */
  25.    /*  by GSA ADP Schedule Contract with IBM Corp.                     */
  26.    /*                                                                  */
  27.    /********************************************************************/
  28.  
  29.    #define    FLT_ROUNDS            1   /* 0, 2 and 3 also available on 80387 */
  30.  
  31.    #define    FLT_RADIX             2
  32.  
  33.    #define    FLT_MANT_DIG         24
  34.    #define    DBL_MANT_DIG         53
  35.    #define    LDBL_MANT_DIG        64
  36.  
  37.    #define    FLT_DIG               6
  38.    #define    DBL_DIG              15
  39.    #define    LDBL_DIG             18
  40.  
  41.    #define    FLT_MIN_EXP      (-125)
  42.    #define    DBL_MIN_EXP     (-1021)
  43.    #define    LDBL_MIN_EXP   (-16381)
  44.  
  45.    #define    FLT_MIN_10_EXP    (-37)
  46.    #define    DBL_MIN_10_EXP   (-307)
  47.    #define    LDBL_MIN_10_EXP (-4931)
  48.  
  49.    #define    FLT_MAX_EXP         128
  50.    #define    DBL_MAX_EXP        1024
  51.    #define    LDBL_MAX_EXP      16384
  52.  
  53.    #define    FLT_MAX_10_EXP       38
  54.    #define    DBL_MAX_10_EXP      308
  55.    #define    LDBL_MAX_10_EXP    4932
  56.  
  57.    #define    FLT_MAX         3.402823466e+38F
  58.    #define    DBL_MAX         1.7976931348623158e+308
  59.    #define    LDBL_MAX        1.18973149535723176502e+4932L
  60.  
  61.    #define    FLT_EPSILON     1.192092896e-07F
  62.    #define    DBL_EPSILON     2.2204460492503131e-016
  63.    #define    LDBL_EPSILON    1.08420217248550443401e-19L
  64.  
  65.    #define    FLT_MIN         1.175494351e-38F
  66.    #define    DBL_MIN         2.2250738585072014e-308
  67.    #define    LDBL_MIN        3.36210314311209350626e-4932L
  68.  
  69.  
  70.    #if defined(__EXTENDED__)
  71.  
  72.       /* 80387 math control information */
  73.  
  74.       /* User Control Word Mask and bit definitions. */
  75.       /* These definitions match the 80387 */
  76.  
  77.       #define MCW_EM          0x003f          /* interrupt Exception Masks */
  78.       #define EM_INVALID      0x0001          /*  invalid */
  79.       #define EM_DENORMAL     0x0002          /*  denormal */
  80.       #define EM_ZERODIVIDE   0x0004          /*  zero divide */
  81.       #define EM_OVERFLOW     0x0008          /*  overflow */
  82.       #define EM_UNDERFLOW    0x0010          /*  underflow */
  83.       #define EM_INEXACT      0x0020          /*  inexact (precision) */
  84.  
  85.       #define MCW_IC          0x1000          /* Infinity Control */
  86.       #define IC_AFFINE       0x1000          /*  affine */
  87.       #define IC_PROJECTIVE   0x0000          /*  projective */
  88.  
  89.       #define MCW_RC          0x0c00          /* Rounding Control */
  90.       #define RC_CHOP         0x0c00          /*  chop */
  91.       #define RC_UP           0x0800          /*  up */
  92.       #define RC_DOWN         0x0400          /*  down */
  93.       #define RC_NEAR         0x0000          /*  near */
  94.  
  95.       #define MCW_PC          0x0300          /* Precision Control */
  96.       #define PC_24           0x0000          /*  24 bits */
  97.       #define PC_53           0x0200          /*  53 bits */
  98.       #define PC_64           0x0300          /*  64 bits */
  99.  
  100.       /* initial Control Word value */
  101.  
  102.       #define CW_DEFAULT ( RC_NEAR + PC_64 + EM_DENORMAL + EM_INEXACT )
  103.  
  104.       /* user Status Word bit definitions */
  105.  
  106.       #define SW_INVALID      0x0001          /* invalid */
  107.       #define SW_DENORMAL     0x0002          /* denormal */
  108.       #define SW_ZERODIVIDE   0x0004          /* zero divide */
  109.       #define SW_OVERFLOW     0x0008          /* overflow */
  110.       #define SW_UNDERFLOW    0x0010          /* underflow */
  111.       #define SW_INEXACT      0x0020          /* inexact (precision) */
  112.       #define SW_STACKFAULT   0x0040          /* stack fault (SW_INVALID also set) */
  113.  
  114.       /* stack problems (SW_INVALID and SW_STACKFAULT both set) */
  115.       #define SW_STACKOVERFLOW        0x0200          /* stack overflow */
  116.                                                       /* bit is off for stack underflow */
  117.  
  118.       /*  Floating point error signals and return codes */
  119.  
  120.       #define FPE_INTDIV0             0x91            /* integer division by 0 */
  121.       #define FPE_INT_OFLOW           0x92            /* integer overflow */
  122.       #define FPE_BOUND               0x93            /* bounds failure */
  123.       #define FPE_INVALID             0x81
  124.       #define FPE_DENORMAL            0x82
  125.       #define FPE_ZERODIVIDE          0x83
  126.       #define FPE_OVERFLOW            0x84
  127.       #define FPE_UNDERFLOW           0x85
  128.       #define FPE_INEXACT             0x86
  129.  
  130.       #define FPE_STACKOVERFLOW       0x8a
  131.       #define FPE_STACKUNDERFLOW      0x8b
  132.  
  133.       #define FPE_EXPLICITGEN         0x8c    /* raise( SIGFPE ); */
  134.  
  135.       /* function prototypes */
  136.  
  137.       unsigned int (_Optlink _clear87)( void );
  138.       unsigned int (_Optlink _control87)( unsigned int, unsigned int );
  139.       unsigned int (_Optlink _status87)( void );
  140.       void          _Optlink _fpreset( void );
  141.  
  142.       unsigned int _Builtin __clear87( void );
  143.       unsigned int _Builtin __control87( unsigned int, unsigned int );
  144.       unsigned int _Builtin __status87( void );
  145.  
  146.       #define _clear87( )             __clear87( )
  147.       #define _control87( x, y )      __control87( (x), (y) )
  148.       #define _status87( )            __status87( )
  149.  
  150.       extern const float   _fposinfi;
  151.       #define _INFF        _fposinfi
  152.       #define _INFINITYF   _fposinfi
  153.  
  154.       extern const double _infinity;
  155.       #define _INF        _infinity
  156.       #define _INFINITY   _infinity
  157.  
  158.       extern const long double _ldposinfi;
  159.       #define _INFL            _ldposinfi
  160.       #define _INFINITYL       _ldposinfi
  161.  
  162.       extern const float       _fposqnan;
  163.       extern const double      _dposqnan;
  164.       extern const long double _ldposqnan;
  165.  
  166.       #define _NANF      _fposqnan
  167.       #define _NAN       _dposqnan
  168.       #define _NANL      _ldposqnan
  169.  
  170.    #endif
  171.  
  172.    #ifdef __cplusplus
  173.       }
  174.    #endif
  175.  
  176. #endif
  177.  
  178. #pragma info( none )
  179. #ifndef __CHKHDR__
  180.    #pragma info( restore )
  181. #endif
  182. #pragma info( restore )
  183.  
  184.