[Pkg] The Trunk: KernelTests-pre.350.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Oct 17 15:51:46 UTC 2018

```Patrick Rein uploaded a new version of KernelTests to project The Trunk:
http://source.squeak.org/trunk/KernelTests-pre.350.mcz

==================== Summary ====================

Name: KernelTests-pre.350
Author: pre
Time: 17 October 2018, 4:51:14.818895 pm
UUID: ca4e331b-75b7-da42-bbc4-cc15a7476fc0
Ancestors: KernelTests-pre.349

Restores the float gradual undeflow test disabled for the 5.2 release

=============== Diff against KernelTests-pre.349 ===============

Item was removed:
- ----- Method: FloatTest>>expectedFailures (in category 'failures') -----
- expectedFailures
-

Item was changed:
----- Method: FloatTest>>testTimesTwoPowerGradualUnderflow (in category 'testing - arithmetic') -----
"Here is a vicious case where timesTwoPower is inexact because it underflows.
And two consecutive inexact operations lead to a different result than a single one.
Typically expressed as multiple of Float fmin in base 2,
2r1011*Float fmin shifted by -3 with round to nearest, tie to even mode:
-> round(1.011) -> 1.0 = fmin
But if first shifted by -2 then by -1:
-> round(10.11) -> 11.0 = 3*fmin
-> round(1.1) -> 10.0 = 2*fmin
Or first shifted by -1 then by -2:
-> round(101.1) -> 110.0 = 6*fmin
-> round(1.1) -> 10.0 = 2*fmin
A naive implementation that split the shift uncarefully might fail to handle such case correctly."
| f |
f := 2r1011 asFloat.
"scan the whole range of possible exponents for this significand"
Float fmin exponent + f exponent to: Float fmax exponent - f exponent
do:
[:exp |
| g |
g := f timesTwoPower: exp.
+ 			self assert: (g timesTwoPower: Float fmin exponent - g exponent) = Float fmin].!
- 			self assert: (g timesTwoPower: Float fmin exponent - g exponent) = Float fmin].
-
- 	"Forces a failure for 5.2 release. The test result seems to depend on the word size of the VM --pre"
- 	self assert: false. !

```