Comments (in reverse or random order, unfortunately):
flatan:
Instead of
With two arguments, return arctan(y/x. (C99 atan2)
have
With two arguments, return arctan(y/x). (C99 atan2)
fllog10:
Instead of
Returns log10 x. (C99 log10
have
Returns log10 x. (C99 log10)
fllog1+:
Instead of
Returns (log_e x) + 1, but is much more accurate than fllog for values
of x near 1.
have
Returns log_e (x + 1), but is more accurate than (fllog (fl+ 1. x)) for
values of x near 0.
flexp-1:
Instead of
Returns e^x - 1, but is much more accurate than flexp for values of x
near 1.
have
Returns e^x - 1, but is more accurate than (fl- (flexp x) 1.) for values
of x near 0.
flnumerator, fldenominator, flfloor, flceiling, flround, fltruncate:
I'd argue that it is invalid to have a non-finite argument to these
procedures, but hey, that's just me.
flmax, flmin:
Instead of
Return the maximum/minimum argument. If there are no arguments, these
procedures return -inf.0/+inf.0 if the implementation provides these
numbers, and fl-greatest/fl-least otherwise.
have
Return the maximum/minimum argument. If there are no arguments, flmax
returns -inf.0 and flmin returns +inf.0 if the implementation provides
these numbers, and fl-least/fl-greatest otherwise.
fl+*:
Call it flfma.
Also, instead of
Returns (fl+ (fl* x y) z), possibly faster and more accurately. The
boolean constant fl-fast-fl+* indicates whether this procedure provides
any benefit. (C99 fma)
have
Computes (x*y) + z as if to infinite precision and rounded only once. If
fl-fast-flfma is #t, then flfma computes faster (in addition to being
more precise) than the expression x*y+z
Accessors:
While all the functions in this section claim to have associated C99
equivalents, their meaning is not the same. Either refer to the C99
standard with nothing else, or copy the C99 definitions.
fl-fast-+*:
Rename to fl-fast-flfma.
Issues:
Don't restrict functions to two-argument versions.
Rename fl+* to flfma.