[Oberon] Modulus on negative number
aubrey.mcintosh at utexas.edu
Fri May 12 22:43:27 CEST 2017
for -1 MOD 12, the mathematically correct answers which are consistent with
the language report, are
This definition works very well, for example, to implement wrap around
strip chart displays.
On Fri, May 12, 2017 at 2:28 PM, Peter Matthias <PeterMatthias at web.de>
> Warming up the thread to give supposedly correct answer:
> Am 16.02.2017 um 00:00 schrieb Peter Matthias:
>> Am 15.02.2017 um 04:21 schrieb Srinivas Nayak:
>>> Dear All,
>>> Recently I come across modulus on a negative number.
>>> Will it produce a negative number or positive?
>>> Someone says both are correct! http://stackoverflow.com/a/4403556
>>> Which one is mathematically correct?
>>> Surprisingly different languages calculate it differently even!
>>> What is Oberon's way?
>> The theory was already answered. In practice, all compiler
>> implementations I used (native X86, Shark, MIPS), give wrong result when
>> both, divident and divisor are negative. I fixed it just yesterday for
>> all non x86 versions.
> I should have read the language report before making such claims.
> Oberon Report says:
> "The operators DIV and MOD apply to integer operands only. They are
> related by the following formulas defined for any dividend x and positive
> divisors y:
> x = (x DIV y) * y + (x MOD y)
> 0 ≤ (x MOD y) < y"
> Oberon07-Report says:
> "The operators DIV and MOD apply to integer operands only. Let q = x DIV
> y, and r = x MOD y.
> Then quotient q and remainder r are defined by the equation
> x = q*y + r 0 <= r < y"
> Last statement obviously cannot be met if y is negative.
> So in short: Don't use DIV/MOD for negative divisors as the result is not
> From the implemtation point of view this perfectly makes sense as negative
> divisors are seldom used and correction for DIV of the usually stupid
> hardware implementation only takes 3 additional instructions compared to at
> least 6 for a complete definition. Simple SHIFT/AND instructions for power
> of 2 divisors easily outwight these 3 additional instructions.
> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
Aubrey McIntosh, Ph.D.
1502 Devon Circle
Austin TX 78723
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Oberon