class: LimitedPrecisionReal
changed:
#NaN - optimze
#asTrueFraction - same behavior as Float
--- 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 $'
! !