lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]



On Apr 18, 2006, at 01:26, Reuben Thomas wrote:

On Tue, 17 Apr 2006, John D. Ramsdell wrote:

A user of the patch has suggested to me that Lua's division and
modulus operator should satisfy the same equation as C's integer
division and remainder operators.

I see this topic was recently discussed in another thread I happened
not to be following.  I concluded that integer division should work as
it does in Python, and changed the patch to define division as
follows.

#define luai_numdiv(a,b) ((a)<0==(b)<0||(a)%(b)==0?(a)/(b):(a)/(b)-1)

This is not reliable: ANSI/ISO C does not specify how integer division is rounded (to zero or to -infinity).

The 1999 C standard does. And it specifies round towards zero (which in my opinion is completely broken).

Previous versions of the C standard allowed the implementation to select either style of rounding.

For personal reasons I'd love to know about any platform where someone has observed C's integer division rounding towards -inf.

drj