home *** CD-ROM | disk | FTP | other *** search
- /***
- *float.h - Konstanten für Gleitkommawerte
- *
- * Copyright (c) 1985-1990, Microsoft Corporation. Alle Rechte vorbehalten.
- *
- * Zweck:
- * Diese Datei enthält Definitionen für mehrere ausführungsabhängige Werte,
- * die oft in komplexen Gleitkommaprogrammen verwendet werden.
- * [ANSI]
- *
- ***/
-
- #if defined(_DLL) && !defined(_MT)
- #error _DLL kann ohne _MT nicht definiert werden
- #endif
-
- #ifdef _MT
- #define _FAR_ _far
- #else
- #define _FAR_
- #endif
-
- #define DBL_DIG 15 /* Präzision als Anzahl der Nachkommastellen */
- #define DBL_EPSILON 2.2204460492503131e-016 /* das kleinste davon, daß 1.0+DBL_EPSILON != 1.0 */
- #define DBL_MANT_DIG 53 /* Anzahl der Bits in Mantisse */
- #define DBL_MAX 1.7976931348623158e+308 /* Höchstwert */
- #define DBL_MAX_10_EXP 308 /* Höchster Dezimalexponent */
- #define DBL_MAX_EXP 1024 /* Höchster Binärexponent */
- #define DBL_MIN 2.2250738585072014e-308 /* Positiver Mindestwert */
- #define DBL_MIN_10_EXP (-307) /* Mindest-Dezimalexponent */
- #define DBL_MIN_EXP (-1021) /* Mindest-Binärexponent */
- #define DBL_RADIX 2 /* Exponentenwurzel */
- #define DBL_ROUNDS 1 /* Additionsrundung: near */
-
- #define FLT_DIG 7 /* Präzision als Anzahl der Nachkommastellen */
- #define FLT_EPSILON 1.192092896e-07F /* das kleinste, so daß 1.0+FLT_EPSILON != 1.0 */
- #define FLT_GUARD 0
- #define FLT_MANT_DIG 24 /* Anzahl der Bits in Mantisse */
- #define FLT_MAX 3.402823466e+38F /* Höchstwert */
- #define FLT_MAX_10_EXP 38 /* Höchster Dezimalexponent */
- #define FLT_MAX_EXP 128 /* Höchster Binärexponent */
- #define FLT_MIN 1.175494351e-38F /* Positiver Mindestwert */
- #define FLT_MIN_10_EXP (-37) /* Mindest-Dezimalexponent */
- #define FLT_MIN_EXP (-125) /* Mindest-Binärexponent */
- #define FLT_NORMALIZE 0
- #define FLT_RADIX 2 /* Exponentenwurzel */
- #define FLT_ROUNDS 1 /* Additionsrundung: near */
-
- #define LDBL_DIG 19 /* Präzision als Anzahl der Nachkommastellen */
- #define LDBL_EPSILON 5.4210108624275221706e-020 /* das kleinste, so daß 1.0+LDBL_EPSILON != 1.0 */
- #define LDBL_MANT_DIG 64 /* Anzahl der Bits in Mantisse */
- #define LDBL_MAX 1.189731495357231765e+4932L /* Höchstwert */
- #define LDBL_MAX_10_EXP 4932 /* Höchster Dezimalexponent */
- #define LDBL_MAX_EXP 16384 /* Höchster Binärexponent */
- #define LDBL_MIN 3.3621031431120935063e-4932L /* Positiver Mindestwert */
- #define LDBL_MIN_10_EXP (-4931) /* Mindest-Dezimalexponent */
- #define LDBL_MIN_EXP (-16381) /* Mindest-Binärexponent */
- #define LDBL_RADIX 2 /* Exponentenwurzel */
- #define LDBL_ROUNDS 1 /* Additionsrundung: near */
-
-
- /*
- * 8087/80287 Arithmetik-Steuerinformationm
- */
-
-
- /* User Control Word Mask and bit definitions.
- * Diese Definitionen entsprechen dem 8087/80287
- */
-
- #define MCW_EM 0x003f /* Unterbrechungs-Ausnahmemaske */
- #define EM_INVALID 0x0001 /* ungültig */
- #define EM_DENORMAL 0x0002 /* unnormal */
- #define EM_ZERODIVIDE 0x0004 /* Division durch Null */
- #define EM_OVERFLOW 0x0008 /* Überlauf */
- #define EM_UNDERFLOW 0x0010 /* Unterlauf */
- #define EM_INEXACT 0x0020 /* ungenau (Präzision) */
-
- #define MCW_IC 0x1000 /* Unendlichkeitssteuerung */
- #define IC_AFFINE 0x1000 /* Affinität */
- #define IC_PROJECTIVE 0x0000 /* projektiv */
-
- #define MCW_RC 0x0c00 /* Rundungssteuerung */
- #define RC_CHOP 0x0c00 /* abschneiden */
- #define RC_UP 0x0800 /* auf */
- #define RC_DOWN 0x0400 /* ab */
- #define RC_NEAR 0x0000 /* nahe */
-
- #define MCW_PC 0x0300 /* Präzision */
- #define PC_24 0x0000 /* 24 Bits */
- #define PC_53 0x0200 /* 53 Bits */
- #define PC_64 0x0300 /* 64 Bits */
-
-
- /* Anfangswert für Steuerwort */
-
- #define CW_DEFAULT ( IC_AFFINE + RC_NEAR + PC_64 + EM_DENORMAL + EM_UNDERFLOW + EM_INEXACT )
-
-
- /* Benutzer Statuswortmaske und Bit-Definitionen */
-
- #define SW_INVALID 0x0001 /* ungültig */
- #define SW_DENORMAL 0x0002 /* unnormal */
- #define SW_ZERODIVIDE 0x0004 /* Division durch Null */
- #define SW_OVERFLOW 0x0008 /* Überlauf */
- #define SW_UNDERFLOW 0x0010 /* Unterlauf */
- #define SW_INEXACT 0x0020 /* ungenau (Präzision) */
-
-
- /* ungültige Nebenbedingunen (SW_INVALID auch aktiv) */
-
- #define SW_UNEMULATED 0x0040 /* nicht emulierbare Anweisung */
- #define SW_SQRTNEG 0x0080 /* Quadratwurzel einer negativen Zahl */
- #define SW_STACKOVERFLOW 0x0200 /* FP-Stacküberlauf */
- #define SW_STACKUNDERFLOW 0x0400 /* FP-Stapelunterlauf */
-
-
- /* Gleitkomma-Fehlersignale und Ergebniscodes */
-
- #define FPE_INVALID 0x81
- #define FPE_DENORMAL 0x82
- #define FPE_ZERODIVIDE 0x83
- #define FPE_OVERFLOW 0x84
- #define FPE_UNDERFLOW 0x85
- #define FPE_INEXACT 0x86
-
- #define FPE_UNEMULATED 0x87
- #define FPE_SQRTNEG 0x88
- #define FPE_STACKOVERFLOW 0x8a
- #define FPE_STACKUNDERFLOW 0x8b
-
- #define FPE_EXPLICITGEN 0x8c /* raise( SIGFPE ); */
-
- /* Funktionsprototypen */
-
- unsigned int _FAR_ _cdecl _clear87(void);
- unsigned int _FAR_ _cdecl _control87(unsigned int, unsigned int);
- void _FAR_ _cdecl _fpreset(void);
- unsigned int _FAR_ _cdecl _status87(void);
-