Rounding modes are not bit flags, but arbitrary non-negative integers.
@@ -7,18 +7,17 @@ hidden int __fesetround(int);
int fesetround(int r)
{
- if (r & ~(
- FE_TONEAREST
+ if (r != FE_TONEAREST
#ifdef FE_DOWNWARD
- |FE_DOWNWARD
+ && r != FE_DOWNWARD
#endif
#ifdef FE_UPWARD
- |FE_UPWARD
+ && r != FE_UPWARD
#ifdef FE_TOWARDZERO
- |FE_TOWARDZERO
+ && r != FE_TOWARDZERO
- ))
+ )
return -1;
return __fesetround(r);
}