--- a/Float.st Mon Mar 14 08:45:36 2016 +0000
+++ b/Float.st Tue Mar 15 07:14:51 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
"
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
@@ -18,7 +16,7 @@
LimitedPrecisionReal variableByteSubclass:#Float
instanceVariableNames:''
classVariableNames:'DefaultPrintFormat Pi E Halfpi HalfpiNegative Twopi
- RadiansPerDegree Ln2 Ln10 Sqrt2 Epsilon'
+ RadiansPerDegree Ln2 Ln10 Sqrt2 Epsilon MaxSmallInteger'
poolDictionaries:''
category:'Magnitude-Numbers'
!
@@ -409,6 +407,33 @@
"
!
+fromInteger:anInteger
+ "return a new float, given an integer value"
+
+%{ /* NOCONTEXT */
+#ifdef __SCHTEAM__
+ if (anInteger.isSmallInteger()) {
+ return __c__._RETURN( STDouble._new( (double)(anInteger.longValue()) ));
+ }
+#else
+ OBJ newFloat;
+
+ if (__isSmallInteger(anInteger)) {
+ double f = (double)__smallIntegerVal(anInteger);
+ __qMKFLOAT(newFloat, f); /* OBJECT ALLOCATION */
+ RETURN (newFloat);
+ }
+#endif /* not SCHTEAM */
+%}.
+ ^ super fromInteger:anInteger
+
+ "
+ Float fromInteger:123
+ Float fromInteger:(100 factorial)
+ (100 factorial) asFloat
+ "
+!
+
fromNumber:aNumber
^aNumber asFloat
!
@@ -577,17 +602,18 @@
initialize
Pi isNil ifTrue:[
- DefaultPrintFormat := '.15'. "/ print 15 valid digits
- Pi := 3.14159265358979323846264338327950288419716939937510582097494459.
- Halfpi := Pi / 2.0.
- HalfpiNegative := Halfpi negated.
- Twopi := Pi * 2.0.
- E := 2.7182818284590452353602874713526625.
- Sqrt2 := 1.41421356237309504880168872420969808.
- RadiansPerDegree := Pi / 180.0.
- Ln2 := 0.69314718055994530941723212145817657.
- Ln10 := 10.0 ln.
- Epsilon := self computeEpsilon.
+ DefaultPrintFormat := '.15'. "/ print 15 valid digits
+ Pi := 3.14159265358979323846264338327950288419716939937510582097494459.
+ Halfpi := Pi / 2.0.
+ HalfpiNegative := Halfpi negated.
+ Twopi := Pi * 2.0.
+ E := 2.7182818284590452353602874713526625.
+ Sqrt2 := 1.41421356237309504880168872420969808.
+ RadiansPerDegree := Pi / 180.0.
+ Ln2 := 0.69314718055994530941723212145817657.
+ Ln10 := 10.0 ln.
+ Epsilon := self computeEpsilon.
+ MaxSmallInteger := super maxSmallInteger.
].
"
@@ -671,6 +697,10 @@
"Created: / 07-06-2007 / 21:11:55 / cg"
!
+maxSmallInteger
+ ^ MaxSmallInteger
+!
+
pi
"return the constant pi as Float"
@@ -745,6 +775,7 @@
"
! !
+
!Float class methodsFor:'queries'!
exponentCharacter
@@ -810,6 +841,7 @@
^ 2 "must be careful here, whenever ST/X is used on VAX or a 370"
! !
+
!Float methodsFor:'arithmetic'!
* aNumber
@@ -2326,6 +2358,7 @@
"
! !
+
!Float methodsFor:'testing'!
isFinite