------------------------------------------------------------------------
-- rescale0.decTest -- decimal rescale operation (simplified)         --
-- Copyright (c) IBM Corporation, 1981, 2008.  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.58

-- [obsolete]   Quantize0.decTest has the improved version

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

res001 rescale  0      0   ->  0
res002 rescale  1      0   ->  1
res003 rescale  0.1   +2   ->  0E+2 Inexact Rounded
res005 rescale  0.1   +1   ->  0E+1 Inexact Rounded
res006 rescale  0.1    0   ->  0 Inexact Rounded
res007 rescale  0.1   -1   ->  0.1
res008 rescale  0.1   -2   ->  0.10
res009 rescale  0.1   -3   ->  0.100
res010 rescale  0.9   +2   ->  0E+2 Inexact Rounded
res011 rescale  0.9   +1   ->  0E+1 Inexact Rounded
res012 rescale  0.9   +0   ->  1 Inexact Rounded
res013 rescale  0.9   -1   ->  0.9
res014 rescale  0.9   -2   ->  0.90
res015 rescale  0.9   -3   ->  0.900
-- negatives
res021 rescale -0      0   ->  0
res022 rescale -1      0   -> -1
res023 rescale -0.1   +2   ->  0E+2 Inexact Rounded
res025 rescale -0.1   +1   ->  0E+1 Inexact Rounded
res026 rescale -0.1    0   ->  0 Inexact Rounded
res027 rescale -0.1   -1   -> -0.1
res028 rescale -0.1   -2   -> -0.10
res029 rescale -0.1   -3   -> -0.100
res030 rescale -0.4   +2   ->  0E+2 Inexact Rounded
res031 rescale -0.4   +1   ->  0E+1 Inexact Rounded
res032 rescale -0.4   +0   ->  0 Inexact Rounded
res033 rescale -0.4   -1   -> -0.4
res034 rescale -0.4   -2   -> -0.40
res035 rescale -0.4   -3   -> -0.400
res036 rescale -0.5   +2   ->  0E+2 Inexact Rounded
res037 rescale -0.5   +1   ->  0E+1 Inexact Rounded
res038 rescale -0.5   +0   -> -1 Inexact Rounded
res039 rescale -0.5   -1   -> -0.5
res040 rescale -0.5   -2   -> -0.50
res041 rescale -0.5   -3   -> -0.500
res042 rescale -0.9   +2   ->  0E+2 Inexact Rounded
res043 rescale -0.9   +1   ->  0E+1 Inexact Rounded
res044 rescale -0.9   +0   -> -1 Inexact Rounded
res045 rescale -0.9   -1   -> -0.9
res046 rescale -0.9   -2   -> -0.90
res047 rescale -0.9   -3   -> -0.900

-- examples from Base Specification
res080 rescale 2.17   -3   -> 2.170
res081 rescale 2.17   -2   -> 2.17
res082 rescale 2.17   -1   -> 2.2 Inexact Rounded
res083 rescale 2.17   -0   -> 2 Inexact Rounded
res084 rescale 2.17   +1   -> 0E+1 Inexact Rounded
res085 rescale 217    -1   -> 217.0
res086 rescale 217     0   -> 217
res087 rescale 217    +1   -> 2.2E+2 Inexact Rounded
res088 rescale 217    +2   -> 2E+2 Inexact Rounded

-- -ve exponents .. [mostly]
res089 rescale    12     +4   -> 0E+4 Inexact Rounded
res090 rescale    12     +3   -> 0E+3 Inexact Rounded
res091 rescale    12     +2   -> 0E+2 Inexact Rounded
res092 rescale    12     +1   -> 1E+1 Inexact Rounded
res093 rescale    1.2345 -2   -> 1.23 Inexact Rounded
res094 rescale    1.2355 -2   -> 1.24 Inexact Rounded
res095 rescale    1.2345 -6   -> 1.234500
res096 rescale    9.9999 -2   -> 10.00 Inexact Rounded
res097 rescale    0.0001 -2   -> 0.00 Inexact Rounded
res098 rescale    0.001  -2   -> 0.00 Inexact Rounded
res099 rescale    0.009  -2   -> 0.01 Inexact Rounded
res100 rescale   92      +2   -> 1E+2 Inexact Rounded
res101 rescale   -1       0   ->  -1
res102 rescale   -1      -1   ->  -1.0
res103 rescale   -1      -2   ->  -1.00
res104 rescale    0       0   ->  0
res105 rescale    0      -1   ->  0.0
res106 rescale    0      -2   ->  0.00
res107 rescale    0.00    0   ->  0
res108 rescale    0      +1   ->  0E+1
res109 rescale    0      +2   ->  0E+2
res110 rescale   +1       0   ->  1
res111 rescale   +1      -1   ->  1.0
res112 rescale   +1      -2   ->  1.00

