Skip to content

Too many spaces in deparsed complex numbers with digits17 control option

2 messages · Richard Cotton, Martin Maechler

#
If you set the "digits17" control option in deparse, you get a lot of
unnecessary space in the representation of complex numbers.
[1] "0+0i"
[1] "0 +                 0i"

As far as I can tell, the logic for this comes from this piece of
/src/main/deparse.c:

if (TYPEOF(vector) == CPLXSXP && (d->opts & DIGITS16)) {
  Rcomplex z =  COMPLEX(vector)[i];
  if (R_FINITE(z.r) && R_FINITE(z.i)) {
      snprintf(hex, 64, "%.17g + %17gi", z.r, z.i);
      strp = hex;
  } else
      strp = EncodeElement(vector, i, quote, '.');
}

I think this is a small bug, and that "%17gi" in the snprintf call
ought to be "%.17gi".

Also there shouldn't be any space around the plus sign for consistency
with the non-digits17 option.

Is this a real bug, or is it deliberate behaviour?
7 days later
#
Thank you, Richie! 
I agree it should be improved ...
actually, there is even another improvement, so we don't get things like
  '2+-1i' but rather '2-1i'

(namely to use the '+' format modifier option for printf).

I have commited a change to R-devel (only, for now),
svn rev 70601 specifically.

Martin


--
Martin <Maechler at stat.math.ethz.ch>  http://stat.ethz.ch/people/maechler
Seminar f?r Statistik, ETH Z?rich  HG G 16      R?mistrasse 101
CH-8092 Zurich, SWITZERLAND
phone: +41-44-632-3408       fax: ...-1228      <><