--- a/Float.st Wed Jun 25 11:52:24 2014 +0200
+++ b/Float.st Wed Jun 25 14:20:31 2014 +0200
@@ -191,21 +191,18 @@
In contrast to ShortFloats (32bit) and LongFloats (>=64bit).
WARNING:
- The layout of Float instances is known by the runtime system and the compiler;
- you may not add instance variables here.
- Also, subclassing is complicated by the fact, that the VM creates floats/shortFloats,
- and does some float-checks by an identity compare with the Float-class.
- (i.e. your subclasses instances may not be recognized as float-like objects,
- thus mixed mode arithmetic will always coerce them, effectively slowing things down).
+ The layout of Float instances is known by the runtime system and the compiler;
+ you may not add instance variables here.
+ Also, subclassing is complicated by the fact, that the VM creates floats/shortFloats,
+ and does some float-checks by an identity compare with the Float-class.
+ (i.e. your subclasses instances may not be recognized as float-like objects,
+ thus mixed mode arithmetic will always coerce them, effectively slowing things down).
Notice, that Floats are defined as Byte-array to prevent the garbage collector
from going into the value ... otherwise I needed a special case in many places.
- Also notice, that ST/X Floats are what Doubles are in ST-80 - this may change
- in one of the next versions (at least on machines, which provide different float
- and double types in their C-compiler).
- The reason for doing this was to be compatible to both Digitalk, Squeak AND ParcPlace smalltalk
- implementations
+ Also notice, that ST/X Floats are what Doubles are in ST-80. The reason for doing this
+ was to be compatible to both Digitalk, Squeak AND ParcPlace smalltalk implementations
(ParcPlace uses a 4-byte Float and an 8-byte Double class, in contrast to
Digitalk and Squeak, which have an 8-byte Float class).
Thus, by providing an 8-byte Float class, code would not loose precicion
@@ -214,29 +211,29 @@
instances.
Mixed mode arithmetic:
- float op float -> float
- float op fix -> float
- float op fraction -> float
- float op integer -> float
- float op shortFloat -> float
- float op longFloat -> longFloat
- float op complex -> complex
+ float op float -> float
+ float op fix -> float
+ float op fraction -> float
+ float op integer -> float
+ float op shortFloat -> float
+ float op longFloat -> longFloat
+ float op complex -> complex
Representation:
- 64bit double precision IEE floats
- 53 bit mantissa,
- 11 bit exponent,
- 15 decimal digits (approx)
+ 64bit double precision IEE floats
+ 53 bit mantissa,
+ 11 bit exponent,
+ 15 decimal digits (approx)
Range and Precision of Storage Formats: see LimitedPrecisionReal >> documentation
[author:]
- Claus Gittinger
+ Claus Gittinger
[see also:]
- Number
- ShortFloat LongFloat Fraction FixedPoint Integer Complex
- FloatArray DoubleArray
+ Number
+ ShortFloat LongFloat Fraction FixedPoint Integer Complex
+ FloatArray DoubleArray
"
!
@@ -2891,11 +2888,11 @@
!Float class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.197 2014-05-14 15:01:05 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.198 2014-06-25 12:20:31 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.197 2014-05-14 15:01:05 stefan Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/Float.st,v 1.198 2014-06-25 12:20:31 stefan Exp $'
! !