std.math contains a lot of raw pointer arithmetic for accessing
the various bit fields of floating-point values (see
https://en.wikipedia.org/wiki/IEEE_754-1985). Much of this code
has several nearly-identical copies, manually specialized for
each supported floating-point format.
Such code is verbose, hard to read, and, judging by the bugs and
missing specializations I've found, hard to write correctly. It
is also not compatible with CTFE.
A while ago I created Phobos #4336
(https://github.com/dlang/phobos/pull/4336), which begins the
process of replacing all the pointer arithmetic in std.math, and
the supporting floatTraits template, using a fast union type:
RealRep.
Ian Buclaw recently approved my work, but I believe that a pull
request of this size and importance should be review by at least
one other qualified person.
Would any of our other floating-point experts be willing to take
a look?
- Replacing std.math raw pointer ... tsbockman via Digitalmars-d
-