<div dir="ltr"><div>Oups, sorry,</div><div>it was part of another package that was loaded in my test images.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le jeu. 5 mai 2022 à 16:07, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>> a écrit :<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><div id="gmail-m_8531127147783000403__MailbirdStyleContent" style="font-size:10pt;font-family:Arial;color:rgb(0,0,0);text-align:left" dir="ltr">
                                        Hi Nicolas --<div><br></div><div>You forgot to commit #isFinite on Integer? Many ComplexTest tests are failing:</div><div><span style="font-size:13.3333px"><a href="https://github.com/squeak-smalltalk/squeak-app/runs/6302546226?check_suite_focus=true" target="_blank">https://github.com/squeak-smalltalk/squeak-app/runs/6302546226?check_suite_focus=true</a></span><br></div><div><span style="font-size:13.3333px"><br></span></div><div><span style="font-size:13.3333px">Best,</span></div><div><span style="font-size:13.3333px">Marcel</span></div><div></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:rgb(170,170,170);margin-top:10px">Am 27.04.2022 17:18:13 schrieb <a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a> <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">Nicolas Cellier uploaded a new version of KernelTests to project The Trunk:<br><a href="http://source.squeak.org/trunk/KernelTests-nice.422.mcz" target="_blank">http://source.squeak.org/trunk/KernelTests-nice.422.mcz</a><br><br>==================== Summary ====================<br><br>Name: KernelTests-nice.422<br>Author: nice<br>Time: 26 April 2022, 1:03:31.73252 pm<br>UUID: e963a1d7-702a-904d-8b40-8dbf96032f0d<br>Ancestors: KernelTests-nice.421<br><br>Complex tests associated with that suggestion: complex arithmetic should detect case of overflow in intermediate computations and fallback to securedely scaled operations if it's the case.<br><br>=============== Diff against KernelTests-nice.421 ===============<br><br>Item was changed:<br>  ----- Method: ComplexTest>>testDivision1 (in category 'tests') -----<br>  testDivision1<br>         "self run: #testDivision1"<br>          "self debug: #testDivision1"<br>        <br>      | c1 c2 quotient |<br>    c1 := 2.0e252 + 3.0e70 i.<br>     c2 := c1.<br>     quotient := c1 / c2.<br>-         self deny: (quotient - 1) isZero.<br>     <br>+     "This used to fail when / was not protected against floating point overflow in intermediate computations<br>+        but it should now work correctly if divideSecureBy: is correctly used as fallback case"<br>+         self assert: (quotient - 1) isZero<br>-   "This test fails due to the wonders of floating point arithmetic. <br>-       Please have a look at Complex>>divideSecureBy: and #divideFastAndSecureBy:<br>-    how this can be avoided."<br>        <br>  !<br><br>Item was added:<br>+ ----- Method: ComplexTest>>testMultiplyDoesNotOverflow (in category 'tests') -----<br>+ testMultiplyDoesNotOverflow<br>+  <br>+     | c1 c2 product smallProduct scale |<br>+         c1 := (1 + 1 i) sqrt * Float fmax sqrt.<br>+      product := c1 squared.<br>+       self assert: product real isFinite.<br>+  self assert: product imaginary isFinite.<br>+     self assert: (product real - Float fmax) / Float fmax ulp < 3.<br>+    self assert: (product imaginary - Float fmax) / Float fmax ulp < 3.<br>+ <br>+   "a more tricky case"<br>+       c1 := 1.0 + 0.25 i.<br>+  c2 := 1.125+ 0.5 i.<br>+  smallProduct := c1 * c2.<br>+     "check that we will not overflow in precondition"<br>+  self assert: smallProduct real abs <= 1.<br>+  self assert: smallProduct imaginary abs <= 1.<br>+     "now retry with a large scale"<br>+     scale := Float fmax.<br>+         product := c1 * scale * c2.<br>+  self assert: product real isFinite.<br>+  self assert: product imaginary isFinite.<br>+     self assert: (scale * smallProduct real - product real) / (scale * smallProduct real) ulp < 3.<br>+    self assert: (scale * smallProduct imaginary - product imaginary) / (scale * smallProduct imaginary) ulp < 3.!<br><br>Item was added:<br>+ ----- Method: ComplexTest>>testReciprocalDoesNotOverflow (in category 'tests') -----<br>+ testReciprocalDoesNotOverflow<br>+  "Note: intermediate overflow might cause the answer to be zero in careless implementation"<br>+         <br>+     | c scale cScaled cScaledInv expected |<br>+      c := (1 + 1i).<br>+       scale := Float fmax.<br>+         cScaled := c * scale.<br>+        cScaledInv := cScaled reciprocal.<br>+    expected := c reciprocal real / scale + (c reciprocal imaginary / scale) i.<br>+  self assert: (expected real- cScaledInv real) abs / expected real ulp < 3.<br>+        self assert: (expected imaginary - cScaledInv imaginary) abs / expected imaginary ulp < 3.!<br><br><br></div></blockquote>
                                        </div></div><br>
</blockquote></div>