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