Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-nice.1295.mcz==================== Summary ====================
Name: Kernel-nice.1295
Author: nice
Time: 17 February 2020, 6:59:12.589583 pm
UUID: 7b8c61b2-fd1d-473e-9536-57f78a6ec152
Ancestors: Kernel-tonyg.1293
Fast-up isAnExactFloat.
Correct a typo in a comment.
=============== Diff against Kernel-tonyg.1293 ===============
Item was changed:
----- Method: Integer>>isAnExactFloat (in category 'testing') -----
isAnExactFloat
"Answer true if this Integer can be converted exactly to a Float"
| h |
(h := self highBitOfMagnitude) <= Float precision
ifTrue: [^ true].
^ h - 1 <= Float emax
+ and: [(self anyBitOfMagnitudeFrom: 1 to: h - Float precision) not]!
- and: [h - self abs lowBit < Float precision]!
Item was changed:
----- Method: NumberParser>>makeFloatFromMantissa:exponent:base: (in category 'parsing-private') -----
makeFloatFromMantissa: m exponent: k base: aRadix
+ "Convert infinite precision arithmetic into limited precision Floating point.
+ This algorithm rely on correct IEEE rounding mode
- "Convert infinite precision arithmetic into Floating point.
- This alogrithm rely on correct IEEE rounding mode
being implemented in Integer>>asFloat and Fraction>>asFloat"
k = 0 ifTrue: [ ^m asFloat ].
k > 0 ifTrue: [ ^(m * (aRadix raisedToInteger: k)) asFloat ].
^(Fraction numerator: m denominator: (aRadix raisedToInteger: k negated)) asFloat!