[Oberon] Modulus on negative number

Tomas Kral thomas.kral at email.cz
Mon May 15 20:45:28 CEST 2017


Hi,

EDIT - the reason I ask, is that until now I thought that a remainder
is a computing synonym for the modulus. 

Also, I remember that one of the early
Intel processors had problems with zero division, but some
maths people argued that it was alright as zero division depends on the
rate of convergence.

But Maths was never my cup of tea.        

At last I took some interest in this MOD'ulus discussion. I wonder how
it is (un)defined in Math / Oberon

x DIV 0
0 MOD x

Tomas

On Mon, 15 May 2017 09:57:08 +0200
Jörg <joerg.straube at iaeth.ch> wrote:

> It is. MOD is defined as C x C -> C
> Jörg
> 
> > Am 14.05.2017 um 20:17 schrieb Aubrey McIntosh
> > <aubrey.mcintosh at utexas.edu>:
> > 
> > I have not checked my number theory book lately, but I don't think
> > (i.e., don't remember) that it is defined mathematically for
> > negative divisors either.
> > 
> >> On Sat, May 13, 2017 at 3:12 AM, Peter Matthias
> >> <PeterMatthias at web.de> wrote: Agreed. However, -1 MOD -12 or 1 MOD
> >> -12 is not defined in Oberon.
> >> 
> >> 
> >>> Am 12.05.2017 um 22:43 schrieb Aubrey McIntosh:
> >>> for -1 MOD 12, the mathematically correct answers which are
> >>> consistent with the language report, are
> >>> q=-1, r=11.
> >>> 
> >>> 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 <mailto:PeterMatthias at web.de>> wrote:
> >>> 
> >>>     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
> >>>             <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 defined.
> >>> 
> >>>     >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.
> >>> 
> >>> 
> >>>     Peter
> >>> 
> >>>     --
> >>>     Oberon at lists.inf.ethz.ch <mailto:Oberon at lists.inf.ethz.ch>
> >>> mailing list for ETH Oberon and related systems
> >>>     https://lists.inf.ethz.ch/mailman/listinfo/oberon
> >>>     <https://lists.inf.ethz.ch/mailman/listinfo/oberon>
> >>> 
> >>> 
> >>> 
> >>> 
> >>> --
> >>> Aubrey McIntosh, Ph.D.
> >>> 1502 Devon Circle
> >>> Austin TX 78723
> >>> (512) 348-7401
> >>> 
> >>> 
> >>> 
> >>> --
> >>> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> >>> systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
> >>> 
> >> --
> >> Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> >> systems https://lists.inf.ethz.ch/mailman/listinfo/oberon
> > 
> > 
> > 
> > -- 
> > Aubrey McIntosh, Ph.D.
> > 1502 Devon Circle
> > Austin TX 78723
> > (512) 348-7401
> > 
> > --
> > Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related
> > systems https://lists.inf.ethz.ch/mailman/listinfo/oberon



-- 
Tomas Kral <thomas.kral at email.cz>
--
Oberon at lists.inf.ethz.ch mailing list for ETH Oberon and related systems
https://lists.inf.ethz.ch/mailman/listinfo/oberon


-- 
Tomas Kral <thomas.kral at email.cz>


More information about the Oberon mailing list