<div dir="ltr"><div>Somewhere in my past I took a course that included the theory of numbers, and it included the definition of division.  Since then I have always been interested and attentive to that definition.</div><div><br></div>There is a very close connection between the MOD operator in mathematics and the so called "clock numbers."  Those are the familiar everyday numbers MOD 12.<div><br></div><div>The Oberon definition follows the mathematical definition.<br></div><div><br></div><div>If we call noon today "0" and we are plotting a graph, we want 1 hour before noon to be graphed at 11, pretty much as we do in the graph of MOD 8 in this conversation.  So making strip charts and such with time data results in "as expected" results.</div><div><br></div><div>Many calculators and also runtime environments for other languages do this incorrectly.  They simply carry the negative sign into the results for both mod and div.  This is not correct behavior from a mathematician's point of view.</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 15, 2019 at 9:54 AM Joerg <<a href="mailto:joerg.straube@iaeth.ch">joerg.straube@iaeth.ch</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div lang="DE-CH"><div class="gmail-m_6802950961036928082WordSection1"><p class="gmail-m_6802950961036928082MsoPlainText">All<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><u></u> <u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">In my point of view the Oberon spec is rather clear:<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="FR-CH">- q = x DIV y, r = x MOD y, x = q*y + r, 0 <= r < y<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">- MOD is always positive ( 0 <= r < y)<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">- It follows this pattern<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><img width="510" height="284" style="width: 5.3125in; height: 2.9583in;" id="gmail-m_6802950961036928082Picture_x0020_1" src="cid:16a25c4b32d692e331"><span lang="EN-US"><u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US"><u></u> <u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">For x = -1 and y = 8 the only integers fulfilling the defining equation set is q = -1, r = 7.<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">DIV is rounding down to nearest integer.<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US"><u></u> <u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">br<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">Jörg<u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US"><u></u> <u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US">-----Original Message-----<br>From: Oberon <<a href="mailto:oberon-bounces@lists.inf.ethz.ch" target="_blank">oberon-bounces@lists.inf.ethz.ch</a>> On Behalf Of <a href="mailto:rochus.keller@bluewin.ch" target="_blank">rochus.keller@bluewin.ch</a><br>Sent: Monday, April 15, 2019 4:13 PM<br>To: <a href="mailto:oberon@lists.inf.ethz.ch" target="_blank">oberon@lists.inf.ethz.ch</a><br>Subject: Re: [Oberon] Assumed issue in the Lola-2 compiler</span><span lang="EN-US"><u></u><u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText"><span lang="EN-US"><u></u> <u></u></span></p><p class="gmail-m_6802950961036928082MsoPlainText">@ Paul Reed:<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><u></u> <u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">>> -1/16 is -0.0625 not 0.  (I agree there are indeed multiple integer <u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">>> solutions if you don't also add the range restriction on r.)<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><u></u> <u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">From the language report we can conclude that the operators and result of DIV and MOD (i.e. x, y, q and r) are (algebraic) integers.<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">We can also assume that in the equation 'x = q*y + r' the multiplication and addition are proper mathematical operators.<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">Since the given equation uses mathematical operators we can expect that rounding also follows proper mathematical rules. Therefore the rational number -1/16 is rounded to the algebraic integer 0, which would be the mathematically proper solution of  q = x DIV y = ( x - r ) / y with x = -1 and y = 16.<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><u></u> <u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">But as mentioned: I have a viable solution which re-uses features of C to simulate the Oberon implementation.<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><u></u> <u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">Best<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">R.K.<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText">--<u></u><u></u></p><p class="gmail-m_6802950961036928082MsoPlainText"><a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank"><span style="color:windowtext;text-decoration:none">Oberon@lists.inf.ethz.ch</span></a> mailing list for ETH Oberon and related systems <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" target="_blank"><span style="color:windowtext;text-decoration:none">https://lists.inf.ethz.ch/mailman/listinfo/oberon</span></a><u></u><u></u></p></div></div>--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Aubrey McIntosh, PhD</div><div dir="ltr">Teaching Specialist, Chemistry Department</div><div dir="ltr"><div>The University of Texas at Austin<br></div><div><br></div></div></div></div></div></div></div></div></div>