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