[Rd] Unneeded if statements in RealFromComplex C code
Hervé Pagès
hp@ge@@on@g|thub @end|ng |rom gm@||@com
Fri Sep 10 17:48:01 CEST 2021
Thanks Martin!
Best,
H.
On 10/09/2021 02:24, Martin Maechler wrote:
>>>>>> Hervé Pagès
>>>>>> on Thu, 9 Sep 2021 17:54:06 -0700 writes:
>
> > Hi,
>
> > I just stumbled across these 2 lines in RealFromComplex (lines 208 & 209
> > in src/main/coerce.c):
>
> > double attribute_hidden
> > RealFromComplex(Rcomplex x, int *warn)
> > {
> > if (ISNAN(x.r) || ISNAN(x.i))
> > return NA_REAL;
> > if (ISNAN(x.r)) return x.r; <- line 208
> > if (ISNAN(x.i)) return NA_REAL; <- line 209
> > if (x.i != 0)
> > *warn |= WARN_IMAG;
> > return x.r;
> > }
>
> > They were added in 2015 (revision 69410).
>
> by me. "Of course" the intent at the time was to *replace* the
> previous 2 lines and return NA/NaN of the "exact same kind"....
>
> but in the mean time, I have learned that trying to preserve
> exact *kinds* of NaN / NA is typically not platform portable,
> anyway because compiler/library optimizations and
> implementations are pretty "free to do what they want" with these.
>
> > They don't serve any purpose and might slow things down a little (unless
> > compiler optimization is able to ignore them). In any case they should
> > probably be removed.
>
> I've cleaned up now, indeed back compatibly, i.e., removing both
> lines as you suggested.
>
> Thank you, Hervé!
>
> Martin
>
>
> > Cheers,
> > H.
>
> > --
> > Hervé Pagès
>
> > Bioconductor Core Team
> > hpages.on.github using gmail.com
>
--
Hervé Pagès
Bioconductor Core Team
hpages.on.github using gmail.com
More information about the R-devel
mailing list