• Subject: Re: Why do some math functions return -0
• From: David Kastrup <dak@...>
• Date: Sun, 19 Sep 2010 21:49:29 +0200

```caseyh@istar.ca writes:

> I haven't read all the replies; in some languages the modulus function
> is implemented differently for negative numbers. :)

Where do you see a negative number?

> Quoting Mike McGonagle <mjmogo@gmail.com>:
>
>> Well, here is the code that I am using, simplified to remove all the
>> tables...
>>
>> order = 3
>> elements = order * order
>> size = elements * elements
>>
>> for i = 0, (size - 1) do
>> 	r = math.floor(i / elements)
>> 	c = math.floor(i % elements)
>> 	b = math.floor(math.floor(math.floor(r / order) * order) +
>> math.floor(c / order))
>> 	br = math.floor(r % order)
>> 	bc = math.floor(c % order)
>> 	print(string.format("i:%f r: %f c: %f b:%f br:%f bc:%f", i, r,
>> c,  b, br, bc))
>> end
>>
>> I would think that because all of the numbers that I am working with,
>> all the numbers would come out positive, but many of the resulting
>> '0's come out as -0. While I have tried to preliminary test to see if
>> "0 == -0", I am just wondering if by chance this is due to some
>> rounding error.
>>
>> This is something that has bothered me about Lua for a while now, as I
>> don't really understand what '-0' really is or means. I mean,
>> logically, I can understand that there is probably some use for it,
>> but for the things that I am doing, I see absolutely no reason for it,
>> as I am trying to work with nothing but positive integers.
>>
>> Thanks,
>>
>> Mike
>>
>> On Sun, Sep 19, 2010 at 11:53 AM, Drake Wilson <drake@begriffli.ch> wrote:
>>> Quoth Mike McGonagle <mjmogo@gmail.com>, on 2010-09-19 11:19:59 -0400:
>>>> Hello all,
>>>>
>>>> I have been doing some very simple things (mostly to get the integer
>>>> portion of a number) using math.floor, and it seems that sometimes the
>>>> function will return -0, when I am expecting a 0. Can someone please
>>>> explain why this happens? Is there a logical reason for this?
>>>
>>> Why wouldn't they?  Negative and positive zero are two floating-point
>>> representations with the same closest real number.
>>>
>>> Can you give a specific example?
>>>
>>>> Thanks,
>>>>
>>>> Mike
>>>
>>>   ---> Drake Wilson
>>>
>>>
>>
>>
>
>
>
>

--
David Kastrup

```