home *** CD-ROM | disk | FTP | other *** search
/ Team Palmtops 7 / Palmtops_numero07.iso / WinCE / SDKWindowsCE / AutoPC / apcsdk10.exe / data1.cab / Emulation_Include_Files / float.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-05-13  |  8.7 KB  |  292 lines

  1. /***
  2. *float.h - constants for floating point values
  3. *
  4. *       Copyright (c) 1985-1997, 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 _INC_FLOAT
  15.  
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19.  
  20.  
  21. #ifndef _CRTIMP
  22. #ifdef _DLL
  23. #define _CRTIMP __declspec(dllimport)
  24. #else
  25. #define _CRTIMP
  26. #endif
  27. #endif
  28.  
  29.  
  30. #define DBL_DIG     15            /* # of decimal digits of precision */
  31. #define DBL_EPSILON    2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
  32. #define DBL_MANT_DIG    53            /* # of bits in mantissa */
  33. #define DBL_MAX     1.7976931348623158e+308 /* max value */
  34. #define DBL_MAX_10_EXP    308            /* max decimal exponent */
  35. #define DBL_MAX_EXP    1024            /* max binary exponent */
  36. #define DBL_MIN     2.2250738585072014e-308 /* min positive value */
  37. #define DBL_MIN_10_EXP    (-307)            /* min decimal exponent */
  38. #define DBL_MIN_EXP    (-1021)         /* min binary exponent */
  39. #define _DBL_RADIX    2            /* exponent radix */
  40. #define _DBL_ROUNDS    1            /* addition rounding: near */
  41.  
  42. #define FLT_DIG     6            /* # of decimal digits of precision */
  43. #define FLT_EPSILON    1.192092896e-07F    /* smallest such that 1.0+FLT_EPSILON != 1.0 */
  44. #define FLT_GUARD    0
  45. #define FLT_MANT_DIG    24            /* # of bits in mantissa */
  46. #define FLT_MAX     3.402823466e+38F    /* max value */
  47. #define FLT_MAX_10_EXP    38            /* max decimal exponent */
  48. #define FLT_MAX_EXP    128            /* max binary exponent */
  49. #define FLT_MIN     1.175494351e-38F    /* min positive value */
  50. #define FLT_MIN_10_EXP    (-37)            /* min decimal exponent */
  51. #define FLT_MIN_EXP    (-125)            /* min binary exponent */
  52. #define FLT_NORMALIZE    0
  53. #define FLT_RADIX    2            /* exponent radix */
  54. #define FLT_ROUNDS    1            /* addition rounding: near */
  55.  
  56. #define LDBL_DIG    DBL_DIG         /* # of decimal digits of precision */
  57. #define LDBL_EPSILON    DBL_EPSILON        /* smallest such that 1.0+LDBL_EPSILON != 1.0 */
  58. #define LDBL_MANT_DIG    DBL_MANT_DIG        /* # of bits in mantissa */
  59. #define LDBL_MAX    DBL_MAX         /* max value */
  60. #define LDBL_MAX_10_EXP DBL_MAX_10_EXP        /* max decimal exponent */
  61. #define LDBL_MAX_EXP    DBL_MAX_EXP        /* max binary exponent */
  62. #define LDBL_MIN    DBL_MIN         /* min positive value */
  63. #define LDBL_MIN_10_EXP DBL_MIN_10_EXP        /* min decimal exponent */
  64. #define LDBL_MIN_EXP    DBL_MIN_EXP        /* min binary exponent */
  65. #define _LDBL_RADIX    DBL_RADIX        /* exponent radix */
  66. #define _LDBL_ROUNDS    DBL_ROUNDS        /* addition rounding: near */
  67.  
  68.  
  69. /* function prototypes */
  70.  
  71. _CRTIMP unsigned int __cdecl _clearfp(void);
  72. _CRTIMP unsigned int __cdecl _controlfp(unsigned int,unsigned int);
  73. _CRTIMP unsigned int __cdecl _statusfp(void);
  74. _CRTIMP void __cdecl _fpreset(void);
  75.  
  76. #define _clear87    _clearfp
  77. #define _status87    _statusfp
  78.  
  79. /*
  80.  * Abstract User Control Word Mask and bit definitions
  81.  */
  82.  
  83. #define _MCW_EM     0x0008001f        /* interrupt Exception Masks */
  84. #define _EM_INEXACT    0x00000001        /*   inexact (precision) */
  85. #define _EM_UNDERFLOW    0x00000002        /*   underflow */
  86. #define _EM_OVERFLOW    0x00000004        /*   overflow */
  87. #define _EM_ZERODIVIDE    0x00000008        /*   zero divide */
  88. #define _EM_INVALID    0x00000010        /*   invalid */
  89.  
  90. #define _MCW_RC     0x00000300        /* Rounding Control */
  91. #define _RC_NEAR    0x00000000        /*   near */
  92. #define _RC_DOWN    0x00000100        /*   down */
  93. #define _RC_UP        0x00000200        /*   up */
  94. #define _RC_CHOP    0x00000300        /*   chop */
  95.  
  96. /*
  97.  * Abstract User Status Word bit definitions
  98.  */
  99.  
  100. #define _SW_INEXACT    0x00000001        /* inexact (precision) */
  101. #define _SW_UNDERFLOW    0x00000002        /* underflow */
  102. #define _SW_OVERFLOW    0x00000004        /* overflow */
  103. #define _SW_ZERODIVIDE    0x00000008        /* zero divide */
  104. #define _SW_INVALID    0x00000010        /* invalid */
  105.  
  106.  
  107. /*
  108.  * i386 specific definitions
  109.  */
  110.  
  111. #define _MCW_PC     0x00030000        /* Precision Control */
  112. #define _PC_64        0x00000000        /*    64 bits */
  113. #define _PC_53        0x00010000        /*    53 bits */
  114. #define _PC_24        0x00020000        /*    24 bits */
  115.  
  116. #define _MCW_IC     0x00040000        /* Infinity Control */
  117. #define _IC_AFFINE    0x00040000        /*   affine */
  118. #define _IC_PROJECTIVE    0x00000000        /*   projective */
  119.  
  120. #define _EM_DENORMAL    0x00080000        /* denormal exception mask (_control87 only) */
  121.  
  122. #define _SW_DENORMAL    0x00080000        /* denormal status bit */
  123.  
  124.  
  125. _CRTIMP unsigned int __cdecl _control87(unsigned int,unsigned int);
  126.  
  127.  
  128. /*
  129.  * MIPS R4000 specific definitions
  130.  */
  131.  
  132. #define _MCW_DN     0x01000000        /* Denormal Control (R4000) */
  133. #define _DN_FLUSH    0x01000000        /*   flush to zero */
  134. #define _DN_SAVE    0x00000000        /*   save */
  135.  
  136.  
  137. /* initial Control Word value */
  138.  
  139. #ifdef    _M_IX86
  140.  
  141. #define _CW_DEFAULT ( _RC_NEAR + _PC_64 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT )
  142.  
  143. #elif defined(_M_SH) || defined(_M_MRX000)
  144.  
  145. #define _CW_DEFAULT ( _RC_NEAR + _PC_53 + _EM_INVALID + _EM_ZERODIVIDE + _EM_OVERFLOW + _EM_UNDERFLOW + _EM_INEXACT )
  146.  
  147. #endif
  148.  
  149. /* Global variable holding floating point error code */
  150.  
  151. #ifdef    _MT
  152. _CRTIMP extern int * __cdecl __fpecode(void);
  153. #define _fpecode    (*__fpecode())
  154. #else
  155. extern int _fpecode;
  156. #endif
  157.  
  158. /* invalid subconditions (_SW_INVALID also set) */
  159.  
  160. #define _SW_UNEMULATED        0x0040    /* unemulated instruction */
  161. #define _SW_SQRTNEG        0x0080    /* square root of a neg number */
  162. #define _SW_STACKOVERFLOW    0x0200    /* FP stack overflow */
  163. #define _SW_STACKUNDERFLOW    0x0400    /* FP stack underflow */
  164.  
  165. /*  Floating point error signals and return codes */
  166.  
  167. #define _FPE_INVALID        0x81
  168. #define _FPE_DENORMAL        0x82
  169. #define _FPE_ZERODIVIDE     0x83
  170. #define _FPE_OVERFLOW        0x84
  171. #define _FPE_UNDERFLOW        0x85
  172. #define _FPE_INEXACT        0x86
  173.  
  174. #define _FPE_UNEMULATED     0x87
  175. #define _FPE_SQRTNEG        0x88
  176. #define _FPE_STACKOVERFLOW    0x8a
  177. #define _FPE_STACKUNDERFLOW    0x8b
  178.  
  179. #define _FPE_EXPLICITGEN    0x8c    /* raise( SIGFPE ); */
  180.  
  181.  
  182. /* IEEE recommended functions */
  183.  
  184. double __cdecl _copysign (double, double);
  185. double __cdecl _chgsign (double);
  186. double __cdecl _scalb(double, long);
  187. double __cdecl _logb(double);
  188. double __cdecl _nextafter(double, double);
  189. int    __cdecl _finite(double);
  190. int    __cdecl _isnan(double);
  191. int    __cdecl _fpclass(double);
  192.  
  193. #define _FPCLASS_SNAN    0x0001    /* signaling NaN */
  194. #define _FPCLASS_QNAN    0x0002    /* quiet NaN */
  195. #define _FPCLASS_NINF    0x0004    /* negative infinity */
  196. #define _FPCLASS_NN    0x0008    /* negative normal */
  197. #define _FPCLASS_ND    0x0010    /* negative denormal */
  198. #define _FPCLASS_NZ    0x0020    /* -0 */
  199. #define _FPCLASS_PZ    0x0040    /* +0 */
  200. #define _FPCLASS_PD    0x0080    /* positive denormal */
  201. #define _FPCLASS_PN    0x0100    /* positive normal */
  202. #define _FPCLASS_PINF    0x0200    /* positive infinity */
  203.  
  204.  
  205. #if !__STDC__
  206. /* Non-ANSI names for compatibility */
  207.  
  208. #define DBL_RADIX        _DBL_RADIX
  209. #define DBL_ROUNDS        _DBL_ROUNDS
  210.  
  211. #define LDBL_RADIX        _LDBL_RADIX
  212. #define LDBL_ROUNDS        _LDBL_ROUNDS
  213.  
  214. #define MCW_EM            _MCW_EM
  215. #define EM_INVALID        _EM_INVALID
  216. #define EM_DENORMAL        _EM_DENORMAL
  217. #define EM_ZERODIVIDE        _EM_ZERODIVIDE
  218. #define EM_OVERFLOW        _EM_OVERFLOW
  219. #define EM_UNDERFLOW        _EM_UNDERFLOW
  220. #define EM_INEXACT        _EM_INEXACT
  221.  
  222. #define MCW_IC            _MCW_IC
  223. #define IC_AFFINE        _IC_AFFINE
  224. #define IC_PROJECTIVE        _IC_PROJECTIVE
  225.  
  226. #define MCW_RC            _MCW_RC
  227. #define RC_CHOP         _RC_CHOP
  228. #define RC_UP            _RC_UP
  229. #define RC_DOWN         _RC_DOWN
  230. #define RC_NEAR         _RC_NEAR
  231.  
  232. #define MCW_PC            _MCW_PC
  233. #define PC_24            _PC_24
  234. #define PC_53            _PC_53
  235. #define PC_64            _PC_64
  236.  
  237. #define CW_DEFAULT        _CW_DEFAULT
  238.  
  239. #define SW_INVALID        _SW_INVALID
  240. #define SW_DENORMAL        _SW_DENORMAL
  241. #define SW_ZERODIVIDE        _SW_ZERODIVIDE
  242. #define SW_OVERFLOW        _SW_OVERFLOW
  243. #define SW_UNDERFLOW        _SW_UNDERFLOW
  244. #define SW_INEXACT        _SW_INEXACT
  245.  
  246. #define SW_UNEMULATED        _SW_UNEMULATED
  247. #define SW_SQRTNEG        _SW_SQRTNEG
  248. #define SW_STACKOVERFLOW    _SW_STACKOVERFLOW
  249. #define SW_STACKUNDERFLOW    _SW_STACKUNDERFLOW
  250.  
  251. #define FPE_INVALID        _FPE_INVALID
  252. #define FPE_DENORMAL        _FPE_DENORMAL
  253. #define FPE_ZERODIVIDE        _FPE_ZERODIVIDE
  254. #define FPE_OVERFLOW        _FPE_OVERFLOW
  255. #define FPE_UNDERFLOW        _FPE_UNDERFLOW
  256. #define FPE_INEXACT        _FPE_INEXACT
  257.  
  258. #define FPE_UNEMULATED        _FPE_UNEMULATED
  259. #define FPE_SQRTNEG        _FPE_SQRTNEG
  260. #define FPE_STACKOVERFLOW    _FPE_STACKOVERFLOW
  261. #define FPE_STACKUNDERFLOW    _FPE_STACKUNDERFLOW
  262.  
  263. #define FPE_EXPLICITGEN     _FPE_EXPLICITGEN
  264.  
  265. #endif    /* __STDC__ */
  266.  
  267.  
  268. #if defined( _WIN32_WCE )
  269.  
  270. #ifndef __assembler
  271. _CRTIMP double _frnd(double);
  272. _CRTIMP double _fsqrt(double);
  273. _CRTIMP void _set_errno(int);
  274. #endif  /* #ifndef __assembler */
  275.  
  276. _CRTIMP double _umatherr( int,
  277.                           unsigned int,
  278.                           double,
  279.                           double,
  280.                           double,
  281.                           unsigned int cw
  282.                          );
  283.  
  284. #endif // _WIN32_WCE && !_WIN32_WCE_EMULATION
  285.  
  286. #ifdef __cplusplus
  287. }
  288. #endif
  289.  
  290. #define _INC_FLOAT
  291. #endif    /* _INC_FLOAT */
  292.