You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

264 lines
11 KiB
Plaintext

------------------------------------------------------------------------
-- 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