Merged the decimal-branch (revisions 54886 to 58140). Decimal is now
fully updated to the latests Decimal Specification (v1.66) and the
latests test cases (v2.56).

Thanks to Mark Dickinson for all his help during this process.
diff --git a/Lib/test/decimaltestdata/divide.decTest b/Lib/test/decimaltestdata/divide.decTest
index 437d82a..1cb82b4 100644
--- a/Lib/test/decimaltestdata/divide.decTest
+++ b/Lib/test/decimaltestdata/divide.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- divide.decTest -- decimal division                                 --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- Copyright (c) IBM Corporation, 1981, 2007.  All rights reserved.   --
 ------------------------------------------------------------------------
 -- Please see the document "General Decimal Arithmetic Testcases"     --
 -- at http://www2.hursley.ibm.com/decimal for the description of      --
@@ -17,7 +17,7 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.56
 
 extended:    1
 precision:   9
@@ -47,41 +47,45 @@
 divx018 divide  2.    2    ->  1
 divx019 divide  20    20   ->  1
 
-divx020 divide  187   187  ->  1
-divx021 divide  5     2    ->  2.5
-divx022 divide  5     2.0    ->  2.5
-divx023 divide  5     2.000  ->  2.5
-divx024 divide  5     0.20   ->  25
-divx025 divide  5     0.200  ->  25
-divx026 divide  10    1      ->  10
-divx027 divide  100   1      ->  100
-divx028 divide  1000  1      ->  1000
-divx029 divide  1000  100    ->  10
+divx020 divide  187   187    ->  1
+divx021 divide  5     2      ->  2.5
+divx022 divide  50    20     ->  2.5
+divx023 divide  500   200    ->  2.5
+divx024 divide  50.0  20.0   ->  2.5
+divx025 divide  5.00  2.00   ->  2.5
+divx026 divide  5     2.0    ->  2.5
+divx027 divide  5     2.000  ->  2.5
+divx028 divide  5     0.20   ->  25
+divx029 divide  5     0.200  ->  25
+divx030 divide  10    1      ->  10
+divx031 divide  100   1      ->  100
+divx032 divide  1000  1      ->  1000
+divx033 divide  1000  100    ->  10
 
-divx030 divide  1     2      ->  0.5
-divx031 divide  1     4      ->  0.25
-divx032 divide  1     8      ->  0.125
-divx033 divide  1     16     ->  0.0625
-divx034 divide  1     32     ->  0.03125
-divx035 divide  1     64     ->  0.015625
-divx040 divide  1    -2      ->  -0.5
-divx041 divide  1    -4      ->  -0.25
-divx042 divide  1    -8      ->  -0.125
-divx043 divide  1    -16     ->  -0.0625
-divx044 divide  1    -32     ->  -0.03125
-divx045 divide  1    -64     ->  -0.015625
-divx050 divide -1     2      ->  -0.5
-divx051 divide -1     4      ->  -0.25
-divx052 divide -1     8      ->  -0.125
-divx053 divide -1     16     ->  -0.0625
-divx054 divide -1     32     ->  -0.03125
-divx055 divide -1     64     ->  -0.015625
-divx060 divide -1    -2      ->  0.5
-divx061 divide -1    -4      ->  0.25
-divx062 divide -1    -8      ->  0.125
-divx063 divide -1    -16     ->  0.0625
-divx064 divide -1    -32     ->  0.03125
-divx065 divide -1    -64     ->  0.015625
+divx035 divide  1     2      ->  0.5
+divx036 divide  1     4      ->  0.25
+divx037 divide  1     8      ->  0.125
+divx038 divide  1     16     ->  0.0625
+divx039 divide  1     32     ->  0.03125
+divx040 divide  1     64     ->  0.015625
+divx041 divide  1    -2      ->  -0.5
+divx042 divide  1    -4      ->  -0.25
+divx043 divide  1    -8      ->  -0.125
+divx044 divide  1    -16     ->  -0.0625
+divx045 divide  1    -32     ->  -0.03125
+divx046 divide  1    -64     ->  -0.015625
+divx047 divide -1     2      ->  -0.5
+divx048 divide -1     4      ->  -0.25
+divx049 divide -1     8      ->  -0.125
+divx050 divide -1     16     ->  -0.0625
+divx051 divide -1     32     ->  -0.03125
+divx052 divide -1     64     ->  -0.015625
+divx053 divide -1    -2      ->  0.5
+divx054 divide -1    -4      ->  0.25
+divx055 divide -1    -8      ->  0.125
+divx056 divide -1    -16     ->  0.0625
+divx057 divide -1    -32     ->  0.03125
+divx058 divide -1    -64     ->  0.015625
 
 divx070 divide  999999999        1    ->  999999999
 divx071 divide  999999999.4      1    ->  999999999 Inexact Rounded