res120 rescale   1.04  -3 ->  1.040
res121 rescale   1.04  -2 ->  1.04
res122 rescale   1.04  -1 ->  1.0 Inexact Rounded
res123 rescale   1.04   0 ->  1 Inexact Rounded
res124 rescale   1.05  -3 ->  1.050
res125 rescale   1.05  -2 ->  1.05
res126 rescale   1.05  -1 ->  1.1 Inexact Rounded
res127 rescale   1.05   0 ->  1 Inexact Rounded
res128 rescale   1.05  -3 ->  1.050
res129 rescale   1.05  -2 ->  1.05
res130 rescale   1.05  -1 ->  1.1 Inexact Rounded
res131 rescale   1.05   0 ->  1 Inexact Rounded
res132 rescale   1.06  -3 ->  1.060
res133 rescale   1.06  -2 ->  1.06
res134 rescale   1.06  -1 ->  1.1 Inexact Rounded
res135 rescale   1.06   0 ->  1 Inexact Rounded

res140 rescale   -10    -2  ->  -10.00
res141 rescale   +1     -2  ->  1.00
res142 rescale   +10    -2  ->  10.00
res143 rescale   1E+10  -2  -> ? Invalid_operation
res144 rescale   1E-10  -2  ->  0.00 Inexact Rounded
res145 rescale   1E-2   -2  ->  0.01
res146 rescale   0E-10  -2  ->  0.00

res150 rescale   1.0600 -5 ->  1.06000
res151 rescale   1.0600 -4 ->  1.0600
res152 rescale   1.0600 -3 ->  1.060 Rounded
res153 rescale   1.0600 -2 ->  1.06 Rounded
res154 rescale   1.0600 -1 ->  1.1 Inexact Rounded
res155 rescale   1.0600  0 ->  1 Inexact Rounded

-- +ve exponents ..
res201 rescale   -1   +0 ->  -1
res202 rescale   -1   +1 ->  0E+1 Inexact Rounded
res203 rescale   -1   +2 ->  0E+2 Inexact Rounded
res204 rescale    0   +0 ->  0
res205 rescale    0   +1 ->  0E+1
res206 rescale    0   +2 ->  0E+2
res207 rescale   +1   +0 ->  1
res208 rescale   +1   +1 ->  0E+1 Inexact Rounded
res209 rescale   +1   +2 ->  0E+2 Inexact Rounded

res220 rescale   1.04 +3 ->  0E+3 Inexact Rounded
res221 rescale   1.04 +2 ->  0E+2 Inexact Rounded
res222 rescale   1.04 +1 ->  0E+1 Inexact Rounded
res223 rescale   1.04 +0 ->  1 Inexact Rounded
res224 rescale   1.05 +3 ->  0E+3 Inexact Rounded
res225 rescale   1.05 +2 ->  0E+2 Inexact Rounded
res226 rescale   1.05 +1 ->  0E+1 Inexact Rounded
res227 rescale   1.05 +0 ->  1 Inexact Rounded
res228 rescale   1.05 +3 ->  0E+3 Inexact Rounded
res229 rescale   1.05 +2 ->  0E+2 Inexact Rounded
res230 rescale   1.05 +1 ->  0E+1 Inexact Rounded
res231 rescale   1.05 +0 ->  1 Inexact Rounded
res232 rescale   1.06 +3 ->  0E+3 Inexact Rounded
res233 rescale   1.06 +2 ->  0E+2 Inexact Rounded
res234 rescale   1.06 +1 ->  0E+1 Inexact Rounded
res235 rescale   1.06 +0 ->  1 Inexact Rounded

res240 rescale   -10   +1  ->  -1E+1 Rounded
res241 rescale   +1    +1  ->  0E+1 Inexact Rounded
res242 rescale   +10   +1  ->  1E+1 Rounded
res243 rescale   1E+1  +1  ->  1E+1          -- underneath this is E+1
res244 rescale   1E+2  +1  ->  1.0E+2        -- underneath this is E+1
res245 rescale   1E+3  +1  ->  1.00E+3       -- underneath this is E+1
res246 rescale   1E+4  +1  ->  1.000E+4      -- underneath this is E+1
res247 rescale   1E+5  +1  ->  1.0000E+5     -- underneath this is E+1
res248 rescale   1E+6  +1  ->  1.00000E+6    -- underneath this is E+1
res249 rescale   1E+7  +1  ->  1.000000E+7   -- underneath this is E+1
res250 rescale   1E+8  +1  ->  1.0000000E+8  -- underneath this is E+1
res251 rescale   1E+9  +1  ->  1.00000000E+9 -- underneath this is E+1
-- next one tries to add 9 zeros
res252 rescale   1E+10 +1  -> ? Invalid_operation
res253 rescale   1E-10 +1  ->  0E+1 Inexact Rounded
res254 rescale   1E-2  +1  ->  0E+1 Inexact Rounded
res255 rescale   0E-10 +1  ->  0E+1

