Le vendredi 19 décembre 2014 à 07:11 -0800, Hans W Borchers a écrit :
> Oh, you're right. I was afraid my remembrance would not be right.
> I'm not so happy that -0.0 is not printed as -0.0 because
> mathematically
> there is no difference, and the Julia community puts much emphasis on
> this.
Given that 0.0 and -0.0 can be distinguished and do not always give the
same result (as shown in this thread), it makes sense to print them
differently. The opposite behavior would be terribly confusing.

> And especially I feel uneasy with these returns:
> 
> 
>     julia> sign(-0.0)
>     -0.0
> 
> 
>     julia> sqrt(-0)
>     0.0
> 
> 
> where `sqrt(-0.0)` and `sqrt(-0)` should print the same?
No, because they're not the same. The second one is equivalent to
`sqrt(0)`, as -0 is stricly equal to 0 (there is no negative zero for
integers). Same for `sign()`.


Regards

> On Friday, December 19, 2014 3:52:46 PM UTC+1, Tamas Papp wrote:
>         Nope, as far as I can see Julia is IEEE-compliant. So is R,
>         under the 
>         hood, it just does not display signed zeros as such. I prefer
>         that Julia 
>         does it. 
>         
>         Best, 
>         
>         Tamas 
>         
>         On Fri, Dec 19 2014, Stefan Karpinski <[email protected]>
>         wrote: 
>         
>         > So is there anything here we're not doing correctly? 
>         > 
>         > On Fri, Dec 19, 2014 at 7:54 AM, Tamas Papp
>         <[email protected]> wrote: 
>         > 
>         >> On Fri, Dec 19 2014, Hans W Borchers <[email protected]>
>         wrote: 
>         >> 
>         >> > The expression -0.0 means the floating point number that
>         in memory has 
>         >> the 
>         >> > same 
>         >> > bit representation as 0.0, but the sign bit set to 1. One
>         can see this 
>         >> > applying 
>         >> > the 'bits' function to 0.0 and -0.0. 
>         >> > 
>         >> > I seem to remember that the IEEE floating point
>         convention says that for 
>         >> > `sqrt(-0.0)` the sign bit has to be reset, so that 
>         >> > 
>         >> >     julia> sqrt(-0.0) 
>         >> >     -0.0 
>         >> > 
>         >> > would be wrong while MATLAB, R,... returning 0.0 are
>         correct. 
>         >> 
>         >> I don't think so. Section 6.3 of the IEEE Std 754TM-2008
>         says that 
>         >> 
>         >> "Except that squareRoot(−0) shall be −0, every numeric
>         squareRoot result 
>         >> shall have a positive sign. 
>         >> 
>         >> Furthermore, you can't rely on R to display the sign bit,
>         eg 
>         >> 
>         >> > 1/(-Inf) 
>         >> [1] 0 
>         >> 
>         >> Best, 
>         >> 
>         >> Tamas 
>         >> 
>         >> 
>         >> > The expression -0.0 means the floating point number that
>         in memory has 
>         >> the 
>         >> > same 
>         >> > bit representation as 0.0, but the sign bit set to 1. One
>         can see this 
>         >> > applying 
>         >> > the 'bits' function to 0.0 and -0.0. 
>         >> > 
>         >> > I seem to remember that the IEEE floating point
>         convention says that for 
>         >> > `sqrt(-0.0)` the sign bit has to be reset, so that 
>         >> > 
>         >> >     julia> sqrt(-0.0) 
>         >> >     -0.0 
>         >> > 
>         >> > would be wrong while MATLAB, R,... returning 0.0 are
>         correct. 
>         >> > 
>         >> > For `1/-Inf` the sign bit is not reset because this
>         expression should be 
>         >> > the 
>         >> > limit of 1/-x for very large numbers x, i.e. approaching
>         0 from left. 
>         >> > 
>         >> > 
>         >> > On Friday, December 19, 2014 12:13:57 PM UTC+1, Tamas
>         Papp wrote: 
>         >> >> 
>         >> >> Hmmm, did you read the whole blog post, including the
>         update at the end? 
>         >> >> Julia does handle signed zeroes correctly when working
>         with floats. 
>         >> >> 
>         >> >> As to what signed zeros "mean" -- they have some
>         applications, including 
>         >> >> indicating the direction of underflow. Probably you
>         don't need to worry 
>         >> >> about them much since 0.0 == -0.0 (unless you
>         specifically want to use 
>         >> >> them). 
>         >> >> 
>         >> >> I usually think about -0.0 as equivalent to 0.0 except
>         for +, -, *, and 
>         >> >> /, especially when Inf is involved. Thinking about it as
>         some limit is 
>         >> >> not very intuitive for IEEE floats, eg 
>         >> >> 
>         >> >> julia> log(-0.0) 
>         >> >> -Inf 
>         >> >> 
>         >> >> julia> sqrt(-0.0) 
>         >> >> -0.0 
>         >> >> 
>         >> >> all of which are correct IEEE. 
>         >> >> 
>         >> >> Best, 
>         >> >> 
>         >> >> Tamas 
>         >> >> 
>         >> >> 
>         >> >> On Fri, Dec 19 2014, cdm <[email protected]
>         <javascript:>> wrote: 
>         >> >> 
>         >> >> > i stumbled across a post and got to wondering what
>         Julians thought of 
>         >> it 
>         >> >> ... 
>         >> >> > 
>         >> >> >   http://www.walkingrandomly.com/?p=5152 
>         >> >> > 
>         >> >> > 
>         >> >> > the author presents the case that Python is not IEEE
>         compliant, but 
>         >> >> > MATLAB is and Julia is close: 
>         >> >> > 
>         >> >> > "From the wikipedia page on Division by Zero 
>         >> >> > <http://en.wikipedia.org/wiki/Division_by_zero>: *“The
>         IEEE 754 
>         >> >> > standard specifies that every floating point
>         arithmetic operation, 
>         >> >> > including division by zero, has a well-defined
>         result”.* 
>         >> >> > 
>         >> >> > 
>         >> >> > the author reports that in Julia 
>         >> >> > 
>         >> >> > julia> 1/(-0) 
>         >> >> > Inf 
>         >> >> > 
>         >> >> > 
>         >> >> > but MATLAB "correctly" returns -Inf ... 
>         >> >> > 
>         >> >> > 
>         >> >> > i am not sure that signed zero (-0) 
>         >> >> > means anything to me ... 
>         >> >> > 
>         >> >> > should it? 
>         >> >> > 
>         >> >> > many thanks, 
>         >> >> > 
>         >> >> > cdm 
>         >> >> 
>         >> 

Reply via email to