From ripley at stats.ox.ac.uk  Fri Sep 22 12:52:50 2006
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Fri, 22 Sep 2006 11:52:50 +0100 (BST)
Subject: [Rd] printing of complex numbers in R-alpha
In-Reply-To: <E01BC4CE-0616-497A-9B1B-53E227A90C53@soc.soton.ac.uk>
References: <0BAEBFBF-7FBC-4349-BDCE-30BAE955E11B@soc.soton.ac.uk>
	<17682.35463.124617.653585@stat.math.ethz.ch>
	<Pine.LNX.4.64.0609211409540.29357@gannet.stats.ox.ac.uk>
	<E01BC4CE-0616-497A-9B1B-53E227A90C53@soc.soton.ac.uk>
Message-ID: <Pine.LNX.4.64.0609221143050.1704@gannet.stats.ox.ac.uk>

On Thu, 21 Sep 2006, Robin Hankin wrote:

> Hello
>
> got it:
>
>   o	The printing of complex numbers has changed, handling numbers
> 	as a whole rather than in two parts.  So both real and
> 	imaginary parts are shown to the same accuracy, with the
> 	'digits' parameter referring to the accuracy of the larger
> 	component, and both components are shown in fixed or
> 	scientific notation (unless one is entirely zero when it is
> 	always shown in fixed notation).
>
> [this from the NEWS of R-2.2.0]
>
> I'm struggling to reconcile the final clause of this with:
>
>
>> 1e100  + 1i
> [1] 1e+100+1i
>> 1e100 + 1e-100i
> [1] 1e+100+0i
>
>
> in both of these cases, the real component is shown in scientific
> notation and the imaginary component isn't.
>
> I'm finding the following example confusing too:
>
>> 1e100 + pi*1i*10^(c(-100,0,1,40,100))
> [1] 1e+100+3.1416e-100i 1e+100+ 3.1416e+00i 1e+100+ 3.1416e+01i
> [4] 1e+100+ 3.1416e+40i 1e+100+3.1416e+100i

Yes, there is a bug here, but I think only for cases where what is printed 
should be zero, that is for complex numbers with very different 
magnitudes of real and imaginary parts.  A better version would be

> 1e100  + 1i
[1] 1e+100+0e+00i
> 1e100 + 1e-100i
[1] 1e+100+0e+00i
> 1e100 + pi*1i*10^(c(-100,0,1,40,100))
[1] 1e+100+ 0.000000e+00i 1e+100+ 0.000000e+00i 1e+100+ 0.000000e+00i
[4] 1e+100+ 0.000000e+00i 1e+100+3.141593e+100i
> 1e50 + c(0, 1, 1e48)*1i
[1] 1e+50+0e+00i 1e+50+0e+00i 1e+50+1e+48i
> 1e50 + pi^-(1:5)*1e46*1i
[1] 1e+50+3.2e+45i 1e+50+1.0e+45i 1e+50+3.2e+44i 1e+50+1.0e+44i 1e+50+0.0e+00i

which is what R-devel now gives.


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




[Rd] printing of complex numbers in R-alpha
Prof Brian Ripley