ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

fenv.h
Go to the documentation of this file.
00001 
00006 #ifndef _FENV_H_
00007 #define _FENV_H_
00008 
00009 /* FPU status word exception flags */
00010 #define FE_INVALID  0x01
00011 #define FE_DENORMAL 0x02
00012 #define FE_DIVBYZERO    0x04
00013 #define FE_OVERFLOW 0x08
00014 #define FE_UNDERFLOW    0x10
00015 #define FE_INEXACT  0x20
00016 #define FE_ALL_EXCEPT (FE_INVALID | FE_DENORMAL | FE_DIVBYZERO \
00017                | FE_OVERFLOW | FE_UNDERFLOW | FE_INEXACT)
00018 
00019 /* FPU control word rounding flags */
00020 #define FE_TONEAREST    0x0000
00021 #define FE_DOWNWARD 0x0400
00022 #define FE_UPWARD   0x0800
00023 #define FE_TOWARDZERO   0x0c00
00024 
00025 /* The MXCSR exception flags are the same as the
00026    FE flags. */
00027 #define __MXCSR_EXCEPT_FLAG_SHIFT 0
00028 
00029 /* How much to shift FE status word exception flags
00030    to get MXCSR rounding flags,  */
00031 #define __MXCSR_ROUND_FLAG_SHIFT 3
00032 
00033 #ifndef RC_INVOKED
00034 /*
00035   For now, support only for the basic abstraction of flags that are
00036   either set or clear. fexcept_t could be  structure that holds more
00037   info about the fp environment.
00038 */
00039 typedef unsigned short fexcept_t;
00040 
00041 /* This 32-byte struct represents the entire floating point
00042    environment as stored by fnstenv or fstenv, augmented by
00043    the  contents of the MXCSR register, as stored by stmxcsr
00044    (if CPU supports it). */
00045 typedef struct
00046 {
00047   unsigned short __control_word;
00048   unsigned short __unused0;
00049   unsigned short __status_word;
00050   unsigned short __unused1;
00051   unsigned short __tag_word;
00052   unsigned short __unused2;  
00053   unsigned int   __ip_offset;    /* instruction pointer offset */
00054   unsigned short __ip_selector;  
00055   unsigned short __opcode;
00056   unsigned int   __data_offset;
00057   unsigned short __data_selector;  
00058   unsigned short __unused3;
00059   unsigned int   __mxcsr; /* contents of the MXCSR register  */
00060 } fenv_t;
00061 
00062 
00063 /*The C99 standard (7.6.9) allows us to define implementation-specific macros for
00064   different fp environments */
00065   
00066 /* The default Intel x87 floating point environment (64-bit mantissa) */
00067 #define FE_PC64_ENV ((const fenv_t *)-1)
00068 
00069 /* The floating point environment set by MSVCRT _fpreset (53-bit mantissa) */
00070 #define FE_PC53_ENV ((const fenv_t *)-2)
00071 
00072 /* The FE_DFL_ENV macro is required by standard.
00073   fesetenv will use the environment set at app startup.*/
00074 #define FE_DFL_ENV ((const fenv_t *) 0)
00075 
00076 #ifdef __cplusplus
00077 extern "C" {
00078 #endif
00079 
00080 /*TODO: Some of these could be inlined */
00081 /* 7.6.2 Exception */
00082 
00083 extern int __cdecl feclearexcept (int);
00084 extern int __cdecl fegetexceptflag (fexcept_t * flagp, int excepts);
00085 extern int __cdecl feraiseexcept (int excepts );
00086 extern int __cdecl fesetexceptflag (const fexcept_t *, int);
00087 extern int __cdecl fetestexcept (int excepts);
00088 
00089 /* 7.6.3 Rounding */
00090 
00091 extern int __cdecl fegetround (void);
00092 extern int __cdecl fesetround (int mode);
00093 
00094 /* 7.6.4 Environment */
00095 
00096 extern int __cdecl fegetenv(fenv_t * envp);
00097 extern int __cdecl fesetenv(const fenv_t * );
00098 extern int __cdecl feupdateenv(const fenv_t *);
00099 extern int __cdecl feholdexcept(fenv_t *);
00100 
00101 #ifdef __cplusplus
00102 }
00103 #endif
00104 #endif  /* Not RC_INVOKED */
00105 
00106 #endif /* ndef _FENV_H */

Generated on Sat May 26 2012 04:28:26 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.