home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / qc25 / include / float.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-25  |  5.0 KB  |  140 lines

  1. /***
  2. *float.h - Konstanten für Gleitkommawerte
  3. *
  4. *    Copyright (c) 1985-1990, Microsoft Corporation.  Alle Rechte vorbehalten.
  5. *
  6. * Zweck:
  7. *    Diese Datei enthält Definitionen für mehrere ausführungsabhängige Werte,
  8. *    die oft in komplexen Gleitkommaprogrammen verwendet werden.
  9. *    [ANSI]
  10. *
  11. ***/
  12.  
  13. #if defined(_DLL) && !defined(_MT)
  14. #error _DLL kann ohne _MT nicht definiert werden
  15. #endif
  16.  
  17. #ifdef _MT
  18. #define _FAR_ _far
  19. #else
  20. #define _FAR_
  21. #endif
  22.  
  23. #define DBL_DIG     15            /* Präzision als Anzahl der Nachkommastellen */
  24. #define DBL_EPSILON    2.2204460492503131e-016 /* das kleinste davon, daß 1.0+DBL_EPSILON != 1.0 */
  25. #define DBL_MANT_DIG    53            /* Anzahl der Bits in Mantisse */
  26. #define DBL_MAX     1.7976931348623158e+308 /* Höchstwert */
  27. #define DBL_MAX_10_EXP    308            /* Höchster Dezimalexponent */
  28. #define DBL_MAX_EXP    1024            /* Höchster Binärexponent */
  29. #define DBL_MIN     2.2250738585072014e-308 /* Positiver Mindestwert */
  30. #define DBL_MIN_10_EXP    (-307)            /* Mindest-Dezimalexponent */
  31. #define DBL_MIN_EXP    (-1021)         /* Mindest-Binärexponent */
  32. #define DBL_RADIX    2            /* Exponentenwurzel */
  33. #define DBL_ROUNDS    1            /* Additionsrundung: near */
  34.  
  35. #define FLT_DIG     7            /* Präzision als Anzahl der Nachkommastellen */
  36. #define FLT_EPSILON    1.192092896e-07F     /* das kleinste, so daß 1.0+FLT_EPSILON != 1.0 */
  37. #define FLT_GUARD    0
  38. #define FLT_MANT_DIG    24            /* Anzahl der Bits in Mantisse  */
  39. #define FLT_MAX     3.402823466e+38F     /* Höchstwert */
  40. #define FLT_MAX_10_EXP    38            /* Höchster Dezimalexponent */
  41. #define FLT_MAX_EXP    128            /* Höchster Binärexponent */
  42. #define FLT_MIN     1.175494351e-38F     /*  Positiver Mindestwert */
  43. #define FLT_MIN_10_EXP    (-37)            /* Mindest-Dezimalexponent */
  44. #define FLT_MIN_EXP    (-125)            /* Mindest-Binärexponent */
  45. #define FLT_NORMALIZE    0
  46. #define FLT_RADIX    2            /* Exponentenwurzel */
  47. #define FLT_ROUNDS    1            /* Additionsrundung: near */
  48.  
  49. #define LDBL_DIG    19            /* Präzision als Anzahl der Nachkommastellen */
  50. #define LDBL_EPSILON    5.4210108624275221706e-020  /* das kleinste, so daß 1.0+LDBL_EPSILON != 1.0 */
  51. #define LDBL_MANT_DIG    64            /* Anzahl der Bits in Mantisse */
  52. #define LDBL_MAX    1.189731495357231765e+4932L /* Höchstwert */
  53. #define LDBL_MAX_10_EXP 4932            /* Höchster Dezimalexponent */
  54. #define LDBL_MAX_EXP    16384            /* Höchster Binärexponent */
  55. #define LDBL_MIN    3.3621031431120935063e-4932L /* Positiver Mindestwert */
  56. #define LDBL_MIN_10_EXP (-4931)         /* Mindest-Dezimalexponent */
  57. #define LDBL_MIN_EXP    (-16381)        /* Mindest-Binärexponent */
  58. #define LDBL_RADIX    2            /* Exponentenwurzel */
  59. #define LDBL_ROUNDS    1            /* Additionsrundung: near */
  60.  
  61.  
  62. /*
  63.  *  8087/80287 Arithmetik-Steuerinformationm
  64.  */
  65.  
  66.  
  67. /* User Control Word Mask and bit definitions.
  68.  * Diese Definitionen entsprechen dem 8087/80287
  69.  */
  70.  
  71. #define MCW_EM        0x003f        /* Unterbrechungs-Ausnahmemaske */
  72. #define EM_INVALID    0x0001        /*   ungültig */
  73. #define EM_DENORMAL    0x0002        /*   unnormal */
  74. #define EM_ZERODIVIDE    0x0004        /*   Division durch Null */
  75. #define EM_OVERFLOW    0x0008        /*   Überlauf */
  76. #define EM_UNDERFLOW    0x0010        /*   Unterlauf */
  77. #define EM_INEXACT    0x0020        /*   ungenau (Präzision) */
  78.  
  79. #define MCW_IC        0x1000        /* Unendlichkeitssteuerung */
  80. #define IC_AFFINE    0x1000        /*   Affinität */
  81. #define IC_PROJECTIVE    0x0000        /*   projektiv */
  82.  
  83. #define MCW_RC        0x0c00        /* Rundungssteuerung */
  84. #define RC_CHOP     0x0c00        /*   abschneiden */
  85. #define RC_UP        0x0800        /*   auf */
  86. #define RC_DOWN     0x0400        /*   ab */
  87. #define RC_NEAR     0x0000        /*   nahe */
  88.  
  89. #define MCW_PC        0x0300        /* Präzision */
  90. #define PC_24        0x0000        /*    24 Bits */
  91. #define PC_53        0x0200        /*    53 Bits */
  92. #define PC_64        0x0300        /*    64 Bits */
  93.  
  94.  
  95. /* Anfangswert für Steuerwort */
  96.  
  97. #define CW_DEFAULT ( IC_AFFINE + RC_NEAR + PC_64 + EM_DENORMAL + EM_UNDERFLOW + EM_INEXACT )
  98.  
  99.  
  100. /* Benutzer Statuswortmaske und Bit-Definitionen */
  101.  
  102. #define SW_INVALID    0x0001    /* ungültig */
  103. #define SW_DENORMAL    0x0002    /* unnormal */
  104. #define SW_ZERODIVIDE    0x0004    /* Division durch Null */
  105. #define SW_OVERFLOW    0x0008    /* Überlauf */
  106. #define SW_UNDERFLOW    0x0010    /* Unterlauf */
  107. #define SW_INEXACT    0x0020    /* ungenau (Präzision) */
  108.  
  109.  
  110. /* ungültige Nebenbedingunen (SW_INVALID auch aktiv) */
  111.  
  112. #define SW_UNEMULATED        0x0040    /* nicht emulierbare Anweisung */
  113. #define SW_SQRTNEG        0x0080    /* Quadratwurzel einer negativen Zahl */
  114. #define SW_STACKOVERFLOW    0x0200    /* FP-Stacküberlauf */
  115. #define SW_STACKUNDERFLOW    0x0400    /* FP-Stapelunterlauf */
  116.  
  117.  
  118. /*  Gleitkomma-Fehlersignale und Ergebniscodes */
  119.  
  120. #define FPE_INVALID        0x81
  121. #define FPE_DENORMAL        0x82
  122. #define FPE_ZERODIVIDE        0x83
  123. #define FPE_OVERFLOW        0x84
  124. #define FPE_UNDERFLOW        0x85
  125. #define FPE_INEXACT        0x86
  126.  
  127. #define FPE_UNEMULATED        0x87
  128. #define FPE_SQRTNEG        0x88
  129. #define FPE_STACKOVERFLOW    0x8a
  130. #define FPE_STACKUNDERFLOW    0x8b
  131.  
  132. #define FPE_EXPLICITGEN     0x8c    /* raise( SIGFPE ); */
  133.  
  134. /* Funktionsprototypen */
  135.  
  136. unsigned int _FAR_ _cdecl _clear87(void);
  137. unsigned int _FAR_ _cdecl _control87(unsigned int, unsigned int);
  138. void _FAR_ _cdecl _fpreset(void);
  139. unsigned int _FAR_ _cdecl _status87(void);
  140.