home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c021 / 7.img / INCLUDE.ZIP / FLOAT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-04  |  4.3 KB  |  154 lines

  1. /*    float.h
  2.  
  3.     Defines implementation specific macros for dealing with
  4.     floating point.
  5.  
  6.         Copyright (c) Borland International 1987,1988,1990
  7.     All Rights Reserved.
  8. */
  9.  
  10. #ifndef __FLOAT_H
  11. #define __FLOAT_H
  12.  
  13. #if __STDC__
  14. #define _Cdecl
  15. #else
  16. #define _Cdecl  cdecl
  17. #endif
  18.  
  19. #ifndef __PAS__
  20. #define _CType  _Cdecl
  21. #else
  22. #define _CType  pascal
  23. #endif
  24.  
  25. #define FLT_RADIX            2
  26. #define FLT_ROUNDS            1
  27. #define FLT_GUARD            1
  28. #define FLT_NORMALIZE        1
  29.  
  30. #define DBL_DIG                15
  31. #define FLT_DIG                6
  32. #define LDBL_DIG            19
  33.  
  34. #define DBL_MANT_DIG        53
  35. #define FLT_MANT_DIG        24
  36. #define LDBL_MANT_DIG        64
  37.  
  38. #define DBL_EPSILON            2.2204460492503131E-16
  39. #define FLT_EPSILON            1.19209290E-07F
  40. #define LDBL_EPSILON        1.084202172485504E-19
  41.  
  42. /* smallest positive IEEE normal numbers */
  43. #define DBL_MIN                2.2250738585072014E-308
  44. #define FLT_MIN                1.17549435E-38F
  45. #define LDBL_MIN            _tiny_ldble
  46.  
  47. #define DBL_MAX                _huge_dble
  48. #define FLT_MAX                _huge_flt
  49. #define LDBL_MAX            _huge_ldble
  50.  
  51. #define DBL_MAX_EXP            +1024
  52. #define FLT_MAX_EXP            +128
  53. #define LDBL_MAX_EXP        +16384
  54.  
  55. #define DBL_MAX_10_EXP        +308
  56. #define FLT_MAX_10_EXP        +38
  57. #define LDBL_MAX_10_EXP        +4932
  58.  
  59. #define DBL_MIN_10_EXP        -307
  60. #define FLT_MIN_10_EXP        -37
  61. #define LDBL_MIN_10_EXP        -4931
  62.  
  63. #define DBL_MIN_EXP            -1021
  64. #define FLT_MIN_EXP            -125
  65. #define LDBL_MIN_EXP        -16381
  66.  
  67. extern float        _Cdecl _huge_flt;
  68. extern double       _Cdecl _huge_dble;
  69. extern long double  _Cdecl _huge_ldble;
  70. extern long double  _Cdecl _tiny_ldble;
  71.  
  72. #ifdef __cplusplus
  73. extern "C" {
  74. #endif
  75. unsigned int _Cdecl _clear87(void);
  76. unsigned int _Cdecl _control87(unsigned int __newcw, unsigned int __mask);
  77. void         _Cdecl _fpreset(void);
  78. unsigned int _Cdecl _status87(void);
  79. #ifdef __cplusplus
  80. }
  81. #endif
  82.  
  83. #if !__STDC__
  84.  
  85. /* 8087/80287 Status Word format   */
  86.  
  87. #define SW_INVALID        0x0001    /* Invalid operation            */
  88. #define SW_DENORMAL        0x0002    /* Denormalized operand            */
  89. #define SW_ZERODIVIDE    0x0004    /* Zero divide                    */
  90. #define SW_OVERFLOW        0x0008    /* Overflow                        */
  91. #define SW_UNDERFLOW    0x0010    /* Underflow                    */
  92. #define SW_INEXACT        0x0020    /* Precision (Inexact result)    */
  93.  
  94. /* 8087/80287 Control Word format */
  95.  
  96. #define MCW_EM               0x003f    /* interrupt Exception Masks*/
  97. #define        EM_INVALID        0x0001    /*   invalid                */
  98. #define        EM_DENORMAL        0x0002    /*   denormal                */
  99. #define        EM_ZERODIVIDE    0x0004    /*   zero divide            */
  100. #define        EM_OVERFLOW        0x0008    /*   overflow               */
  101. #define        EM_UNDERFLOW    0x0010    /*   underflow                */
  102. #define        EM_INEXACT        0x0020    /*   inexact (precision)    */
  103.  
  104. #define MCW_IC                0x1000    /* Infinity Control    */
  105. #define        IC_AFFINE        0x1000    /*   affine            */
  106. #define        IC_PROJECTIVE    0x0000    /*   projective        */
  107.  
  108. #define MCW_RC            0x0c00    /* Rounding Control        */
  109. #define        RC_CHOP        0x0c00    /*   chop                */
  110. #define        RC_UP        0x0800    /*   up                    */
  111. #define        RC_DOWN        0x0400    /*   down                */
  112. #define        RC_NEAR        0x0000    /*   near                */
  113.  
  114. #define MCW_PC            0x0300    /* Precision Control    */
  115. #define        PC_24        0x0000    /*    24 bits            */
  116. #define        PC_53        0x0200    /*    53 bits            */
  117. #define        PC_64        0x0300    /*    64 bits            */
  118.  
  119. /* 8087/80287 Initial Control Word */
  120. /* use affine infinity, mask underflow and precision exceptions */
  121.  
  122. #define CW_DEFAULT    _default87
  123. extern unsigned int _Cdecl _default87;
  124.  
  125. /* 
  126.     SIGFPE signal error types (for integer & float exceptions). 
  127. */
  128. #define    FPE_INTOVFLOW        126    /* 80x86 Interrupt on overflow    */
  129. #define    FPE_INTDIV0            127    /* 80x86 Integer divide by zero    */
  130.  
  131. #define    FPE_INVALID            129    /* 80x87 invalid operation      */
  132. #define    FPE_ZERODIVIDE        131    /* 80x87 divide by zero            */
  133. #define    FPE_OVERFLOW        132    /* 80x87 arithmetic overflow    */
  134. #define    FPE_UNDERFLOW        133    /* 80x87 arithmetic underflow    */
  135. #define    FPE_INEXACT            134    /* 80x87 precision loss            */
  136. #define    FPE_STACKFAULT        135    /* 80x87 stack overflow            */
  137. #define    FPE_EXPLICITGEN        140    /* When SIGFPE is raise()'d        */
  138.  
  139. /* 
  140.             SIGSEGV signal error types.
  141. */
  142. #define    SEGV_BOUND            10    /* A BOUND violation (SIGSEGV)    */
  143. #define    SEGV_EXPLICITGEN    11    /* When SIGSEGV is raise()'d    */
  144.  
  145. /* 
  146.             SIGILL signal error types.
  147. */
  148. #define    ILL_EXECUTION        20    /* Illegal operation exception    */
  149. #define    ILL_EXPLICITGEN        21    /* When SIGILL is raise()'d        */
  150.  
  151. #endif  /* !__STDC__ */
  152.  
  153. #endif
  154.