On 6/1/05, Simon Urbanek <[EMAIL PROTECTED]> wrote: > On Jun 1, 2005, at 5:50 AM, (Ted Harding) wrote: > > > However, a query: Clearly from the above (ahich I can reproduce > > too), tan() can distinguish between -0 and +0, and return different > > results (otherwise 1/tan() would not return different results). > > > > But how can the user tell the difference between +0 amnd -0? > > That's indeed a good question - by definition (-0)==(+0) is true, > -0<0 is false and signum of both -0 and 0 is 0. > > I don't see an obvious way of distinguishing them at R level. Besides > computational ways (like the 1/tan trick) the only (very ugly) way > coming to my mind is something like: > a==0 && substr(sprintf("%f",a),1,1)=="-" > Note that print doesn't display the sign, only printf does.
On my XP machine running R 2.1.0 patched 2005-05-14 > sprintf("%f",-0) [1] "0.000000" does not print the sign. however, the tan trick can be done without tan using just division: R> sign0 <- function(x) if (x != 0) stop("x not zero") else sign(1/x) R> sign0(0) [1] 1 R> sign0(-0) [1] -1 ______________________________________________ R-devel@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-devel