Nicolas Cellier uploaded a new version of KernelTests to project The Trunk:
http://source.squeak.org/trunk/KernelTests-nice.287.mcz==================== Summary ====================
Name: KernelTests-nice.287
Author: nice
Time: 12 February 2015, 2:54:16.228 am
UUID: 1840fdc4-1888-4577-8c05-804aee4bdd99
Ancestors: KernelTests-mt.286
Put some higher expectations from #timesTwoPower: fallback code than it can currently handle.
Some of these test will start failing when the primitive is disabled.
Some will fail immediately.
=============== Diff against KernelTests-mt.286 ===============
Item was added:
+ ----- Method: FloatTest>>testTimesTwoPowerGradualUnderflow (in category 'testing - arithmetic') -----
+ testTimesTwoPowerGradualUnderflow
+ "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.
+ A naive implementation might fail to handle such case correctly."
+ | f |
+ f := 3.0 reciprocal predecessor predecessor predecessor.
+ self deny: ((f timesTwoPower: Float emin) timesTwoPower: -3) = (f timesTwoPower: Float emin - 3)!
Item was added:
+ ----- Method: FloatTest>>testTimesTwoPowerOverflow (in category 'testing - arithmetic') -----
+ testTimesTwoPowerOverflow
+ self assert: (Float fminNormalized timesTwoPower: Float emax - Float emin) equals: (2.0 raisedTo: Float emax).
+ self assert: (Float zero timesTwoPower: SmallInteger maxVal squared) equals: Float zero.
+ !
Item was added:
+ ----- Method: FloatTest>>testTimesTwoPowerUnderflow (in category 'testing - arithmetic') -----
+ testTimesTwoPowerUnderflow
+ self assert: ((2.0 raisedTo: Float emax) timesTwoPower: Float emin - Float emax) equals: Float fminNormalized.
+ self assert: (Float infinity timesTwoPower: SmallInteger minVal * SmallInteger maxVal) equals: Float infinity.
+ !