IEEE_754 logic
Peter Dalgaard BSA
p.dalgaard@biostat.ku.dk
15 Oct 1999 17:03:54 +0200
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.
I don't think it is a big deal to insert a check for finite() *or*
isfinite(), if that helps with some of your problems.
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
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
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._