Annotation of mstools/h/fpieee.h, revision 1.1

1.1     ! root        1: /***
        !             2: * fpieee.h - Definitions for floating point IEEE exception handling
        !             3: *
        !             4: *      Copyright (c) 1991-1991, Microsoft Corporation. All rights reserved.
        !             5: *
        !             6: *Purpose:
        !             7: *      This file contains constant and type definitions for handling
        !             8: *      floating point exceptions [ANSI/IEEE std. 754]
        !             9: *
        !            10: *******************************************************************************/
        !            11: 
        !            12: #ifndef _INC_FPIEEE
        !            13: 
        !            14: #ifdef __cplusplus
        !            15: extern "C" {
        !            16: #endif
        !            17: 
        !            18: 
        !            19: /*
        !            20:  * Conditional macro definition for function calling type and variable type
        !            21:  * qualifiers.
        !            22:  */
        !            23: #if   ( (_MSC_VER >= 800) && (_M_IX86 >= 300) )
        !            24: 
        !            25: /*
        !            26:  * Definitions for MS C8-32 (386/486) compiler
        !            27:  */
        !            28: #define _CRTAPI1 __cdecl
        !            29: #define _CRTAPI2 __cdecl
        !            30: 
        !            31: #elif ( _MSC_VER == 600 )
        !            32: 
        !            33: /*
        !            34:  * Definitions for old MS C6-386 compiler
        !            35:  */
        !            36: #define _CRTAPI1 _cdecl
        !            37: #define _CRTAPI2 _cdecl
        !            38: #define _M_IX86  300
        !            39: 
        !            40: #else
        !            41: 
        !            42: /*
        !            43:  * Other compilers (e.g., MIPS)
        !            44:  */
        !            45: #define _CRTAPI1
        !            46: #define _CRTAPI2
        !            47: 
        !            48: #endif
        !            49: 
        !            50: /*
        !            51:  * Define floating point IEEE compare result values.
        !            52:  */
        !            53: 
        !            54: typedef enum {
        !            55:     _FpCompareEqual,
        !            56:     _FpCompareGreater,
        !            57:     _FpCompareLess,
        !            58:     _FpCompareUnordered
        !            59: } _FPIEEE_COMPARE_RESULT;
        !            60: 
        !            61: /*
        !            62:  * Define floating point format and result precision values.
        !            63:  */
        !            64: 
        !            65: typedef enum {
        !            66:     _FpFormatFp32,
        !            67:     _FpFormatFp64,
        !            68:     _FpFormatFp80,
        !            69:     _FpFormatFp128,
        !            70:     _FpFormatI16,
        !            71:     _FpFormatI32,
        !            72:     _FpFormatI64,
        !            73:     _FpFormatU16,
        !            74:     _FpFormatU32,
        !            75:     _FpFormatU64,
        !            76:     _FpFormatBcd80,
        !            77:     _FpFormatCompare,
        !            78:     _FpFormatString
        !            79: } _FPIEEE_FORMAT;
        !            80: 
        !            81: /*
        !            82:  * Define operation code values.
        !            83:  */
        !            84: 
        !            85: typedef enum {
        !            86:     _FpCodeUnspecified,
        !            87:     _FpCodeAdd,
        !            88:     _FpCodeSubtract,
        !            89:     _FpCodeMultiply,
        !            90:     _FpCodeDivide,
        !            91:     _FpCodeSquareRoot,
        !            92:     _FpCodeRemainder,
        !            93:     _FpCodeCompare,
        !            94:     _FpCodeConvert,
        !            95:     _FpCodeRound,
        !            96:     _FpCodeTruncate,
        !            97:     _FpCodeFloor,
        !            98:     _FpCodeCeil,
        !            99:     _FpCodeAcos,
        !           100:     _FpCodeAsin,
        !           101:     _FpCodeAtan,
        !           102:     _FpCodeAtan2,
        !           103:     _FpCodeCabs,
        !           104:     _FpCodeCos,
        !           105:     _FpCodeCosh,
        !           106:     _FpCodeExp,
        !           107:     _FpCodeFabs,
        !           108:     _FpCodeFmod,
        !           109:     _FpCodeFrexp,
        !           110:     _FpCodeHypot,
        !           111:     _FpCodeLdexp,
        !           112:     _FpCodeLog,
        !           113:     _FpCodeLog10,
        !           114:     _FpCodeModf,
        !           115:     _FpCodePow,
        !           116:     _FpCodeSin,
        !           117:     _FpCodeSinh,
        !           118:     _FpCodeTan,
        !           119:     _FpCodeTanh,
        !           120:     _FpCodeY0,
        !           121:     _FpCodeY1,
        !           122:     _FpCodeYn,
        !           123:     _FpCodeLogb,
        !           124:     _FpCodeNextafter,
        !           125:     _FpCodeNegate
        !           126: 
        !           127: } _FP_OPERATION_CODE;
        !           128: 
        !           129: 
        !           130: 
        !           131: 
        !           132: 
        !           133: /*
        !           134:  * Define rounding modes.
        !           135:  */
        !           136: 
        !           137: typedef enum {
        !           138:     _FpRoundNearest,
        !           139:     _FpRoundMinusInfinity,
        !           140:     _FpRoundPlusInfinity,
        !           141:     _FpRoundChopped
        !           142: } _FPIEEE_ROUNDING_MODE;
        !           143: 
        !           144: typedef enum {
        !           145:     _FpPrecisionFull,
        !           146:     _FpPrecision53,
        !           147:     _FpPrecision24
        !           148: } _FPIEEE_PRECISION;
        !           149: 
        !           150: 
        !           151: /*
        !           152:  * Define floating point context record
        !           153:  */
        !           154: 
        !           155: typedef float          _FP32;
        !           156: typedef double         _FP64;
        !           157: typedef short          _I16;
        !           158: typedef int            _I32;
        !           159: typedef unsigned short _U16;
        !           160: typedef unsigned int   _U32;
        !           161: 
        !           162: 
        !           163: typedef struct {
        !           164:     unsigned short W[5];
        !           165: } _FP80;
        !           166: 
        !           167: typedef struct {
        !           168:     unsigned long W[4];
        !           169: } _FP128;
        !           170: 
        !           171: typedef struct {
        !           172:     unsigned long W[2];
        !           173: } _I64;
        !           174: 
        !           175: typedef struct {
        !           176:     unsigned long W[2];
        !           177: } _U64;
        !           178: 
        !           179: typedef struct {
        !           180:     unsigned short W[5];
        !           181: } _BCD80;
        !           182: 
        !           183: 
        !           184: typedef struct {
        !           185:     union {
        !           186:        _FP32        Fp32Value;
        !           187:        _FP64        Fp64Value;
        !           188:        _FP80        Fp80Value;
        !           189:        _FP128       Fp128Value;
        !           190:        _I16         I16Value;
        !           191:        _I32         I32Value;
        !           192:        _I64         I64Value;
        !           193:        _U16         U16Value;
        !           194:        _U32         U32Value;
        !           195:        _U64         U64Value;
        !           196:        _BCD80       Bcd80Value;
        !           197:        char         *StringValue;
        !           198:        int          CompareValue;
        !           199:     } Value;
        !           200: 
        !           201:     unsigned int OperandValid : 1;
        !           202:     unsigned int Format : 4;
        !           203: 
        !           204: } _FPIEEE_VALUE;
        !           205: 
        !           206: 
        !           207: typedef struct {
        !           208:     unsigned int Inexact : 1;
        !           209:     unsigned int Underflow : 1;
        !           210:     unsigned int Overflow : 1;
        !           211:     unsigned int ZeroDivide : 1;
        !           212:     unsigned int InvalidOperation : 1;
        !           213: } _FPIEEE_EXCEPTION_FLAGS;
        !           214: 
        !           215: 
        !           216: typedef struct {
        !           217:     unsigned int RoundingMode : 2;
        !           218:     unsigned int Precision : 3;
        !           219:     unsigned int Operation :12;
        !           220:     _FPIEEE_EXCEPTION_FLAGS Cause;
        !           221:     _FPIEEE_EXCEPTION_FLAGS Enable;
        !           222:     _FPIEEE_EXCEPTION_FLAGS Status;
        !           223:     _FPIEEE_VALUE Operand1;
        !           224:     _FPIEEE_VALUE Operand2;
        !           225:     _FPIEEE_VALUE Result;
        !           226: } _FPIEEE_RECORD;
        !           227: 
        !           228: 
        !           229: struct _EXCEPTION_POINTERS;
        !           230: 
        !           231: /*
        !           232:  * Floating point IEEE exception filter routine
        !           233:  */
        !           234: 
        !           235: int _CRTAPI1 _fpieee_flt(unsigned long code,
        !           236:                struct _EXCEPTION_POINTERS *p,
        !           237:                int handler(_FPIEEE_RECORD *));
        !           238: 
        !           239: 
        !           240: 
        !           241: #ifdef __cplusplus
        !           242: }
        !           243: #endif
        !           244: 
        !           245: #define _INC_FPIEEE
        !           246: #endif /* _INC_FPIEEE */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.