From: Peter Brawley Date: February 25 2005 3:11pm Subject: Re: modulo operation List-Archive: http://lists.mysql.com/mysql/180547 Message-Id: <421F4035.7020603@earthlink.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit There are various interpretations of modulo. It's not simply "remainder", eg see the discussion at http://mathforum.org/library/drmath/view/52343.html including this chart from the 1983 Ada manual: The relations between integer division, remainder, and modulus are illustrated by the following table: A B A/B A rem B A mod B A B A/B A rem B A mod B 10 5 2 0 0 -10 5 -2 0 0 11 5 2 1 1 -11 5 -2 -1 4 12 5 2 2 2 -12 5 -2 -2 3 13 5 2 3 3 -13 5 -2 -3 2 14 5 2 4 4 -14 5 -2 -4 1 10 -5 -2 0 0 -10 -5 2 0 0 11 -5 -2 1 -4 -11 -5 2 -1 -1 12 -5 -2 2 -3 -12 -5 2 -2 -2 13 -5 -2 3 -2 -13 -5 2 -3 -3 14 -5 -2 4 -1 -14 -5 2 -4 -4 PB Jigal van Hemert wrote: >From: "Thomas Lenherr" > >Hi Thomas, > > > >>I just wanted to know if there is a special reason for the >>mathematically incorrect implementation of the modulo-operation in mysql. >>Using a correct modulo operation on a negative number would still result >>in a positive number: >>-1 % 2 == 1 (mysql: -1) >>-5 % 3 == 1 (mysql: -2) >>-1 % 4 == 3 (mysql: -1) >> >>(For the exact definition see >>http://en.wikipedia.org/wiki/Modulo_operation ) >> >>AFAIK most programming languages implement modulo in this wrong way >>(except pascal i think), but I don't have a clou why it should stay that >>way as I find this behaviour rather disturbing... >> >> > >I don't see any difference between the wikipedia definition and the MySQL >implementation, especially since the article mentions that "what exactly >constitutes the result of a modulo operation depends on the programming >language and/or the underlying hardware." > >In the MySQL manual the results for negative numbers are not mentioned, nor >defined. > >IMHO the examples you mention give correct results with MySQL: > -1 / 2 = 0 remains: -1 > -5 / 3 = -1 remains: -2 > -1 / 4 = 0 remains: -1 > >Regards, Jigal. > > > > -- No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.300 / Virus Database: 266.4.0 - Release Date: 2/22/2005