[squeak-dev] The Trunk: Kernel-fbs.699.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Jun 11 20:16:43 UTC 2012


Frank Shearar uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-fbs.699.mcz

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

Name: Kernel-fbs.699
Author: fbs
Time: 11 June 2012, 9:15:23.072 pm
UUID: 82d9060f-aaf6-4a84-934f-c7bcdd053e56
Ancestors: Kernel-fbs.698, Kernel-nice.695

Remerge Kernel-nice.695:

Provides a new version of significandAsInteger that relies on regular Float arithmetic and regular asInteger conversion.
In case of exceptional values, use the old behaviour, that is directly extract the bit pattern, but without implied one at position 53.
Marginally faster than old version - sorry, not significantly.

=============== Diff against Kernel-fbs.698 ===============

Item was changed:
  ----- Method: Float>>significandAsInteger (in category 'truncation and round off') -----
  significandAsInteger
+ 	"Answer the mantissa of a Float shifted so as to have the ulp equal to 1.
+ 	For exceptional values, infinity and nan, just answer the bit pattern."
  
+ 	self isFinite ifTrue:
+ 		[^(self timesTwoPower: self class precision - 1 - (self exponent max: self class emin)) truncated abs].
+ 	^(((self basicAt: 1) bitAnd: 16r000FFFFF) bitShift: 32) bitOr: (self basicAt: 2)!
- 	| exp sig |
- 	exp := self exponent.
- 	sig := (((self at: 1) bitAnd: 16r000FFFFF) bitShift: 32) bitOr: (self at: 2).
- 	(exp > -1023 and: [self ~= 0.0])
- 		ifTrue: [sig := sig bitOr: (1 bitShift: 52)].
- 	^ sig.!



More information about the Squeak-dev mailing list