res260 rescale   -10   +2  ->  0E+2 Inexact Rounded
res261 rescale   +1    +2  ->  0E+2 Inexact Rounded
res262 rescale   +10   +2  ->  0E+2 Inexact Rounded
res263 rescale   1E+1  +2  ->  0E+2 Inexact Rounded
res264 rescale   1E+2  +2  ->  1E+2
res265 rescale   1E+3  +2  ->  1.0E+3
res266 rescale   1E+4  +2  ->  1.00E+4
res267 rescale   1E+5  +2  ->  1.000E+5
res268 rescale   1E+6  +2  ->  1.0000E+6
res269 rescale   1E+7  +2  ->  1.00000E+7
res270 rescale   1E+8  +2  ->  1.000000E+8
res271 rescale   1E+9  +2  ->  1.0000000E+9
res272 rescale   1E+10 +2  ->  1.00000000E+10
res273 rescale   1E-10 +2  ->  0E+2 Inexact Rounded
res274 rescale   1E-2  +2  ->  0E+2 Inexact Rounded
res275 rescale   0E-10 +2  ->  0E+2

res280 rescale   -10   +3  ->  0E+3 Inexact Rounded
res281 rescale   +1    +3  ->  0E+3 Inexact Rounded
res282 rescale   +10   +3  ->  0E+3 Inexact Rounded
res283 rescale   1E+1  +3  ->  0E+3 Inexact Rounded
res284 rescale   1E+2  +3  ->  0E+3 Inexact Rounded
res285 rescale   1E+3  +3  ->  1E+3
res286 rescale   1E+4  +3  ->  1.0E+4
res287 rescale   1E+5  +3  ->  1.00E+5
res288 rescale   1E+6  +3  ->  1.000E+6
res289 rescale   1E+7  +3  ->  1.0000E+7
res290 rescale   1E+8  +3  ->  1.00000E+8
res291 rescale   1E+9  +3  ->  1.000000E+9
res292 rescale   1E+10 +3  ->  1.0000000E+10
res293 rescale   1E-10 +3  ->  0E+3 Inexact Rounded
res294 rescale   1E-2  +3  ->  0E+3 Inexact Rounded
res295 rescale   0E-10 +3  ->  0E+3

-- some individuals
precision: 9
res380 rescale   352364.506 -2 -> 352364.51 Inexact Rounded
res381 rescale   3523645.06 -2 -> 3523645.06
res382 rescale   35236450.6 -2 -> ? Invalid_operation
res383 rescale   352364506  -2 -> ? Invalid_operation
res384 rescale  -352364.506 -2 -> -352364.51 Inexact Rounded
res385 rescale  -3523645.06 -2 -> -3523645.06
res386 rescale  -35236450.6 -2 -> ? Invalid_operation
res387 rescale  -352364506  -2 -> ? Invalid_operation

-- some baddies
res394 rescale   222 +2.00100000000 -> ? Invalid_operation Rounded
res395 rescale   222 +2.000001      -> ? Invalid_operation
res396 rescale   222 +2.00000000    -> 2E+2 Inexact Rounded
res397 rescale   222 +2.000000001   -> ? Inexact Invalid_operation Lost_digits Rounded
res398 rescale   222 +2.0000000001  -> ? Inexact Invalid_operation Lost_digits Rounded
res399 rescale   222 +2.00000000001 -> ? Inexact Invalid_operation Lost_digits Rounded

-- lostDigits checks [rhs checks removed]
maxexponent: 999
minexponent: -999
precision: 9
res401 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
res403 rescale 1234567800  +1 -> 1.23456780E+9 Rounded
res405 rescale 1234567890  +1 -> 1.23456789E+9 Rounded
res407 rescale 1234567891  +1 -> 1.23456789E+9 Inexact Lost_digits Rounded
res409 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Lost_digits Rounded
res411 rescale 1234567896  +1 -> 1.23456790E+9 Inexact Lost_digits Rounded

precision: 15
-- still checking for [no] lostDigits
res441 rescale 12345678000 +3 -> 1.2345678E+10 Rounded
res443 rescale 1234567800  +1 -> 1.23456780E+9 Rounded
res445 rescale 1234567890  +1 -> 1.23456789E+9 Rounded
res447 rescale 1234567891  +1 -> 1.23456789E+9 Inexact Rounded
res449 rescale 12345678901 +2 -> 1.23456789E+10 Inexact Rounded
res451 rescale 1234567896  +1 -> 1.23456790E+9 Inexact Rounded

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