[Python-checkins] python/nondist/sandbox/decimal/tests trim.decTest,NONE,1.1 testall.decTest,NONE,1.1 subtract.decTest,NONE,1.1 squareroot.decTest,NONE,1.1 rounding.decTest,NONE,1.1 rescale.decTest,NONE,1.1 remainderNear.decTest,NONE,1.1 remainder.decTest,NONE,1.1 randoms.decTest,NONE,1.1 randomBound32.decTest,NONE,1.1 power.decTest,NONE,1.1 plus.decTest,NONE,1.1 normalize.decTest,NONE,1.1 multiply.decTest,NONE,1.1 minus.decTest,NONE,1.1 min.decTest,NONE,1.1 max.decTest,NONE,1.1 integer.decTest,NONE,1.1 inexact.decTest,NONE,1.1 divideint.decTest,NONE,1.1 divide.decTest,NONE,1.1 decimal64.decTest,NONE,1.1 compare.decTest,NONE,1.1 clamp.decTest,NONE,1.1 base.decTest,NONE,1.1 add.decTest,NONE,1.1 abs.decTest,NONE,1.1

jhylton@users.sourceforge.net jhylton@users.sourceforge.net
Fri, 02 May 2003 16:07:38 -0700


Update of /cvsroot/python/python/nondist/sandbox/decimal/tests
In directory sc8-pr-cvs1:/tmp/cvs-serv11296/tests

Added Files:
	trim.decTest testall.decTest subtract.decTest 
	squareroot.decTest rounding.decTest rescale.decTest 
	remainderNear.decTest remainder.decTest randoms.decTest 
	randomBound32.decTest power.decTest plus.decTest 
	normalize.decTest multiply.decTest minus.decTest min.decTest 
	max.decTest integer.decTest inexact.decTest divideint.decTest 
	divide.decTest decimal64.decTest compare.decTest clamp.decTest 
	base.decTest add.decTest abs.decTest 
Log Message:
Add tests code from IBM web page,
http://www2.hursley.ibm.com/decimal/


--- NEW FILE: trim.decTest ---
------------------------------------------------------------------------
-- trim.decTest -- remove insignificant trailing zeros                --
-- Copyright (c) IBM Corporation, 2003.  All rights reserved.         --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

trmx001 trim '1'      -> '1'
trmx002 trim '-1'     -> '-1'
trmx003 trim '1.00'   -> '1'
trmx004 trim '-1.00'  -> '-1'
trmx005 trim '0'      -> '0'
trmx006 trim '0.00'   -> '0'
trmx007 trim '00.0'   -> '0'
trmx008 trim '00.00'  -> '0'
trmx009 trim '00'     -> '0'

trmx010 trim '-2'     -> '-2'
trmx011 trim '2'      -> '2'
trmx012 trim '-2.00'  -> '-2'
trmx013 trim '2.00'   -> '2'
trmx014 trim '-0'     -> '-0'
trmx015 trim '-0.00'  -> '-0'
trmx016 trim '-00.0'  -> '-0'
trmx017 trim '-00.00' -> '-0'
trmx018 trim '-00'    -> '-0'
trmx019 trim '0E+5'   -> '0'
trmx020 trim '-0E+1'  -> '-0'

trmx030 trim '+0.1'            -> '0.1'
trmx031 trim '-0.1'            -> '-0.1'
trmx032 trim '+0.01'           -> '0.01'
trmx033 trim '-0.01'           -> '-0.01'
trmx034 trim '+0.001'          -> '0.001'
trmx035 trim '-0.001'          -> '-0.001'
trmx036 trim '+0.000001'       -> '0.000001'
trmx037 trim '-0.000001'       -> '-0.000001'
trmx038 trim '+0.000000000001' -> '1E-12'
trmx039 trim '-0.000000000001' -> '-1E-12'

trmx041 trim 1.1        -> 1.1
trmx042 trim 1.10       -> 1.1
trmx043 trim 1.100      -> 1.1
trmx044 trim 1.110      -> 1.11
trmx045 trim -1.1       -> -1.1
trmx046 trim -1.10      -> -1.1
trmx047 trim -1.100     -> -1.1
trmx048 trim -1.110     -> -1.11
trmx049 trim 9.9        -> 9.9
trmx050 trim 9.90       -> 9.9
trmx051 trim 9.900      -> 9.9
trmx052 trim 9.990      -> 9.99
trmx053 trim -9.9       -> -9.9
trmx054 trim -9.90      -> -9.9
trmx055 trim -9.900     -> -9.9
trmx056 trim -9.990     -> -9.99

-- some insignificant trailing fractional zeros
trmx060 trim  10.0        -> 10
trmx061 trim  10.00       -> 10
trmx062 trim  100.0       -> 100
trmx063 trim  100.00      -> 100
trmx064 trim  1.1000E+3   -> 1100
trmx065 trim  1.10000E+3  -> 1100
trmx066 trim -10.0        -> -10
trmx067 trim -10.00       -> -10
trmx068 trim -100.0       -> -100
trmx069 trim -100.00      -> -100
trmx070 trim -1.1000E+3   -> -1100
trmx071 trim -1.10000E+3  -> -1100

-- some insignificant trailing zeros with positive exponent
trmx080 trim  10E+1       -> 1E+2
trmx081 trim  100E+1      -> 1E+3
trmx082 trim  1.0E+2      -> 1E+2
trmx083 trim  1.0E+3      -> 1E+3
trmx084 trim  1.1E+3      -> 1.1E+3
trmx085 trim  1.00E+3     -> 1E+3
trmx086 trim  1.10E+3     -> 1.1E+3
trmx087 trim -10E+1       -> -1E+2
trmx088 trim -100E+1      -> -1E+3
trmx089 trim -1.0E+2      -> -1E+2
trmx090 trim -1.0E+3      -> -1E+3
trmx091 trim -1.1E+3      -> -1.1E+3
trmx092 trim -1.00E+3     -> -1E+3
trmx093 trim -1.10E+3     -> -1.1E+3

-- some significant trailing zeros
trmx100 trim  11          -> 11
trmx101 trim  10          -> 10
trmx102 trim  10.         -> 10
trmx103 trim  1.1E+1      -> 11
trmx104 trim  1.0E+1      -> 10
trmx105 trim  1.10E+2     -> 110
trmx106 trim  1.00E+2     -> 100
trmx107 trim  1.100E+3    -> 1100
trmx108 trim  1.000E+3    -> 1000
trmx109 trim  1.000000E+6 -> 1000000
trmx110 trim -11          -> -11
trmx111 trim -10          -> -10
trmx112 trim -10.         -> -10
trmx113 trim -1.1E+1      -> -11
trmx114 trim -1.0E+1      -> -10
trmx115 trim -1.10E+2     -> -110
trmx116 trim -1.00E+2     -> -100
trmx117 trim -1.100E+3    -> -1100
trmx118 trim -1.000E+3    -> -1000
trmx119 trim -1.00000E+5  -> -100000
trmx120 trim -1.000000E+6 -> -1000000

-- examples from decArith
trmx140 trim '2.1'     ->  '2.1'
trmx141 trim '-2.0'    ->  '-2'
trmx142 trim '1.200'   ->  '1.2'
trmx143 trim '-120'    ->  '-120'
trmx144 trim '120.00'  ->  '120'
trmx145 trim '0.00'    ->  '0'

-- utilities pass through specials without raising exceptions
trmx320 trim 'Inf'    -> 'Infinity'
trmx321 trim '-Inf'   -> '-Infinity'
trmx322 trim   NaN    ->  NaN
trmx323 trim  sNaN    ->  sNaN

-- Null test
trmx900 trim  # -> NaN Invalid_operation

--- NEW FILE: testall.decTest ---
------------------------------------------------------------------------
-- testall.decTest -- run all general decimal arithmetic testcases    --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- core tests (using Extended: 1) --------------------------------------
dectest: base
dectest: abs
dectest: add
dectest: clamp
dectest: compare
dectest: divide
dectest: divideint
dectest: inexact
dectest: integer
dectest: max
dectest: min
dectest: minus
dectest: multiply
dectest: normalize
dectest: plus
dectest: power
dectest: randoms
dectest: remainder
dectest: remaindernear
dectest: rescale
dectest: rounding
dectest: squareroot
dectest: subtract
dectest: trim

-- The next are for the Strawman 4d concrete representations
dectest: decimal32
dectest: decimal64
dectest: decimal128


-- General 31->33-digit boundary tests
dectest: randomBound32


--- NEW FILE: subtract.decTest ---
------------------------------------------------------------------------
-- subtract.decTest -- decimal subtraction                            --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- [first group are 'quick confidence check']
subx001 subtract  0   0  -> '0'
subx002 subtract  1   1  -> '0'
subx003 subtract  1   2  -> '-1'
subx004 subtract  2   1  -> '1'
subx005 subtract  2   2  -> '0'
subx006 subtract  3   2  -> '1'
subx007 subtract  2   3  -> '-1'

subx011 subtract -0   0  -> '-0'
subx012 subtract -1   1  -> '-2'
subx013 subtract -1   2  -> '-3'
subx014 subtract -2   1  -> '-3'
subx015 subtract -2   2  -> '-4'
subx016 subtract -3   2  -> '-5'
subx017 subtract -2   3  -> '-5'

subx021 subtract  0  -0  -> '0'
subx022 subtract  1  -1  -> '2'
subx023 subtract  1  -2  -> '3'
subx024 subtract  2  -1  -> '3'
subx025 subtract  2  -2  -> '4'
subx026 subtract  3  -2  -> '5'
subx027 subtract  2  -3  -> '5'

subx030 subtract  11  1  -> 10
subx031 subtract  10  1  ->  9
subx032 subtract  9   1  ->  8
subx033 subtract  1   1  ->  0
subx034 subtract  0   1  -> -1
subx035 subtract -1   1  -> -2
subx036 subtract -9   1  -> -10
subx037 subtract -10  1  -> -11
subx038 subtract -11  1  -> -12

subx040 subtract '5.75' '3.3'  -> '2.45'
subx041 subtract '5'    '-3'   -> '8'
subx042 subtract '-5'   '-3'   -> '-2'
subx043 subtract '-7'   '2.5'  -> '-9.5'
subx044 subtract '0.7'  '0.3'  -> '0.4'
subx045 subtract '1.3'  '0.3'  -> '1.0'
subx046 subtract '1.25' '1.25' -> '0.00'

subx050 subtract '1.23456789'    '1.00000000' -> '0.23456789'
subx051 subtract '1.23456789'    '1.00000089' -> '0.23456700'
subx052 subtract '0.5555555559'    '0.0000000001' -> '0.555555556' Inexact Rounded
subx053 subtract '0.5555555559'    '0.0000000005' -> '0.555555555' Inexact Rounded
subx054 subtract '0.4444444444'    '0.1111111111' -> '0.333333333' Inexact Rounded
subx055 subtract '1.0000000000'    '0.00000001' -> '0.999999990' Rounded
subx056 subtract '0.4444444444999'    '0' -> '0.444444444' Inexact Rounded
subx057 subtract '0.4444444445000'    '0' -> '0.444444445' Inexact Rounded

subx060 subtract '70'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx061 subtract '700'    '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx062 subtract '7000'    '10000e+9' -> '-9.99999999E+12' Inexact Rounded
subx063 subtract '70000'    '10000e+9' -> '-9.99999993E+12' Rounded
subx064 subtract '700000'    '10000e+9' -> '-9.99999930E+12' Rounded
  -- symmetry:
subx065 subtract '10000e+9'    '70' -> '1.00000000E+13' Inexact Rounded
subx066 subtract '10000e+9'    '700' -> '1.00000000E+13' Inexact Rounded
subx067 subtract '10000e+9'    '7000' -> '9.99999999E+12' Inexact Rounded
subx068 subtract '10000e+9'    '70000' -> '9.99999993E+12' Rounded
subx069 subtract '10000e+9'    '700000' -> '9.99999930E+12' Rounded

  -- change precision
subx080 subtract '10000e+9'    '70000' -> '9.99999993E+12' Rounded
precision: 6
subx081 subtract '10000e+9'    '70000' -> '1.00000E+13' Inexact Rounded
precision: 9

  -- some of the next group are really constructor tests
subx090 subtract '00.0'    '0.0'  -> '0.0'
subx091 subtract '00.0'    '0.00' -> '0.00'
subx092 subtract '0.00'    '00.0' -> '0.00'
subx093 subtract '00.0'    '0.00' -> '0.00'
subx094 subtract '0.00'    '00.0' -> '0.00'
subx095 subtract '3'    '.3'   -> '2.7'
subx096 subtract '3.'   '.3'   -> '2.7'
subx097 subtract '3.0'  '.3'   -> '2.7'
subx098 subtract '3.00' '.3'   -> '2.70'
subx099 subtract '3'    '3'    -> '0'
subx100 subtract '3'    '+3'   -> '0'
subx101 subtract '3'    '-3'   -> '6'
subx102 subtract '3'    '0.3'  -> '2.7'
subx103 subtract '3.'   '0.3'  -> '2.7'
subx104 subtract '3.0'  '0.3'  -> '2.7'
subx105 subtract '3.00' '0.3'  -> '2.70'
subx106 subtract '3'    '3.0'  -> '0.0'
subx107 subtract '3'    '+3.0' -> '0.0'
subx108 subtract '3'    '-3.0' -> '6.0'

-- the above all from add; massaged and extended.  Now some new ones...
-- [particularly important for comparisons]
-- NB: -xE-8 below were non-exponents pre-ANSI X3-274, and -1E-7 or 0E-7
-- with input rounding.
subx120 subtract  '10.23456784'    '10.23456789'  -> '-5E-8'
subx121 subtract  '10.23456785'    '10.23456789'  -> '-4E-8'
subx122 subtract  '10.23456786'    '10.23456789'  -> '-3E-8'
subx123 subtract  '10.23456787'    '10.23456789'  -> '-2E-8'
subx124 subtract  '10.23456788'    '10.23456789'  -> '-1E-8'
subx125 subtract  '10.23456789'    '10.23456789'  -> '0E-8'
subx126 subtract  '10.23456790'    '10.23456789'  -> '1E-8'
subx127 subtract  '10.23456791'    '10.23456789'  -> '2E-8'
subx128 subtract  '10.23456792'    '10.23456789'  -> '3E-8'
subx129 subtract  '10.23456793'    '10.23456789'  -> '4E-8'
subx130 subtract  '10.23456794'    '10.23456789'  -> '5E-8'
subx131 subtract  '10.23456781'    '10.23456786'  -> '-5E-8'
subx132 subtract  '10.23456782'    '10.23456786'  -> '-4E-8'
subx133 subtract  '10.23456783'    '10.23456786'  -> '-3E-8'
subx134 subtract  '10.23456784'    '10.23456786'  -> '-2E-8'
subx135 subtract  '10.23456785'    '10.23456786'  -> '-1E-8'
subx136 subtract  '10.23456786'    '10.23456786'  -> '0E-8'
subx137 subtract  '10.23456787'    '10.23456786'  -> '1E-8'
subx138 subtract  '10.23456788'    '10.23456786'  -> '2E-8'
subx139 subtract  '10.23456789'    '10.23456786'  -> '3E-8'
subx140 subtract  '10.23456790'    '10.23456786'  -> '4E-8'
subx141 subtract  '10.23456791'    '10.23456786'  -> '5E-8'
subx142 subtract  '1'              '0.999999999'  -> '1E-9'
subx143 subtract  '0.999999999'    '1'            -> '-1E-9'
subx144 subtract  '-10.23456780'   '-10.23456786' -> '6E-8'
subx145 subtract  '-10.23456790'   '-10.23456786' -> '-4E-8'
subx146 subtract  '-10.23456791'   '-10.23456786' -> '-5E-8'

precision: 3
subx150 subtract '12345678900000' '9999999999999'  -> 2.35E+12 Inexact Rounded
subx151 subtract '9999999999999'  '12345678900000' -> -2.35E+12 Inexact Rounded
precision: 6
subx152 subtract '12345678900000' '9999999999999'  -> 2.34568E+12 Inexact Rounded
subx153 subtract '9999999999999'  '12345678900000' -> -2.34568E+12 Inexact Rounded
precision: 9
subx154 subtract '12345678900000' '9999999999999'  -> 2.34567890E+12 Inexact Rounded
subx155 subtract '9999999999999'  '12345678900000' -> -2.34567890E+12 Inexact Rounded
precision: 12
subx156 subtract '12345678900000' '9999999999999'  -> 2.34567890000E+12 Inexact Rounded
subx157 subtract '9999999999999'  '12345678900000' -> -2.34567890000E+12 Inexact Rounded
precision: 15
subx158 subtract '12345678900000' '9999999999999'  -> 2345678900001
subx159 subtract '9999999999999'  '12345678900000' -> -2345678900001
precision: 9

-- additional scaled arithmetic tests [0.97 problem]
subx160 subtract '0'     '.1'      -> '-0.1'
subx161 subtract '00'    '.97983'  -> '-0.97983'
subx162 subtract '0'     '.9'      -> '-0.9'
subx163 subtract '0'     '0.102'   -> '-0.102'
subx164 subtract '0'     '.4'      -> '-0.4'
subx165 subtract '0'     '.307'    -> '-0.307'
subx166 subtract '0'     '.43822'  -> '-0.43822'
subx167 subtract '0'     '.911'    -> '-0.911'
subx168 subtract '.0'    '.02'     -> '-0.02'
subx169 subtract '00'    '.392'    -> '-0.392'
subx170 subtract '0'     '.26'     -> '-0.26'
subx171 subtract '0'     '0.51'    -> '-0.51'
subx172 subtract '0'     '.2234'   -> '-0.2234'
subx173 subtract '0'     '.2'      -> '-0.2'
subx174 subtract '.0'    '.0008'   -> '-0.0008'
-- 0. on left
subx180 subtract '0.0'     '-.1'      -> '0.1'
subx181 subtract '0.00'    '-.97983'  -> '0.97983'
subx182 subtract '0.0'     '-.9'      -> '0.9'
subx183 subtract '0.0'     '-0.102'   -> '0.102'
subx184 subtract '0.0'     '-.4'      -> '0.4'
subx185 subtract '0.0'     '-.307'    -> '0.307'
subx186 subtract '0.0'     '-.43822'  -> '0.43822'
subx187 subtract '0.0'     '-.911'    -> '0.911'
subx188 subtract '0.0'     '-.02'     -> '0.02'
subx189 subtract '0.00'    '-.392'    -> '0.392'
subx190 subtract '0.0'     '-.26'     -> '0.26'
subx191 subtract '0.0'     '-0.51'    -> '0.51'
subx192 subtract '0.0'     '-.2234'   -> '0.2234'
subx193 subtract '0.0'     '-.2'      -> '0.2'
subx194 subtract '0.0'     '-.0008'   -> '0.0008'
-- negatives of same
subx200 subtract '0'     '-.1'      -> '0.1'
subx201 subtract '00'    '-.97983'  -> '0.97983'
subx202 subtract '0'     '-.9'      -> '0.9'
subx203 subtract '0'     '-0.102'   -> '0.102'
subx204 subtract '0'     '-.4'      -> '0.4'
subx205 subtract '0'     '-.307'    -> '0.307'
subx206 subtract '0'     '-.43822'  -> '0.43822'
subx207 subtract '0'     '-.911'    -> '0.911'
subx208 subtract '.0'    '-.02'     -> '0.02'
subx209 subtract '00'    '-.392'    -> '0.392'
subx210 subtract '0'     '-.26'     -> '0.26'
subx211 subtract '0'     '-0.51'    -> '0.51'
subx212 subtract '0'     '-.2234'   -> '0.2234'
subx213 subtract '0'     '-.2'      -> '0.2'
subx214 subtract '.0'    '-.0008'   -> '0.0008'

-- more fixed, LHS swaps [really the same as testcases under add]
subx220 subtract '-56267E-12' 0  -> '-5.6267E-8'
subx221 subtract '-56267E-11' 0  -> '-5.6267E-7'
subx222 subtract '-56267E-10' 0  -> '-0.0000056267'
subx223 subtract '-56267E-9'  0  -> '-0.000056267'
subx224 subtract '-56267E-8'  0  -> '-0.00056267'
subx225 subtract '-56267E-7'  0  -> '-0.0056267'
subx226 subtract '-56267E-6'  0  -> '-0.056267'
subx227 subtract '-56267E-5'  0  -> '-0.56267'
subx228 subtract '-56267E-2'  0  -> '-562.67'
subx229 subtract '-56267E-1'  0  -> '-5626.7'
subx230 subtract '-56267E-0'  0  -> '-56267'
-- symmetry ...
subx240 subtract 0 '-56267E-12'  -> '5.6267E-8'
subx241 subtract 0 '-56267E-11'  -> '5.6267E-7'
subx242 subtract 0 '-56267E-10'  -> '0.0000056267'
subx243 subtract 0 '-56267E-9'   -> '0.000056267'
subx244 subtract 0 '-56267E-8'   -> '0.00056267'
subx245 subtract 0 '-56267E-7'   -> '0.0056267'
subx246 subtract 0 '-56267E-6'   -> '0.056267'
subx247 subtract 0 '-56267E-5'   -> '0.56267'
subx248 subtract 0 '-56267E-2'   -> '562.67'
subx249 subtract 0 '-56267E-1'   -> '5626.7'
subx250 subtract 0 '-56267E-0'   -> '56267'

-- now some more from the 'new' add
precision: 9
subx301 subtract '1.23456789'  '1.00000000' -> '0.23456789'
subx302 subtract '1.23456789'  '1.00000011' -> '0.23456778'

subx311 subtract '0.4444444444'  '0.5555555555' -> '-0.111111111' Inexact Rounded
subx312 subtract '0.4444444440'  '0.5555555555' -> '-0.111111112' Inexact Rounded
subx313 subtract '0.4444444444'  '0.5555555550' -> '-0.111111111' Inexact Rounded
subx314 subtract '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
subx315 subtract '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
subx316 subtract '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
subx317 subtract '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
subx318 subtract '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
subx319 subtract '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
subx320 subtract '0.44444444451'    '0' -> '0.444444445' Inexact Rounded

-- some carrying effects
subx321 subtract '0.9998'  '0.0000' -> '0.9998'
subx322 subtract '0.9998'  '0.0001' -> '0.9997'
subx323 subtract '0.9998'  '0.0002' -> '0.9996'
subx324 subtract '0.9998'  '0.0003' -> '0.9995'
subx325 subtract '0.9998'  '-0.0000' -> '0.9998'
subx326 subtract '0.9998'  '-0.0001' -> '0.9999'
subx327 subtract '0.9998'  '-0.0002' -> '1.0000'
subx328 subtract '0.9998'  '-0.0003' -> '1.0001'

subx330 subtract '70'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx331 subtract '700'  '10000e+9' -> '-1.00000000E+13' Inexact Rounded
subx332 subtract '7000'  '10000e+9' -> '-9.99999999E+12' Inexact Rounded
subx333 subtract '70000'  '10000e+9' -> '-9.99999993E+12' Rounded
subx334 subtract '700000'  '10000e+9' -> '-9.99999930E+12' Rounded
subx335 subtract '7000000'  '10000e+9' -> '-9.99999300E+12' Rounded
-- symmetry:
subx340 subtract '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
subx341 subtract '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
subx342 subtract '10000e+9'  '7000' -> '9.99999999E+12' Inexact Rounded
subx343 subtract '10000e+9'  '70000' -> '9.99999993E+12' Rounded
subx344 subtract '10000e+9'  '700000' -> '9.99999930E+12' Rounded
subx345 subtract '10000e+9'  '7000000' -> '9.99999300E+12' Rounded

-- same, higher precision
precision: 15
subx346 subtract '10000e+9'  '7'   -> '9999999999993'
subx347 subtract '10000e+9'  '70'   -> '9999999999930'
subx348 subtract '10000e+9'  '700'   -> '9999999999300'
subx349 subtract '10000e+9'  '7000'   -> '9999999993000'
subx350 subtract '10000e+9'  '70000'   -> '9999999930000'
subx351 subtract '10000e+9'  '700000'   -> '9999999300000'
subx352 subtract '7' '10000e+9'   -> '-9999999999993'
subx353 subtract '70' '10000e+9'   -> '-9999999999930'
subx354 subtract '700' '10000e+9'   -> '-9999999999300'
subx355 subtract '7000' '10000e+9'   -> '-9999999993000'
subx356 subtract '70000' '10000e+9'   -> '-9999999930000'
subx357 subtract '700000' '10000e+9'   -> '-9999999300000'

-- zero preservation
precision: 6
subx360 subtract '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
subx361 subtract 1 '0.0001' -> '0.9999'
subx362 subtract 1 '0.00001' -> '0.99999'
subx363 subtract 1 '0.000001' -> '0.999999'
subx364 subtract 1 '0.0000001' -> '1.00000' Inexact Rounded
subx365 subtract 1 '0.00000001' -> '1.00000' Inexact Rounded

-- some funny zeros [in case of bad signum]
subx370 subtract 1  0  -> 1
subx371 subtract 1 0.  -> 1
subx372 subtract 1  .0 -> 1.0
subx373 subtract 1 0.0 -> 1.0
subx374 subtract  0  1 -> -1
subx375 subtract 0.  1 -> -1
subx376 subtract  .0 1 -> -1.0
subx377 subtract 0.0 1 -> -1.0

precision: 9

-- leading 0 digit before round
subx910 subtract -103519362 -51897955.3 -> -51621406.7
subx911 subtract 159579.444 89827.5229 -> 69751.9211

subx920 subtract 333.123456 33.1234566 -> 299.999999 Inexact Rounded
subx921 subtract 333.123456 33.1234565 -> 300.000000 Inexact Rounded
subx922 subtract 133.123456 33.1234565 ->  99.9999995
subx923 subtract 133.123456 33.1234564 ->  99.9999996
subx924 subtract 133.123456 33.1234540 -> 100.000002 Rounded
subx925 subtract 133.123456 43.1234560 ->  90.0000000
subx926 subtract 133.123456 43.1234561 ->  89.9999999
subx927 subtract 133.123456 43.1234566 ->  89.9999994
subx928 subtract 101.123456 91.1234566 ->   9.9999994
subx929 subtract 101.123456 99.1234566 ->   1.9999994

-- more of the same; probe for cluster boundary problems
precision: 1
subx930 subtract  11 2           -> 9
precision: 2
subx932 subtract 101 2           -> 99
precision: 3
subx934 subtract 101 2.1         -> 98.9
subx935 subtract 101 92.01       ->  8.99
precision: 4
subx936 subtract 101 2.01        -> 98.99
subx937 subtract 101 92.01       ->  8.99
subx938 subtract 101 92.006      ->  8.994
precision: 5
subx939 subtract 101 2.001       -> 98.999
subx940 subtract 101 92.001      ->  8.999
subx941 subtract 101 92.0006     ->  8.9994
precision: 6
subx942 subtract 101 2.0001      -> 98.9999
subx943 subtract 101 92.0001     ->  8.9999
subx944 subtract 101 92.00006    ->  8.99994
precision: 7
subx945 subtract 101 2.00001     -> 98.99999
subx946 subtract 101 92.00001    ->  8.99999
subx947 subtract 101 92.000006   ->  8.999994
precision: 8
subx948 subtract 101 2.000001    -> 98.999999
subx949 subtract 101 92.000001   ->  8.999999
subx950 subtract 101 92.0000006  ->  8.9999994
precision: 9
subx951 subtract 101 2.0000001   -> 98.9999999
subx952 subtract 101 92.0000001  ->  8.9999999
subx953 subtract 101 92.00000006 ->  8.99999994

precision: 9

-- more LHS swaps [were fixed]
subx390 subtract '-56267E-10'   0 ->  '-0.0000056267'
subx391 subtract '-56267E-6'    0 ->  '-0.056267'
subx392 subtract '-56267E-5'    0 ->  '-0.56267'
subx393 subtract '-56267E-4'    0 ->  '-5.6267'
subx394 subtract '-56267E-3'    0 ->  '-56.267'
subx395 subtract '-56267E-2'    0 ->  '-562.67'
subx396 subtract '-56267E-1'    0 ->  '-5626.7'
subx397 subtract '-56267E-0'    0 ->  '-56267'
subx398 subtract '-5E-10'       0 ->  '-5E-10'
subx399 subtract '-5E-7'        0 ->  '-5E-7'
subx400 subtract '-5E-6'        0 ->  '-0.000005'
subx401 subtract '-5E-5'        0 ->  '-0.00005'
subx402 subtract '-5E-4'        0 ->  '-0.0005'
subx403 subtract '-5E-1'        0 ->  '-0.5'
subx404 subtract '-5E0'         0 ->  '-5'
subx405 subtract '-5E1'         0 ->  '-50'
subx406 subtract '-5E5'         0 ->  '-500000'
subx407 subtract '-5E8'         0 ->  '-500000000'
subx408 subtract '-5E9'         0 ->  '-5.00000000E+9'   Rounded
subx409 subtract '-5E10'        0 ->  '-5.00000000E+10'  Rounded
subx410 subtract '-5E11'        0 ->  '-5.00000000E+11'  Rounded
subx411 subtract '-5E100'       0 ->  '-5.00000000E+100' Rounded

-- more RHS swaps [were fixed]
subx420 subtract 0  '-56267E-10' ->  '0.0000056267'
subx421 subtract 0  '-56267E-6'  ->  '0.056267'
subx422 subtract 0  '-56267E-5'  ->  '0.56267'
subx423 subtract 0  '-56267E-4'  ->  '5.6267'
subx424 subtract 0  '-56267E-3'  ->  '56.267'
subx425 subtract 0  '-56267E-2'  ->  '562.67'
subx426 subtract 0  '-56267E-1'  ->  '5626.7'
subx427 subtract 0  '-56267E-0'  ->  '56267'
subx428 subtract 0  '-5E-10'     ->  '5E-10'
subx429 subtract 0  '-5E-7'      ->  '5E-7'
subx430 subtract 0  '-5E-6'      ->  '0.000005'
subx431 subtract 0  '-5E-5'      ->  '0.00005'
subx432 subtract 0  '-5E-4'      ->  '0.0005'
subx433 subtract 0  '-5E-1'      ->  '0.5'
subx434 subtract 0  '-5E0'       ->  '5'
subx435 subtract 0  '-5E1'       ->  '50'
subx436 subtract 0  '-5E5'       ->  '500000'
subx437 subtract 0  '-5E8'       ->  '500000000'
subx438 subtract 0  '-5E9'       ->  '5.00000000E+9'    Rounded
subx439 subtract 0  '-5E10'      ->  '5.00000000E+10'   Rounded
subx440 subtract 0  '-5E11'      ->  '5.00000000E+11'   Rounded
subx441 subtract 0  '-5E100'     ->  '5.00000000E+100'  Rounded


-- try borderline precision, with carries, etc.
precision: 15
subx461 subtract '1E+12' '1'       -> '999999999999'
subx462 subtract '1E+12' '-1.11'   -> '1000000000001.11'
subx463 subtract '1.11'  '-1E+12'  -> '1000000000001.11'
subx464 subtract '-1'    '-1E+12'  -> '999999999999'
subx465 subtract '7E+12' '1'       -> '6999999999999'
subx466 subtract '7E+12' '-1.11'   -> '7000000000001.11'
subx467 subtract '1.11'  '-7E+12'  -> '7000000000001.11'
subx468 subtract '-1'    '-7E+12'  -> '6999999999999'

--                 123456789012345       123456789012345      1 23456789012345
subx470 subtract '0.444444444444444'  '-0.555555555555563' -> '1.00000000000001' Inexact Rounded
subx471 subtract '0.444444444444444'  '-0.555555555555562' -> '1.00000000000001' Inexact Rounded
subx472 subtract '0.444444444444444'  '-0.555555555555561' -> '1.00000000000001' Inexact Rounded
subx473 subtract '0.444444444444444'  '-0.555555555555560' -> '1.00000000000000' Inexact Rounded
subx474 subtract '0.444444444444444'  '-0.555555555555559' -> '1.00000000000000' Inexact Rounded
subx475 subtract '0.444444444444444'  '-0.555555555555558' -> '1.00000000000000' Inexact Rounded
subx476 subtract '0.444444444444444'  '-0.555555555555557' -> '1.00000000000000' Inexact Rounded
subx477 subtract '0.444444444444444'  '-0.555555555555556' -> '1.00000000000000' Rounded
subx478 subtract '0.444444444444444'  '-0.555555555555555' -> '0.999999999999999'
subx479 subtract '0.444444444444444'  '-0.555555555555554' -> '0.999999999999998'
subx480 subtract '0.444444444444444'  '-0.555555555555553' -> '0.999999999999997'
subx481 subtract '0.444444444444444'  '-0.555555555555552' -> '0.999999999999996'
subx482 subtract '0.444444444444444'  '-0.555555555555551' -> '0.999999999999995'
subx483 subtract '0.444444444444444'  '-0.555555555555550' -> '0.999999999999994'

-- and some more, including residue effects and different roundings
precision: 9
rounding: half_up
subx500 subtract '123456789' 0             -> '123456789'
subx501 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
subx502 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
subx503 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
subx504 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
subx505 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
subx506 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
subx507 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
subx508 subtract '123456789' 0.5           -> '123456789' Inexact Rounded
subx509 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
subx510 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
subx511 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
subx512 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
subx513 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
subx514 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
subx515 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
subx516 subtract '123456789' 1             -> '123456788'
subx517 subtract '123456789' 1.000000001   -> '123456788' Inexact Rounded
subx518 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
subx519 subtract '123456789' 1.1           -> '123456788' Inexact Rounded

rounding: half_even
subx520 subtract '123456789' 0             -> '123456789'
subx521 subtract '123456789' 0.000000001   -> '123456789' Inexact Rounded
subx522 subtract '123456789' 0.000001      -> '123456789' Inexact Rounded
subx523 subtract '123456789' 0.1           -> '123456789' Inexact Rounded
subx524 subtract '123456789' 0.4           -> '123456789' Inexact Rounded
subx525 subtract '123456789' 0.49          -> '123456789' Inexact Rounded
subx526 subtract '123456789' 0.499999      -> '123456789' Inexact Rounded
subx527 subtract '123456789' 0.499999999   -> '123456789' Inexact Rounded
subx528 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
subx529 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
subx530 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
subx531 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
subx532 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
subx533 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
subx534 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
subx535 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
subx536 subtract '123456789' 1             -> '123456788'
subx537 subtract '123456789' 1.00000001    -> '123456788' Inexact Rounded
subx538 subtract '123456789' 1.00001       -> '123456788' Inexact Rounded
subx539 subtract '123456789' 1.1           -> '123456788' Inexact Rounded
-- critical few with even bottom digit...
subx540 subtract '123456788' 0.499999999   -> '123456788' Inexact Rounded
subx541 subtract '123456788' 0.5           -> '123456788' Inexact Rounded
subx542 subtract '123456788' 0.500000001   -> '123456787' Inexact Rounded

rounding: down
subx550 subtract '123456789' 0             -> '123456789'
subx551 subtract '123456789' 0.000000001   -> '123456788' Inexact Rounded
subx552 subtract '123456789' 0.000001      -> '123456788' Inexact Rounded
subx553 subtract '123456789' 0.1           -> '123456788' Inexact Rounded
subx554 subtract '123456789' 0.4           -> '123456788' Inexact Rounded
subx555 subtract '123456789' 0.49          -> '123456788' Inexact Rounded
subx556 subtract '123456789' 0.499999      -> '123456788' Inexact Rounded
subx557 subtract '123456789' 0.499999999   -> '123456788' Inexact Rounded
subx558 subtract '123456789' 0.5           -> '123456788' Inexact Rounded
subx559 subtract '123456789' 0.500000001   -> '123456788' Inexact Rounded
subx560 subtract '123456789' 0.500001      -> '123456788' Inexact Rounded
subx561 subtract '123456789' 0.51          -> '123456788' Inexact Rounded
subx562 subtract '123456789' 0.6           -> '123456788' Inexact Rounded
subx563 subtract '123456789' 0.9           -> '123456788' Inexact Rounded
subx564 subtract '123456789' 0.99999       -> '123456788' Inexact Rounded
subx565 subtract '123456789' 0.999999999   -> '123456788' Inexact Rounded
subx566 subtract '123456789' 1             -> '123456788'
subx567 subtract '123456789' 1.00000001    -> '123456787' Inexact Rounded
subx568 subtract '123456789' 1.00001       -> '123456787' Inexact Rounded
subx569 subtract '123456789' 1.1           -> '123456787' Inexact Rounded

-- symmetry...
rounding: half_up
subx600 subtract 0             '123456789' -> '-123456789'
subx601 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
subx602 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
subx603 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
subx604 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
subx605 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
subx606 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
subx607 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
subx608 subtract 0.5           '123456789' -> '-123456789' Inexact Rounded
subx609 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
subx610 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
subx611 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
subx612 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
subx613 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
subx614 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
subx615 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
subx616 subtract 1             '123456789' -> '-123456788'
subx617 subtract 1.000000001   '123456789' -> '-123456788' Inexact Rounded
subx618 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
subx619 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded

rounding: half_even
subx620 subtract 0             '123456789' -> '-123456789'
subx621 subtract 0.000000001   '123456789' -> '-123456789' Inexact Rounded
subx622 subtract 0.000001      '123456789' -> '-123456789' Inexact Rounded
subx623 subtract 0.1           '123456789' -> '-123456789' Inexact Rounded
subx624 subtract 0.4           '123456789' -> '-123456789' Inexact Rounded
subx625 subtract 0.49          '123456789' -> '-123456789' Inexact Rounded
subx626 subtract 0.499999      '123456789' -> '-123456789' Inexact Rounded
subx627 subtract 0.499999999   '123456789' -> '-123456789' Inexact Rounded
subx628 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
subx629 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
subx630 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
subx631 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
subx632 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
subx633 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
subx634 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
subx635 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
subx636 subtract 1             '123456789' -> '-123456788'
subx637 subtract 1.00000001    '123456789' -> '-123456788' Inexact Rounded
subx638 subtract 1.00001       '123456789' -> '-123456788' Inexact Rounded
subx639 subtract 1.1           '123456789' -> '-123456788' Inexact Rounded
-- critical few with even bottom digit...
subx640 subtract 0.499999999   '123456788' -> '-123456788' Inexact Rounded
subx641 subtract 0.5           '123456788' -> '-123456788' Inexact Rounded
subx642 subtract 0.500000001   '123456788' -> '-123456787' Inexact Rounded

rounding: down
subx650 subtract 0             '123456789' -> '-123456789'
subx651 subtract 0.000000001   '123456789' -> '-123456788' Inexact Rounded
subx652 subtract 0.000001      '123456789' -> '-123456788' Inexact Rounded
subx653 subtract 0.1           '123456789' -> '-123456788' Inexact Rounded
subx654 subtract 0.4           '123456789' -> '-123456788' Inexact Rounded
subx655 subtract 0.49          '123456789' -> '-123456788' Inexact Rounded
subx656 subtract 0.499999      '123456789' -> '-123456788' Inexact Rounded
subx657 subtract 0.499999999   '123456789' -> '-123456788' Inexact Rounded
subx658 subtract 0.5           '123456789' -> '-123456788' Inexact Rounded
subx659 subtract 0.500000001   '123456789' -> '-123456788' Inexact Rounded
subx660 subtract 0.500001      '123456789' -> '-123456788' Inexact Rounded
subx661 subtract 0.51          '123456789' -> '-123456788' Inexact Rounded
subx662 subtract 0.6           '123456789' -> '-123456788' Inexact Rounded
subx663 subtract 0.9           '123456789' -> '-123456788' Inexact Rounded
subx664 subtract 0.99999       '123456789' -> '-123456788' Inexact Rounded
subx665 subtract 0.999999999   '123456789' -> '-123456788' Inexact Rounded
subx666 subtract 1             '123456789' -> '-123456788'
subx667 subtract 1.00000001    '123456789' -> '-123456787' Inexact Rounded
subx668 subtract 1.00001       '123456789' -> '-123456787' Inexact Rounded
subx669 subtract 1.1           '123456789' -> '-123456787' Inexact Rounded


-- lots of leading zeros in intermediate result, and showing effects of
-- input rounding would have affected the following
precision: 9
rounding: half_up
subx670 subtract '123456789' '123456788.1' -> 0.9
subx671 subtract '123456789' '123456788.9' -> 0.1
subx672 subtract '123456789' '123456789.1' -> -0.1
subx673 subtract '123456789' '123456789.5' -> -0.5
subx674 subtract '123456789' '123456789.9' -> -0.9

rounding: half_even
subx680 subtract '123456789' '123456788.1' -> 0.9
subx681 subtract '123456789' '123456788.9' -> 0.1
subx682 subtract '123456789' '123456789.1' -> -0.1
subx683 subtract '123456789' '123456789.5' -> -0.5
subx684 subtract '123456789' '123456789.9' -> -0.9

subx685 subtract '123456788' '123456787.1' -> 0.9
subx686 subtract '123456788' '123456787.9' -> 0.1
subx687 subtract '123456788' '123456788.1' -> -0.1
subx688 subtract '123456788' '123456788.5' -> -0.5
subx689 subtract '123456788' '123456788.9' -> -0.9

rounding: down
subx690 subtract '123456789' '123456788.1' -> 0.9
subx691 subtract '123456789' '123456788.9' -> 0.1
subx692 subtract '123456789' '123456789.1' -> -0.1
subx693 subtract '123456789' '123456789.5' -> -0.5
subx694 subtract '123456789' '123456789.9' -> -0.9

-- input preparation tests
rounding: half_up
precision: 3

subx700 subtract '12345678900000'  -9999999999999 ->  '2.23E+13' Inexact Rounded
subx701 subtract  '9999999999999' -12345678900000 ->  '2.23E+13' Inexact Rounded
subx702 subtract '12E+3'  '-3456' ->  '1.55E+4' Inexact Rounded
subx703 subtract '12E+3'  '-3446' ->  '1.54E+4' Inexact Rounded
subx704 subtract '12E+3'  '-3454' ->  '1.55E+4' Inexact Rounded
subx705 subtract '12E+3'  '-3444' ->  '1.54E+4' Inexact Rounded

subx706 subtract '3456'  '-12E+3' ->  '1.55E+4' Inexact Rounded
subx707 subtract '3446'  '-12E+3' ->  '1.54E+4' Inexact Rounded
subx708 subtract '3454'  '-12E+3' ->  '1.55E+4' Inexact Rounded
subx709 subtract '3444'  '-12E+3' ->  '1.54E+4' Inexact Rounded

-- overflow and underflow tests [subnormals now possible]
maxexponent: 999999999
minexponent: -999999999
precision: 9
rounding: down
subx710 subtract 1E+999999999    -9E+999999999   -> 9.99999999E+999999999 Overflow Inexact Rounded
subx711 subtract 9E+999999999    -1E+999999999   -> 9.99999999E+999999999 Overflow Inexact Rounded
rounding: half_up
subx712 subtract 1E+999999999    -9E+999999999   -> Infinity Overflow Inexact Rounded
subx713 subtract 9E+999999999    -1E+999999999   -> Infinity Overflow Inexact Rounded
subx714 subtract -1.1E-999999999 -1E-999999999   -> -1E-1000000000 Subnormal
subx715 subtract 1E-999999999    +1.1e-999999999 -> -1E-1000000000 Subnormal
subx716 subtract -1E+999999999   +9E+999999999   -> -Infinity Overflow Inexact Rounded
subx717 subtract -9E+999999999   +1E+999999999   -> -Infinity Overflow Inexact Rounded
subx718 subtract +1.1E-999999999 +1E-999999999   -> 1E-1000000000 Subnormal
subx719 subtract -1E-999999999   -1.1e-999999999 -> 1E-1000000000 Subnormal

precision: 3
subx720 subtract 1  9.999E+999999999   -> -Infinity Inexact Overflow Rounded
subx721 subtract 1 -9.999E+999999999   ->  Infinity Inexact Overflow Rounded
subx722 subtract    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
subx723 subtract   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded
subx724 subtract 1  9.999E+999999999   -> -Infinity Inexact Overflow Rounded
subx725 subtract 1 -9.999E+999999999   ->  Infinity Inexact Overflow Rounded
subx726 subtract    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
subx727 subtract   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded

-- [more below]

-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
sub731 subtract 12345678000 0 ->  1.23456780E+10 Rounded
sub732 subtract 0 12345678000 -> -1.23456780E+10 Rounded
sub733 subtract 1234567800  0 ->  1.23456780E+9 Rounded
sub734 subtract 0 1234567800  -> -1.23456780E+9 Rounded
sub735 subtract 1234567890  0 ->  1.23456789E+9 Rounded
sub736 subtract 0 1234567890  -> -1.23456789E+9 Rounded
sub737 subtract 1234567891  0 ->  1.23456789E+9 Inexact Rounded
sub738 subtract 0 1234567891  -> -1.23456789E+9 Inexact Rounded
sub739 subtract 12345678901 0 ->  1.23456789E+10 Inexact Rounded
sub740 subtract 0 12345678901 -> -1.23456789E+10 Inexact Rounded
sub741 subtract 1234567896  0 ->  1.23456790E+9 Inexact Rounded
sub742 subtract 0 1234567896  -> -1.23456790E+9 Inexact Rounded

precision: 15
sub751 subtract 12345678000 0 ->  12345678000
sub752 subtract 0 12345678000 -> -12345678000
sub753 subtract 1234567800  0 ->  1234567800
sub754 subtract 0 1234567800  -> -1234567800
sub755 subtract 1234567890  0 ->  1234567890
sub756 subtract 0 1234567890  -> -1234567890
sub757 subtract 1234567891  0 ->  1234567891
sub758 subtract 0 1234567891  -> -1234567891
sub759 subtract 12345678901 0 ->  12345678901
sub760 subtract 0 12345678901 -> -12345678901
sub761 subtract 1234567896  0 ->  1234567896
sub762 subtract 0 1234567896  -> -1234567896

-- Specials
subx780 subtract -Inf   Inf   -> -Infinity
subx781 subtract -Inf   1000  -> -Infinity
subx782 subtract -Inf   1     -> -Infinity
subx783 subtract -Inf  -0     -> -Infinity
subx784 subtract -Inf  -1     -> -Infinity
subx785 subtract -Inf  -1000  -> -Infinity
subx787 subtract -1000  Inf   -> -Infinity
subx788 subtract -Inf   Inf   -> -Infinity
subx789 subtract -1     Inf   -> -Infinity
subx790 subtract  0     Inf   -> -Infinity
subx791 subtract  1     Inf   -> -Infinity
subx792 subtract  1000  Inf   -> -Infinity

subx800 subtract  Inf   Inf   ->  NaN  Invalid_operation
subx801 subtract  Inf   1000  ->  Infinity
subx802 subtract  Inf   1     ->  Infinity
subx803 subtract  Inf   0     ->  Infinity
subx804 subtract  Inf  -0     ->  Infinity
subx805 subtract  Inf  -1     ->  Infinity
subx806 subtract  Inf  -1000  ->  Infinity
subx807 subtract  Inf  -Inf   ->  Infinity
subx808 subtract -1000 -Inf   ->  Infinity
subx809 subtract -Inf  -Inf   ->  NaN  Invalid_operation
subx810 subtract -1    -Inf   ->  Infinity
subx811 subtract -0    -Inf   ->  Infinity
subx812 subtract  0    -Inf   ->  Infinity
subx813 subtract  1    -Inf   ->  Infinity
subx814 subtract  1000 -Inf   ->  Infinity
subx815 subtract  Inf  -Inf   ->  Infinity

subx821 subtract  NaN   Inf   ->  NaN
subx822 subtract  NaN   1000  ->  NaN
subx823 subtract  NaN   1     ->  NaN
subx824 subtract  NaN   0     ->  NaN
subx825 subtract  NaN  -0     ->  NaN
subx826 subtract  NaN  -1     ->  NaN
subx827 subtract  NaN  -1000  ->  NaN
subx828 subtract  NaN  -Inf   ->  NaN
subx829 subtract  NaN   NaN   ->  NaN
subx830 subtract -Inf   NaN   ->  NaN
subx831 subtract -1000  NaN   ->  NaN
subx832 subtract -1     NaN   ->  NaN
subx833 subtract -0     NaN   ->  NaN
subx834 subtract  0     NaN   ->  NaN
subx835 subtract  1     NaN   ->  NaN
subx836 subtract  1000  NaN   ->  NaN
subx837 subtract  Inf   NaN   ->  NaN

subx841 subtract  sNaN  Inf   ->  NaN  Invalid_operation
subx842 subtract  sNaN  1000  ->  NaN  Invalid_operation
subx843 subtract  sNaN  1     ->  NaN  Invalid_operation
subx844 subtract  sNaN  0     ->  NaN  Invalid_operation
subx845 subtract  sNaN -0     ->  NaN  Invalid_operation
subx846 subtract  sNaN -1     ->  NaN  Invalid_operation
subx847 subtract  sNaN -1000  ->  NaN  Invalid_operation
subx848 subtract  sNaN  NaN   ->  NaN  Invalid_operation
subx849 subtract  sNaN sNaN   ->  NaN  Invalid_operation
subx850 subtract  NaN  sNaN   ->  NaN  Invalid_operation
subx851 subtract -Inf  sNaN   ->  NaN  Invalid_operation
subx852 subtract -1000 sNaN   ->  NaN  Invalid_operation
subx853 subtract -1    sNaN   ->  NaN  Invalid_operation
subx854 subtract -0    sNaN   ->  NaN  Invalid_operation
subx855 subtract  0    sNaN   ->  NaN  Invalid_operation
subx856 subtract  1    sNaN   ->  NaN  Invalid_operation
subx857 subtract  1000 sNaN   ->  NaN  Invalid_operation
subx858 subtract  Inf  sNaN   ->  NaN  Invalid_operation
subx859 subtract  NaN  sNaN   ->  NaN  Invalid_operation

-- subnormals and underflows
precision: 3
maxexponent: 999
minexponent: -999
subx1010 subtract  0  1.00E-999       ->  -1.00E-999
subx1011 subtract  0  0.1E-999        ->  -1E-1000   Subnormal
subx1012 subtract  0  0.10E-999       ->  -1.0E-1000 Subnormal
subx1013 subtract  0  0.100E-999      ->  -1.0E-1000 Subnormal Rounded
subx1014 subtract  0  0.01E-999       ->  -1E-1001   Subnormal
-- next is rounded to Emin
subx1015 subtract  0  0.999E-999      ->  -1.00E-999 Inexact Rounded Subnormal Underflow
subx1016 subtract  0  0.099E-999      ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
subx1017 subtract  0  0.009E-999      ->  -1E-1001   Inexact Rounded Subnormal Underflow
subx1018 subtract  0  0.001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
subx1019 subtract  0  0.0009E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow
subx1020 subtract  0  0.0001E-999     ->  -0E-1001   Inexact Rounded Subnormal Underflow

subx1030 subtract  0 -1.00E-999       ->   1.00E-999
subx1031 subtract  0 -0.1E-999        ->   1E-1000   Subnormal
subx1032 subtract  0 -0.10E-999       ->   1.0E-1000 Subnormal
subx1033 subtract  0 -0.100E-999      ->   1.0E-1000 Subnormal Rounded
subx1034 subtract  0 -0.01E-999       ->   1E-1001   Subnormal
-- next is rounded to Emin
subx1035 subtract  0 -0.999E-999      ->   1.00E-999 Inexact Rounded Subnormal Underflow
subx1036 subtract  0 -0.099E-999      ->   1.0E-1000 Inexact Rounded Subnormal Underflow
subx1037 subtract  0 -0.009E-999      ->   1E-1001   Inexact Rounded Subnormal Underflow
subx1038 subtract  0 -0.001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
subx1039 subtract  0 -0.0009E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow
subx1040 subtract  0 -0.0001E-999     ->   0E-1001   Inexact Rounded Subnormal Underflow

-- some non-zero subnormal subtracts
-- subx1056 is a tricky case
rounding: half_up
subx1050 subtract  1.00E-999   0.1E-999  ->   9.0E-1000  Subnormal
subx1051 subtract  0.1E-999    0.1E-999  ->   0E-1000
subx1052 subtract  0.10E-999   0.1E-999  ->   0E-1001
subx1053 subtract  0.100E-999  0.1E-999  ->   0E-1001    Clamped
subx1054 subtract  0.01E-999   0.1E-999  ->   -9E-1001   Subnormal
subx1055 subtract  0.999E-999  0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
subx1056 subtract  0.099E-999  0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow
subx1057 subtract  0.009E-999  0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
subx1058 subtract  0.001E-999  0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
subx1059 subtract  0.0009E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
subx1060 subtract  0.0001E-999 0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow


-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
subx1101 subtract  0 1.52444E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
subx1102 subtract  0 1.52445E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
subx1103 subtract  0 1.52446E-80 -> -1.524E-80 Inexact Rounded Subnormal Underflow
subx1104 subtract  1.52444E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
subx1105 subtract  1.52445E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow
subx1106 subtract  1.52446E-80 0 ->  1.524E-80 Inexact Rounded Subnormal Underflow

subx1111 subtract  1.2345678E-80  1.2345671E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
subx1112 subtract  1.2345678E-80  1.2345618E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
subx1113 subtract  1.2345678E-80  1.2345178E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
subx1114 subtract  1.2345678E-80  1.2341678E-80 ->  0E-83 Inexact Rounded Subnormal Underflow
subx1115 subtract  1.2345678E-80  1.2315678E-80 ->  3E-83         Rounded Subnormal
subx1116 subtract  1.2345678E-80  1.2145678E-80 ->  2.0E-82       Rounded Subnormal
subx1117 subtract  1.2345678E-80  1.1345678E-80 ->  1.00E-81      Rounded Subnormal
subx1118 subtract  1.2345678E-80  0.2345678E-80 ->  1.000E-80     Rounded Subnormal

-- Null tests
subx9990 subtract 10  # -> NaN Invalid_operation
subx9991 subtract  # 10 -> NaN Invalid_operation

--- NEW FILE: squareroot.decTest ---
------------------------------------------------------------------------
-- squareroot.decTest -- decimal square root                          --
-- Copyright (c) IBM Corporation, 2003.  All rights reserved.         --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
[...2891 lines suppressed...]

precision: 13               -- Etiny=-21
sqtx808 squareroot  1E-21   -> 3.1622776602E-11 Underflow Subnormal Inexact Rounded
sqtx809 squareroot 10E-21   -> 1E-10 Subnormal Rounded
precision: 14               -- Etiny=-22
sqtx810 squareroot  1E-21   -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
sqtx811 squareroot 10E-22   -> 3.16227766017E-11 Underflow Subnormal Inexact Rounded
sqtx812 squareroot  1E-22   -> 1E-11 Subnormal   -- Exact Subnormal case


-- special values
maxexponent: 999
minexponent: -999
sqtx820 squareroot   Inf    -> Infinity
sqtx821 squareroot  -Inf    -> NaN Invalid_operation
sqtx822 squareroot   NaN    -> NaN
sqtx823 squareroot  sNaN    -> NaN Invalid_operation

-- Null test
sqtx900 squareroot  # -> NaN Invalid_operation

--- NEW FILE: rounding.decTest ---
------------------------------------------------------------------------
-- rounding.decTest -- decimal rounding modes testcases               --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
[...1040 lines suppressed...]
rmex401 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
rounding: half_down
rmex402 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
rmex403 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
rounding: half_even
rmex404 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
rmex405 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
rounding: floor
rmex406 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
rmex407 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded
rounding: ceiling
rmex408 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
rmex409 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
rounding: up
rmex410 multiply -9.999E+999999999 10 -> -Infinity Overflow Inexact Rounded
rmex411 multiply  9.999E+999999999 10 ->  Infinity Overflow Inexact Rounded
rounding: down
rmex412 multiply -9.999E+999999999 10 -> -9.99999999E+999999999 Overflow Inexact Rounded
rmex413 multiply  9.999E+999999999 10 ->  9.99999999E+999999999 Overflow Inexact Rounded


--- NEW FILE: rescale.decTest ---
------------------------------------------------------------------------
-- rescale.decTest -- decimal rescale operation                       --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks (as base, above)

resx001 rescale 0       0   -> 0
resx002 rescale 1       0   -> 1
resx003 rescale 0.1    +2   -> 0E+2 Inexact Rounded
resx005 rescale 0.1    +1   -> 0E+1 Inexact Rounded
resx006 rescale 0.1     0   -> 0 Inexact Rounded
resx007 rescale 0.1    -1   -> 0.1
resx008 rescale 0.1    -2   -> 0.10
resx009 rescale 0.1    -3   -> 0.100
resx010 rescale 0.9    +2   -> 0E+2 Inexact Rounded
resx011 rescale 0.9    +1   -> 0E+1 Inexact Rounded
resx012 rescale 0.9    +0   -> 1 Inexact Rounded
resx013 rescale 0.9    -1   -> 0.9
resx014 rescale 0.9    -2   -> 0.90
resx015 rescale 0.9    -3   -> 0.900
-- negatives
resx021 rescale -0      0   -> -0
resx022 rescale -1      0   -> -1
resx023 rescale -0.1   +2   -> -0E+2 Inexact Rounded
resx025 rescale -0.1   +1   -> -0E+1 Inexact Rounded
resx026 rescale -0.1    0   -> -0 Inexact Rounded
resx027 rescale -0.1   -1   -> -0.1
resx028 rescale -0.1   -2   -> -0.10
resx029 rescale -0.1   -3   -> -0.100
resx030 rescale -0.9   +2   -> -0E+2 Inexact Rounded
resx031 rescale -0.9   +1   -> -0E+1 Inexact Rounded
resx032 rescale -0.9   +0   -> -1 Inexact Rounded
resx033 rescale -0.9   -1   -> -0.9
resx034 rescale -0.9   -2   -> -0.90
resx035 rescale -0.9   -3   -> -0.900
resx036 rescale -0.5   +2   -> -0E+2 Inexact Rounded
resx037 rescale -0.5   +1   -> -0E+1 Inexact Rounded
resx038 rescale -0.5   +0   -> -1 Inexact Rounded
resx039 rescale -0.5   -1   -> -0.5
resx040 rescale -0.5   -2   -> -0.50
resx041 rescale -0.5   -3   -> -0.500
resx042 rescale -0.9   +2   -> -0E+2 Inexact Rounded
resx043 rescale -0.9   +1   -> -0E+1 Inexact Rounded
resx044 rescale -0.9   +0   -> -1 Inexact Rounded
resx045 rescale -0.9   -1   -> -0.9
resx046 rescale -0.9   -2   -> -0.90
resx047 rescale -0.9   -3   -> -0.900

-- examples from Specification
resx060 rescale 2.17   -3   -> 2.170
resx061 rescale 2.17   -2   -> 2.17
resx062 rescale 2.17   -1   -> 2.2 Inexact Rounded
resx063 rescale 2.17    0   -> 2 Inexact Rounded
resx064 rescale 2.17   +1   -> 0E+1 Inexact Rounded
resx065 rescale 2      Inf  -> NaN Invalid_operation
resx066 rescale -0.1    0   -> -0 Inexact Rounded
resx067 rescale -0      5   -> -0E+5
resx068 rescale +35236450.6 -2 -> Infinity Overflow Inexact Rounded
resx069 rescale -35236450.6 -2 -> -Infinity Overflow Inexact Rounded
resx070 rescale 217    -1   -> 217.0
resx071 rescale 217     0   -> 217
resx072 rescale 217    +1   -> 2.2E+2 Inexact Rounded
resx073 rescale 217    +2   -> 2E+2 Inexact Rounded

-- general tests ..
resx089 rescale 12     +4   -> 0E+4 Inexact Rounded
resx090 rescale 12     +3   -> 0E+3 Inexact Rounded
resx091 rescale 12     +2   -> 0E+2 Inexact Rounded
resx092 rescale 12     +1   -> 1E+1 Inexact Rounded
resx093 rescale 1.2345 -2   -> 1.23 Inexact Rounded
resx094 rescale 1.2355 -2   -> 1.24 Inexact Rounded
resx095 rescale 1.2345 -6   -> 1.234500
resx096 rescale 9.9999 -2   -> 10.00 Inexact Rounded
resx097 rescale 0.0001 -2   -> 0.00 Inexact Rounded
resx098 rescale 0.001  -2   -> 0.00 Inexact Rounded
resx099 rescale 0.009  -2   -> 0.01 Inexact Rounded
resx100 rescale 92     +2   -> 1E+2 Inexact Rounded

resx101 rescale -1      0   ->  -1
resx102 rescale -1     -1   ->  -1.0
resx103 rescale -1     -2   ->  -1.00
resx104 rescale  0      0   ->  0
resx105 rescale  0     -1   ->  0.0
resx106 rescale  0     -2   ->  0.00
resx107 rescale  0.00   0   ->  0
resx108 rescale  0     +1   ->  0E+1
resx109 rescale  0     +2   ->  0E+2
resx110 rescale +1      0   ->  1
resx111 rescale +1     -1   ->  1.0
resx112 rescale +1     -2   ->  1.00

resx120 rescale   1.04  -3 ->  1.040
resx121 rescale   1.04  -2 ->  1.04
resx122 rescale   1.04  -1 ->  1.0 Inexact Rounded
resx123 rescale   1.04   0 ->  1 Inexact Rounded
resx124 rescale   1.05  -3 ->  1.050
resx125 rescale   1.05  -2 ->  1.05
resx126 rescale   1.05  -1 ->  1.1 Inexact Rounded
resx127 rescale   1.05   0 ->  1 Inexact Rounded
resx128 rescale   1.05  -3 ->  1.050
resx129 rescale   1.05  -2 ->  1.05
resx130 rescale   1.05  -1 ->  1.1 Inexact Rounded
resx131 rescale   1.05   0 ->  1 Inexact Rounded
resx132 rescale   1.06  -3 ->  1.060
resx133 rescale   1.06  -2 ->  1.06
resx134 rescale   1.06  -1 ->  1.1 Inexact Rounded
resx135 rescale   1.06   0 ->  1 Inexact Rounded

resx140 rescale   -10    -2  ->  -10.00
resx141 rescale   +1     -2  ->  1.00
resx142 rescale   +10    -2  ->  10.00
resx143 rescale   1E+10  -2  ->  Infinity Overflow Inexact Rounded
resx144 rescale   1E-10  -2  ->  0.00 Inexact Rounded
resx145 rescale   1E-3   -2  ->  0.00 Inexact Rounded
resx146 rescale   1E-2   -2  ->  0.01
resx147 rescale   1E-1   -2  ->  0.10
resx148 rescale   0E-10  -2  ->  0.00

resx150 rescale   1.0600 -5 ->  1.06000
resx151 rescale   1.0600 -4 ->  1.0600
resx152 rescale   1.0600 -3 ->  1.060 Rounded
resx153 rescale   1.0600 -2 ->  1.06 Rounded
resx154 rescale   1.0600 -1 ->  1.1 Inexact Rounded
resx155 rescale   1.0600  0 ->  1 Inexact Rounded

-- +ve exponents ..
resx201 rescale   -1   +0 ->  -1
resx202 rescale   -1   +1 ->  -0E+1 Inexact Rounded
resx203 rescale   -1   +2 ->  -0E+2 Inexact Rounded
resx204 rescale    0   +0 ->  0
resx205 rescale    0   +1 ->  0E+1
resx206 rescale    0   +2 ->  0E+2
resx207 rescale   +1   +0 ->  1
resx208 rescale   +1   +1 ->  0E+1 Inexact Rounded
resx209 rescale   +1   +2 ->  0E+2 Inexact Rounded

resx220 rescale   1.04 +3 ->  0E+3 Inexact Rounded
resx221 rescale   1.04 +2 ->  0E+2 Inexact Rounded
resx222 rescale   1.04 +1 ->  0E+1 Inexact Rounded
resx223 rescale   1.04 +0 ->  1 Inexact Rounded
resx224 rescale   1.05 +3 ->  0E+3 Inexact Rounded
resx225 rescale   1.05 +2 ->  0E+2 Inexact Rounded
resx226 rescale   1.05 +1 ->  0E+1 Inexact Rounded
resx227 rescale   1.05 +0 ->  1 Inexact Rounded
resx228 rescale   1.05 +3 ->  0E+3 Inexact Rounded
resx229 rescale   1.05 +2 ->  0E+2 Inexact Rounded
resx230 rescale   1.05 +1 ->  0E+1 Inexact Rounded
resx231 rescale   1.05 +0 ->  1 Inexact Rounded
resx232 rescale   1.06 +3 ->  0E+3 Inexact Rounded
resx233 rescale   1.06 +2 ->  0E+2 Inexact Rounded
resx234 rescale   1.06 +1 ->  0E+1 Inexact Rounded
resx235 rescale   1.06 +0 ->  1 Inexact Rounded

resx240 rescale   -10   +1  ->  -1E+1 Rounded
resx241 rescale   +1    +1  ->  0E+1 Inexact Rounded
resx242 rescale   +10   +1  ->  1E+1 Rounded
resx243 rescale   1E+1  +1  ->  1E+1          -- underneath this is E+1
resx244 rescale   1E+2  +1  ->  1.0E+2        -- underneath this is E+1
resx245 rescale   1E+3  +1  ->  1.00E+3       -- underneath this is E+1
resx246 rescale   1E+4  +1  ->  1.000E+4      -- underneath this is E+1
resx247 rescale   1E+5  +1  ->  1.0000E+5     -- underneath this is E+1
resx248 rescale   1E+6  +1  ->  1.00000E+6    -- underneath this is E+1
resx249 rescale   1E+7  +1  ->  1.000000E+7   -- underneath this is E+1
resx250 rescale   1E+8  +1  ->  1.0000000E+8  -- underneath this is E+1
resx251 rescale   1E+9  +1  ->  1.00000000E+9 -- underneath this is E+1
-- next one tries to add 9 zeros
resx252 rescale   1E+10 +1  ->  Infinity Overflow Inexact Rounded
resx253 rescale   1E-10 +1  ->  0E+1 Inexact Rounded
resx254 rescale   1E-2  +1  ->  0E+1 Inexact Rounded
resx255 rescale   0E-10 +1  ->  0E+1
resx256 rescale  -0E-10 +1  -> -0E+1
resx257 rescale  -0E-1  +1  -> -0E+1
resx258 rescale  -0     +1  -> -0E+1
resx259 rescale  -0E+1  +1  -> -0E+1

resx260 rescale   -10   +2  ->  -0E+2 Inexact Rounded
resx261 rescale   +1    +2  ->  0E+2 Inexact Rounded
resx262 rescale   +10   +2  ->  0E+2 Inexact Rounded
resx263 rescale   1E+1  +2  ->  0E+2 Inexact Rounded
resx264 rescale   1E+2  +2  ->  1E+2
resx265 rescale   1E+3  +2  ->  1.0E+3
resx266 rescale   1E+4  +2  ->  1.00E+4
resx267 rescale   1E+5  +2  ->  1.000E+5
resx268 rescale   1E+6  +2  ->  1.0000E+6
resx269 rescale   1E+7  +2  ->  1.00000E+7
resx270 rescale   1E+8  +2  ->  1.000000E+8
resx271 rescale   1E+9  +2  ->  1.0000000E+9
resx272 rescale   1E+10 +2  ->  1.00000000E+10
resx273 rescale   1E-10 +2  ->  0E+2 Inexact Rounded
resx274 rescale   1E-2  +2  ->  0E+2 Inexact Rounded
resx275 rescale   0E-10 +2  ->  0E+2

resx280 rescale   -10   +3  ->  -0E+3 Inexact Rounded
resx281 rescale   +1    +3  ->  0E+3 Inexact Rounded
resx282 rescale   +10   +3  ->  0E+3 Inexact Rounded
resx283 rescale   1E+1  +3  ->  0E+3 Inexact Rounded
resx284 rescale   1E+2  +3  ->  0E+3 Inexact Rounded
resx285 rescale   1E+3  +3  ->  1E+3
resx286 rescale   1E+4  +3  ->  1.0E+4
resx287 rescale   1E+5  +3  ->  1.00E+5
resx288 rescale   1E+6  +3  ->  1.000E+6
resx289 rescale   1E+7  +3  ->  1.0000E+7
resx290 rescale   1E+8  +3  ->  1.00000E+8
resx291 rescale   1E+9  +3  ->  1.000000E+9
resx292 rescale   1E+10 +3  ->  1.0000000E+10
resx293 rescale   1E-10 +3  ->  0E+3 Inexact Rounded
resx294 rescale   1E-2  +3  ->  0E+3 Inexact Rounded
resx295 rescale   0E-10 +3  ->  0E+3

-- round up from below [sign wrong in JIT compiler once]
resx300 rescale   0.0078 -5 ->  0.00780
resx301 rescale   0.0078 -4 ->  0.0078
resx302 rescale   0.0078 -3 ->  0.008 Inexact Rounded
resx303 rescale   0.0078 -2 ->  0.01 Inexact Rounded
resx304 rescale   0.0078 -1 ->  0.0 Inexact Rounded
resx305 rescale   0.0078  0 ->  0 Inexact Rounded
resx306 rescale   0.0078 +1 ->  0E+1 Inexact Rounded
resx307 rescale   0.0078 +2 ->  0E+2 Inexact Rounded

resx310 rescale  -0.0078 -5 -> -0.00780
resx311 rescale  -0.0078 -4 -> -0.0078
resx312 rescale  -0.0078 -3 -> -0.008 Inexact Rounded
resx313 rescale  -0.0078 -2 -> -0.01 Inexact Rounded
resx314 rescale  -0.0078 -1 -> -0.0 Inexact Rounded
resx315 rescale  -0.0078  0 -> -0 Inexact Rounded
resx316 rescale  -0.0078 +1 -> -0E+1 Inexact Rounded
resx317 rescale  -0.0078 +2 -> -0E+2 Inexact Rounded

resx320 rescale   0.078 -5 ->  0.07800
resx321 rescale   0.078 -4 ->  0.0780
resx322 rescale   0.078 -3 ->  0.078
resx323 rescale   0.078 -2 ->  0.08 Inexact Rounded
resx324 rescale   0.078 -1 ->  0.1 Inexact Rounded
resx325 rescale   0.078  0 ->  0 Inexact Rounded
resx326 rescale   0.078 +1 ->  0E+1 Inexact Rounded
resx327 rescale   0.078 +2 ->  0E+2 Inexact Rounded

resx330 rescale  -0.078 -5 -> -0.07800
resx331 rescale  -0.078 -4 -> -0.0780
resx332 rescale  -0.078 -3 -> -0.078
resx333 rescale  -0.078 -2 -> -0.08 Inexact Rounded
resx334 rescale  -0.078 -1 -> -0.1 Inexact Rounded
resx335 rescale  -0.078  0 -> -0 Inexact Rounded
resx336 rescale  -0.078 +1 -> -0E+1 Inexact Rounded
resx337 rescale  -0.078 +2 -> -0E+2 Inexact Rounded

resx340 rescale   0.78 -5 ->  0.78000
resx341 rescale   0.78 -4 ->  0.7800
resx342 rescale   0.78 -3 ->  0.780
resx343 rescale   0.78 -2 ->  0.78
resx344 rescale   0.78 -1 ->  0.8 Inexact Rounded
resx345 rescale   0.78  0 ->  1 Inexact Rounded
resx346 rescale   0.78 +1 ->  0E+1 Inexact Rounded
resx347 rescale   0.78 +2 ->  0E+2 Inexact Rounded

resx350 rescale  -0.78 -5 -> -0.78000
resx351 rescale  -0.78 -4 -> -0.7800
resx352 rescale  -0.78 -3 -> -0.780
resx353 rescale  -0.78 -2 -> -0.78
resx354 rescale  -0.78 -1 -> -0.8 Inexact Rounded
resx355 rescale  -0.78  0 -> -1 Inexact Rounded
resx356 rescale  -0.78 +1 -> -0E+1 Inexact Rounded
resx357 rescale  -0.78 +2 -> -0E+2 Inexact Rounded

resx360 rescale   7.8 -5 ->  7.80000
resx361 rescale   7.8 -4 ->  7.8000
resx362 rescale   7.8 -3 ->  7.800
resx363 rescale   7.8 -2 ->  7.80
resx364 rescale   7.8 -1 ->  7.8
resx365 rescale   7.8  0 ->  8 Inexact Rounded
resx366 rescale   7.8 +1 ->  1E+1 Inexact Rounded
resx367 rescale   7.8 +2 ->  0E+2 Inexact Rounded
resx368 rescale   7.8 +3 ->  0E+3 Inexact Rounded

resx370 rescale  -7.8 -5 -> -7.80000
resx371 rescale  -7.8 -4 -> -7.8000
resx372 rescale  -7.8 -3 -> -7.800
resx373 rescale  -7.8 -2 -> -7.80
resx374 rescale  -7.8 -1 -> -7.8
resx375 rescale  -7.8  0 -> -8 Inexact Rounded
resx376 rescale  -7.8 +1 -> -1E+1 Inexact Rounded
resx377 rescale  -7.8 +2 -> -0E+2 Inexact Rounded
resx378 rescale  -7.8 +3 -> -0E+3 Inexact Rounded

-- some individuals
precision: 9
resx380 rescale   352364.506 -2 -> 352364.51 Inexact Rounded
resx381 rescale   3523645.06 -2 -> 3523645.06
resx382 rescale   35236450.6 -2 -> Infinity Overflow Inexact Rounded
resx383 rescale   352364506  -2 -> Infinity Overflow Inexact Rounded
resx384 rescale  -352364.506 -2 -> -352364.51 Inexact Rounded
resx385 rescale  -3523645.06 -2 -> -3523645.06
resx386 rescale  -35236450.6 -2 -> -Infinity Overflow Inexact Rounded
resx387 rescale  -352364506  -2 -> -Infinity Overflow Inexact Rounded

-- some 9999 round-up cases
resx400 rescale   9.999        -5  ->  9.99900
resx401 rescale   9.999        -4  ->  9.9990
resx402 rescale   9.999        -3  ->  9.999
resx403 rescale   9.999        -2  -> 10.00     Inexact Rounded
resx404 rescale   9.999        -1  -> 10.0      Inexact Rounded
resx405 rescale   9.999         0  -> 10        Inexact Rounded
resx406 rescale   9.999         1  -> 1E+1      Inexact Rounded
resx407 rescale   9.999         2  -> 0E+2      Inexact Rounded

resx410 rescale   0.999        -5  ->  0.99900
resx411 rescale   0.999        -4  ->  0.9990
resx412 rescale   0.999        -3  ->  0.999
resx413 rescale   0.999        -2  ->  1.00     Inexact Rounded
resx414 rescale   0.999        -1  ->  1.0      Inexact Rounded
resx415 rescale   0.999         0  ->  1        Inexact Rounded
resx416 rescale   0.999         1  -> 0E+1      Inexact Rounded

resx420 rescale   0.0999       -5  ->  0.09990
resx421 rescale   0.0999       -4  ->  0.0999
resx422 rescale   0.0999       -3  ->  0.100    Inexact Rounded
resx423 rescale   0.0999       -2  ->  0.10     Inexact Rounded
resx424 rescale   0.0999       -1  ->  0.1      Inexact Rounded
resx425 rescale   0.0999        0  ->  0        Inexact Rounded
resx426 rescale   0.0999        1  -> 0E+1      Inexact Rounded

resx430 rescale   0.00999      -5  ->  0.00999
resx431 rescale   0.00999      -4  ->  0.0100   Inexact Rounded
resx432 rescale   0.00999      -3  ->  0.010    Inexact Rounded
resx433 rescale   0.00999      -2  ->  0.01     Inexact Rounded
resx434 rescale   0.00999      -1  ->  0.0      Inexact Rounded
resx435 rescale   0.00999       0  ->  0        Inexact Rounded
resx436 rescale   0.00999       1  -> 0E+1      Inexact Rounded

resx440 rescale   0.000999     -5  ->  0.00100  Inexact Rounded
resx441 rescale   0.000999     -4  ->  0.0010   Inexact Rounded
resx442 rescale   0.000999     -3  ->  0.001    Inexact Rounded
resx443 rescale   0.000999     -2  ->  0.00     Inexact Rounded
resx444 rescale   0.000999     -1  ->  0.0      Inexact Rounded
resx445 rescale   0.000999      0  ->  0        Inexact Rounded
resx446 rescale   0.000999      1  -> 0E+1      Inexact Rounded

precision: 8
resx449 rescale   9.999E-15    -23 ->  Infinity Inexact Rounded Overflow
resx450 rescale   9.999E-15    -22 ->  9.9990000E-15
resx451 rescale   9.999E-15    -21 ->  9.999000E-15
resx452 rescale   9.999E-15    -20 ->  9.99900E-15
resx453 rescale   9.999E-15    -19 ->  9.9990E-15
resx454 rescale   9.999E-15    -18 ->  9.999E-15
resx455 rescale   9.999E-15    -17 ->  1.000E-14 Inexact Rounded
resx456 rescale   9.999E-15    -16 ->  1.00E-14  Inexact Rounded
resx457 rescale   9.999E-15    -15 ->  1.0E-14   Inexact Rounded
resx458 rescale   9.999E-15    -14 ->  1E-14     Inexact Rounded
resx459 rescale   9.999E-15    -13 ->  0E-13     Inexact Rounded
resx460 rescale   9.999E-15    -12 ->  0E-12     Inexact Rounded
resx461 rescale   9.999E-15    -11 ->  0E-11     Inexact Rounded
resx462 rescale   9.999E-15    -10 ->  0E-10     Inexact Rounded
resx463 rescale   9.999E-15     -9 ->  0E-9      Inexact Rounded
resx464 rescale   9.999E-15     -8 ->  0E-8      Inexact Rounded
resx465 rescale   9.999E-15     -7 ->  0E-7      Inexact Rounded
resx466 rescale   9.999E-15     -6 ->  0.000000  Inexact Rounded
resx467 rescale   9.999E-15     -5 ->  0.00000   Inexact Rounded
resx468 rescale   9.999E-15     -4 ->  0.0000    Inexact Rounded
resx469 rescale   9.999E-15     -3 ->  0.000     Inexact Rounded
resx470 rescale   9.999E-15     -2 ->  0.00      Inexact Rounded
resx471 rescale   9.999E-15     -1 ->  0.0       Inexact Rounded
resx472 rescale   9.999E-15      0 ->  0         Inexact Rounded
resx473 rescale   9.999E-15      1 ->  0E+1      Inexact Rounded

-- long operand checks [rhs checks removed]
maxexponent: 999
minexponent: -999
precision: 9
resx481 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
resx482 rescale 1234567800  +1 -> 1.23456780E+9 Rounded
resx483 rescale 1234567890  +1 -> 1.23456789E+9 Rounded
resx484 rescale 1234567891  +1 -> 1.23456789E+9 Inexact Rounded
resx485 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
resx486 rescale 1234567896  +1 -> 1.23456790E+9 Inexact Rounded
-- a potential double-round
resx487 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
resx488 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded

precision: 15
resx491 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
resx492 rescale 1234567800  +1 -> 1.23456780E+9 Rounded
resx493 rescale 1234567890  +1 -> 1.23456789E+9 Rounded
resx494 rescale 1234567891  +1 -> 1.23456789E+9 Inexact Rounded
resx495 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
resx496 rescale 1234567896  +1 -> 1.23456790E+9 Inexact Rounded
resx497 rescale 1234.987643 -4 -> 1234.9876 Inexact Rounded
resx498 rescale 1234.987647 -4 -> 1234.9876 Inexact Rounded

-- Zeros
resx500 rescale   0     1 ->  0E+1
resx501 rescale   0     0 ->  0
resx502 rescale   0    -1 ->  0.0
resx503 rescale   0.0  -1 ->  0.0
resx504 rescale   0.0   0 ->  0
resx505 rescale   0.0  +1 ->  0E+1
resx506 rescale   0E+1 -1 ->  0.0
resx507 rescale   0E+1  0 ->  0
resx508 rescale   0E+1 +1 ->  0E+1
resx509 rescale  -0     1 -> -0E+1
resx510 rescale  -0     0 -> -0
resx511 rescale  -0    -1 -> -0.0
resx512 rescale  -0.0  -1 -> -0.0
resx513 rescale  -0.0   0 -> -0
resx514 rescale  -0.0  +1 -> -0E+1
resx515 rescale  -0E+1 -1 -> -0.0
resx516 rescale  -0E+1  0 -> -0
resx517 rescale  -0E+1 +1 -> -0E+1

-- Suspicious RHS values
maxexponent: 999999999
minexponent: -999999999
precision: 15
resx521 rescale   1.234    999999E+3 -> 0E+999999000 Inexact Rounded
resx522 rescale 123.456    999999E+3 -> 0E+999999000 Inexact Rounded
resx523 rescale   1.234    999999999 -> 0E+999999999 Inexact Rounded
resx524 rescale 123.456    999999999 -> 0E+999999999 Inexact Rounded
resx525 rescale 123.456   1000000000 -> NaN Invalid_operation
resx526 rescale 123.456  12345678903 -> NaN Invalid_operation
-- next four are "won't fit" overflows
resx527 rescale   1.234   -999999E+3 -> Infinity Overflow Inexact Rounded
resx528 rescale 123.456   -999999E+3 -> Infinity Overflow Inexact Rounded
resx529 rescale   1.234   -999999999 -> Infinity Overflow Inexact Rounded
resx530 rescale 123.456   -999999999 -> Infinity Overflow Inexact Rounded
resx531 rescale 123.456  -1000000014 -> NaN Invalid_operation
resx532 rescale 123.456 -12345678903 -> NaN Invalid_operation

maxexponent: 999
minexponent: -999
precision: 15
resx540 rescale   1.234E+999    999 -> 1E+999    Inexact Rounded
resx541 rescale   1.234E+998    999 -> 0E+999    Inexact Rounded
resx542 rescale   1.234         999 -> 0E+999    Inexact Rounded
resx543 rescale   1.234        1000 -> NaN Invalid_operation
resx544 rescale   1.234        5000 -> NaN Invalid_operation

resx545 rescale   0        -999 -> 0E-999
-- next two are "won't fit" overflows
resx546 rescale   1.234    -999 -> Infinity  Overflow Inexact Rounded
resx547 rescale   1.234   -1000 -> Infinity  Overflow Inexact Rounded
resx548 rescale   1.234   -5000 -> NaN Invalid_operation
-- [more below]

-- fractional RHS, some good and some bad
precision: 9
resx549 rescale   222 +2.0           -> 2E+2 Inexact Rounded
resx550 rescale   222 +2.00000000    -> 2E+2 Inexact Rounded
resx551 rescale   222 +2.00100000000 -> NaN Invalid_operation
resx552 rescale   222 +2.000001      -> NaN Invalid_operation
resx553 rescale   222 +2.000000001   -> NaN Invalid_operation
resx554 rescale   222 +2.0000000001  -> NaN Invalid_operation
resx555 rescale   222 +2.00000000001 -> NaN Invalid_operation
resx556 rescale   222 +2.99999999999 -> NaN Invalid_operation
resx557 rescale   222 -2.00000000    -> 222.00
resx558 rescale   222 -2.00100000000 -> NaN Invalid_operation
resx559 rescale   222 -2.0000001000  -> NaN Invalid_operation
resx560 rescale   222 -2.00000000001 -> NaN Invalid_operation
resx561 rescale   222 -2.99999999999 -> NaN Invalid_operation


-- Specials
resx580 rescale  Inf  -Inf   ->  NaN  Invalid_operation
resx581 rescale  Inf  -1000  ->  Infinity
resx582 rescale  Inf  -1     ->  Infinity
resx583 rescale  Inf   0     ->  Infinity
resx584 rescale  Inf   1     ->  Infinity
resx585 rescale  Inf   1000  ->  Infinity
resx586 rescale  Inf   Inf   ->  NaN  Invalid_operation
resx587 rescale -1000  Inf   ->  NaN  Invalid_operation
resx588 rescale -Inf   Inf   ->  NaN  Invalid_operation
resx589 rescale -1     Inf   ->  NaN  Invalid_operation
resx590 rescale  0     Inf   ->  NaN  Invalid_operation
resx591 rescale  1     Inf   ->  NaN  Invalid_operation
resx592 rescale  1000  Inf   ->  NaN  Invalid_operation
resx593 rescale  Inf   Inf   ->  NaN  Invalid_operation
resx594 rescale  Inf  -0     ->  Infinity
resx595 rescale -0     Inf   ->  NaN  Invalid_operation

resx600 rescale -Inf  -Inf   ->  NaN  Invalid_operation
resx601 rescale -Inf  -1000  ->  -Infinity
resx602 rescale -Inf  -1     ->  -Infinity
resx603 rescale -Inf   0     ->  -Infinity
resx604 rescale -Inf   1     ->  -Infinity
resx605 rescale -Inf   1000  ->  -Infinity
resx606 rescale -Inf   Inf   ->  NaN  Invalid_operation
resx607 rescale -1000  Inf   ->  NaN  Invalid_operation
resx608 rescale -Inf  -Inf   ->  NaN  Invalid_operation
resx609 rescale -1    -Inf   ->  NaN  Invalid_operation
resx610 rescale  0    -Inf   ->  NaN  Invalid_operation
resx611 rescale  1    -Inf   ->  NaN  Invalid_operation
resx612 rescale  1000 -Inf   ->  NaN  Invalid_operation
resx613 rescale  Inf  -Inf   ->  NaN  Invalid_operation
resx614 rescale -Inf  -0     ->  -Infinity
resx615 rescale -0    -Inf   ->  NaN  Invalid_operation

resx621 rescale  NaN -Inf    ->  NaN  Invalid_operation
resx622 rescale  NaN -1000   ->  NaN
resx623 rescale  NaN -1      ->  NaN
resx624 rescale  NaN  0      ->  NaN
resx625 rescale  NaN  1      ->  NaN
resx626 rescale  NaN  1000   ->  NaN
resx627 rescale  NaN  Inf    ->  NaN  Invalid_operation
resx628 rescale  NaN  NaN    ->  NaN
resx629 rescale -Inf  NaN    ->  NaN
resx630 rescale -1000 NaN    ->  NaN
resx631 rescale -1    NaN    ->  NaN
resx632 rescale  0    NaN    ->  NaN
resx633 rescale  1    NaN    ->  NaN
resx634 rescale  1000 NaN    ->  NaN
resx635 rescale  Inf  NaN    ->  NaN
resx636 rescale  NaN -0      ->  NaN
resx637 rescale -0    NaN    ->  NaN

resx641 rescale  sNaN -Inf   ->  NaN  Invalid_operation
resx642 rescale  sNaN -1000  ->  NaN  Invalid_operation
resx643 rescale  sNaN -1     ->  NaN  Invalid_operation
resx644 rescale  sNaN  0     ->  NaN  Invalid_operation
resx645 rescale  sNaN  1     ->  NaN  Invalid_operation
resx646 rescale  sNaN  1000  ->  NaN  Invalid_operation
resx647 rescale  sNaN  NaN   ->  NaN  Invalid_operation
resx648 rescale  sNaN sNaN   ->  NaN  Invalid_operation
resx649 rescale  NaN  sNaN   ->  NaN  Invalid_operation
resx650 rescale -Inf  sNaN   ->  NaN  Invalid_operation
resx651 rescale -1000 sNaN   ->  NaN  Invalid_operation
resx652 rescale -1    sNaN   ->  NaN  Invalid_operation
resx653 rescale  0    sNaN   ->  NaN  Invalid_operation
resx654 rescale  1    sNaN   ->  NaN  Invalid_operation
resx655 rescale  1000 sNaN   ->  NaN  Invalid_operation
resx656 rescale  Inf  sNaN   ->  NaN  Invalid_operation
resx657 rescale  NaN  sNaN   ->  NaN  Invalid_operation
resx658 rescale  sNaN -0     ->  NaN  Invalid_operation
resx659 rescale -0    sNaN   ->  NaN  Invalid_operation

-- subnormals and underflow
precision: 4
maxexponent: 999
minexponent: -999
resx710 rescale  1.00E-999    -999  ->   1E-999    Rounded
resx711 rescale  0.1E-999    -1000  ->   1E-1000   Subnormal
resx712 rescale  0.10E-999   -1000  ->   1E-1000   Subnormal Rounded
resx713 rescale  0.100E-999  -1000  ->   1E-1000   Subnormal Rounded
resx714 rescale  0.01E-999   -1001  ->   1E-1001   Subnormal
-- next is rounded to Emin
resx715 rescale  0.999E-999   -999  ->   1E-999    Inexact Rounded
resx716 rescale  0.099E-999  -1000  ->   1E-1000   Inexact Rounded Subnormal Underflow

resx717 rescale  0.009E-999  -1001  ->   1E-1001   Inexact Rounded Subnormal Underflow
resx718 rescale  0.001E-999  -1001  ->   0E-1001   Inexact Rounded
resx719 rescale  0.0009E-999 -1001  ->   0E-1001   Inexact Rounded
resx720 rescale  0.0001E-999 -1001  ->   0E-1001   Inexact Rounded

resx730 rescale -1.00E-999   -999  ->  -1E-999     Rounded
resx731 rescale -0.1E-999    -999  ->  -0E-999     Rounded Inexact
resx732 rescale -0.10E-999   -999  ->  -0E-999     Rounded Inexact
resx733 rescale -0.100E-999  -999  ->  -0E-999     Rounded Inexact
resx734 rescale -0.01E-999   -999  ->  -0E-999     Inexact Rounded
-- next is rounded to Emin
resx735 rescale -0.999E-999  -999  ->  -1E-999     Inexact Rounded
resx736 rescale -0.099E-999  -999  ->  -0E-999     Inexact Rounded
resx737 rescale -0.009E-999  -999  ->  -0E-999     Inexact Rounded
resx738 rescale -0.001E-999  -999  ->  -0E-999     Inexact Rounded
resx739 rescale -0.0001E-999 -999  ->  -0E-999     Inexact Rounded

resx740 rescale -1.00E-999   -1000 ->  -1.0E-999   Rounded
resx741 rescale -0.1E-999    -1000 ->  -1E-1000    Subnormal
resx742 rescale -0.10E-999   -1000 ->  -1E-1000    Subnormal Rounded
resx743 rescale -0.100E-999  -1000 ->  -1E-1000    Subnormal Rounded
resx744 rescale -0.01E-999   -1000 ->  -0E-1000    Inexact Rounded
-- next is rounded to Emin
resx745 rescale -0.999E-999  -1000 ->  -1.0E-999   Inexact Rounded
resx746 rescale -0.099E-999  -1000 ->  -1E-1000    Inexact Rounded Subnormal Underflow
resx747 rescale -0.009E-999  -1000 ->  -0E-1000    Inexact Rounded
resx748 rescale -0.001E-999  -1000 ->  -0E-1000    Inexact Rounded
resx749 rescale -0.0001E-999 -1000 ->  -0E-1000    Inexact Rounded

resx750 rescale -1.00E-999   -1001 ->  -1.00E-999
resx751 rescale -0.1E-999    -1001 ->  -1.0E-1000  Subnormal
resx752 rescale -0.10E-999   -1001 ->  -1.0E-1000  Subnormal
resx753 rescale -0.100E-999  -1001 ->  -1.0E-1000  Subnormal Rounded
resx754 rescale -0.01E-999   -1001 ->  -1E-1001    Subnormal
-- next is rounded to Emin
resx755 rescale -0.999E-999  -1001 ->  -1.00E-999  Inexact Rounded
resx756 rescale -0.099E-999  -1001 ->  -1.0E-1000  Inexact Rounded Subnormal Underflow
resx757 rescale -0.009E-999  -1001 ->  -1E-1001    Inexact Rounded Subnormal Underflow
resx758 rescale -0.001E-999  -1001 ->  -0E-1001    Inexact Rounded
resx759 rescale -0.0001E-999 -1001 ->  -0E-1001    Inexact Rounded

resx760 rescale -1.00E-999   -1002 ->  -1.000E-999
resx761 rescale -0.1E-999    -1002 ->  -1.00E-1000  Subnormal
resx762 rescale -0.10E-999   -1002 ->  -1.00E-1000  Subnormal
resx763 rescale -0.100E-999  -1002 ->  -1.00E-1000  Subnormal
resx764 rescale -0.01E-999   -1002 ->  -1.0E-1001   Subnormal
resx765 rescale -0.999E-999  -1002 ->  -9.99E-1000  Subnormal
resx766 rescale -0.099E-999  -1002 ->  -9.9E-1001   Subnormal
resx767 rescale -0.009E-999  -1002 ->  -9E-1002     Subnormal
resx768 rescale -0.001E-999  -1002 ->  -1E-1002     Subnormal
resx769 rescale -0.0001E-999 -1002 ->  -0E-1002     Inexact Rounded

-- rhs must be no less than Etiny
resx770 rescale -1.00E-999   -1003 ->  NaN Invalid_operation
resx771 rescale -0.1E-999    -1003 ->  NaN Invalid_operation
resx772 rescale -0.10E-999   -1003 ->  NaN Invalid_operation
resx773 rescale -0.100E-999  -1003 ->  NaN Invalid_operation
resx774 rescale -0.01E-999   -1003 ->  NaN Invalid_operation
resx775 rescale -0.999E-999  -1003 ->  NaN Invalid_operation
resx776 rescale -0.099E-999  -1003 ->  NaN Invalid_operation
resx777 rescale -0.009E-999  -1003 ->  NaN Invalid_operation
resx778 rescale -0.001E-999  -1003 ->  NaN Invalid_operation
resx779 rescale -0.0001E-999 -1003 ->  NaN Invalid_operation

precision:   9
maxExponent: 999999999
minexponent: -999999999

-- getInt worries
resx801 rescale   0   1000000000 -> NaN Invalid_operation
resx802 rescale   0  -1000000000 -> 0E-1000000000
resx803 rescale   0   2000000000 -> NaN Invalid_operation
resx804 rescale   0  -2000000000 -> NaN Invalid_operation
resx805 rescale   0   3000000000 -> NaN Invalid_operation
resx806 rescale   0  -3000000000 -> NaN Invalid_operation
resx807 rescale   0   4000000000 -> NaN Invalid_operation
resx808 rescale   0  -4000000000 -> NaN Invalid_operation
resx809 rescale   0   5000000000 -> NaN Invalid_operation
resx810 rescale   0  -5000000000 -> NaN Invalid_operation
resx811 rescale   0   6000000000 -> NaN Invalid_operation
resx812 rescale   0  -6000000000 -> NaN Invalid_operation
resx813 rescale   0   7000000000 -> NaN Invalid_operation
resx814 rescale   0  -7000000000 -> NaN Invalid_operation
resx815 rescale   0   8000000000 -> NaN Invalid_operation
resx816 rescale   0  -8000000000 -> NaN Invalid_operation
resx817 rescale   0   9000000000 -> NaN Invalid_operation
resx818 rescale   0  -9000000000 -> NaN Invalid_operation
resx819 rescale   0   9999999999 -> NaN Invalid_operation
resx820 rescale   0  -9999999999 -> NaN Invalid_operation
resx821 rescale   0   10000000000 -> NaN Invalid_operation
resx822 rescale   0  -10000000000 -> NaN Invalid_operation

resx831 rescale   1   0E-1       -> 1
resx832 rescale   1   0E-2       -> 1
resx833 rescale   1   0E-3       -> 1
resx834 rescale   1   0E-4       -> 1
resx835 rescale   1   0E-100     -> 1
resx836 rescale   1   0E-100000  -> 1
resx837 rescale   1   0E+100     -> 1
resx838 rescale   1   0E+100000  -> 1

resx841 rescale   0   5E-1000000 -> NaN Invalid_operation
resx842 rescale   0   5E-1000000 -> NaN Invalid_operation
resx843 rescale   0    999999999 -> 0E+999999999
resx844 rescale   0   1000000000 -> NaN Invalid_operation
resx845 rescale   0   -999999999 -> 0E-999999999
resx846 rescale   0  -1000000000 -> 0E-1000000000
resx847 rescale   0  -1000000001 -> 0E-1000000001
resx848 rescale   0  -1000000002 -> 0E-1000000002
resx849 rescale   0  -1000000003 -> 0E-1000000003
resx850 rescale   0  -1000000004 -> 0E-1000000004
resx851 rescale   0  -1000000005 -> 0E-1000000005
resx852 rescale   0  -1000000006 -> 0E-1000000006
resx853 rescale   0  -1000000007 -> 0E-1000000007
resx854 rescale   0  -1000000008 -> NaN Invalid_operation

resx861 rescale   1  +2147483649 -> NaN Invalid_operation
resx862 rescale   1  +2147483648 -> NaN Invalid_operation
resx863 rescale   1  +2147483647 -> NaN Invalid_operation
resx864 rescale   1  -2147483647 -> NaN Invalid_operation
resx865 rescale   1  -2147483648 -> NaN Invalid_operation
resx866 rescale   1  -2147483649 -> NaN Invalid_operation

-- Null tests
res900 rescale 10  # -> NaN Invalid_operation
res901 rescale  # 10 -> NaN Invalid_operation

--- NEW FILE: remainderNear.decTest ---
------------------------------------------------------------------------
-- remainderNear.decTest -- decimal remainder-near (IEEE remainder)   --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

rmnx001 remaindernear  1     1    ->  0
rmnx002 remaindernear  2     1    ->  0
rmnx003 remaindernear  1     2    ->  1
rmnx004 remaindernear  2     2    ->  0
rmnx005 remaindernear  0     1    ->  0
rmnx006 remaindernear  0     2    ->  0
rmnx007 remaindernear  1     3    ->  1
rmnx008 remaindernear  2     3    -> -1
rmnx009 remaindernear  3     3    ->  0

rmnx010 remaindernear  2.4   1    ->  0.4
rmnx011 remaindernear  2.4   -1   ->  0.4
rmnx012 remaindernear  -2.4  1    ->  -0.4
rmnx013 remaindernear  -2.4  -1   ->  -0.4
rmnx014 remaindernear  2.40  1    ->  0.40
rmnx015 remaindernear  2.400 1    ->  0.400
rmnx016 remaindernear  2.4   2    ->  0.4
rmnx017 remaindernear  2.400 2    ->  0.400
rmnx018 remaindernear  2.    2    ->  0
rmnx019 remaindernear  20    20   ->  0

rmnx020 remaindernear  187   187    ->  0
rmnx021 remaindernear  5     2      ->  1
rmnx022 remaindernear  5     2.0    ->  1.0
rmnx023 remaindernear  5     2.000  ->  1.000
rmnx024 remaindernear  5     0.200  ->  0
rmnx025 remaindernear  5     0.200  ->  0

rmnx030 remaindernear  1     2      ->  1
rmnx031 remaindernear  1     4      ->  1
rmnx032 remaindernear  1     8      ->  1
rmnx033 remaindernear  1     16     ->  1
rmnx034 remaindernear  1     32     ->  1
rmnx035 remaindernear  1     64     ->  1
rmnx040 remaindernear  1    -2      ->  1
rmnx041 remaindernear  1    -4      ->  1
rmnx042 remaindernear  1    -8      ->  1
rmnx043 remaindernear  1    -16     ->  1
rmnx044 remaindernear  1    -32     ->  1
rmnx045 remaindernear  1    -64     ->  1
rmnx050 remaindernear -1     2      ->  -1
rmnx051 remaindernear -1     4      ->  -1
rmnx052 remaindernear -1     8      ->  -1
rmnx053 remaindernear -1     16     ->  -1
rmnx054 remaindernear -1     32     ->  -1
rmnx055 remaindernear -1     64     ->  -1
rmnx060 remaindernear -1    -2      ->  -1
rmnx061 remaindernear -1    -4      ->  -1
rmnx062 remaindernear -1    -8      ->  -1
rmnx063 remaindernear -1    -16     ->  -1
rmnx064 remaindernear -1    -32     ->  -1
rmnx065 remaindernear -1    -64     ->  -1

rmnx066 remaindernear  999999997     1  -> 0
rmnx067 remaindernear  999999997.4   1  -> 0.4
rmnx068 remaindernear  999999997.5   1  -> -0.5
rmnx069 remaindernear  999999997.9   1  -> -0.1
rmnx070 remaindernear  999999997.999 1  -> -0.001

rmnx071 remaindernear  999999998     1  -> 0
rmnx072 remaindernear  999999998.4   1  -> 0.4
rmnx073 remaindernear  999999998.5   1  -> 0.5
rmnx074 remaindernear  999999998.9   1  -> -0.1
rmnx075 remaindernear  999999998.999 1  -> -0.001

rmnx076 remaindernear  999999999     1  -> 0
rmnx077 remaindernear  999999999.4   1  -> 0.4
rmnx078 remaindernear  999999999.5   1  -> NaN Division_impossible
rmnx079 remaindernear  999999999.9   1  -> NaN Division_impossible
rmnx080 remaindernear  999999999.999 1  -> NaN Division_impossible

precision: 6
rmnx081 remaindernear  999999999     1  -> NaN Division_impossible
rmnx082 remaindernear  99999999      1  -> NaN Division_impossible
rmnx083 remaindernear  9999999       1  -> NaN Division_impossible
rmnx084 remaindernear  999999        1  -> 0
rmnx085 remaindernear  99999         1  -> 0
rmnx086 remaindernear  9999          1  -> 0
rmnx087 remaindernear  999           1  -> 0
rmnx088 remaindernear  99            1  -> 0
rmnx089 remaindernear  9             1  -> 0

precision: 9
rmnx090 remaindernear  0.            1  -> 0
rmnx091 remaindernear  .0            1  -> 0.0
rmnx092 remaindernear  0.00          1  -> 0.00
rmnx093 remaindernear  0.00E+9       1  -> 0
rmnx094 remaindernear  0.0000E-50    1  -> 0E-54


-- Various flavours of remaindernear by 0
precision: 9
maxexponent: 999999999
minexponent: -999999999
rmnx101 remaindernear  0       0   -> NaN Division_undefined
rmnx102 remaindernear  0      -0   -> NaN Division_undefined
rmnx103 remaindernear -0       0   -> NaN Division_undefined
rmnx104 remaindernear -0      -0   -> NaN Division_undefined
rmnx105 remaindernear  0.0E5   0   -> NaN Division_undefined
rmnx106 remaindernear  0.000   0   -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception,
-- but IEEE 854 is explicit that it is Invalid operation .. for
-- remaindernear-near, anyway]
rmnx107 remaindernear  0.0001  0   -> NaN Invalid_operation
rmnx108 remaindernear  0.01    0   -> NaN Invalid_operation
rmnx109 remaindernear  0.1     0   -> NaN Invalid_operation
rmnx110 remaindernear  1       0   -> NaN Invalid_operation
rmnx111 remaindernear  1       0.0 -> NaN Invalid_operation
rmnx112 remaindernear 10       0.0 -> NaN Invalid_operation
rmnx113 remaindernear 1E+100   0.0 -> NaN Invalid_operation
rmnx114 remaindernear 1E+1000  0   -> NaN Invalid_operation
rmnx115 remaindernear  0.0001 -0   -> NaN Invalid_operation
rmnx116 remaindernear  0.01   -0   -> NaN Invalid_operation
rmnx119 remaindernear  0.1    -0   -> NaN Invalid_operation
rmnx120 remaindernear  1      -0   -> NaN Invalid_operation
rmnx121 remaindernear  1      -0.0 -> NaN Invalid_operation
rmnx122 remaindernear 10      -0.0 -> NaN Invalid_operation
rmnx123 remaindernear 1E+100  -0.0 -> NaN Invalid_operation
rmnx124 remaindernear 1E+1000 -0   -> NaN Invalid_operation
-- and zeros on left
rmnx130 remaindernear  0      1   ->  0
rmnx131 remaindernear  0     -1   ->  0
rmnx132 remaindernear  0.0    1   ->  0.0
rmnx133 remaindernear  0.0   -1   ->  0.0
rmnx134 remaindernear -0      1   -> -0
rmnx135 remaindernear -0     -1   -> -0
rmnx136 remaindernear -0.0    1   -> -0.0
rmnx137 remaindernear -0.0   -1   -> -0.0

-- 0.5ers
rmmx143 remaindernear   0.5  2     ->  0.5
rmmx144 remaindernear   0.5  2.1   ->  0.5
rmmx145 remaindernear   0.5  2.01  ->  0.5
rmmx146 remaindernear   0.5  2.001 ->  0.5
rmmx147 remaindernear   0.50 2     ->  0.50
rmmx148 remaindernear   0.50 2.01  ->  0.50
rmmx149 remaindernear   0.50 2.001 ->  0.50

-- some differences from remainder
rmnx150 remaindernear   0.4  1.020 ->  0.4
rmnx151 remaindernear   0.50 1.020 ->  0.50
rmnx152 remaindernear   0.51 1.020 ->  0.51
rmnx153 remaindernear   0.52 1.020 -> -0.500
rmnx154 remaindernear   0.6  1.020 -> -0.420
rmnx155 remaindernear   0.49 1     ->  0.49
rmnx156 remaindernear   0.50 1     ->  0.50
rmnx157 remaindernear   1.50 1     -> -0.50
rmnx158 remaindernear   2.50 1     ->  0.50
rmnx159 remaindernear   9.50 1     -> -0.50
rmnx160 remaindernear   0.51 1     -> -0.49

-- the nasty division-by-1 cases
rmnx161 remaindernear   0.4         1   ->  0.4
rmnx162 remaindernear   0.45        1   ->  0.45
rmnx163 remaindernear   0.455       1   ->  0.455
rmnx164 remaindernear   0.4555      1   ->  0.4555
rmnx165 remaindernear   0.45555     1   ->  0.45555
rmnx166 remaindernear   0.455555    1   ->  0.455555
rmnx167 remaindernear   0.4555555   1   ->  0.4555555
rmnx168 remaindernear   0.45555555  1   ->  0.45555555
rmnx169 remaindernear   0.455555555 1   ->  0.455555555
-- with spill...
rmnx171 remaindernear   0.5         1   ->  0.5
rmnx172 remaindernear   0.55        1   -> -0.45
rmnx173 remaindernear   0.555       1   -> -0.445
rmnx174 remaindernear   0.5555      1   -> -0.4445
rmnx175 remaindernear   0.55555     1   -> -0.44445
rmnx176 remaindernear   0.555555    1   -> -0.444445
rmnx177 remaindernear   0.5555555   1   -> -0.4444445
rmnx178 remaindernear   0.55555555  1   -> -0.44444445
rmnx179 remaindernear   0.555555555 1   -> -0.444444445

-- progression
rmnx180 remaindernear  1  1   -> 0
rmnx181 remaindernear  1  2   -> 1
rmnx182 remaindernear  1  3   -> 1
rmnx183 remaindernear  1  4   -> 1
rmnx184 remaindernear  1  5   -> 1
rmnx185 remaindernear  1  6   -> 1
rmnx186 remaindernear  1  7   -> 1
rmnx187 remaindernear  1  8   -> 1
rmnx188 remaindernear  1  9   -> 1
rmnx189 remaindernear  1  10  -> 1
rmnx190 remaindernear  1  1   -> 0
rmnx191 remaindernear  2  1   -> 0
rmnx192 remaindernear  3  1   -> 0
rmnx193 remaindernear  4  1   -> 0
rmnx194 remaindernear  5  1   -> 0
rmnx195 remaindernear  6  1   -> 0
rmnx196 remaindernear  7  1   -> 0
rmnx197 remaindernear  8  1   -> 0
rmnx198 remaindernear  9  1   -> 0
rmnx199 remaindernear  10 1   -> 0


-- Various flavours of remaindernear by 0
maxexponent: 999999999
minexponent: -999999999
rmnx201 remaindernear  0      0   -> NaN Division_undefined
rmnx202 remaindernear  0.0E5  0   -> NaN Division_undefined
rmnx203 remaindernear  0.000  0   -> NaN Division_undefined
rmnx204 remaindernear  0.0001 0   -> NaN Invalid_operation
rmnx205 remaindernear  0.01   0   -> NaN Invalid_operation
rmnx206 remaindernear  0.1    0   -> NaN Invalid_operation
rmnx207 remaindernear  1      0   -> NaN Invalid_operation
rmnx208 remaindernear  1      0.0 -> NaN Invalid_operation
rmnx209 remaindernear 10      0.0 -> NaN Invalid_operation
rmnx210 remaindernear 1E+100  0.0 -> NaN Invalid_operation
rmnx211 remaindernear 1E+1000 0   -> NaN Invalid_operation

-- tests from the extended specification
rmnx221 remaindernear 2.1     3   -> -0.9
rmnx222 remaindernear  10     6   -> -2
rmnx223 remaindernear  10     3   ->  1
rmnx224 remaindernear -10     3   -> -1
rmnx225 remaindernear  10.2   1   -> 0.2
rmnx226 remaindernear  10     0.3 -> 0.1
rmnx227 remaindernear   3.6   1.3 -> -0.3

-- some differences from remainder
rmnx231 remaindernear   0.4  1.020 ->  0.4
rmnx232 remaindernear   0.50 1.020 ->  0.50
rmnx233 remaindernear   0.51 1.020 ->  0.51
rmnx234 remaindernear   0.52 1.020 -> -0.500
rmnx235 remaindernear   0.6  1.020 -> -0.420

-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
rmnx270 remaindernear 1 1e999999999    -> 1
rmnx271 remaindernear 1 0.9e999999999  -> 1
rmnx272 remaindernear 1 0.99e999999999 -> 1
rmnx273 remaindernear 1 0.999999999e999999999 -> 1
rmnx274 remaindernear 9e999999999          1 -> NaN Division_impossible
rmnx275 remaindernear 9.9e999999999        1 -> NaN Division_impossible
rmnx276 remaindernear 9.99e999999999       1 -> NaN Division_impossible
rmnx277 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible

rmnx280 remaindernear 0.1 9e-999999999       -> NaN Division_impossible
rmnx281 remaindernear 0.1 99e-999999999      -> NaN Division_impossible
rmnx282 remaindernear 0.1 999e-999999999     -> NaN Division_impossible

rmnx283 remaindernear 0.1 9e-999999998       -> NaN Division_impossible
rmnx284 remaindernear 0.1 99e-999999998      -> NaN Division_impossible
rmnx285 remaindernear 0.1 999e-999999998     -> NaN Division_impossible
rmnx286 remaindernear 0.1 999e-999999997     -> NaN Division_impossible
rmnx287 remaindernear 0.1 9999e-999999997    -> NaN Division_impossible
rmnx288 remaindernear 0.1 99999e-999999997   -> NaN Division_impossible

-- rmnx3xx are from DiagBigDecimal
rmnx301 remaindernear   1    3     ->  1
rmnx302 remaindernear   5    5     ->  0
rmnx303 remaindernear   13   10    ->  3
rmnx304 remaindernear   13   50    ->  13
rmnx305 remaindernear   13   100   ->  13
rmnx306 remaindernear   13   1000  ->  13
rmnx307 remaindernear   .13    1   ->  0.13
rmnx308 remaindernear   0.133  1   ->  0.133
rmnx309 remaindernear   0.1033 1   ->  0.1033
rmnx310 remaindernear   1.033  1   ->  0.033
rmnx311 remaindernear   10.33  1   ->  0.33
rmnx312 remaindernear   10.33 10   ->  0.33
rmnx313 remaindernear   103.3  1   ->  0.3
rmnx314 remaindernear   133   10   ->  3
rmnx315 remaindernear   1033  10   ->  3
rmnx316 remaindernear   1033  50   -> -17
rmnx317 remaindernear   101.0  3   -> -1.0
rmnx318 remaindernear   102.0  3   ->  0
rmnx319 remaindernear   103.0  3   ->  1.0
rmnx320 remaindernear   2.40   1   ->  0.40
rmnx321 remaindernear   2.400  1   ->  0.400
rmnx322 remaindernear   2.4    1   ->  0.4
rmnx323 remaindernear   2.4    2   ->  0.4
rmnx324 remaindernear   2.400  2   ->  0.400
rmnx325 remaindernear   1   0.3    ->  0.1
rmnx326 remaindernear   1   0.30   ->  0.10
rmnx327 remaindernear   1   0.300  ->  0.100
rmnx328 remaindernear   1   0.3000 ->  0.1000
rmnx329 remaindernear   1.0    0.3 ->  0.1
rmnx330 remaindernear   1.00   0.3 ->  0.10
rmnx331 remaindernear   1.000  0.3 ->  0.100
rmnx332 remaindernear   1.0000 0.3 ->  0.1000
rmnx333 remaindernear   0.5  2     ->  0.5
rmnx334 remaindernear   0.5  2.1   ->  0.5
rmnx335 remaindernear   0.5  2.01  ->  0.5
rmnx336 remaindernear   0.5  2.001 ->  0.5
rmnx337 remaindernear   0.50 2     ->  0.50
rmnx338 remaindernear   0.50 2.01  ->  0.50
rmnx339 remaindernear   0.50 2.001 ->  0.50

rmnx340 remaindernear   0.5   0.5000001    ->  -1E-7
rmnx341 remaindernear   0.5   0.50000001    ->  -1E-8
rmnx342 remaindernear   0.5   0.500000001    ->  -1E-9
rmnx343 remaindernear   0.5   0.5000000001    ->  -1E-10
rmnx344 remaindernear   0.5   0.50000000001    ->  -1E-11
rmnx345 remaindernear   0.5   0.4999999    ->  1E-7
rmnx346 remaindernear   0.5   0.49999999    ->  1E-8
rmnx347 remaindernear   0.5   0.499999999    ->  1E-9
rmnx348 remaindernear   0.5   0.4999999999    ->  1E-10
rmnx349 remaindernear   0.5   0.49999999999    ->  1E-11

rmnx350 remaindernear   0.03  7  ->  0.03
rmnx351 remaindernear   5   2    ->  1
rmnx352 remaindernear   4.1   2    ->  0.1
rmnx353 remaindernear   4.01   2    ->  0.01
rmnx354 remaindernear   4.001   2    ->  0.001
rmnx355 remaindernear   4.0001   2    ->  0.0001
rmnx356 remaindernear   4.00001   2    ->  0.00001
rmnx357 remaindernear   4.000001   2    ->  0.000001
rmnx358 remaindernear   4.0000001   2    ->  1E-7

rmnx360 remaindernear   1.2   0.7345 -> -0.2690
rmnx361 remaindernear   0.8   12     ->  0.8
rmnx362 remaindernear   0.8   0.2    ->  0
rmnx363 remaindernear   0.8   0.3    -> -0.1
rmnx364 remaindernear   0.800   12   ->  0.800
rmnx365 remaindernear   0.800   1.7  ->  0.800
rmnx366 remaindernear   2.400   2    ->  0.400

precision: 6
rmnx371 remaindernear   2.400  2        ->  0.400
precision: 3
rmnx372 remaindernear   12345678900000 12e+12 -> 3.46E+11 Inexact Rounded

precision: 5
rmnx381 remaindernear 12345  1         ->  0
rmnx382 remaindernear 12345  1.0001    -> -0.2344
rmnx383 remaindernear 12345  1.001     -> -0.333
rmnx384 remaindernear 12345  1.01      -> -0.23
rmnx385 remaindernear 12345  1.1       -> -0.3
rmnx386 remaindernear 12355  4         -> -1
rmnx387 remaindernear 12345  4         ->  1
rmnx388 remaindernear 12355  4.0001    -> -1.3089
rmnx389 remaindernear 12345  4.0001    ->  0.6914
rmnx390 remaindernear 12345  4.9       ->  1.9
rmnx391 remaindernear 12345  4.99      -> -0.26
rmnx392 remaindernear 12345  4.999     ->  2.469
rmnx393 remaindernear 12345  4.9999    ->  0.2469
rmnx394 remaindernear 12345  5         ->  0
rmnx395 remaindernear 12345  5.0001    -> -0.2469
rmnx396 remaindernear 12345  5.001     -> -2.469
rmnx397 remaindernear 12345  5.01      ->  0.36
rmnx398 remaindernear 12345  5.1       -> -2.1

precision: 9
-- some nasty division-by-1 cases [some similar above]
rmnx401 remaindernear   0.4         1   ->  0.4
rmnx402 remaindernear   0.45        1   ->  0.45
rmnx403 remaindernear   0.455       1   ->  0.455
rmnx404 remaindernear   0.4555      1   ->  0.4555
rmnx405 remaindernear   0.45555     1   ->  0.45555
rmnx406 remaindernear   0.455555    1   ->  0.455555
rmnx407 remaindernear   0.4555555   1   ->  0.4555555
rmnx408 remaindernear   0.45555555  1   ->  0.45555555
rmnx409 remaindernear   0.455555555 1   ->  0.455555555

-- some tricky LHSs
rmnx420 remaindernear   99999999.999999999   1E+8   -> -1E-9
rmnx421 remaindernear  999999999.999999999   1E+9   -> -1E-9
precision: 9
rmnx430 remaindernear   0.455555555 1   ->  0.455555555
precision: 8
rmnx431 remaindernear   0.455555555 1   ->  0.45555556 Inexact Rounded
precision: 7
rmnx432 remaindernear   0.455555555 1   ->  0.4555556  Inexact Rounded
precision: 6
rmnx433 remaindernear   0.455555555 1   ->  0.455556   Inexact Rounded
precision: 5
rmnx434 remaindernear   0.455555555 1   ->  0.45556    Inexact Rounded
precision: 4
rmnx435 remaindernear   0.455555555 1   ->  0.4556     Inexact Rounded
precision: 3
rmnx436 remaindernear   0.455555555 1   ->  0.456      Inexact Rounded
precision: 2
rmnx437 remaindernear   0.455555555 1   ->  0.46       Inexact Rounded
precision: 1
rmnx438 remaindernear   0.455555555 1   ->  0.5        Inexact Rounded

-- early tests; from text descriptions
precision: 9
rmnx601 remaindernear  10   6  -> -2
rmnx602 remaindernear -10   6  -> 2
rmnx603 remaindernear  11   3  -> -1
rmnx604 remaindernear  11   5  -> 1
rmnx605 remaindernear   7.7 8  -> -0.3
rmnx606 remaindernear  31.5 3  -> 1.5    -- i=10
rmnx607 remaindernear  34.5 3  -> -1.5   -- i=11

-- Specials
rmnx680 remaindernear  Inf  -Inf   ->  NaN Invalid_operation
rmnx681 remaindernear  Inf  -1000  ->  NaN Invalid_operation
rmnx682 remaindernear  Inf  -1     ->  NaN Invalid_operation
rmnx683 remaindernear  Inf   0     ->  NaN Invalid_operation
rmnx684 remaindernear  Inf  -0     ->  NaN Invalid_operation
rmnx685 remaindernear  Inf   1     ->  NaN Invalid_operation
rmnx686 remaindernear  Inf   1000  ->  NaN Invalid_operation
rmnx687 remaindernear  Inf   Inf   ->  NaN Invalid_operation
rmnx688 remaindernear -1000  Inf   -> -1000
rmnx689 remaindernear -Inf   Inf   ->  NaN Invalid_operation
rmnx691 remaindernear -1     Inf   -> -1
rmnx692 remaindernear  0     Inf   ->  0
rmnx693 remaindernear -0     Inf   -> -0
rmnx694 remaindernear  1     Inf   ->  1
rmnx695 remaindernear  1000  Inf   ->  1000
rmnx696 remaindernear  Inf   Inf   ->  NaN Invalid_operation

rmnx700 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
rmnx701 remaindernear -Inf  -1000  ->  NaN Invalid_operation
rmnx702 remaindernear -Inf  -1     ->  NaN Invalid_operation
rmnx703 remaindernear -Inf  -0     ->  NaN Invalid_operation
rmnx704 remaindernear -Inf   0     ->  NaN Invalid_operation
rmnx705 remaindernear -Inf   1     ->  NaN Invalid_operation
rmnx706 remaindernear -Inf   1000  ->  NaN Invalid_operation
rmnx707 remaindernear -Inf   Inf   ->  NaN Invalid_operation
rmnx708 remaindernear -Inf  -Inf   ->  NaN Invalid_operation
rmnx709 remaindernear -1000  Inf   -> -1000
rmnx710 remaindernear -1    -Inf   -> -1
rmnx711 remaindernear -0    -Inf   -> -0
rmnx712 remaindernear  0    -Inf   ->  0
rmnx713 remaindernear  1    -Inf   ->  1
rmnx714 remaindernear  1000 -Inf   ->  1000
rmnx715 remaindernear  Inf  -Inf   ->  NaN Invalid_operation

rmnx721 remaindernear  NaN -Inf    ->  NaN
rmnx722 remaindernear  NaN -1000   ->  NaN
rmnx723 remaindernear  NaN -1      ->  NaN
rmnx724 remaindernear  NaN -0      ->  NaN
rmnx725 remaindernear  NaN  0      ->  NaN
rmnx726 remaindernear  NaN  1      ->  NaN
rmnx727 remaindernear  NaN  1000   ->  NaN
rmnx728 remaindernear  NaN  Inf    ->  NaN
rmnx729 remaindernear  NaN  NaN    ->  NaN
rmnx730 remaindernear -Inf  NaN    ->  NaN
rmnx731 remaindernear -1000 NaN    ->  NaN
rmnx732 remaindernear -1    NaN    ->  NaN
rmnx733 remaindernear -0    NaN    ->  NaN
rmnx734 remaindernear  0    NaN    ->  NaN
rmnx735 remaindernear  1    NaN    ->  NaN
rmnx736 remaindernear  1000 NaN    ->  NaN
rmnx737 remaindernear  Inf  NaN    ->  NaN

rmnx741 remaindernear  sNaN -Inf   ->  NaN  Invalid_operation
rmnx742 remaindernear  sNaN -1000  ->  NaN  Invalid_operation
rmnx743 remaindernear  sNaN -1     ->  NaN  Invalid_operation
rmnx744 remaindernear  sNaN -0     ->  NaN  Invalid_operation
rmnx745 remaindernear  sNaN  0     ->  NaN  Invalid_operation
rmnx746 remaindernear  sNaN  1     ->  NaN  Invalid_operation
rmnx747 remaindernear  sNaN  1000  ->  NaN  Invalid_operation
rmnx749 remaindernear  sNaN  NaN   ->  NaN  Invalid_operation
rmnx750 remaindernear  sNaN sNaN   ->  NaN  Invalid_operation
rmnx751 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation
rmnx752 remaindernear -Inf  sNaN   ->  NaN  Invalid_operation
rmnx753 remaindernear -1000 sNaN   ->  NaN  Invalid_operation
rmnx754 remaindernear -1    sNaN   ->  NaN  Invalid_operation
rmnx755 remaindernear -0    sNaN   ->  NaN  Invalid_operation
rmnx756 remaindernear  0    sNaN   ->  NaN  Invalid_operation
rmnx757 remaindernear  1    sNaN   ->  NaN  Invalid_operation
rmnx758 remaindernear  1000 sNaN   ->  NaN  Invalid_operation
rmnx759 remaindernear  Inf  sNaN   ->  NaN  Invalid_operation
rmnx760 remaindernear  NaN  sNaN   ->  NaN  Invalid_operation

-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
rmnx770 remaindernear 1 1e999999999    -> 1
rmnx771 remaindernear 1 0.9e999999999  -> 1
rmnx772 remaindernear 1 0.99e999999999 -> 1
rmnx773 remaindernear 1 0.999999999e999999999 -> 1
rmnx774 remaindernear 9e999999999          1 -> NaN Division_impossible
rmnx775 remaindernear 9.9e999999999        1 -> NaN Division_impossible
rmnx776 remaindernear 9.99e999999999       1 -> NaN Division_impossible
rmnx777 remaindernear 9.99999999e999999999 1 -> NaN Division_impossible


-- overflow and underflow tests [from divide]
precision: 9
maxexponent: 999999999
minexponent: -999999999
rmnx780 remaindernear +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
rmnx781 remaindernear 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
rmnx782 remaindernear +0.100 9E+999999999               -> 0.100
rmnx783 remaindernear 9E-999999999 +9.100               -> 9E-999999999
rmnx785 remaindernear -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
rmnx786 remaindernear 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
rmnx787 remaindernear -0.100 9E+999999999               -> -0.100
rmnx788 remaindernear 9E-999999999 -9.100               -> 9E-999999999

-- long operands checks
maxexponent: 999
minexponent: -999
precision: 9
rmnx801 remaindernear 12345678000 100 -> 0
rmnx802 remaindernear 1 12345678000   -> 1
rmnx803 remaindernear 1234567800  10  -> 0
rmnx804 remaindernear 1 1234567800    -> 1
rmnx805 remaindernear 1234567890  10  -> 0
rmnx806 remaindernear 1 1234567890    -> 1
rmnx807 remaindernear 1234567891  10  -> 1
rmnx808 remaindernear 1 1234567891    -> 1
rmnx809 remaindernear 12345678901 100 -> 1
rmnx810 remaindernear 1 12345678901   -> 1
rmnx811 remaindernear 1234567896  10  -> -4
rmnx812 remaindernear 1 1234567896    -> 1

precision: 15
rmnx841 remaindernear 12345678000 100 -> 0
rmnx842 remaindernear 1 12345678000   -> 1
rmnx843 remaindernear 1234567800  10  -> 0
rmnx844 remaindernear 1 1234567800    -> 1
rmnx845 remaindernear 1234567890  10  -> 0
rmnx846 remaindernear 1 1234567890    -> 1
rmnx847 remaindernear 1234567891  10  -> 1
rmnx848 remaindernear 1 1234567891    -> 1
rmnx849 remaindernear 12345678901 100 -> 1
rmnx850 remaindernear 1 12345678901   -> 1
rmnx851 remaindernear 1234567896  10  -> -4
rmnx852 remaindernear 1 1234567896    -> 1

-- Null tests
rmnx900 remaindernear 10  # -> NaN Invalid_operation
rmnx901 remaindernear  # 10 -> NaN Invalid_operation

--- NEW FILE: remainder.decTest ---
------------------------------------------------------------------------
-- remainder.decTest -- decimal remainder                             --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks (as base, above)
remx001 remainder  1     1    ->  0
remx002 remainder  2     1    ->  0
remx003 remainder  1     2    ->  1
remx004 remainder  2     2    ->  0
remx005 remainder  0     1    ->  0
remx006 remainder  0     2    ->  0
remx007 remainder  1     3    ->  1
remx008 remainder  2     3    ->  2
remx009 remainder  3     3    ->  0

remx010 remainder  2.4   1    ->  0.4
remx011 remainder  2.4   -1   ->  0.4
remx012 remainder  -2.4  1    ->  -0.4
remx013 remainder  -2.4  -1   ->  -0.4
remx014 remainder  2.40  1    ->  0.40
remx015 remainder  2.400 1    ->  0.400
remx016 remainder  2.4   2    ->  0.4
remx017 remainder  2.400 2    ->  0.400
remx018 remainder  2.    2    ->  0
remx019 remainder  20    20   ->  0

remx020 remainder  187   187    ->  0
remx021 remainder  5     2      ->  1
remx022 remainder  5     2.0    ->  1.0
remx023 remainder  5     2.000  ->  1.000
remx024 remainder  5     0.200  ->  0
remx025 remainder  5     0.200  ->  0

remx030 remainder  1     2      ->  1
remx031 remainder  1     4      ->  1
remx032 remainder  1     8      ->  1

remx033 remainder  1     16     ->  1
remx034 remainder  1     32     ->  1
remx035 remainder  1     64     ->  1
remx040 remainder  1    -2      ->  1
remx041 remainder  1    -4      ->  1
remx042 remainder  1    -8      ->  1
remx043 remainder  1    -16     ->  1
remx044 remainder  1    -32     ->  1
remx045 remainder  1    -64     ->  1
remx050 remainder -1     2      ->  -1
remx051 remainder -1     4      ->  -1
remx052 remainder -1     8      ->  -1
remx053 remainder -1     16     ->  -1
remx054 remainder -1     32     ->  -1
remx055 remainder -1     64     ->  -1
remx060 remainder -1    -2      ->  -1
remx061 remainder -1    -4      ->  -1
remx062 remainder -1    -8      ->  -1
remx063 remainder -1    -16     ->  -1
remx064 remainder -1    -32     ->  -1
remx065 remainder -1    -64     ->  -1

remx066 remainder  999999999     1  -> 0
remx067 remainder  999999999.4   1  -> 0.4
remx068 remainder  999999999.5   1  -> 0.5
remx069 remainder  999999999.9   1  -> 0.9
remx070 remainder  999999999.999 1  -> 0.999
precision: 6
remx071 remainder  999999999     1  -> NaN Division_impossible
remx072 remainder  99999999      1  -> NaN Division_impossible
remx073 remainder  9999999       1  -> NaN Division_impossible
remx074 remainder  999999        1  -> 0
remx075 remainder  99999         1  -> 0
remx076 remainder  9999          1  -> 0
remx077 remainder  999           1  -> 0
remx078 remainder  99            1  -> 0
remx079 remainder  9             1  -> 0

precision: 9
remx080 remainder  0.            1  -> 0
remx081 remainder  .0            1  -> 0.0
remx082 remainder  0.00          1  -> 0.00
remx083 remainder  0.00E+9       1  -> 0
remx084 remainder  0.00E+3       1  -> 0
remx085 remainder  0.00E+2       1  -> 0
remx086 remainder  0.00E+1       1  -> 0.0
remx087 remainder  0.00E+0       1  -> 0.00
remx088 remainder  0.00E-0       1  -> 0.00
remx089 remainder  0.00E-1       1  -> 0.000
remx090 remainder  0.00E-2       1  -> 0.0000
remx091 remainder  0.00E-3       1  -> 0.00000
remx092 remainder  0.00E-4       1  -> 0.000000
remx093 remainder  0.00E-5       1  -> 0E-7
remx094 remainder  0.00E-6       1  -> 0E-8
remx095 remainder  0.0000E-50    1  -> 0E-54

-- Various flavours of remainder by 0
precision: 9
maxexponent: 999999999
minexponent: -999999999
remx101 remainder  0       0   -> NaN Division_undefined
remx102 remainder  0      -0   -> NaN Division_undefined
remx103 remainder -0       0   -> NaN Division_undefined
remx104 remainder -0      -0   -> NaN Division_undefined
remx105 remainder  0.0E5   0   -> NaN Division_undefined
remx106 remainder  0.000   0   -> NaN Division_undefined
-- [Some think this next group should be Division_by_zero exception, but
-- IEEE 854 is explicit that it is Invalid operation .. for
-- remainder-near, anyway]
remx107 remainder  0.0001  0   -> NaN Invalid_operation
remx108 remainder  0.01    0   -> NaN Invalid_operation
remx109 remainder  0.1     0   -> NaN Invalid_operation
remx110 remainder  1       0   -> NaN Invalid_operation
remx111 remainder  1       0.0 -> NaN Invalid_operation
remx112 remainder 10       0.0 -> NaN Invalid_operation
remx113 remainder 1E+100   0.0 -> NaN Invalid_operation
remx114 remainder 1E+1000  0   -> NaN Invalid_operation
remx115 remainder  0.0001 -0   -> NaN Invalid_operation
remx116 remainder  0.01   -0   -> NaN Invalid_operation
remx119 remainder  0.1    -0   -> NaN Invalid_operation
remx120 remainder  1      -0   -> NaN Invalid_operation
remx121 remainder  1      -0.0 -> NaN Invalid_operation
remx122 remainder 10      -0.0 -> NaN Invalid_operation
remx123 remainder 1E+100  -0.0 -> NaN Invalid_operation
remx124 remainder 1E+1000 -0   -> NaN Invalid_operation
-- and zeros on left
remx130 remainder  0      1   ->  0
remx131 remainder  0     -1   ->  0
remx132 remainder  0.0    1   ->  0.0
remx133 remainder  0.0   -1   ->  0.0
remx134 remainder -0      1   -> -0
remx135 remainder -0     -1   -> -0
remx136 remainder -0.0    1   -> -0.0
remx137 remainder -0.0   -1   -> -0.0

-- 0.5ers
remx143 remainder   0.5  2     ->  0.5
remx144 remainder   0.5  2.1   ->  0.5
remx145 remainder   0.5  2.01  ->  0.5
remx146 remainder   0.5  2.001 ->  0.5
remx147 remainder   0.50 2     ->  0.50
remx148 remainder   0.50 2.01  ->  0.50
remx149 remainder   0.50 2.001 ->  0.50

-- steadies
remx150 remainder  1  1   -> 0
remx151 remainder  1  2   -> 1
remx152 remainder  1  3   -> 1
remx153 remainder  1  4   -> 1
remx154 remainder  1  5   -> 1
remx155 remainder  1  6   -> 1
remx156 remainder  1  7   -> 1
remx157 remainder  1  8   -> 1
remx158 remainder  1  9   -> 1
remx159 remainder  1  10  -> 1
remx160 remainder  1  1   -> 0
remx161 remainder  2  1   -> 0
remx162 remainder  3  1   -> 0
remx163 remainder  4  1   -> 0
remx164 remainder  5  1   -> 0
remx165 remainder  6  1   -> 0
remx166 remainder  7  1   -> 0
remx167 remainder  8  1   -> 0
remx168 remainder  9  1   -> 0
remx169 remainder  10 1   -> 0

-- some differences from remainderNear
remx171 remainder   0.4  1.020 ->  0.4
remx172 remainder   0.50 1.020 ->  0.50
remx173 remainder   0.51 1.020 ->  0.51
remx174 remainder   0.52 1.020 ->  0.52
remx175 remainder   0.6  1.020 ->  0.6


-- More flavours of remainder by 0
maxexponent: 999999999
minexponent: -999999999
remx201 remainder  0      0   -> NaN Division_undefined
remx202 remainder  0.0E5  0   -> NaN Division_undefined
remx203 remainder  0.000  0   -> NaN Division_undefined
remx204 remainder  0.0001 0   -> NaN Invalid_operation
remx205 remainder  0.01   0   -> NaN Invalid_operation
remx206 remainder  0.1    0   -> NaN Invalid_operation
remx207 remainder  1      0   -> NaN Invalid_operation
remx208 remainder  1      0.0 -> NaN Invalid_operation
remx209 remainder 10      0.0 -> NaN Invalid_operation
remx210 remainder 1E+100  0.0 -> NaN Invalid_operation
remx211 remainder 1E+1000 0   -> NaN Invalid_operation

-- some differences from remainderNear
remx231 remainder   0.4  1.020 ->  0.4
remx232 remainder   0.50 1.020 ->  0.50
remx233 remainder   0.51 1.020 ->  0.51
remx234 remainder   0.52 1.020 ->  0.52
remx235 remainder   0.6  1.020 ->  0.6

-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
remx270 remainder 1 1e999999999    -> 1
remx271 remainder 1 0.9e999999999  -> 1
remx272 remainder 1 0.99e999999999 -> 1
remx273 remainder 1 0.999999999e999999999 -> 1
remx274 remainder 9e999999999          1 -> NaN Division_impossible
remx275 remainder 9.9e999999999        1 -> NaN Division_impossible
remx276 remainder 9.99e999999999       1 -> NaN Division_impossible
remx277 remainder 9.99999999e999999999 1 -> NaN Division_impossible

remx280 remainder 0.1 9e-999999999       -> NaN Division_impossible
remx281 remainder 0.1 99e-999999999      -> NaN Division_impossible
remx282 remainder 0.1 999e-999999999     -> NaN Division_impossible

remx283 remainder 0.1 9e-999999998       -> NaN Division_impossible
remx284 remainder 0.1 99e-999999998      -> NaN Division_impossible
remx285 remainder 0.1 999e-999999998     -> NaN Division_impossible
remx286 remainder 0.1 999e-999999997     -> NaN Division_impossible
remx287 remainder 0.1 9999e-999999997    -> NaN Division_impossible
remx288 remainder 0.1 99999e-999999997   -> NaN Division_impossible

-- remx3xx are from DiagBigDecimal
remx301 remainder   1    3     ->  1
remx302 remainder   5    5     ->  0
remx303 remainder   13   10    ->  3
remx304 remainder   13   50    ->  13
remx305 remainder   13   100   ->  13
remx306 remainder   13   1000  ->  13
remx307 remainder   .13    1   ->  0.13
remx308 remainder   0.133  1   ->  0.133
remx309 remainder   0.1033 1   ->  0.1033
remx310 remainder   1.033  1   ->  0.033
remx311 remainder   10.33  1   ->  0.33
remx312 remainder   10.33 10   ->  0.33
remx313 remainder   103.3  1   ->  0.3
remx314 remainder   133   10   ->  3
remx315 remainder   1033  10   ->  3
remx316 remainder   1033  50   ->  33
remx317 remainder   101.0  3   ->  2.0
remx318 remainder   102.0  3   ->  0
remx319 remainder   103.0  3   ->  1.0
remx320 remainder   2.40   1   ->  0.40
remx321 remainder   2.400  1   ->  0.400
remx322 remainder   2.4    1   ->  0.4
remx323 remainder   2.4    2   ->  0.4
remx324 remainder   2.400  2   ->  0.400
remx325 remainder   1   0.3    ->  0.1
remx326 remainder   1   0.30   ->  0.10
remx327 remainder   1   0.300  ->  0.100
remx328 remainder   1   0.3000 ->  0.1000
remx329 remainder   1.0    0.3 ->  0.1
remx330 remainder   1.00   0.3 ->  0.10
remx331 remainder   1.000  0.3 ->  0.100
remx332 remainder   1.0000 0.3 ->  0.1000
remx333 remainder   0.5  2     ->  0.5
remx334 remainder   0.5  2.1   ->  0.5
remx335 remainder   0.5  2.01  ->  0.5
remx336 remainder   0.5  2.001 ->  0.5
remx337 remainder   0.50 2     ->  0.50
remx338 remainder   0.50 2.01  ->  0.50
remx339 remainder   0.50 2.001 ->  0.50

remx340 remainder   0.5   0.5000001    ->  0.5
remx341 remainder   0.5   0.50000001    ->  0.5
remx342 remainder   0.5   0.500000001    ->  0.5
remx343 remainder   0.5   0.5000000001    ->  0.5
remx344 remainder   0.5   0.50000000001    ->  0.5
remx345 remainder   0.5   0.4999999    ->  1E-7
remx346 remainder   0.5   0.49999999    ->  1E-8
remx347 remainder   0.5   0.499999999    ->  1E-9
remx348 remainder   0.5   0.4999999999    ->  1E-10
remx349 remainder   0.5   0.49999999999    ->  1E-11
remx350 remainder   0.5   0.499999999999    ->  1E-12

remx351 remainder   0.03  7  ->  0.03
remx352 remainder   5   2    ->  1
remx353 remainder   4.1   2    ->  0.1
remx354 remainder   4.01   2    ->  0.01
remx355 remainder   4.001   2    ->  0.001
remx356 remainder   4.0001   2    ->  0.0001
remx357 remainder   4.00001   2    ->  0.00001
remx358 remainder   4.000001   2    ->  0.000001
remx359 remainder   4.0000001   2    ->  1E-7

remx360 remainder   1.2   0.7345 ->  0.4655
remx361 remainder   0.8   12     ->  0.8
remx362 remainder   0.8   0.2    ->  0
remx363 remainder   0.8   0.3    ->  0.2
remx364 remainder   0.800   12   ->  0.800
remx365 remainder   0.800   1.7  ->  0.800
remx366 remainder   2.400   2    ->  0.400

precision: 6
remx371 remainder   2.400  2        ->  0.400
precision: 3
-- long operand case
remx372 remainder   12345678900000 12e+12 -> 3.46E+11 Inexact Rounded

precision: 5
remx381 remainder 12345  1         ->  0
remx382 remainder 12345  1.0001    ->  0.7657
remx383 remainder 12345  1.001     ->  0.668
remx384 remainder 12345  1.01      ->  0.78
remx385 remainder 12345  1.1       ->  0.8
remx386 remainder 12355  4         ->  3
remx387 remainder 12345  4         ->  1
remx388 remainder 12355  4.0001    ->  2.6912
remx389 remainder 12345  4.0001    ->  0.6914
remx390 remainder 12345  4.9       ->  1.9
remx391 remainder 12345  4.99      ->  4.73
remx392 remainder 12345  4.999     ->  2.469
remx393 remainder 12345  4.9999    ->  0.2469
remx394 remainder 12345  5         ->  0
remx395 remainder 12345  5.0001    ->  4.7532
remx396 remainder 12345  5.001     ->  2.532
remx397 remainder 12345  5.01      ->  0.36
remx398 remainder 12345  5.1       ->  3.0

precision: 9
-- the nasty division-by-1 cases
remx401 remainder   0.5         1   ->  0.5
remx402 remainder   0.55        1   ->  0.55
remx403 remainder   0.555       1   ->  0.555
remx404 remainder   0.5555      1   ->  0.5555
remx405 remainder   0.55555     1   ->  0.55555
remx406 remainder   0.555555    1   ->  0.555555
remx407 remainder   0.5555555   1   ->  0.5555555
remx408 remainder   0.55555555  1   ->  0.55555555
remx409 remainder   0.555555555 1   ->  0.555555555


-- Specials
remx680 remainder  Inf  -Inf   ->  NaN Invalid_operation
remx681 remainder  Inf  -1000  ->  NaN Invalid_operation
remx682 remainder  Inf  -1     ->  NaN Invalid_operation
remx683 remainder  Inf   0     ->  NaN Invalid_operation
remx684 remainder  Inf  -0     ->  NaN Invalid_operation
remx685 remainder  Inf   1     ->  NaN Invalid_operation
remx686 remainder  Inf   1000  ->  NaN Invalid_operation
remx687 remainder  Inf   Inf   ->  NaN Invalid_operation
remx688 remainder -1000  Inf   -> -1000
remx689 remainder -Inf   Inf   ->  NaN Invalid_operation
remx691 remainder -1     Inf   -> -1
remx692 remainder  0     Inf   ->  0
remx693 remainder -0     Inf   -> -0
remx694 remainder  1     Inf   ->  1
remx695 remainder  1000  Inf   ->  1000
remx696 remainder  Inf   Inf   ->  NaN Invalid_operation

remx700 remainder -Inf  -Inf   ->  NaN Invalid_operation
remx701 remainder -Inf  -1000  ->  NaN Invalid_operation
remx702 remainder -Inf  -1     ->  NaN Invalid_operation
remx703 remainder -Inf  -0     ->  NaN Invalid_operation
remx704 remainder -Inf   0     ->  NaN Invalid_operation
remx705 remainder -Inf   1     ->  NaN Invalid_operation
remx706 remainder -Inf   1000  ->  NaN Invalid_operation
remx707 remainder -Inf   Inf   ->  NaN Invalid_operation
remx708 remainder -Inf  -Inf   ->  NaN Invalid_operation
remx709 remainder -1000  Inf   -> -1000
remx710 remainder -1    -Inf   -> -1
remx711 remainder -0    -Inf   -> -0
remx712 remainder  0    -Inf   ->  0
remx713 remainder  1    -Inf   ->  1
remx714 remainder  1000 -Inf   ->  1000
remx715 remainder  Inf  -Inf   ->  NaN Invalid_operation

remx721 remainder  NaN -Inf    ->  NaN
remx722 remainder  NaN -1000   ->  NaN
remx723 remainder  NaN -1      ->  NaN
remx724 remainder  NaN -0      ->  NaN
remx725 remainder  NaN  0      ->  NaN
remx726 remainder  NaN  1      ->  NaN
remx727 remainder  NaN  1000   ->  NaN
remx728 remainder  NaN  Inf    ->  NaN
remx729 remainder  NaN  NaN    ->  NaN
remx730 remainder -Inf  NaN    ->  NaN
remx731 remainder -1000 NaN    ->  NaN
remx732 remainder -1    NaN    ->  NaN
remx733 remainder -0    NaN    ->  NaN
remx734 remainder  0    NaN    ->  NaN
remx735 remainder  1    NaN    ->  NaN
remx736 remainder  1000 NaN    ->  NaN
remx737 remainder  Inf  NaN    ->  NaN

remx741 remainder  sNaN -Inf   ->  NaN  Invalid_operation
remx742 remainder  sNaN -1000  ->  NaN  Invalid_operation
remx743 remainder  sNaN -1     ->  NaN  Invalid_operation
remx744 remainder  sNaN -0     ->  NaN  Invalid_operation
remx745 remainder  sNaN  0     ->  NaN  Invalid_operation
remx746 remainder  sNaN  1     ->  NaN  Invalid_operation
remx747 remainder  sNaN  1000  ->  NaN  Invalid_operation
remx749 remainder  sNaN  NaN   ->  NaN  Invalid_operation
remx750 remainder  sNaN sNaN   ->  NaN  Invalid_operation
remx751 remainder  NaN  sNaN   ->  NaN  Invalid_operation
remx752 remainder -Inf  sNaN   ->  NaN  Invalid_operation
remx753 remainder -1000 sNaN   ->  NaN  Invalid_operation
remx754 remainder -1    sNaN   ->  NaN  Invalid_operation
remx755 remainder -0    sNaN   ->  NaN  Invalid_operation
remx756 remainder  0    sNaN   ->  NaN  Invalid_operation
remx757 remainder  1    sNaN   ->  NaN  Invalid_operation
remx758 remainder  1000 sNaN   ->  NaN  Invalid_operation
remx759 remainder  Inf  sNaN   ->  NaN  Invalid_operation
remx760 remainder  NaN  sNaN   ->  NaN  Invalid_operation

-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
remx770 remainder 1 1e999999999    -> 1
remx771 remainder 1 0.9e999999999  -> 1
remx772 remainder 1 0.99e999999999 -> 1
remx773 remainder 1 0.999999999e999999999 -> 1
remx774 remainder 9e999999999          1 -> NaN Division_impossible
remx775 remainder 9.9e999999999        1 -> NaN Division_impossible
remx776 remainder 9.99e999999999       1 -> NaN Division_impossible
remx777 remainder 9.99999999e999999999 1 -> NaN Division_impossible

-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
remx801 remainder 12345678000 100 -> 0
remx802 remainder 1 12345678000   -> 1
remx803 remainder 1234567800  10  -> 0
remx804 remainder 1 1234567800    -> 1
remx805 remainder 1234567890  10  -> 0
remx806 remainder 1 1234567890    -> 1
remx807 remainder 1234567891  10  -> 1
remx808 remainder 1 1234567891    -> 1
remx809 remainder 12345678901 100 -> 1
remx810 remainder 1 12345678901   -> 1
remx811 remainder 1234567896  10  -> 6
remx812 remainder 1 1234567896    -> 1

precision: 15
remx821 remainder 12345678000 100 -> 0
remx822 remainder 1 12345678000   -> 1
remx823 remainder 1234567800  10  -> 0
remx824 remainder 1 1234567800    -> 1
remx825 remainder 1234567890  10  -> 0
remx826 remainder 1 1234567890    -> 1
remx827 remainder 1234567891  10  -> 1
remx828 remainder 1 1234567891    -> 1
remx829 remainder 12345678901 100 -> 1
remx830 remainder 1 12345678901   -> 1
remx831 remainder 1234567896  10  -> 6
remx832 remainder 1 1234567896    -> 1

-- worries from divideint
precision: 8
dvix660 remainder  100000000.0   1  ->  NaN Division_impossible
dvix661 remainder  100000000.4   1  ->  NaN Division_impossible
dvix662 remainder  100000000.5   1  ->  NaN Division_impossible
dvix663 remainder  100000000.9   1  ->  NaN Division_impossible
dvix664 remainder  100000000.999 1  ->  NaN Division_impossible
precision: 6
dvix690 remainder  100000003     5  ->  NaN Division_impossible
dvix691 remainder  10000003      5  ->  NaN Division_impossible
dvix692 remainder  1000003       5  ->  3
dvix693 remainder  100003        5  ->  3
dvix694 remainder  10003         5  ->  3
dvix695 remainder  1003          5  ->  3
dvix696 remainder  103           5  ->  3
dvix697 remainder  13            5  ->  3
dvix698 remainder  1             5  ->  1



-- overflow and underflow tests [from divide]
precision: 9
maxexponent: 999999999
minexponent: -999999999
remx890 remainder +1.23456789012345E-0 9E+999999999 -> 1.23456789 Inexact Rounded
remx891 remainder 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
remx892 remainder +0.100 9E+999999999               -> 0.100
remx893 remainder 9E-999999999 +9.100               -> 9E-999999999
remx895 remainder -1.23456789012345E-0 9E+999999999 -> -1.23456789 Inexact Rounded
remx896 remainder 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
remx897 remainder -0.100 9E+999999999               -> -0.100
remx898 remainder 9E-999999999 -9.100               -> 9E-999999999

-- Null tests
rem900 remainder 10  # -> NaN Invalid_operation
rem901 remainder  # 10 -> NaN Invalid_operation


--- NEW FILE: randoms.decTest ---
------------------------------------------------------------------------
-- randoms.decTest -- decimal random testcases                        --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
[...3990 lines suppressed...]
xmul498 multiply -7.27403536 -481469656E-835183700 -> 3.50222730E-835183691 Inexact Rounded
xpow498 power -7.27403536 -5 -> -0.0000491046885 Inexact Rounded
xrem498 remainder -7.27403536 -481469656E-835183700 -> NaN Division_impossible
xsub498 subtract -7.27403536 -481469656E-835183700 -> -7.27403536 Inexact Rounded
xadd499 add -6157.74292 -94075286.2E+92555877 -> -9.40752862E+92555884 Inexact Rounded
xcom499 compare -6157.74292 -94075286.2E+92555877 -> 1
xdiv499 divide -6157.74292 -94075286.2E+92555877 -> 6.54554790E-92555882 Inexact Rounded
xdvi499 divideint -6157.74292 -94075286.2E+92555877 -> 0
xmul499 multiply -6157.74292 -94075286.2E+92555877 -> 5.79291428E+92555888 Inexact Rounded
xpow499 power -6157.74292 -9 -> -7.85608218E-35 Inexact Rounded
xrem499 remainder -6157.74292 -94075286.2E+92555877 -> -6157.74292
xsub499 subtract -6157.74292 -94075286.2E+92555877 -> 9.40752862E+92555884 Inexact Rounded
xadd500 add -525445087.E+231529167 188227460 -> -5.25445087E+231529175 Inexact Rounded
xcom500 compare -525445087.E+231529167 188227460 -> -1
xdiv500 divide -525445087.E+231529167 188227460 -> -2.79154321E+231529167 Inexact Rounded
xdvi500 divideint -525445087.E+231529167 188227460 -> NaN Division_impossible
xmul500 multiply -525445087.E+231529167 188227460 -> -9.89031941E+231529183 Inexact Rounded
xpow500 power -525445087.E+231529167 188227460 -> Infinity Overflow Inexact Rounded
xrem500 remainder -525445087.E+231529167 188227460 -> NaN Division_impossible
xsub500 subtract -525445087.E+231529167 188227460 -> -5.25445087E+231529175 Inexact Rounded

--- NEW FILE: randomBound32.decTest ---
------------------------------------------------------------------------
-- randomBound32.decTest -- decimal testcases -- boundaries near 32   --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
[...2404 lines suppressed...]
mulx3498 multiply 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> -6.16714847260980448099292763939423E-733 Inexact Rounded
powx3498 power 91936087917435.5974889495278215874 -7 -> 1.80134899939035708719659065082630E-98 Inexact Rounded
remx3498 remainder 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> NaN Division_impossible
subx3498 subtract 91936087917435.5974889495278215874 -67080823344.8903392584327136082486E-757 -> 91936087917435.5974889495278215874 Inexact Rounded
addx3499 add -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -7.34564225185285561365214172598110E-597 Inexact Rounded
comx3499 compare -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -1
divx3499 divide -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -1.78342822299163842247184303878022E+159 Inexact Rounded
dvix3499 divideint -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> NaN Division_impossible
mulx3499 multiply -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -3.02554705575380338274126867655676E-1352 Inexact Rounded
powx3499 power -07345.6422518528556136521417259811E-600 4 -> 2.91151541552217582082937236255996E-2385 Inexact Rounded
remx3499 remainder -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> NaN Division_impossible
subx3499 subtract -07345.6422518528556136521417259811E-600 41188325.7041362608934957584583381E-763 -> -7.34564225185285561365214172598110E-597 Inexact Rounded
addx3500 add -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> 6.16988426425908872398170896375634E+401 Inexact Rounded
comx3500 compare -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -1
divx3500 divide -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -4.10511306357337753351655511866170E-394 Inexact Rounded
dvix3500 divideint -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -0
mulx3500 multiply -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -1.56271275924409657991913620522315E+410 Inexact Rounded
powx3500 power -253280724.939458021588167965038184 6 -> 2.64005420221406808782284459794424E+50 Inexact Rounded
remx3500 remainder -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -253280724.939458021588167965038184
subx3500 subtract -253280724.939458021588167965038184 616988.426425908872398170896375634E+396 -> -6.16988426425908872398170896375634E+401 Inexact Rounded

--- NEW FILE: power.decTest ---
----------------------------------------------------------------------
-- power.decTest -- decimal exponentiation                            --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of testcases tests raising numbers to an integer power only.
-- If arbitrary powers were supported, 1 ulp differences would be
-- permitted.

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- base checks.  Note 0**0 is an error.
powx001 power    '0'  '0'         -> NaN Invalid_operation
powx002 power    '0'  '1'         -> '0'
powx003 power    '0'  '2'         -> '0'
powx004 power    '1'  '0'         -> '1'
powx005 power    '1'  '1'         -> '1'
powx006 power    '1'  '2'         -> '1'

powx010 power    '2'  '0'         -> '1'
powx011 power    '2'  '1'         -> '2'
powx012 power    '2'  '2'         -> '4'
powx013 power    '2'  '3'         -> '8'
powx014 power    '2'  '4'         -> '16'
powx015 power    '2'  '5'         -> '32'
powx016 power    '2'  '6'         -> '64'
powx017 power    '2'  '7'         -> '128'
powx018 power    '2'  '8'         -> '256'
powx019 power    '2'  '9'         -> '512'
powx020 power    '2'  '10'        -> '1024'
powx021 power    '2'  '11'        -> '2048'
powx022 power    '2'  '12'        -> '4096'
powx023 power    '2'  '15'        -> '32768'
powx024 power    '2'  '16'        -> '65536'
powx025 power    '2'  '31'        -> '2.14748365E+9' Inexact Rounded
-- NB 0 not stripped in next
powx026 power    '2'  '32'        -> '4.29496730E+9' Inexact Rounded
precision: 10
powx027 power    '2'  '31'        -> '2147483648'
powx028 power    '2'  '32'        -> '4294967296'
precision: 9

powx030 power    '3'  '2'         -> 9
powx031 power    '4'  '2'         -> 16
powx032 power    '5'  '2'         -> 25
powx033 power    '6'  '2'         -> 36
powx034 power    '7'  '2'         -> 49
powx035 power    '8'  '2'         -> 64
powx036 power    '9'  '2'         -> 81
powx037 power    '10' '2'         -> 100
powx038 power    '11' '2'         -> 121
powx039 power    '12' '2'         -> 144

powx040 power    '3'  '3'         -> 27
powx041 power    '4'  '3'         -> 64
powx042 power    '5'  '3'         -> 125
powx043 power    '6'  '3'         -> 216
powx044 power    '7'  '3'         -> 343

powx050 power   '10'  '0'         -> 1
powx051 power   '10'  '1'         -> 10
powx052 power   '10'  '2'         -> 100
powx053 power   '10'  '3'         -> 1000
powx054 power   '10'  '4'         -> 10000
powx055 power   '10'  '5'         -> 100000
powx056 power   '10'  '6'         -> 1000000
powx057 power   '10'  '7'         -> 10000000
powx058 power   '10'  '8'         -> 100000000
powx059 power   '10'  '9'         -> 1.00000000E+9 Rounded
powx060 power   '10'  '22'        -> 1.00000000E+22 Rounded
powx061 power   '10'  '77'        -> 1.00000000E+77 Rounded
powx062 power   '10'  '99'        -> 1.00000000E+99 Rounded

maxexponent: 999999999
minexponent: -999999999
powx063 power   '10'  '999999999' -> '1.00000000E+999999999' Rounded
powx064 power   '10'  '999999998' -> '1.00000000E+999999998' Rounded
powx065 power   '10'  '999999997' -> '1.00000000E+999999997' Rounded
powx066 power   '10'  '333333333' -> '1.00000000E+333333333' Rounded

powx070 power  '0.3'  '0'           -> '1'
powx071 power  '0.3'  '1'           -> '0.3'
powx072 power  '0.3'  '1.00'        -> '0.3'
powx073 power  '0.3'  '2.00'        -> '0.09'
powx074 power  '0.3'  '2.000000000' -> '0.09'
powx075 power  '6.0'  '1'           -> '6.0'     -- NB zeros not stripped
powx076 power  '6.0'  '2'           -> '36.00'   -- ..
powx077 power   '-3'  '2'           -> '9'       -- from NetRexx book
powx078 power    '4'  '3'           -> '64'      -- .. (sort of)

powx080 power   0.1    0            -> 1
powx081 power   0.1    1            -> 0.1
powx082 power   0.1    2            -> 0.01
powx083 power   0.1    3            -> 0.001
powx084 power   0.1    4            -> 0.0001
powx085 power   0.1    5            -> 0.00001
powx086 power   0.1    6            -> 0.000001
powx087 power   0.1    7            -> 1E-7
powx088 power   0.1    8            -> 1E-8
powx089 power   0.1    9            -> 1E-9

powx090 power   101    2            -> 10201
powx091 power   101    3            -> 1030301
powx092 power   101    4            -> 104060401
powx093 power   101    5            -> 1.05101005E+10 Inexact Rounded
powx094 power   101    6            -> 1.06152015E+12 Inexact Rounded
powx095 power   101    7            -> 1.07213535E+14 Inexact Rounded

-- negative powers
powx101 power  '2'  '-1'  -> 0.5
powx102 power  '2'  '-2'  -> 0.25
powx103 power  '2'  '-4'  -> 0.0625
powx104 power  '2'  '-8'  -> 0.00390625
powx105 power  '2'  '-16' -> 0.0000152587891 Inexact Rounded
powx106 power  '2'  '-32' -> 2.32830644E-10 Inexact Rounded
powx108 power  '2'  '-64' -> 5.42101086E-20 Inexact Rounded
powx110 power  '10'  '-8' -> 1E-8
powx111 power  '10'  '-7' -> 1E-7
powx112 power  '10'  '-6' -> 0.000001
powx113 power  '10'  '-5' -> 0.00001
powx114 power  '10'  '-4' -> 0.0001
powx115 power  '10'  '-3' -> 0.001
powx116 power  '10'  '-2' -> 0.01
powx117 power  '10'  '-1' -> 0.1

powx118 power  '10'  '-333333333'   -> 1E-333333333
powx119 power  '10'  '-999999998'   -> 1E-999999998
powx120 power  '10'  '-999999999'   -> 1E-999999999
powx121 power  '10'  '-77'          -> '1E-77'
powx122 power  '10'  '-22'          -> '1E-22'

powx123 power   '2'  '-1'           -> '0.5'
powx124 power   '2'  '-2'           -> '0.25'
powx125 power   '2'  '-4'           -> '0.0625'
powx126 power   '0'  '-1'           -> Infinity Division_by_zero
powx127 power   '0'  '-2'           -> Infinity Division_by_zero
powx128 power   -0   '-1'           -> -Infinity Division_by_zero
powx129 power   -0   '-2'           -> Infinity Division_by_zero

-- out-of-range edge cases
powx181 power   '7'   '999999998'   -> 2.10892313E+845098038 Inexact Rounded
powx182 power   '7'   '999999999'   -> 1.47624619E+845098039 Inexact Rounded
powx183 power   '7'   '1000000000'  -> NaN Invalid_operation
powx184 power   '7'   '1000000001'  -> NaN Invalid_operation
powx185 power   '7'   '10000000000' -> NaN Invalid_operation
powx186 power   '7'   '-1000000001' -> NaN Invalid_operation
powx187 power   '7'   '-1000000000' -> NaN Invalid_operation
powx189 power   '7'   '-999999999'  -> 6.77393787E-845098040 Inexact Rounded
powx190 power   '7'   '-999999998'  -> 4.74175651E-845098039 Inexact Rounded

-- some baddies [more below]
powx191 power   '2'   '2.000001'     -> NaN Invalid_operation
powx192 power   '2'   '2.00000000'   -> 4
powx193 power   '2'   '2.000000001'  -> NaN Invalid_operation
powx194 power   '2'   '2.0000000001' -> NaN Invalid_operation

-- "0.5" tests from original Rexx diagnostics [loop unrolled]
powx200 power   0.5    0            -> 1
powx201 power   0.5    1            -> 0.5
powx202 power   0.5    2            -> 0.25
powx203 power   0.5    3            -> 0.125
powx204 power   0.5    4            -> 0.0625
powx205 power   0.5    5            -> 0.03125
powx206 power   0.5    6            -> 0.015625
powx207 power   0.5    7            -> 0.0078125
powx208 power   0.5    8            -> 0.00390625
powx209 power   0.5    9            -> 0.001953125
powx210 power   0.5   10            -> 0.0009765625

-- A (rare) case where the last digit is not within 0.5 ULP
precision: 9
powx215 power "-21971575.0E+31454441" "-7" -> "-4.04549503E-220181139" Inexact Rounded
precision: 20
powx216 power "-21971575.0E+31454441" "-7" -> "-4.0454950249324891788E-220181139" Inexact Rounded

-- The Vienna case.  Checks both setup and 1/acc working precision
-- Modified 1998.12.14 as RHS no longer rounded before use (must fit)
-- Modified 1990.02.04 as LHS is now rounded (instead of truncated to guard)
--    '123456789E+10'    -- lhs .. rounded to 1.23E+18
--    '-1.23000e+2'      -- rhs .. [was: -1.23455e+2, rounds to -123]
-- Modified 2002.10.06 -- finally, no input rounding
-- With input rounding, result would be 8.74E-2226
precision: 3
powx219 power '123456789E+10' '-1.23000e+2' -> '5.54E-2226' Inexact Rounded

-- whole number checks
precision: 9
powx221 power 1 1234 -> 1
precision: 4
powx222 power 1 1234 -> 1
precision: 3
powx223 power 1 1234     -> 1
powx224 power 1 12.34e+2 -> 1
powx225 power 1 12.3     -> NaN Invalid_operation
powx226 power 1 12.0     -> 1
powx227 power 1 1.01     -> NaN Invalid_operation
powx228 power 2 1.00     -> 2
powx229 power 2 2.00     -> 4
precision: 9
powx230 power 1 1.0001           -> NaN Invalid_operation
powx231 power 1 1.0000001        -> NaN Invalid_operation
powx232 power 1 1.0000000001     -> NaN Invalid_operation
powx233 power 1 1.0000000000001  -> NaN Invalid_operation
precision: 5
powx234 power 1 1.0001           -> NaN Invalid_operation
powx235 power 1 1.0000001        -> NaN Invalid_operation
powx236 power 1 1.0000000001     -> NaN Invalid_operation
powx237 power 1 1.0000000000001  -> NaN Invalid_operation
powx238 power 1 1.0000000000001  -> NaN Invalid_operation

maxexponent: 999999999
minexponent: -999999999
powx239 power 1 5.67E-987654321  -> NaN Invalid_operation

powx240 power 1  100000000 -> 1
powx241 power 1  999999998 -> 1
powx242 power 1  999999999 -> 1
powx243 power 1 1000000000 -> NaN Invalid_operation
powx244 power 1 9999999999 -> NaN Invalid_operation

-- Checks for 'Too much precision needed'
-- For x^12, digits+elength+1 = digits+3
precision: 999999999
powx249 add 1 1 -> 2   -- check basic operation at this precision
powx250 power          2 12  -> Infinity Overflow
precision: 999999998
powx251 power          2 12  -> Infinity Overflow
precision: 999999997
powx252 power          2 12  -> Infinity Overflow
precision: 999999996
powx253 power          2 12  -> 4096
precision: 999999995
powx254 power          2 12  -> 4096

-- overflow and underflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 9
powx280 power  9            999999999 -> 3.05550054E+954242508 Inexact Rounded
powx281 power 10            999999999 -> 1.00000000E+999999999 Rounded
powx282 power 10.0001       999999999 -> Infinity Overflow Inexact Rounded
powx283 power 10.1          999999999 -> Infinity Overflow Inexact Rounded
powx284 power 11            999999999 -> Infinity Overflow Inexact Rounded
powx285 power 12            999999999 -> Infinity Overflow Inexact Rounded
powx286 power 999           999999999 -> Infinity Overflow Inexact Rounded
powx287 power 999999        999999999 -> Infinity Overflow Inexact Rounded
powx288 power 999999999     999999999 -> Infinity Overflow Inexact Rounded
powx289 power 9.9E999999999 999999999 -> Infinity Overflow Inexact Rounded

powx290 power 0.5           999999999 -> 4.33559594E-301029996 Inexact Rounded
powx291 power 0.1           999999999 -> 1E-999999999  -- unrounded
powx292 power 0.09          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx293 power 0.05          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx294 power 0.01          999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx295 power 0.0001        999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx297 power 0.0000001     999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx298 power 0.0000000001  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx299 power 1E-999999999  999999999 -> 0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

powx310 power -9             999999999 -> -3.05550054E+954242508 Inexact Rounded
powx311 power -10            999999999 -> -1.00000000E+999999999 Rounded
powx312 power -10.0001       999999999 -> -Infinity Overflow Inexact Rounded
powx313 power -10.1          999999999 -> -Infinity Overflow Inexact Rounded
powx314 power -11            999999999 -> -Infinity Overflow Inexact Rounded
powx315 power -12            999999999 -> -Infinity Overflow Inexact Rounded
powx316 power -999           999999999 -> -Infinity Overflow Inexact Rounded
powx317 power -999999        999999999 -> -Infinity Overflow Inexact Rounded
powx318 power -999999999     999999999 -> -Infinity Overflow Inexact Rounded
powx319 power -9.9E999999999 999999999 -> -Infinity Overflow Inexact Rounded

powx320 power -0.5           999999999 -> -4.33559594E-301029996 Inexact Rounded
powx321 power -0.1           999999999 -> -1E-999999999
powx322 power -0.09          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx323 power -0.05          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx324 power -0.01          999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx325 power -0.0001        999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx327 power -0.0000001     999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx328 power -0.0000000001  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx329 power -1E-999999999  999999999 -> -0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

-- note no trim of next result
powx330 power -9             999999998 ->  3.39500060E+954242507 Inexact Rounded
powx331 power -10            999999998 ->  1.00000000E+999999998 Rounded
powx332 power -10.0001       999999998 ->  Infinity Overflow Inexact Rounded
powx333 power -10.1          999999998 ->  Infinity Overflow Inexact Rounded
powx334 power -11            999999998 ->  Infinity Overflow Inexact Rounded
powx335 power -12            999999998 ->  Infinity Overflow Inexact Rounded
powx336 power -999           999999998 ->  Infinity Overflow Inexact Rounded
powx337 power -999999        999999998 ->  Infinity Overflow Inexact Rounded
powx338 power -999999999     999999998 ->  Infinity Overflow Inexact Rounded
powx339 power -9.9E999999999 999999998 ->  Infinity Overflow Inexact Rounded

powx340 power -0.5           999999998 ->  8.67119187E-301029996 Inexact Rounded
powx341 power -0.1           999999998 ->  1E-999999998  -- NB exact unrounded
powx342 power -0.09          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx343 power -0.05          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx344 power -0.01          999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx345 power -0.0001        999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx347 power -0.0000001     999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx348 power -0.0000000001  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx349 power -1E-999999999  999999998 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

-- some subnormals
precision: 9
-- [precision is 9, so smallest exponent is -1000000007
powx350 power  1e-1          500000000 ->  1E-500000000
powx351 power  1e-2          999999999 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped
powx352 power  1e-2          500000000 ->  1E-1000000000 Subnormal
powx353 power  1e-2          500000001 ->  1E-1000000002 Subnormal
powx354 power  1e-2          500000002 ->  1E-1000000004 Subnormal
powx355 power  1e-2          500000003 ->  1E-1000000006 Subnormal
powx356 power  1e-2          500000004 ->  0E-1000000007 Underflow Subnormal Inexact Rounded

powx360 power  0.010001      500000000 ->  4.34941988E-999978287 Inexact Rounded
powx361 power  0.010000001   500000000 ->  5.18469257E-999999979 Inexact Rounded
powx362 power  0.010000001   500000001 ->  5.18469309E-999999981 Inexact Rounded
powx363 power  0.0100000009  500000000 ->  3.49342003E-999999981 Inexact Rounded
powx364 power  0.0100000001  500000000 ->  1.48413155E-999999998 Inexact Rounded
powx365 power  0.01          500000000 ->  1E-1000000000 Subnormal
powx366 power  0.0099999999  500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded
powx367 power  0.0099999998  500000000 ->  4.54E-1000000005 Underflow Subnormal Inexact Rounded
powx368 power  0.0099999997  500000000 ->  3E-1000000007 Underflow Subnormal Inexact Rounded
powx369 power  0.0099999996  500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
powx370 power  0.009         500000000 ->  0E-1000000007 Underflow Subnormal Inexact Rounded Clamped

-- 1/subnormal -> overflow
powx371 power  1e-1         -500000000 ->  1E+500000000
powx372 power  1e-2         -999999999 ->  Infinity Overflow Inexact Rounded
powx373 power  1e-2         -500000000 ->  Infinity Overflow Inexact Rounded
powx374 power  1e-2         -500000001 ->  Infinity Overflow Inexact Rounded
powx375 power  1e-2         -500000002 ->  Infinity Overflow Inexact Rounded
powx376 power  1e-2         -500000003 ->  Infinity Overflow Inexact Rounded
powx377 power  1e-2         -500000004 ->  Infinity Overflow Inexact Rounded

powx381 power  0.010001     -500000000 ->  2.29915719E+999978286 Inexact Rounded
powx382 power  0.010000001  -500000000 ->  1.92875467E+999999978 Inexact Rounded
powx383 power  0.010000001  -500000001 ->  1.92875448E+999999980 Inexact Rounded
powx384 power  0.0100000009 -500000000 ->  2.86252438E+999999980 Inexact Rounded
powx385 power  0.0100000001 -500000000 ->  6.73794717E+999999997 Inexact Rounded
powx386 power  0.01         -500000000 ->  Infinity Overflow Inexact Rounded
powx387 power  0.009999     -500000000 ->  Infinity Overflow Inexact Rounded

-- negative power giving subnormal
powx388 power  100.000001   -500000000 ->  6.7379E-1000000003 Underflow Subnormal Inexact Rounded

-- some more edge cases
precision:   15
maxExponent: 999
minexponent: -999
powx391 power  0.1   999 -> 1E-999
powx392 power  0.099 999 -> 4.360732062E-1004 Underflow Subnormal Inexact Rounded
powx393 power  0.098 999 -> 1.71731E-1008 Underflow Subnormal Inexact Rounded
powx394 power  0.097 999 -> 6E-1013 Underflow Subnormal Inexact Rounded
powx395 power  0.096 999 -> 0E-1013 Underflow Subnormal Inexact Rounded
powx396 power  0.01  999 -> 0E-1013 Underflow Subnormal Inexact Rounded Clamped

-- multiply tests are here to aid checking and test for consistent handling
-- of underflow
precision: 5
maxexponent: 999
minexponent: -999

-- squares
mulx400 multiply  1E-502     1e-502 -> 0E-1003    Subnormal Inexact Underflow Rounded
mulx401 multiply  1E-501     1e-501 -> 1E-1002    Subnormal
mulx402 multiply  2E-501     2e-501 -> 4E-1002    Subnormal
mulx403 multiply  4E-501     4e-501 -> 1.6E-1001  Subnormal
mulx404 multiply 10E-501    10e-501 -> 1.00E-1000 Subnormal
mulx405 multiply 30E-501    30e-501 -> 9.00E-1000 Subnormal
mulx406 multiply 40E-501    40e-501 -> 1.600E-999

powx400 power     1E-502     2      -> 0E-1003    Underflow Subnormal Inexact Rounded
powx401 power     1E-501     2      -> 1E-1002    Subnormal
powx402 power     2E-501     2      -> 4E-1002    Subnormal
powx403 power     4E-501     2      -> 1.6E-1001  Subnormal
powx404 power    10E-501     2      -> 1.00E-1000 Subnormal
powx405 power    30E-501     2      -> 9.00E-1000 Subnormal
powx406 power    40E-501     2      -> 1.600E-999

-- cubes
mulx410 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded
mulx411 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
mulx412 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
mulx413 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
mulx414 multiply 16E-668     4e-334 -> 6.4E-1001  Subnormal
mulx415 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
mulx416 multiply 10E-668   100e-334 -> 1.000E-999

powx410 power     1E-335     3      -> 0E-1003    Underflow Subnormal Inexact Rounded
powx411 power     1E-334     3      -> 1E-1002    Subnormal
powx412 power     2E-334     3      -> 8E-1002    Subnormal
powx413 power     3E-334     3      -> 2.7E-1001  Subnormal
powx414 power     4E-334     3      -> 6.4E-1001  Subnormal
powx415 power     5E-334     3      -> 1.25E-1000 Subnormal
powx416 power    10E-334     3      -> 1.000E-999

-- negative powers, testing subnormals
precision:   5
maxExponent: 999
minexponent: -999
powx421 power  2.5E-501     -2         ->  Infinity Overflow Inexact Rounded
powx422 power  2.5E-500     -2         ->  1.6E+999

powx423 power  2.5E+499     -2         ->  1.6E-999
powx424 power  2.5E+500     -2         ->  1.6E-1001 Subnormal
powx425 power  2.5E+501     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
powx426 power  2.5E+502     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded

powx427 power 0.25E+499     -2         ->  1.6E-997
powx428 power 0.25E+500     -2         ->  1.6E-999
powx429 power 0.25E+501     -2         ->  1.6E-1001 Subnormal
powx430 power 0.25E+502     -2         ->    2E-1003 Underflow Subnormal Inexact Rounded
powx431 power 0.25E+503     -2         ->    0E-1003 Underflow Subnormal Inexact Rounded

powx432 power 0.04E+499     -2         ->  6.25E-996
powx433 power 0.04E+500     -2         ->  6.25E-998
powx434 power 0.04E+501     -2         ->  6.25E-1000 Subnormal
powx435 power 0.04E+502     -2         ->   6.3E-1002 Underflow Subnormal Inexact Rounded
powx436 power 0.04E+503     -2         ->     1E-1003 Underflow Subnormal Inexact Rounded
powx437 power 0.04E+504     -2         ->     0E-1003 Underflow Subnormal Inexact Rounded

powx441 power 0.04E+334     -3         ->  1.5625E-998
powx442 power 0.04E+335     -3         ->    1.56E-1001 Underflow Subnormal Inexact Rounded
powx443 power 0.04E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded
powx444 power 0.25E+333     -3         ->     6.4E-998
powx445 power 0.25E+334     -3         ->     6.4E-1001 Subnormal
powx446 power 0.25E+335     -3         ->       1E-1003 Underflow Subnormal Inexact Rounded
powx447 power 0.25E+336     -3         ->       0E-1003 Underflow Subnormal Inexact Rounded Clamped
-- check sign for cubes  and a few squares
powx448 power -0.04E+334    -3         -> -1.5625E-998
powx449 power -0.04E+335    -3         ->   -1.56E-1001 Underflow Subnormal Inexact Rounded
powx450 power -0.04E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded
powx451 power -0.25E+333    -3         ->    -6.4E-998
powx452 power -0.25E+334    -3         ->    -6.4E-1001 Subnormal
powx453 power -0.25E+335    -3         ->      -1E-1003 Underflow Subnormal Inexact Rounded
powx454 power -0.25E+336    -3         ->      -0E-1003 Underflow Subnormal Inexact Rounded Clamped
powx455 power -0.04E+499    -2         ->    6.25E-996
powx456 power -0.04E+500    -2         ->    6.25E-998
powx457 power -0.04E+501    -2         ->    6.25E-1000 Subnormal
powx458 power -0.04E+502    -2         ->     6.3E-1002 Underflow Subnormal Inexact Rounded

-- test -0s
precision: 9
powx560 power  0  0        ->  NaN Invalid_operation
powx561 power  0 -0        ->  NaN Invalid_operation
powx562 power -0  0        ->  NaN Invalid_operation
powx563 power -0 -0        ->  NaN Invalid_operation
powx564 power  1  0        ->  1
powx565 power  1 -0        ->  1
powx566 power -1  0        ->  1
powx567 power -1 -0        ->  1
powx568 power  0  1        ->  0
powx569 power  0 -1        ->  Infinity Division_by_zero
powx570 power -0  1        -> -0
powx571 power -0 -1        -> -Infinity Division_by_zero
powx572 power  0  2        ->  0
powx573 power  0 -2        ->  Infinity Division_by_zero
powx574 power -0  2        ->  0
powx575 power -0 -2        ->  Infinity Division_by_zero
powx576 power  0  3        ->  0
powx577 power  0 -3        ->  Infinity Division_by_zero
powx578 power -0  3        -> -0
powx579 power -0 -3        -> -Infinity Division_by_zero

-- Specials
powx580 power  Inf  -Inf   ->  NaN  Invalid_operation
powx581 power  Inf  -1000  ->  0
powx582 power  Inf  -1     ->  0
powx583 power  Inf  -0     ->  1
powx584 power  Inf   0     ->  1
powx585 power  Inf   1     ->  Infinity
powx586 power  Inf   1000  ->  Infinity
powx587 power  Inf   Inf   ->  NaN  Invalid_operation
powx588 power -1000  Inf   ->  NaN  Invalid_operation
powx589 power -Inf   Inf   ->  NaN  Invalid_operation
powx590 power -1     Inf   ->  NaN  Invalid_operation
powx591 power -0     Inf   ->  NaN  Invalid_operation
powx592 power  0     Inf   ->  NaN  Invalid_operation
powx593 power  1     Inf   ->  NaN  Invalid_operation
powx594 power  1000  Inf   ->  NaN  Invalid_operation
powx595 power  Inf   Inf   ->  NaN  Invalid_operation

powx600 power -Inf  -Inf   ->  NaN  Invalid_operation
powx601 power -Inf  -1000  ->  0
powx602 power -Inf  -1     -> -0
powx603 power -Inf  -0     ->  1
powx604 power -Inf   0     ->  1
powx605 power -Inf   1     -> -Infinity
powx606 power -Inf   1000  ->  Infinity
powx607 power -Inf   Inf   ->  NaN  Invalid_operation
powx608 power -1000  Inf   ->  NaN  Invalid_operation
powx609 power -Inf  -Inf   ->  NaN  Invalid_operation
powx610 power -1    -Inf   ->  NaN  Invalid_operation
powx611 power -0    -Inf   ->  NaN  Invalid_operation
powx612 power  0    -Inf   ->  NaN  Invalid_operation
powx613 power  1    -Inf   ->  NaN  Invalid_operation
powx614 power  1000 -Inf   ->  NaN  Invalid_operation
powx615 power  Inf  -Inf   ->  NaN  Invalid_operation

powx621 power  NaN -Inf    ->  NaN  Invalid_operation
powx622 power  NaN -1000   ->  NaN
powx623 power  NaN -1      ->  NaN
powx624 power  NaN -0      ->  NaN
powx625 power  NaN  0      ->  NaN
powx626 power  NaN  1      ->  NaN
powx627 power  NaN  1000   ->  NaN
powx628 power  NaN  Inf    ->  NaN  Invalid_operation
powx629 power  NaN  NaN    ->  NaN
powx630 power -Inf  NaN    ->  NaN
powx631 power -1000 NaN    ->  NaN
powx632 power -1    NaN    ->  NaN
powx633 power -0    NaN    ->  NaN
powx634 power  0    NaN    ->  NaN
powx635 power  1    NaN    ->  NaN
powx636 power  1000 NaN    ->  NaN
powx637 power  Inf  NaN    ->  NaN

powx641 power  sNaN -Inf   ->  NaN  Invalid_operation
powx642 power  sNaN -1000  ->  NaN  Invalid_operation
powx643 power  sNaN -1     ->  NaN  Invalid_operation
powx644 power  sNaN -0     ->  NaN  Invalid_operation
powx645 power  sNaN  0     ->  NaN  Invalid_operation
powx646 power  sNaN  1     ->  NaN  Invalid_operation
powx647 power  sNaN  1000  ->  NaN  Invalid_operation
powx648 power  sNaN  NaN   ->  NaN  Invalid_operation
powx649 power  sNaN sNaN   ->  NaN  Invalid_operation
powx650 power  NaN  sNaN   ->  NaN  Invalid_operation
powx651 power -Inf  sNaN   ->  NaN  Invalid_operation
powx652 power -1000 sNaN   ->  NaN  Invalid_operation
powx653 power -1    sNaN   ->  NaN  Invalid_operation
powx654 power -0    sNaN   ->  NaN  Invalid_operation
powx655 power  0    sNaN   ->  NaN  Invalid_operation
powx656 power  1    sNaN   ->  NaN  Invalid_operation
powx657 power  1000 sNaN   ->  NaN  Invalid_operation
powx658 power  Inf  sNaN   ->  NaN  Invalid_operation
powx659 power  NaN  sNaN   ->  NaN  Invalid_operation

-- Examples from extended specification
powx660 power  Inf  -2     ->  0
powx661 power  Inf  -1     ->  0
powx662 power  Inf   0     ->  1
powx663 power  Inf   1     ->  Infinity
powx664 power  Inf   2     ->  Infinity
powx665 power -Inf  -2     ->  0
powx666 power -Inf  -1     ->  -0
powx667 power -Inf   0     ->  1
powx668 power -Inf   1     ->  -Infinity
powx669 power -Inf   2     ->  Infinity
powx670 power    0   0     ->  NaN Invalid_operation

-- long operand and RHS range checks
maxexponent: 999
minexponent: -999
precision: 9
powx701 power 12345678000 1 -> 1.23456780E+10 Rounded
powx702 power 1234567800  1 -> 1.23456780E+9 Rounded
powx703 power 1234567890  1 -> 1.23456789E+9 Rounded
powx704 power 1234567891  1 -> 1.23456789E+9 Inexact Rounded
powx705 power 12345678901 1 -> 1.23456789E+10 Inexact Rounded
powx706 power 1234567896  1 -> 1.23456790E+9 Inexact Rounded
powx707 power 1 12345678000  -> NaN Invalid_operation
powx708 power 1 1234567800   -> NaN Invalid_operation
powx709 power 1 1234567890   -> NaN Invalid_operation
powx710 power 1 11234567891  -> NaN Invalid_operation
powx711 power 1 12345678901  -> NaN Invalid_operation
powx712 power 1 1234567896   -> NaN Invalid_operation
powx713 power 1 -1234567896  -> NaN Invalid_operation
powx714 power 1 1000000000   -> NaN Invalid_operation
powx715 power 1 -1000000000  -> NaN Invalid_operation

precision: 15
-- still checking
powx741 power 12345678000 1 -> 12345678000
powx742 power 1234567800  1 -> 1234567800
powx743 power 1234567890  1 -> 1234567890
powx744 power 1234567891  1 -> 1234567891
powx745 power 12345678901 1 -> 12345678901
powx746 power 1234567896  1 -> 1234567896
powx747 power 1 12345678000  -> NaN Invalid_operation
powx748 power 1 -1234567896  -> NaN Invalid_operation
powx749 power 1 1000000000   -> NaN Invalid_operation
powx740 power 1 -1000000000  -> NaN Invalid_operation

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
powx750 power     1.2347E-40  2      ->  1.524E-80 Inexact Rounded Subnormal Underflow

-- Null tests
powx900 power  1 # -> NaN Invalid_operation
powx901 power  # 1 -> NaN Invalid_operation


--- NEW FILE: plus.decTest ---
------------------------------------------------------------------------
-- plus.decTest -- decimal monadic addition                           --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of tests primarily tests the existence of the operator.
-- Addition and rounding, and most overflows, are tested elsewhere.

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

plux001 plus '1'      -> '1'
plux002 plus '-1'     -> '-1'
plux003 plus '1.00'   -> '1.00'
plux004 plus '-1.00'  -> '-1.00'
plux005 plus '0'      -> '0'
plux006 plus '0.00'   -> '0.00'
plux007 plus '00.0'   -> '0.0'
plux008 plus '00.00'  -> '0.00'
plux009 plus '00'     -> '0'

plux010 plus '-2'     -> '-2'
plux011 plus '2'      -> '2'
plux012 plus '-2.00'  -> '-2.00'
plux013 plus '2.00'   -> '2.00'
plux014 plus '-0'     -> '0'
plux015 plus '-0.00'  -> '0.00'
plux016 plus '-00.0'  -> '0.0'
plux017 plus '-00.00' -> '0.00'
plux018 plus '-00'    -> '0'

plux020 plus '-2000000' -> '-2000000'
plux021 plus '2000000'  -> '2000000'
precision: 7
plux022 plus '-2000000' -> '-2000000'
plux023 plus '2000000'  -> '2000000'
precision: 6
plux024 plus '-2000000' -> '-2.00000E+6' Rounded
plux025 plus '2000000'  -> '2.00000E+6' Rounded
precision: 3
plux026 plus '-2000000' -> '-2.00E+6' Rounded
plux027 plus '2000000'  -> '2.00E+6' Rounded

-- more fixed, potential LHS swaps if done by add 0
precision: 9
plux060 plus '56267E-10'   -> '0.0000056267'
plux061 plus '56267E-5'    -> '0.56267'
plux062 plus '56267E-2'    -> '562.67'
plux063 plus '56267E-1'    -> '5626.7'
plux065 plus '56267E-0'    -> '56267'
plux066 plus '56267E+0'    -> '56267'
plux067 plus '56267E+1'    -> '5.6267E+5'
plux068 plus '56267E+2'    -> '5.6267E+6'
plux069 plus '56267E+3'    -> '5.6267E+7'
plux070 plus '56267E+4'    -> '5.6267E+8'
plux071 plus '56267E+5'    -> '5.6267E+9'
plux072 plus '56267E+6'    -> '5.6267E+10'
plux080 plus '-56267E-10'  -> '-0.0000056267'
plux081 plus '-56267E-5'   -> '-0.56267'
plux082 plus '-56267E-2'   -> '-562.67'
plux083 plus '-56267E-1'   -> '-5626.7'
plux085 plus '-56267E-0'   -> '-56267'
plux086 plus '-56267E+0'   -> '-56267'
plux087 plus '-56267E+1'   -> '-5.6267E+5'
plux088 plus '-56267E+2'   -> '-5.6267E+6'
plux089 plus '-56267E+3'   -> '-5.6267E+7'
plux090 plus '-56267E+4'   -> '-5.6267E+8'
plux091 plus '-56267E+5'   -> '-5.6267E+9'
plux092 plus '-56267E+6'   -> '-5.6267E+10'

-- "lhs" zeros in plus and minus have exponent = operand
plux120 plus '-0E3'   -> '0E+3'
plux121 plus '-0E2'   -> '0E+2'
plux122 plus '-0E1'   -> '0E+1'
plux123 plus '-0E0'   -> '0'
plux124 plus '+0E0'   -> '0'
plux125 plus '+0E1'   -> '0E+1'
plux126 plus '+0E2'   -> '0E+2'
plux127 plus '+0E3'   -> '0E+3'

plux130 plus '-5E3'   -> '-5E+3'
plux131 plus '-5E8'   -> '-5E+8'
plux132 plus '-5E13'  -> '-5E+13'
plux133 plus '-5E18'  -> '-5E+18'
plux134 plus '+5E3'   -> '5E+3'
plux135 plus '+5E8'   -> '5E+8'
plux136 plus '+5E13'  -> '5E+13'
plux137 plus '+5E18'  -> '5E+18'

-- specials
plux150 plus 'Inf'    -> 'Infinity'
plux151 plus '-Inf'   -> '-Infinity'
plux152 plus   NaN    ->  NaN
plux153 plus  sNaN    ->  NaN  Invalid_operation

-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
plux160 plus 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
plux161 plus -9.999E+999999999 -> -Infinity Inexact Overflow Rounded

-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
plux210 plus  1.00E-999        ->   1.00E-999
plux211 plus  0.1E-999         ->   1E-1000   Subnormal
plux212 plus  0.10E-999        ->   1.0E-1000 Subnormal
plux213 plus  0.100E-999       ->   1.0E-1000 Subnormal Rounded
plux214 plus  0.01E-999        ->   1E-1001   Subnormal
-- next is rounded to Emin
plux215 plus  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
plux216 plus  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
plux217 plus  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
plux218 plus  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
plux219 plus  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
plux220 plus  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow

plux230 plus -1.00E-999        ->  -1.00E-999
plux231 plus -0.1E-999         ->  -1E-1000   Subnormal
plux232 plus -0.10E-999        ->  -1.0E-1000 Subnormal
plux233 plus -0.100E-999       ->  -1.0E-1000 Subnormal Rounded
plux234 plus -0.01E-999        ->  -1E-1001   Subnormal
-- next is rounded to Emin
plux235 plus -0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
plux236 plus -0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
plux237 plus -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
plux238 plus -0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow
plux239 plus -0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
plux240 plus -0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow

-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
plux301 plus 12345678000  -> 1.23456780E+10 Rounded
plux302 plus 1234567800   -> 1.23456780E+9 Rounded
plux303 plus 1234567890   -> 1.23456789E+9 Rounded
plux304 plus 1234567891   -> 1.23456789E+9 Inexact Rounded
plux305 plus 12345678901  -> 1.23456789E+10 Inexact Rounded
plux306 plus 1234567896   -> 1.23456790E+9 Inexact Rounded

-- still checking
precision: 15
plux321 plus 12345678000  -> 12345678000
plux322 plus 1234567800   -> 1234567800
plux323 plus 1234567890   -> 1234567890
plux324 plus 1234567891   -> 1234567891
plux325 plus 12345678901  -> 12345678901
plux326 plus 1234567896   -> 1234567896
precision: 9

-- Null tests
plu900 plus  # -> NaN Invalid_operation


--- NEW FILE: normalize.decTest ---
------------------------------------------------------------------------
-- normalize.decTest -- remove trailing zeros                         --
-- Copyright (c) IBM Corporation, 2003.  All rights reserved.         --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

nrmx001 normalize '1'      -> '1'
nrmx002 normalize '-1'     -> '-1'
nrmx003 normalize '1.00'   -> '1'
nrmx004 normalize '-1.00'  -> '-1'
nrmx005 normalize '0'      -> '0'
nrmx006 normalize '0.00'   -> '0'
nrmx007 normalize '00.0'   -> '0'
nrmx008 normalize '00.00'  -> '0'
nrmx009 normalize '00'     -> '0'
nrmx010 normalize '0E+1'   -> '0'
nrmx011 normalize '0E+5'   -> '0'

nrmx012 normalize '-2'     -> '-2'
nrmx013 normalize '2'      -> '2'
nrmx014 normalize '-2.00'  -> '-2'
nrmx015 normalize '2.00'   -> '2'
nrmx016 normalize '-0'     -> '-0'
nrmx017 normalize '-0.00'  -> '-0'
nrmx018 normalize '-00.0'  -> '-0'
nrmx019 normalize '-00.00' -> '-0'
nrmx020 normalize '-00'    -> '-0'
nrmx021 normalize '-0E+5'   -> '-0'
nrmx022 normalize '-0E+1'  -> '-0'

nrmx030 normalize '+0.1'            -> '0.1'
nrmx031 normalize '-0.1'            -> '-0.1'
nrmx032 normalize '+0.01'           -> '0.01'
nrmx033 normalize '-0.01'           -> '-0.01'
nrmx034 normalize '+0.001'          -> '0.001'
nrmx035 normalize '-0.001'          -> '-0.001'
nrmx036 normalize '+0.000001'       -> '0.000001'
nrmx037 normalize '-0.000001'       -> '-0.000001'
nrmx038 normalize '+0.000000000001' -> '1E-12'
nrmx039 normalize '-0.000000000001' -> '-1E-12'

nrmx041 normalize 1.1        -> 1.1
nrmx042 normalize 1.10       -> 1.1
nrmx043 normalize 1.100      -> 1.1
nrmx044 normalize 1.110      -> 1.11
nrmx045 normalize -1.1       -> -1.1
nrmx046 normalize -1.10      -> -1.1
nrmx047 normalize -1.100     -> -1.1
nrmx048 normalize -1.110     -> -1.11
nrmx049 normalize 9.9        -> 9.9
nrmx050 normalize 9.90       -> 9.9
nrmx051 normalize 9.900      -> 9.9
nrmx052 normalize 9.990      -> 9.99
nrmx053 normalize -9.9       -> -9.9
nrmx054 normalize -9.90      -> -9.9
nrmx055 normalize -9.900     -> -9.9
nrmx056 normalize -9.990     -> -9.99

-- some trailing fractional zeros with zeros in units
nrmx060 normalize  10.0        -> 1E+1
nrmx061 normalize  10.00       -> 1E+1
nrmx062 normalize  100.0       -> 1E+2
nrmx063 normalize  100.00      -> 1E+2
nrmx064 normalize  1.1000E+3   -> 1.1E+3
nrmx065 normalize  1.10000E+3  -> 1.1E+3
nrmx066 normalize -10.0        -> -1E+1
nrmx067 normalize -10.00       -> -1E+1
nrmx068 normalize -100.0       -> -1E+2
nrmx069 normalize -100.00      -> -1E+2
nrmx070 normalize -1.1000E+3   -> -1.1E+3
nrmx071 normalize -1.10000E+3  -> -1.1E+3

-- some insignificant trailing zeros with positive exponent
nrmx080 normalize  10E+1       -> 1E+2
nrmx081 normalize  100E+1      -> 1E+3
nrmx082 normalize  1.0E+2      -> 1E+2
nrmx083 normalize  1.0E+3      -> 1E+3
nrmx084 normalize  1.1E+3      -> 1.1E+3
nrmx085 normalize  1.00E+3     -> 1E+3
nrmx086 normalize  1.10E+3     -> 1.1E+3
nrmx087 normalize -10E+1       -> -1E+2
nrmx088 normalize -100E+1      -> -1E+3
nrmx089 normalize -1.0E+2      -> -1E+2
nrmx090 normalize -1.0E+3      -> -1E+3
nrmx091 normalize -1.1E+3      -> -1.1E+3
nrmx092 normalize -1.00E+3     -> -1E+3
nrmx093 normalize -1.10E+3     -> -1.1E+3

-- some significant trailing zeros, were we to be trimming
nrmx100 normalize  11          -> 11
nrmx101 normalize  10          -> 1E+1
nrmx102 normalize  10.         -> 1E+1
nrmx103 normalize  1.1E+1      -> 11
nrmx104 normalize  1.0E+1      -> 1E+1
nrmx105 normalize  1.10E+2     -> 1.1E+2
nrmx106 normalize  1.00E+2     -> 1E+2
nrmx107 normalize  1.100E+3    -> 1.1E+3
nrmx108 normalize  1.000E+3    -> 1E+3
nrmx109 normalize  1.000000E+6 -> 1E+6
nrmx110 normalize -11          -> -11
nrmx111 normalize -10          -> -1E+1
nrmx112 normalize -10.         -> -1E+1
nrmx113 normalize -1.1E+1      -> -11
nrmx114 normalize -1.0E+1      -> -1E+1
nrmx115 normalize -1.10E+2     -> -1.1E+2
nrmx116 normalize -1.00E+2     -> -1E+2
nrmx117 normalize -1.100E+3    -> -1.1E+3
nrmx118 normalize -1.000E+3    -> -1E+3
nrmx119 normalize -1.00000E+5  -> -1E+5
nrmx120 normalize -1.000000E+6 -> -1E+6
nrmx121 normalize -10.00000E+6 -> -1E+7
nrmx122 normalize -100.0000E+6 -> -1E+8
nrmx123 normalize -1000.000E+6 -> -1E+9
nrmx124 normalize -10000.00E+6 -> -1E+10
nrmx125 normalize -100000.0E+6 -> -1E+11
nrmx126 normalize -1000000.E+6 -> -1E+12

-- examples from decArith
nrmx140 normalize '2.1'     ->  '2.1'
nrmx141 normalize '-2.0'    ->  '-2'
nrmx142 normalize '1.200'   ->  '1.2'
nrmx143 normalize '-120'    ->  '-1.2E+2'
nrmx144 normalize '120.00'  ->  '1.2E+2'
nrmx145 normalize '0.00'    ->  '0'

-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
nrmx160 normalize 9.999E+999999999  ->  Infinity Inexact Overflow Rounded
nrmx161 normalize -9.999E+999999999 -> -Infinity Inexact Overflow Rounded

-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
nrmx210 normalize  1.00E-999        ->   1E-999
nrmx211 normalize  0.1E-999         ->   1E-1000   Subnormal
nrmx212 normalize  0.10E-999        ->   1E-1000   Subnormal
nrmx213 normalize  0.100E-999       ->   1E-1000   Subnormal Rounded
nrmx214 normalize  0.01E-999        ->   1E-1001   Subnormal
-- next is rounded to Emin
nrmx215 normalize  0.999E-999       ->   1E-999    Inexact Rounded Subnormal Underflow
nrmx216 normalize  0.099E-999       ->   1E-1000   Inexact Rounded Subnormal Underflow
nrmx217 normalize  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
nrmx218 normalize  0.001E-999       ->   0         Inexact Rounded Subnormal Underflow
nrmx219 normalize  0.0009E-999      ->   0         Inexact Rounded Subnormal Underflow
nrmx220 normalize  0.0001E-999      ->   0         Inexact Rounded Subnormal Underflow

nrmx230 normalize -1.00E-999        ->  -1E-999
nrmx231 normalize -0.1E-999         ->  -1E-1000   Subnormal
nrmx232 normalize -0.10E-999        ->  -1E-1000   Subnormal
nrmx233 normalize -0.100E-999       ->  -1E-1000   Subnormal Rounded
nrmx234 normalize -0.01E-999        ->  -1E-1001   Subnormal
-- next is rounded to Emin
nrmx235 normalize -0.999E-999       ->  -1E-999    Inexact Rounded Subnormal Underflow
nrmx236 normalize -0.099E-999       ->  -1E-1000   Inexact Rounded Subnormal Underflow
nrmx237 normalize -0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
nrmx238 normalize -0.001E-999       ->  -0         Inexact Rounded Subnormal Underflow
nrmx239 normalize -0.0009E-999      ->  -0         Inexact Rounded Subnormal Underflow
nrmx240 normalize -0.0001E-999      ->  -0         Inexact Rounded Subnormal Underflow

-- more reshaping
precision: 9
nrmx260 normalize '56260E-10'   -> '0.000005626'
nrmx261 normalize '56260E-5'    -> '0.5626'
nrmx262 normalize '56260E-2'    -> '562.6'
nrmx263 normalize '56260E-1'    -> '5626'
nrmx265 normalize '56260E-0'    -> '5.626E+4'
nrmx266 normalize '56260E+0'    -> '5.626E+4'
nrmx267 normalize '56260E+1'    -> '5.626E+5'
nrmx268 normalize '56260E+2'    -> '5.626E+6'
nrmx269 normalize '56260E+3'    -> '5.626E+7'
nrmx270 normalize '56260E+4'    -> '5.626E+8'
nrmx271 normalize '56260E+5'    -> '5.626E+9'
nrmx272 normalize '56260E+6'    -> '5.626E+10'
nrmx280 normalize '-56260E-10'  -> '-0.000005626'
nrmx281 normalize '-56260E-5'   -> '-0.5626'
nrmx282 normalize '-56260E-2'   -> '-562.6'
nrmx283 normalize '-56260E-1'   -> '-5626'
nrmx285 normalize '-56260E-0'   -> '-5.626E+4'
nrmx286 normalize '-56260E+0'   -> '-5.626E+4'
nrmx287 normalize '-56260E+1'   -> '-5.626E+5'
nrmx288 normalize '-56260E+2'   -> '-5.626E+6'
nrmx289 normalize '-56260E+3'   -> '-5.626E+7'
nrmx290 normalize '-56260E+4'   -> '-5.626E+8'
nrmx291 normalize '-56260E+5'   -> '-5.626E+9'
nrmx292 normalize '-56260E+6'   -> '-5.626E+10'


-- specials
nrmx820 normalize 'Inf'    -> 'Infinity'
nrmx821 normalize '-Inf'   -> '-Infinity'
nrmx822 normalize   NaN    ->  NaN
nrmx823 normalize  sNaN    ->  NaN Invalid_operation

-- Null test
nrmx900 normalize  # -> NaN Invalid_operation

--- NEW FILE: multiply.decTest ---
------------------------------------------------------------------------
-- multiply.decTest -- decimal multiplication                         --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks (as base, above)
mulx000 multiply 2      2 -> 4
mulx001 multiply 2      3 -> 6
mulx002 multiply 5      1 -> 5
mulx003 multiply 5      2 -> 10
mulx004 multiply 1.20   2 -> 2.40
mulx005 multiply 1.20   0 -> 0.00
mulx006 multiply 1.20  -2 -> -2.40
mulx007 multiply -1.20  2 -> -2.40
mulx008 multiply -1.20  0 -> -0.00
mulx009 multiply -1.20 -2 -> 2.40
mulx010 multiply 5.09 7.1 -> 36.139
mulx011 multiply 2.5    4 -> 10.0
mulx012 multiply 2.50   4 -> 10.00
mulx013 multiply 1.23456789 1.00000000 -> 1.23456789 Rounded
mulx014 multiply 9.999999999 9.999999999 -> 100.000000 Inexact Rounded
mulx015 multiply 2.50   4 -> 10.00
precision: 6
mulx016 multiply 2.50   4 -> 10.00
mulx017 multiply 9.999999999 9.999999999 -> 100.000 Inexact Rounded

-- 1999.12.21: next one is a edge case if intermediate longs are used
precision: 15
mulx019 multiply 999999999999 9765625 -> 9.76562499999023E+18 Inexact Rounded
precision: 30
mulx160 multiply 999999999999 9765625 -> 9765624999990234375
precision: 9
-----

-- zeros, etc.
mulx020 multiply  0      0     ->  0
mulx021 multiply  0     -0     -> -0
mulx022 multiply -0      0     -> -0
mulx023 multiply -0     -0     ->  0
mulx030 multiply  5.00   1E-3  ->  0.00500
mulx031 multiply  00.00  0.000 ->  0.00000
mulx032 multiply  00.00  0E-3  ->  0.00000     -- rhs is 0
mulx033 multiply  0E-3   00.00 ->  0.00000     -- lhs is 0
mulx034 multiply -5.00   1E-3  -> -0.00500
mulx035 multiply -00.00  0.000 -> -0.00000
mulx036 multiply -00.00  0E-3  -> -0.00000     -- rhs is 0
mulx037 multiply -0E-3   00.00 -> -0.00000     -- lhs is 0
mulx038 multiply  5.00  -1E-3  -> -0.00500
mulx039 multiply  00.00 -0.000 -> -0.00000
mulx040 multiply  00.00 -0E-3  -> -0.00000     -- rhs is 0
mulx041 multiply  0E-3  -00.00 -> -0.00000     -- lhs is 0
mulx042 multiply -5.00  -1E-3  ->  0.00500
mulx043 multiply -00.00 -0.000 ->  0.00000
mulx044 multiply -00.00 -0E-3  ->  0.00000     -- rhs is 0
mulx045 multiply -0E-3  -00.00 ->  0.00000     -- lhs is 0

-- examples from decarith
mulx050 multiply 1.20 3        -> 3.60
mulx051 multiply 7    3        -> 21
mulx052 multiply 0.9  0.8      -> 0.72
mulx053 multiply 0.9  -0       -> -0.0
mulx054 multiply 654321 654321 -> 4.28135971E+11  Inexact Rounded

mulx060 multiply 123.45 1e7  ->  1.2345E+9
mulx061 multiply 123.45 1e8  ->  1.2345E+10
mulx062 multiply 123.45 1e+9 ->  1.2345E+11
mulx063 multiply 123.45 1e10 ->  1.2345E+12
mulx064 multiply 123.45 1e11 ->  1.2345E+13
mulx065 multiply 123.45 1e12 ->  1.2345E+14
mulx066 multiply 123.45 1e13 ->  1.2345E+15


-- test some intermediate lengths
precision: 9
mulx080 multiply 0.1 123456789           -> 12345678.9
mulx081 multiply 0.1 1234567891          -> 123456789 Inexact Rounded
mulx082 multiply 0.1 12345678912         -> 1.23456789E+9 Inexact Rounded
mulx083 multiply 0.1 12345678912345      -> 1.23456789E+12 Inexact Rounded
mulx084 multiply 0.1 123456789           -> 12345678.9
precision: 8
mulx085 multiply 0.1 12345678912         -> 1.2345679E+9 Inexact Rounded
mulx086 multiply 0.1 12345678912345      -> 1.2345679E+12 Inexact Rounded
precision: 7
mulx087 multiply 0.1 12345678912         -> 1.234568E+9 Inexact Rounded
mulx088 multiply 0.1 12345678912345      -> 1.234568E+12 Inexact Rounded

precision: 9
mulx090 multiply 123456789          0.1 -> 12345678.9
mulx091 multiply 1234567891         0.1 -> 123456789 Inexact Rounded
mulx092 multiply 12345678912        0.1 -> 1.23456789E+9 Inexact Rounded
mulx093 multiply 12345678912345     0.1 -> 1.23456789E+12 Inexact Rounded
mulx094 multiply 123456789          0.1 -> 12345678.9
precision: 8
mulx095 multiply 12345678912        0.1 -> 1.2345679E+9 Inexact Rounded
mulx096 multiply 12345678912345     0.1 -> 1.2345679E+12 Inexact Rounded
precision: 7
mulx097 multiply 12345678912        0.1 -> 1.234568E+9 Inexact Rounded
mulx098 multiply 12345678912345     0.1 -> 1.234568E+12 Inexact Rounded

-- test some more edge cases and carries
maxexponent: 9999
minexponent: -9999
precision: 33
mulx101 multiply 9 9   -> 81
mulx102 multiply 9 90   -> 810
mulx103 multiply 9 900   -> 8100
mulx104 multiply 9 9000   -> 81000
mulx105 multiply 9 90000   -> 810000
mulx106 multiply 9 900000   -> 8100000
mulx107 multiply 9 9000000   -> 81000000
mulx108 multiply 9 90000000   -> 810000000
mulx109 multiply 9 900000000   -> 8100000000
mulx110 multiply 9 9000000000   -> 81000000000
mulx111 multiply 9 90000000000   -> 810000000000
mulx112 multiply 9 900000000000   -> 8100000000000
mulx113 multiply 9 9000000000000   -> 81000000000000
mulx114 multiply 9 90000000000000   -> 810000000000000
mulx115 multiply 9 900000000000000   -> 8100000000000000
mulx116 multiply 9 9000000000000000   -> 81000000000000000
mulx117 multiply 9 90000000000000000   -> 810000000000000000
mulx118 multiply 9 900000000000000000   -> 8100000000000000000
mulx119 multiply 9 9000000000000000000   -> 81000000000000000000
mulx120 multiply 9 90000000000000000000   -> 810000000000000000000
mulx121 multiply 9 900000000000000000000   -> 8100000000000000000000
mulx122 multiply 9 9000000000000000000000   -> 81000000000000000000000
mulx123 multiply 9 90000000000000000000000   -> 810000000000000000000000
-- test some more edge cases without carries
mulx131 multiply 3 3   -> 9
mulx132 multiply 3 30   -> 90
mulx133 multiply 3 300   -> 900
mulx134 multiply 3 3000   -> 9000
mulx135 multiply 3 30000   -> 90000
mulx136 multiply 3 300000   -> 900000
mulx137 multiply 3 3000000   -> 9000000
mulx138 multiply 3 30000000   -> 90000000
mulx139 multiply 3 300000000   -> 900000000
mulx140 multiply 3 3000000000   -> 9000000000
mulx141 multiply 3 30000000000   -> 90000000000
mulx142 multiply 3 300000000000   -> 900000000000
mulx143 multiply 3 3000000000000   -> 9000000000000
mulx144 multiply 3 30000000000000   -> 90000000000000
mulx145 multiply 3 300000000000000   -> 900000000000000
mulx146 multiply 3 3000000000000000   -> 9000000000000000
mulx147 multiply 3 30000000000000000   -> 90000000000000000
mulx148 multiply 3 300000000000000000   -> 900000000000000000
mulx149 multiply 3 3000000000000000000   -> 9000000000000000000
mulx150 multiply 3 30000000000000000000   -> 90000000000000000000
mulx151 multiply 3 300000000000000000000   -> 900000000000000000000
mulx152 multiply 3 3000000000000000000000   -> 9000000000000000000000
mulx153 multiply 3 30000000000000000000000   -> 90000000000000000000000

maxexponent: 999999999
minexponent: -999999999
precision: 9
-- test some cases that are close to exponent overflow/underflow
mulx170 multiply 1 9e999999999    -> 9E+999999999
mulx171 multiply 1 9.9e999999999  -> 9.9E+999999999
mulx172 multiply 1 9.99e999999999 -> 9.99E+999999999
mulx173 multiply 9e999999999    1 -> 9E+999999999
mulx174 multiply 9.9e999999999  1 -> 9.9E+999999999
mulx176 multiply 9.99e999999999 1 -> 9.99E+999999999
mulx177 multiply 1 9.99999999e999999999 -> 9.99999999E+999999999
mulx178 multiply 9.99999999e999999999 1 -> 9.99999999E+999999999

mulx180 multiply 0.1 9e-999999998   -> 9E-999999999
mulx181 multiply 0.1 99e-999999998  -> 9.9E-999999998
mulx182 multiply 0.1 999e-999999998 -> 9.99E-999999997

mulx183 multiply 0.1 9e-999999998     -> 9E-999999999
mulx184 multiply 0.1 99e-999999998    -> 9.9E-999999998
mulx185 multiply 0.1 999e-999999998   -> 9.99E-999999997
mulx186 multiply 0.1 999e-999999997   -> 9.99E-999999996
mulx187 multiply 0.1 9999e-999999997  -> 9.999E-999999995
mulx188 multiply 0.1 99999e-999999997 -> 9.9999E-999999994

mulx190 multiply 1 9e-999999998   -> 9E-999999998
mulx191 multiply 1 99e-999999998  -> 9.9E-999999997
mulx192 multiply 1 999e-999999998 -> 9.99E-999999996
mulx193 multiply 9e-999999998   1 -> 9E-999999998
mulx194 multiply 99e-999999998  1 -> 9.9E-999999997
mulx195 multiply 999e-999999998 1 -> 9.99E-999999996

mulx196 multiply 1e-599999999 1e-400000000 -> 1E-999999999
mulx197 multiply 1e-600000000 1e-399999999 -> 1E-999999999
mulx198 multiply 1.2e-599999999 1.2e-400000000 -> 1.44E-999999999
mulx199 multiply 1.2e-600000000 1.2e-399999999 -> 1.44E-999999999

mulx201 multiply 1e599999999 1e400000000 -> 1E+999999999
mulx202 multiply 1e600000000 1e399999999 -> 1E+999999999
mulx203 multiply 1.2e599999999 1.2e400000000 -> 1.44E+999999999
mulx204 multiply 1.2e600000000 1.2e399999999 -> 1.44E+999999999

-- long operand triangle
precision: 33
mulx246 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511992830 Inexact Rounded
precision: 32
mulx247 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199283  Inexact Rounded
precision: 31
mulx248 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165119928   Inexact Rounded
precision: 30
mulx249 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916511993    Inexact Rounded
precision: 29
mulx250 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651199     Inexact Rounded
precision: 28
mulx251 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165120      Inexact Rounded
precision: 27
mulx252 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671916512       Inexact Rounded
precision: 26
mulx253 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967191651        Inexact Rounded
precision: 25
mulx254 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719165         Inexact Rounded
precision: 24
mulx255 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369671917          Inexact Rounded
precision: 23
mulx256 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967192           Inexact Rounded
precision: 22
mulx257 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933696719            Inexact Rounded
precision: 21
mulx258 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193369672             Inexact Rounded
precision: 20
mulx259 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119336967              Inexact Rounded
precision: 19
mulx260 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011933697               Inexact Rounded
precision: 18
mulx261 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193370                Inexact Rounded
precision: 17
mulx262 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119337                 Inexact Rounded
precision: 16
mulx263 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908011934                  Inexact Rounded
precision: 15
mulx264 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801193                   Inexact Rounded
precision: 14
mulx265 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080119                    Inexact Rounded
precision: 13
mulx266 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908012                     Inexact Rounded
precision: 12
mulx267 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.290801                      Inexact Rounded
precision: 11
mulx268 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29080                       Inexact Rounded
precision: 10
mulx269 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.2908                        Inexact Rounded
precision:  9
mulx270 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.291                         Inexact Rounded
precision:  8
mulx271 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.29                          Inexact Rounded
precision:  7
mulx272 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433.3                           Inexact Rounded
precision:  6
mulx273 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 145433                            Inexact Rounded
precision:  5
mulx274 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.4543E+5                         Inexact Rounded
precision:  4
mulx275 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.454E+5                         Inexact Rounded
precision:  3
mulx276 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.45E+5                         Inexact Rounded
precision:  2
mulx277 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1.5E+5                         Inexact Rounded
precision:  1
mulx278 multiply 30269.587755640502150977251770554 4.8046009735990873395936309640543 -> 1E+5                          Inexact Rounded

-- tryzeros cases
precision:   7
rounding:    half_up
maxExponent: 92
minexponent: -92
mulx504  multiply  0E-60 1000E-60  -> 0E-98 Clamped
mulx505  multiply  100E+60 0E+60   -> 0E+92 Clamped

-- mixed with zeros
maxexponent: 999999999
minexponent: -999999999
precision: 9
mulx541 multiply  0    -1     -> -0
mulx542 multiply -0    -1     ->  0
mulx543 multiply  0     1     ->  0
mulx544 multiply -0     1     -> -0
mulx545 multiply -1     0     -> -0
mulx546 multiply -1    -0     ->  0
mulx547 multiply  1     0     ->  0
mulx548 multiply  1    -0     -> -0

mulx551 multiply  0.0  -1     -> -0.0
mulx552 multiply -0.0  -1     ->  0.0
mulx553 multiply  0.0   1     ->  0.0
mulx554 multiply -0.0   1     -> -0.0
mulx555 multiply -1.0   0     -> -0.0
mulx556 multiply -1.0  -0     ->  0.0
mulx557 multiply  1.0   0     ->  0.0
mulx558 multiply  1.0  -0     -> -0.0

mulx561 multiply  0    -1.0   -> -0.0
mulx562 multiply -0    -1.0   ->  0.0
mulx563 multiply  0     1.0   ->  0.0
mulx564 multiply -0     1.0   -> -0.0
mulx565 multiply -1     0.0   -> -0.0
mulx566 multiply -1    -0.0   ->  0.0
mulx567 multiply  1     0.0   ->  0.0
mulx568 multiply  1    -0.0   -> -0.0

mulx571 multiply  0.0  -1.0   -> -0.00
mulx572 multiply -0.0  -1.0   ->  0.00
mulx573 multiply  0.0   1.0   ->  0.00
mulx574 multiply -0.0   1.0   -> -0.00
mulx575 multiply -1.0   0.0   -> -0.00
mulx576 multiply -1.0  -0.0   ->  0.00
mulx577 multiply  1.0   0.0   ->  0.00
mulx578 multiply  1.0  -0.0   -> -0.00


-- Specials
mulx580 multiply  Inf  -Inf   -> -Infinity
mulx581 multiply  Inf  -1000  -> -Infinity
mulx582 multiply  Inf  -1     -> -Infinity
mulx583 multiply  Inf  -0     ->  NaN  Invalid_operation
mulx584 multiply  Inf   0     ->  NaN  Invalid_operation
mulx585 multiply  Inf   1     ->  Infinity
mulx586 multiply  Inf   1000  ->  Infinity
mulx587 multiply  Inf   Inf   ->  Infinity
mulx588 multiply -1000  Inf   -> -Infinity
mulx589 multiply -Inf   Inf   -> -Infinity
mulx590 multiply -1     Inf   -> -Infinity
mulx591 multiply -0     Inf   ->  NaN  Invalid_operation
mulx592 multiply  0     Inf   ->  NaN  Invalid_operation
mulx593 multiply  1     Inf   ->  Infinity
mulx594 multiply  1000  Inf   ->  Infinity
mulx595 multiply  Inf   Inf   ->  Infinity

mulx600 multiply -Inf  -Inf   ->  Infinity
mulx601 multiply -Inf  -1000  ->  Infinity
mulx602 multiply -Inf  -1     ->  Infinity
mulx603 multiply -Inf  -0     ->  NaN  Invalid_operation
mulx604 multiply -Inf   0     ->  NaN  Invalid_operation
mulx605 multiply -Inf   1     -> -Infinity
mulx606 multiply -Inf   1000  -> -Infinity
mulx607 multiply -Inf   Inf   -> -Infinity
mulx608 multiply -1000  Inf   -> -Infinity
mulx609 multiply -Inf  -Inf   ->  Infinity
mulx610 multiply -1    -Inf   ->  Infinity
mulx611 multiply -0    -Inf   ->  NaN  Invalid_operation
mulx612 multiply  0    -Inf   ->  NaN  Invalid_operation
mulx613 multiply  1    -Inf   -> -Infinity
mulx614 multiply  1000 -Inf   -> -Infinity
mulx615 multiply  Inf  -Inf   -> -Infinity

mulx621 multiply  NaN -Inf    ->  NaN
mulx622 multiply  NaN -1000   ->  NaN
mulx623 multiply  NaN -1      ->  NaN
mulx624 multiply  NaN -0      ->  NaN
mulx625 multiply  NaN  0      ->  NaN
mulx626 multiply  NaN  1      ->  NaN
mulx627 multiply  NaN  1000   ->  NaN
mulx628 multiply  NaN  Inf    ->  NaN
mulx629 multiply  NaN  NaN    ->  NaN
mulx630 multiply -Inf  NaN    ->  NaN
mulx631 multiply -1000 NaN    ->  NaN
mulx632 multiply -1    NaN    ->  NaN
mulx633 multiply -0    NaN    ->  NaN
mulx634 multiply  0    NaN    ->  NaN
mulx635 multiply  1    NaN    ->  NaN
mulx636 multiply  1000 NaN    ->  NaN
mulx637 multiply  Inf  NaN    ->  NaN

mulx641 multiply  sNaN -Inf   ->  NaN  Invalid_operation
mulx642 multiply  sNaN -1000  ->  NaN  Invalid_operation
mulx643 multiply  sNaN -1     ->  NaN  Invalid_operation
mulx644 multiply  sNaN -0     ->  NaN  Invalid_operation
mulx645 multiply  sNaN  0     ->  NaN  Invalid_operation
mulx646 multiply  sNaN  1     ->  NaN  Invalid_operation
mulx647 multiply  sNaN  1000  ->  NaN  Invalid_operation
mulx648 multiply  sNaN  NaN   ->  NaN  Invalid_operation
mulx649 multiply  sNaN sNaN   ->  NaN  Invalid_operation
mulx650 multiply  NaN  sNaN   ->  NaN  Invalid_operation
mulx651 multiply -Inf  sNaN   ->  NaN  Invalid_operation
mulx652 multiply -1000 sNaN   ->  NaN  Invalid_operation
mulx653 multiply -1    sNaN   ->  NaN  Invalid_operation
mulx654 multiply -0    sNaN   ->  NaN  Invalid_operation
mulx655 multiply  0    sNaN   ->  NaN  Invalid_operation
mulx656 multiply  1    sNaN   ->  NaN  Invalid_operation
mulx657 multiply  1000 sNaN   ->  NaN  Invalid_operation
mulx658 multiply  Inf  sNaN   ->  NaN  Invalid_operation
mulx659 multiply  NaN  sNaN   ->  NaN  Invalid_operation

-- overflow and underflow tests .. note subnormal results
maxexponent: 999999999
minexponent: -999999999
mulx730 multiply +1.23456789012345E-0 9E+999999999 -> Infinity Inexact Overflow Rounded
mulx731 multiply 9E+999999999 +1.23456789012345E-0 -> Infinity Inexact Overflow Rounded
mulx732 multiply +0.100 9E-999999999 -> 9.00E-1000000000 Subnormal
mulx733 multiply 9E-999999999 +0.100 -> 9.00E-1000000000 Subnormal
mulx735 multiply -1.23456789012345E-0 9E+999999999 -> -Infinity Inexact Overflow Rounded
mulx736 multiply 9E+999999999 -1.23456789012345E-0 -> -Infinity Inexact Overflow Rounded
mulx737 multiply -0.100 9E-999999999 -> -9.00E-1000000000 Subnormal
mulx738 multiply 9E-999999999 -0.100 -> -9.00E-1000000000 Subnormal

mulx739 multiply 1e-599999999 1e-400000001 -> 1E-1000000000 Subnormal
mulx740 multiply 1e-599999999 1e-400000000 -> 1E-999999999
mulx741 multiply 1e-600000000 1e-400000000 -> 1E-1000000000 Subnormal
mulx742 multiply 9e-999999998 0.01 -> 9E-1000000000 Subnormal
mulx743 multiply 9e-999999998 0.1  -> 9E-999999999
mulx744 multiply 0.01 9e-999999998 -> 9E-1000000000 Subnormal
mulx745 multiply 1e599999999 1e400000001 -> Infinity Overflow Inexact Rounded
mulx746 multiply 1e599999999 1e400000000 -> 1E+999999999
mulx747 multiply 1e600000000 1e400000000 -> Infinity Overflow Inexact Rounded
mulx748 multiply 9e999999998 100  -> Infinity Overflow Inexact Rounded
mulx749 multiply 9e999999998 10   -> 9.0E+999999999
mulx750 multiply 100  9e999999998 -> Infinity Overflow Inexact Rounded
-- signs
mulx751 multiply  1e+777777777  1e+411111111 ->  Infinity Overflow Inexact Rounded
mulx752 multiply  1e+777777777 -1e+411111111 -> -Infinity Overflow Inexact Rounded
mulx753 multiply -1e+777777777  1e+411111111 -> -Infinity Overflow Inexact Rounded
mulx754 multiply -1e+777777777 -1e+411111111 ->  Infinity Overflow Inexact Rounded
mulx755 multiply  1e-777777777  1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded
mulx756 multiply  1e-777777777 -1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
mulx757 multiply -1e-777777777  1e-411111111 -> -0E-1000000007 Underflow Subnormal Inexact Rounded
mulx758 multiply -1e-777777777 -1e-411111111 ->  0E-1000000007 Underflow Subnormal Inexact Rounded

-- 'subnormal' boundary (all hard underflow or overflow in base arithemtic)
precision: 9
mulx760 multiply 1e-600000000 1e-400000001 -> 1E-1000000001 Subnormal
mulx761 multiply 1e-600000000 1e-400000002 -> 1E-1000000002 Subnormal
mulx762 multiply 1e-600000000 1e-400000003 -> 1E-1000000003 Subnormal
mulx763 multiply 1e-600000000 1e-400000004 -> 1E-1000000004 Subnormal
mulx764 multiply 1e-600000000 1e-400000005 -> 1E-1000000005 Subnormal
mulx765 multiply 1e-600000000 1e-400000006 -> 1E-1000000006 Subnormal
mulx766 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx767 multiply 1e-600000000 1e-400000008 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
mulx768 multiply 1e-600000000 1e-400000009 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
mulx769 multiply 1e-600000000 1e-400000010 -> 0E-1000000007 Underflow Subnormal Inexact Rounded
-- [no equivalent of 'subnormal' for overflow]
mulx770 multiply 1e+600000000 1e+400000001 -> Infinity Overflow Inexact Rounded
mulx771 multiply 1e+600000000 1e+400000002 -> Infinity Overflow Inexact Rounded
mulx772 multiply 1e+600000000 1e+400000003 -> Infinity Overflow Inexact Rounded
mulx773 multiply 1e+600000000 1e+400000004 -> Infinity Overflow Inexact Rounded
mulx774 multiply 1e+600000000 1e+400000005 -> Infinity Overflow Inexact Rounded
mulx775 multiply 1e+600000000 1e+400000006 -> Infinity Overflow Inexact Rounded
mulx776 multiply 1e+600000000 1e+400000007 -> Infinity Overflow Inexact Rounded
mulx777 multiply 1e+600000000 1e+400000008 -> Infinity Overflow Inexact Rounded
mulx778 multiply 1e+600000000 1e+400000009 -> Infinity Overflow Inexact Rounded
mulx779 multiply 1e+600000000 1e+400000010 -> Infinity Overflow Inexact Rounded

-- 'subnormal' test edge condition at higher precisions
precision: 99
mulx780 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx781 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal
mulx782 multiply 1e-600000000 1e-400000097 -> 1E-1000000097 Subnormal
mulx783 multiply 1e-600000000 1e-400000098 -> 0E-1000000097 Underflow Subnormal Inexact Rounded
precision: 999
mulx784 multiply 1e-600000000 1e-400000997 -> 1E-1000000997 Subnormal
mulx785 multiply 1e-600000000 1e-400000998 -> 0E-1000000997 Underflow Subnormal Inexact Rounded

-- following testcases [through mulx800] not yet run against code
precision: 9999
mulx786 multiply 1e-600000000 1e-400009997 -> 1E-1000009997 Subnormal
mulx787 multiply 1e-600000000 1e-400009998 -> 0E-1000009997 Underflow Subnormal Inexact Rounded
precision: 99999
mulx788 multiply 1e-600000000 1e-400099997 -> 1E-1000099997 Subnormal
mulx789 multiply 1e-600000000 1e-400099998 -> 0E-1000099997 Underflow Subnormal Inexact Rounded
precision: 999999
mulx790 multiply 1e-600000000 1e-400999997 -> 1E-1000999997 Subnormal
mulx791 multiply 1e-600000000 1e-400999998 -> 0E-1000999997 Underflow Subnormal Inexact Rounded
precision: 9999999
mulx792 multiply 1e-600000000 1e-409999997 -> 1E-1009999997 Subnormal
mulx793 multiply 1e-600000000 1e-409999998 -> 0E-1009999997 Underflow Subnormal Inexact Rounded
precision: 99999999
mulx794 multiply 1e-600000000 1e-499999997 -> 1E-1099999997 Subnormal
mulx795 multiply 1e-600000000 1e-499999998 -> 0E-1099999997 Underflow Subnormal Inexact Rounded
precision: 999999999
mulx796 multiply 1e-999999999 1e-999999997 -> 1E-1999999996 Subnormal
mulx797 multiply 1e-999999999 1e-999999998 -> 1E-1999999997 Subnormal
mulx798 multiply 1e-999999999 1e-999999999 -> 0E-1999999997 Underflow Subnormal Inexact Rounded
mulx799 multiply 1e-600000000 1e-400000007 -> 1E-1000000007 Subnormal
mulx800 multiply 1e-600000000 1e-400000008 -> 1E-1000000008 Subnormal

-- test subnormals rounding
precision:   5
maxExponent: 999
minexponent: -999
rounding:    half_even

mulx801 multiply  1.0000E-999  1     -> 1.0000E-999
mulx802 multiply  1.000E-999   1e-1  -> 1.000E-1000 Subnormal
mulx803 multiply  1.00E-999    1e-2  -> 1.00E-1001  Subnormal
mulx804 multiply  1.0E-999     1e-3  -> 1.0E-1002   Subnormal
mulx805 multiply  1.0E-999     1e-4  -> 1E-1003     Subnormal Rounded
mulx806 multiply  1.3E-999     1e-4  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx807 multiply  1.5E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx808 multiply  1.7E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx809 multiply  2.3E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx810 multiply  2.5E-999     1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx811 multiply  2.7E-999     1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded
mulx812 multiply  1.49E-999    1e-4  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx813 multiply  1.50E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx814 multiply  1.51E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx815 multiply  2.49E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx816 multiply  2.50E-999    1e-4  -> 2E-1003     Underflow Subnormal Inexact Rounded
mulx817 multiply  2.51E-999    1e-4  -> 3E-1003     Underflow Subnormal Inexact Rounded

mulx818 multiply  1E-999       1e-4  -> 1E-1003     Subnormal
mulx819 multiply  3E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded
mulx820 multiply  5E-999       1e-5  -> 0E-1003     Underflow Subnormal Inexact Rounded
mulx821 multiply  7E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx822 multiply  9E-999       1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded
mulx823 multiply  9.9E-999     1e-5  -> 1E-1003     Underflow Subnormal Inexact Rounded

mulx824 multiply  1E-999      -1e-4  -> -1E-1003    Subnormal
mulx825 multiply  3E-999      -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded
mulx826 multiply -5E-999       1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded
mulx827 multiply  7E-999      -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
mulx828 multiply -9E-999       1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
mulx829 multiply  9.9E-999    -1e-5  -> -1E-1003    Underflow Subnormal Inexact Rounded
mulx830 multiply  3.0E-999    -1e-5  -> -0E-1003    Underflow Subnormal Inexact Rounded

mulx831 multiply  1.0E-501     1e-501 -> 1.0E-1002   Subnormal
mulx832 multiply  2.0E-501     2e-501 -> 4.0E-1002   Subnormal
mulx833 multiply  4.0E-501     4e-501 -> 1.60E-1001  Subnormal
mulx834 multiply 10.0E-501    10e-501 -> 1.000E-1000 Subnormal
mulx835 multiply 30.0E-501    30e-501 -> 9.000E-1000 Subnormal
mulx836 multiply 40.0E-501    40e-501 -> 1.6000E-999

-- squares
mulx840 multiply  1E-502       1e-502 -> 0E-1003     Underflow Subnormal Inexact Rounded
mulx841 multiply  1E-501       1e-501 -> 1E-1002     Subnormal
mulx842 multiply  2E-501       2e-501 -> 4E-1002     Subnormal
mulx843 multiply  4E-501       4e-501 -> 1.6E-1001   Subnormal
mulx844 multiply 10E-501      10e-501 -> 1.00E-1000  Subnormal
mulx845 multiply 30E-501      30e-501 -> 9.00E-1000  Subnormal
mulx846 multiply 40E-501      40e-501 -> 1.600E-999

-- cubes
mulx850 multiply  1E-670     1e-335 -> 0E-1003    Underflow Subnormal Inexact Rounded
mulx851 multiply  1E-668     1e-334 -> 1E-1002    Subnormal
mulx852 multiply  4E-668     2e-334 -> 8E-1002    Subnormal
mulx853 multiply  9E-668     3e-334 -> 2.7E-1001  Subnormal
mulx854 multiply 16E-668     4e-334 -> 6.4E-1001  Subnormal
mulx855 multiply 25E-668     5e-334 -> 1.25E-1000 Subnormal
mulx856 multiply 10E-668   100e-334 -> 1.000E-999

-- test from 0.099 ** 999 at 15 digits
precision: 19
mulx860 multiply  6636851557994578716E-520 6636851557994578716E-520 -> 4.40477986028551E-1003 Underflow Subnormal Inexact Rounded

-- Long operand overflow may be a different path
precision: 3
maxExponent: 999999999
minexponent: -999999999
mulx870 multiply 1  9.999E+999999999   ->  Infinity Inexact Overflow Rounded
mulx871 multiply 1 -9.999E+999999999   -> -Infinity Inexact Overflow Rounded
mulx872 multiply    9.999E+999999999 1 ->  Infinity Inexact Overflow Rounded
mulx873 multiply   -9.999E+999999999 1 -> -Infinity Inexact Overflow Rounded

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
mulx881 multiply  1.2347E-40  1.2347E-40  ->  1.524E-80 Inexact Rounded Subnormal Underflow
mulx882 multiply  1.234E-40  1.234E-40  ->  1.523E-80 Inexact Rounded Subnormal Underflow
mulx883 multiply  1.23E-40   1.23E-40   ->  1.513E-80 Inexact Rounded Subnormal Underflow
mulx884 multiply  1.2E-40    1.2E-40    ->  1.44E-80  Subnormal
mulx885 multiply  1.2E-40    1.2E-41    ->  1.44E-81  Subnormal
mulx886 multiply  1.2E-40    1.2E-42    ->  1.4E-82   Subnormal Inexact Rounded Underflow
mulx887 multiply  1.2E-40    1.3E-42    ->  1.6E-82   Subnormal Inexact Rounded Underflow
mulx888 multiply  1.3E-40    1.3E-42    ->  1.7E-82   Subnormal Inexact Rounded Underflow

mulx891 multiply  1.2345E-39   1.234E-40  ->  1.5234E-79 Inexact Rounded
mulx892 multiply  1.23456E-39  1.234E-40  ->  1.5234E-79 Inexact Rounded
mulx893 multiply  1.2345E-40   1.234E-40  ->  1.523E-80  Inexact Rounded Subnormal Underflow
mulx894 multiply  1.23456E-40  1.234E-40  ->  1.523E-80  Inexact Rounded Subnormal Underflow
mulx895 multiply  1.2345E-41   1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow
mulx896 multiply  1.23456E-41  1.234E-40  ->  1.52E-81   Inexact Rounded Subnormal Underflow

-- Null tests
mulx900 multiply 10  # -> NaN Invalid_operation
mulx901 multiply  # 10 -> NaN Invalid_operation


--- NEW FILE: minus.decTest ---
------------------------------------------------------------------------
-- minus.decTest -- decimal negation                                  --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of tests primarily tests the existence of the operator.
-- Subtraction, rounding, and more overflows are tested elsewhere.

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

minx001 minus '1'      -> '-1'
minx002 minus '-1'     -> '1'
minx003 minus '1.00'   -> '-1.00'
minx004 minus '-1.00'  -> '1.00'
minx005 minus '0'      -> '0'
minx006 minus '0.00'   -> '0.00'
minx007 minus '00.0'   -> '0.0'
minx008 minus '00.00'  -> '0.00'
minx009 minus '00'     -> '0'

minx010 minus '-2'     -> '2'
minx011 minus '2'      -> '-2'
minx012 minus '-2.00'  -> '2.00'
minx013 minus '2.00'   -> '-2.00'
minx014 minus '-0'     -> '0'
minx015 minus '-0.00'  -> '0.00'
minx016 minus '-00.0'  -> '0.0'
minx017 minus '-00.00' -> '0.00'
minx018 minus '-00'    -> '0'

-- "lhs" zeros in plus and minus have exponent = operand
minx020 minus '-0E3'   -> '0E+3'
minx021 minus '-0E2'   -> '0E+2'
minx022 minus '-0E1'   -> '0E+1'
minx023 minus '-0E0'   -> '0'
minx024 minus '+0E0'   -> '0'
minx025 minus '+0E1'   -> '0E+1'
minx026 minus '+0E2'   -> '0E+2'
minx027 minus '+0E3'   -> '0E+3'

minx030 minus '-5E3'   -> '5E+3'
minx031 minus '-5E8'   -> '5E+8'
minx032 minus '-5E13'  -> '5E+13'
minx033 minus '-5E18'  -> '5E+18'
minx034 minus '+5E3'   -> '-5E+3'
minx035 minus '+5E8'   -> '-5E+8'
minx036 minus '+5E13'  -> '-5E+13'
minx037 minus '+5E18'  -> '-5E+18'

minx050 minus '-2000000' -> '2000000'
minx051 minus '2000000'  -> '-2000000'
precision: 7
minx052 minus '-2000000' -> '2000000'
minx053 minus '2000000'  -> '-2000000'
precision: 6
minx054 minus '-2000000' -> '2.00000E+6' Rounded
minx055 minus '2000000'  -> '-2.00000E+6' Rounded
precision: 3
minx056 minus '-2000000' -> '2.00E+6' Rounded
minx057 minus '2000000'  -> '-2.00E+6' Rounded

-- more fixed, potential LHS swaps/overlays if done by 0 subtract x
precision: 9
minx060 minus '56267E-10'   -> '-0.0000056267'
minx061 minus '56267E-5'    -> '-0.56267'
minx062 minus '56267E-2'    -> '-562.67'
minx063 minus '56267E-1'    -> '-5626.7'
minx065 minus '56267E-0'    -> '-56267'
minx066 minus '56267E+0'    -> '-56267'
minx067 minus '56267E+1'    -> '-5.6267E+5'
minx068 minus '56267E+2'    -> '-5.6267E+6'
minx069 minus '56267E+3'    -> '-5.6267E+7'
minx070 minus '56267E+4'    -> '-5.6267E+8'
minx071 minus '56267E+5'    -> '-5.6267E+9'
minx072 minus '56267E+6'    -> '-5.6267E+10'
minx080 minus '-56267E-10'  -> '0.0000056267'
minx081 minus '-56267E-5'   -> '0.56267'
minx082 minus '-56267E-2'   -> '562.67'
minx083 minus '-56267E-1'   -> '5626.7'
minx085 minus '-56267E-0'   -> '56267'
minx086 minus '-56267E+0'   -> '56267'
minx087 minus '-56267E+1'   -> '5.6267E+5'
minx088 minus '-56267E+2'   -> '5.6267E+6'
minx089 minus '-56267E+3'   -> '5.6267E+7'
minx090 minus '-56267E+4'   -> '5.6267E+8'
minx091 minus '-56267E+5'   -> '5.6267E+9'
minx092 minus '-56267E+6'   -> '5.6267E+10'


-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
minx100 minus 9.999E+999999999  -> -Infinity Inexact Overflow Rounded
minx101 minus -9.999E+999999999 ->  Infinity Inexact Overflow Rounded

-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
minx110 minus  1.00E-999        ->  -1.00E-999
minx111 minus  0.1E-999         ->  -1E-1000   Subnormal
minx112 minus  0.10E-999        ->  -1.0E-1000 Subnormal
minx113 minus  0.100E-999       ->  -1.0E-1000 Subnormal Rounded
minx114 minus  0.01E-999        ->  -1E-1001   Subnormal
-- next is rounded to Emin
minx115 minus  0.999E-999       ->  -1.00E-999 Inexact Rounded Subnormal Underflow
minx116 minus  0.099E-999       ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
minx117 minus  0.009E-999       ->  -1E-1001   Inexact Rounded Subnormal Underflow
minx118 minus  0.001E-999       ->  -0E-1001   Inexact Rounded Subnormal Underflow
minx119 minus  0.0009E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow
minx120 minus  0.0001E-999      ->  -0E-1001   Inexact Rounded Subnormal Underflow

minx130 minus -1.00E-999        ->   1.00E-999
minx131 minus -0.1E-999         ->   1E-1000   Subnormal
minx132 minus -0.10E-999        ->   1.0E-1000 Subnormal
minx133 minus -0.100E-999       ->   1.0E-1000 Subnormal Rounded
minx134 minus -0.01E-999        ->   1E-1001   Subnormal
-- next is rounded to Emin
minx135 minus -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
minx136 minus -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
minx137 minus -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
minx138 minus -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
minx139 minus -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
minx140 minus -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow


-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
minx301 minus 12345678000  -> -1.23456780E+10 Rounded
minx302 minus 1234567800   -> -1.23456780E+9 Rounded
minx303 minus 1234567890   -> -1.23456789E+9 Rounded
minx304 minus 1234567891   -> -1.23456789E+9 Inexact Rounded
minx305 minus 12345678901  -> -1.23456789E+10 Inexact Rounded
minx306 minus 1234567896   -> -1.23456790E+9 Inexact Rounded

precision: 15
-- still checking
minx321 minus 12345678000  -> -12345678000
minx322 minus 1234567800   -> -1234567800
minx323 minus 1234567890   -> -1234567890
minx324 minus 1234567891   -> -1234567891
minx325 minus 12345678901  -> -12345678901
minx326 minus 1234567896   -> -1234567896

-- specials
minx420 minus 'Inf'    -> '-Infinity'
minx421 minus '-Inf'   -> 'Infinity'
minx422 minus   NaN    ->  NaN
minx423 minus  sNaN    ->  NaN  Invalid_operation

-- Null tests
minx900 minus  # -> NaN Invalid_operation


--- NEW FILE: min.decTest ---
------------------------------------------------------------------------
-- min.decTest -- decimal minimum                                     --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks
mnmx001 min  -2  -2  -> -2
mnmx002 min  -2  -1  -> -2
mnmx003 min  -2   0  -> -2
mnmx004 min  -2   1  -> -2
mnmx005 min  -2   2  -> -2
mnmx006 min  -1  -2  -> -2
mnmx007 min  -1  -1  -> -1
mnmx008 min  -1   0  -> -1
mnmx009 min  -1   1  -> -1
mnmx010 min  -1   2  -> -1
mnmx011 min   0  -2  -> -2
mnmx012 min   0  -1  -> -1
mnmx013 min   0   0  ->  0
mnmx014 min   0   1  ->  0
mnmx015 min   0   2  ->  0
mnmx016 min   1  -2  -> -2
mnmx017 min   1  -1  -> -1
mnmx018 min   1   0  ->  0
mnmx019 min   1   1  ->  1
mnmx020 min   1   2  ->  1
mnmx021 min   2  -2  -> -2
mnmx022 min   2  -1  -> -1
mnmx023 min   2   0  ->  0
mnmx025 min   2   1  ->  1
mnmx026 min   2   2  ->  2

-- extended zeros
mnmx030 min   0     0   ->  0
mnmx031 min   0    -0   ->  0
mnmx032 min   0    -0.0 ->  0
mnmx033 min   0     0.0 ->  0
mnmx034 min  -0     0   -> -0
mnmx035 min  -0    -0   -> -0
mnmx036 min  -0    -0.0 -> -0
mnmx037 min  -0     0.0 -> -0
mnmx038 min   0.0   0   ->  0.0
mnmx039 min   0.0  -0   ->  0.0
mnmx040 min   0.0  -0.0 ->  0.0
mnmx041 min   0.0   0.0 ->  0.0
mnmx042 min  -0.0   0   -> -0.0
mnmx043 min  -0.0  -0   -> -0.0
mnmx044 min  -0.0  -0.0 -> -0.0
mnmx045 min  -0.0   0.0 -> -0.0

mnmx046 min  -0E1   0E2 -> -0E+1
mnmx047 min   0E2   0E1 ->  0E+2
mnmx048 min   0E1   0E2 ->  0E+1
mnmx049 min  -0E3  -0E2 -> -0E+3

-- Specials
precision: 9
mnmx090 min  Inf  -Inf   -> -Infinity
mnmx091 min  Inf  -1000  -> -1000
mnmx092 min  Inf  -1     -> -1
mnmx093 min  Inf  -0     -> -0
mnmx094 min  Inf   0     ->  0
mnmx095 min  Inf   1     ->  1
mnmx096 min  Inf   1000  ->  1000
mnmx097 min  Inf   Inf   ->  Infinity
mnmx098 min -1000  Inf   -> -1000
mnmx099 min -Inf   Inf   -> -Infinity
mnmx100 min -1     Inf   -> -1
mnmx101 min -0     Inf   -> -0
mnmx102 min  0     Inf   ->  0
mnmx103 min  1     Inf   ->  1
mnmx104 min  1000  Inf   ->  1000
mnmx105 min  Inf   Inf   ->  Infinity

mnmx120 min -Inf  -Inf   -> -Infinity
mnmx121 min -Inf  -1000  -> -Infinity
mnmx122 min -Inf  -1     -> -Infinity
mnmx123 min -Inf  -0     -> -Infinity
mnmx124 min -Inf   0     -> -Infinity
mnmx125 min -Inf   1     -> -Infinity
mnmx126 min -Inf   1000  -> -Infinity
mnmx127 min -Inf   Inf   -> -Infinity
mnmx128 min -Inf  -Inf   -> -Infinity
mnmx129 min -1000 -Inf   -> -Infinity
mnmx130 min -1    -Inf   -> -Infinity
mnmx131 min -0    -Inf   -> -Infinity
mnmx132 min  0    -Inf   -> -Infinity
mnmx133 min  1    -Inf   -> -Infinity
mnmx134 min  1000 -Inf   -> -Infinity
mnmx135 min  Inf  -Inf   -> -Infinity

mnmx141 min  NaN -Inf    ->  NaN
mnmx142 min  NaN -1000   ->  NaN
mnmx143 min  NaN -1      ->  NaN
mnmx144 min  NaN -0      ->  NaN
mnmx145 min  NaN  0      ->  NaN
mnmx146 min  NaN  1      ->  NaN
mnmx147 min  NaN  1000   ->  NaN
mnmx148 min  NaN  Inf    ->  NaN
mnmx149 min  NaN  NaN    ->  NaN
mnmx150 min -Inf  NaN    ->  NaN
mnmx151 min -1000 NaN    ->  NaN
mnmx152 min -1    NaN    ->  NaN
mnmx153 min -0    NaN    ->  NaN
mnmx154 min  0    NaN    ->  NaN
mnmx155 min  1    NaN    ->  NaN
mnmx156 min  1000 NaN    ->  NaN
mnmx157 min  Inf  NaN    ->  NaN

mnmx161 min  sNaN -Inf   ->  NaN  Invalid_operation
mnmx162 min  sNaN -1000  ->  NaN  Invalid_operation
mnmx163 min  sNaN -1     ->  NaN  Invalid_operation
mnmx164 min  sNaN -0     ->  NaN  Invalid_operation
mnmx165 min  sNaN  0     ->  NaN  Invalid_operation
mnmx166 min  sNaN  1     ->  NaN  Invalid_operation
mnmx167 min  sNaN  1000  ->  NaN  Invalid_operation
mnmx168 min  sNaN  NaN   ->  NaN  Invalid_operation
mnmx169 min  sNaN sNaN   ->  NaN  Invalid_operation
mnmx170 min  NaN  sNaN   ->  NaN  Invalid_operation
mnmx171 min -Inf  sNaN   ->  NaN  Invalid_operation
mnmx172 min -1000 sNaN   ->  NaN  Invalid_operation
mnmx173 min -1    sNaN   ->  NaN  Invalid_operation
mnmx174 min -0    sNaN   ->  NaN  Invalid_operation
mnmx175 min  0    sNaN   ->  NaN  Invalid_operation
mnmx176 min  1    sNaN   ->  NaN  Invalid_operation
mnmx177 min  1000 sNaN   ->  NaN  Invalid_operation
mnmx178 min  Inf  sNaN   ->  NaN  Invalid_operation
mnmx179 min  NaN  sNaN   ->  NaN  Invalid_operation

-- from examples
mnmx180 min '3'   '2'  ->  '2'
mnmx181 min '-10' '3'  ->  '-10'
mnmx182 min '1.0' '1'  ->  '1.0'
mnmx183 min '1' '1.0'  ->  '1'


-- rounding checks -- chosen is rounded, or not
maxExponent: 999
minexponent: -999
precision: 9
mnmx201 min -12345678000 1  -> -1.23456780E+10 Rounded
mnmx202 min 1 -12345678000  -> -1.23456780E+10 Rounded
mnmx203 min -1234567800  1  -> -1.23456780E+9 Rounded
mnmx204 min 1 -1234567800   -> -1.23456780E+9 Rounded
mnmx205 min -1234567890  1  -> -1.23456789E+9 Rounded
mnmx206 min 1 -1234567890   -> -1.23456789E+9 Rounded
mnmx207 min -1234567891  1  -> -1.23456789E+9 Inexact Rounded
mnmx208 min 1 -1234567891   -> -1.23456789E+9 Inexact Rounded
mnmx209 min -12345678901 1  -> -1.23456789E+10 Inexact Rounded
mnmx210 min 1 -12345678901  -> -1.23456789E+10 Inexact Rounded
mnmx211 min -1234567896  1  -> -1.23456790E+9 Inexact Rounded
mnmx212 min 1 -1234567896   -> -1.23456790E+9 Inexact Rounded
mnmx213 min 1234567891  1   -> 1
mnmx214 min 1 1234567891    -> 1
mnmx215 min 12345678901 1   -> 1
mnmx216 min 1 12345678901   -> 1
mnmx217 min 1234567896  1   -> 1
mnmx218 min 1 1234567896    -> 1

precision: 15
mnmx221 min -12345678000 1  -> -12345678000
mnmx222 min 1 -12345678000  -> -12345678000
mnmx223 min -1234567800  1  -> -1234567800
mnmx224 min 1 -1234567800   -> -1234567800
mnmx225 min -1234567890  1  -> -1234567890
mnmx226 min 1 -1234567890   -> -1234567890
mnmx227 min -1234567891  1  -> -1234567891
mnmx228 min 1 -1234567891   -> -1234567891
mnmx229 min -12345678901 1  -> -12345678901
mnmx230 min 1 -12345678901  -> -12345678901
mnmx231 min -1234567896  1  -> -1234567896
mnmx232 min 1 -1234567896   -> -1234567896
mnmx233 min 1234567891  1   -> 1
mnmx234 min 1 1234567891    -> 1
mnmx235 min 12345678901 1   -> 1
mnmx236 min 1 12345678901   -> 1
mnmx237 min 1234567896  1   -> 1
mnmx238 min 1 1234567896    -> 1

-- overflow and underflow tests .. subnormal results [inputs] now allowed
maxExponent: 999999999
minexponent: -999999999
mnmx330 min -1.23456789012345E-0 -9E+999999999 -> -9E+999999999
mnmx331 min -9E+999999999 -1.23456789012345E-0 -> -9E+999999999
mnmx332 min -0.100 -9E-999999999               -> -0.100
mnmx333 min -9E-999999999 -0.100               -> -0.100
mnmx335 min +1.23456789012345E-0 -9E+999999999 -> -9E+999999999
mnmx336 min -9E+999999999 1.23456789012345E-0  -> -9E+999999999
mnmx337 min +0.100 -9E-999999999               -> -9E-999999999
mnmx338 min -9E-999999999 0.100                -> -9E-999999999

mnmx339 min -1e-599999999 -1e-400000001   ->  -1E-400000001
mnmx340 min -1e-599999999 -1e-400000000   ->  -1E-400000000
mnmx341 min -1e-600000000 -1e-400000000   ->  -1E-400000000
mnmx342 min -9e-999999998 -0.01           ->  -0.01
mnmx343 min -9e-999999998 -0.1            ->  -0.1
mnmx344 min -0.01         -9e-999999998   ->  -0.01
mnmx345 min -1e599999999  -1e400000001    ->  -1E+599999999
mnmx346 min -1e599999999  -1e400000000    ->  -1E+599999999
mnmx347 min -1e600000000  -1e400000000    ->  -1E+600000000
mnmx348 min -9e999999998  -100            ->  -9E+999999998
mnmx349 min -9e999999998  -10             ->  -9E+999999998
mnmx350 min -100          -9e999999998    ->  -9E+999999998
-- signs
mnmx351 min -1e+777777777 -1e+411111111 -> -1E+777777777
mnmx352 min -1e+777777777 +1e+411111111 -> -1E+777777777
mnmx353 min +1e+777777777 -1e+411111111 -> -1E+411111111
mnmx354 min +1e+777777777 +1e+411111111 ->  1E+411111111
mnmx355 min -1e-777777777 -1e-411111111 -> -1E-411111111
mnmx356 min -1e-777777777 +1e-411111111 -> -1E-777777777
mnmx357 min +1e-777777777 -1e-411111111 -> -1E-411111111
mnmx358 min +1e-777777777 +1e-411111111 ->  1E-777777777


-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
mnmx400 min 9.999E+999999999  0 ->  0
mnmx401 min -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded

-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
mnmx410 min  1.00E-999       0  ->   0
mnmx411 min  0.1E-999        0  ->   0
mnmx412 min  0.10E-999       0  ->   0
mnmx413 min  0.100E-999      0  ->   0
mnmx414 min  0.01E-999       0  ->   0
mnmx415 min  0.999E-999      0  ->   0
mnmx416 min  0.099E-999      0  ->   0
mnmx417 min  0.009E-999      0  ->   0
mnmx418 min  0.001E-999      0  ->   0
mnmx419 min  0.0009E-999     0  ->   0
mnmx420 min  0.0001E-999     0  ->   0

mnmx430 min -1.00E-999       0  ->  -1.00E-999
mnmx431 min -0.1E-999        0  ->  -1E-1000   Subnormal
mnmx432 min -0.10E-999       0  ->  -1.0E-1000 Subnormal
mnmx433 min -0.100E-999      0  ->  -1.0E-1000 Subnormal Rounded
mnmx434 min -0.01E-999       0  ->  -1E-1001   Subnormal
-- next is rounded to Emin
mnmx435 min -0.999E-999      0  ->  -1.00E-999 Inexact Rounded Subnormal Underflow
mnmx436 min -0.099E-999      0  ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
mnmx437 min -0.009E-999      0  ->  -1E-1001   Inexact Rounded Subnormal Underflow
mnmx438 min -0.001E-999      0  ->  -0E-1001   Inexact Rounded Subnormal Underflow
mnmx439 min -0.0009E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow
mnmx440 min -0.0001E-999     0  ->  -0E-1001   Inexact Rounded Subnormal Underflow


-- Null tests
mnm900 min 10  # -> NaN Invalid_operation
mnm901 min  # 10 -> NaN Invalid_operation

--- NEW FILE: max.decTest ---
------------------------------------------------------------------------
-- max.decTest -- decimal maximum                                     --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- we assume that base comparison is tested in compare.decTest, so
-- these mainly cover special cases and rounding

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks
maxx001 max  -2  -2  -> -2
maxx002 max  -2  -1  -> -1
maxx003 max  -2   0  ->  0
maxx004 max  -2   1  ->  1
maxx005 max  -2   2  ->  2
maxx006 max  -1  -2  -> -1
maxx007 max  -1  -1  -> -1
maxx008 max  -1   0  ->  0
maxx009 max  -1   1  ->  1
maxx010 max  -1   2  ->  2
maxx011 max   0  -2  ->  0
maxx012 max   0  -1  ->  0
maxx013 max   0   0  ->  0
maxx014 max   0   1  ->  1
maxx015 max   0   2  ->  2
maxx016 max   1  -2  ->  1
maxx017 max   1  -1  ->  1
maxx018 max   1   0  ->  1
maxx019 max   1   1  ->  1
maxx020 max   1   2  ->  2
maxx021 max   2  -2  ->  2
maxx022 max   2  -1  ->  2
maxx023 max   2   0  ->  2
maxx025 max   2   1  ->  2
maxx026 max   2   2  ->  2

-- extended zeros
maxx030 max   0     0   ->  0
maxx031 max   0    -0   ->  0
maxx032 max   0    -0.0 ->  0
maxx033 max   0     0.0 ->  0
maxx034 max  -0     0   -> -0    -- note: -0 = 0
maxx035 max  -0    -0   -> -0
maxx036 max  -0    -0.0 -> -0
maxx037 max  -0     0.0 -> -0
maxx038 max   0.0   0   ->  0.0
maxx039 max   0.0  -0   ->  0.0
maxx040 max   0.0  -0.0 ->  0.0
maxx041 max   0.0   0.0 ->  0.0
maxx042 max  -0.0   0   -> -0.0
maxx043 max  -0.0  -0   -> -0.0
maxx044 max  -0.0  -0.0 -> -0.0
maxx045 max  -0.0   0.0 -> -0.0

maxx046 max  -0E1   0E2 -> -0E+1
maxx047 max   0E2   0E1 ->  0E+2
maxx048 max   0E1   0E2 ->  0E+1
maxx049 max  -0E3  -0E2 -> -0E+3


-- Specials
precision: 9
maxx090 max  Inf  -Inf   ->  Infinity
maxx091 max  Inf  -1000  ->  Infinity
maxx092 max  Inf  -1     ->  Infinity
maxx093 max  Inf  -0     ->  Infinity
maxx094 max  Inf   0     ->  Infinity
maxx095 max  Inf   1     ->  Infinity
maxx096 max  Inf   1000  ->  Infinity
maxx097 max  Inf   Inf   ->  Infinity
maxx098 max -1000  Inf   ->  Infinity
maxx099 max -Inf   Inf   ->  Infinity
maxx100 max -1     Inf   ->  Infinity
maxx101 max -0     Inf   ->  Infinity
maxx102 max  0     Inf   ->  Infinity
maxx103 max  1     Inf   ->  Infinity
maxx104 max  1000  Inf   ->  Infinity
maxx105 max  Inf   Inf   ->  Infinity

maxx120 max -Inf  -Inf   -> -Infinity
maxx121 max -Inf  -1000  -> -1000
maxx122 max -Inf  -1     -> -1
maxx123 max -Inf  -0     -> -0
maxx124 max -Inf   0     ->  0
maxx125 max -Inf   1     ->  1
maxx126 max -Inf   1000  ->  1000
maxx127 max -Inf   Inf   ->  Infinity
maxx128 max -Inf  -Inf   ->  -Infinity
maxx129 max -1000 -Inf   ->  -1000
maxx130 max -1    -Inf   ->  -1
maxx131 max -0    -Inf   ->  -0
maxx132 max  0    -Inf   ->  0
maxx133 max  1    -Inf   ->  1
maxx134 max  1000 -Inf   ->  1000
maxx135 max  Inf  -Inf   ->  Infinity

maxx141 max  NaN -Inf    ->  NaN
maxx142 max  NaN -1000   ->  NaN
maxx143 max  NaN -1      ->  NaN
maxx144 max  NaN -0      ->  NaN
maxx145 max  NaN  0      ->  NaN
maxx146 max  NaN  1      ->  NaN
maxx147 max  NaN  1000   ->  NaN
maxx148 max  NaN  Inf    ->  NaN
maxx149 max  NaN  NaN    ->  NaN
maxx150 max -Inf  NaN    ->  NaN
maxx151 max -1000 NaN    ->  NaN
maxx152 max -1    NaN    ->  NaN
maxx153 max -0    NaN    ->  NaN
maxx154 max  0    NaN    ->  NaN
maxx155 max  1    NaN    ->  NaN
maxx156 max  1000 NaN    ->  NaN
maxx157 max  Inf  NaN    ->  NaN

maxx161 max  sNaN -Inf   ->  NaN  Invalid_operation
maxx162 max  sNaN -1000  ->  NaN  Invalid_operation
maxx163 max  sNaN -1     ->  NaN  Invalid_operation
maxx164 max  sNaN -0     ->  NaN  Invalid_operation
maxx165 max  sNaN  0     ->  NaN  Invalid_operation
maxx166 max  sNaN  1     ->  NaN  Invalid_operation
maxx167 max  sNaN  1000  ->  NaN  Invalid_operation
maxx168 max  sNaN  NaN   ->  NaN  Invalid_operation
maxx169 max  sNaN sNaN   ->  NaN  Invalid_operation
maxx170 max  NaN  sNaN   ->  NaN  Invalid_operation
maxx171 max -Inf  sNaN   ->  NaN  Invalid_operation
maxx172 max -1000 sNaN   ->  NaN  Invalid_operation
maxx173 max -1    sNaN   ->  NaN  Invalid_operation
maxx174 max -0    sNaN   ->  NaN  Invalid_operation
maxx175 max  0    sNaN   ->  NaN  Invalid_operation
maxx176 max  1    sNaN   ->  NaN  Invalid_operation
maxx177 max  1000 sNaN   ->  NaN  Invalid_operation
maxx178 max  Inf  sNaN   ->  NaN  Invalid_operation
maxx179 max  NaN  sNaN   ->  NaN  Invalid_operation

-- from examples
maxx180 max '3'   '2'  ->  '3'
maxx181 max '-10' '3'  ->  '3'
maxx182 max '1.0' '1'  ->  '1.0'
maxx183 max '1' '1.0'  ->  '1'

-- rounding checks
maxexponent: 999
minexponent: -999
precision: 9
maxx201 max 12345678000 1  -> 1.23456780E+10 Rounded
maxx202 max 1 12345678000  -> 1.23456780E+10 Rounded
maxx203 max 1234567800  1  -> 1.23456780E+9 Rounded
maxx204 max 1 1234567800   -> 1.23456780E+9 Rounded
maxx205 max 1234567890  1  -> 1.23456789E+9 Rounded
maxx206 max 1 1234567890   -> 1.23456789E+9 Rounded
maxx207 max 1234567891  1  -> 1.23456789E+9 Inexact Rounded
maxx208 max 1 1234567891   -> 1.23456789E+9 Inexact Rounded
maxx209 max 12345678901 1  -> 1.23456789E+10 Inexact Rounded
maxx210 max 1 12345678901  -> 1.23456789E+10 Inexact Rounded
maxx211 max 1234567896  1  -> 1.23456790E+9 Inexact Rounded
maxx212 max 1 1234567896   -> 1.23456790E+9 Inexact Rounded
maxx213 max -1234567891  1 -> 1
maxx214 max 1 -1234567891  -> 1
maxx215 max -12345678901 1 -> 1
maxx216 max 1 -12345678901 -> 1
maxx217 max -1234567896  1 -> 1
maxx218 max 1 -1234567896  -> 1

precision: 15
maxx221 max 12345678000 1  -> 12345678000
maxx222 max 1 12345678000  -> 12345678000
maxx223 max 1234567800  1  -> 1234567800
maxx224 max 1 1234567800   -> 1234567800
maxx225 max 1234567890  1  -> 1234567890
maxx226 max 1 1234567890   -> 1234567890
maxx227 max 1234567891  1  -> 1234567891
maxx228 max 1 1234567891   -> 1234567891
maxx229 max 12345678901 1  -> 12345678901
maxx230 max 1 12345678901  -> 12345678901
maxx231 max 1234567896  1  -> 1234567896
maxx232 max 1 1234567896   -> 1234567896
maxx233 max -1234567891  1 -> 1
maxx234 max 1 -1234567891  -> 1
maxx235 max -12345678901 1 -> 1
maxx236 max 1 -12345678901 -> 1
maxx237 max -1234567896  1 -> 1
maxx238 max 1 -1234567896  -> 1

-- overflow and underflow tests ...
maxExponent: 999999999
minexponent: -999999999
maxx330 max +1.23456789012345E-0 9E+999999999 ->  9E+999999999
maxx331 max 9E+999999999 +1.23456789012345E-0 ->  9E+999999999
maxx332 max +0.100 9E-999999999               ->  0.100
maxx333 max 9E-999999999 +0.100               ->  0.100
maxx335 max -1.23456789012345E-0 9E+999999999 ->  9E+999999999
maxx336 max 9E+999999999 -1.23456789012345E-0 ->  9E+999999999
maxx337 max -0.100 9E-999999999               ->  9E-999999999
maxx338 max 9E-999999999 -0.100               ->  9E-999999999

maxx339 max 1e-599999999 1e-400000001   ->  1E-400000001
maxx340 max 1e-599999999 1e-400000000   ->  1E-400000000
maxx341 max 1e-600000000 1e-400000000   ->  1E-400000000
maxx342 max 9e-999999998 0.01           ->  0.01
maxx343 max 9e-999999998 0.1            ->  0.1
maxx344 max 0.01 9e-999999998           ->  0.01
maxx345 max 1e599999999 1e400000001     ->  1E+599999999
maxx346 max 1e599999999 1e400000000     ->  1E+599999999
maxx347 max 1e600000000 1e400000000     ->  1E+600000000
maxx348 max 9e999999998 100             ->  9E+999999998
maxx349 max 9e999999998 10              ->  9E+999999998
maxx350 max 100  9e999999998            ->  9E+999999998
-- signs
maxx351 max  1e+777777777  1e+411111111 ->  1E+777777777
maxx352 max  1e+777777777 -1e+411111111 ->  1E+777777777
maxx353 max -1e+777777777  1e+411111111 ->  1E+411111111
maxx354 max -1e+777777777 -1e+411111111 -> -1E+411111111
maxx355 max  1e-777777777  1e-411111111 ->  1E-411111111
maxx356 max  1e-777777777 -1e-411111111 ->  1E-777777777
maxx357 max -1e-777777777  1e-411111111 ->  1E-411111111
maxx358 max -1e-777777777 -1e-411111111 -> -1E-777777777


-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
maxx400 max 9.999E+999999999  0 ->  Infinity Inexact Overflow Rounded
maxx401 max -9.999E+999999999 0 ->  0

-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
maxx410 max  1.00E-999       0  ->   1.00E-999
maxx411 max  0.1E-999        0  ->   1E-1000   Subnormal
maxx412 max  0.10E-999       0  ->   1.0E-1000 Subnormal
maxx413 max  0.100E-999      0  ->   1.0E-1000 Subnormal Rounded
maxx414 max  0.01E-999       0  ->   1E-1001   Subnormal
-- next is rounded to Emin
maxx415 max  0.999E-999      0  ->   1.00E-999 Inexact Rounded Subnormal Underflow
maxx416 max  0.099E-999      0  ->   1.0E-1000 Inexact Rounded Subnormal Underflow
maxx417 max  0.009E-999      0  ->   1E-1001   Inexact Rounded Subnormal Underflow
maxx418 max  0.001E-999      0  ->   0E-1001   Inexact Rounded Subnormal Underflow
maxx419 max  0.0009E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow
maxx420 max  0.0001E-999     0  ->   0E-1001   Inexact Rounded Subnormal Underflow

maxx430 max -1.00E-999       0  ->   0
maxx431 max -0.1E-999        0  ->   0
maxx432 max -0.10E-999       0  ->   0
maxx433 max -0.100E-999      0  ->   0
maxx434 max -0.01E-999       0  ->   0
maxx435 max -0.999E-999      0  ->   0
maxx436 max -0.099E-999      0  ->   0
maxx437 max -0.009E-999      0  ->   0
maxx438 max -0.001E-999      0  ->   0
maxx439 max -0.0009E-999     0  ->   0
maxx440 max -0.0001E-999     0  ->   0

-- Null tests
maxx900 max 10  #  -> NaN Invalid_operation
maxx901 max  # 10  -> NaN Invalid_operation




--- NEW FILE: integer.decTest ---
------------------------------------------------------------------------
-- integer.decTest -- round decimal to integer                        --
-- Copyright (c) IBM Corporation, 2001, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of tests tests the extended specification 'round-to-integer'
-- operation (from IEEE 854).  All non-zero results are defined as
-- being those from either plus or rescale, so those are assumed to have
-- been tested.

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minExponent: -999

intx001 integer      0     ->  0
intx002 integer      0.0   ->  0
intx003 integer      0.1   ->  0 Rounded Inexact
intx004 integer      0.2   ->  0 Rounded Inexact
intx005 integer      0.3   ->  0 Rounded Inexact
intx006 integer      0.4   ->  0 Rounded Inexact
intx007 integer      0.5   ->  1 Rounded Inexact
intx008 integer      0.6   ->  1 Rounded Inexact
intx009 integer      0.7   ->  1 Rounded Inexact
intx010 integer      0.8   ->  1 Rounded Inexact
intx011 integer      0.9   ->  1 Rounded Inexact
intx012 integer      1     ->  1
intx013 integer      1.0   ->  1 Rounded
intx014 integer      1.1   ->  1 Rounded Inexact
intx015 integer      1.2   ->  1 Rounded Inexact
intx016 integer      1.3   ->  1 Rounded Inexact
intx017 integer      1.4   ->  1 Rounded Inexact
intx018 integer      1.5   ->  2 Rounded Inexact
intx019 integer      1.6   ->  2 Rounded Inexact
intx020 integer      1.7   ->  2 Rounded Inexact
intx021 integer      1.8   ->  2 Rounded Inexact
intx022 integer      1.9   ->  2 Rounded Inexact
-- negatives
intx031 integer     -0     -> -0
intx032 integer     -0.0   -> -0
intx033 integer     -0.1   -> -0 Rounded Inexact
intx034 integer     -0.2   -> -0 Rounded Inexact
intx035 integer     -0.3   -> -0 Rounded Inexact
intx036 integer     -0.4   -> -0 Rounded Inexact
intx037 integer     -0.5   -> -1 Rounded Inexact
intx038 integer     -0.6   -> -1 Rounded Inexact
intx039 integer     -0.7   -> -1 Rounded Inexact
intx040 integer     -0.8   -> -1 Rounded Inexact
intx041 integer     -0.9   -> -1 Rounded Inexact
intx042 integer     -1     -> -1
intx043 integer     -1.0   -> -1 Rounded
intx044 integer     -1.1   -> -1 Rounded Inexact
intx045 integer     -1.2   -> -1 Rounded Inexact
intx046 integer     -1.3   -> -1 Rounded Inexact
intx047 integer     -1.4   -> -1 Rounded Inexact
intx048 integer     -1.5   -> -2 Rounded Inexact
intx049 integer     -1.6   -> -2 Rounded Inexact
intx050 integer     -1.7   -> -2 Rounded Inexact
intx051 integer     -1.8   -> -2 Rounded Inexact
intx052 integer     -1.9   -> -2 Rounded Inexact

-- numbers around precision
precision: 9
intx060 integer '56267E-10'   -> '0' Inexact Rounded
intx061 integer '56267E-5'    -> '1' Inexact Rounded
intx062 integer '56267E-2'    -> '563' Inexact Rounded
intx063 integer '56267E-1'    -> '5627' Inexact Rounded
intx065 integer '56267E-0'    -> '56267'
intx066 integer '56267E+0'    -> '56267'
intx067 integer '56267E+1'    -> '562670'
intx068 integer '56267E+2'    -> '5626700'
intx069 integer '56267E+3'    -> '56267000'
intx070 integer '56267E+4'    -> '562670000'
intx071 integer '56267E+5'    -> Infinity Overflow Inexact Rounded
intx072 integer '56267E+6'    -> Infinity Overflow Inexact Rounded
intx080 integer '-56267E-10'  -> '-0'      Inexact Rounded
intx081 integer '-56267E-5'   -> '-1'      Inexact Rounded
intx082 integer '-56267E-2'   -> '-563'    Inexact Rounded
intx083 integer '-56267E-1'   -> '-5627'   Inexact Rounded
intx085 integer '-56267E-0'   -> '-56267'
intx086 integer '-56267E+0'   -> '-56267'
intx087 integer '-56267E+1'   -> '-562670'
intx088 integer '-56267E+2'   -> '-5626700'
intx089 integer '-56267E+3'   -> '-56267000'
intx090 integer '-56267E+4'   -> '-562670000'
intx091 integer '-56267E+5'   -> -Infinity Overflow Inexact Rounded
intx092 integer '-56267E+6'   -> -Infinity Overflow Inexact Rounded

-- specials and zeros
intx120 integer 'Inf'       -> 'Infinity'
intx121 integer '-Inf'      -> '-Infinity'
intx122 integer   NaN       ->  NaN
intx123 integer  sNaN       ->  NaN  Invalid_operation
intx124 integer     0       ->  0
intx125 integer    -0       -> -0
intx126 integer     0.000   ->  0
intx127 integer     0.00    ->  0
intx128 integer     0.0     ->  0
intx129 integer     0       ->  0
intx130 integer     0E-3    ->  0
intx131 integer     0E-2    ->  0
intx132 integer     0E-1    ->  0
intx133 integer     0E-0    ->  0
intx134 integer     0E+1    ->  0
intx135 integer     0E+2    ->  0
intx136 integer     0E+3    ->  0
intx137 integer     0E+4    ->  0
intx138 integer     0E+5    ->  0
intx139 integer    -0.000   -> -0
intx140 integer    -0.00    -> -0
intx141 integer    -0.0     -> -0
intx142 integer    -0       -> -0
intx143 integer    -0E-3    -> -0
intx144 integer    -0E-2    -> -0
intx145 integer    -0E-1    -> -0
intx146 integer    -0E-0    -> -0
intx147 integer    -0E+1    -> -0
intx148 integer    -0E+2    -> -0
intx149 integer    -0E+3    -> -0
intx150 integer    -0E+4    -> -0
intx151 integer    -0E+5    -> -0

-- examples
rounding:    half_up
precision:   9
intx200 integer     2.1    -> 2       Rounded Inexact
intx201 integer   100      -> 100
intx202 integer   100.0    -> 100     Rounded
intx203 integer   101.5    -> 102     Rounded Inexact
intx204 integer  -101.5    -> -102    Rounded Inexact
intx205 integer   10E+5    -> 1000000


--- NEW FILE: inexact.decTest ---
------------------------------------------------------------------------
-- inexact.decTest -- decimal inexact and rounded edge cases          --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

inx001 add 1          1              -> 2
inx002 add 123456789  0              -> 123456789
inx003 add 123456789  0.0            -> 123456789 Rounded
inx004 add 123456789  0.00           -> 123456789 Rounded
inx005 add 123456789  1              -> 123456790
inx006 add 123456789  0.1            -> 123456789 Inexact Rounded
inx007 add 123456789  0.01           -> 123456789 Inexact Rounded
inx008 add 123456789  0.001          -> 123456789 Inexact Rounded
inx009 add 123456789  0.000001       -> 123456789 Inexact Rounded
inx010 add 123456789  0.000000001    -> 123456789 Inexact Rounded
inx011 add 123456789  0.000000000001 -> 123456789 Inexact Rounded

inx012 add 123456789  0.9            -> 123456790 Inexact Rounded
inx013 add 123456789  0.09           -> 123456789 Inexact Rounded
inx014 add 123456789  0.009          -> 123456789 Inexact Rounded
inx015 add 123456789  0.000009       -> 123456789 Inexact Rounded
inx016 add 123456789  0.000000009    -> 123456789 Inexact Rounded
inx017 add 123456789  0.000000000009 -> 123456789 Inexact Rounded

inx021 add 1          -1              -> 0
inx022 add 123456789  -0              -> 123456789
inx023 add 123456789  -0.0            -> 123456789 Rounded
inx024 add 123456789  -0.00           -> 123456789 Rounded
inx025 add 123456789  -1              -> 123456788
inx026 add 123456789  -0.1            -> 123456789 Inexact Rounded
inx027 add 123456789  -0.01           -> 123456789 Inexact Rounded
inx028 add 123456789  -0.001          -> 123456789 Inexact Rounded
inx029 add 123456789  -0.000001       -> 123456789 Inexact Rounded
inx030 add 123456789  -0.000000001    -> 123456789 Inexact Rounded
inx031 add 123456789  -0.000000000001 -> 123456789 Inexact Rounded
inx032 add 123456789  -0.9            -> 123456788 Inexact Rounded
inx033 add 123456789  -0.09           -> 123456789 Inexact Rounded
inx034 add 123456789  -0.009          -> 123456789 Inexact Rounded
inx035 add 123456789  -0.000009       -> 123456789 Inexact Rounded
inx036 add 123456789  -0.000000009    -> 123456789 Inexact Rounded
inx037 add 123456789  -0.000000000009 -> 123456789 Inexact Rounded

inx042 add  0               123456789 -> 123456789
inx043 add  0.0             123456789 -> 123456789 Rounded
inx044 add  0.00            123456789 -> 123456789 Rounded
inx045 add  1               123456789 -> 123456790
inx046 add  0.1             123456789 -> 123456789 Inexact Rounded
inx047 add  0.01            123456789 -> 123456789 Inexact Rounded
inx048 add  0.001           123456789 -> 123456789 Inexact Rounded
inx049 add  0.000001        123456789 -> 123456789 Inexact Rounded
inx050 add  0.000000001     123456789 -> 123456789 Inexact Rounded
inx051 add  0.000000000001  123456789 -> 123456789 Inexact Rounded
inx052 add  0.9             123456789 -> 123456790 Inexact Rounded
inx053 add  0.09            123456789 -> 123456789 Inexact Rounded
inx054 add  0.009           123456789 -> 123456789 Inexact Rounded
inx055 add  0.000009        123456789 -> 123456789 Inexact Rounded
inx056 add  0.000000009     123456789 -> 123456789 Inexact Rounded
inx057 add  0.000000000009  123456789 -> 123456789 Inexact Rounded

inx062 add  -0              123456789 -> 123456789
inx063 add  -0.0            123456789 -> 123456789 Rounded
inx064 add  -0.00           123456789 -> 123456789 Rounded
inx065 add  -1              123456789 -> 123456788
inx066 add  -0.1            123456789 -> 123456789 Inexact Rounded
inx067 add  -0.01           123456789 -> 123456789 Inexact Rounded
inx068 add  -0.001          123456789 -> 123456789 Inexact Rounded
inx069 add  -0.000001       123456789 -> 123456789 Inexact Rounded
inx070 add  -0.000000001    123456789 -> 123456789 Inexact Rounded
inx071 add  -0.000000000001 123456789 -> 123456789 Inexact Rounded
inx072 add  -0.9            123456789 -> 123456788 Inexact Rounded
inx073 add  -0.09           123456789 -> 123456789 Inexact Rounded
inx074 add  -0.009          123456789 -> 123456789 Inexact Rounded
inx075 add  -0.000009       123456789 -> 123456789 Inexact Rounded
inx076 add  -0.000000009    123456789 -> 123456789 Inexact Rounded
inx077 add  -0.000000000009 123456789 -> 123456789 Inexact Rounded

-- some boundaries
inx081 add    999999999           0     -> 999999999
inx082 add  0.999999999 0.000000000     -> 0.999999999
inx083 add    999999999           1     -> 1.00000000E+9 Rounded
inx084 add  0.999999999 0.000000001     -> 1.00000000    Rounded
inx085 add    999999999           2     -> 1.00000000E+9 Inexact Rounded
inx086 add  0.999999999 0.000000002     -> 1.00000000    Inexact Rounded
inx087 add    999999999           3     -> 1.00000000E+9 Inexact Rounded
inx089 add  0.999999999 0.000000003     -> 1.00000000    Inexact Rounded

-- minus, plus, and subtract all assumed to work like add.

-- multiply
precision: 8
inx101 multiply  1000  1000        ->  1000000
inx102 multiply  9000  9000        -> 81000000
inx103 multiply  9999  9999        -> 99980001
inx104 multiply  1000 10000        -> 10000000
inx105 multiply 10000 10000        -> 1.0000000E+8 Rounded
inx106 multiply 10001 10000        -> 1.0001000E+8 Rounded
inx107 multiply 10001 10001        -> 1.0002000E+8 Inexact Rounded
inx108 multiply 10101 10001        -> 1.0102010E+8 Inexact Rounded
inx109 multiply 10001 10101        -> 1.0102010E+8 Inexact Rounded

-- divide
precision: 4
inx201 divide  1000  1000        ->  1
inx202 divide  1000     1        ->  1000
inx203 divide  1000     2        ->   500
inx204 divide  1000     3        ->   333.3  Inexact Rounded
inx205 divide  1000     4        ->   250
inx206 divide  1000     5        ->   200
inx207 divide  1000     6        ->   166.7  Inexact Rounded
inx208 divide  1000     7        ->   142.9  Inexact Rounded
inx209 divide  1000     8        ->   125
inx210 divide  1000     9        ->   111.1  Inexact Rounded
inx211 divide  1000    10        ->   100

inx220 divide     1     1        ->   1
inx221 divide     1     2        ->   0.5
inx222 divide     1     4        ->   0.25
inx223 divide     1     8        ->   0.125
inx224 divide     1    16        ->   0.0625
inx225 divide     1    32        ->   0.03125
inx226 divide     1    64        ->   0.01563  Inexact Rounded
inx227 divide     1   128        ->   0.007813 Inexact Rounded

precision: 5
inx230 divide     1     1        ->   1
inx231 divide     1     2        ->   0.5
inx232 divide     1     4        ->   0.25
inx233 divide     1     8        ->   0.125
inx234 divide     1    16        ->   0.0625
inx235 divide     1    32        ->   0.03125
inx236 divide     1    64        ->   0.015625
inx237 divide     1   128        ->   0.0078125

precision: 3
inx240 divide     1     1        ->   1
inx241 divide     1     2        ->   0.5
inx242 divide     1     4        ->   0.25
inx243 divide     1     8        ->   0.125
inx244 divide     1    16        ->   0.0625
inx245 divide     1    32        ->   0.0313   Inexact Rounded
inx246 divide     1    64        ->   0.0156   Inexact Rounded
inx247 divide     1   128        ->   0.00781  Inexact Rounded

precision: 2
inx250 divide     1     1        ->   1
inx251 divide     1     2        ->   0.5
inx252 divide     1     4        ->   0.25
inx253 divide     1     8        ->   0.13     Inexact Rounded
inx254 divide     1    16        ->   0.063    Inexact Rounded
inx255 divide     1    32        ->   0.031    Inexact Rounded
inx256 divide     1    64        ->   0.016    Inexact Rounded
inx257 divide     1   128        ->   0.0078   Inexact Rounded

precision: 1
inx260 divide     1     1        ->   1
inx261 divide     1     2        ->   0.5
inx262 divide     1     4        ->   0.3      Inexact Rounded
inx263 divide     1     8        ->   0.1      Inexact Rounded
inx264 divide     1    16        ->   0.06     Inexact Rounded
inx265 divide     1    32        ->   0.03     Inexact Rounded
inx266 divide     1    64        ->   0.02     Inexact Rounded
inx267 divide     1   128        ->   0.008    Inexact Rounded


-- power
precision: 4
inx301 power    0.5     2        ->   0.25
inx302 power    0.5     4        ->   0.0625
inx303 power    0.5     8        ->   0.003906   Inexact Rounded
inx304 power    0.5    16        ->   0.00001526 Inexact Rounded
inx305 power    0.5    32        ->   2.328E-10  Inexact Rounded

-- compare, divideInteger, and remainder are always exact

-- rescale
precision: 4
inx401 rescale 0       0   -> 0
inx402 rescale 1       0   -> 1
inx403 rescale 0.1    +2   -> 0E+2 Inexact Rounded
inx404 rescale 0.1    +1   -> 0E+1 Inexact Rounded
inx405 rescale 0.1     0   -> 0 Inexact Rounded
inx406 rescale 0.1    -1   -> 0.1
inx407 rescale 0.1    -2   -> 0.10

-- long operands cause rounding too
precision: 9
inx801 plus  123456789  -> 123456789
inx802 plus  1234567890 -> 1.23456789E+9 Rounded
inx803 plus  1234567891 -> 1.23456789E+9 Inexact Rounded
inx804 plus  1234567892 -> 1.23456789E+9 Inexact Rounded
inx805 plus  1234567899 -> 1.23456790E+9 Inexact Rounded
inx806 plus  1234567900 -> 1.23456790E+9 Rounded


--- NEW FILE: divideint.decTest ---
------------------------------------------------------------------------
-- divideint.decTest -- decimal integer division                      --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

dvix001 divideint  1     1    ->  1
dvix002 divideint  2     1    ->  2
dvix003 divideint  1     2    ->  0
dvix004 divideint  2     2    ->  1
dvix005 divideint  0     1    ->  0
dvix006 divideint  0     2    ->  0
dvix007 divideint  1     3    ->  0
dvix008 divideint  2     3    ->  0
dvix009 divideint  3     3    ->  1

dvix010 divideint  2.4   1    ->  2
dvix011 divideint  2.4   -1   ->  -2
dvix012 divideint  -2.4  1    ->  -2
dvix013 divideint  -2.4  -1   ->  2
dvix014 divideint  2.40  1    ->  2
dvix015 divideint  2.400 1    ->  2
dvix016 divideint  2.4   2    ->  1
dvix017 divideint  2.400 2    ->  1
dvix018 divideint  2.    2    ->  1
dvix019 divideint  20    20   ->  1

dvix020 divideint  187   187  ->  1
dvix021 divideint  5     2    ->  2
dvix022 divideint  5     2.0    ->  2
dvix023 divideint  5     2.000  ->  2
dvix024 divideint  5     0.200  ->  25
dvix025 divideint  5     0.200  ->  25

dvix030 divideint  1     2      ->  0
dvix031 divideint  1     4      ->  0
dvix032 divideint  1     8      ->  0
dvix033 divideint  1     16     ->  0
dvix034 divideint  1     32     ->  0
dvix035 divideint  1     64     ->  0
dvix040 divideint  1    -2      -> -0
dvix041 divideint  1    -4      -> -0
dvix042 divideint  1    -8      -> -0
dvix043 divideint  1    -16     -> -0
dvix044 divideint  1    -32     -> -0
dvix045 divideint  1    -64     -> -0
dvix050 divideint -1     2      -> -0
dvix051 divideint -1     4      -> -0
dvix052 divideint -1     8      -> -0
dvix053 divideint -1     16     -> -0
dvix054 divideint -1     32     -> -0
dvix055 divideint -1     64     -> -0
dvix060 divideint -1    -2      ->  0
dvix061 divideint -1    -4      ->  0
dvix062 divideint -1    -8      ->  0
dvix063 divideint -1    -16     ->  0
dvix064 divideint -1    -32     ->  0
dvix065 divideint -1    -64     ->  0

-- similar with powers of ten
dvix160 divideint  1     1         ->  1
dvix161 divideint  1     10        ->  0
dvix162 divideint  1     100       ->  0
dvix163 divideint  1     1000      ->  0
dvix164 divideint  1     10000     ->  0
dvix165 divideint  1     100000    ->  0
dvix166 divideint  1     1000000   ->  0
dvix167 divideint  1     10000000  ->  0
dvix168 divideint  1     100000000 ->  0
dvix170 divideint  1    -1         -> -1
dvix171 divideint  1    -10        -> -0
dvix172 divideint  1    -100       -> -0
dvix173 divideint  1    -1000      -> -0
dvix174 divideint  1    -10000     -> -0
dvix175 divideint  1    -100000    -> -0
dvix176 divideint  1    -1000000   -> -0
dvix177 divideint  1    -10000000  -> -0
dvix178 divideint  1    -100000000 -> -0
dvix180 divideint -1     1         -> -1
dvix181 divideint -1     10        -> -0
dvix182 divideint -1     100       -> -0
dvix183 divideint -1     1000      -> -0
dvix184 divideint -1     10000     -> -0
dvix185 divideint -1     100000    -> -0
dvix186 divideint -1     1000000   -> -0
dvix187 divideint -1     10000000  -> -0
dvix188 divideint -1     100000000 -> -0
dvix190 divideint -1    -1         ->  1
dvix191 divideint -1    -10        ->  0
dvix192 divideint -1    -100       ->  0
dvix193 divideint -1    -1000      ->  0
dvix194 divideint -1    -10000     ->  0
dvix195 divideint -1    -100000    ->  0
dvix196 divideint -1    -1000000   ->  0
dvix197 divideint -1    -10000000  ->  0
dvix198 divideint -1    -100000000 ->  0

-- some long operand cases here
dvix070 divideint  999999999     1  ->  999999999
dvix071 divideint  999999999.4   1  ->  999999999
dvix072 divideint  999999999.5   1  ->  999999999
dvix073 divideint  999999999.9   1  ->  999999999
dvix074 divideint  999999999.999 1  ->  999999999
precision: 6
dvix080 divideint  999999999     1  ->  NaN Division_impossible
dvix081 divideint  99999999      1  ->  NaN Division_impossible
dvix082 divideint  9999999       1  ->  NaN Division_impossible
dvix083 divideint  999999        1  ->  999999
dvix084 divideint  99999         1  ->  99999
dvix085 divideint  9999          1  ->  9999
dvix086 divideint  999           1  ->  999
dvix087 divideint  99            1  ->  99
dvix088 divideint  9             1  ->  9

precision: 9
dvix090 divideint  0.            1    ->  0
dvix091 divideint  .0            1    ->  0
dvix092 divideint  0.00          1    ->  0
dvix093 divideint  0.00E+9       1    ->  0
dvix094 divideint  0.0000E-50    1    ->  0

dvix100 divideint  1  1   -> 1
dvix101 divideint  1  2   -> 0
dvix102 divideint  1  3   -> 0
dvix103 divideint  1  4   -> 0
dvix104 divideint  1  5   -> 0
dvix105 divideint  1  6   -> 0
dvix106 divideint  1  7   -> 0
dvix107 divideint  1  8   -> 0
dvix108 divideint  1  9   -> 0
dvix109 divideint  1  10  -> 0
dvix110 divideint  1  1   -> 1
dvix111 divideint  2  1   -> 2
dvix112 divideint  3  1   -> 3
dvix113 divideint  4  1   -> 4
dvix114 divideint  5  1   -> 5
dvix115 divideint  6  1   -> 6
dvix116 divideint  7  1   -> 7
dvix117 divideint  8  1   -> 8
dvix118 divideint  9  1   -> 9
dvix119 divideint  10 1   -> 10

-- from DiagBigDecimal
dvix131 divideint  101.3   1     ->  101
dvix132 divideint  101.0   1     ->  101
dvix133 divideint  101.3   3     ->  33
dvix134 divideint  101.0   3     ->  33
dvix135 divideint  2.4     1     ->  2
dvix136 divideint  2.400   1     ->  2
dvix137 divideint  18      18    ->  1
dvix138 divideint  1120    1000  ->  1
dvix139 divideint  2.4     2     ->  1
dvix140 divideint  2.400   2     ->  1
dvix141 divideint  0.5     2.000 ->  0
dvix142 divideint  8.005   7     ->  1
dvix143 divideint  5       2     ->  2
dvix144 divideint  0       2     ->  0
dvix145 divideint  0.00    2     ->  0

-- Others
dvix150 divideint  12345  4.999  ->  2469
dvix151 divideint  12345  4.99   ->  2473
dvix152 divideint  12345  4.9    ->  2519
dvix153 divideint  12345  5      ->  2469
dvix154 divideint  12345  5.1    ->  2420
dvix155 divideint  12345  5.01   ->  2464
dvix156 divideint  12345  5.001  ->  2468
dvix157 divideint    101  7.6    ->  13

-- Various flavours of divideint by 0
maxexponent: 999999999
minexponent: -999999999
dvix201 divideint  0      0   -> NaN Division_undefined
dvix202 divideint  0.0E5  0   -> NaN Division_undefined
dvix203 divideint  0.000  0   -> NaN Division_undefined
dvix204 divideint  0.0001 0   -> Infinity Division_by_zero
dvix205 divideint  0.01   0   -> Infinity Division_by_zero
dvix206 divideint  0.1    0   -> Infinity Division_by_zero
dvix207 divideint  1      0   -> Infinity Division_by_zero
dvix208 divideint  1      0.0 -> Infinity Division_by_zero
dvix209 divideint 10      0.0 -> Infinity Division_by_zero
dvix210 divideint 1E+100  0.0 -> Infinity Division_by_zero
dvix211 divideint 1E+1000 0   -> Infinity Division_by_zero
dvix214 divideint  -0.0001 0   -> -Infinity Division_by_zero
dvix215 divideint  -0.01   0   -> -Infinity Division_by_zero
dvix216 divideint  -0.1    0   -> -Infinity Division_by_zero
dvix217 divideint  -1      0   -> -Infinity Division_by_zero
dvix218 divideint  -1      0.0 -> -Infinity Division_by_zero
dvix219 divideint -10      0.0 -> -Infinity Division_by_zero
dvix220 divideint -1E+100  0.0 -> -Infinity Division_by_zero
dvix221 divideint -1E+1000 0   -> -Infinity Division_by_zero

-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
dvix270 divideint 1 1e999999999    -> 0
dvix271 divideint 1 0.9e999999999  -> 0
dvix272 divideint 1 0.99e999999999 -> 0
dvix273 divideint 1 0.999999999e999999999 -> 0
dvix274 divideint 9e999999999    1       -> NaN Division_impossible
dvix275 divideint 9.9e999999999  1       -> NaN Division_impossible
dvix276 divideint 9.99e999999999 1       -> NaN Division_impossible
dvix277 divideint 9.99999999e999999999 1 -> NaN Division_impossible

dvix280 divideint 0.1 9e-999999999       -> NaN Division_impossible
dvix281 divideint 0.1 99e-999999999      -> NaN Division_impossible
dvix282 divideint 0.1 999e-999999999     -> NaN Division_impossible

dvix283 divideint 0.1 9e-999999998       -> NaN Division_impossible
dvix284 divideint 0.1 99e-999999998      -> NaN Division_impossible
dvix285 divideint 0.1 999e-999999998     -> NaN Division_impossible
dvix286 divideint 0.1 999e-999999997     -> NaN Division_impossible
dvix287 divideint 0.1 9999e-999999997    -> NaN Division_impossible
dvix288 divideint 0.1 99999e-999999997   -> NaN Division_impossible


-- overflow and underflow tests [from divide]
maxexponent: 999999999
minexponent: -999999999
dvix330 divideint +1.23456789012345E-0 9E+999999999    -> 0
dvix331 divideint 9E+999999999 +0.23456789012345E-0 -> NaN Division_impossible
dvix332 divideint +0.100 9E+999999999    -> 0
dvix333 divideint 9E-999999999 +9.100    -> 0
dvix335 divideint -1.23456789012345E-0 9E+999999999    -> -0
dvix336 divideint 9E+999999999 -0.83456789012345E-0 -> NaN Division_impossible
dvix337 divideint -0.100 9E+999999999    -> -0
dvix338 divideint 9E-999999999 -9.100    -> -0

-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
dvix401 divideint 12345678000 100 -> 123456780
dvix402 divideint 1 12345678000   -> 0
dvix403 divideint 1234567800  10  -> 123456780
dvix404 divideint 1 1234567800    -> 0
dvix405 divideint 1234567890  10  -> 123456789
dvix406 divideint 1 1234567890    -> 0
dvix407 divideint 1234567891  10  -> 123456789
dvix408 divideint 1 1234567891    -> 0
dvix409 divideint 12345678901 100 -> 123456789
dvix410 divideint 1 12345678901   -> 0
dvix411 divideint 1234567896  10  -> 123456789
dvix412 divideint 1 1234567896    -> 0
dvix413 divideint 12345678948 100 -> 123456789
dvix414 divideint 12345678949 100 -> 123456789
dvix415 divideint 12345678950 100 -> 123456789
dvix416 divideint 12345678951 100 -> 123456789
dvix417 divideint 12345678999 100 -> 123456789

precision: 15
dvix441 divideint 12345678000 1 -> 12345678000
dvix442 divideint 1 12345678000 -> 0
dvix443 divideint 1234567800  1 -> 1234567800
dvix444 divideint 1 1234567800  -> 0
dvix445 divideint 1234567890  1 -> 1234567890
dvix446 divideint 1 1234567890  -> 0
dvix447 divideint 1234567891  1 -> 1234567891
dvix448 divideint 1 1234567891  -> 0
dvix449 divideint 12345678901 1 -> 12345678901
dvix450 divideint 1 12345678901 -> 0
dvix451 divideint 1234567896  1 -> 1234567896
dvix452 divideint 1 1234567896  -> 0

precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- more zeros, etc.
dvix531 divideint 5.00 1E-3    -> 5000
dvix532 divideint 00.00 0.000  -> NaN Division_undefined
dvix533 divideint 00.00 0E-3   -> NaN Division_undefined
dvix534 divideint  0    -0     -> NaN Division_undefined
dvix535 divideint -0     0     -> NaN Division_undefined
dvix536 divideint -0    -0     -> NaN Division_undefined

dvix541 divideint  0    -1     -> -0
dvix542 divideint -0    -1     ->  0
dvix543 divideint  0     1     ->  0
dvix544 divideint -0     1     -> -0
dvix545 divideint -1     0     -> -Infinity Division_by_zero
dvix546 divideint -1    -0     ->  Infinity Division_by_zero
dvix547 divideint  1     0     ->  Infinity Division_by_zero
dvix548 divideint  1    -0     -> -Infinity Division_by_zero

dvix551 divideint  0.0  -1     -> -0
dvix552 divideint -0.0  -1     ->  0
dvix553 divideint  0.0   1     ->  0
dvix554 divideint -0.0   1     -> -0
dvix555 divideint -1.0   0     -> -Infinity Division_by_zero
dvix556 divideint -1.0  -0     ->  Infinity Division_by_zero
dvix557 divideint  1.0   0     ->  Infinity Division_by_zero
dvix558 divideint  1.0  -0     -> -Infinity Division_by_zero

dvix561 divideint  0    -1.0   -> -0
dvix562 divideint -0    -1.0   ->  0
dvix563 divideint  0     1.0   ->  0
dvix564 divideint -0     1.0   -> -0
dvix565 divideint -1     0.0   -> -Infinity Division_by_zero
dvix566 divideint -1    -0.0   ->  Infinity Division_by_zero
dvix567 divideint  1     0.0   ->  Infinity Division_by_zero
dvix568 divideint  1    -0.0   -> -Infinity Division_by_zero

dvix571 divideint  0.0  -1.0   -> -0
dvix572 divideint -0.0  -1.0   ->  0
dvix573 divideint  0.0   1.0   ->  0
dvix574 divideint -0.0   1.0   -> -0
dvix575 divideint -1.0   0.0   -> -Infinity Division_by_zero
dvix576 divideint -1.0  -0.0   ->  Infinity Division_by_zero
dvix577 divideint  1.0   0.0   ->  Infinity Division_by_zero
dvix578 divideint  1.0  -0.0   -> -Infinity Division_by_zero

-- Specials
dvix580 divideint  Inf  -Inf   ->  NaN Invalid_operation
dvix581 divideint  Inf  -1000  -> -Infinity
dvix582 divideint  Inf  -1     -> -Infinity
dvix583 divideint  Inf  -0     -> -Infinity  Division_by_zero
dvix584 divideint  Inf   0     ->  Infinity  Division_by_zero
dvix585 divideint  Inf   1     ->  Infinity
dvix586 divideint  Inf   1000  ->  Infinity
dvix587 divideint  Inf   Inf   ->  NaN Invalid_operation
dvix588 divideint -1000  Inf   -> -0
dvix589 divideint -Inf   Inf   ->  NaN Invalid_operation
dvix590 divideint -1     Inf   -> -0
dvix591 divideint -0     Inf   -> -0
dvix592 divideint  0     Inf   ->  0
dvix593 divideint  1     Inf   ->  0
dvix594 divideint  1000  Inf   ->  0
dvix595 divideint  Inf   Inf   ->  NaN Invalid_operation

dvix600 divideint -Inf  -Inf   ->  NaN Invalid_operation
dvix601 divideint -Inf  -1000  ->  Infinity
dvix602 divideint -Inf  -1     ->  Infinity
dvix603 divideint -Inf  -0     ->  Infinity  Division_by_zero
dvix604 divideint -Inf   0     -> -Infinity  Division_by_zero
dvix605 divideint -Inf   1     -> -Infinity
dvix606 divideint -Inf   1000  -> -Infinity
dvix607 divideint -Inf   Inf   ->  NaN Invalid_operation
dvix608 divideint -1000  Inf   -> -0
dvix609 divideint -Inf  -Inf   ->  NaN Invalid_operation
dvix610 divideint -1    -Inf   ->  0
dvix611 divideint -0    -Inf   ->  0
dvix612 divideint  0    -Inf   -> -0
dvix613 divideint  1    -Inf   -> -0
dvix614 divideint  1000 -Inf   -> -0
dvix615 divideint  Inf  -Inf   ->  NaN Invalid_operation

dvix621 divideint  NaN -Inf    ->  NaN
dvix622 divideint  NaN -1000   ->  NaN
dvix623 divideint  NaN -1      ->  NaN
dvix624 divideint  NaN -0      ->  NaN
dvix625 divideint  NaN  0      ->  NaN
dvix626 divideint  NaN  1      ->  NaN
dvix627 divideint  NaN  1000   ->  NaN
dvix628 divideint  NaN  Inf    ->  NaN
dvix629 divideint  NaN  NaN    ->  NaN
dvix630 divideint -Inf  NaN    ->  NaN
dvix631 divideint -1000 NaN    ->  NaN
dvix632 divideint -1    NaN    ->  NaN
dvix633 divideint -0    NaN    ->  NaN
dvix634 divideint  0    NaN    ->  NaN
dvix635 divideint  1    NaN    ->  NaN
dvix636 divideint  1000 NaN    ->  NaN
dvix637 divideint  Inf  NaN    ->  NaN

dvix641 divideint  sNaN -Inf   ->  NaN  Invalid_operation
dvix642 divideint  sNaN -1000  ->  NaN  Invalid_operation
dvix643 divideint  sNaN -1     ->  NaN  Invalid_operation
dvix644 divideint  sNaN -0     ->  NaN  Invalid_operation
dvix645 divideint  sNaN  0     ->  NaN  Invalid_operation
dvix646 divideint  sNaN  1     ->  NaN  Invalid_operation
dvix647 divideint  sNaN  1000  ->  NaN  Invalid_operation
dvix648 divideint  sNaN  NaN   ->  NaN  Invalid_operation
dvix649 divideint  sNaN sNaN   ->  NaN  Invalid_operation
dvix650 divideint  NaN  sNaN   ->  NaN  Invalid_operation
dvix651 divideint -Inf  sNaN   ->  NaN  Invalid_operation
dvix652 divideint -1000 sNaN   ->  NaN  Invalid_operation
dvix653 divideint -1    sNaN   ->  NaN  Invalid_operation
dvix654 divideint -0    sNaN   ->  NaN  Invalid_operation
dvix655 divideint  0    sNaN   ->  NaN  Invalid_operation
dvix656 divideint  1    sNaN   ->  NaN  Invalid_operation
dvix657 divideint  1000 sNaN   ->  NaN  Invalid_operation
dvix658 divideint  Inf  sNaN   ->  NaN  Invalid_operation
dvix659 divideint  NaN  sNaN   ->  NaN  Invalid_operation

-- some long operand cases again
precision: 8
dvix660 divideint  100000001     1  ->  NaN Division_impossible
dvix661 divideint  100000000.4   1  ->  NaN Division_impossible
dvix662 divideint  100000000.5   1  ->  NaN Division_impossible
dvix663 divideint  100000000.9   1  ->  NaN Division_impossible
dvix664 divideint  100000000.999 1  ->  NaN Division_impossible
precision: 6
dvix690 divideint  100000000     1  ->  NaN Division_impossible
dvix691 divideint  10000000      1  ->  NaN Division_impossible
dvix692 divideint  1000000       1  ->  NaN Division_impossible
dvix693 divideint  100000        1  ->  100000
dvix694 divideint  10000         1  ->  10000
dvix695 divideint  1000          1  ->  1000
dvix696 divideint  100           1  ->  100
dvix697 divideint  10            1  ->  10
dvix698 divideint  1             1  ->  1

precision: 9
maxexponent: 999999999
minexponent: -999999999
dvix672 divideint 1 0.99e999999999 -> 0
dvix673 divideint 1 0.999999999e999999999 -> 0
dvix674 divideint 9e999999999    1       -> NaN Division_impossible
dvix675 divideint 9.9e999999999  1       -> NaN Division_impossible
dvix676 divideint 9.99e999999999 1       -> NaN Division_impossible
dvix677 divideint 9.99999999e999999999 1 -> NaN Division_impossible

dvix680 divideint 0.1 9e-999999999       -> NaN Division_impossible
dvix681 divideint 0.1 99e-999999999      -> NaN Division_impossible
dvix682 divideint 0.1 999e-999999999     -> NaN Division_impossible

dvix683 divideint 0.1 9e-999999998       -> NaN Division_impossible
dvix684 divideint 0.1 99e-999999998      -> NaN Division_impossible
dvix685 divideint 0.1 999e-999999998     -> NaN Division_impossible
dvix686 divideint 0.1 999e-999999997     -> NaN Division_impossible
dvix687 divideint 0.1 9999e-999999997    -> NaN Division_impossible
dvix688 divideint 0.1 99999e-999999997   -> NaN Division_impossible


-- Null tests
dvix900 divideint  10  # -> NaN Invalid_operation
dvix901 divideint   # 10 -> NaN Invalid_operation

--- NEW FILE: divide.decTest ---
------------------------------------------------------------------------
-- divide.decTest -- decimal division                                 --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks
divx001 divide  1     1    ->  1
divx002 divide  2     1    ->  2
divx003 divide  1     2    ->  0.5
divx004 divide  2     2    ->  1
divx005 divide  0     1    ->  0
divx006 divide  0     2    ->  0
divx007 divide  1     3    ->  0.333333333 Inexact Rounded
divx008 divide  2     3    ->  0.666666667 Inexact Rounded
divx009 divide  3     3    ->  1

divx010 divide  2.4   1    ->  2.4
divx011 divide  2.4   -1   ->  -2.4
divx012 divide  -2.4  1    ->  -2.4
divx013 divide  -2.4  -1   ->  2.4
divx014 divide  2.40  1    ->  2.40
divx015 divide  2.400 1    ->  2.400
divx016 divide  2.4   2    ->  1.2
divx017 divide  2.400 2    ->  1.200
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

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

divx070 divide  999999999        1    ->  999999999
divx071 divide  999999999.4      1    ->  999999999 Inexact Rounded
divx072 divide  999999999.5      1    ->  1.00000000E+9 Inexact Rounded
divx073 divide  999999999.9      1    ->  1.00000000E+9 Inexact Rounded
divx074 divide  999999999.999    1    ->  1.00000000E+9 Inexact Rounded
precision: 6
divx080 divide  999999999     1  ->  1.00000E+9 Inexact Rounded
divx081 divide  99999999      1  ->  1.00000E+8 Inexact Rounded
divx082 divide  9999999       1  ->  1.00000E+7 Inexact Rounded
divx083 divide  999999        1  ->  999999
divx084 divide  99999         1  ->  99999
divx085 divide  9999          1  ->  9999
divx086 divide  999           1  ->  999
divx087 divide  99            1  ->  99
divx088 divide  9             1  ->  9

precision: 9
divx090 divide  0.            1    ->  0
divx091 divide  .0            1    ->  0.0
divx092 divide  0.00          1    ->  0.00
divx093 divide  0.00E+9       1    ->  0E+7
divx094 divide  0.0000E-50    1    ->  0E-54

divx095 divide  1            1E-8  ->  1E+8
divx096 divide  1            1E-9  ->  1E+9
divx097 divide  1            1E-10 ->  1E+10
divx098 divide  1            1E-11 ->  1E+11
divx099 divide  1            1E-12 ->  1E+12

divx100 divide  1  1   -> 1
divx101 divide  1  2   -> 0.5
divx102 divide  1  3   -> 0.333333333 Inexact Rounded
divx103 divide  1  4   -> 0.25
divx104 divide  1  5   -> 0.2
divx105 divide  1  6   -> 0.166666667 Inexact Rounded
divx106 divide  1  7   -> 0.142857143 Inexact Rounded
divx107 divide  1  8   -> 0.125
divx108 divide  1  9   -> 0.111111111 Inexact Rounded
divx109 divide  1  10  -> 0.1
divx110 divide  1  1   -> 1
divx111 divide  2  1   -> 2
divx112 divide  3  1   -> 3
divx113 divide  4  1   -> 4
divx114 divide  5  1   -> 5
divx115 divide  6  1   -> 6
divx116 divide  7  1   -> 7
divx117 divide  8  1   -> 8
divx118 divide  9  1   -> 9
divx119 divide  10 1   -> 10

divx130 divide  12345  4.999  ->  2469.49390 Inexact Rounded
divx131 divide  12345  4.99   ->  2473.94790 Inexact Rounded
divx132 divide  12345  4.9    ->  2519.38776 Inexact Rounded
divx133 divide  12345  5      ->  2469
divx134 divide  12345  5.1    ->  2420.58824 Inexact Rounded
divx135 divide  12345  5.01   ->  2464.07186 Inexact Rounded
divx136 divide  12345  5.001  ->  2468.50630 Inexact Rounded

precision:   9
maxexponent: 999999999
minexponent: -999999999

-- test possibly imprecise results
divx220 divide 391   597 ->  0.654941374 Inexact Rounded
divx221 divide 391  -597 -> -0.654941374 Inexact Rounded
divx222 divide -391  597 -> -0.654941374 Inexact Rounded
divx223 divide -391 -597 ->  0.654941374 Inexact Rounded

-- test some cases that are close to exponent overflow
maxexponent: 999999999
minexponent: -999999999
divx270 divide 1 1e999999999    -> 1E-999999999
divx271 divide 1 0.9e999999999  -> 1.11111111E-999999999 Inexact Rounded
divx272 divide 1 0.99e999999999 -> 1.01010101E-999999999 Inexact Rounded
divx273 divide 1 0.999999999e999999999 -> 1.00000000E-999999999 Inexact Rounded
divx274 divide 9e999999999    1 -> 9E+999999999
divx275 divide 9.9e999999999  1 -> 9.9E+999999999
divx276 divide 9.99e999999999 1 -> 9.99E+999999999
divx277 divide 9.99999999e999999999 1 -> 9.99999999E+999999999

divx280 divide 0.1 9e-999999999   -> 1.11111111E+999999997 Inexact Rounded
divx281 divide 0.1 99e-999999999  -> 1.01010101E+999999996 Inexact Rounded
divx282 divide 0.1 999e-999999999 -> 1.00100100E+999999995 Inexact Rounded

divx283 divide 0.1 9e-999999998     -> 1.11111111E+999999996 Inexact Rounded
divx284 divide 0.1 99e-999999998    -> 1.01010101E+999999995 Inexact Rounded
divx285 divide 0.1 999e-999999998   -> 1.00100100E+999999994 Inexact Rounded
divx286 divide 0.1 999e-999999997   -> 1.00100100E+999999993 Inexact Rounded
divx287 divide 0.1 9999e-999999997  -> 1.00010001E+999999992 Inexact Rounded
divx288 divide 0.1 99999e-999999997 -> 1.00001000E+999999991 Inexact Rounded

-- Divide into 0 tests

divx301 divide    0    7     -> 0
divx302 divide    0    7E-5  -> 0E+5
divx303 divide    0    7E-1  -> 0E+1
divx304 divide    0    7E+1  -> 0.0
divx305 divide    0    7E+5  -> 0.00000
divx306 divide    0    7E+6  -> 0.000000
divx307 divide    0    7E+7  -> 0E-7
divx308 divide    0   70E-5  -> 0E+4
divx309 divide    0   70E-1  -> 0
divx310 divide    0   70E+0  -> 0.0
divx311 divide    0   70E+1  -> 0.00
divx312 divide    0   70E+5  -> 0.000000
divx313 divide    0   70E+6  -> 0E-7
divx314 divide    0   70E+7  -> 0E-8
divx315 divide    0  700E-5  -> 0E+3
divx316 divide    0  700E-1  -> 0.0
divx317 divide    0  700E+0  -> 0.00
divx318 divide    0  700E+1  -> 0.000
divx319 divide    0  700E+5  -> 0E-7
divx320 divide    0  700E+6  -> 0E-8
divx321 divide    0  700E+7  -> 0E-9

divx331 divide 0E-3    7E-5  -> 0E+2
divx332 divide 0E-3    7E-1  -> 0.00
divx333 divide 0E-3    7E+1  -> 0.0000
divx334 divide 0E-3    7E+5  -> 0E-8
divx335 divide 0E-1    7E-5  -> 0E+4
divx336 divide 0E-1    7E-1  -> 0
divx337 divide 0E-1    7E+1  -> 0.00
divx338 divide 0E-1    7E+5  -> 0.000000
divx339 divide 0E+1    7E-5  -> 0E+6
divx340 divide 0E+1    7E-1  -> 0E+2
divx341 divide 0E+1    7E+1  -> 0
divx342 divide 0E+1    7E+5  -> 0.0000
divx343 divide 0E+3    7E-5  -> 0E+8
divx344 divide 0E+3    7E-1  -> 0E+4
divx345 divide 0E+3    7E+1  -> 0E+2
divx346 divide 0E+3    7E+5  -> 0.00

maxexponent: 92
minexponent: -92
precision:    7
divx351 divide 0E-92   7E-1  -> 0E-91
divx352 divide 0E-92   7E+1  -> 0E-93
divx353 divide 0E-92   7E+5  -> 0E-97
divx354 divide 0E-92   7E+6  -> 0E-98
divx355 divide 0E-92   7E+7  -> 0E-98 Clamped
divx356 divide 0E-92 777E-1  -> 0E-93
divx357 divide 0E-92 777E+1  -> 0E-95
divx358 divide 0E-92 777E+3  -> 0E-97
divx359 divide 0E-92 777E+4  -> 0E-98
divx360 divide 0E-92 777E+5  -> 0E-98 Clamped

divx361 divide 0E+92   7E+1  -> 0E+91
divx362 divide 0E+92   7E+0  -> 0E+92
divx363 divide 0E+92   7E-1  -> 0E+92 Clamped
divx364 divide 0E+92 777E+1  -> 0E+89
divx365 divide 0E+92 777E-1  -> 0E+91
divx366 divide 0E+92 777E-2  -> 0E+92
divx367 divide 0E+92 777E-3  -> 0E+92 Clamped
divx368 divide 0E+92 777E-4  -> 0E+92 Clamped

-- input rounding checks
maxexponent: 999
minexponent: -999
precision: 9
divx401 divide 12345678000 1 -> 1.23456780E+10 Rounded
divx402 divide 1 12345678000 -> 8.10000066E-11 Inexact Rounded
divx403 divide 1234567800  1 -> 1.23456780E+9  Rounded
divx404 divide 1 1234567800  -> 8.10000066E-10 Inexact Rounded
divx405 divide 1234567890  1 -> 1.23456789E+9  Rounded
divx406 divide 1 1234567890  -> 8.10000007E-10 Inexact Rounded
divx407 divide 1234567891  1 -> 1.23456789E+9  Inexact Rounded
divx408 divide 1 1234567891  -> 8.10000007E-10 Inexact Rounded
divx409 divide 12345678901 1 -> 1.23456789E+10 Inexact Rounded
divx410 divide 1 12345678901 -> 8.10000007E-11 Inexact Rounded
divx411 divide 1234567896  1 -> 1.23456790E+9  Inexact Rounded
divx412 divide 1 1234567896  -> 8.10000003E-10 Inexact Rounded
divx413 divide 1 1234567897  -> 8.10000003E-10 Inexact Rounded
divx414 divide 1 1234567898  -> 8.10000002E-10 Inexact Rounded
divx415 divide 1 1234567899  -> 8.10000001E-10 Inexact Rounded
divx416 divide 1 1234567900  -> 8.10000001E-10 Inexact Rounded
divx417 divide 1 1234567901  -> 8.10000000E-10 Inexact Rounded
divx418 divide 1 1234567902  -> 8.09999999E-10 Inexact Rounded
-- some longies
divx421 divide 1234567896.000000000000  1 -> 1.23456790E+9  Inexact Rounded
divx422 divide 1 1234567896.000000000000  -> 8.10000003E-10 Inexact Rounded
divx423 divide 1234567896.000000000001  1 -> 1.23456790E+9  Inexact Rounded
divx424 divide 1 1234567896.000000000001  -> 8.10000003E-10 Inexact Rounded
divx425 divide 1234567896.000000000000000000000000000000000000000009  1 -> 1.23456790E+9  Inexact Rounded
divx426 divide 1 1234567896.000000000000000000000000000000000000000009  -> 8.10000003E-10 Inexact Rounded
divx427 divide 1234567897.900010000000000000000000000000000000000009  1 -> 1.23456790E+9  Inexact Rounded
divx428 divide 1 1234567897.900010000000000000000000000000000000000009  -> 8.10000002E-10 Inexact Rounded

precision: 15
-- still checking...
divx441 divide 12345678000 1 -> 12345678000
divx442 divide 1 12345678000 -> 8.10000066420005E-11 Inexact Rounded
divx443 divide 1234567800  1 -> 1234567800
divx444 divide 1 1234567800  -> 8.10000066420005E-10 Inexact Rounded
divx445 divide 1234567890  1 -> 1234567890
divx446 divide 1 1234567890  -> 8.10000007371000E-10 Inexact Rounded
divx447 divide 1234567891  1 -> 1234567891
divx448 divide 1 1234567891  -> 8.10000006714900E-10 Inexact Rounded
divx449 divide 12345678901 1 -> 12345678901
divx450 divide 1 12345678901 -> 8.10000007305390E-11 Inexact Rounded
divx451 divide 1234567896  1 -> 1234567896
divx452 divide 1 1234567896  -> 8.10000003434400E-10 Inexact Rounded

-- some suggested by Dan Zuras
divx460 divide 3e0      2e0     -> 1.5
divx461 divide 30e-1    2e0     -> 1.5
divx462 divide 300e-2   2e0     -> 1.50
divx464 divide 3000e-3  2e0     -> 1.500
divx465 divide 3e0      20e-1   -> 1.5
divx466 divide 30e-1    20e-1   -> 1.5
divx467 divide 300e-2   20e-1   -> 1.5
divx468 divide 3000e-3  20e-1   -> 1.50
divx469 divide 3e0      200e-2  -> 1.5
divx470 divide 30e-1    200e-2  -> 1.5
divx471 divide 300e-2   200e-2  -> 1.5
divx472 divide 3000e-3  200e-2  -> 1.5
divx473 divide 3e0      2000e-3 -> 1.5
divx474 divide 30e-1    2000e-3 -> 1.5
divx475 divide 300e-2   2000e-3 -> 1.5
divx476 divide 3000e-3  2000e-3 -> 1.5

-- some reciprocals
divx480 divide 1        1.0E+33 -> 1E-33
divx481 divide 1        10E+33  -> 1E-34
divx482 divide 1        1.0E-33 -> 1E+33
divx483 divide 1        10E-33  -> 1E+32


-- tryzeros cases
precision:   7
rounding:    half_up
maxExponent: 92
minexponent: -92
divx496  divide  0E+86 1000E-13  -> 0E+92 Clamped
divx497  divide  0E-98 1000E+13  -> 0E-98 Clamped

precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- focus on trailing zeros issues
precision:   9
divx500 divide  1      9.9    ->  0.101010101  Inexact Rounded
precision:   8
divx501 divide  1      9.9    ->  0.10101010   Inexact Rounded
precision:   7
divx502 divide  1      9.9    ->  0.1010101    Inexact Rounded
precision:   6
divx503 divide  1      9.9    ->  0.101010     Inexact Rounded
precision:   9

divx531 divide 1         2    -> 0.5
divx532 divide 1.0       2    -> 0.5
divx533 divide 1.00      2    -> 0.50
divx534 divide 1.000     2    -> 0.500
divx535 divide 1.0000    2    -> 0.5000
divx536 divide 1.00000   2    -> 0.50000
divx537 divide 1.000000  2    -> 0.500000
divx538 divide 1.0000000 2    -> 0.5000000
divx539 divide 1.00      2.00 -> 0.5

divx541 divide 2    1         -> 2
divx542 divide 2    1.0       -> 2
divx543 divide 2    1.00      -> 2
divx544 divide 2    1.000     -> 2
divx545 divide 2    1.0000    -> 2
divx546 divide 2    1.00000   -> 2
divx547 divide 2    1.000000  -> 2
divx548 divide 2    1.0000000 -> 2
divx549 divide 2.00 1.00      -> 2

divx550 divide  2.40   2      ->  1.20
divx551 divide  2.40   4      ->  0.60
divx552 divide  2.40  10      ->  0.24
divx553 divide  2.40   2.0    ->  1.2
divx554 divide  2.40   4.0    ->  0.6
divx555 divide  2.40  10.0    ->  0.24
divx556 divide  2.40   2.00   ->  1.2
divx557 divide  2.40   4.00   ->  0.6
divx558 divide  2.40  10.00   ->  0.24
divx559 divide  0.9    0.1    ->  9
divx560 divide  0.9    0.01   ->  9E+1
divx561 divide  0.9    0.001  ->  9E+2
divx562 divide  5      2      ->  2.5
divx563 divide  5      2.0    ->  2.5
divx564 divide  5      2.00   ->  2.5
divx565 divide  5      20     ->  0.25
divx566 divide  5      20.0   ->  0.25
divx567 divide  2.400  2      ->  1.200
divx568 divide  2.400  2.0    ->  1.20
divx569 divide  2.400  2.400  ->  1
-- +ve exponent
precision: 5
divx570 divide  2.4E+6     2  ->  1.2E+6
divx571 divide  2.40E+6    2  ->  1.20E+6
divx572 divide  2.400E+6   2  ->  1.200E+6
divx573 divide  2.4000E+6  2  ->  1.2000E+6
divx574 divide  24E+5      2  ->  1.2E+6
divx575 divide  240E+4     2  ->  1.20E+6
divx576 divide  2400E+3    2  ->  1.200E+6
divx577 divide  24000E+2   2  ->  1.2000E+6
precision: 6
divx580 divide  2.4E+6     2  ->  1.2E+6
divx581 divide  2.40E+6    2  ->  1.20E+6
divx582 divide  2.400E+6   2  ->  1.200E+6
divx583 divide  2.4000E+6  2  ->  1.2000E+6
divx584 divide  24E+5      2  ->  1.2E+6
divx585 divide  240E+4     2  ->  1.20E+6
divx586 divide  2400E+3    2  ->  1.200E+6
divx587 divide  24000E+2   2  ->  1.2000E+6
precision: 7
divx590 divide  2.4E+6     2  ->  1.2E+6
divx591 divide  2.40E+6    2  ->  1.20E+6
divx592 divide  2.400E+6   2  ->  1.200E+6
divx593 divide  2.4000E+6  2  ->  1.2000E+6
divx594 divide  24E+5      2  ->  1.2E+6
divx595 divide  240E+4     2  ->  1.20E+6
divx596 divide  2400E+3    2  ->  1.200E+6
divx597 divide  24000E+2   2  ->  1.2000E+6
precision:   9
divx600 divide  2.4E+9     2  ->  1.2E+9
divx601 divide  2.40E+9    2  ->  1.20E+9
divx602 divide  2.400E+9   2  ->  1.200E+9
divx603 divide  2.4000E+9  2  ->  1.2000E+9
divx604 divide  24E+8      2  ->  1.2E+9
divx605 divide  240E+7     2  ->  1.20E+9
divx606 divide  2400E+6    2  ->  1.200E+9
divx607 divide  24000E+5   2  ->  1.2000E+9

-- long operand triangle
precision: 33
divx610 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097703792 Inexact Rounded
precision: 32
divx611 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770379  Inexact Rounded
precision: 31
divx612 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977038   Inexact Rounded
precision: 30
divx613 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131097704    Inexact Rounded
precision: 29
divx614 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813109770     Inexact Rounded
precision: 28
divx615 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81310977      Inexact Rounded
precision: 27
divx616 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131098       Inexact Rounded
precision: 26
divx617 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813110        Inexact Rounded
precision: 25
divx618 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81311         Inexact Rounded
precision: 24
divx619 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8131          Inexact Rounded
precision: 23
divx620 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.813           Inexact Rounded
precision: 22
divx621 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.81            Inexact Rounded
precision: 21
divx622 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817797.8             Inexact Rounded
precision: 20
divx623 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -41011408883796817798               Inexact Rounded
precision: 19
divx624 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379681780E+19         Inexact Rounded
precision: 18
divx625 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968178E+19         Inexact Rounded
precision: 17
divx626 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883796818E+19         Inexact Rounded
precision: 16
divx627 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888379682E+19         Inexact Rounded
precision: 15
divx628 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088837968E+19         Inexact Rounded
precision: 14
divx629 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408883797E+19         Inexact Rounded
precision: 13
divx630 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888380E+19         Inexact Rounded
precision: 12
divx631 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114088838E+19         Inexact Rounded
precision: 11
divx632 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011408884E+19         Inexact Rounded
precision: 10
divx633 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101140888E+19         Inexact Rounded
precision:  9
divx634 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114089E+19         Inexact Rounded
precision:  8
divx635 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011409E+19         Inexact Rounded
precision:  7
divx636 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101141E+19         Inexact Rounded
precision:  6
divx637 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10114E+19         Inexact Rounded
precision:  5
divx638 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1011E+19         Inexact Rounded
precision:  4
divx639 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.101E+19         Inexact Rounded
precision:  3
divx640 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.10E+19         Inexact Rounded
precision:  2
divx641 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4.1E+19         Inexact Rounded
precision:  1
divx642 divide -3374988581607586061255542201048 82293895124.90045271504836568681 -> -4E+19         Inexact Rounded

-- more zeros, etc.
precision: 9
divx731 divide 5.00 1E-3    -> 5.00E+3
divx732 divide 00.00 0.000  -> NaN Division_undefined
divx733 divide 00.00 0E-3   -> NaN Division_undefined
divx734 divide  0    -0     -> NaN Division_undefined
divx735 divide -0     0     -> NaN Division_undefined
divx736 divide -0    -0     -> NaN Division_undefined

divx741 divide  0    -1     -> -0
divx742 divide -0    -1     ->  0
divx743 divide  0     1     ->  0
divx744 divide -0     1     -> -0
divx745 divide -1     0     -> -Infinity Division_by_zero
divx746 divide -1    -0     ->  Infinity Division_by_zero
divx747 divide  1     0     ->  Infinity Division_by_zero
divx748 divide  1    -0     -> -Infinity Division_by_zero

divx751 divide  0.0  -1     -> -0.0
divx752 divide -0.0  -1     ->  0.0
divx753 divide  0.0   1     ->  0.0
divx754 divide -0.0   1     -> -0.0
divx755 divide -1.0   0     -> -Infinity Division_by_zero
divx756 divide -1.0  -0     ->  Infinity Division_by_zero
divx757 divide  1.0   0     ->  Infinity Division_by_zero
divx758 divide  1.0  -0     -> -Infinity Division_by_zero

divx761 divide  0    -1.0   -> -0
divx762 divide -0    -1.0   ->  0
divx763 divide  0     1.0   ->  0
divx764 divide -0     1.0   -> -0
divx765 divide -1     0.0   -> -Infinity Division_by_zero
divx766 divide -1    -0.0   ->  Infinity Division_by_zero
divx767 divide  1     0.0   ->  Infinity Division_by_zero
divx768 divide  1    -0.0   -> -Infinity Division_by_zero

divx771 divide  0.0  -1.0   -> -0.0
divx772 divide -0.0  -1.0   ->  0.0
divx773 divide  0.0   1.0   ->  0.0
divx774 divide -0.0   1.0   -> -0.0
divx775 divide -1.0   0.0   -> -Infinity Division_by_zero
divx776 divide -1.0  -0.0   ->  Infinity Division_by_zero
divx777 divide  1.0   0.0   ->  Infinity Division_by_zero
divx778 divide  1.0  -0.0   -> -Infinity Division_by_zero

-- Specials
divx780 divide  Inf  -Inf   ->  NaN Invalid_operation
divx781 divide  Inf  -1000  -> -Infinity
divx782 divide  Inf  -1     -> -Infinity
divx783 divide  Inf  -0     -> -Infinity  Division_by_zero
divx784 divide  Inf   0     ->  Infinity  Division_by_zero
divx785 divide  Inf   1     ->  Infinity
divx786 divide  Inf   1000  ->  Infinity
divx787 divide  Inf   Inf   ->  NaN Invalid_operation
divx788 divide -1000  Inf   -> -0
divx789 divide -Inf   Inf   ->  NaN Invalid_operation
divx790 divide -1     Inf   -> -0
divx791 divide -0     Inf   -> -0
divx792 divide  0     Inf   ->  0
divx793 divide  1     Inf   ->  0
divx794 divide  1000  Inf   ->  0
divx795 divide  Inf   Inf   ->  NaN Invalid_operation

divx800 divide -Inf  -Inf   ->  NaN Invalid_operation
divx801 divide -Inf  -1000  ->  Infinity
divx802 divide -Inf  -1     ->  Infinity
divx803 divide -Inf  -0     ->  Infinity  Division_by_zero
divx804 divide -Inf   0     -> -Infinity  Division_by_zero
divx805 divide -Inf   1     -> -Infinity
divx806 divide -Inf   1000  -> -Infinity
divx807 divide -Inf   Inf   ->  NaN Invalid_operation
divx808 divide -1000  Inf   -> -0
divx809 divide -Inf  -Inf   ->  NaN Invalid_operation
divx810 divide -1    -Inf   ->  0
divx811 divide -0    -Inf   ->  0
divx812 divide  0    -Inf   -> -0
divx813 divide  1    -Inf   -> -0
divx814 divide  1000 -Inf   -> -0
divx815 divide  Inf  -Inf   ->  NaN Invalid_operation

divx821 divide  NaN -Inf    ->  NaN
divx822 divide  NaN -1000   ->  NaN
divx823 divide  NaN -1      ->  NaN
divx824 divide  NaN -0      ->  NaN
divx825 divide  NaN  0      ->  NaN
divx826 divide  NaN  1      ->  NaN
divx827 divide  NaN  1000   ->  NaN
divx828 divide  NaN  Inf    ->  NaN
divx829 divide  NaN  NaN    ->  NaN
divx830 divide -Inf  NaN    ->  NaN
divx831 divide -1000 NaN    ->  NaN
divx832 divide -1    NaN    ->  NaN
divx833 divide -0    NaN    ->  NaN
divx834 divide  0    NaN    ->  NaN
divx835 divide  1    NaN    ->  NaN
divx836 divide  1000 NaN    ->  NaN
divx837 divide  Inf  NaN    ->  NaN

divx841 divide  sNaN -Inf   ->  NaN  Invalid_operation
divx842 divide  sNaN -1000  ->  NaN  Invalid_operation
divx843 divide  sNaN -1     ->  NaN  Invalid_operation
divx844 divide  sNaN -0     ->  NaN  Invalid_operation
divx845 divide  sNaN  0     ->  NaN  Invalid_operation
divx846 divide  sNaN  1     ->  NaN  Invalid_operation
divx847 divide  sNaN  1000  ->  NaN  Invalid_operation
divx848 divide  sNaN  NaN   ->  NaN  Invalid_operation
divx849 divide  sNaN sNaN   ->  NaN  Invalid_operation
divx850 divide  NaN  sNaN   ->  NaN  Invalid_operation
divx851 divide -Inf  sNaN   ->  NaN  Invalid_operation
divx852 divide -1000 sNaN   ->  NaN  Invalid_operation
divx853 divide -1    sNaN   ->  NaN  Invalid_operation
divx854 divide -0    sNaN   ->  NaN  Invalid_operation
divx855 divide  0    sNaN   ->  NaN  Invalid_operation
divx856 divide  1    sNaN   ->  NaN  Invalid_operation
divx857 divide  1000 sNaN   ->  NaN  Invalid_operation
divx858 divide  Inf  sNaN   ->  NaN  Invalid_operation
divx859 divide  NaN  sNaN   ->  NaN  Invalid_operation

maxexponent: 999999999
minexponent: -999999999

-- Various flavours of divide by 0
divx901 divide    0       0   ->  NaN Division_undefined
divx902 divide    0.0E5   0   ->  NaN Division_undefined
divx903 divide    0.000   0   ->  NaN Division_undefined
divx904 divide    0.0001  0   ->  Infinity Division_by_zero
divx905 divide    0.01    0   ->  Infinity Division_by_zero
divx906 divide    0.1     0   ->  Infinity Division_by_zero
divx907 divide    1       0   ->  Infinity Division_by_zero
divx908 divide    1       0.0 ->  Infinity Division_by_zero
divx909 divide   10       0.0 ->  Infinity Division_by_zero
divx910 divide   1E+100   0.0 ->  Infinity Division_by_zero
divx911 divide   1E+1000  0   ->  Infinity Division_by_zero

divx921 divide   -0.0001  0   -> -Infinity Division_by_zero
divx922 divide   -0.01    0   -> -Infinity Division_by_zero
divx923 divide   -0.1     0   -> -Infinity Division_by_zero
divx924 divide   -1       0   -> -Infinity Division_by_zero
divx925 divide   -1       0.0 -> -Infinity Division_by_zero
divx926 divide  -10       0.0 -> -Infinity Division_by_zero
divx927 divide  -1E+100   0.0 -> -Infinity Division_by_zero
divx928 divide  -1E+1000  0   -> -Infinity Division_by_zero

divx931 divide    0.0001 -0   -> -Infinity Division_by_zero
divx932 divide    0.01   -0   -> -Infinity Division_by_zero
divx933 divide    0.1    -0   -> -Infinity Division_by_zero
divx934 divide    1      -0   -> -Infinity Division_by_zero
divx935 divide    1      -0.0 -> -Infinity Division_by_zero
divx936 divide   10      -0.0 -> -Infinity Division_by_zero
divx937 divide   1E+100  -0.0 -> -Infinity Division_by_zero
divx938 divide   1E+1000 -0   -> -Infinity Division_by_zero

divx941 divide   -0.0001 -0   ->  Infinity Division_by_zero
divx942 divide   -0.01   -0   ->  Infinity Division_by_zero
divx943 divide   -0.1    -0   ->  Infinity Division_by_zero
divx944 divide   -1      -0   ->  Infinity Division_by_zero
divx945 divide   -1      -0.0 ->  Infinity Division_by_zero
divx946 divide  -10      -0.0 ->  Infinity Division_by_zero
divx947 divide  -1E+100  -0.0 ->  Infinity Division_by_zero
divx948 divide  -1E+1000 -0   ->  Infinity Division_by_zero

-- overflow and underflow tests
maxexponent: 999999999
minexponent: -999999999
divx951 divide 9E+999999999 +0.23456789012345E-0 -> Infinity Inexact Overflow Rounded
divx952 divide +0.100 9E+999999999 -> 1.111111E-1000000001 Inexact Rounded Underflow Subnormal
divx953 divide 9E-999999999 +9.100 -> 9.8901099E-1000000000 Inexact Rounded Underflow Subnormal
divx954 divide -1.23456789          9E+999999999 -> -1.3717421E-1000000000 Subnormal
divx955 divide -1.23456789012345E-0 9E+999999999 -> -1.3717421E-1000000000 Underflow Subnormal Rounded Inexact
divx956 divide -1.23456789012345E-0 7E+999999999 -> -1.7636684E-1000000000 Inexact Rounded Underflow Subnormal
divx957 divide 9E+999999999 -0.83456789012345E-0 -> -Infinity Inexact Overflow Rounded
divx958 divide -0.100 9E+999999999 -> -1.111111E-1000000001 Subnormal Inexact Rounded Underflow
divx959 divide 9E-999999999 -9.100 -> -9.8901099E-1000000000 Inexact Rounded Underflow Subnormal

-- overflow and underflow (additional edge tests in multiply.decTest)
-- 'subnormal' results now possible (all hard underflow or overflow in
-- base arithemtic)
divx960 divide 1e-600000000 1e+400000001 -> 1E-1000000001 Subnormal
divx961 divide 1e-600000000 1e+400000002 -> 1E-1000000002 Subnormal
divx962 divide 1e-600000000 1e+400000003 -> 1E-1000000003 Subnormal
divx963 divide 1e-600000000 1e+400000004 -> 1E-1000000004 Subnormal
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
-- [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
divx972 divide 1e+600000000 1e-400000003 -> Infinity Overflow Inexact Rounded
divx973 divide 1e+600000000 1e-400000004 -> Infinity Overflow Inexact Rounded
divx974 divide 1e+600000000 1e-400000005 -> Infinity Overflow Inexact Rounded
divx975 divide 1e+600000000 1e-400000006 -> Infinity Overflow Inexact Rounded
divx976 divide 1e+600000000 1e-400000007 -> Infinity Overflow Inexact Rounded
divx977 divide 1e+600000000 1e-400000008 -> Infinity Overflow Inexact Rounded
divx978 divide 1e+600000000 1e-400000009 -> Infinity Overflow Inexact Rounded
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
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
divx987 divide -1e+600000000 -1e-400000009 ->  Infinity Overflow Inexact Rounded

-- Long operand overflow may be a different path
precision: 3
divx990 divide 1000  9.999E-999999999      ->  Infinity Inexact Overflow Rounded
divx991 divide 1000 -9.999E-999999999      -> -Infinity Inexact Overflow Rounded
divx992 divide       9.999E+999999999 0.01 ->  Infinity Inexact Overflow Rounded
divx993 divide      -9.999E+999999999 0.01 -> -Infinity Inexact Overflow Rounded

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
divx1001 divide    1.52444E-80 1      -> 1.524E-80 Inexact Rounded Subnormal Underflow
divx1002 divide    1.52445E-80 1      -> 1.524E-80 Inexact Rounded Subnormal Underflow
divx1003 divide    1.52446E-80 1      -> 1.524E-80 Inexact Rounded Subnormal Underflow

-- Null tests
divx9998 divide 10  # -> NaN Invalid_operation
divx9999 divide  # 10 -> NaN Invalid_operation


--- NEW FILE: decimal64.decTest ---
------------------------------------------------------------------------
-- decimal64.decTest -- decimal eight-byte format testcases           --
-- Copyright (c) IBM Corporation, 2000, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of tests is for the eight-byte concrete representation.
-- Its characteristics are:
--
--  1 bit  sign
--  5 bits combination field
--  8 bits exponent continuation
-- 50 bits coefficient continuation
--
-- Total exponent length 10 bits
-- Total coefficient length 54 bits (16 digits)
--
-- Elimit =  767 (maximum encoded exponent)
-- Emax   =  384 (largest exponent value)
-- Emin   = -383 (smallest exponent value)
-- bias   =  398 (subtracted from encoded exponent) = -Etiny

extended:    1
precision:   16
rounding:    half_up
maxExponent: 384
minExponent: -383

-- General testcases
-- (mostly derived from the Strawman 4 document and examples)
dece001 apply   #A2300000000003D0 -> -7.50
dece002 apply   -7.50             -> #A2300000000003D0

-- Normality
dece010 apply   1234567890123456   -> #263934b9c1e28e56
dece011 apply   1234567890123456.0 -> #263934b9c1e28e56 Rounded
dece012 apply   1234567890123456.1 -> #263934b9c1e28e56 Rounded Inexact
dece013 apply  -1234567890123456   -> #a63934b9c1e28e56
dece014 apply  -1234567890123456.0 -> #a63934b9c1e28e56 Rounded
dece015 apply  -1234567890123456.1 -> #a63934b9c1e28e56 Rounded Inexact


-- Nmax and similar
dece022 apply   9.999999999999999E+384  -> #77fcff3fcff3fcff
dece023 apply   #77fcff3fcff3fcff       -> 9.999999999999999E+384
dece024 apply   1.234567890123456E+384  -> #47fd34b9c1e28e56
dece025 apply   #47fd34b9c1e28e56       -> 1.234567890123456E+384
-- fold-downs (more below)
dece030 apply   1.23E+384               -> #47fd300000000000 Clamped
dece031 apply   #47fd300000000000       -> 1.230000000000000E+384
dece032 apply   1E+384                  -> #47fc000000000000 Clamped
dece033 apply   #47fc000000000000       -> 1.000000000000000E+384

-- overflows
maxExponent: 999   -- set high so conversion causes the overflow
minExponent: -999
dece040 apply   10E+384                 -> #7800000000000000 Overflow Rounded Inexact
dece041 apply   1.000000000000000E+385  -> #7800000000000000 Overflow Rounded Inexact
maxExponent: 384
minExponent: -383

dece051 apply   12345                   -> #22380000000049c5
dece052 apply   #22380000000049c5       -> 12345
dece053 apply   1234                    -> #2238000000000534
dece054 apply   #2238000000000534       -> 1234
dece055 apply   123                     -> #22380000000000a3
dece056 apply   #22380000000000a3       -> 123
dece057 apply   12                      -> #2238000000000012
dece058 apply   #2238000000000012       -> 12
dece059 apply   1                       -> #2238000000000001
dece060 apply   #2238000000000001       -> 1
dece061 apply   1.23                    -> #22300000000000a3
dece062 apply   #22300000000000a3       -> 1.23
dece063 apply   123.45                  -> #22300000000049c5
dece064 apply   #22300000000049c5       -> 123.45

-- Nmin and below
dece071 apply   1E-383                  -> #003c000000000001
dece072 apply   #003c000000000001       -> 1E-383
dece073 apply   1.000000000000000E-383  -> #0400000000000000
dece074 apply   #0400000000000000       -> 1.000000000000000E-383
dece075 apply   1.000000000000001E-383  -> #0400000000000001
dece076 apply   #0400000000000001       -> 1.000000000000001E-383

dece077 apply   0.100000000000000E-383  -> #0000800000000000      Subnormal
dece078 apply   #0000800000000000       -> 1.00000000000000E-384  Subnormal
dece079 apply   0.000000000000010E-383  -> #0000000000000010      Subnormal
dece080 apply   #0000000000000010       -> 1.0E-397               Subnormal
dece081 apply   0.00000000000001E-383   -> #0004000000000001      Subnormal
dece082 apply   #0004000000000001       -> 1E-397                 Subnormal
dece083 apply   0.000000000000001E-383  -> #0000000000000001      Subnormal
dece084 apply   #0000000000000001       -> 1E-398                 Subnormal

-- underflows
dece090 apply   1e-398                  -> #0000000000000001  Subnormal
dece091 apply   1.9e-398                -> #0000000000000002  Subnormal Underflow Inexact Rounded
dece092 apply   1.1e-398                -> #0000000000000001  Subnormal Underflow Inexact Rounded
dece093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded
dece094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded
dece095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded
dece096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded
dece097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded
dece098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded
dece099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded

-- Same again, negatives
-- Nmax and similar
dece122 apply  -9.999999999999999E+384  -> #f7fcff3fcff3fcff
dece123 apply   #f7fcff3fcff3fcff       -> -9.999999999999999E+384
dece124 apply  -1.234567890123456E+384  -> #c7fd34b9c1e28e56
dece125 apply   #c7fd34b9c1e28e56       -> -1.234567890123456E+384
-- fold-downs (more below)
dece130 apply  -1.23E+384               -> #c7fd300000000000 Clamped
dece131 apply   #c7fd300000000000       -> -1.230000000000000E+384
dece132 apply  -1E+384                  -> #c7fc000000000000 Clamped
dece133 apply   #c7fc000000000000       -> -1.000000000000000E+384

-- overflows
maxExponent: 999   -- set high so conversion causes the overflow
minExponent: -999
dece140 apply  -10E+384                 -> #f800000000000000 Overflow Rounded Inexact
dece141 apply  -1.000000000000000E+385  -> #f800000000000000 Overflow Rounded Inexact
maxExponent: 384
minExponent: -383

dece151 apply  -12345                   -> #a2380000000049c5
dece152 apply   #a2380000000049c5       -> -12345
dece153 apply  -1234                    -> #a238000000000534
dece154 apply   #a238000000000534       -> -1234
dece155 apply  -123                     -> #a2380000000000a3
dece156 apply   #a2380000000000a3       -> -123
dece157 apply  -12                      -> #a238000000000012
dece158 apply   #a238000000000012       -> -12
dece159 apply  -1                       -> #a238000000000001
dece160 apply   #a238000000000001       -> -1
dece161 apply  -1.23                    -> #a2300000000000a3
dece162 apply   #a2300000000000a3       -> -1.23
dece163 apply  -123.45                  -> #a2300000000049c5
dece164 apply   #a2300000000049c5       -> -123.45

-- Nmin and below
dece171 apply  -1E-383                  -> #803c000000000001
dece172 apply   #803c000000000001       -> -1E-383
dece173 apply  -1.000000000000000E-383  -> #8400000000000000
dece174 apply   #8400000000000000       -> -1.000000000000000E-383
dece175 apply  -1.000000000000001E-383  -> #8400000000000001
dece176 apply   #8400000000000001       -> -1.000000000000001E-383

dece177 apply  -0.100000000000000E-383  -> #8000800000000000       Subnormal
dece178 apply   #8000800000000000       -> -1.00000000000000E-384  Subnormal
dece179 apply  -0.000000000000010E-383  -> #8000000000000010       Subnormal
dece180 apply   #8000000000000010       -> -1.0E-397               Subnormal
dece181 apply  -0.00000000000001E-383   -> #8004000000000001       Subnormal
dece182 apply   #8004000000000001       -> -1E-397                 Subnormal
dece183 apply  -0.000000000000001E-383  -> #8000000000000001       Subnormal
dece184 apply   #8000000000000001       -> -1E-398                 Subnormal

-- underflows
dece189 apply   -1e-398                 -> #8000000000000001  Subnormal
dece190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded
dece191 apply   -1.9e-398               -> #8000000000000002  Subnormal Underflow Inexact Rounded
dece192 apply   -1.1e-398               -> #8000000000000001  Subnormal Underflow Inexact Rounded
dece193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded
dece194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded
dece195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded
dece196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded
dece197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded
dece198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded
dece199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded

-- zeros
dece401 apply   0E-500                  -> #0000000000000000  Clamped
dece402 apply   0E-400                  -> #0000000000000000  Clamped
dece403 apply   0E-398                  -> #0000000000000000
dece404 apply   #0000000000000000       -> 0E-398
dece405 apply   0.000000000000000E-383  -> #0000000000000000
dece406 apply   #0000000000000000       -> 0E-398
dece407 apply   0E-2                    -> #2230000000000000
dece408 apply   #2230000000000000       -> 0.00
dece409 apply   0                       -> #2238000000000000
dece410 apply   #2238000000000000       -> 0
dece411 apply   0E+3                    -> #2244000000000000
dece412 apply   #2244000000000000       -> 0E+3
dece413 apply   0E+369                  -> #43fc000000000000
dece414 apply   #43fc000000000000       -> 0E+369
-- clamped zeros...
dece415 apply   0E+370                  -> #43fc000000000000  Clamped
dece416 apply   #43fc000000000000       -> 0E+369
dece417 apply   0E+384                  -> #43fc000000000000  Clamped
dece418 apply   #43fc000000000000       -> 0E+369
dece419 apply   0E+400                  -> #43fc000000000000  Clamped
dece420 apply   #43fc000000000000       -> 0E+369
dece421 apply   0E+500                  -> #43fc000000000000  Clamped
dece422 apply   #43fc000000000000       -> 0E+369

-- negative zeros
dece431 apply   -0E-400                 -> #8000000000000000  Clamped
dece432 apply   -0E-400                 -> #8000000000000000  Clamped
dece433 apply   -0E-398                 -> #8000000000000000
dece434 apply   #8000000000000000       -> -0E-398
dece435 apply   -0.000000000000000E-383 -> #8000000000000000
dece436 apply   #8000000000000000       -> -0E-398
dece437 apply   -0E-2                   -> #a230000000000000
dece438 apply   #a230000000000000       -> -0.00
dece439 apply   -0                      -> #a238000000000000
dece440 apply   #a238000000000000       -> -0
dece441 apply   -0E+3                   -> #a244000000000000
dece442 apply   #a244000000000000       -> -0E+3
dece443 apply   -0E+369                 -> #c3fc000000000000
dece444 apply   #c3fc000000000000       -> -0E+369
-- clamped zeros...
dece445 apply   -0E+370                 -> #c3fc000000000000  Clamped
dece446 apply   #c3fc000000000000       -> -0E+369
dece447 apply   -0E+384                 -> #c3fc000000000000  Clamped
dece448 apply   #c3fc000000000000       -> -0E+369
dece449 apply   -0E+400                 -> #c3fc000000000000  Clamped
dece450 apply   #c3fc000000000000       -> -0E+369
dece451 apply   -0E+500                 -> #c3fc000000000000  Clamped
dece452 apply   #c3fc000000000000       -> -0E+369

-- Specials
dece501 apply   #7878787878787878 -> #7800000000000000
dece502 apply   #7800000000000000 -> Infinity
dece503 apply   #7979797979797979 -> #7800000000000000
dece504 apply   #7900000000000000 -> Infinity
dece505 apply   #7a7a7a7a7a7a7a7a -> #7800000000000000
dece506 apply   #7a00000000000000 -> Infinity
dece507 apply   #7b7b7b7b7b7b7b7b -> #7800000000000000
dece508 apply   #7b00000000000000 -> Infinity
dece509 apply   #7c7c7c7c7c7c7c7c -> #7dffffffffffffff
dece510 apply   #7c00000000000000 -> NaN
dece511 apply   #7d7d7d7d7d7d7d7d -> #7dffffffffffffff
dece512 apply   #7d00000000000000 -> NaN
dece513 apply   #7e7e7e7e7e7e7e7e -> #7fffffffffffffff
dece514 apply   #7e00000000000000 -> sNaN
dece515 apply   #7f7f7f7f7f7f7f7f -> #7fffffffffffffff
dece516 apply   #7f00000000000000 -> sNaN

dece521 apply   #f878787878787878 -> #f800000000000000
dece522 apply   #f800000000000000 -> -Infinity
dece523 apply   #f979797979797979 -> #f800000000000000
dece524 apply   #f900000000000000 -> -Infinity
dece525 apply   #fa7a7a7a7a7a7a7a -> #f800000000000000
dece526 apply   #fa00000000000000 -> -Infinity
dece527 apply   #fb7b7b7b7b7b7b7b -> #f800000000000000
dece528 apply   #fb00000000000000 -> -Infinity
dece529 apply   #fc7c7c7c7c7c7c7c -> #7dffffffffffffff
dece530 apply   #fc00000000000000 -> NaN
dece531 apply   #fd7d7d7d7d7d7d7d -> #7dffffffffffffff
dece532 apply   #fd00000000000000 -> NaN
dece533 apply   #fe7e7e7e7e7e7e7e -> #7fffffffffffffff
dece534 apply   #fe00000000000000 -> sNaN
dece535 apply   #ff7f7f7f7f7f7f7f -> #7fffffffffffffff
dece536 apply   #ff00000000000000 -> sNaN

-- fold-down full sequence
dece601 apply   1E+384                  -> #47fc000000000000 Clamped
dece602 apply   #47fc000000000000       -> 1.000000000000000E+384
dece603 apply   1E+383                  -> #43fc800000000000 Clamped
dece604 apply   #43fc800000000000       -> 1.00000000000000E+383
dece605 apply   1E+382                  -> #43fc100000000000 Clamped
dece606 apply   #43fc100000000000       -> 1.0000000000000E+382
dece607 apply   1E+381                  -> #43fc010000000000 Clamped
dece608 apply   #43fc010000000000       -> 1.000000000000E+381
dece609 apply   1E+380                  -> #43fc002000000000 Clamped
dece610 apply   #43fc002000000000       -> 1.00000000000E+380
dece611 apply   1E+379                  -> #43fc000400000000 Clamped
dece612 apply   #43fc000400000000       -> 1.0000000000E+379
dece613 apply   1E+378                  -> #43fc000040000000 Clamped
dece614 apply   #43fc000040000000       -> 1.000000000E+378
dece615 apply   1E+377                  -> #43fc000008000000 Clamped
dece616 apply   #43fc000008000000       -> 1.00000000E+377
dece617 apply   1E+376                  -> #43fc000001000000 Clamped
dece618 apply   #43fc000001000000       -> 1.0000000E+376
dece619 apply   1E+375                  -> #43fc000000100000 Clamped
dece620 apply   #43fc000000100000       -> 1.000000E+375
dece621 apply   1E+374                  -> #43fc000000020000 Clamped
dece622 apply   #43fc000000020000       -> 1.00000E+374
dece623 apply   1E+373                  -> #43fc000000004000 Clamped
dece624 apply   #43fc000000004000       -> 1.0000E+373
dece625 apply   1E+372                  -> #43fc000000000400 Clamped
dece626 apply   #43fc000000000400       -> 1.000E+372
dece627 apply   1E+371                  -> #43fc000000000080 Clamped
dece628 apply   #43fc000000000080       -> 1.00E+371
dece629 apply   1E+370                  -> #43fc000000000010 Clamped
dece630 apply   #43fc000000000010       -> 1.0E+370
dece631 apply   1E+369                  -> #43fc000000000001
dece632 apply   #43fc000000000001       -> 1E+369
dece633 apply   1E+368                  -> #43f8000000000001
dece634 apply   #43f8000000000001       -> 1E+368
-- same with 9s
dece641 apply   9E+384                  -> #77fc000000000000 Clamped
dece642 apply   #77fc000000000000       -> 9.000000000000000E+384
dece643 apply   9E+383                  -> #43fc8c0000000000 Clamped
dece644 apply   #43fc8c0000000000       -> 9.00000000000000E+383
dece645 apply   9E+382                  -> #43fc1a0000000000 Clamped
dece646 apply   #43fc1a0000000000       -> 9.0000000000000E+382
dece647 apply   9E+381                  -> #43fc090000000000 Clamped
dece648 apply   #43fc090000000000       -> 9.000000000000E+381
dece649 apply   9E+380                  -> #43fc002300000000 Clamped
dece650 apply   #43fc002300000000       -> 9.00000000000E+380
dece651 apply   9E+379                  -> #43fc000680000000 Clamped
dece652 apply   #43fc000680000000       -> 9.0000000000E+379
dece653 apply   9E+378                  -> #43fc000240000000 Clamped
dece654 apply   #43fc000240000000       -> 9.000000000E+378
dece655 apply   9E+377                  -> #43fc000008c00000 Clamped
dece656 apply   #43fc000008c00000       -> 9.00000000E+377
dece657 apply   9E+376                  -> #43fc000001a00000 Clamped
dece658 apply   #43fc000001a00000       -> 9.0000000E+376
dece659 apply   9E+375                  -> #43fc000000900000 Clamped
dece660 apply   #43fc000000900000       -> 9.000000E+375
dece661 apply   9E+374                  -> #43fc000000023000 Clamped
dece662 apply   #43fc000000023000       -> 9.00000E+374
dece663 apply   9E+373                  -> #43fc000000006800 Clamped
dece664 apply   #43fc000000006800       -> 9.0000E+373
dece665 apply   9E+372                  -> #43fc000000002400 Clamped
dece666 apply   #43fc000000002400       -> 9.000E+372
dece667 apply   9E+371                  -> #43fc00000000008c Clamped
dece668 apply   #43fc00000000008c       -> 9.00E+371
dece669 apply   9E+370                  -> #43fc00000000001a Clamped
dece670 apply   #43fc00000000001a       -> 9.0E+370
dece671 apply   9E+369                  -> #43fc000000000009
dece672 apply   #43fc000000000009       -> 9E+369
dece673 apply   9E+368                  -> #43f8000000000009
dece674 apply   #43f8000000000009       -> 9E+368


-- Selected DPD codes
dece700 apply   #2238000000000000       -> 0
dece701 apply   #2238000000000009       -> 9
dece702 apply   #2238000000000010       -> 10
dece703 apply   #2238000000000019       -> 19
dece704 apply   #2238000000000020       -> 20
dece705 apply   #2238000000000029       -> 29
dece706 apply   #2238000000000030       -> 30
dece707 apply   #2238000000000039       -> 39
dece708 apply   #2238000000000040       -> 40
dece709 apply   #2238000000000049       -> 49
dece710 apply   #2238000000000050       -> 50
dece711 apply   #2238000000000059       -> 59
dece712 apply   #2238000000000060       -> 60
dece713 apply   #2238000000000069       -> 69
dece714 apply   #2238000000000070       -> 70
dece715 apply   #2238000000000071       -> 71
dece716 apply   #2238000000000072       -> 72
dece717 apply   #2238000000000073       -> 73
dece718 apply   #2238000000000074       -> 74
dece719 apply   #2238000000000075       -> 75
dece720 apply   #2238000000000076       -> 76
dece721 apply   #2238000000000077       -> 77
dece722 apply   #2238000000000078       -> 78
dece723 apply   #2238000000000079       -> 79

dece730 apply   #223800000000029e       -> 994
dece731 apply   #223800000000029f       -> 995
dece732 apply   #22380000000002a0       -> 520
dece733 apply   #22380000000002a1       -> 521

-- DPD: one of each of the huffman groups
dece740 apply   #22380000000003f7       -> 777
dece741 apply   #22380000000003f8       -> 778
dece742 apply   #22380000000003eb       -> 787
dece743 apply   #223800000000037d       -> 877
dece744 apply   #223800000000039f       -> 997
dece745 apply   #22380000000003bf       -> 979
dece746 apply   #22380000000003df       -> 799
dece747 apply   #223800000000006e       -> 888


-- DPD all-highs cases (includes the 24 redundant codes)
dece750 apply   #223800000000006e       -> 888
dece751 apply   #223800000000016e       -> 888
dece752 apply   #223800000000026e       -> 888
dece753 apply   #223800000000036e       -> 888
dece754 apply   #223800000000006f       -> 889
dece755 apply   #223800000000016f       -> 889
dece756 apply   #223800000000026f       -> 889
dece757 apply   #223800000000036f       -> 889

dece760 apply   #223800000000007e       -> 898
dece761 apply   #223800000000017e       -> 898
dece762 apply   #223800000000027e       -> 898
dece763 apply   #223800000000037e       -> 898
dece764 apply   #223800000000007f       -> 899
dece765 apply   #223800000000017f       -> 899
dece766 apply   #223800000000027f       -> 899
dece767 apply   #223800000000037f       -> 899

dece770 apply   #22380000000000ee       -> 988
dece771 apply   #22380000000001ee       -> 988
dece772 apply   #22380000000002ee       -> 988
dece773 apply   #22380000000003ee       -> 988
dece774 apply   #22380000000000ef       -> 989
dece775 apply   #22380000000001ef       -> 989
dece776 apply   #22380000000002ef       -> 989
dece777 apply   #22380000000003ef       -> 989

dece780 apply   #22380000000000fe       -> 998
dece781 apply   #22380000000001fe       -> 998
dece782 apply   #22380000000002fe       -> 998
dece783 apply   #22380000000003fe       -> 998
dece784 apply   #22380000000000ff       -> 999
dece785 apply   #22380000000001ff       -> 999
dece786 apply   #22380000000002ff       -> 999
dece787 apply   #22380000000003ff       -> 999


--- NEW FILE: compare.decTest ---
------------------------------------------------------------------------
-- compare.decTest -- decimal comparison                              --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- Note that we cannot assume add/subtract tests cover paths adequately,
-- here, because the code might be quite different (comparison cannot
-- overflow or underflow, so actual subtractions are not necesary).

extended: 1

precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999

-- sanity checks
comx001 compare  -2  -2  -> 0
comx002 compare  -2  -1  -> -1
comx003 compare  -2   0  -> -1
comx004 compare  -2   1  -> -1
comx005 compare  -2   2  -> -1
comx006 compare  -1  -2  -> 1
comx007 compare  -1  -1  -> 0
comx008 compare  -1   0  -> -1
comx009 compare  -1   1  -> -1
comx010 compare  -1   2  -> -1
comx011 compare   0  -2  -> 1
comx012 compare   0  -1  -> 1
comx013 compare   0   0  -> 0
comx014 compare   0   1  -> -1
comx015 compare   0   2  -> -1
comx016 compare   1  -2  -> 1
comx017 compare   1  -1  -> 1
comx018 compare   1   0  -> 1
comx019 compare   1   1  -> 0
comx020 compare   1   2  -> -1
comx021 compare   2  -2  -> 1
comx022 compare   2  -1  -> 1
comx023 compare   2   0  -> 1
comx025 compare   2   1  -> 1
comx026 compare   2   2  -> 0

comx031 compare  -20  -20  -> 0
comx032 compare  -20  -10  -> -1
comx033 compare  -20   00  -> -1
comx034 compare  -20   10  -> -1
comx035 compare  -20   20  -> -1
comx036 compare  -10  -20  -> 1
comx037 compare  -10  -10  -> 0
comx038 compare  -10   00  -> -1
comx039 compare  -10   10  -> -1
comx040 compare  -10   20  -> -1
comx041 compare   00  -20  -> 1
comx042 compare   00  -10  -> 1
comx043 compare   00   00  -> 0
comx044 compare   00   10  -> -1
comx045 compare   00   20  -> -1
comx046 compare   10  -20  -> 1
comx047 compare   10  -10  -> 1
comx048 compare   10   00  -> 1
comx049 compare   10   10  -> 0
comx050 compare   10   20  -> -1
comx051 compare   20  -20  -> 1
comx052 compare   20  -10  -> 1
comx053 compare   20   00  -> 1
comx055 compare   20   10  -> 1
comx056 compare   20   20  -> 0

comx061 compare  -2.0  -2.0  -> 0
comx062 compare  -2.0  -1.0  -> -1
comx063 compare  -2.0   0.0  -> -1
comx064 compare  -2.0   1.0  -> -1
comx065 compare  -2.0   2.0  -> -1
comx066 compare  -1.0  -2.0  -> 1
comx067 compare  -1.0  -1.0  -> 0
comx068 compare  -1.0   0.0  -> -1
comx069 compare  -1.0   1.0  -> -1
comx070 compare  -1.0   2.0  -> -1
comx071 compare   0.0  -2.0  -> 1
comx072 compare   0.0  -1.0  -> 1
comx073 compare   0.0   0.0  -> 0
comx074 compare   0.0   1.0  -> -1
comx075 compare   0.0   2.0  -> -1
comx076 compare   1.0  -2.0  -> 1
comx077 compare   1.0  -1.0  -> 1
comx078 compare   1.0   0.0  -> 1
comx079 compare   1.0   1.0  -> 0
comx080 compare   1.0   2.0  -> -1
comx081 compare   2.0  -2.0  -> 1
comx082 compare   2.0  -1.0  -> 1
comx083 compare   2.0   0.0  -> 1
comx085 compare   2.0   1.0  -> 1
comx086 compare   2.0   2.0  -> 0

-- now some cases which might overflow if subtract were used
maxexponent: 999999999
minexponent: -999999999
comx090 compare  9.99999999E+999999999 9.99999999E+999999999  -> 0
comx091 compare -9.99999999E+999999999 9.99999999E+999999999  -> -1
comx092 compare  9.99999999E+999999999 -9.99999999E+999999999 -> 1
comx093 compare -9.99999999E+999999999 -9.99999999E+999999999 -> 0

-- some differing length/exponent cases
comx100 compare   7.0    7.0    -> 0
comx101 compare   7.0    7      -> 0
comx102 compare   7      7.0    -> 0
comx103 compare   7E+0   7.0    -> 0
comx104 compare   70E-1  7.0    -> 0
comx105 compare   0.7E+1 7      -> 0
comx106 compare   70E-1  7      -> 0
comx107 compare   7.0    7E+0   -> 0
comx108 compare   7.0    70E-1  -> 0
comx109 compare   7      0.7E+1 -> 0
comx110 compare   7      70E-1  -> 0

comx120 compare   8.0    7.0    -> 1
comx121 compare   8.0    7      -> 1
comx122 compare   8      7.0    -> 1
comx123 compare   8E+0   7.0    -> 1
comx124 compare   80E-1  7.0    -> 1
comx125 compare   0.8E+1 7      -> 1
comx126 compare   80E-1  7      -> 1
comx127 compare   8.0    7E+0   -> 1
comx128 compare   8.0    70E-1  -> 1
comx129 compare   8      0.7E+1  -> 1
comx130 compare   8      70E-1  -> 1

comx140 compare   8.0    9.0    -> -1
comx141 compare   8.0    9      -> -1
comx142 compare   8      9.0    -> -1
comx143 compare   8E+0   9.0    -> -1
comx144 compare   80E-1  9.0    -> -1
comx145 compare   0.8E+1 9      -> -1
comx146 compare   80E-1  9      -> -1
comx147 compare   8.0    9E+0   -> -1
comx148 compare   8.0    90E-1  -> -1
comx149 compare   8      0.9E+1 -> -1
comx150 compare   8      90E-1  -> -1

-- and again, with sign changes -+ ..
comx200 compare  -7.0    7.0    -> -1
comx201 compare  -7.0    7      -> -1
comx202 compare  -7      7.0    -> -1
comx203 compare  -7E+0   7.0    -> -1
comx204 compare  -70E-1  7.0    -> -1
comx205 compare  -0.7E+1 7      -> -1
comx206 compare  -70E-1  7      -> -1
comx207 compare  -7.0    7E+0   -> -1
comx208 compare  -7.0    70E-1  -> -1
comx209 compare  -7      0.7E+1 -> -1
comx210 compare  -7      70E-1  -> -1

comx220 compare  -8.0    7.0    -> -1
comx221 compare  -8.0    7      -> -1
comx222 compare  -8      7.0    -> -1
comx223 compare  -8E+0   7.0    -> -1
comx224 compare  -80E-1  7.0    -> -1
comx225 compare  -0.8E+1 7      -> -1
comx226 compare  -80E-1  7      -> -1
comx227 compare  -8.0    7E+0   -> -1
comx228 compare  -8.0    70E-1  -> -1
comx229 compare  -8      0.7E+1 -> -1
comx230 compare  -8      70E-1  -> -1

comx240 compare  -8.0    9.0    -> -1
comx241 compare  -8.0    9      -> -1
comx242 compare  -8      9.0    -> -1
comx243 compare  -8E+0   9.0    -> -1
comx244 compare  -80E-1  9.0    -> -1
comx245 compare  -0.8E+1 9      -> -1
comx246 compare  -80E-1  9      -> -1
comx247 compare  -8.0    9E+0   -> -1
comx248 compare  -8.0    90E-1  -> -1
comx249 compare  -8      0.9E+1 -> -1
comx250 compare  -8      90E-1  -> -1

-- and again, with sign changes +- ..
comx300 compare   7.0    -7.0    -> 1
comx301 compare   7.0    -7      -> 1
comx302 compare   7      -7.0    -> 1
comx303 compare   7E+0   -7.0    -> 1
comx304 compare   70E-1  -7.0    -> 1
comx305 compare   .7E+1  -7      -> 1
comx306 compare   70E-1  -7      -> 1
comx307 compare   7.0    -7E+0   -> 1
comx308 compare   7.0    -70E-1  -> 1
comx309 compare   7      -.7E+1  -> 1
comx310 compare   7      -70E-1  -> 1

comx320 compare   8.0    -7.0    -> 1
comx321 compare   8.0    -7      -> 1
comx322 compare   8      -7.0    -> 1
comx323 compare   8E+0   -7.0    -> 1
comx324 compare   80E-1  -7.0    -> 1
comx325 compare   .8E+1  -7      -> 1
comx326 compare   80E-1  -7      -> 1
comx327 compare   8.0    -7E+0   -> 1
comx328 compare   8.0    -70E-1  -> 1
comx329 compare   8      -.7E+1  -> 1
comx330 compare   8      -70E-1  -> 1

comx340 compare   8.0    -9.0    -> 1
comx341 compare   8.0    -9      -> 1
comx342 compare   8      -9.0    -> 1
comx343 compare   8E+0   -9.0    -> 1
comx344 compare   80E-1  -9.0    -> 1
comx345 compare   .8E+1  -9      -> 1
comx346 compare   80E-1  -9      -> 1
comx347 compare   8.0    -9E+0   -> 1
comx348 compare   8.0    -90E-1  -> 1
comx349 compare   8      -.9E+1  -> 1
comx350 compare   8      -90E-1  -> 1

-- and again, with sign changes -- ..
comx400 compare   -7.0    -7.0    -> 0
comx401 compare   -7.0    -7      -> 0
comx402 compare   -7      -7.0    -> 0
comx403 compare   -7E+0   -7.0    -> 0
comx404 compare   -70E-1  -7.0    -> 0
comx405 compare   -.7E+1  -7      -> 0
comx406 compare   -70E-1  -7      -> 0
comx407 compare   -7.0    -7E+0   -> 0
comx408 compare   -7.0    -70E-1  -> 0
comx409 compare   -7      -.7E+1  -> 0
comx410 compare   -7      -70E-1  -> 0

comx420 compare   -8.0    -7.0    -> -1
comx421 compare   -8.0    -7      -> -1
comx422 compare   -8      -7.0    -> -1
comx423 compare   -8E+0   -7.0    -> -1
comx424 compare   -80E-1  -7.0    -> -1
comx425 compare   -.8E+1  -7      -> -1
comx426 compare   -80E-1  -7      -> -1
comx427 compare   -8.0    -7E+0   -> -1
comx428 compare   -8.0    -70E-1  -> -1
comx429 compare   -8      -.7E+1  -> -1
comx430 compare   -8      -70E-1  -> -1

comx440 compare   -8.0    -9.0    -> 1
comx441 compare   -8.0    -9      -> 1
comx442 compare   -8      -9.0    -> 1
comx443 compare   -8E+0   -9.0    -> 1
comx444 compare   -80E-1  -9.0    -> 1
comx445 compare   -.8E+1  -9      -> 1
comx446 compare   -80E-1  -9      -> 1
comx447 compare   -8.0    -9E+0   -> 1
comx448 compare   -8.0    -90E-1  -> 1
comx449 compare   -8      -.9E+1  -> 1
comx450 compare   -8      -90E-1  -> 1


-- testcases that subtract to lots of zeros at boundaries [pgr]
precision: 40
comx470 compare 123.4560000000000000E789 123.456E789 -> 0
comx471 compare 123.456000000000000E-89 123.456E-89 -> 0
comx472 compare 123.45600000000000E789 123.456E789 -> 0
comx473 compare 123.4560000000000E-89 123.456E-89 -> 0
comx474 compare 123.456000000000E789 123.456E789 -> 0
comx475 compare 123.45600000000E-89 123.456E-89 -> 0
comx476 compare 123.4560000000E789 123.456E789 -> 0
comx477 compare 123.456000000E-89 123.456E-89 -> 0
comx478 compare 123.45600000E789 123.456E789 -> 0
comx479 compare 123.4560000E-89 123.456E-89 -> 0
comx480 compare 123.456000E789 123.456E789 -> 0
comx481 compare 123.45600E-89 123.456E-89 -> 0
comx482 compare 123.4560E789 123.456E789 -> 0
comx483 compare 123.456E-89 123.456E-89 -> 0
comx484 compare 123.456E-89 123.4560000000000000E-89 -> 0
comx485 compare 123.456E789 123.456000000000000E789 -> 0
comx486 compare 123.456E-89 123.45600000000000E-89 -> 0
comx487 compare 123.456E789 123.4560000000000E789 -> 0
comx488 compare 123.456E-89 123.456000000000E-89 -> 0
comx489 compare 123.456E789 123.45600000000E789 -> 0
comx490 compare 123.456E-89 123.4560000000E-89 -> 0
comx491 compare 123.456E789 123.456000000E789 -> 0
comx492 compare 123.456E-89 123.45600000E-89 -> 0
comx493 compare 123.456E789 123.4560000E789 -> 0
comx494 compare 123.456E-89 123.456000E-89 -> 0
comx495 compare 123.456E789 123.45600E789 -> 0
comx496 compare 123.456E-89 123.4560E-89 -> 0
comx497 compare 123.456E789 123.456E789 -> 0

-- wide-ranging, around precision; signs equal
precision: 9
comx500 compare    1     1E-15    -> 1
comx501 compare    1     1E-14    -> 1
comx502 compare    1     1E-13    -> 1
comx503 compare    1     1E-12    -> 1
comx504 compare    1     1E-11    -> 1
comx505 compare    1     1E-10    -> 1
comx506 compare    1     1E-9     -> 1
comx507 compare    1     1E-8     -> 1
comx508 compare    1     1E-7     -> 1
comx509 compare    1     1E-6     -> 1
comx510 compare    1     1E-5     -> 1
comx511 compare    1     1E-4     -> 1
comx512 compare    1     1E-3     -> 1
comx513 compare    1     1E-2     -> 1
comx514 compare    1     1E-1     -> 1
comx515 compare    1     1E-0     -> 0
comx516 compare    1     1E+1     -> -1
comx517 compare    1     1E+2     -> -1
comx518 compare    1     1E+3     -> -1
comx519 compare    1     1E+4     -> -1
comx521 compare    1     1E+5     -> -1
comx522 compare    1     1E+6     -> -1
comx523 compare    1     1E+7     -> -1
comx524 compare    1     1E+8     -> -1
comx525 compare    1     1E+9     -> -1
comx526 compare    1     1E+10    -> -1
comx527 compare    1     1E+11    -> -1
comx528 compare    1     1E+12    -> -1
comx529 compare    1     1E+13    -> -1
comx530 compare    1     1E+14    -> -1
comx531 compare    1     1E+15    -> -1
-- LR swap
comx540 compare    1E-15  1       -> -1
comx541 compare    1E-14  1       -> -1
comx542 compare    1E-13  1       -> -1
comx543 compare    1E-12  1       -> -1
comx544 compare    1E-11  1       -> -1
comx545 compare    1E-10  1       -> -1
comx546 compare    1E-9   1       -> -1
comx547 compare    1E-8   1       -> -1
comx548 compare    1E-7   1       -> -1
comx549 compare    1E-6   1       -> -1
comx550 compare    1E-5   1       -> -1
comx551 compare    1E-4   1       -> -1
comx552 compare    1E-3   1       -> -1
comx553 compare    1E-2   1       -> -1
comx554 compare    1E-1   1       -> -1
comx555 compare    1E-0   1       ->  0
comx556 compare    1E+1   1       ->  1
comx557 compare    1E+2   1       ->  1
comx558 compare    1E+3   1       ->  1
comx559 compare    1E+4   1       ->  1
comx561 compare    1E+5   1       ->  1
comx562 compare    1E+6   1       ->  1
comx563 compare    1E+7   1       ->  1
comx564 compare    1E+8   1       ->  1
comx565 compare    1E+9   1       ->  1
comx566 compare    1E+10  1       ->  1
comx567 compare    1E+11  1       ->  1
comx568 compare    1E+12  1       ->  1
comx569 compare    1E+13  1       ->  1
comx570 compare    1E+14  1       ->  1
comx571 compare    1E+15  1       ->  1
-- similar with an useful coefficient, one side only
comx580 compare  0.000000987654321     1E-15    -> 1
comx581 compare  0.000000987654321     1E-14    -> 1
comx582 compare  0.000000987654321     1E-13    -> 1
comx583 compare  0.000000987654321     1E-12    -> 1
comx584 compare  0.000000987654321     1E-11    -> 1
comx585 compare  0.000000987654321     1E-10    -> 1
comx586 compare  0.000000987654321     1E-9     -> 1
comx587 compare  0.000000987654321     1E-8     -> 1
comx588 compare  0.000000987654321     1E-7     -> 1
comx589 compare  0.000000987654321     1E-6     -> -1
comx590 compare  0.000000987654321     1E-5     -> -1
comx591 compare  0.000000987654321     1E-4     -> -1
comx592 compare  0.000000987654321     1E-3     -> -1
comx593 compare  0.000000987654321     1E-2     -> -1
comx594 compare  0.000000987654321     1E-1     -> -1
comx595 compare  0.000000987654321     1E-0     -> -1
comx596 compare  0.000000987654321     1E+1     -> -1
comx597 compare  0.000000987654321     1E+2     -> -1
comx598 compare  0.000000987654321     1E+3     -> -1
comx599 compare  0.000000987654321     1E+4     -> -1

-- check some unit-y traps
precision: 20
comx600 compare   12            12.2345 -> -1
comx601 compare   12.0          12.2345 -> -1
comx602 compare   12.00         12.2345 -> -1
comx603 compare   12.000        12.2345 -> -1
comx604 compare   12.0000       12.2345 -> -1
comx605 compare   12.00000      12.2345 -> -1
comx606 compare   12.000000     12.2345 -> -1
comx607 compare   12.0000000    12.2345 -> -1
comx608 compare   12.00000000   12.2345 -> -1
comx609 compare   12.000000000  12.2345 -> -1
comx610 compare   12.1234 12            ->  1
comx611 compare   12.1234 12.0          ->  1
comx612 compare   12.1234 12.00         ->  1
comx613 compare   12.1234 12.000        ->  1
comx614 compare   12.1234 12.0000       ->  1
comx615 compare   12.1234 12.00000      ->  1
comx616 compare   12.1234 12.000000     ->  1
comx617 compare   12.1234 12.0000000    ->  1
comx618 compare   12.1234 12.00000000   ->  1
comx619 compare   12.1234 12.000000000  ->  1
comx620 compare  -12           -12.2345 ->  1
comx621 compare  -12.0         -12.2345 ->  1
comx622 compare  -12.00        -12.2345 ->  1
comx623 compare  -12.000       -12.2345 ->  1
comx624 compare  -12.0000      -12.2345 ->  1
comx625 compare  -12.00000     -12.2345 ->  1
comx626 compare  -12.000000    -12.2345 ->  1
comx627 compare  -12.0000000   -12.2345 ->  1
comx628 compare  -12.00000000  -12.2345 ->  1
comx629 compare  -12.000000000 -12.2345 ->  1
comx630 compare  -12.1234 -12           -> -1
comx631 compare  -12.1234 -12.0         -> -1
comx632 compare  -12.1234 -12.00        -> -1
comx633 compare  -12.1234 -12.000       -> -1
comx634 compare  -12.1234 -12.0000      -> -1
comx635 compare  -12.1234 -12.00000     -> -1
comx636 compare  -12.1234 -12.000000    -> -1
comx637 compare  -12.1234 -12.0000000   -> -1
comx638 compare  -12.1234 -12.00000000  -> -1
comx639 compare  -12.1234 -12.000000000 -> -1
precision: 9

-- extended zeros
comx640 compare   0     0   -> 0
comx641 compare   0    -0   -> 0
comx642 compare   0    -0.0 -> 0
comx643 compare   0     0.0 -> 0
comx644 compare  -0     0   -> 0
comx645 compare  -0    -0   -> 0
comx646 compare  -0    -0.0 -> 0
comx647 compare  -0     0.0 -> 0
comx648 compare   0.0   0   -> 0
comx649 compare   0.0  -0   -> 0
comx650 compare   0.0  -0.0 -> 0
comx651 compare   0.0   0.0 -> 0
comx652 compare  -0.0   0   -> 0
comx653 compare  -0.0  -0   -> 0
comx654 compare  -0.0  -0.0 -> 0
comx655 compare  -0.0   0.0 -> 0

comx656 compare  -0E1   0.0 -> 0
comx657 compare  -0E2   0.0 -> 0
comx658 compare   0E1   0.0 -> 0
comx659 compare   0E2   0.0 -> 0
comx660 compare  -0E1   0   -> 0
comx661 compare  -0E2   0   -> 0
comx662 compare   0E1   0   -> 0
comx663 compare   0E2   0   -> 0
comx664 compare  -0E1  -0E1 -> 0
comx665 compare  -0E2  -0E1 -> 0
comx666 compare   0E1  -0E1 -> 0
comx667 compare   0E2  -0E1 -> 0
comx668 compare  -0E1  -0E2 -> 0
comx669 compare  -0E2  -0E2 -> 0
comx670 compare   0E1  -0E2 -> 0
comx671 compare   0E2  -0E2 -> 0
comx672 compare  -0E1   0E1 -> 0
comx673 compare  -0E2   0E1 -> 0
comx674 compare   0E1   0E1 -> 0
comx675 compare   0E2   0E1 -> 0
comx676 compare  -0E1   0E2 -> 0
comx677 compare  -0E2   0E2 -> 0
comx678 compare   0E1   0E2 -> 0
comx679 compare   0E2   0E2 -> 0

-- trailing zeros; unit-y
precision: 20
comx680 compare   12    12           -> 0
comx681 compare   12    12.0         -> 0
comx682 compare   12    12.00        -> 0
comx683 compare   12    12.000       -> 0
comx684 compare   12    12.0000      -> 0
comx685 compare   12    12.00000     -> 0
comx686 compare   12    12.000000    -> 0
comx687 compare   12    12.0000000   -> 0
comx688 compare   12    12.00000000  -> 0
comx689 compare   12    12.000000000 -> 0
comx690 compare   12              12 -> 0
comx691 compare   12.0            12 -> 0
comx692 compare   12.00           12 -> 0
comx693 compare   12.000          12 -> 0
comx694 compare   12.0000         12 -> 0
comx695 compare   12.00000        12 -> 0
comx696 compare   12.000000       12 -> 0
comx697 compare   12.0000000      12 -> 0
comx698 compare   12.00000000     12 -> 0
comx699 compare   12.000000000    12 -> 0

-- long operand checks
maxexponent: 999
minexponent: -999
precision: 9
comx701 compare 12345678000  1 ->  1
comx702 compare 1 12345678000  -> -1
comx703 compare 1234567800   1 ->  1
comx704 compare 1 1234567800   -> -1
comx705 compare 1234567890   1 ->  1
comx706 compare 1 1234567890   -> -1
comx707 compare 1234567891   1 ->  1
comx708 compare 1 1234567891   -> -1
comx709 compare 12345678901  1 ->  1
comx710 compare 1 12345678901  -> -1
comx711 compare 1234567896   1 ->  1
comx712 compare 1 1234567896   -> -1
comx713 compare -1234567891  1 -> -1
comx714 compare 1 -1234567891  ->  1
comx715 compare -12345678901 1 -> -1
comx716 compare 1 -12345678901 ->  1
comx717 compare -1234567896  1 -> -1
comx718 compare 1 -1234567896  ->  1

precision: 15
-- same with plenty of precision
comx721 compare 12345678000 1 -> 1
comx722 compare 1 12345678000 -> -1
comx723 compare 1234567800  1 -> 1
comx724 compare 1 1234567800  -> -1
comx725 compare 1234567890  1 -> 1
comx726 compare 1 1234567890  -> -1
comx727 compare 1234567891  1 -> 1
comx728 compare 1 1234567891  -> -1
comx729 compare 12345678901 1 -> 1
comx730 compare 1 12345678901 -> -1
comx731 compare 1234567896  1 -> 1
comx732 compare 1 1234567896  -> -1

-- residue cases
precision: 5
comx740 compare  1  0.9999999  -> 1
comx741 compare  1  0.999999   -> 1
comx742 compare  1  0.99999    -> 1
comx743 compare  1  1.0000     -> 0
comx744 compare  1  1.00001    -> -1
comx745 compare  1  1.000001   -> -1
comx746 compare  1  1.0000001  -> -1
comx750 compare  0.9999999  1  -> -1
comx751 compare  0.999999   1  -> -1
comx752 compare  0.99999    1  -> -1
comx753 compare  1.0000     1  -> 0
comx754 compare  1.00001    1  -> 1
comx755 compare  1.000001   1  -> 1
comx756 compare  1.0000001  1  -> 1

-- a selection of longies
comx760 compare -36852134.84194296250843579428931 -5830629.8347085025808756560357940 -> -1
comx761 compare -36852134.84194296250843579428931 -36852134.84194296250843579428931  -> 0
comx762 compare -36852134.94194296250843579428931 -36852134.84194296250843579428931  -> -1
comx763 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
-- precisions above or below the difference should have no effect
precision:   11
comx764 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:   10
comx765 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    9
comx766 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    8
comx767 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    7
comx768 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    6
comx769 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    5
comx770 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    4
comx771 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    3
comx772 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    2
comx773 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1
precision:    1
comx774 compare -36852134.84194296250843579428931 -36852134.94194296250843579428931  -> 1

-- Specials
precision:   9
comx780 compare  Inf  -Inf   ->  1
comx781 compare  Inf  -1000  ->  1
comx782 compare  Inf  -1     ->  1
comx783 compare  Inf  -0     ->  1
comx784 compare  Inf   0     ->  1
comx785 compare  Inf   1     ->  1
comx786 compare  Inf   1000  ->  1
comx787 compare  Inf   Inf   ->  0
comx788 compare -1000  Inf   -> -1
comx789 compare -Inf   Inf   -> -1
comx790 compare -1     Inf   -> -1
comx791 compare -0     Inf   -> -1
comx792 compare  0     Inf   -> -1
comx793 compare  1     Inf   -> -1
comx794 compare  1000  Inf   -> -1
comx795 compare  Inf   Inf   ->  0

comx800 compare -Inf  -Inf   ->  0
comx801 compare -Inf  -1000  -> -1
comx802 compare -Inf  -1     -> -1
comx803 compare -Inf  -0     -> -1
comx804 compare -Inf   0     -> -1
comx805 compare -Inf   1     -> -1
comx806 compare -Inf   1000  -> -1
comx807 compare -Inf   Inf   -> -1
comx808 compare -Inf  -Inf   ->  0
comx809 compare -1000 -Inf   ->  1
comx810 compare -1    -Inf   ->  1
comx811 compare -0    -Inf   ->  1
comx812 compare  0    -Inf   ->  1
comx813 compare  1    -Inf   ->  1
comx814 compare  1000 -Inf   ->  1
comx815 compare  Inf  -Inf   ->  1

comx821 compare  NaN -Inf    ->  NaN
comx822 compare  NaN -1000   ->  NaN
comx823 compare  NaN -1      ->  NaN
comx824 compare  NaN -0      ->  NaN
comx825 compare  NaN  0      ->  NaN
comx826 compare  NaN  1      ->  NaN
comx827 compare  NaN  1000   ->  NaN
comx828 compare  NaN  Inf    ->  NaN
comx829 compare  NaN  NaN    ->  NaN
comx830 compare -Inf  NaN    ->  NaN
comx831 compare -1000 NaN    ->  NaN
comx832 compare -1    NaN    ->  NaN
comx833 compare -0    NaN    ->  NaN
comx834 compare  0    NaN    ->  NaN
comx835 compare  1    NaN    ->  NaN
comx836 compare  1000 NaN    ->  NaN
comx837 compare  Inf  NaN    ->  NaN

comx841 compare  sNaN -Inf   ->  NaN  Invalid_operation
comx842 compare  sNaN -1000  ->  NaN  Invalid_operation
comx843 compare  sNaN -1     ->  NaN  Invalid_operation
comx844 compare  sNaN -0     ->  NaN  Invalid_operation
comx845 compare  sNaN  0     ->  NaN  Invalid_operation
comx846 compare  sNaN  1     ->  NaN  Invalid_operation
comx847 compare  sNaN  1000  ->  NaN  Invalid_operation
comx848 compare  sNaN  NaN   ->  NaN  Invalid_operation
comx849 compare  sNaN sNaN   ->  NaN  Invalid_operation
comx850 compare  NaN  sNaN   ->  NaN  Invalid_operation
comx851 compare -Inf  sNaN   ->  NaN  Invalid_operation
comx852 compare -1000 sNaN   ->  NaN  Invalid_operation
comx853 compare -1    sNaN   ->  NaN  Invalid_operation
comx854 compare -0    sNaN   ->  NaN  Invalid_operation
comx855 compare  0    sNaN   ->  NaN  Invalid_operation
comx856 compare  1    sNaN   ->  NaN  Invalid_operation
comx857 compare  1000 sNaN   ->  NaN  Invalid_operation
comx858 compare  Inf  sNaN   ->  NaN  Invalid_operation
comx859 compare  NaN  sNaN   ->  NaN  Invalid_operation

-- overflow and underflow tests .. subnormal results now allowed
maxExponent: 999999999
minexponent: -999999999
comx860 compare +1.23456789012345E-0 9E+999999999 -> -1
comx861 compare 9E+999999999 +1.23456789012345E-0 ->  1
comx862 compare +0.100 9E-999999999               ->  1
comx863 compare 9E-999999999 +0.100               -> -1
comx865 compare -1.23456789012345E-0 9E+999999999 -> -1
comx866 compare 9E+999999999 -1.23456789012345E-0 ->  1
comx867 compare -0.100 9E-999999999               -> -1
comx868 compare 9E-999999999 -0.100               ->  1

comx869 compare 1e-599999999 1e-400000001   -> -1
comx870 compare 1e-599999999 1e-400000000   -> -1
comx871 compare 1e-600000000 1e-400000000   -> -1
comx872 compare 9e-999999998 0.01           -> -1
comx873 compare 9e-999999998 0.1            -> -1
comx874 compare 0.01 9e-999999998           ->  1
comx875 compare 1e599999999 1e400000001     ->  1
comx876 compare 1e599999999 1e400000000     ->  1
comx877 compare 1e600000000 1e400000000     ->  1
comx878 compare 9e999999998 100             ->  1
comx879 compare 9e999999998 10              ->  1
comx880 compare 100  9e999999998            -> -1
-- signs
comx881 compare  1e+777777777  1e+411111111 ->  1
comx882 compare  1e+777777777 -1e+411111111 ->  1
comx883 compare -1e+777777777  1e+411111111 -> -1
comx884 compare -1e+777777777 -1e+411111111 -> -1
comx885 compare  1e-777777777  1e-411111111 -> -1
comx886 compare  1e-777777777 -1e-411111111 ->  1
comx887 compare -1e-777777777  1e-411111111 -> -1
comx888 compare -1e-777777777 -1e-411111111 ->  1

-- Null tests
comx900 compare 10  # -> NaN Invalid_operation
comx901 compare  # 10 -> NaN Invalid_operation

--- NEW FILE: clamp.decTest ---
------------------------------------------------------------------------
-- clamp.decTest -- clamped exponent tests (format-independent)       --
-- Copyright (c) IBM Corporation, 2000, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of tests uses the same limits as the 8-byte concrete
-- representation, but applies clamping without using format-specific
-- conversions.

extended:    1
precision:   16
rounding:    half_even
maxExponent: 384
minExponent: -383
clamp:       1

-- General testcases

-- Normality
clam010 apply   1234567890123456   ->  1234567890123456
clam011 apply   1234567890123456.0 ->  1234567890123456 Rounded
clam012 apply   1234567890123456.1 ->  1234567890123456 Rounded Inexact
clam013 apply  -1234567890123456   -> -1234567890123456
clam014 apply  -1234567890123456.0 -> -1234567890123456 Rounded
clam015 apply  -1234567890123456.1 -> -1234567890123456 Rounded Inexact


-- Nmax and similar
clam022 apply   9.999999999999999E+384  -> 9.999999999999999E+384
clam024 apply   1.234567890123456E+384  -> 1.234567890123456E+384
-- fold-downs (more below)
clam030 apply   1.23E+384               -> 1.230000000000000E+384 Clamped
clam032 apply   1E+384                  -> 1.000000000000000E+384 Clamped

clam051 apply   12345                   -> 12345
clam053 apply   1234                    -> 1234
clam055 apply   123                     -> 123
clam057 apply   12                      -> 12
clam059 apply   1                       -> 1
clam061 apply   1.23                    -> 1.23
clam063 apply   123.45                  -> 123.45

-- Nmin and below
clam071 apply   1E-383                  -> 1E-383
clam073 apply   1.000000000000000E-383  -> 1.000000000000000E-383
clam075 apply   1.000000000000001E-383  -> 1.000000000000001E-383

clam077 apply   0.100000000000000E-383  -> 1.00000000000000E-384  Subnormal
clam079 apply   0.000000000000010E-383  -> 1.0E-397               Subnormal
clam081 apply   0.00000000000001E-383   -> 1E-397                 Subnormal
clam083 apply   0.000000000000001E-383  -> 1E-398                 Subnormal

-- underflows
clam090 apply   1e-398                  -> #0000000000000001  Subnormal
clam091 apply   1.9e-398                -> #0000000000000002  Subnormal Underflow Inexact Rounded
clam092 apply   1.1e-398                -> #0000000000000001  Subnormal Underflow Inexact Rounded
clam093 apply   1.00000000001e-398      -> #0000000000000001  Subnormal Underflow Inexact Rounded
clam094 apply   1.00000000000001e-398   -> #0000000000000001  Subnormal Underflow Inexact Rounded
clam095 apply   1.000000000000001e-398  -> #0000000000000001  Subnormal Underflow Inexact Rounded
clam096 apply   0.1e-398                -> #0000000000000000  Subnormal Underflow Inexact Rounded
clam097 apply   0.00000000001e-398      -> #0000000000000000  Subnormal Underflow Inexact Rounded
clam098 apply   0.00000000000001e-398   -> #0000000000000000  Subnormal Underflow Inexact Rounded
clam099 apply   0.000000000000001e-398  -> #0000000000000000  Subnormal Underflow Inexact Rounded

-- Same again, negatives
-- Nmax and similar
clam122 apply  -9.999999999999999E+384  -> -9.999999999999999E+384
clam124 apply  -1.234567890123456E+384  -> -1.234567890123456E+384
-- fold-downs (more below)
clam130 apply  -1.23E+384               -> -1.230000000000000E+384 Clamped
clam132 apply  -1E+384                  -> -1.000000000000000E+384 Clamped

clam151 apply  -12345                   -> -12345
clam153 apply  -1234                    -> -1234
clam155 apply  -123                     -> -123
clam157 apply  -12                      -> -12
clam159 apply  -1                       -> -1
clam161 apply  -1.23                    -> -1.23
clam163 apply  -123.45                  -> -123.45

-- Nmin and below
clam171 apply  -1E-383                  -> -1E-383
clam173 apply  -1.000000000000000E-383  -> -1.000000000000000E-383
clam175 apply  -1.000000000000001E-383  -> -1.000000000000001E-383

clam177 apply  -0.100000000000000E-383  -> -1.00000000000000E-384  Subnormal
clam179 apply  -0.000000000000010E-383  -> -1.0E-397               Subnormal
clam181 apply  -0.00000000000001E-383   -> -1E-397                 Subnormal
clam183 apply  -0.000000000000001E-383  -> -1E-398                 Subnormal

-- underflows
clam189 apply   -1e-398                 -> #8000000000000001  Subnormal
clam190 apply   -1.0e-398               -> #8000000000000001  Subnormal Rounded
clam191 apply   -1.9e-398               -> #8000000000000002  Subnormal Underflow Inexact Rounded
clam192 apply   -1.1e-398               -> #8000000000000001  Subnormal Underflow Inexact Rounded
clam193 apply   -1.00000000001e-398     -> #8000000000000001  Subnormal Underflow Inexact Rounded
clam194 apply   -1.00000000000001e-398  -> #8000000000000001  Subnormal Underflow Inexact Rounded
clam195 apply   -1.000000000000001e-398 -> #8000000000000001  Subnormal Underflow Inexact Rounded
clam196 apply   -0.1e-398               -> #8000000000000000  Subnormal Underflow Inexact Rounded
clam197 apply   -0.00000000001e-398     -> #8000000000000000  Subnormal Underflow Inexact Rounded
clam198 apply   -0.00000000000001e-398  -> #8000000000000000  Subnormal Underflow Inexact Rounded
clam199 apply   -0.000000000000001e-398 -> #8000000000000000  Subnormal Underflow Inexact Rounded

-- zeros
clam401 apply   0E-500                  -> 0E-398  Clamped
clam402 apply   0E-400                  -> 0E-398  Clamped
clam403 apply   0E-398                  -> 0E-398
clam404 apply   0.000000000000000E-383  -> 0E-398
clam405 apply   0E-2                    ->  0.00
clam406 apply   0                       -> 0
clam407 apply   0E+3                    -> 0E+3
clam408 apply   0E+369                  -> 0E+369
-- clamped zeros...
clam410 apply   0E+370                  -> 0E+369 Clamped
clam411 apply   0E+384                  -> 0E+369 Clamped
clam412 apply   0E+400                  -> 0E+369 Clamped
clam413 apply   0E+500                  -> 0E+369 Clamped

-- negative zeros
clam420 apply   -0E-500                 -> -0E-398 Clamped
clam421 apply   -0E-400                 -> -0E-398 Clamped
clam422 apply   -0E-398                 -> -0E-398
clam423 apply   -0.000000000000000E-383 -> -0E-398
clam424 apply   -0E-2                   -> -0.00
clam425 apply   -0                      -> -0
clam426 apply   -0E+3                   -> -0E+3
clam427 apply   -0E+369                 -> -0E+369
-- clamped zeros...
clam431 apply   -0E+370                 -> -0E+369 Clamped
clam432 apply   -0E+384                 -> -0E+369 Clamped
clam433 apply   -0E+400                 -> -0E+369 Clamped
clam434 apply   -0E+500                 -> -0E+369 Clamped

-- fold-down full sequence
clam601 apply   1E+384                  -> 1.000000000000000E+384 Clamped
clam603 apply   1E+383                  -> 1.00000000000000E+383 Clamped
clam605 apply   1E+382                  -> 1.0000000000000E+382 Clamped
clam607 apply   1E+381                  -> 1.000000000000E+381 Clamped
clam609 apply   1E+380                  -> 1.00000000000E+380 Clamped
clam611 apply   1E+379                  -> 1.0000000000E+379 Clamped
clam613 apply   1E+378                  -> 1.000000000E+378 Clamped
clam615 apply   1E+377                  -> 1.00000000E+377 Clamped
clam617 apply   1E+376                  -> 1.0000000E+376 Clamped
clam619 apply   1E+375                  -> 1.000000E+375 Clamped
clam621 apply   1E+374                  -> 1.00000E+374 Clamped
clam623 apply   1E+373                  -> 1.0000E+373 Clamped
clam625 apply   1E+372                  -> 1.000E+372 Clamped
clam627 apply   1E+371                  -> 1.00E+371 Clamped
clam629 apply   1E+370                  -> 1.0E+370 Clamped
clam631 apply   1E+369                  -> 1E+369
clam633 apply   1E+368                  -> 1E+368
-- same with 9s
clam641 apply   9E+384                  -> 9.000000000000000E+384 Clamped
clam643 apply   9E+383                  -> 9.00000000000000E+383 Clamped
clam645 apply   9E+382                  -> 9.0000000000000E+382 Clamped
clam647 apply   9E+381                  -> 9.000000000000E+381 Clamped
clam649 apply   9E+380                  -> 9.00000000000E+380 Clamped
clam651 apply   9E+379                  -> 9.0000000000E+379 Clamped
clam653 apply   9E+378                  -> 9.000000000E+378 Clamped
clam655 apply   9E+377                  -> 9.00000000E+377 Clamped
clam657 apply   9E+376                  -> 9.0000000E+376 Clamped
clam659 apply   9E+375                  -> 9.000000E+375 Clamped
clam661 apply   9E+374                  -> 9.00000E+374 Clamped
clam663 apply   9E+373                  -> 9.0000E+373 Clamped
clam665 apply   9E+372                  -> 9.000E+372 Clamped
clam667 apply   9E+371                  -> 9.00E+371 Clamped
clam669 apply   9E+370                  -> 9.0E+370 Clamped
clam671 apply   9E+369                  -> 9E+369
clam673 apply   9E+368                  -> 9E+368

-- example from documentation
precision:   7
rounding:    half_even
maxExponent: +96
minExponent: -95

clamp:       0
clam700 apply   1.23E+96                -> 1.23E+96

clamp:       1
clam701 apply   1.23E+96                -> 1.230000E+96 Clamped

--- NEW FILE: base.decTest ---
------------------------------------------------------------------------
-- base.decTest -- base decimal <--> string conversions               --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
[...1173 lines suppressed...]
basx1001 toSci  1e999999999 -> 1E+999999999
basx1002 toSci  1e0999999999 -> 1E+999999999
basx1003 toSci  1e00999999999 -> 1E+999999999
basx1004 toSci  1e000999999999 -> 1E+999999999
basx1005 toSci  1e000000000000999999999 -> 1E+999999999
basx1006 toSci  1e000000000001000000007 -> Infinity Overflow Inexact Rounded
basx1007 toSci  1e-999999999 -> 1E-999999999
basx1008 toSci  1e-0999999999 -> 1E-999999999
basx1009 toSci  1e-00999999999 -> 1E-999999999
basx1010 toSci  1e-000999999999 -> 1E-999999999
basx1011 toSci  1e-000000000000999999999 -> 1E-999999999
basx1012 toSci  1e-000000000001000000007 -> 1E-1000000007 Subnormal

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
basx1021 toSci     1.52444E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
basx1022 toSci     1.52445E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow
basx1023 toSci     1.52446E-80  ->  1.524E-80 Inexact Rounded Subnormal Underflow

--- NEW FILE: add.decTest ---
------------------------------------------------------------------------
-- add.decTest -- decimal addition                                    --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999
extended:    1

-- [first group are 'quick confidence check']
addx001 add 1       1       ->  2
addx002 add 2       3       ->  5
addx003 add '5.75'  '3.3'   ->  9.05
addx004 add '5'     '-3'    ->  2
addx005 add '-5'    '-3'    ->  -8
addx006 add '-7'    '2.5'   ->  -4.5
addx007 add '0.7'   '0.3'   ->  1.0
addx008 add '1.25'  '1.25'  ->  2.50
addx009 add '1.23456789'  '1.00000000' -> '2.23456789'
addx010 add '1.23456789'  '1.00000011' -> '2.23456800'

addx011 add '0.4444444444'  '0.5555555555' -> '1.00000000' Inexact Rounded
addx012 add '0.4444444440'  '0.5555555555' -> '1.00000000' Inexact Rounded
addx013 add '0.4444444444'  '0.5555555550' -> '0.999999999' Inexact Rounded
addx014 add '0.44444444449'    '0' -> '0.444444444' Inexact Rounded
addx015 add '0.444444444499'   '0' -> '0.444444444' Inexact Rounded
addx016 add '0.4444444444999'  '0' -> '0.444444444' Inexact Rounded
addx017 add '0.4444444445000'  '0' -> '0.444444445' Inexact Rounded
addx018 add '0.4444444445001'  '0' -> '0.444444445' Inexact Rounded
addx019 add '0.444444444501'   '0' -> '0.444444445' Inexact Rounded
addx020 add '0.44444444451'    '0' -> '0.444444445' Inexact Rounded

addx021 add 0 1 -> 1
addx022 add 1 1 -> 2
addx023 add 2 1 -> 3
addx024 add 3 1 -> 4
addx025 add 4 1 -> 5
addx026 add 5 1 -> 6
addx027 add 6 1 -> 7
addx028 add 7 1 -> 8
addx029 add 8 1 -> 9
addx030 add 9 1 -> 10

-- some carrying effects
addx031 add '0.9998'  '0.0000' -> '0.9998'
addx032 add '0.9998'  '0.0001' -> '0.9999'
addx033 add '0.9998'  '0.0002' -> '1.0000'
addx034 add '0.9998'  '0.0003' -> '1.0001'

addx035 add '70'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
addx036 add '700'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
addx037 add '7000'  '10000e+9' -> '1.00000000E+13' Inexact Rounded
addx038 add '70000'  '10000e+9' -> '1.00000001E+13' Inexact Rounded
addx039 add '700000'  '10000e+9' -> '1.00000007E+13' Rounded

-- symmetry:
addx040 add '10000e+9'  '70' -> '1.00000000E+13' Inexact Rounded
addx041 add '10000e+9'  '700' -> '1.00000000E+13' Inexact Rounded
addx042 add '10000e+9'  '7000' -> '1.00000000E+13' Inexact Rounded
addx044 add '10000e+9'  '70000' -> '1.00000001E+13' Inexact Rounded
addx045 add '10000e+9'  '700000' -> '1.00000007E+13' Rounded

-- same, higher precision
precision: 15
addx046 add '10000e+9'  '7' -> '10000000000007'
addx047 add '10000e+9'  '70' -> '10000000000070'
addx048 add '10000e+9'  '700' -> '10000000000700'
addx049 add '10000e+9'  '7000' -> '10000000007000'
addx050 add '10000e+9'  '70000' -> '10000000070000'
addx051 add '10000e+9'  '700000' -> '10000000700000'

-- examples from decarith
addx053 add '12' '7.00' -> '19.00'
addx054 add '1.3' '-1.07' -> '0.23'
addx055 add '1.3' '-1.30' -> '0.00'
addx056 add '1.3' '-2.07' -> '-0.77'
addx057 add '1E+2' '1E+4' -> '1.01E+4'

-- zero preservation
precision: 6
addx060 add '10000e+9'  '70000' -> '1.00000E+13' Inexact Rounded
addx061 add 1 '0.0001' -> '1.0001'
addx062 add 1 '0.00001' -> '1.00001'
addx063 add 1 '0.000001' -> '1.00000' Inexact Rounded
addx064 add 1 '0.0000001' -> '1.00000' Inexact Rounded
addx065 add 1 '0.00000001' -> '1.00000' Inexact Rounded

-- some funny zeros [in case of bad signum]
addx070 add 1  0    -> 1
addx071 add 1 0.    -> 1
addx072 add 1  .0   -> 1.0
addx073 add 1 0.0   -> 1.0
addx074 add 1 0.00  -> 1.00
addx075 add  0  1   -> 1
addx076 add 0.  1   -> 1
addx077 add  .0 1   -> 1.0
addx078 add 0.0 1   -> 1.0
addx079 add 0.00 1  -> 1.00

precision: 9

-- some carries
addx080 add 999999998 1  -> 999999999
addx081 add 999999999 1  -> 1.00000000E+9 Rounded
addx082 add  99999999 1  -> 100000000
addx083 add   9999999 1  -> 10000000
addx084 add    999999 1  -> 1000000
addx085 add     99999 1  -> 100000
addx086 add      9999 1  -> 10000
addx087 add       999 1  -> 1000
addx088 add        99 1  -> 100
addx089 add         9 1  -> 10


-- more LHS swaps
addx090 add '-56267E-10'   0 ->  '-0.0000056267'
addx091 add '-56267E-6'    0 ->  '-0.056267'
addx092 add '-56267E-5'    0 ->  '-0.56267'
addx093 add '-56267E-4'    0 ->  '-5.6267'
addx094 add '-56267E-3'    0 ->  '-56.267'
addx095 add '-56267E-2'    0 ->  '-562.67'
addx096 add '-56267E-1'    0 ->  '-5626.7'
addx097 add '-56267E-0'    0 ->  '-56267'
addx098 add '-5E-10'       0 ->  '-5E-10'
addx099 add '-5E-7'        0 ->  '-5E-7'
addx100 add '-5E-6'        0 ->  '-0.000005'
addx101 add '-5E-5'        0 ->  '-0.00005'
addx102 add '-5E-4'        0 ->  '-0.0005'
addx103 add '-5E-1'        0 ->  '-0.5'
addx104 add '-5E0'         0 ->  '-5'
addx105 add '-5E1'         0 ->  '-50'
addx106 add '-5E5'         0 ->  '-500000'
addx107 add '-5E8'         0 ->  '-500000000'
addx108 add '-5E9'         0 ->  '-5.00000000E+9'   Rounded
addx109 add '-5E10'        0 ->  '-5.00000000E+10'  Rounded
addx110 add '-5E11'        0 ->  '-5.00000000E+11'  Rounded
addx111 add '-5E100'       0 ->  '-5.00000000E+100' Rounded

-- more RHS swaps
addx113 add 0  '-56267E-10' ->  '-0.0000056267'
addx114 add 0  '-56267E-6'  ->  '-0.056267'
addx116 add 0  '-56267E-5'  ->  '-0.56267'
addx117 add 0  '-56267E-4'  ->  '-5.6267'
addx119 add 0  '-56267E-3'  ->  '-56.267'
addx120 add 0  '-56267E-2'  ->  '-562.67'
addx121 add 0  '-56267E-1'  ->  '-5626.7'
addx122 add 0  '-56267E-0'  ->  '-56267'
addx123 add 0  '-5E-10'     ->  '-5E-10'
addx124 add 0  '-5E-7'      ->  '-5E-7'
addx125 add 0  '-5E-6'      ->  '-0.000005'
addx126 add 0  '-5E-5'      ->  '-0.00005'
addx127 add 0  '-5E-4'      ->  '-0.0005'
addx128 add 0  '-5E-1'      ->  '-0.5'
addx129 add 0  '-5E0'       ->  '-5'
addx130 add 0  '-5E1'       ->  '-50'
addx131 add 0  '-5E5'       ->  '-500000'
addx132 add 0  '-5E8'       ->  '-500000000'
addx133 add 0  '-5E9'       ->  '-5.00000000E+9'    Rounded
addx134 add 0  '-5E10'      ->  '-5.00000000E+10'   Rounded
addx135 add 0  '-5E11'      ->  '-5.00000000E+11'   Rounded
addx136 add 0  '-5E100'     ->  '-5.00000000E+100'  Rounded

-- related
addx137 add  1  '0E-12'      ->  '1.00000000'  Rounded
addx138 add -1  '0E-12'      ->  '-1.00000000' Rounded
addx139 add '0E-12' 1        ->  '1.00000000'  Rounded
addx140 add '0E-12' -1       ->  '-1.00000000' Rounded
addx141 add 1E+4    0.0000   ->  '10000.0000'
addx142 add 1E+4    0.00000  ->  '10000.0000'  Rounded
addx143 add 0.000   1E+5     ->  '100000.000'
addx144 add 0.0000  1E+5     ->  '100000.000'  Rounded

-- [some of the next group are really constructor tests]
addx146 add '00.0'  0       ->  '0.0'
addx147 add '0.00'  0       ->  '0.00'
addx148 add  0      '0.00'  ->  '0.00'
addx149 add  0      '00.0'  ->  '0.0'
addx150 add '00.0'  '0.00'  ->  '0.00'
addx151 add '0.00'  '00.0'  ->  '0.00'
addx152 add '3'     '.3'    ->  '3.3'
addx153 add '3.'    '.3'    ->  '3.3'
addx154 add '3.0'   '.3'    ->  '3.3'
addx155 add '3.00'  '.3'    ->  '3.30'
addx156 add '3'     '3'     ->  '6'
addx157 add '3'     '+3'    ->  '6'
addx158 add '3'     '-3'    ->  '0'
addx159 add '0.3'   '-0.3'  ->  '0.0'
addx160 add '0.03'  '-0.03' ->  '0.00'

-- try borderline precision, with carries, etc.
precision: 15
addx161 add '1E+12' '-1'    -> '999999999999'
addx162 add '1E+12'  '1.11' -> '1000000000001.11'
addx163 add '1.11'  '1E+12' -> '1000000000001.11'
addx164 add '-1'    '1E+12' -> '999999999999'
addx165 add '7E+12' '-1'    -> '6999999999999'
addx166 add '7E+12'  '1.11' -> '7000000000001.11'
addx167 add '1.11'  '7E+12' -> '7000000000001.11'
addx168 add '-1'    '7E+12' -> '6999999999999'

--            123456789012345      123456789012345      1 23456789012345
addx170 add '0.444444444444444'  '0.555555555555563' -> '1.00000000000001' Inexact Rounded
addx171 add '0.444444444444444'  '0.555555555555562' -> '1.00000000000001' Inexact Rounded
addx172 add '0.444444444444444'  '0.555555555555561' -> '1.00000000000001' Inexact Rounded
addx173 add '0.444444444444444'  '0.555555555555560' -> '1.00000000000000' Inexact Rounded
addx174 add '0.444444444444444'  '0.555555555555559' -> '1.00000000000000' Inexact Rounded
addx175 add '0.444444444444444'  '0.555555555555558' -> '1.00000000000000' Inexact Rounded
addx176 add '0.444444444444444'  '0.555555555555557' -> '1.00000000000000' Inexact Rounded
addx177 add '0.444444444444444'  '0.555555555555556' -> '1.00000000000000' Rounded
addx178 add '0.444444444444444'  '0.555555555555555' -> '0.999999999999999'
addx179 add '0.444444444444444'  '0.555555555555554' -> '0.999999999999998'
addx180 add '0.444444444444444'  '0.555555555555553' -> '0.999999999999997'
addx181 add '0.444444444444444'  '0.555555555555552' -> '0.999999999999996'
addx182 add '0.444444444444444'  '0.555555555555551' -> '0.999999999999995'
addx183 add '0.444444444444444'  '0.555555555555550' -> '0.999999999999994'

-- and some more, including residue effects and different roundings
precision: 9
rounding: half_up
addx200 add '123456789' 0             -> '123456789'
addx201 add '123456789' 0.000000001   -> '123456789' Inexact Rounded
addx202 add '123456789' 0.000001      -> '123456789' Inexact Rounded
addx203 add '123456789' 0.1           -> '123456789' Inexact Rounded
addx204 add '123456789' 0.4           -> '123456789' Inexact Rounded
addx205 add '123456789' 0.49          -> '123456789' Inexact Rounded
addx206 add '123456789' 0.499999      -> '123456789' Inexact Rounded
addx207 add '123456789' 0.499999999   -> '123456789' Inexact Rounded
addx208 add '123456789' 0.5           -> '123456790' Inexact Rounded
addx209 add '123456789' 0.500000001   -> '123456790' Inexact Rounded
addx210 add '123456789' 0.500001      -> '123456790' Inexact Rounded
addx211 add '123456789' 0.51          -> '123456790' Inexact Rounded
addx212 add '123456789' 0.6           -> '123456790' Inexact Rounded
addx213 add '123456789' 0.9           -> '123456790' Inexact Rounded
addx214 add '123456789' 0.99999       -> '123456790' Inexact Rounded
addx215 add '123456789' 0.999999999   -> '123456790' Inexact Rounded
addx216 add '123456789' 1             -> '123456790'
addx217 add '123456789' 1.000000001   -> '123456790' Inexact Rounded
addx218 add '123456789' 1.00001       -> '123456790' Inexact Rounded
addx219 add '123456789' 1.1           -> '123456790' Inexact Rounded

rounding: half_even
addx220 add '123456789' 0             -> '123456789'
addx221 add '123456789' 0.000000001   -> '123456789' Inexact Rounded
addx222 add '123456789' 0.000001      -> '123456789' Inexact Rounded
addx223 add '123456789' 0.1           -> '123456789' Inexact Rounded
addx224 add '123456789' 0.4           -> '123456789' Inexact Rounded
addx225 add '123456789' 0.49          -> '123456789' Inexact Rounded
addx226 add '123456789' 0.499999      -> '123456789' Inexact Rounded
addx227 add '123456789' 0.499999999   -> '123456789' Inexact Rounded
addx228 add '123456789' 0.5           -> '123456790' Inexact Rounded
addx229 add '123456789' 0.500000001   -> '123456790' Inexact Rounded
addx230 add '123456789' 0.500001      -> '123456790' Inexact Rounded
addx231 add '123456789' 0.51          -> '123456790' Inexact Rounded
addx232 add '123456789' 0.6           -> '123456790' Inexact Rounded
addx233 add '123456789' 0.9           -> '123456790' Inexact Rounded
addx234 add '123456789' 0.99999       -> '123456790' Inexact Rounded
addx235 add '123456789' 0.999999999   -> '123456790' Inexact Rounded
addx236 add '123456789' 1             -> '123456790'
addx237 add '123456789' 1.00000001    -> '123456790' Inexact Rounded
addx238 add '123456789' 1.00001       -> '123456790' Inexact Rounded
addx239 add '123456789' 1.1           -> '123456790' Inexact Rounded
-- critical few with even bottom digit...
addx240 add '123456788' 0.499999999   -> '123456788' Inexact Rounded
addx241 add '123456788' 0.5           -> '123456788' Inexact Rounded
addx242 add '123456788' 0.500000001   -> '123456789' Inexact Rounded

rounding: down
addx250 add '123456789' 0             -> '123456789'
addx251 add '123456789' 0.000000001   -> '123456789' Inexact Rounded
addx252 add '123456789' 0.000001      -> '123456789' Inexact Rounded
addx253 add '123456789' 0.1           -> '123456789' Inexact Rounded
addx254 add '123456789' 0.4           -> '123456789' Inexact Rounded
addx255 add '123456789' 0.49          -> '123456789' Inexact Rounded
addx256 add '123456789' 0.499999      -> '123456789' Inexact Rounded
addx257 add '123456789' 0.499999999   -> '123456789' Inexact Rounded
addx258 add '123456789' 0.5           -> '123456789' Inexact Rounded
addx259 add '123456789' 0.500000001   -> '123456789' Inexact Rounded
addx260 add '123456789' 0.500001      -> '123456789' Inexact Rounded
addx261 add '123456789' 0.51          -> '123456789' Inexact Rounded
addx262 add '123456789' 0.6           -> '123456789' Inexact Rounded
addx263 add '123456789' 0.9           -> '123456789' Inexact Rounded
addx264 add '123456789' 0.99999       -> '123456789' Inexact Rounded
addx265 add '123456789' 0.999999999   -> '123456789' Inexact Rounded
addx266 add '123456789' 1             -> '123456790'
addx267 add '123456789' 1.00000001    -> '123456790' Inexact Rounded
addx268 add '123456789' 1.00001       -> '123456790' Inexact Rounded
addx269 add '123456789' 1.1           -> '123456790' Inexact Rounded

rounding: half_up

-- input preparation tests (operands should not be rounded)
precision: 3
rounding: half_up

addx270 add '12345678900000'  9999999999999 ->  '2.23E+13' Inexact Rounded
addx271 add  '9999999999999' 12345678900000 ->  '2.23E+13' Inexact Rounded

addx272 add '12E+3'  '3444'   ->  '1.54E+4' Inexact Rounded
addx273 add '12E+3'  '3446'   ->  '1.54E+4' Inexact Rounded
addx274 add '12E+3'  '3449.9' ->  '1.54E+4' Inexact Rounded
addx275 add '12E+3'  '3450.0' ->  '1.55E+4' Inexact Rounded
addx276 add '12E+3'  '3450.1' ->  '1.55E+4' Inexact Rounded
addx277 add '12E+3'  '3454'   ->  '1.55E+4' Inexact Rounded
addx278 add '12E+3'  '3456'   ->  '1.55E+4' Inexact Rounded

addx281 add '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
addx282 add '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
addx283 add '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
addx284 add '3450.0' '12E+3'  ->  '1.55E+4' Inexact Rounded
addx285 add '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
addx286 add '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
addx287 add '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded

rounding: half_down
addx291 add '3444'   '12E+3'  ->  '1.54E+4' Inexact Rounded
addx292 add '3446'   '12E+3'  ->  '1.54E+4' Inexact Rounded
addx293 add '3449.9' '12E+3'  ->  '1.54E+4' Inexact Rounded
addx294 add '3450.0' '12E+3'  ->  '1.54E+4' Inexact Rounded
addx295 add '3450.1' '12E+3'  ->  '1.55E+4' Inexact Rounded
addx296 add '3454'   '12E+3'  ->  '1.55E+4' Inexact Rounded
addx297 add '3456'   '12E+3'  ->  '1.55E+4' Inexact Rounded

-- 1 in last place tests
rounding: half_up
addx301 add  -1   1      ->   0
addx302 add   0   1      ->   1
addx303 add   1   1      ->   2
addx304 add  12   1      ->  13
addx305 add  98   1      ->  99
addx306 add  99   1      -> 100
addx307 add 100   1      -> 101
addx308 add 101   1      -> 102
addx309 add  -1  -1      ->  -2
addx310 add   0  -1      ->  -1
addx311 add   1  -1      ->   0
addx312 add  12  -1      ->  11
addx313 add  98  -1      ->  97
addx314 add  99  -1      ->  98
addx315 add 100  -1      ->  99
addx316 add 101  -1      -> 100

addx321 add -0.01  0.01    ->  0.00
addx322 add  0.00  0.01    ->  0.01
addx323 add  0.01  0.01    ->  0.02
addx324 add  0.12  0.01    ->  0.13
addx325 add  0.98  0.01    ->  0.99
addx326 add  0.99  0.01    ->  1.00
addx327 add  1.00  0.01    ->  1.01
addx328 add  1.01  0.01    ->  1.02
addx329 add -0.01 -0.01    -> -0.02
addx330 add  0.00 -0.01    -> -0.01
addx331 add  0.01 -0.01    ->  0.00
addx332 add  0.12 -0.01    ->  0.11
addx333 add  0.98 -0.01    ->  0.97
addx334 add  0.99 -0.01    ->  0.98
addx335 add  1.00 -0.01    ->  0.99
addx336 add  1.01 -0.01    ->  1.00

-- some more cases where adding 0 affects the coefficient
precision: 9
addx340 add 1E+3    0    ->         1000
addx341 add 1E+8    0    ->    100000000
addx342 add 1E+9    0    ->   1.00000000E+9   Rounded
addx343 add 1E+10   0    ->   1.00000000E+10  Rounded
-- which simply follow from these cases ...
addx344 add 1E+3    1    ->         1001
addx345 add 1E+8    1    ->    100000001
addx346 add 1E+9    1    ->   1.00000000E+9   Inexact Rounded
addx347 add 1E+10   1    ->   1.00000000E+10  Inexact Rounded
addx348 add 1E+3    7    ->         1007
addx349 add 1E+8    7    ->    100000007
addx350 add 1E+9    7    ->   1.00000001E+9   Inexact Rounded
addx351 add 1E+10   7    ->   1.00000000E+10  Inexact Rounded

-- tryzeros cases
precision:   7
rounding:    half_up
maxExponent: 92
minexponent: -92
addx361  add 0E+50 10000E+1  -> 1.0000E+5
addx362  add 10000E+1 0E-50  -> 100000.0  Rounded
addx363  add 10000E+1 10000E-50  -> 100000.0  Rounded Inexact

-- ulp replacement tests
precision: 9
maxexponent: 999999999
minexponent: -999999999
addx400 add   1   77e-7       ->  1.0000077
addx401 add   1   77e-8       ->  1.00000077
addx402 add   1   77e-9       ->  1.00000008 Inexact Rounded
addx403 add   1   77e-10      ->  1.00000001 Inexact Rounded
addx404 add   1   77e-11      ->  1.00000000 Inexact Rounded
addx405 add   1   77e-12      ->  1.00000000 Inexact Rounded
addx406 add   1   77e-999     ->  1.00000000 Inexact Rounded
addx407 add   1   77e-9999999 ->  1.00000000 Inexact Rounded

addx410 add  10   77e-7       ->  10.0000077
addx411 add  10   77e-8       ->  10.0000008 Inexact Rounded
addx412 add  10   77e-9       ->  10.0000001 Inexact Rounded
addx413 add  10   77e-10      ->  10.0000000 Inexact Rounded
addx414 add  10   77e-11      ->  10.0000000 Inexact Rounded
addx415 add  10   77e-12      ->  10.0000000 Inexact Rounded
addx416 add  10   77e-999     ->  10.0000000 Inexact Rounded
addx417 add  10   77e-9999999 ->  10.0000000 Inexact Rounded

addx420 add  77e-7        1   ->  1.0000077
addx421 add  77e-8        1   ->  1.00000077
addx422 add  77e-9        1   ->  1.00000008 Inexact Rounded
addx423 add  77e-10       1   ->  1.00000001 Inexact Rounded
addx424 add  77e-11       1   ->  1.00000000 Inexact Rounded
addx425 add  77e-12       1   ->  1.00000000 Inexact Rounded
addx426 add  77e-999      1   ->  1.00000000 Inexact Rounded
addx427 add  77e-9999999  1   ->  1.00000000 Inexact Rounded

addx430 add  77e-7       10   ->  10.0000077
addx431 add  77e-8       10   ->  10.0000008 Inexact Rounded
addx432 add  77e-9       10   ->  10.0000001 Inexact Rounded
addx433 add  77e-10      10   ->  10.0000000 Inexact Rounded
addx434 add  77e-11      10   ->  10.0000000 Inexact Rounded
addx435 add  77e-12      10   ->  10.0000000 Inexact Rounded
addx436 add  77e-999     10   ->  10.0000000 Inexact Rounded
addx437 add  77e-9999999 10   ->  10.0000000 Inexact Rounded

-- negative ulps
addx440 add   1   -77e-7       ->  0.9999923
addx441 add   1   -77e-8       ->  0.99999923
addx442 add   1   -77e-9       ->  0.999999923
addx443 add   1   -77e-10      ->  0.999999992 Inexact Rounded
addx444 add   1   -77e-11      ->  0.999999999 Inexact Rounded
addx445 add   1   -77e-12      ->  1.00000000 Inexact Rounded
addx446 add   1   -77e-999     ->  1.00000000 Inexact Rounded
addx447 add   1   -77e-9999999 ->  1.00000000 Inexact Rounded

addx450 add  10   -77e-7       ->   9.9999923
addx451 add  10   -77e-8       ->   9.99999923
addx452 add  10   -77e-9       ->   9.99999992 Inexact Rounded
addx453 add  10   -77e-10      ->   9.99999999 Inexact Rounded
addx454 add  10   -77e-11      ->  10.0000000 Inexact Rounded
addx455 add  10   -77e-12      ->  10.0000000 Inexact Rounded
addx456 add  10   -77e-999     ->  10.0000000 Inexact Rounded
addx457 add  10   -77e-9999999 ->  10.0000000 Inexact Rounded

addx460 add  -77e-7        1   ->  0.9999923
addx461 add  -77e-8        1   ->  0.99999923
addx462 add  -77e-9        1   ->  0.999999923
addx463 add  -77e-10       1   ->  0.999999992 Inexact Rounded
addx464 add  -77e-11       1   ->  0.999999999 Inexact Rounded
addx465 add  -77e-12       1   ->  1.00000000 Inexact Rounded
addx466 add  -77e-999      1   ->  1.00000000 Inexact Rounded
addx467 add  -77e-9999999  1   ->  1.00000000 Inexact Rounded

addx470 add  -77e-7       10   ->   9.9999923
addx471 add  -77e-8       10   ->   9.99999923
addx472 add  -77e-9       10   ->   9.99999992 Inexact Rounded
addx473 add  -77e-10      10   ->   9.99999999 Inexact Rounded
addx474 add  -77e-11      10   ->  10.0000000 Inexact Rounded
addx475 add  -77e-12      10   ->  10.0000000 Inexact Rounded
addx476 add  -77e-999     10   ->  10.0000000 Inexact Rounded
addx477 add  -77e-9999999 10   ->  10.0000000 Inexact Rounded

-- negative ulps
addx480 add  -1    77e-7       ->  -0.9999923
addx481 add  -1    77e-8       ->  -0.99999923
addx482 add  -1    77e-9       ->  -0.999999923
addx483 add  -1    77e-10      ->  -0.999999992 Inexact Rounded
addx484 add  -1    77e-11      ->  -0.999999999 Inexact Rounded
addx485 add  -1    77e-12      ->  -1.00000000 Inexact Rounded
addx486 add  -1    77e-999     ->  -1.00000000 Inexact Rounded
addx487 add  -1    77e-9999999 ->  -1.00000000 Inexact Rounded

addx490 add -10    77e-7       ->   -9.9999923
addx491 add -10    77e-8       ->   -9.99999923
addx492 add -10    77e-9       ->   -9.99999992 Inexact Rounded
addx493 add -10    77e-10      ->   -9.99999999 Inexact Rounded
addx494 add -10    77e-11      ->  -10.0000000 Inexact Rounded
addx495 add -10    77e-12      ->  -10.0000000 Inexact Rounded
addx496 add -10    77e-999     ->  -10.0000000 Inexact Rounded
addx497 add -10    77e-9999999 ->  -10.0000000 Inexact Rounded

addx500 add   77e-7       -1   ->  -0.9999923
addx501 add   77e-8       -1   ->  -0.99999923
addx502 add   77e-9       -1   ->  -0.999999923
addx503 add   77e-10      -1   ->  -0.999999992 Inexact Rounded
addx504 add   77e-11      -1   ->  -0.999999999 Inexact Rounded
addx505 add   77e-12      -1   ->  -1.00000000 Inexact Rounded
addx506 add   77e-999     -1   ->  -1.00000000 Inexact Rounded
addx507 add   77e-9999999 -1   ->  -1.00000000 Inexact Rounded

addx510 add   77e-7       -10  ->   -9.9999923
addx511 add   77e-8       -10  ->   -9.99999923
addx512 add   77e-9       -10  ->   -9.99999992 Inexact Rounded
addx513 add   77e-10      -10  ->   -9.99999999 Inexact Rounded
addx514 add   77e-11      -10  ->  -10.0000000 Inexact Rounded
addx515 add   77e-12      -10  ->  -10.0000000 Inexact Rounded
addx516 add   77e-999     -10  ->  -10.0000000 Inexact Rounded
addx517 add   77e-9999999 -10  ->  -10.0000000 Inexact Rounded


-- long operands
maxexponent: 999
minexponent: -999
precision: 9
addx521 add 12345678000 0 -> 1.23456780E+10 Rounded
addx522 add 0 12345678000 -> 1.23456780E+10 Rounded
addx523 add 1234567800  0 -> 1.23456780E+9 Rounded
addx524 add 0 1234567800  -> 1.23456780E+9 Rounded
addx525 add 1234567890  0 -> 1.23456789E+9 Rounded
addx526 add 0 1234567890  -> 1.23456789E+9 Rounded
addx527 add 1234567891  0 -> 1.23456789E+9 Inexact Rounded
addx528 add 0 1234567891  -> 1.23456789E+9 Inexact Rounded
addx529 add 12345678901 0 -> 1.23456789E+10 Inexact Rounded
addx530 add 0 12345678901 -> 1.23456789E+10 Inexact Rounded
addx531 add 1234567896  0 -> 1.23456790E+9 Inexact Rounded
addx532 add 0 1234567896  -> 1.23456790E+9 Inexact Rounded

precision: 15
-- still checking
addx541 add 12345678000 0 -> 12345678000
addx542 add 0 12345678000 -> 12345678000
addx543 add 1234567800  0 -> 1234567800
addx544 add 0 1234567800  -> 1234567800
addx545 add 1234567890  0 -> 1234567890
addx546 add 0 1234567890  -> 1234567890
addx547 add 1234567891  0 -> 1234567891
addx548 add 0 1234567891  -> 1234567891
addx549 add 12345678901 0 -> 12345678901
addx550 add 0 12345678901 -> 12345678901
addx551 add 1234567896  0 -> 1234567896
addx552 add 0 1234567896  -> 1234567896

-- some more residue effects with extreme rounding
precision:   9
rounding: half_up
addx601 add 123456789  0.000001 -> 123456789 Inexact Rounded
rounding: half_even
addx602 add 123456789  0.000001 -> 123456789 Inexact Rounded
rounding: half_down
addx603 add 123456789  0.000001 -> 123456789 Inexact Rounded
rounding: floor
addx604 add 123456789  0.000001 -> 123456789 Inexact Rounded
rounding: ceiling
addx605 add 123456789  0.000001 -> 123456790 Inexact Rounded
rounding: up
addx606 add 123456789  0.000001 -> 123456790 Inexact Rounded
rounding: down
addx607 add 123456789  0.000001 -> 123456789 Inexact Rounded

rounding: half_up
addx611 add 123456789 -0.000001 -> 123456789 Inexact Rounded
rounding: half_even
addx612 add 123456789 -0.000001 -> 123456789 Inexact Rounded
rounding: half_down
addx613 add 123456789 -0.000001 -> 123456789 Inexact Rounded
rounding: floor
addx614 add 123456789 -0.000001 -> 123456788 Inexact Rounded
rounding: ceiling
addx615 add 123456789 -0.000001 -> 123456789 Inexact Rounded
rounding: up
addx616 add 123456789 -0.000001 -> 123456789 Inexact Rounded
rounding: down
addx617 add 123456789 -0.000001 -> 123456788 Inexact Rounded

rounding: half_up
addx621 add 123456789  0.499999 -> 123456789 Inexact Rounded
rounding: half_even
addx622 add 123456789  0.499999 -> 123456789 Inexact Rounded
rounding: half_down
addx623 add 123456789  0.499999 -> 123456789 Inexact Rounded
rounding: floor
addx624 add 123456789  0.499999 -> 123456789 Inexact Rounded
rounding: ceiling
addx625 add 123456789  0.499999 -> 123456790 Inexact Rounded
rounding: up
addx626 add 123456789  0.499999 -> 123456790 Inexact Rounded
rounding: down
addx627 add 123456789  0.499999 -> 123456789 Inexact Rounded

rounding: half_up
addx631 add 123456789 -0.499999 -> 123456789 Inexact Rounded
rounding: half_even
addx632 add 123456789 -0.499999 -> 123456789 Inexact Rounded
rounding: half_down
addx633 add 123456789 -0.499999 -> 123456789 Inexact Rounded
rounding: floor
addx634 add 123456789 -0.499999 -> 123456788 Inexact Rounded
rounding: ceiling
addx635 add 123456789 -0.499999 -> 123456789 Inexact Rounded
rounding: up
addx636 add 123456789 -0.499999 -> 123456789 Inexact Rounded
rounding: down
addx637 add 123456789 -0.499999 -> 123456788 Inexact Rounded

rounding: half_up
addx641 add 123456789  0.500001 -> 123456790 Inexact Rounded
rounding: half_even
addx642 add 123456789  0.500001 -> 123456790 Inexact Rounded
rounding: half_down
addx643 add 123456789  0.500001 -> 123456790 Inexact Rounded
rounding: floor
addx644 add 123456789  0.500001 -> 123456789 Inexact Rounded
rounding: ceiling
addx645 add 123456789  0.500001 -> 123456790 Inexact Rounded
rounding: up
addx646 add 123456789  0.500001 -> 123456790 Inexact Rounded
rounding: down
addx647 add 123456789  0.500001 -> 123456789 Inexact Rounded

rounding: half_up
addx651 add 123456789 -0.500001 -> 123456788 Inexact Rounded
rounding: half_even
addx652 add 123456789 -0.500001 -> 123456788 Inexact Rounded
rounding: half_down
addx653 add 123456789 -0.500001 -> 123456788 Inexact Rounded
rounding: floor
addx654 add 123456789 -0.500001 -> 123456788 Inexact Rounded
rounding: ceiling
addx655 add 123456789 -0.500001 -> 123456789 Inexact Rounded
rounding: up
addx656 add 123456789 -0.500001 -> 123456789 Inexact Rounded
rounding: down
addx657 add 123456789 -0.500001 -> 123456788 Inexact Rounded

-- long operand triangle
rounding: half_up
precision:  37
addx660 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538
precision:  36
addx661 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454  Inexact Rounded
precision:  35
addx662 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345   Inexact Rounded
precision:  34
addx663 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835    Inexact Rounded
precision:  33
addx664 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483     Inexact Rounded
precision:  32
addx665 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148      Inexact Rounded
precision:  31
addx666 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115       Inexact Rounded
precision:  30
addx667 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711        Inexact Rounded
precision:  29
addx668 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371         Inexact Rounded
precision:  28
addx669 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337          Inexact Rounded
precision:  27
addx670 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234           Inexact Rounded
precision:  26
addx671 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223            Inexact Rounded
precision:  25
addx672 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922             Inexact Rounded
precision:  24
addx673 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892              Inexact Rounded
precision:  23
addx674 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389               Inexact Rounded
precision:  22
addx675 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639                Inexact Rounded
precision:  21
addx676 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364                 Inexact Rounded
precision:  20
addx677 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236                  Inexact Rounded
precision:  19
addx678 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024                   Inexact Rounded
precision:  18
addx679 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102                    Inexact Rounded
precision:  17
addx680 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110                     Inexact Rounded
precision:  16
addx681 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211                      Inexact Rounded
precision:  15
addx682 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221                       Inexact Rounded
precision:  14
addx683 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422                        Inexact Rounded
precision:  13
addx684 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42                         Inexact Rounded
precision:  12
addx685 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4                          Inexact Rounded
precision:  11
addx686 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166                            Inexact Rounded
precision:  10
addx687 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10                        Inexact Rounded
precision:   9
addx688 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10                         Inexact Rounded
precision:   8
addx689 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10                          Inexact Rounded
precision:   7
addx690 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10                          Inexact Rounded
precision:   6
addx691 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10                          Inexact Rounded
precision:   5
addx692 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10                          Inexact Rounded
precision:   4
addx693 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10                          Inexact Rounded
precision:   3
addx694 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10                          Inexact Rounded
precision:   2
addx695 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10                          Inexact Rounded
precision:   1
addx696 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11                          Inexact Rounded

-- more zeros, etc.
rounding: half_up
precision:   9

addx701 add 5.00 1.00E-3 -> 5.00100
addx702 add 00.00 0.000  -> 0.000
addx703 add 00.00 0E-3   -> 0.000
addx704 add 0E-3  00.00  -> 0.000

addx710 add 0E+3  00.00  -> 0.00
addx711 add 0E+3  00.0   -> 0.0
addx712 add 0E+3  00.    -> 0
addx713 add 0E+3  00.E+1 -> 0E+1
addx714 add 0E+3  00.E+2 -> 0E+2
addx715 add 0E+3  00.E+3 -> 0E+3
addx716 add 0E+3  00.E+4 -> 0E+3
addx717 add 0E+3  00.E+5 -> 0E+3
addx718 add 0E+3  -00.0   -> 0.0
addx719 add 0E+3  -00.    -> 0
addx731 add 0E+3  -00.E+1 -> 0E+1

addx720 add 00.00  0E+3  -> 0.00
addx721 add 00.0   0E+3  -> 0.0
addx722 add 00.    0E+3  -> 0
addx723 add 00.E+1 0E+3  -> 0E+1
addx724 add 00.E+2 0E+3  -> 0E+2
addx725 add 00.E+3 0E+3  -> 0E+3
addx726 add 00.E+4 0E+3  -> 0E+3
addx727 add 00.E+5 0E+3  -> 0E+3
addx728 add -00.00 0E+3  -> 0.00
addx729 add -00.0  0E+3  -> 0.0
addx730 add -00.   0E+3  -> 0

addx732 add  0     0     ->  0
addx733 add  0    -0     ->  0
addx734 add -0     0     ->  0
addx735 add -0    -0     -> -0     -- IEEE 854 exception

addx736 add  1    -1     ->  0
addx737 add -1    -1     -> -2
addx738 add  1     1     ->  2
addx739 add -1     1     ->  0

addx741 add  0    -1     -> -1
addx742 add -0    -1     -> -1
addx743 add  0     1     ->  1
addx744 add -0     1     ->  1
addx745 add -1     0     -> -1
addx746 add -1    -0     -> -1
addx747 add  1     0     ->  1
addx748 add  1    -0     ->  1

addx751 add  0.0  -1     -> -1.0
addx752 add -0.0  -1     -> -1.0
addx753 add  0.0   1     ->  1.0
addx754 add -0.0   1     ->  1.0
addx755 add -1.0   0     -> -1.0
addx756 add -1.0  -0     -> -1.0
addx757 add  1.0   0     ->  1.0
addx758 add  1.0  -0     ->  1.0

addx761 add  0    -1.0   -> -1.0
addx762 add -0    -1.0   -> -1.0
addx763 add  0     1.0   ->  1.0
addx764 add -0     1.0   ->  1.0
addx765 add -1     0.0   -> -1.0
addx766 add -1    -0.0   -> -1.0
addx767 add  1     0.0   ->  1.0
addx768 add  1    -0.0   ->  1.0

addx771 add  0.0  -1.0   -> -1.0
addx772 add -0.0  -1.0   -> -1.0
addx773 add  0.0   1.0   ->  1.0
addx774 add -0.0   1.0   ->  1.0
addx775 add -1.0   0.0   -> -1.0
addx776 add -1.0  -0.0   -> -1.0
addx777 add  1.0   0.0   ->  1.0
addx778 add  1.0  -0.0   ->  1.0

-- Specials
addx780 add -Inf  -Inf   -> -Infinity
addx781 add -Inf  -1000  -> -Infinity
addx782 add -Inf  -1     -> -Infinity
addx783 add -Inf  -0     -> -Infinity
addx784 add -Inf   0     -> -Infinity
addx785 add -Inf   1     -> -Infinity
addx786 add -Inf   1000  -> -Infinity
addx787 add -1000 -Inf   -> -Infinity
addx788 add -Inf  -Inf   -> -Infinity
addx789 add -1    -Inf   -> -Infinity
addx790 add -0    -Inf   -> -Infinity
addx791 add  0    -Inf   -> -Infinity
addx792 add  1    -Inf   -> -Infinity
addx793 add  1000 -Inf   -> -Infinity

addx800 add  Inf  -Inf   ->  NaN  Invalid_operation
addx801 add  Inf  -1000  ->  Infinity
addx802 add  Inf  -1     ->  Infinity
addx803 add  Inf  -0     ->  Infinity
addx804 add  Inf   0     ->  Infinity
addx805 add  Inf   1     ->  Infinity
addx806 add  Inf   1000  ->  Infinity
addx807 add  Inf   Inf   ->  Infinity
addx808 add -1000  Inf   ->  Infinity
addx809 add -Inf   Inf   ->  NaN  Invalid_operation
addx810 add -1     Inf   ->  Infinity
addx811 add -0     Inf   ->  Infinity
addx812 add  0     Inf   ->  Infinity
addx813 add  1     Inf   ->  Infinity
addx814 add  1000  Inf   ->  Infinity
addx815 add  Inf   Inf   ->  Infinity

addx821 add  NaN -Inf    ->  NaN
addx822 add  NaN -1000   ->  NaN
addx823 add  NaN -1      ->  NaN
addx824 add  NaN -0      ->  NaN
addx825 add  NaN  0      ->  NaN
addx826 add  NaN  1      ->  NaN
addx827 add  NaN  1000   ->  NaN
addx828 add  NaN  Inf    ->  NaN
addx829 add  NaN  NaN    ->  NaN
addx830 add -Inf  NaN    ->  NaN
addx831 add -1000 NaN    ->  NaN
addx832 add -1    NaN    ->  NaN
addx833 add -0    NaN    ->  NaN
addx834 add  0    NaN    ->  NaN
addx835 add  1    NaN    ->  NaN
addx836 add  1000 NaN    ->  NaN
addx837 add  Inf  NaN    ->  NaN

addx841 add  sNaN -Inf   ->  NaN  Invalid_operation
addx842 add  sNaN -1000  ->  NaN  Invalid_operation
addx843 add  sNaN -1     ->  NaN  Invalid_operation
addx844 add  sNaN -0     ->  NaN  Invalid_operation
addx845 add  sNaN  0     ->  NaN  Invalid_operation
addx846 add  sNaN  1     ->  NaN  Invalid_operation
addx847 add  sNaN  1000  ->  NaN  Invalid_operation
addx848 add  sNaN  NaN   ->  NaN  Invalid_operation
addx849 add  sNaN sNaN   ->  NaN  Invalid_operation
addx850 add  NaN  sNaN   ->  NaN  Invalid_operation
addx851 add -Inf  sNaN   ->  NaN  Invalid_operation
addx852 add -1000 sNaN   ->  NaN  Invalid_operation
addx853 add -1    sNaN   ->  NaN  Invalid_operation
addx854 add -0    sNaN   ->  NaN  Invalid_operation
addx855 add  0    sNaN   ->  NaN  Invalid_operation
addx856 add  1    sNaN   ->  NaN  Invalid_operation
addx857 add  1000 sNaN   ->  NaN  Invalid_operation
addx858 add  Inf  sNaN   ->  NaN  Invalid_operation
addx859 add  NaN  sNaN   ->  NaN  Invalid_operation

-- overflow, underflow and subnormal tests
maxexponent: 999999999
minexponent: -999999999
precision: 9
addx860 add 1E+999999999     9E+999999999   -> Infinity Overflow Inexact Rounded
addx861 add 9E+999999999     1E+999999999   -> Infinity Overflow Inexact Rounded
addx862 add -1.1E-999999999  1E-999999999   -> -1E-1000000000    Subnormal
addx863 add 1E-999999999    -1.1e-999999999 -> -1E-1000000000    Subnormal
addx864 add -1.0001E-999999999  1E-999999999   -> -1E-1000000003 Subnormal
addx865 add 1E-999999999    -1.0001e-999999999 -> -1E-1000000003 Subnormal
addx866 add -1E+999999999   -9E+999999999   -> -Infinity Overflow Inexact Rounded
addx867 add -9E+999999999   -1E+999999999   -> -Infinity Overflow Inexact Rounded
addx868 add +1.1E-999999999 -1E-999999999   -> 1E-1000000000    Subnormal
addx869 add -1E-999999999   +1.1e-999999999 -> 1E-1000000000    Subnormal
addx870 add +1.0001E-999999999 -1E-999999999   -> 1E-1000000003 Subnormal
addx871 add -1E-999999999   +1.0001e-999999999 -> 1E-1000000003 Subnormal
addx872 add -1E+999999999   +9E+999999999   ->  8E+999999999
addx873 add -9E+999999999   +1E+999999999   -> -8E+999999999

precision: 3
addx880 add      0 -9.999E+999999999   -> -Infinity Inexact Overflow Rounded
addx881 add        -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded
addx882 add      0  9.999E+999999999   ->  Infinity Inexact Overflow Rounded
addx883 add         9.999E+999999999 0 ->  Infinity Inexact Overflow Rounded

precision: 3
maxexponent: 999
minexponent: -999
addx910 add  1.00E-999   0    ->   1.00E-999
addx911 add  0.1E-999    0    ->   1E-1000   Subnormal
addx912 add  0.10E-999   0    ->   1.0E-1000 Subnormal
addx913 add  0.100E-999  0    ->   1.0E-1000 Subnormal Rounded
addx914 add  0.01E-999   0    ->   1E-1001   Subnormal
-- next is rounded to Emin
addx915 add  0.999E-999  0    ->   1.00E-999 Inexact Rounded Subnormal Underflow
addx916 add  0.099E-999  0    ->   1.0E-1000 Inexact Rounded Subnormal Underflow
addx917 add  0.009E-999  0    ->   1E-1001   Inexact Rounded Subnormal Underflow
addx918 add  0.001E-999  0    ->   0E-1001   Inexact Rounded Subnormal Underflow
addx919 add  0.0009E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow
addx920 add  0.0001E-999 0    ->   0E-1001   Inexact Rounded Subnormal Underflow

addx930 add -1.00E-999   0    ->  -1.00E-999
addx931 add -0.1E-999    0    ->  -1E-1000   Subnormal
addx932 add -0.10E-999   0    ->  -1.0E-1000 Subnormal
addx933 add -0.100E-999  0    ->  -1.0E-1000 Subnormal Rounded
addx934 add -0.01E-999   0    ->  -1E-1001   Subnormal
-- next is rounded to Emin
addx935 add -0.999E-999  0    ->  -1.00E-999 Inexact Rounded Subnormal Underflow
addx936 add -0.099E-999  0    ->  -1.0E-1000 Inexact Rounded Subnormal Underflow
addx937 add -0.009E-999  0    ->  -1E-1001   Inexact Rounded Subnormal Underflow
addx938 add -0.001E-999  0    ->  -0E-1001   Inexact Rounded Subnormal Underflow
addx939 add -0.0009E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow
addx940 add -0.0001E-999 0    ->  -0E-1001   Inexact Rounded Subnormal Underflow

-- some non-zero subnormal adds
addx950 add  1.00E-999    0.1E-999  ->   1.10E-999
addx951 add  0.1E-999     0.1E-999  ->   2E-1000    Subnormal
addx952 add  0.10E-999    0.1E-999  ->   2.0E-1000  Subnormal
addx953 add  0.100E-999   0.1E-999  ->   2.0E-1000  Subnormal Rounded
addx954 add  0.01E-999    0.1E-999  ->   1.1E-1000  Subnormal
addx955 add  0.999E-999   0.1E-999  ->   1.10E-999  Inexact Rounded
addx956 add  0.099E-999   0.1E-999  ->   2.0E-1000  Inexact Rounded Subnormal Underflow
addx957 add  0.009E-999   0.1E-999  ->   1.1E-1000  Inexact Rounded Subnormal Underflow
addx958 add  0.001E-999   0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
addx959 add  0.0009E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
addx960 add  0.0001E-999  0.1E-999  ->   1.0E-1000  Inexact Rounded Subnormal Underflow
-- negatives...
addx961 add  1.00E-999   -0.1E-999  ->   9.0E-1000  Subnormal
addx962 add  0.1E-999    -0.1E-999  ->   0E-1000
addx963 add  0.10E-999   -0.1E-999  ->   0E-1001
addx964 add  0.100E-999  -0.1E-999  ->   0E-1001    Clamped
addx965 add  0.01E-999   -0.1E-999  ->   -9E-1001   Subnormal
addx966 add  0.999E-999  -0.1E-999  ->   9.0E-1000  Inexact Rounded Subnormal Underflow
addx967 add  0.099E-999  -0.1E-999  ->   -0E-1001   Inexact Rounded Subnormal Underflow
addx968 add  0.009E-999  -0.1E-999  ->   -9E-1001   Inexact Rounded Subnormal Underflow
addx969 add  0.001E-999  -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
addx970 add  0.0009E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow
addx971 add  0.0001E-999 -0.1E-999  ->   -1.0E-1000 Inexact Rounded Subnormal Underflow

-- check for double-rounded subnormals
precision:   5
maxexponent: 79
minexponent: -79
-- Add: lhs and rhs 0
addx1001 add       1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1002 add       1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1003 add       1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1004 add       0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1005 add       0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1006 add       0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

-- Add: lhs >> rhs and vice versa
addx1011 add       1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1012 add       1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1013 add       1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1014 add       1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1015 add       1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow
addx1016 add       1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow

-- Add: lhs + rhs addition carried out
addx1021 add       1.52443E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
addx1022 add       1.52444E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
addx1023 add       1.52445E-80 1.00001E-80  -> 2.524E-80 Inexact Rounded Subnormal Underflow
addx1024 add       1.00001E-80  1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
addx1025 add       1.00001E-80  1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow
addx1026 add       1.00001E-80  1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow

-- Null tests
addx9990 add 10  # -> NaN Invalid_operation
addx9991 add  # 10 -> NaN Invalid_operation

--- NEW FILE: abs.decTest ---
------------------------------------------------------------------------
-- abs.decTest -- decimal absolute value                              --
-- Copyright (c) IBM Corporation, 1981, 2003.  All rights reserved.   --
------------------------------------------------------------------------
-- Please see the document "General Decimal Arithmetic Testcases"     --
-- at http://www2.hursley.ibm.com/decimal for the description of      --
-- these testcases.                                                   --
--                                                                    --
-- These testcases are experimental ('beta' versions), and they       --
-- may contain errors.  They are offered on an as-is basis.  In       --
-- particular, achieving the same results as the tests here is not    --
-- a guarantee that an implementation complies with any Standard      --
-- or specification.  The tests are not exhaustive.                   --
--                                                                    --
-- Please send comments, suggestions, and corrections to the author:  --
--   Mike Cowlishaw, IBM Fellow                                       --
--   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
--   mfc@uk.ibm.com                                                   --
------------------------------------------------------------------------
version: 2.21

-- This set of tests primarily tests the existence of the operator.
-- Additon, subtraction, rounding, and more overflows are tested
-- elsewhere.

precision:   9
rounding:    half_up
maxExponent: 999
minexponent: -999
extended: 1

absx001 abs '1'      -> '1'
absx002 abs '-1'     -> '1'
absx003 abs '1.00'   -> '1.00'
absx004 abs '-1.00'  -> '1.00'
absx005 abs '0'      -> '0'
absx006 abs '0.00'   -> '0.00'
absx007 abs '00.0'   -> '0.0'
absx008 abs '00.00'  -> '0.00'
absx009 abs '00'     -> '0'

absx010 abs '-2'     -> '2'
absx011 abs '2'      -> '2'
absx012 abs '-2.00'  -> '2.00'
absx013 abs '2.00'   -> '2.00'
absx014 abs '-0'     -> '0'
absx015 abs '-0.00'  -> '0.00'
absx016 abs '-00.0'  -> '0.0'
absx017 abs '-00.00' -> '0.00'
absx018 abs '-00'    -> '0'

absx020 abs '-2000000' -> '2000000'
absx021 abs '2000000'  -> '2000000'
precision: 7
absx022 abs '-2000000' -> '2000000'
absx023 abs '2000000'  -> '2000000'
precision: 6
absx024 abs '-2000000' -> '2.00000E+6' Rounded
absx025 abs '2000000'  -> '2.00000E+6' Rounded
precision: 3
absx026 abs '-2000000' -> '2.00E+6' Rounded
absx027 abs '2000000'  -> '2.00E+6' Rounded

absx030 abs '+0.1'            -> '0.1'
absx031 abs '-0.1'            -> '0.1'
absx032 abs '+0.01'           -> '0.01'
absx033 abs '-0.01'           -> '0.01'
absx034 abs '+0.001'          -> '0.001'
absx035 abs '-0.001'          -> '0.001'
absx036 abs '+0.000001'       -> '0.000001'
absx037 abs '-0.000001'       -> '0.000001'
absx038 abs '+0.000000000001' -> '1E-12'
absx039 abs '-0.000000000001' -> '1E-12'

-- examples from decArith
precision: 9
absx040 abs '2.1'     ->  '2.1'
absx041 abs '-100'    ->  '100'
absx042 abs '101.5'   ->  '101.5'
absx043 abs '-101.5'  ->  '101.5'

-- more fixed, potential LHS swaps/overlays if done by subtract 0
precision: 9
absx060 abs '-56267E-10'  -> '0.0000056267'
absx061 abs '-56267E-5'   -> '0.56267'
absx062 abs '-56267E-2'   -> '562.67'
absx063 abs '-56267E-1'   -> '5626.7'
absx065 abs '-56267E-0'   -> '56267'

-- overflow tests
maxexponent: 999999999
minexponent: -999999999
precision: 3
absx120 abs 9.999E+999999999 -> Infinity Inexact Overflow Rounded

-- subnormals and underflow
precision: 3
maxexponent: 999
minexponent: -999
absx210 abs  1.00E-999        ->   1.00E-999
absx211 abs  0.1E-999         ->   1E-1000   Subnormal
absx212 abs  0.10E-999        ->   1.0E-1000 Subnormal
absx213 abs  0.100E-999       ->   1.0E-1000 Subnormal Rounded
absx214 abs  0.01E-999        ->   1E-1001   Subnormal
-- next is rounded to Emin
absx215 abs  0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
absx216 abs  0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
absx217 abs  0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
absx218 abs  0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
absx219 abs  0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
absx220 abs  0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow

absx230 abs -1.00E-999        ->   1.00E-999
absx231 abs -0.1E-999         ->   1E-1000   Subnormal
absx232 abs -0.10E-999        ->   1.0E-1000 Subnormal
absx233 abs -0.100E-999       ->   1.0E-1000 Subnormal Rounded
absx234 abs -0.01E-999        ->   1E-1001   Subnormal
-- next is rounded to Emin
absx235 abs -0.999E-999       ->   1.00E-999 Inexact Rounded Subnormal Underflow
absx236 abs -0.099E-999       ->   1.0E-1000 Inexact Rounded Subnormal Underflow
absx237 abs -0.009E-999       ->   1E-1001   Inexact Rounded Subnormal Underflow
absx238 abs -0.001E-999       ->   0E-1001   Inexact Rounded Subnormal Underflow
absx239 abs -0.0009E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow
absx240 abs -0.0001E-999      ->   0E-1001   Inexact Rounded Subnormal Underflow

-- long operand tests
maxexponent: 999
minexponent: -999
precision: 9
absx301 abs 12345678000  -> 1.23456780E+10 Rounded
absx302 abs 1234567800   -> 1.23456780E+9 Rounded
absx303 abs 1234567890   -> 1.23456789E+9 Rounded
absx304 abs 1234567891   -> 1.23456789E+9 Inexact Rounded
absx305 abs 12345678901  -> 1.23456789E+10 Inexact Rounded
absx306 abs 1234567896   -> 1.23456790E+9 Inexact Rounded

precision: 15
absx321 abs 12345678000  -> 12345678000
absx322 abs 1234567800   -> 1234567800
absx323 abs 1234567890   -> 1234567890
absx324 abs 1234567891   -> 1234567891
absx325 abs 12345678901  -> 12345678901
absx326 abs 1234567896   -> 1234567896


-- Specials
precision:   9

-- specials
absx520 abs 'Inf'    -> 'Infinity'
absx521 abs '-Inf'   -> 'Infinity'
absx522 abs   NaN    ->  NaN
absx523 abs  sNaN    ->  NaN  Invalid_operation

-- Null tests
absx900 abs  # -> NaN Invalid_operation