<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Hi Jörg,<div class=""><br class=""></div><div class="">Just now I noticed that my reply to your modification of Hennessy.Trees (below) did not make it to the list (possibly because I included a few screenprints of run times). </div><div class=""><br class=""></div><div class="">So now again:</div><div class=""><br class=""></div><div class="">Thanks Jörg, this modification is great! </div><div class="">Everything runs as it should now.<div class=""><br class=""></div><div class="">Now also in Oberon System V5 Hennessy.Mod can be used with ...MOD 65536 (sic!) in procedure Rand.</div><div class="">All reference output is as it should be.</div><div class=""><br class=""></div><div class="">And as a nice side effect of your modification the treesort benchmark runs nearly three times as fast as before:</div><div class=""><br class=""></div><div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class="">Run times Hennessy Mm and Sort procedures in V5 (10 runs, ms):</div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono"; min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class="">MOD Trees Intmm Mm Quick Bubble Tree</div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">65535 original 983 998 900 2016 747</div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">65536 original 984 1016 933 2017 --</div></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class="">65535 modified 966 1014 876 1954 647</div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class="">65536 modified 970 1016 908 1971 *259*</div><div style="margin: 0px; font-stretch: normal; font-size: 13px; line-height: normal; font-family: "Andale Mono";" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">These are all benchmarks that make use of procedure Rand. As can be seen in most of them there is no noticable difference whether 65535 of 65536 is used in the MOD expression, but sometimes there can be a huge difference. </div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">This is an illustration that in benchmarks it is important to consistently use the same pseudo-random generator and initial seed.</div><div style="margin: 0px; font-stretch: normal; line-height: normal; min-height: 15px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">--</div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">Hans Klaver</div></div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">Op 10 apr. 2020, om 13:20 heeft Jörg <<a href="mailto:joerg.straube@iaeth.ch" class="">joerg.straube@iaeth.ch</a>> het volgende geschreven:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;"><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="DE" class="">Hans<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="DE" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class="">I did the following:<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class="">PROCEDURE Trees* ();<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> VAR i : LONGINT;<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> BEGIN<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> IF Kernel.heapLim - Kernel.heapOrg - Kernel.allocated > 160000 THEN<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> tInitarr();<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> NEW(tree);<span class="Apple-converted-space"> </span><o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> (* here the rest of Trees *)<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> END;<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> tree := NIL; Oberon.Collect(0) (* tell the GC to start after Hennessy terminated *)<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""> END Trees;<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class="">With these modifications you can take whatever random number generator you wanna use.<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class="">DIV 65535 (wrong) or DIV 65536 (corresponds to the C original) or any other.<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class=""><o:p class=""> </o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class="">br<o:p class=""></o:p></span></div><div style="margin: 0cm 0cm 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span lang="EN-US" class="">Joerg<o:p class=""></o:p></span></div></div></div></blockquote></div><br class=""></div></body></html>