From murdoch.duncan at gmail.com  Fri Aug 16 19:46:30 2013
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Fri, 16 Aug 2013 13:46:30 -0400
Subject: [Rd] format bug and patch
In-Reply-To: <CAL_Jc-FGbMfh1BP6N5FT7qrm1F4h0WWe8YDzY8mgrAQGLXBEsw@mail.gmail.com>
References: <CAL_Jc-FGbMfh1BP6N5FT7qrm1F4h0WWe8YDzY8mgrAQGLXBEsw@mail.gmail.com>
Message-ID: <520E6576.9020607@gmail.com>

On 13-08-15 6:07 PM, Aleksey Vorona wrote:
> Dear R-team,
>
> I've been using R for a while and decided to contribute some bug
> fixes. The first bug I tried to solve was
> https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15411
>
> I have attached a patch with the fix to the bug and would love to hear
> comments about its quality.
>
> Also, while testing this bug I found another related issue:
>> format(complex(real=10, imaginary=4), digits = 1);
> [1] "10+0i"
>
> I think this should've been "10+4i". I have entered this as a bug
> #15427. But a patch for formatComplex() would be a bigger change, than
> the patch for formatReal() I made. So, before I start, I would like to
> gauge your opinion.
>
> Do you agree it is a bug?

No, it is a somewhat questionable design, but not a bug.  You asked for 
1 significant digit.  format() will give both the real and imaginary 
parts accurate to 1 significant digit.  Since the real part has two 
digits, it handles the imaginary part as 04, which is rendered as 0.

The questionable part of the design is that 11+4i would be rendered as 
11+0i, i.e. two digits accuracy are given in the real part even though 
you only asked for one.  I think it would be better to be consistent 
here.  I think it makes more sense to give 11+4i (or 10+4i in your 
example) than to give 10+0i for both, but I think that is a matter of 
taste, rather than a bug fix.

I have also prepared a patch for the 15411 bug; I'll compare mine to 
yours and commit something, but not for a week or so:  I am mostly 
offline until then.

Duncan Murdoch



[Rd] format bug and patch
Duncan Murdoch