--- a/RegressionTests__LargeFloatTest.st Tue Oct 10 16:02:32 2017 +0200
+++ b/RegressionTests__LargeFloatTest.st Tue Oct 10 16:02:47 2017 +0200
@@ -157,6 +157,8 @@
"
self basicNew test03_Conversion
"
+
+ "Modified: / 10-10-2017 / 15:27:24 / cg"
!
test04_Arithmetic
@@ -214,6 +216,45 @@
"
!
+test04b_Division
+ |epsilon|
+
+"/ self assert:( 1.0 asLargeFloat / 1.0 ) class == LargeFloat.
+"/ self assert:( 1.0 asLargeFloat / 1.0 asShortFloat ) class == LargeFloat.
+"/ self assert:( 1.0 asLargeFloat / 1.0 asFloat ) class == LargeFloat.
+"/ self assert:( 1.0 asLargeFloat / 1 ) class == LargeFloat.
+"/
+"/ self assert:( 1.0 asLargeFloat / 1.0 asLargeFloat) = 1.0 asLargeFloat.
+"/ self assert:( 1.0 asLargeFloat / 2.0 asLargeFloat) = 0.5 asLargeFloat.
+"/ self assert:( 3.0 asLargeFloat / 2.0 asLargeFloat) = (3/2) asLargeFloat.
+
+ self assert:( 0.25 asLargeFloat / 2.0 asLargeFloat) = 0.125 asLargeFloat.
+
+ self assert:( 1.0 asLargeFloat / 2.0 asLargeFloat) = 0.5 asLargeFloat.
+ self assert:( 1.0 asLargeFloat / 4.0 asLargeFloat) = 0.25 asLargeFloat.
+ self assert:( 1.0 asLargeFloat / 8.0 asLargeFloat) = 0.125 asLargeFloat.
+
+ "/ the precision of a largeInteger is the precision of its origin
+ epsilon := 1.0 asLargeFloat epsilon.
+
+ self assert:(( 1.0 asLargeFloat / 5.0 asLargeFloat) isAlmostEqualTo:0.2 withError:epsilon).
+ self assert:(( 1.0 asLargeFloat / 10.0 asLargeFloat) isAlmostEqualTo:0.1 withError:epsilon).
+
+ "/ the precision of a largeInteger is the precision of its origin
+ epsilon := 1.0 / (2 raisedTo:(LargeFloat defaultPrecision - 1)).
+ epsilon := 0.00000000000000001. "/ -- fails
+ epsilon := 0.0000000000000001.
+
+ self assert:(( 1 asLargeFloat / 5 asLargeFloat) isAlmostEqualTo:0.2 withError:epsilon).
+ self assert:(( 1 asLargeFloat / 10 asLargeFloat) isAlmostEqualTo:0.1 withError:epsilon).
+
+ "
+ self basicNew test04b_Division
+ "
+
+ "Created: / 10-10-2017 / 15:13:28 / cg"
+!
+
test05_Comparing
self assert:( 2.0 asLargeFloat = 2 ).
self assert:( 2.0 asLargeFloat = 2.0 asShortFloat ).
@@ -251,9 +292,44 @@
self assert:( 200000000000000000000 <= 200001000000000000000.0 asLargeFloat ).
self assert:( 200000000000000000000 <= 200000000000000000000.0 asLargeFloat ).
+ 1 to:1000 do:[:a |
+ 0 to:a-1 do:[:b |
+ |fA fB|
+
+ self assert:(b < a).
+ self assert:(b <= a).
+ self assert:(a > b).
+ self assert:(a >= b).
+ self assert:(a ~= b).
+ self assert:(a = b) not.
+
+ fA := a asLargeFloat.
+ fB := b asLargeFloat.
+ self assert:(fB < fA).
+ self assert:(fB <= fA).
+ self assert:(fA > fB).
+ self assert:(fA >= fB).
+ self assert:(fA ~= fB).
+ self assert:(fA = fB) not.
+ ].
+ ].
+
+ 1 asLargeFloat to:1000 asLargeFloat do:[:fA |
+ 0 asLargeFloat to:fA-1 do:[:fB |
+ self assert:(fB < fA).
+ self assert:(fB <= fA).
+ self assert:(fA > fB).
+ self assert:(fA >= fB).
+ self assert:(fA ~= fB).
+ self assert:(fA = fB) not.
+ ].
+ ].
+
"
self basicNew test05_Comparing
"
+
+ "Modified (format): / 10-10-2017 / 15:20:37 / cg"
!
test06_MiscMath
@@ -400,20 +476,41 @@
!
test08_Representation
-"/ self assert:( 0.0 asLargeFloat exponent = 0 ).
-"/ self assert:( 1.0 asLargeFloat exponent = 0 "1" ).
-"/ self assert:( 2.0 asLargeFloat exponent = 1 "2" ).
-"/ self assert:( 3.0 asLargeFloat exponent = 2 ).
-"/ self assert:( 4.0 asLargeFloat exponent = 3 ).
-"/ self assert:( 0.5 asLargeFloat exponent = 0 ).
-"/ self assert:( 0.4 asLargeFloat exponent = -1 ).
-"/ self assert:( 0.25 asLargeFloat exponent = -1 ).
-"/ self assert:( 0.125 asLargeFloat exponent = -2 ).
-"/ self assert:( 0.00000011111 asLargeFloat exponent = -23 ).
+ self assert:( LargeFloat new
+ mantissa:1 exponent:1) printString = '2.0'.
+
+ self assert:( 0.0 asLargeFloat mantissa == 0).
+ self assert:( 0.0 asLargeFloat exponent == 0).
+
+ self assert:( 1.0 asLargeFloat mantissa == 1).
+ self assert:( 1.0 asLargeFloat exponent == 0).
+
+ self assert:( 2.0 asLargeFloat mantissa == 1).
+ self assert:( 2.0 asLargeFloat exponent == 1).
+
+ self assert:( 4.0 asLargeFloat mantissa == 1).
+ self assert:( 4.0 asLargeFloat exponent == 2).
+
+ self assert:( 5.0 asLargeFloat mantissa == 5).
+ self assert:( 5.0 asLargeFloat exponent == 0).
+
+ self assert:( 7.0 asLargeFloat mantissa == 7).
+ self assert:( 7.0 asLargeFloat exponent == 0).
+
+ self assert:( 14.0 asLargeFloat mantissa == 7).
+ self assert:( 14.0 asLargeFloat exponent == 1).
+
+ self assert:( 0.5 asLargeFloat mantissa == 1).
+ self assert:( 0.5 asLargeFloat exponent == -1).
+
+ self assert:( 0.25 asLargeFloat mantissa == 1).
+ self assert:( 0.25 asLargeFloat exponent == -2).
"
self basicNew test08_Representation
"
+
+ "Modified (format): / 10-10-2017 / 15:28:08 / cg"
!
test09_Testing