Merge jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 26 Feb 2016 16:36:47 +0000
branchjv
changeset 1482 2c941c0061fb
parent 1481 66aec2479727
child 1483 8e5a0f125106
Merge
RegressionTests__IntegerTest.st
--- a/RegressionTests__IntegerTest.st	Wed Feb 24 18:31:47 2016 +0000
+++ b/RegressionTests__IntegerTest.st	Fri Feb 26 16:36:47 2016 +0000
@@ -704,6 +704,17 @@
     "Modified: / 31.10.2000 / 20:23:20 / cg"
 !
 
+testBinco
+     self assert: (10 binomialCoefficient:5) = (10 factorial / (5 factorial * 5 factorial)).
+     self assert: (100 binomialCoefficient:78) = (100 factorial / (78 factorial * (100-78) factorial)).
+     self assert: (1000 binomialCoefficient:5) = (1000 factorial / (5 factorial * (1000-5) factorial)).
+     self assert: (10000 binomialCoefficient:78) = (10000 factorial / (78 factorial * (10000-78) factorial)).
+
+    "
+     self basicNew testBinco
+    "
+!
+
 testByteSwap
     "/ <testedMethods: #( (Integer >> #byteSwapped32) (Integer >> #byteSwapped64)) >
 
@@ -1242,18 +1253,21 @@
         16r00FFFFFFFFFFFFFFFF
         16rFFFFFFFFFFFFFFFFFF
     ) do:[:m |
+        Transcript showCR:m.
         nr := 1.
-        1 to:1000 do:[:n |
+        1 to:100 do:[:n |
             nr := nr * m
         ].
-        1 to:1000 do:[:n |
+        1 to:100 do:[:n |
             nr := nr / m
         ].
         self assert:(nr == 1).
     ].
 
     "
-     self new testDivision2
+     self new testDivision3
+     Time millisecondsToRun:[ self new testDivision3 ] 14440
+     MessageTally spyOn:[ self new testDivision3 ] 
     "
 !
 
@@ -1325,6 +1339,22 @@
     self assert:(2 factorial = 2).
     self assert:(10 factorial = 3628800).
     self assert:(11 factorial = 39916800).
+    self assert:(12 factorial = 479001600).
+    self assert:(13 factorial digitBytes = #[0 204 40 115 1]).
+    self assert:(13 factorial = 6227020800).
+    self assert:(14 factorial digitBytes = #[0 40 59 76 20]).
+    self assert:(14 factorial = 87178291200).
+    self assert:(15 factorial digitBytes = #[0 88 119 119 48 1]).
+    self assert:(15 factorial = 1307674368000).
+    self assert:(16 factorial digitBytes = #[0 128 117 119 7 19]).
+    self assert:(16 factorial = 20922789888000).
+    self assert:(17 factorial digitBytes = #[0 128 205 238 126 67 1]).
+    self assert:(17 factorial = 355687428096000).
+    self assert:(18 factorial digitBytes = #[0 0 115 202 236 190 22]).
+    self assert:(18 factorial = 6402373705728000).
+    self assert:(19 factorial digitBytes = #[0 0 137 6 147 43 176 1]).
+    self assert:(19 factorial = 121645100408832000).
+    self assert:(20 factorial digitBytes = #[0 0 180 130 124 103 195 33]).
     self assert:(20 factorial = 2432902008176640000).
     self assert:(50 factorial = 30414093201713378043612608166064768844377641568960512000000000000).
 
@@ -1333,7 +1363,7 @@
     "
 
     "Created: / 24-04-2010 / 13:52:23 / cg"
-    "Modified: / 27-04-2010 / 10:34:22 / cg"
+    "Modified: / 26-02-2016 / 15:43:16 / cg"
 !
 
 testGCD
@@ -1844,11 +1874,11 @@
      and via constructed performs. The reason is to test both inlined
      JIT-compiler code AND the regular methods code."
 
-    |s n1 n2 x|
-
     "Large + Large addition"
     self testReading1.
 
+    self assert:(20 factorial = 2432902008176640000).
+    self assert:(20 factorial printString = '2432902008176640000').
     self assert:((20 factorial + 20 factorial) printString = '4865804016353280000').
     self assert:((20 factorial + 1) printString = '2432902008176640001').
     self assert:((20 factorial + 1000) printString = '2432902008176641000').
@@ -1869,7 +1899,7 @@
      self basicNew testLargeAddition
     "
 
-    "Modified: / 4.6.1999 / 15:26:55 / cg"
+    "Modified: / 26-02-2016 / 15:39:33 / cg"
 !
 
 testLargeAddition1
@@ -2303,16 +2333,16 @@
 
     t := 20 factorial.
     t := t + 21 factorial.
-    t absSubtract:21 factorial.
+    t absDestructiveSubtract:21 factorial.
     self assert:(t compressed = 20 factorial).
 
     self assert:(
-	     [
-	       |v|
-	       v := 100 factorial copy.
-	       v absSubtract:99 factorial.
-	       v compressed = (100 factorial - 99 factorial).
-	     ] value).
+             [
+               |v|
+               v := 100 factorial copy.
+               v absDestructiveSubtract:99 factorial.
+               v compressed = (100 factorial - 99 factorial).
+             ] value).
 
     "Large // Large division"
     self assert:((20 factorial // 19 factorial) == 20).
@@ -2438,7 +2468,7 @@
 
     t := 30 factorial.
     t := t + 31 factorial.
-    t absSubtract:31 factorial.
+    t absDestructiveSubtract:31 factorial.
     self assert:(t compressed = 30 factorial).
 
     "Large // Large division"
@@ -2477,6 +2507,124 @@
     "
 !
 
+testLargeDivision4
+    self assert:(9000000000 \\ 4000000000)    = (900 \\ 400 * 10000000).
+    self assert:(-9000000000 \\ 4000000000)   = (-900 \\ 400 * 10000000).
+    self assert:(9000000000 \\ -4000000000)   = (900 \\ -400 * 10000000).
+    self assert:(-9000000000 \\ -4000000000)  = (-900 \\ -400 * 10000000).
+    self assert:(16000000000 \\ 4000000000)   = (1600 \\ 400 * 10000000).
+    self assert:(-16000000000 \\ 4000000000)  = (-1600 \\ 400 * 10000000).
+    self assert:(16000000000 \\ -4000000000)  = (1600 \\ -400 * 10000000).
+    self assert:(-16000000000 \\ -4000000000) = (-1600 \\ -400 * 10000000).
+
+    self assert:(9000000000000000000 \\ 4000000000000000000)    = (900 \\ 400 * 10000000000000000).
+    self assert:(-9000000000000000000 \\ 4000000000000000000)   = (-900 \\ 400 * 10000000000000000).
+    self assert:(9000000000000000000 \\ -4000000000000000000)   = (900 \\ -400 * 10000000000000000).
+    self assert:(-9000000000000000000 \\ -4000000000000000000)  = (-900 \\ -400 * 10000000000000000).
+    self assert:(16000000000000000000 \\ 4000000000000000000)   = (1600 \\ 400 * 10000000000000000).
+    self assert:(-16000000000000000000 \\ 4000000000000000000)  = (-1600 \\ 400 * 10000000000000000).
+    self assert:(16000000000000000000 \\ -4000000000000000000)  = (1600 \\ -400 * 10000000000000000).
+    self assert:(-16000000000000000000 \\ -4000000000000000000) = (-1600 \\ -400 * 10000000000000000).
+
+    self assert:(9000000000 \\ 7) = 5.
+    self assert:(-9000000000 \\ 7) = 2.
+    self assert:(9000000000 \\ -7) = -2.
+    self assert:(-9000000000 \\ -7) = -5.
+
+    self assert:(900 rem: 400) = 100.
+    self assert:(-900 rem: 400) = -100.
+    self assert:(900 rem: -400) = 100.
+    self assert:(-900 rem: -400) = -100.
+
+    self assert:(9000000000 rem: 4000000000) = 1000000000.
+    self assert:(-9000000000 rem: 4000000000) = -1000000000.
+    self assert:(9000000000 rem: -4000000000) = 1000000000.
+    self assert:(-9000000000 rem: -4000000000) = -1000000000.
+    
+    "
+     self basicNew testLargeDivision4
+    "
+!
+
+testLargeDivision5
+    self assert:(9000000000 quo: 4000000000)    = ((900 quo: 400) ).
+    self assert:(-9000000000 quo: 4000000000)   = ((-900 quo: 400) ).
+    self assert:(9000000000 quo: -4000000000)   = ((900 quo: -400) ).
+    self assert:(-9000000000 quo: -4000000000)  = ((-900 quo: -400) ).
+    self assert:(16000000000 quo: 4000000000)   = ((1600 quo: 400) ).
+    self assert:(-16000000000 quo: 4000000000)  = ((-1600 quo: 400) ).
+    self assert:(16000000000 quo: -4000000000)  = ((1600 quo: -400) ).
+    self assert:(-16000000000 quo: -4000000000) = ((-1600 quo: -400) ).
+
+    self assert:(9000000000000000000 quo: 4000000000000000000)    = ((900 quo: 400) ).
+    self assert:(-9000000000000000000 quo: 4000000000000000000)   = ((-900 quo: 400) ).
+    self assert:(9000000000000000000 quo: -4000000000000000000)   = ((900 quo: -400) ).
+    self assert:(-9000000000000000000 quo: -4000000000000000000)  = ((-900 quo: -400) ).
+    self assert:(16000000000000000000 quo: 4000000000000000000)   = ((1600 quo: 400) ).
+    self assert:(-16000000000000000000 quo: 4000000000000000000)  = ((-1600 quo: 400) ).
+    self assert:(16000000000000000000 quo: -4000000000000000000)  = ((1600 quo: -400) ).
+    self assert:(-16000000000000000000 quo: -4000000000000000000) = ((-1600 quo: -400) ).
+
+    self assert:(9000000000 quo: 7) = 1285714285.
+    self assert:(-9000000000 quo: 7) = -1285714285.
+    self assert:(9000000000 quo: -7) = -1285714285.
+    self assert:(-9000000000 quo: -7) = 1285714285.
+    
+    "
+     self basicNew testLargeDivision5
+    "
+!
+
+testLargeDivision6
+    |t|
+
+    t := 20 factorial.
+    self assert:(t = 2432902008176640000).
+    t := t / 20.
+    self assert:(t = 19 factorial).
+    self assert:(t = 121645100408832000).
+    
+    t := t / 19.
+    self assert:(t = 18 factorial).
+    self assert:(t = 6402373705728000).
+
+    t := t / 18.
+    self assert:(t = 17 factorial).
+    self assert:(t = 355687428096000).
+
+    t := t / 17.
+    self assert:(t = 16 factorial).
+    self assert:(t = 20922789888000).
+
+    t := t / 16.
+    self assert:(t = 15 factorial).
+    self assert:(t = 1307674368000).
+
+    t := t / 15.
+    self assert:(t = 14 factorial).
+    self assert:(t = 87178291200).
+
+    t := t / 14.
+    self assert:(t = 13 factorial).
+    self assert:(t = 6227020800).
+
+    t := t / 13.
+    self assert:(t = 12 factorial).
+    self assert:(t = 479001600).
+
+    t := t / 12.
+    self assert:(t = 11 factorial).
+    self assert:(t = 39916800).
+
+    t := t / 11.
+    self assert:(t = 10 factorial).
+    self assert:(t = 3628800).
+
+    "
+     self basicNew testLargeDivision6
+    "
+!
+
 testLargeIntegerHelpers
     |t1 t2|
 
@@ -2582,6 +2730,178 @@
     "Modified: / 20.5.1999 / 09:41:19 / cg"
 !
 
+testLargeIntegerHelpers2
+    |t1 r|
+
+    "/ absSubtract:
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r010000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r01000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r0100000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r010000000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r01000000000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r0100000000000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r010000000000000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r00ffffffffffffffffffffffffffffff.
+    self assert:(t1 digitBytes = #[16r01 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == true).
+
+    t1 := LargeInteger digitBytes:#[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r01 ] copy sign:1.
+    r := t1 absDestructiveSubtract:16r01000000000000000000000000000000.
+    self assert:(t1 digitBytes = #[16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 16r00 ]).
+    self assert:(r == false).
+    "
+     self basicNew testLargeIntegerHelpers2
+    "
+!
+
+testLargeIntegerHelpers3
+    "/ absDivMod:
+
+     self assert:(9000000000000000000 absDivMod: 4000) = #(2250000000000000 0).
+     self assert:(-9000000000000000000 absDivMod: 4000) = #(2250000000000000 0).
+     self assert:(9000000000000000000 absDivMod: -4000) = #(2250000000000000 0).
+     self assert:(-9000000000000000000 absDivMod: -4000) = #(2250000000000000 0).
+
+     self assert:(9000000000000000001 absDivMod: 4000) = #(2250000000000000 1).
+     self assert:(-9000000000000000001 absDivMod: 4000) = #(2250000000000000 1).
+     self assert:(9000000000000000001 absDivMod: -4000) = #(2250000000000000 1).
+     self assert:(-9000000000000000001 absDivMod: -4000) = #(2250000000000000 1).
+
+     self assert:(9000000000000000000 absDivMod: 40000) = #(225000000000000 0).
+     self assert:(-9000000000000000000 absDivMod: 40000) = #(225000000000000 0).
+     self assert:(9000000000000000000 absDivMod: -40000) = #(225000000000000 0).
+     self assert:(-9000000000000000000 absDivMod: -40000) = #(225000000000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 400000) = #(22500000000000 0).
+     self assert:(-9000000000000000000 absDivMod: 400000) = #(22500000000000 0).
+     self assert:(9000000000000000000 absDivMod: -400000) = #(22500000000000 0).
+     self assert:(-9000000000000000000 absDivMod: -400000) = #(22500000000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 4000000) = #(2250000000000 0).
+     self assert:(-9000000000000000000 absDivMod: 4000000) = #(2250000000000 0).
+     self assert:(9000000000000000000 absDivMod: -4000000) = #(2250000000000 0).
+     self assert:(-9000000000000000000 absDivMod: -4000000) = #(2250000000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 40000000) = #(225000000000 0).
+     self assert:(-9000000000000000000 absDivMod: 40000000) = #(225000000000 0).
+     self assert:(9000000000000000000 absDivMod: -40000000) = #(225000000000 0).
+     self assert:(-9000000000000000000 absDivMod: -40000000) = #(225000000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 400000000) = #(22500000000 0).
+     self assert:(-9000000000000000000 absDivMod: 400000000) = #(22500000000 0).
+     self assert:(9000000000000000000 absDivMod: -400000000) = #(22500000000 0).
+     self assert:(-9000000000000000000 absDivMod: -400000000) = #(22500000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 4000000000) = #(2250000000 0).
+     self assert:(-9000000000000000000 absDivMod: 4000000000) = #(2250000000 0).
+     self assert:(9000000000000000000 absDivMod: -4000000000) = #(2250000000 0).
+     self assert:(-9000000000000000000 absDivMod: -4000000000) = #(2250000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 40000000000) = #(225000000 0).
+     self assert:(-9000000000000000000 absDivMod: 40000000000) = #(225000000 0).
+     self assert:(9000000000000000000 absDivMod: -40000000000) = #(225000000 0).
+     self assert:(-9000000000000000000 absDivMod: -40000000000) = #(225000000 0).
+
+     self assert:(9000000000000000000 absDivMod: 400000000000) = #(22500000 0).
+     self assert:(-9000000000000000000 absDivMod: 400000000000) = #(22500000 0).
+     self assert:(9000000000000000000 absDivMod: -400000000000) = #(22500000 0).
+     self assert:(-9000000000000000000 absDivMod: -400000000000) = #(22500000 0).
+
+     self assert:(9000000000000000000 absDivMod: 4000000000000) = #(2250000 0).
+     self assert:(-9000000000000000000 absDivMod: 4000000000000) = #(2250000 0).
+     self assert:(9000000000000000000 absDivMod: -4000000000000) = #(2250000 0).
+     self assert:(-9000000000000000000 absDivMod: -4000000000000) = #(2250000 0).
+
+     self assert:(9000000000000000000 absDivMod: 40000000000000) = #(225000 0).
+     self assert:(-9000000000000000000 absDivMod: 40000000000000) = #(225000 0).
+     self assert:(9000000000000000000 absDivMod: -40000000000000) = #(225000 0).
+     self assert:(-9000000000000000000 absDivMod: -40000000000000) = #(225000 0).
+
+     self assert:(9000000000000000000 absDivMod: 400000000000000) = #(22500 0).
+     self assert:(-9000000000000000000 absDivMod: 400000000000000) = #(22500 0).
+     self assert:(9000000000000000000 absDivMod: -400000000000000) = #(22500 0).
+     self assert:(-9000000000000000000 absDivMod: -400000000000000) = #(22500 0).
+
+     self assert:(9000000000000000000 absDivMod: 4000000000000000) = #(2250 0).
+     self assert:(-9000000000000000000 absDivMod: 4000000000000000) = #(2250 0).
+     self assert:(9000000000000000000 absDivMod: -4000000000000000) = #(2250 0).
+     self assert:(-9000000000000000000 absDivMod: -4000000000000000) = #(2250 0).
+
+     self assert:(9000000000000000000 absDivMod: 4000000000000000000) = #(2 1000000000000000000).
+     self assert:(-9000000000000000000 absDivMod: 4000000000000000000) = #(2 1000000000000000000).
+     self assert:(9000000000000000000 absDivMod: -4000000000000000000) = #(2 1000000000000000000).
+     self assert:(-9000000000000000000 absDivMod: -4000000000000000000) = #(2 1000000000000000000).
+
+    "
+     self basicNew testLargeIntegerHelpers3
+    "
+!
+
 testLargeMultiplication
     |t1 t2|