Support for primitive types in instanceof and type patterns
    Joseph D. Darcy 
    joe.darcy at oracle.com
       
    Tue Nov 15 22:40:02 UTC 2022
    
    
  
On 11/15/2022 12:13 PM, Brian Goetz wrote:
>
>
> On 11/15/2022 2:55 PM, Dan Heidinga wrote:
>> Hi Angelos,
>>
>> The overall direction and writeup for this looks good to me.  I think 
>> we need to be more specific about how doubles & floats fit into this 
>> though as they are perpetual source of special cases.
>
> Indeed, floating point is the gift that keeps on giving.
>
> Joe recently did some nice work in the spec of Float and Double, 
> outlining the various different ways in which floats can be compared.  
> This allows language features like pattern matching, casting, and 
> switch to appeal to "compared by FooBar comparison", rather than 
> spelling it out for each use.
>
>
FYI, the new text in question is:
https://download.java.net/java/early_access/jdk20/docs/api/java.base/java/lang/Double.html#fpNumericalEq
For the cases in the draft JEP, there have been separate discussions 
working through the details. Putting aside how it might be implemented, 
for the
    floating-point type -> integral type
cases, conceptually if the same real number can be presented in the 
floating-point type and the integral type, then the conversion is exact. 
(While floating-point values are often thought of as "fuzzy," each 
finite floating-point value represents some particular real number. 
Finite binary floating-point values are sums of the powers of 2 where 
the exponent difference of the powers is bounded by the significand 
width of the floating-point format in question.) The main special case 
is how conversion of -0.0 to an integral type is defined for purposes of 
instanceof. The desired double -> float behavior can be inferred from 
IEEE 754 concepts.
HTH,
-Joe
    
    
More information about the amber-spec-observers
mailing list