This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libfortran/35862] [F2003] Implement new rounding modes for run time
- From: "burnus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 04 Jul 2013 10:08:47 +0000
- Subject: [Bug libfortran/35862] [F2003] Implement new rounding modes for run time
- Auto-submitted: auto-generated
- References: <bug-35862-4 at http dot gcc dot gnu dot org/bugzilla/>
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-*.