RFR 8015978: Incorrect transformation of XPath expression "string(-0)"

Aleksej Efimov aleksej.efimov at oracle.com
Sun Jun 9 18:18:24 UTC 2013


Joe,

I definitely like it:
1. Its a one-line change - perfect size.
2. Its fastest one from discussed previously.
3. -0.0 -> 0.0 has tests.
4. And it solves our problem.

As a result of all props the next version of webrev: 
http://cr.openjdk.java.net/~coffeys/webrev.8015978.v2/ 
<http://cr.openjdk.java.net/%7Ecoffeys/webrev.8015978.v2/>

Thanks
-Aleksej

On 06/07/2013 11:11 PM, huizhe wang wrote:
> Nice. One-line change, I guess Aleksej would love it :-)
>
> On 6/7/2013 10:19 AM, Joe Darcy wrote:
>> I'll do you one better; you can turn a negative zero into a positive 
>> zero leaving other values unchanged like this:
>>
>>     d = d + 0.0;
>>
>> In IEEE 754 under the round-to-nearest-even rounding mode required by 
>> Java
>>     -0.0 + 0.0 => (+)0.0
>>
>> This trick is used in various places in Java's numerical libraries, 
>> is required behavior by our specifications, and even has some tests 
>> for it :-)
>>
>> -Joe
>>
>> On 6/7/2013 8:43 AM, David Chase wrote:
>>> Wouldn't be more efficient to do the following, assuming that the 
>>> full Java compilation chain respects the trickiness of 0 vs -0:
>>>
>>>     if (d == 0.0) {
>>>          d=0.0 // Jam -0 == +0 to +0, per 
>>> http://www.w3.org/TR/xpath/#function-string
>>>
>>>     }
>>>
>>> Division's plenty more expensive than assigning a constant, 
>>> especially on platforms that lack hardware FP division.
>>>
>>> David
>>>
>>> On 2013-06-07, at 2:03 AM, huizhe wang <huizhe.wang at oracle.com> wrote:
>>>
>>>> Hi Aleksej,
>>>>
>>>> According to XPath spec, both positive and negative zero are 
>>>> converted to the string 0, so it seems doesn't matter. But if you 
>>>> want to detect the negative zero, you may do the following:
>>>>     if (d == 0.0 && 1/d < 0.0) {
>>>>          d=0.0
>>>>     }
>>>>
>>>> Recognizing that (-0.0 == 0.0), and (1/(-0.0) == -Infinity).
>>>>
>>>> -Joe
>>>
>>
>




More information about the core-libs-dev mailing list