Email list hosting service & mailing list manager

Re: SRFI-77 with more than one flonum representation William D Clinger (03 Jul 2006 18:59 UTC)
Re: SRFI-77 with more than one flonum representation Alan Watson (03 Jul 2006 19:13 UTC)
Re: SRFI-77 with more than one flonum representation Bradley Lucier (03 Jul 2006 19:32 UTC)
Re: SRFI-77 with more than one flonum representation Alan Watson (03 Jul 2006 19:40 UTC)

Re: SRFI-77 with more than one flonum representation Bradley Lucier 03 Jul 2006 19:31 UTC

On Jul 3, 2006, at 2:59 PM, William D Clinger wrote:

> To put your argument into perspective, consider double
> precision on the IA32.  That architecture's implementation
> of double precision arithmetic is not quite correct

Will:

I presume you're talking about '387 style arithmetic with 80-bit
extended real registers. This architecture has no single-precision or
double-precision operations at all, all operations act on extended-
precision (80-bit) values in extended-precision registers; so it has
*no* "implementation of double precision arithmetic".  The '387 is a
correct implementation of IEEE 754 arithmetic, yet one that most
programmers seem to be uncomfortable with.  I'm somewhat familiar
with how gcc compiles floating-point code, and the ia32 back-end
"lies" to the middle-end that there are single- and double-precision
registers and operations available, and the various front ends "lie"
to the programmer about what operations are available.  I don't
believe there is enough interest among the members of the gcc
development community to "fix" this situation, especially since the
SSE[23] floating-point computational models are faster on current
CPUs and have a more "user-friendly" (as it were) conceptual model.

> While
> it is possible to perform IEEE-754 double precision arithmetic
> correctly on the IA32 architecture by writing every intermediate
> result to memory,

This is not sufficient to simulate double x double -> double
operations---pre- and post-scalings, as well as setting the mantissa
precision to 53 bits, are necessary to eliminate double rounding and
to compute possible denormal results correctly.  Storing intermediate
results to memory are sufficient  to simulate single x single ->
single operations.

Brad