RegressionTests__LargeFloatTest.st
changeset 1752 5c7c27613afe
parent 1720 56c09596d753
child 1775 68746cad01d9
--- 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