[squeak-dev] The Trunk: KernelTests-nice.438.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Nov 24 11:56:40 UTC 2022

Nicolas Cellier uploaded a new version of KernelTests to project The Trunk:

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

Name: KernelTests-nice.438
Author: nice
Time: 24 November 2022, 12:56:33.877687 pm
UUID: 21319d21-b5a9-1342-b984-31b767a2cafc
Ancestors: KernelTests-ct.437

Document SqNumberParser behavior when an exponent is provided without a fraction part.

For example 1e5 or 1e-4.

Uncover a bug: failure to round to nearest Float for large negative exponent.
Because (10 raisedToInteger: exp) isAnExactFloat is false for any exp abs > 22, we shall not recompose the float as integerPart * (base asFloat raisedTo: exponent), that's potentially two inexact operations in a row, and a chance of incorrect rounding.

=============== Diff against KernelTests-ct.437 ===============

Item was added:
+ ----- Method: SqNumberParserTest>>testIntegerWithNegativeExponent (in category 'tests - Integer') -----
+ testIntegerWithNegativeExponent
+ 	self assert: (SqNumberParser parse: '1200e-2') isInteger.
+ 	self assert: 12 equals: (SqNumberParser parse: '1200e-2').
+ 	self assert: (SqNumberParser parse: '1200e-3') isFloat.
+ 	self assert: 1.2 equals: (SqNumberParser parse: '1200e-3').
+ 	"This may fail if using 25 * (10.0 raisedTo: -108)"
+ 	self assert: 25.0e-108 equals: (SqNumberParser parse: '25e-108').!

Item was added:
+ ----- Method: SqNumberParserTest>>testIntegerWithPositiveExponent (in category 'tests - Integer') -----
+ testIntegerWithPositiveExponent
+ 	self assert: (SqNumberParser parse: '12e3') isInteger.
+ 	self assert: 1200 equals: (SqNumberParser parse: '12e3').!

More information about the Squeak-dev mailing list