Annotation of os2sdk/include/float.h, revision 1.1.1.1

1.1       root        1: /***
                      2: *float.h - constants for floating point values
                      3: *
                      4: *   Copyright (c) 1985-1987, Microsoft Corporation.  All rights reserved.
                      5: *
                      6: *Purpose:
                      7: *   This file contains defines for a number of implementation dependent
                      8: *   values which are commonly used by sophisticated numerical (floating
                      9: *   point) programs.
                     10: *   [ANSI]
                     11: *
                     12: *******************************************************************************/
                     13: 
                     14: #ifndef NO_EXT_KEYS /* extensions enabled */
                     15:     #define _CDECL  cdecl
                     16: #else /* extensions not enabled */
                     17:     #define _CDECL
                     18: #endif /* NO_EXT_KEYS */
                     19: 
                     20: 
                     21: #define DBL_DIG         15                      /* # of decimal digits of precision */
                     22: #define DBL_EPSILON     2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
                     23: #define DBL_MANT_DIG    53                      /* # of bits in mantissa */
                     24: #define DBL_MAX         1.7976931348623158e+308 /* max value */
                     25: #define DBL_MAX_10_EXP  308                     /* max decimal exponent */
                     26: #define DBL_MAX_EXP     1024                    /* max binary exponent */
                     27: #define DBL_MIN         2.2250738585072014e-308 /* min positive value */
                     28: #define DBL_MIN_10_EXP  -307                    /* min decimal exponent
                     29: #define DBL_MIN_EXP     -1021                   /* min binary exponent */
                     30: #define DBL_RADIX       2                       /* exponent radix */
                     31: #define DBL_ROUNDS      0                       /* addition rounding: chops */
                     32: 
                     33: #define FLT_DIG         6                       /* # of decimal digits of precision */
                     34: #define FLT_EPSILON     1.192092896e-07         /* smallest such that 1.0+FLT_EPSILON != 1.0 */
                     35: #define FLT_GUARD       0
                     36: #define FLT_MANT_DIG    24                      /* # of bits in mantissa */
                     37: #define FLT_MAX         3.402823466e+38         /* max value */
                     38: #define FLT_MAX_10_EXP  38                      /* max decimal exponent */
                     39: #define FLT_MAX_EXP     128                     /* max binary exponent */
                     40: #define FLT_MIN         1.175494351e-38         /* min positive value */
                     41: #define FLT_MIN_10_EXP  -37                     /* min decimal exponent */
                     42: #define FLT_MIN_EXP     -125                    /* min binary exponent */
                     43: #define FLT_NORMALIZE   0
                     44: #define FLT_RADIX       2                       /* exponent radix */
                     45: #define FLT_ROUNDS      0                       /* addition rounding: chops */
                     46: 
                     47: #define LDBL_DIG        DBL_DIG                 /* # of decimal digits of precision */
                     48: #define LDBL_EPSILON    DBL_EPSILON             /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
                     49: #define LDBL_MANT_DIG   DBL_MANT_DIG            /* # of bits in mantissa */
                     50: #define LDBL_MAX        DBL_MAX                 /* max value */
                     51: #define LDBL_MAX_10_EXP DBL_MAX_10_EXP          /* max decimal exponent */
                     52: #define LDBL_MAX_EXP    DBL_MAX_EXP             /* max binary exponent */
                     53: #define LDBL_MIN        DBL_MIN                 /* min positive value */
                     54: #define LDBL_MIN_10_EXP DBL_MIN_10_EXP          /* min deimal exponent
                     55: #define LDBL_MIN_EXP    DBL_MIN_EXP             /* min binary exponent */
                     56: #define LDBL_RADIX      DBL_RADIX               /* exponent radix */
                     57: #define LDBL_ROUNDS     DBL_ROUNDS              /* addition rounding: chops */
                     58: 
                     59: 
                     60: /*
                     61:  *  8087/80287 math control information
                     62:  */
                     63: 
                     64: 
                     65: /* User Control Word Mask and bit definitions.
                     66:  * These definitions match the 8087/80287
                     67:  */
                     68: 
                     69: #define     MCW_EM          0x003f      /* interrupt Exception Masks */
                     70: #define     EM_INVALID      0x0001      /*   invalid */
                     71: #define     EM_DENORMAL     0x0002      /*   denormal */
                     72: #define     EM_ZERODIVIDE   0x0004      /*   zero divide */
                     73: #define     EM_OVERFLOW     0x0008      /*   overflow */
                     74: #define     EM_UNDERFLOW    0x0010      /*   underflow */
                     75: #define     EM_INEXACT      0x0020      /*   inexact (precision) */
                     76: 
                     77: #define     MCW_IC          0x1000      /* Infinity Control */
                     78: #define     IC_AFFINE       0x1000      /*   affine */
                     79: #define     IC_PROJECTIVE   0x0000      /*   projective */
                     80: 
                     81: #define     MCW_RC          0x0c00      /* Rounding Control */
                     82: #define     RC_CHOP         0x0c00      /*   chop */
                     83: #define     RC_UP           0x0800      /*   up */
                     84: #define     RC_DOWN         0x0400      /*   down */
                     85: #define     RC_NEAR         0x0000      /*   near */
                     86: 
                     87: #define     MCW_PC          0x0300      /* Precision Control */
                     88: #define     PC_24           0x0000      /*    24 bits */
                     89: #define     PC_53           0x0200      /*    53 bits */
                     90: #define     PC_64           0x0300      /*    64 bits */
                     91: 
                     92: 
                     93: /* initial Control Word value */
                     94: 
                     95: #define CW_DEFAULT ( IC_AFFINE + RC_NEAR + PC_64 + EM_DENORMAL + EM_UNDERFLOW + EM_INEXACT )
                     96: 
                     97: 
                     98: /* user Status Word bit definitions */
                     99: 
                    100: #define SW_INVALID          0x0001      /*   invalid */
                    101: #define SW_DENORMAL         0x0002      /*   denormal */
                    102: #define SW_ZERODIVIDE       0x0004      /*   zero divide */
                    103: #define SW_OVERFLOW         0x0008      /*   overflow */
                    104: #define SW_UNDERFLOW        0x0010      /*   underflow */
                    105: #define SW_INEXACT          0x0020      /*   inexact (precision) */
                    106: 
                    107: 
                    108: /* invalid subconditions (SW_INVALID also set) */
                    109: 
                    110: #define SW_UNEMULATED       0x0040      /* unemulated instruction */
                    111: #define SW_SQRTNEG          0x0080      /* square root of a neg number */
                    112: #define SW_STACKOVERFLOW    0x0200      /* FP stack overflow */
                    113: #define SW_STACKUNDERFLOW   0x0400      /* FP stack underflow */
                    114: 
                    115: 
                    116: /*  Floating point error signals and return codes */
                    117: 
                    118: #define FPE_INVALID         0x81
                    119: #define FPE_DENORMAL        0x82
                    120: #define FPE_ZERODIVIDE      0x83
                    121: #define FPE_OVERFLOW        0x84
                    122: #define FPE_UNDERFLOW       0x85
                    123: #define FPE_INEXACT         0x86
                    124: 
                    125: #define FPE_UNEMULATED      0x87
                    126: #define FPE_SQRTNEG         0x88
                    127: #define FPE_STACKOVERFLOW   0x8a
                    128: #define FPE_STACKUNDERFLOW  0x8b
                    129: 
                    130: #define FPE_EXPLICITGEN     0x8c    /* raise( SIGFPE ); */
                    131: 
                    132: /* function prototypes */
                    133: 
                    134: unsigned int _CDECL _clear87(void);
                    135: unsigned int _CDECL _control87(unsigned int,unsigned int);
                    136: void _CDECL _fpreset(void);
                    137: unsigned int _CDECL _status87(void);

unix.superglobalmegacorp.com

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