[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Numerical Comparison: "required coercions"
Having spoken with a number of Lisp users (as opposed to implementors),
the overwhelming consensus appears to be that "=" must act like a
transitive operation. I should think that this statement alone would
be sufficient to clarify sections 12.1 to 12.4 of CLtL. Thus the
phrase "required coercions" would have to take on a context-sensitive
interpretation -- certain kinds of coercions are required when doing
comparisons, others are required when doing operations like addition
I don't propose to fix up the inherent non-associativity of
floating-point addition and multiplication; this "feature" is a
consequence of truncating information (i.e., "rounding" by whatever
rule) in order to return a result in the required format. Note,
however, that the comparison functions return a boolean value -- not
a floating-point value -- and hence aren't subject to the same problems.
So I would think that differing kinds of coercions between the two
kinds of operations wouldn't violate reasonable expectations.
You're quite right that if IEEE specifies what to do when comparing
floats of differing precisions (e.g., single-float with double-float)
then we ought to go for that. I don't know what it says. How about
it Richard J. Fateman, you usually know about these matters?
-- JonL --