[R] Inf +1i vs 1+Inf*1i

Martin Maechler maechler at stat.math.ethz.ch
Wed Apr 13 10:40:33 CEST 2005


Actually, the problem comes from  "Inf * 1i" (or 1i * Inf)
and the 
	  0 * Inf |-> NaN
which of course is `correct' in general, but a bit undesirable
in the rule

   (a + bi) * (c + di)  =  (ac - bd) + (ad + bc)i

{and similarly in complex division}.

Note that the same problem also leads to

  > 1 * complex(re=0, im=Inf)
  [1] NaN+Infi

which is even more ugly,  
since  '1 * z' really should return 'z' for all z.

Martin

BTW:  S-plus (6.2.1) also returns NaN 
      (printing "NA".  S+ has no complex versions of 'NaN')

>>>>> "MM" == Martin Maechler <maechler at stat.math.ethz.ch>
>>>>>     on Wed, 13 Apr 2005 10:17:00 +0200 writes:

>>>>> "Robin" == Robin Hankin <r.hankin at soc.soton.ac.uk>
>>>>>     on Wed, 13 Apr 2005 08:51:19 +0100 writes:

    Robin> Hi
    Robin> If I have

    Robin> a <- Inf + 1i

    Robin> then

    Robin> Re(a) is Inf, and Im(a) is 1, as expected.

    Robin> But if

    Robin> b <- 1 + Inf * 1i,

    Robin> then

    Robin> Im(b) = Inf ,  as expected,   but Re(b) = NaN, which I didn't expect.

    Robin> Why this asymmetry?

    MM> I think this is a (very long standing) buglet in our complex
    MM> arithmetic, since you can directly see

    >> 1+ 1i*Inf
    MM> [1] NaN+Infi

    Robin> How to define an object with Re(b)=1, Im(b)=Inf?

    MM> {Oscar already mentioned    b <- complex(real=1, im=Inf) }

    MM> Martin Maechler, ETH Zurich

    MM> ______________________________________________
    MM> R-help at stat.math.ethz.ch mailing list
    MM> https://stat.ethz.ch/mailman/listinfo/r-help
    MM> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html




More information about the R-help mailing list