On 9/13/2022 9:55 AM, Brian Goetz wrote:
It is common for math library methods to have a preamble to screen
out special values (infinities, NaN, 0.0, 1.0, etc.).
This would be a reasonable use of a switch on float/double switch.
Which raises some questions (again) of the semantics of constant
patterns for exotic floating point values, especially (again) negative
zero.
In a switching context, I think there is a stronger case for
distinguishing between +0.0 and -0.0. The operational semantics I'd
recommend are to desugar, say a float switch, to an int switch on the
Float.floatToIntBits mapping of the float case labels.
Float.floatToIntBits, as opposed to Float.floatToRawIntBits, normalized
all NaN representations to a single value.
-Joe