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.

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?


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] <javascript:>> 
> wrote: 
>
> > So is there anything here we're not doing correctly? 
> > 
> > On Fri, Dec 19, 2014 at 7:54 AM, Tamas Papp <[email protected] 
> <javascript:>> wrote: 
> > 
> >> On Fri, Dec 19 2014, Hans W Borchers <[email protected] <javascript:>> 
> 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