class: LimitedPrecisionReal
authorStefan Vogel <sv@exept.de>
Fri, 24 Apr 2015 14:10:09 +0200
changeset 18281 01a58214d842
parent 18280 5710a93b9ffa
child 18282 bf9c9049c781
class: LimitedPrecisionReal changed: #NaN - optimze #asTrueFraction - same behavior as Float
LimitedPrecisionReal.st
--- a/LimitedPrecisionReal.st	Fri Apr 24 10:19:46 2015 +0200
+++ b/LimitedPrecisionReal.st	Fri Apr 24 14:10:09 2015 +0200
@@ -359,7 +359,10 @@
 NaN
     "return the constant NaN (not a Number)."
 
-    ^ self zero uncheckedDivide:self zero
+    |zero|
+
+    zero := self zero.
+    ^ zero uncheckedDivide:zero.
 
     "
       ShortFloat NaN  
@@ -928,13 +931,13 @@
      biasExponent numIntegerBits|
 
     self isFinite ifFalse:[
-"/        ^ self asMetaNumber
-        ^ self class
-            raise:#domainErrorSignal
-            receiver:self
-            selector:#asTrueFraction
-            arguments:#()
-            errorString:'Cannot represent non-finite float as a fraction'.
+        ^ self asMetaNumber
+"/        ^ self class
+"/            raise:#domainErrorSignal
+"/            receiver:self
+"/            selector:#asTrueFraction
+"/            arguments:#()
+"/            errorString:'Cannot represent non-finite float as a fraction'.
     ].
 
     "Extract the bits of an IEEE anySize float "
@@ -1004,9 +1007,9 @@
      -0.25 asTrueFraction    
      3e37 asTrueFraction     
 
-     Float NaN asTrueFraction               -> error
-     Float infinity asTrueFraction          -> error
-     Float negativeInfinity asTrueFraction  -> error
+     LongFloat NaN asTrueFraction              
+     LongFloat infinity asTrueFraction          
+     LongFloat negativeInfinity asTrueFraction 
     "
 !
 
@@ -1168,6 +1171,7 @@
 ! !
 
 
+
 !LimitedPrecisionReal methodsFor:'printing & storing'!
 
 printOn:aStream
@@ -1238,6 +1242,7 @@
    ^ 0
 ! !
 
+
 !LimitedPrecisionReal methodsFor:'testing'!
 
 isFinite
@@ -1381,11 +1386,11 @@
 !LimitedPrecisionReal class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.84 2015-03-25 17:56:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.85 2015-04-24 12:10:09 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.84 2015-03-25 17:56:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LimitedPrecisionReal.st,v 1.85 2015-04-24 12:10:09 stefan Exp $'
 ! !