**Subject: **Re: axis() produces junk on DEC alpha (PR#274)

*maechler@stat.math.ethz.ch*

**Date: **Tue 14 Sep 1999 - 02:08:40 EST

**Next message:**ripley@stats.ox.ac.uk: "Re: axis() produces junk on DEC alpha (PR#274)"**Previous message:**ripley@stats.ox.ac.uk: "Re: axis() produces junk on DEC alpha (PR#274)"**Maybe in reply to:**albrecht.gebhardt@uni-klu.ac.at: "axis() produces junk on DEC alpha (PR#274)"**Next in thread:**ripley@stats.ox.ac.uk: "Re: axis() produces junk on DEC alpha (PR#274)"**Maybe reply:**maechler@stat.math.ethz.ch: "Re: axis() produces junk on DEC alpha (PR#274)"

Message-Id: <199909131608.SAA27354@pubhealth.ku.dk>

*>>>>> On Mon, 13 Sep 1999 17:41:07 +0200 (MET DST), ripley@stats.ox.ac.uk (Brian D. Ripley) said:
*

* >> Date: Mon, 13 Sep 1999 10:57:23 +0200 (MET DST)
*

* >> From: Albrecht Gebhardt <albrecht.gebhardt@uni-klu.ac.at>
*

* >>
*

* >> On Mon, 13 Sep 1999, Prof Brian D Ripley wrote:
*

* BDR> [...]
*

* BDR> I'm puzzled. Are you saying -Inf passes R_FINITE and passes
*

* BDR> ISNAN? (Wow!, if so.) In any case, let us try and fix the macros
*

* BDR> (which crop up in many places) not two instances.
*

* BDR>
*

* >> NaN passed R_FINITE (see above). Then it gets multiplied by some
*

* >> values and serves as tickmark length.
*

* >>
*

* >> >
*

* >> > There are too many options in Arith.h to guess: can you please tell us
*

* >> > what path is being taken (HAVE_FINITE, IEEE_754, FINITE_BROKEN, ...).
*

* >> in src/include/Rconfig.h:
*

* >> /* Floating Point Arithmetic */
*

* >> /* #undef HAVE_MATHERR */ /* System V */
*

* >> #define HAVE_ISNAN 1 /* IEEE Arith indicator */
*

* >> #define HAVE_FINITE 1
*

* >>
*

* >> /* #undef HAVE_FLOATINGPOINT_H */
*

* >> /* #undef HAVE_FPU_CONTROL_H */
*

* >> /* #undef HAVE_IEEEFP_H */ /* "-Wall" */
*

* >> /* #undef HAVE_IEEE754_H */ /* Linux */
*

* >>
*

* >> #ifdef HAVE_ISNAN
*

* >> #ifdef HAVE_FINITE
*

* >> #define IEEE_754
*

* >> #endif
*

* >> #endif
*

* >>
*

* >> and some lines below:
*

* >> /* Bug Workarounds */
*

* >> /* #undef HAVE_OSF_SPRINTF_BUG */
*

* >> #define CALLOC_BROKEN 1
*

* >> #define FINITE_BROKEN 1
*

* >> #define LOG_BROKEN 1
*

* >>
*

* >>
*

* >> >
*

* >> > I believe this can all be tested from interpreted R code. I believe you
*

* >> > should get (is.na(c(2.0, Inf, -Inf, NaN, NA)) etc)
*

* >> > 2.0 Inf -Inf NaN NA
*

* >> > is.na F F F T T
*

* >> > is.finite T F F F F
*

* >> > is.infinite F T T F F
*

* >> > is.nan F F F T F
*

* >>
*

* >>
*

* >> > is.na(c(2.0, Inf, -Inf, NaN, NA))
*

* >> [1] FALSE FALSE FALSE TRUE TRUE
*

* >> > is.finite(c(2.0, Inf, -Inf, NaN, NA))
*

* >> [1] TRUE TRUE TRUE TRUE TRUE
*

* >> > is.infinite(c(2.0, Inf, -Inf, NaN, NA))
*

* >> [1] FALSE FALSE FALSE FALSE FALSE
*

* >> > is.nan(c(2.0, Inf, -Inf, NaN, NA))
*

* >> [1] FALSE FALSE FALSE TRUE FALSE
*

* >>
*

* >> Seems that everything is R_FINITE!
*

* BDR> [...]
*

* BDR> OK, so I think you are at the line
*

* BDR> # define R_FINITE(x) ((x) != R_NaReal)
*

* BDR> in Arith.h, and that is clearly inadequate (although it should have
*

* BDR> caught the NA, I think). Can you please try replacing that line by
*

* BDR> static int R_FINITE(double x) {
*

* BDR> return !isnan(x) & (x != R_PosInf) & (x != R_NegInf);
*

* BDR> }
*

* BDR> and try those tests again.
*

* BDR> (Kurt: looks like finite can be broken in more ways than one. I suggest
*

* BDR> return(finite(1./0.) & finite(0./0.) & finite(-1./0.)) in aclocal.m4,
*

shouldn't this be "|" instead of "&" [broken if either is finite] ?

* BDR> and if FINITE_BROKEN going directly to some function like the
*

* BDR> above, and not trying to be efficient, just right!)
*

{weak voice in the background:

it may be worth tyring to be both right and efficient ..

but I agree that "right" is much more important!

}

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

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

_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

**Next message:**ripley@stats.ox.ac.uk: "Re: axis() produces junk on DEC alpha (PR#274)"**Previous message:**ripley@stats.ox.ac.uk: "Re: axis() produces junk on DEC alpha (PR#274)"**Maybe in reply to:**albrecht.gebhardt@uni-klu.ac.at: "axis() produces junk on DEC alpha (PR#274)"**Next in thread:**ripley@stats.ox.ac.uk: "Re: axis() produces junk on DEC alpha (PR#274)"**Maybe reply:**maechler@stat.math.ethz.ch: "Re: axis() produces junk on DEC alpha (PR#274)"

*
This archive was generated by hypermail 2b25
: Tue 04 Jan 2000 - 14:16:08 EST
*