22 #ifndef feexceptErsatz_H
23 #define feexceptErsatz_H
30 inline int feenableexcept(
unsigned int excepts)
33 unsigned int new_excepts = excepts & FE_ALL_EXCEPT;
34 unsigned int old_excepts;
42 old_excepts = fenv.__fpcr & FE_ALL_EXCEPT;
44 old_excepts = fenv.__control & FE_ALL_EXCEPT;
49 fenv.__fpcr &= ~new_excepts;
50 fenv.__fpsr &= ~(new_excepts << 7);
52 fenv.__control &= ~new_excepts;
53 fenv.__mxcsr &= ~(new_excepts << 7);
56 return fesetenv(&fenv) ? -1 : old_excepts;
60 inline int fedisableexcept(
unsigned int excepts)
63 unsigned int new_excepts = excepts & FE_ALL_EXCEPT;
64 unsigned int old_excepts;
72 old_excepts = fenv.__fpcr & FE_ALL_EXCEPT;
74 old_excepts = fenv.__control & FE_ALL_EXCEPT;
79 fenv.__fpcr |= new_excepts;
80 fenv.__fpsr |= new_excepts << 7;
82 fenv.__control |= new_excepts;
83 fenv.__mxcsr |= new_excepts << 7;
86 return fesetenv(&fenv) ? -1 : old_excepts;