RE: [Rd] 1/tan(-0) != 1/tan(0)

From: Ted Harding <Ted.Harding_at_nessie.mcc.ac.uk>
Date: Wed 01 Jun 2005 - 09:50:14 GMT


On 01-Jun-05 Martin Maechler wrote:
> Testing the code that Morten Welinder suggested for improving
> extreme tail behavior of qcauchy(),
> I found what you can read in the subject.
> namely that the tan() + floating-point implementation on all
> four different versions of Redhat linux, I have access to on
> i686 and amd64 architectures,
>
> > 1/tan(c(-0,0))
> gives
> -Inf Inf
>
> and of course, that can well be considered a feature, since
> after all, the tan() function does jump from -Inf to +Inf at 0.
> I was still surprised that this even happens on the R level,
> and I wonder if this distinction of "-0" and "0" shouldn't be
> mentioned in some place(s) of the R documentation.

Indeed I would myself consider this a very useful feature!

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? I've tried the following:

  > sign(c(-0,0))
  [1] 0 0
  > sign(tan(c(-0,0)))
  [1] 0 0
  > sign(1/tan(c(-0,0)))
  [1] -1 1

so sign() is not going to tell us. Is there a function which can?

Short of wrting one's own:

  sign0 <-

    function(x){
      if(abs(x)>0) stop("For this test x must be +0 or -0")
      return(sign(1/tan(x)))

    }

;)

Best wishes,
Ted.



E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 094 0861
Date: 01-Jun-05                                       Time: 10:50:06
------------------------------ XFMail ------------------------------

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Jun 01 20:31:23 2005

This archive was generated by hypermail 2.1.8 : Mon 20 Feb 2006 - 03:21:06 GMT