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.git...@gmail.com
--
Hervé Pagès
Bioconductor Core Team
hpages.on.git...@gmail.com
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel