# IEEE_754 logic

**Kurt Hornik
**
Kurt.Hornik@ci.tuwien.ac.at

*Mon, 18 Oct 1999 10:08:14 +0200 (CEST)*

>>>>>* Peter Dalgaard BSA writes:
*
>* Thomas Hoffmann <hoffmann@ehmgs2.et.tu-dresden.de> writes:
*>>* Can anybody of the architects of R enlighten me about the reasoning behind the selection of the IEEE 754
*>>* mode for the building of R, please?
*>>*
*>>* Special points of interest are:
*>>*
*>>* 1. The selection seems to be based on the availability of isnan() and finite(). Is this a common way
*>>* to test for IEEE 754?
*>>*
*>>* 2. The C9x draft introduces isfinite() instead of finite() (and as I see, some systems, e.g. the
*>>* macintosh, use this naming already). This is a deviation from the old ieee754 C mapping. I do not
*>>* know, where we are in this transformation process now (most compilers seem to use finite(), still).
*>>*
*>>* 3. The C9x draft introduces the is*() functionality under the name of "classification MACROS". If an
*>>* implementation implements this standard, autoconf misses isnan() and isfinite().
*>>*
*
>* Thanks for your comments. If you have suggestions for a safer way of
*>* detecting the functionality in a platform-dependent way, we'd be happy
*>* to know about it. However, one has to be careful; e.g., Solaris has
*>* only finite() and no isfinite(), linux has both. There seems to be
*>* almost no consistency in how different systems signal the precence of
*>* IEEE compatibility.
*
>* The heuristics in autoconf are more or less lifted off of other
*>* packages like Octave (right, Kurt?) and are by no means failsafe.
*
Not quite. I don't think Octave worries about isfinite() at all. We
check for finite() as a library function in autoconf. In addition, we
do the following in `Arith.h':
#include <math.h>
#ifdef Macintosh
# define finite(x) isfinite(x)
#else
# ifndef HAVE_FINITE
# ifndef finite /* Do not declare if macro! */
# ifdef isfinite /* HPUX math.h */
# define finite(x) isfinite(x)
# else
int finite(double);
# endif
# endif
# endif
#endif
which seems to give what we want, no?
-k
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._