New draft (#4) of SRFI 144: Flonums Arthur A. Gleckler (17 Apr 2017 03:09 UTC)
Re: New draft (#4) of SRFI 144: Flonums Bradley Lucier (20 Apr 2017 18:29 UTC)

Re: New draft (#4) of SRFI 144: Flonums Bradley Lucier 20 Apr 2017 18:29 UTC

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.