http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35862
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |burnus at gcc dot gnu.org --- Comment #23 from Tobias Burnus <burnus at gcc dot gnu.org> --- (In reply to Tobias Burnus from comment #22) > Implemented: Rounding on output. It seems as if one handles this best via: #ifdef HAVE_FENV_H && (defined(FE_DOWNWARD) || defined(FE_TONEAREST) \ || defined(FE_TOWARDZERO) || defined(FE_UPWARD)) int mode = fegetround (); if (mode != wished_mode) fesetround(round_dir); // Ignore result value; should be == 0 #endif ... #ifdef HAVE_FENV_H && (defined(FE_DOWNWARD) || defined(FE_TONEAREST) \ || defined(FE_TOWARDZERO) || defined(FE_UPWARD)) if (mode != wished_mode) fesetround(round_dir); // Ignore result value #endif Or, possibly better, via some wrapper function in libgfortran/config/fpu-*.