Paul Eggert wrote:
> > How does that sound? (It's a lot of work, I know.)
> 
> It sounds nice.  You're right that it's a lot of work, though.
> Is it worth the effort?  (Depends on the problem you want solved
> but I don't know what that is....)

The problem is that the way to test whether a math function ran into an
exceptional case is platform dependent. For example, after

  y = sqrt (x);

some platforms require

  if (isnan (y))

on others it's

  if (fetestexcept (FE_INVALID))

and on others it's

  if (errno == EDOM)

On some platforms, two or all three among these codes work. But none
of these three codes works on all platforms.

> Will the <fenv.h> replacement address the documented FLT_ROUNDS
> incompatibility between C99 and typical GNU platforms?

Yes, by making fegetround() available on all platforms, the problem
is addressed: We will be able to recommend to use the <fenv.h> API
everywhere.

Oh, btw, the FLT_ROUNDS incompatibility was not yet documented. Done
as follows:


2011-11-06  Bruno Haible  <br...@clisp.org>

        Doc about floating-point and math API.
        * doc/posix-headers/float.texi: Mention problem with FLT_ROUNDS.
        * doc/posix-headers/math.texi: Mention problem with math_errhandling.

--- doc/posix-headers/float.texi.orig   Mon Nov  7 00:21:04 2011
+++ doc/posix-headers/float.texi        Mon Nov  7 00:21:00 2011
@@ -25,4 +25,8 @@
 
 Portability problems not fixed by Gnulib:
 @itemize
+@item
+The macro @code{FLT_ROUNDS} is a constant expression and does not represent
+the current rounding mode on some platforms:
+glibc 2.11, HP-UX 11, mingw.
 @end itemize
--- doc/posix-headers/math.texi.orig    Mon Nov  7 00:21:04 2011
+++ doc/posix-headers/math.texi Mon Nov  7 00:12:10 2011
@@ -32,4 +32,7 @@
 @item
 @code{NAN} is not a compile time constant with some compilers:
 OSF/1 with Compaq (ex-DEC) C 6.4.
+@item
+The macro or variable @code{math_errhandling} is not defined on some platforms:
+glibc 2.11, OpenBSD 4.9, NetBSD 5.1, UP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin 
1.7.9, mingw, MSVC 9.
 @end itemize

-- 
In memoriam Louis Philippe d'Orléans 
<http://en.wikipedia.org/wiki/Louis_Philippe_II,_Duke_of_Orléans>

Reply via email to