17db96d56Sopenharmony_ci------------------------------------------------------------------------
27db96d56Sopenharmony_ci-- ddToIntegral.decTest -- round Double to integral value             --
37db96d56Sopenharmony_ci-- Copyright (c) IBM Corporation, 2001, 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_ci-- This set of tests tests the extended specification 'round-to-integral
237db96d56Sopenharmony_ci-- value-exact' operations (from IEEE 854, later modified in 754r).
247db96d56Sopenharmony_ci-- All non-zero results are defined as being those from either copy or
257db96d56Sopenharmony_ci-- quantize, so those are assumed to have been tested extensively
267db96d56Sopenharmony_ci-- elsewhere; the tests here are for integrity, rounding mode, etc.
277db96d56Sopenharmony_ci-- Also, it is assumed the test harness will use these tests for both
287db96d56Sopenharmony_ci-- ToIntegralExact (which does set Inexact) and the fixed-name
297db96d56Sopenharmony_ci-- functions (which do not set Inexact).
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci-- Note that decNumber implements an earlier definition of toIntegral
327db96d56Sopenharmony_ci-- which never sets Inexact; the decTest operator for that is called
337db96d56Sopenharmony_ci-- 'tointegral' instead of 'tointegralx'.
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ciprecision:   16
367db96d56Sopenharmony_cimaxExponent: 384
377db96d56Sopenharmony_ciminExponent: -383
387db96d56Sopenharmony_ciextended:    1
397db96d56Sopenharmony_ciclamp:       1
407db96d56Sopenharmony_cirounding:    half_even
417db96d56Sopenharmony_ci
427db96d56Sopenharmony_ciddintx001 tointegralx      0     ->  0
437db96d56Sopenharmony_ciddintx002 tointegralx      0.0   ->  0
447db96d56Sopenharmony_ciddintx003 tointegralx      0.1   ->  0  Inexact Rounded
457db96d56Sopenharmony_ciddintx004 tointegralx      0.2   ->  0  Inexact Rounded
467db96d56Sopenharmony_ciddintx005 tointegralx      0.3   ->  0  Inexact Rounded
477db96d56Sopenharmony_ciddintx006 tointegralx      0.4   ->  0  Inexact Rounded
487db96d56Sopenharmony_ciddintx007 tointegralx      0.5   ->  0  Inexact Rounded
497db96d56Sopenharmony_ciddintx008 tointegralx      0.6   ->  1  Inexact Rounded
507db96d56Sopenharmony_ciddintx009 tointegralx      0.7   ->  1  Inexact Rounded
517db96d56Sopenharmony_ciddintx010 tointegralx      0.8   ->  1  Inexact Rounded
527db96d56Sopenharmony_ciddintx011 tointegralx      0.9   ->  1  Inexact Rounded
537db96d56Sopenharmony_ciddintx012 tointegralx      1     ->  1
547db96d56Sopenharmony_ciddintx013 tointegralx      1.0   ->  1  Rounded
557db96d56Sopenharmony_ciddintx014 tointegralx      1.1   ->  1  Inexact Rounded
567db96d56Sopenharmony_ciddintx015 tointegralx      1.2   ->  1  Inexact Rounded
577db96d56Sopenharmony_ciddintx016 tointegralx      1.3   ->  1  Inexact Rounded
587db96d56Sopenharmony_ciddintx017 tointegralx      1.4   ->  1  Inexact Rounded
597db96d56Sopenharmony_ciddintx018 tointegralx      1.5   ->  2  Inexact Rounded
607db96d56Sopenharmony_ciddintx019 tointegralx      1.6   ->  2  Inexact Rounded
617db96d56Sopenharmony_ciddintx020 tointegralx      1.7   ->  2  Inexact Rounded
627db96d56Sopenharmony_ciddintx021 tointegralx      1.8   ->  2  Inexact Rounded
637db96d56Sopenharmony_ciddintx022 tointegralx      1.9   ->  2  Inexact Rounded
647db96d56Sopenharmony_ci-- negatives
657db96d56Sopenharmony_ciddintx031 tointegralx     -0     -> -0
667db96d56Sopenharmony_ciddintx032 tointegralx     -0.0   -> -0
677db96d56Sopenharmony_ciddintx033 tointegralx     -0.1   -> -0  Inexact Rounded
687db96d56Sopenharmony_ciddintx034 tointegralx     -0.2   -> -0  Inexact Rounded
697db96d56Sopenharmony_ciddintx035 tointegralx     -0.3   -> -0  Inexact Rounded
707db96d56Sopenharmony_ciddintx036 tointegralx     -0.4   -> -0  Inexact Rounded
717db96d56Sopenharmony_ciddintx037 tointegralx     -0.5   -> -0  Inexact Rounded
727db96d56Sopenharmony_ciddintx038 tointegralx     -0.6   -> -1  Inexact Rounded
737db96d56Sopenharmony_ciddintx039 tointegralx     -0.7   -> -1  Inexact Rounded
747db96d56Sopenharmony_ciddintx040 tointegralx     -0.8   -> -1  Inexact Rounded
757db96d56Sopenharmony_ciddintx041 tointegralx     -0.9   -> -1  Inexact Rounded
767db96d56Sopenharmony_ciddintx042 tointegralx     -1     -> -1
777db96d56Sopenharmony_ciddintx043 tointegralx     -1.0   -> -1  Rounded
787db96d56Sopenharmony_ciddintx044 tointegralx     -1.1   -> -1  Inexact Rounded
797db96d56Sopenharmony_ciddintx045 tointegralx     -1.2   -> -1  Inexact Rounded
807db96d56Sopenharmony_ciddintx046 tointegralx     -1.3   -> -1  Inexact Rounded
817db96d56Sopenharmony_ciddintx047 tointegralx     -1.4   -> -1  Inexact Rounded
827db96d56Sopenharmony_ciddintx048 tointegralx     -1.5   -> -2  Inexact Rounded
837db96d56Sopenharmony_ciddintx049 tointegralx     -1.6   -> -2  Inexact Rounded
847db96d56Sopenharmony_ciddintx050 tointegralx     -1.7   -> -2  Inexact Rounded
857db96d56Sopenharmony_ciddintx051 tointegralx     -1.8   -> -2  Inexact Rounded
867db96d56Sopenharmony_ciddintx052 tointegralx     -1.9   -> -2  Inexact Rounded
877db96d56Sopenharmony_ci-- next two would be NaN using quantize(x, 0)
887db96d56Sopenharmony_ciddintx053 tointegralx    10E+60  -> 1.0E+61
897db96d56Sopenharmony_ciddintx054 tointegralx   -10E+60  -> -1.0E+61
907db96d56Sopenharmony_ci
917db96d56Sopenharmony_ci-- numbers around precision
927db96d56Sopenharmony_ciddintx060 tointegralx '56267E-17'   -> '0'      Inexact Rounded
937db96d56Sopenharmony_ciddintx061 tointegralx '56267E-5'    -> '1'      Inexact Rounded
947db96d56Sopenharmony_ciddintx062 tointegralx '56267E-2'    -> '563'    Inexact Rounded
957db96d56Sopenharmony_ciddintx063 tointegralx '56267E-1'    -> '5627'   Inexact Rounded
967db96d56Sopenharmony_ciddintx065 tointegralx '56267E-0'    -> '56267'
977db96d56Sopenharmony_ciddintx066 tointegralx '56267E+0'    -> '56267'
987db96d56Sopenharmony_ciddintx067 tointegralx '56267E+1'    -> '5.6267E+5'
997db96d56Sopenharmony_ciddintx068 tointegralx '56267E+9'    -> '5.6267E+13'
1007db96d56Sopenharmony_ciddintx069 tointegralx '56267E+10'   -> '5.6267E+14'
1017db96d56Sopenharmony_ciddintx070 tointegralx '56267E+11'   -> '5.6267E+15'
1027db96d56Sopenharmony_ciddintx071 tointegralx '56267E+12'   -> '5.6267E+16'
1037db96d56Sopenharmony_ciddintx072 tointegralx '56267E+13'   -> '5.6267E+17'
1047db96d56Sopenharmony_ciddintx073 tointegralx '1.23E+96'    -> '1.23E+96'
1057db96d56Sopenharmony_ciddintx074 tointegralx '1.23E+384'   -> #47fd300000000000  Clamped
1067db96d56Sopenharmony_ci
1077db96d56Sopenharmony_ciddintx080 tointegralx '-56267E-10'  -> '-0'      Inexact Rounded
1087db96d56Sopenharmony_ciddintx081 tointegralx '-56267E-5'   -> '-1'      Inexact Rounded
1097db96d56Sopenharmony_ciddintx082 tointegralx '-56267E-2'   -> '-563'    Inexact Rounded
1107db96d56Sopenharmony_ciddintx083 tointegralx '-56267E-1'   -> '-5627'   Inexact Rounded
1117db96d56Sopenharmony_ciddintx085 tointegralx '-56267E-0'   -> '-56267'
1127db96d56Sopenharmony_ciddintx086 tointegralx '-56267E+0'   -> '-56267'
1137db96d56Sopenharmony_ciddintx087 tointegralx '-56267E+1'   -> '-5.6267E+5'
1147db96d56Sopenharmony_ciddintx088 tointegralx '-56267E+9'   -> '-5.6267E+13'
1157db96d56Sopenharmony_ciddintx089 tointegralx '-56267E+10'  -> '-5.6267E+14'
1167db96d56Sopenharmony_ciddintx090 tointegralx '-56267E+11'  -> '-5.6267E+15'
1177db96d56Sopenharmony_ciddintx091 tointegralx '-56267E+12'  -> '-5.6267E+16'
1187db96d56Sopenharmony_ciddintx092 tointegralx '-56267E+13'  -> '-5.6267E+17'
1197db96d56Sopenharmony_ciddintx093 tointegralx '-1.23E+96'   -> '-1.23E+96'
1207db96d56Sopenharmony_ciddintx094 tointegralx '-1.23E+384'  -> #c7fd300000000000  Clamped
1217db96d56Sopenharmony_ci
1227db96d56Sopenharmony_ci-- subnormal inputs
1237db96d56Sopenharmony_ciddintx100 tointegralx        1E-299 -> 0  Inexact Rounded
1247db96d56Sopenharmony_ciddintx101 tointegralx      0.1E-299 -> 0  Inexact Rounded
1257db96d56Sopenharmony_ciddintx102 tointegralx     0.01E-299 -> 0  Inexact Rounded
1267db96d56Sopenharmony_ciddintx103 tointegralx        0E-299 -> 0
1277db96d56Sopenharmony_ci
1287db96d56Sopenharmony_ci-- specials and zeros
1297db96d56Sopenharmony_ciddintx120 tointegralx 'Inf'       ->  Infinity
1307db96d56Sopenharmony_ciddintx121 tointegralx '-Inf'      -> -Infinity
1317db96d56Sopenharmony_ciddintx122 tointegralx   NaN       ->  NaN
1327db96d56Sopenharmony_ciddintx123 tointegralx  sNaN       ->  NaN  Invalid_operation
1337db96d56Sopenharmony_ciddintx124 tointegralx     0       ->  0
1347db96d56Sopenharmony_ciddintx125 tointegralx    -0       -> -0
1357db96d56Sopenharmony_ciddintx126 tointegralx     0.000   ->  0
1367db96d56Sopenharmony_ciddintx127 tointegralx     0.00    ->  0
1377db96d56Sopenharmony_ciddintx128 tointegralx     0.0     ->  0
1387db96d56Sopenharmony_ciddintx129 tointegralx     0       ->  0
1397db96d56Sopenharmony_ciddintx130 tointegralx     0E-3    ->  0
1407db96d56Sopenharmony_ciddintx131 tointegralx     0E-2    ->  0
1417db96d56Sopenharmony_ciddintx132 tointegralx     0E-1    ->  0
1427db96d56Sopenharmony_ciddintx133 tointegralx     0E-0    ->  0
1437db96d56Sopenharmony_ciddintx134 tointegralx     0E+1    ->  0E+1
1447db96d56Sopenharmony_ciddintx135 tointegralx     0E+2    ->  0E+2
1457db96d56Sopenharmony_ciddintx136 tointegralx     0E+3    ->  0E+3
1467db96d56Sopenharmony_ciddintx137 tointegralx     0E+4    ->  0E+4
1477db96d56Sopenharmony_ciddintx138 tointegralx     0E+5    ->  0E+5
1487db96d56Sopenharmony_ciddintx139 tointegralx    -0.000   -> -0
1497db96d56Sopenharmony_ciddintx140 tointegralx    -0.00    -> -0
1507db96d56Sopenharmony_ciddintx141 tointegralx    -0.0     -> -0
1517db96d56Sopenharmony_ciddintx142 tointegralx    -0       -> -0
1527db96d56Sopenharmony_ciddintx143 tointegralx    -0E-3    -> -0
1537db96d56Sopenharmony_ciddintx144 tointegralx    -0E-2    -> -0
1547db96d56Sopenharmony_ciddintx145 tointegralx    -0E-1    -> -0
1557db96d56Sopenharmony_ciddintx146 tointegralx    -0E-0    -> -0
1567db96d56Sopenharmony_ciddintx147 tointegralx    -0E+1    -> -0E+1
1577db96d56Sopenharmony_ciddintx148 tointegralx    -0E+2    -> -0E+2
1587db96d56Sopenharmony_ciddintx149 tointegralx    -0E+3    -> -0E+3
1597db96d56Sopenharmony_ciddintx150 tointegralx    -0E+4    -> -0E+4
1607db96d56Sopenharmony_ciddintx151 tointegralx    -0E+5    -> -0E+5
1617db96d56Sopenharmony_ci-- propagating NaNs
1627db96d56Sopenharmony_ciddintx152 tointegralx   NaN808    ->  NaN808
1637db96d56Sopenharmony_ciddintx153 tointegralx  sNaN080    ->  NaN80  Invalid_operation
1647db96d56Sopenharmony_ciddintx154 tointegralx  -NaN808    -> -NaN808
1657db96d56Sopenharmony_ciddintx155 tointegralx -sNaN080    -> -NaN80  Invalid_operation
1667db96d56Sopenharmony_ciddintx156 tointegralx  -NaN       -> -NaN
1677db96d56Sopenharmony_ciddintx157 tointegralx -sNaN       -> -NaN    Invalid_operation
1687db96d56Sopenharmony_ci
1697db96d56Sopenharmony_ci-- examples
1707db96d56Sopenharmony_cirounding:    half_up
1717db96d56Sopenharmony_ciddintx200 tointegralx     2.1    -> 2            Inexact Rounded
1727db96d56Sopenharmony_ciddintx201 tointegralx   100      -> 100
1737db96d56Sopenharmony_ciddintx202 tointegralx   100.0    -> 100          Rounded
1747db96d56Sopenharmony_ciddintx203 tointegralx   101.5    -> 102          Inexact Rounded
1757db96d56Sopenharmony_ciddintx204 tointegralx  -101.5    -> -102         Inexact Rounded
1767db96d56Sopenharmony_ciddintx205 tointegralx   10E+5    -> 1.0E+6
1777db96d56Sopenharmony_ciddintx206 tointegralx  7.89E+77  -> 7.89E+77
1787db96d56Sopenharmony_ciddintx207 tointegralx   -Inf     -> -Infinity
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci
1817db96d56Sopenharmony_ci-- all rounding modes
1827db96d56Sopenharmony_cirounding:    half_even
1837db96d56Sopenharmony_ciddintx210 tointegralx     55.5   ->  56  Inexact Rounded
1847db96d56Sopenharmony_ciddintx211 tointegralx     56.5   ->  56  Inexact Rounded
1857db96d56Sopenharmony_ciddintx212 tointegralx     57.5   ->  58  Inexact Rounded
1867db96d56Sopenharmony_ciddintx213 tointegralx    -55.5   -> -56  Inexact Rounded
1877db96d56Sopenharmony_ciddintx214 tointegralx    -56.5   -> -56  Inexact Rounded
1887db96d56Sopenharmony_ciddintx215 tointegralx    -57.5   -> -58  Inexact Rounded
1897db96d56Sopenharmony_ci
1907db96d56Sopenharmony_cirounding:    half_up
1917db96d56Sopenharmony_ci
1927db96d56Sopenharmony_ciddintx220 tointegralx     55.5   ->  56  Inexact Rounded
1937db96d56Sopenharmony_ciddintx221 tointegralx     56.5   ->  57  Inexact Rounded
1947db96d56Sopenharmony_ciddintx222 tointegralx     57.5   ->  58  Inexact Rounded
1957db96d56Sopenharmony_ciddintx223 tointegralx    -55.5   -> -56  Inexact Rounded
1967db96d56Sopenharmony_ciddintx224 tointegralx    -56.5   -> -57  Inexact Rounded
1977db96d56Sopenharmony_ciddintx225 tointegralx    -57.5   -> -58  Inexact Rounded
1987db96d56Sopenharmony_ci
1997db96d56Sopenharmony_cirounding:    half_down
2007db96d56Sopenharmony_ci
2017db96d56Sopenharmony_ciddintx230 tointegralx     55.5   ->  55  Inexact Rounded
2027db96d56Sopenharmony_ciddintx231 tointegralx     56.5   ->  56  Inexact Rounded
2037db96d56Sopenharmony_ciddintx232 tointegralx     57.5   ->  57  Inexact Rounded
2047db96d56Sopenharmony_ciddintx233 tointegralx    -55.5   -> -55  Inexact Rounded
2057db96d56Sopenharmony_ciddintx234 tointegralx    -56.5   -> -56  Inexact Rounded
2067db96d56Sopenharmony_ciddintx235 tointegralx    -57.5   -> -57  Inexact Rounded
2077db96d56Sopenharmony_ci
2087db96d56Sopenharmony_cirounding:    up
2097db96d56Sopenharmony_ci
2107db96d56Sopenharmony_ciddintx240 tointegralx     55.3   ->  56  Inexact Rounded
2117db96d56Sopenharmony_ciddintx241 tointegralx     56.3   ->  57  Inexact Rounded
2127db96d56Sopenharmony_ciddintx242 tointegralx     57.3   ->  58  Inexact Rounded
2137db96d56Sopenharmony_ciddintx243 tointegralx    -55.3   -> -56  Inexact Rounded
2147db96d56Sopenharmony_ciddintx244 tointegralx    -56.3   -> -57  Inexact Rounded
2157db96d56Sopenharmony_ciddintx245 tointegralx    -57.3   -> -58  Inexact Rounded
2167db96d56Sopenharmony_ci
2177db96d56Sopenharmony_cirounding:    down
2187db96d56Sopenharmony_ci
2197db96d56Sopenharmony_ciddintx250 tointegralx     55.7   ->  55  Inexact Rounded
2207db96d56Sopenharmony_ciddintx251 tointegralx     56.7   ->  56  Inexact Rounded
2217db96d56Sopenharmony_ciddintx252 tointegralx     57.7   ->  57  Inexact Rounded
2227db96d56Sopenharmony_ciddintx253 tointegralx    -55.7   -> -55  Inexact Rounded
2237db96d56Sopenharmony_ciddintx254 tointegralx    -56.7   -> -56  Inexact Rounded
2247db96d56Sopenharmony_ciddintx255 tointegralx    -57.7   -> -57  Inexact Rounded
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_cirounding:    ceiling
2277db96d56Sopenharmony_ci
2287db96d56Sopenharmony_ciddintx260 tointegralx     55.3   ->  56  Inexact Rounded
2297db96d56Sopenharmony_ciddintx261 tointegralx     56.3   ->  57  Inexact Rounded
2307db96d56Sopenharmony_ciddintx262 tointegralx     57.3   ->  58  Inexact Rounded
2317db96d56Sopenharmony_ciddintx263 tointegralx    -55.3   -> -55  Inexact Rounded
2327db96d56Sopenharmony_ciddintx264 tointegralx    -56.3   -> -56  Inexact Rounded
2337db96d56Sopenharmony_ciddintx265 tointegralx    -57.3   -> -57  Inexact Rounded
2347db96d56Sopenharmony_ci
2357db96d56Sopenharmony_cirounding:    floor
2367db96d56Sopenharmony_ci
2377db96d56Sopenharmony_ciddintx270 tointegralx     55.7   ->  55  Inexact Rounded
2387db96d56Sopenharmony_ciddintx271 tointegralx     56.7   ->  56  Inexact Rounded
2397db96d56Sopenharmony_ciddintx272 tointegralx     57.7   ->  57  Inexact Rounded
2407db96d56Sopenharmony_ciddintx273 tointegralx    -55.7   -> -56  Inexact Rounded
2417db96d56Sopenharmony_ciddintx274 tointegralx    -56.7   -> -57  Inexact Rounded
2427db96d56Sopenharmony_ciddintx275 tointegralx    -57.7   -> -58  Inexact Rounded
2437db96d56Sopenharmony_ci
2447db96d56Sopenharmony_ci-- Int and uInt32 edge values for testing conversions
2457db96d56Sopenharmony_ciddintx300 tointegralx -2147483646  -> -2147483646
2467db96d56Sopenharmony_ciddintx301 tointegralx -2147483647  -> -2147483647
2477db96d56Sopenharmony_ciddintx302 tointegralx -2147483648  -> -2147483648
2487db96d56Sopenharmony_ciddintx303 tointegralx -2147483649  -> -2147483649
2497db96d56Sopenharmony_ciddintx304 tointegralx  2147483646  ->  2147483646
2507db96d56Sopenharmony_ciddintx305 tointegralx  2147483647  ->  2147483647
2517db96d56Sopenharmony_ciddintx306 tointegralx  2147483648  ->  2147483648
2527db96d56Sopenharmony_ciddintx307 tointegralx  2147483649  ->  2147483649
2537db96d56Sopenharmony_ciddintx308 tointegralx  4294967294  ->  4294967294
2547db96d56Sopenharmony_ciddintx309 tointegralx  4294967295  ->  4294967295
2557db96d56Sopenharmony_ciddintx310 tointegralx  4294967296  ->  4294967296
2567db96d56Sopenharmony_ciddintx311 tointegralx  4294967297  ->  4294967297
2577db96d56Sopenharmony_ci
258