17db96d56Sopenharmony_ci------------------------------------------------------------------------ 27db96d56Sopenharmony_ci-- ddScalebB.decTest -- scale a decDouble by powers of 10 -- 37db96d56Sopenharmony_ci-- Copyright (c) IBM Corporation, 1981, 2008. All rights reserved. -- 47db96d56Sopenharmony_ci------------------------------------------------------------------------ 57db96d56Sopenharmony_ci-- Please see the document "General Decimal Arithmetic Testcases" -- 67db96d56Sopenharmony_ci-- at http://www2.hursley.ibm.com/decimal for the description of -- 77db96d56Sopenharmony_ci-- these testcases. -- 87db96d56Sopenharmony_ci-- -- 97db96d56Sopenharmony_ci-- These testcases are experimental ('beta' versions), and they -- 107db96d56Sopenharmony_ci-- may contain errors. They are offered on an as-is basis. In -- 117db96d56Sopenharmony_ci-- particular, achieving the same results as the tests here is not -- 127db96d56Sopenharmony_ci-- a guarantee that an implementation complies with any Standard -- 137db96d56Sopenharmony_ci-- or specification. The tests are not exhaustive. -- 147db96d56Sopenharmony_ci-- -- 157db96d56Sopenharmony_ci-- Please send comments, suggestions, and corrections to the author: -- 167db96d56Sopenharmony_ci-- Mike Cowlishaw, IBM Fellow -- 177db96d56Sopenharmony_ci-- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- 187db96d56Sopenharmony_ci-- mfc@uk.ibm.com -- 197db96d56Sopenharmony_ci------------------------------------------------------------------------ 207db96d56Sopenharmony_civersion: 2.59 217db96d56Sopenharmony_ci 227db96d56Sopenharmony_ciprecision: 16 237db96d56Sopenharmony_cimaxExponent: 384 247db96d56Sopenharmony_ciminExponent: -383 257db96d56Sopenharmony_ciextended: 1 267db96d56Sopenharmony_ciclamp: 1 277db96d56Sopenharmony_cirounding: half_even 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci-- Max |rhs| is 2*(384+16) = 800 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci-- Sanity checks 327db96d56Sopenharmony_ciddscb001 scaleb 7.50 10 -> 7.50E+10 337db96d56Sopenharmony_ciddscb002 scaleb 7.50 3 -> 7.50E+3 347db96d56Sopenharmony_ciddscb003 scaleb 7.50 2 -> 750 357db96d56Sopenharmony_ciddscb004 scaleb 7.50 1 -> 75.0 367db96d56Sopenharmony_ciddscb005 scaleb 7.50 0 -> 7.50 377db96d56Sopenharmony_ciddscb006 scaleb 7.50 -1 -> 0.750 387db96d56Sopenharmony_ciddscb007 scaleb 7.50 -2 -> 0.0750 397db96d56Sopenharmony_ciddscb008 scaleb 7.50 -10 -> 7.50E-10 407db96d56Sopenharmony_ciddscb009 scaleb -7.50 3 -> -7.50E+3 417db96d56Sopenharmony_ciddscb010 scaleb -7.50 2 -> -750 427db96d56Sopenharmony_ciddscb011 scaleb -7.50 1 -> -75.0 437db96d56Sopenharmony_ciddscb012 scaleb -7.50 0 -> -7.50 447db96d56Sopenharmony_ciddscb013 scaleb -7.50 -1 -> -0.750 457db96d56Sopenharmony_ci 467db96d56Sopenharmony_ci-- Infinities 477db96d56Sopenharmony_ciddscb014 scaleb Infinity 1 -> Infinity 487db96d56Sopenharmony_ciddscb015 scaleb -Infinity 2 -> -Infinity 497db96d56Sopenharmony_ciddscb016 scaleb Infinity -1 -> Infinity 507db96d56Sopenharmony_ciddscb017 scaleb -Infinity -2 -> -Infinity 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci-- Next two are somewhat undefined in 754r; treat as non-integer 537db96d56Sopenharmony_ciddscb018 scaleb 10 Infinity -> NaN Invalid_operation 547db96d56Sopenharmony_ciddscb019 scaleb 10 -Infinity -> NaN Invalid_operation 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci-- NaNs are undefined in 754r; assume usual processing 577db96d56Sopenharmony_ci-- NaNs, 0 payload 587db96d56Sopenharmony_ciddscb021 scaleb NaN 1 -> NaN 597db96d56Sopenharmony_ciddscb022 scaleb -NaN -1 -> -NaN 607db96d56Sopenharmony_ciddscb023 scaleb sNaN 1 -> NaN Invalid_operation 617db96d56Sopenharmony_ciddscb024 scaleb -sNaN 1 -> -NaN Invalid_operation 627db96d56Sopenharmony_ciddscb025 scaleb 4 NaN -> NaN 637db96d56Sopenharmony_ciddscb026 scaleb -Inf -NaN -> -NaN 647db96d56Sopenharmony_ciddscb027 scaleb 4 sNaN -> NaN Invalid_operation 657db96d56Sopenharmony_ciddscb028 scaleb Inf -sNaN -> -NaN Invalid_operation 667db96d56Sopenharmony_ci 677db96d56Sopenharmony_ci-- non-integer RHS 687db96d56Sopenharmony_ciddscb030 scaleb 1.23 1 -> 12.3 697db96d56Sopenharmony_ciddscb031 scaleb 1.23 1.00 -> NaN Invalid_operation 707db96d56Sopenharmony_ciddscb032 scaleb 1.23 1.1 -> NaN Invalid_operation 717db96d56Sopenharmony_ciddscb033 scaleb 1.23 1.01 -> NaN Invalid_operation 727db96d56Sopenharmony_ciddscb034 scaleb 1.23 0.01 -> NaN Invalid_operation 737db96d56Sopenharmony_ciddscb035 scaleb 1.23 0.11 -> NaN Invalid_operation 747db96d56Sopenharmony_ciddscb036 scaleb 1.23 0.999999999 -> NaN Invalid_operation 757db96d56Sopenharmony_ciddscb037 scaleb 1.23 -1 -> 0.123 767db96d56Sopenharmony_ciddscb038 scaleb 1.23 -1.00 -> NaN Invalid_operation 777db96d56Sopenharmony_ciddscb039 scaleb 1.23 -1.1 -> NaN Invalid_operation 787db96d56Sopenharmony_ciddscb040 scaleb 1.23 -1.01 -> NaN Invalid_operation 797db96d56Sopenharmony_ciddscb041 scaleb 1.23 -0.01 -> NaN Invalid_operation 807db96d56Sopenharmony_ciddscb042 scaleb 1.23 -0.11 -> NaN Invalid_operation 817db96d56Sopenharmony_ciddscb043 scaleb 1.23 -0.999999999 -> NaN Invalid_operation 827db96d56Sopenharmony_ciddscb044 scaleb 1.23 0.1 -> NaN Invalid_operation 837db96d56Sopenharmony_ciddscb045 scaleb 1.23 1E+1 -> NaN Invalid_operation 847db96d56Sopenharmony_ciddscb046 scaleb 1.23 1.1234E+6 -> NaN Invalid_operation 857db96d56Sopenharmony_ciddscb047 scaleb 1.23 1.123E+4 -> NaN Invalid_operation 867db96d56Sopenharmony_ci 877db96d56Sopenharmony_ci-- out-of range RHS 887db96d56Sopenharmony_ciddscb120 scaleb 1.23 799 -> Infinity Overflow Inexact Rounded 897db96d56Sopenharmony_ciddscb121 scaleb 1.23 800 -> Infinity Overflow Inexact Rounded 907db96d56Sopenharmony_ciddscb122 scaleb 1.23 801 -> NaN Invalid_operation 917db96d56Sopenharmony_ciddscb123 scaleb 1.23 802 -> NaN Invalid_operation 927db96d56Sopenharmony_ciddscb124 scaleb 1.23 -799 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped 937db96d56Sopenharmony_ciddscb125 scaleb 1.23 -800 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped 947db96d56Sopenharmony_ciddscb126 scaleb 1.23 -801 -> NaN Invalid_operation 957db96d56Sopenharmony_ciddscb127 scaleb 1.23 -802 -> NaN Invalid_operation 967db96d56Sopenharmony_ci 977db96d56Sopenharmony_ci-- NaNs, non-0 payload 987db96d56Sopenharmony_ci-- propagating NaNs 997db96d56Sopenharmony_ciddscb861 scaleb NaN01 -Inf -> NaN1 1007db96d56Sopenharmony_ciddscb862 scaleb -NaN02 -1000 -> -NaN2 1017db96d56Sopenharmony_ciddscb863 scaleb NaN03 1000 -> NaN3 1027db96d56Sopenharmony_ciddscb864 scaleb NaN04 Inf -> NaN4 1037db96d56Sopenharmony_ciddscb865 scaleb NaN05 NaN61 -> NaN5 1047db96d56Sopenharmony_ciddscb866 scaleb -Inf -NaN71 -> -NaN71 1057db96d56Sopenharmony_ciddscb867 scaleb -1000 NaN81 -> NaN81 1067db96d56Sopenharmony_ciddscb868 scaleb 1000 NaN91 -> NaN91 1077db96d56Sopenharmony_ciddscb869 scaleb Inf NaN101 -> NaN101 1087db96d56Sopenharmony_ciddscb871 scaleb sNaN011 -Inf -> NaN11 Invalid_operation 1097db96d56Sopenharmony_ciddscb872 scaleb sNaN012 -1000 -> NaN12 Invalid_operation 1107db96d56Sopenharmony_ciddscb873 scaleb -sNaN013 1000 -> -NaN13 Invalid_operation 1117db96d56Sopenharmony_ciddscb874 scaleb sNaN014 NaN171 -> NaN14 Invalid_operation 1127db96d56Sopenharmony_ciddscb875 scaleb sNaN015 sNaN181 -> NaN15 Invalid_operation 1137db96d56Sopenharmony_ciddscb876 scaleb NaN016 sNaN191 -> NaN191 Invalid_operation 1147db96d56Sopenharmony_ciddscb877 scaleb -Inf sNaN201 -> NaN201 Invalid_operation 1157db96d56Sopenharmony_ciddscb878 scaleb -1000 sNaN211 -> NaN211 Invalid_operation 1167db96d56Sopenharmony_ciddscb879 scaleb 1000 -sNaN221 -> -NaN221 Invalid_operation 1177db96d56Sopenharmony_ciddscb880 scaleb Inf sNaN231 -> NaN231 Invalid_operation 1187db96d56Sopenharmony_ciddscb881 scaleb NaN025 sNaN241 -> NaN241 Invalid_operation 1197db96d56Sopenharmony_ci 1207db96d56Sopenharmony_ci-- finites 1217db96d56Sopenharmony_ciddscb051 scaleb 7 -2 -> 0.07 1227db96d56Sopenharmony_ciddscb052 scaleb -7 -2 -> -0.07 1237db96d56Sopenharmony_ciddscb053 scaleb 75 -2 -> 0.75 1247db96d56Sopenharmony_ciddscb054 scaleb -75 -2 -> -0.75 1257db96d56Sopenharmony_ciddscb055 scaleb 7.50 -2 -> 0.0750 1267db96d56Sopenharmony_ciddscb056 scaleb -7.50 -2 -> -0.0750 1277db96d56Sopenharmony_ciddscb057 scaleb 7.500 -2 -> 0.07500 1287db96d56Sopenharmony_ciddscb058 scaleb -7.500 -2 -> -0.07500 1297db96d56Sopenharmony_ciddscb061 scaleb 7 -1 -> 0.7 1307db96d56Sopenharmony_ciddscb062 scaleb -7 -1 -> -0.7 1317db96d56Sopenharmony_ciddscb063 scaleb 75 -1 -> 7.5 1327db96d56Sopenharmony_ciddscb064 scaleb -75 -1 -> -7.5 1337db96d56Sopenharmony_ciddscb065 scaleb 7.50 -1 -> 0.750 1347db96d56Sopenharmony_ciddscb066 scaleb -7.50 -1 -> -0.750 1357db96d56Sopenharmony_ciddscb067 scaleb 7.500 -1 -> 0.7500 1367db96d56Sopenharmony_ciddscb068 scaleb -7.500 -1 -> -0.7500 1377db96d56Sopenharmony_ciddscb071 scaleb 7 0 -> 7 1387db96d56Sopenharmony_ciddscb072 scaleb -7 0 -> -7 1397db96d56Sopenharmony_ciddscb073 scaleb 75 0 -> 75 1407db96d56Sopenharmony_ciddscb074 scaleb -75 0 -> -75 1417db96d56Sopenharmony_ciddscb075 scaleb 7.50 0 -> 7.50 1427db96d56Sopenharmony_ciddscb076 scaleb -7.50 0 -> -7.50 1437db96d56Sopenharmony_ciddscb077 scaleb 7.500 0 -> 7.500 1447db96d56Sopenharmony_ciddscb078 scaleb -7.500 0 -> -7.500 1457db96d56Sopenharmony_ciddscb081 scaleb 7 1 -> 7E+1 1467db96d56Sopenharmony_ciddscb082 scaleb -7 1 -> -7E+1 1477db96d56Sopenharmony_ciddscb083 scaleb 75 1 -> 7.5E+2 1487db96d56Sopenharmony_ciddscb084 scaleb -75 1 -> -7.5E+2 1497db96d56Sopenharmony_ciddscb085 scaleb 7.50 1 -> 75.0 1507db96d56Sopenharmony_ciddscb086 scaleb -7.50 1 -> -75.0 1517db96d56Sopenharmony_ciddscb087 scaleb 7.500 1 -> 75.00 1527db96d56Sopenharmony_ciddscb088 scaleb -7.500 1 -> -75.00 1537db96d56Sopenharmony_ciddscb091 scaleb 7 2 -> 7E+2 1547db96d56Sopenharmony_ciddscb092 scaleb -7 2 -> -7E+2 1557db96d56Sopenharmony_ciddscb093 scaleb 75 2 -> 7.5E+3 1567db96d56Sopenharmony_ciddscb094 scaleb -75 2 -> -7.5E+3 1577db96d56Sopenharmony_ciddscb095 scaleb 7.50 2 -> 750 1587db96d56Sopenharmony_ciddscb096 scaleb -7.50 2 -> -750 1597db96d56Sopenharmony_ciddscb097 scaleb 7.500 2 -> 750.0 1607db96d56Sopenharmony_ciddscb098 scaleb -7.500 2 -> -750.0 1617db96d56Sopenharmony_ci 1627db96d56Sopenharmony_ci-- zeros 1637db96d56Sopenharmony_ciddscb111 scaleb 0 1 -> 0E+1 1647db96d56Sopenharmony_ciddscb112 scaleb -0 2 -> -0E+2 1657db96d56Sopenharmony_ciddscb113 scaleb 0E+4 3 -> 0E+7 1667db96d56Sopenharmony_ciddscb114 scaleb -0E+4 4 -> -0E+8 1677db96d56Sopenharmony_ciddscb115 scaleb 0.0000 5 -> 0E+1 1687db96d56Sopenharmony_ciddscb116 scaleb -0.0000 6 -> -0E+2 1697db96d56Sopenharmony_ciddscb117 scaleb 0E-141 7 -> 0E-134 1707db96d56Sopenharmony_ciddscb118 scaleb -0E-141 8 -> -0E-133 1717db96d56Sopenharmony_ci 1727db96d56Sopenharmony_ci-- Nmax, Nmin, Ntiny 1737db96d56Sopenharmony_ciddscb132 scaleb 9.999999999999999E+384 +384 -> Infinity Overflow Inexact Rounded 1747db96d56Sopenharmony_ciddscb133 scaleb 9.999999999999999E+384 +10 -> Infinity Overflow Inexact Rounded 1757db96d56Sopenharmony_ciddscb134 scaleb 9.999999999999999E+384 +1 -> Infinity Overflow Inexact Rounded 1767db96d56Sopenharmony_ciddscb135 scaleb 9.999999999999999E+384 0 -> 9.999999999999999E+384 1777db96d56Sopenharmony_ciddscb136 scaleb 9.999999999999999E+384 -1 -> 9.999999999999999E+383 1787db96d56Sopenharmony_ciddscb137 scaleb 1E-383 +1 -> 1E-382 1797db96d56Sopenharmony_ciddscb138 scaleb 1E-383 -0 -> 1E-383 1807db96d56Sopenharmony_ciddscb139 scaleb 1E-383 -1 -> 1E-384 Subnormal 1817db96d56Sopenharmony_ciddscb140 scaleb 1.000000000000000E-383 +1 -> 1.000000000000000E-382 1827db96d56Sopenharmony_ciddscb141 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383 1837db96d56Sopenharmony_ciddscb142 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded 1847db96d56Sopenharmony_ciddscb143 scaleb 1E-398 +1 -> 1E-397 Subnormal 1857db96d56Sopenharmony_ciddscb144 scaleb 1E-398 -0 -> 1E-398 Subnormal 1867db96d56Sopenharmony_ciddscb145 scaleb 1E-398 -1 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped 1877db96d56Sopenharmony_ci 1887db96d56Sopenharmony_ciddscb150 scaleb -1E-398 +1 -> -1E-397 Subnormal 1897db96d56Sopenharmony_ciddscb151 scaleb -1E-398 -0 -> -1E-398 Subnormal 1907db96d56Sopenharmony_ciddscb152 scaleb -1E-398 -1 -> -0E-398 Underflow Subnormal Inexact Rounded Clamped 1917db96d56Sopenharmony_ciddscb153 scaleb -1.000000000000000E-383 +1 -> -1.000000000000000E-382 1927db96d56Sopenharmony_ciddscb154 scaleb -1.000000000000000E-383 +0 -> -1.000000000000000E-383 1937db96d56Sopenharmony_ciddscb155 scaleb -1.000000000000000E-383 -1 -> -1.00000000000000E-384 Subnormal Rounded 1947db96d56Sopenharmony_ciddscb156 scaleb -1E-383 +1 -> -1E-382 1957db96d56Sopenharmony_ciddscb157 scaleb -1E-383 -0 -> -1E-383 1967db96d56Sopenharmony_ciddscb158 scaleb -1E-383 -1 -> -1E-384 Subnormal 1977db96d56Sopenharmony_ciddscb159 scaleb -9.999999999999999E+384 +1 -> -Infinity Overflow Inexact Rounded 1987db96d56Sopenharmony_ciddscb160 scaleb -9.999999999999999E+384 +0 -> -9.999999999999999E+384 1997db96d56Sopenharmony_ciddscb161 scaleb -9.999999999999999E+384 -1 -> -9.999999999999999E+383 2007db96d56Sopenharmony_ciddscb162 scaleb -9E+384 +1 -> -Infinity Overflow Inexact Rounded 2017db96d56Sopenharmony_ciddscb163 scaleb -1E+384 +1 -> -Infinity Overflow Inexact Rounded 2027db96d56Sopenharmony_ci 2037db96d56Sopenharmony_ci-- some Origami 2047db96d56Sopenharmony_ci-- (these check that overflow is being done correctly) 2057db96d56Sopenharmony_ciddscb171 scaleb 1000E+365 +1 -> 1.000E+369 2067db96d56Sopenharmony_ciddscb172 scaleb 1000E+366 +1 -> 1.000E+370 2077db96d56Sopenharmony_ciddscb173 scaleb 1000E+367 +1 -> 1.000E+371 2087db96d56Sopenharmony_ciddscb174 scaleb 1000E+368 +1 -> 1.000E+372 2097db96d56Sopenharmony_ciddscb175 scaleb 1000E+369 +1 -> 1.0000E+373 Clamped 2107db96d56Sopenharmony_ciddscb176 scaleb 1000E+370 +1 -> 1.00000E+374 Clamped 2117db96d56Sopenharmony_ciddscb177 scaleb 1000E+371 +1 -> 1.000000E+375 Clamped 2127db96d56Sopenharmony_ciddscb178 scaleb 1000E+372 +1 -> 1.0000000E+376 Clamped 2137db96d56Sopenharmony_ciddscb179 scaleb 1000E+373 +1 -> 1.00000000E+377 Clamped 2147db96d56Sopenharmony_ciddscb180 scaleb 1000E+374 +1 -> 1.000000000E+378 Clamped 2157db96d56Sopenharmony_ciddscb181 scaleb 1000E+375 +1 -> 1.0000000000E+379 Clamped 2167db96d56Sopenharmony_ciddscb182 scaleb 1000E+376 +1 -> 1.00000000000E+380 Clamped 2177db96d56Sopenharmony_ciddscb183 scaleb 1000E+377 +1 -> 1.000000000000E+381 Clamped 2187db96d56Sopenharmony_ciddscb184 scaleb 1000E+378 +1 -> 1.0000000000000E+382 Clamped 2197db96d56Sopenharmony_ciddscb185 scaleb 1000E+379 +1 -> 1.00000000000000E+383 Clamped 2207db96d56Sopenharmony_ciddscb186 scaleb 1000E+380 +1 -> 1.000000000000000E+384 Clamped 2217db96d56Sopenharmony_ciddscb187 scaleb 1000E+381 +1 -> Infinity Overflow Inexact Rounded 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci-- and a few more subnormal truncations 2247db96d56Sopenharmony_ci-- (these check that underflow is being done correctly) 2257db96d56Sopenharmony_ciddscb201 scaleb 1.000000000000000E-383 0 -> 1.000000000000000E-383 2267db96d56Sopenharmony_ciddscb202 scaleb 1.000000000000000E-383 -1 -> 1.00000000000000E-384 Subnormal Rounded 2277db96d56Sopenharmony_ciddscb203 scaleb 1.000000000000000E-383 -2 -> 1.0000000000000E-385 Subnormal Rounded 2287db96d56Sopenharmony_ciddscb204 scaleb 1.000000000000000E-383 -3 -> 1.000000000000E-386 Subnormal Rounded 2297db96d56Sopenharmony_ciddscb205 scaleb 1.000000000000000E-383 -4 -> 1.00000000000E-387 Subnormal Rounded 2307db96d56Sopenharmony_ciddscb206 scaleb 1.000000000000000E-383 -5 -> 1.0000000000E-388 Subnormal Rounded 2317db96d56Sopenharmony_ciddscb207 scaleb 1.000000000000000E-383 -6 -> 1.000000000E-389 Subnormal Rounded 2327db96d56Sopenharmony_ciddscb208 scaleb 1.000000000000000E-383 -7 -> 1.00000000E-390 Subnormal Rounded 2337db96d56Sopenharmony_ciddscb209 scaleb 1.000000000000000E-383 -8 -> 1.0000000E-391 Subnormal Rounded 2347db96d56Sopenharmony_ciddscb210 scaleb 1.000000000000000E-383 -9 -> 1.000000E-392 Subnormal Rounded 2357db96d56Sopenharmony_ciddscb211 scaleb 1.000000000000000E-383 -10 -> 1.00000E-393 Subnormal Rounded 2367db96d56Sopenharmony_ciddscb212 scaleb 1.000000000000000E-383 -11 -> 1.0000E-394 Subnormal Rounded 2377db96d56Sopenharmony_ciddscb213 scaleb 1.000000000000000E-383 -12 -> 1.000E-395 Subnormal Rounded 2387db96d56Sopenharmony_ciddscb214 scaleb 1.000000000000000E-383 -13 -> 1.00E-396 Subnormal Rounded 2397db96d56Sopenharmony_ciddscb215 scaleb 1.000000000000000E-383 -14 -> 1.0E-397 Subnormal Rounded 2407db96d56Sopenharmony_ciddscb216 scaleb 1.000000000000000E-383 -15 -> 1E-398 Subnormal Rounded 2417db96d56Sopenharmony_ciddscb217 scaleb 1.000000000000000E-383 -16 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped 2427db96d56Sopenharmony_ciddscb218 scaleb 1.000000000000000E-383 -17 -> 0E-398 Underflow Subnormal Inexact Rounded Clamped 2437db96d56Sopenharmony_ci 244