|
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