@@ -763,9 +767,9 @@
 divx964 divide 1e-600000000 1e+400000005 -> 1E-1000000005 Subnormal
 divx965 divide 1e-600000000 1e+400000006 -> 1E-1000000006 Subnormal
 divx966 divide 1e-600000000 1e+400000007 -> 1E-1000000007 Subnormal
-divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
+divx967 divide 1e-600000000 1e+400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx968 divide 1e-600000000 1e+400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx969 divide 1e-600000000 1e+400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 -- [no equivalent of 'subnormal' for overflow]
 divx970 divide 1e+600000000 1e-400000001 -> Infinity Overflow Inexact Rounded
 divx971 divide 1e+600000000 1e-400000002 -> Infinity Overflow Inexact Rounded
@@ -779,10 +783,10 @@
 divx979 divide 1e+600000000 1e-400000010 -> Infinity Overflow Inexact Rounded
 
 -- Sign after overflow and underflow
-divx980 divide  1e-600000000  1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
-divx981 divide  1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-divx982 divide -1e-600000000  1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
-divx983 divide -1e-600000000 -1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
+divx980 divide  1e-600000000  1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx981 divide  1e-600000000 -1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx982 divide -1e-600000000  1e+400000009 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
+divx983 divide -1e-600000000 -1e+400000009 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
 divx984 divide  1e+600000000  1e-400000009 ->  Infinity Overflow Inexact Rounded
 divx985 divide  1e+600000000 -1e-400000009 -> -Infinity Overflow Inexact Rounded
 divx986 divide -1e+600000000  1e-400000009 -> -Infinity Overflow Inexact Rounded
@@ -812,6 +816,38 @@
 --   1.465811965811965811965811965811965811966E+7000
 divx1010 divide 343E6000  234E-1000 -> Infinity Overflow Inexact Rounded
 
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+
+-- Examples from SQL proposal (Krishna Kulkarni)
+precision: 7
+divx1021  divide 1E0          1E0 -> 1
+divx1022  divide 1E0          2E0 -> 0.5
+divx1023  divide 1E0          3E0 -> 0.3333333 Inexact Rounded
+divx1024  divide 100E-2   1000E-3 -> 1
+divx1025  divide 24E-1        2E0 -> 1.2
+divx1026  divide 2400E-3      2E0 -> 1.200
+divx1027  divide 5E0          2E0 -> 2.5
+divx1028  divide 5E0        20E-1 -> 2.5
+divx1029  divide 5E0      2000E-3 -> 2.5
+divx1030  divide 5E0         2E-1 -> 25
+divx1031  divide 5E0        20E-2 -> 25
+divx1032  divide 480E-2       3E0 -> 1.60
+divx1033  divide 47E-1        2E0 -> 2.35
+
+-- ECMAScript bad examples
+rounding:    half_down
+precision: 7
+divx1050  divide 5 9  -> 0.5555556 Inexact Rounded
+rounding:    half_even
+divx1051  divide 5 11 -> 0.4545455 Inexact Rounded
+
+-- payload decapitate
+precision: 5
+divx1055  divide   sNaN987654321 1 ->  NaN54321  Invalid_operation
+
 -- Null tests
 divx9998 divide 10  # -> NaN Invalid_operation
 divx9999 divide  # 10 -> NaN Invalid_operation