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 > >> >> > >>
