17db96d56Sopenharmony_ci------------------------------------------------------------------------
27db96d56Sopenharmony_ci-- shift.decTest -- shift coefficient left or right                   --
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_ciextended:    1
237db96d56Sopenharmony_ciprecision:   9
247db96d56Sopenharmony_cirounding:    half_up
257db96d56Sopenharmony_cimaxExponent: 999
267db96d56Sopenharmony_ciminExponent: -999
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci-- Sanity check
297db96d56Sopenharmony_cishix001 shift          0    0  ->  0
307db96d56Sopenharmony_cishix002 shift          0    2  ->  0
317db96d56Sopenharmony_cishix003 shift          1    2  ->  100
327db96d56Sopenharmony_cishix004 shift          1    8  ->  100000000
337db96d56Sopenharmony_cishix005 shift          1    9  ->  0
347db96d56Sopenharmony_cishix006 shift          1   -1  ->  0
357db96d56Sopenharmony_cishix007 shift  123456789   -1  ->  12345678
367db96d56Sopenharmony_cishix008 shift  123456789   -8  ->  1
377db96d56Sopenharmony_cishix009 shift  123456789   -9  ->  0
387db96d56Sopenharmony_cishix010 shift          0   -2  ->  0
397db96d56Sopenharmony_ci
407db96d56Sopenharmony_ci-- rhs must be an integer
417db96d56Sopenharmony_cishix011 shift        1    1.5    -> NaN Invalid_operation
427db96d56Sopenharmony_cishix012 shift        1    1.0    -> NaN Invalid_operation
437db96d56Sopenharmony_cishix013 shift        1    0.1    -> NaN Invalid_operation
447db96d56Sopenharmony_cishix014 shift        1    0.0    -> NaN Invalid_operation
457db96d56Sopenharmony_cishix015 shift        1    1E+1   -> NaN Invalid_operation
467db96d56Sopenharmony_cishix016 shift        1    1E+99  -> NaN Invalid_operation
477db96d56Sopenharmony_cishix017 shift        1    Inf    -> NaN Invalid_operation
487db96d56Sopenharmony_cishix018 shift        1    -Inf   -> NaN Invalid_operation
497db96d56Sopenharmony_ci-- and |rhs| <= precision
507db96d56Sopenharmony_cishix020 shift        1    -1000  -> NaN Invalid_operation
517db96d56Sopenharmony_cishix021 shift        1    -10    -> NaN Invalid_operation
527db96d56Sopenharmony_cishix022 shift        1     10    -> NaN Invalid_operation
537db96d56Sopenharmony_cishix023 shift        1     1000  -> NaN Invalid_operation
547db96d56Sopenharmony_ci
557db96d56Sopenharmony_ci-- full shifting pattern
567db96d56Sopenharmony_cishix030 shift  123456789          -9   -> 0
577db96d56Sopenharmony_cishix031 shift  123456789          -8   -> 1
587db96d56Sopenharmony_cishix032 shift  123456789          -7   -> 12
597db96d56Sopenharmony_cishix033 shift  123456789          -6   -> 123
607db96d56Sopenharmony_cishix034 shift  123456789          -5   -> 1234
617db96d56Sopenharmony_cishix035 shift  123456789          -4   -> 12345
627db96d56Sopenharmony_cishix036 shift  123456789          -3   -> 123456
637db96d56Sopenharmony_cishix037 shift  123456789          -2   -> 1234567
647db96d56Sopenharmony_cishix038 shift  123456789          -1   -> 12345678
657db96d56Sopenharmony_cishix039 shift  123456789          -0   -> 123456789
667db96d56Sopenharmony_cishix040 shift  123456789          +0   -> 123456789
677db96d56Sopenharmony_cishix041 shift  123456789          +1   -> 234567890
687db96d56Sopenharmony_cishix042 shift  123456789          +2   -> 345678900
697db96d56Sopenharmony_cishix043 shift  123456789          +3   -> 456789000
707db96d56Sopenharmony_cishix044 shift  123456789          +4   -> 567890000
717db96d56Sopenharmony_cishix045 shift  123456789          +5   -> 678900000
727db96d56Sopenharmony_cishix046 shift  123456789          +6   -> 789000000
737db96d56Sopenharmony_cishix047 shift  123456789          +7   -> 890000000
747db96d56Sopenharmony_cishix048 shift  123456789          +8   -> 900000000
757db96d56Sopenharmony_cishix049 shift  123456789          +9   -> 0
767db96d56Sopenharmony_ci
777db96d56Sopenharmony_ci-- from examples
787db96d56Sopenharmony_cishix051 shift 34        8   ->  '400000000'
797db96d56Sopenharmony_cishix052 shift 12        9   ->  '0'
807db96d56Sopenharmony_cishix053 shift 123456789 -2  ->  '1234567'
817db96d56Sopenharmony_cishix054 shift 123456789 0   ->  '123456789'
827db96d56Sopenharmony_cishix055 shift 123456789 +2  ->  '345678900'
837db96d56Sopenharmony_ci
847db96d56Sopenharmony_ci-- zeros
857db96d56Sopenharmony_cishix060 shift  0E-10              +9   ->   0E-10
867db96d56Sopenharmony_cishix061 shift  0E-10              -9   ->   0E-10
877db96d56Sopenharmony_cishix062 shift  0.000              +9   ->   0.000
887db96d56Sopenharmony_cishix063 shift  0.000              -9   ->   0.000
897db96d56Sopenharmony_cishix064 shift  0E+10              +9   ->   0E+10
907db96d56Sopenharmony_cishix065 shift  0E+10              -9   ->   0E+10
917db96d56Sopenharmony_cishix066 shift -0E-10              +9   ->  -0E-10
927db96d56Sopenharmony_cishix067 shift -0E-10              -9   ->  -0E-10
937db96d56Sopenharmony_cishix068 shift -0.000              +9   ->  -0.000
947db96d56Sopenharmony_cishix069 shift -0.000              -9   ->  -0.000
957db96d56Sopenharmony_cishix070 shift -0E+10              +9   ->  -0E+10
967db96d56Sopenharmony_cishix071 shift -0E+10              -9   ->  -0E+10
977db96d56Sopenharmony_ci
987db96d56Sopenharmony_ci-- Nmax, Nmin, Ntiny
997db96d56Sopenharmony_cishix141 shift  9.99999999E+999     -1  -> 9.9999999E+998
1007db96d56Sopenharmony_cishix142 shift  9.99999999E+999     -8  -> 9E+991
1017db96d56Sopenharmony_cishix143 shift  9.99999999E+999      1  -> 9.99999990E+999
1027db96d56Sopenharmony_cishix144 shift  9.99999999E+999      8  -> 9.00000000E+999
1037db96d56Sopenharmony_cishix145 shift  1E-999              -1  -> 0E-999
1047db96d56Sopenharmony_cishix146 shift  1E-999              -8  -> 0E-999
1057db96d56Sopenharmony_cishix147 shift  1E-999               1  -> 1.0E-998
1067db96d56Sopenharmony_cishix148 shift  1E-999               8  -> 1.00000000E-991
1077db96d56Sopenharmony_cishix151 shift  1.00000000E-999     -1  -> 1.0000000E-1000
1087db96d56Sopenharmony_cishix152 shift  1.00000000E-999     -8  -> 1E-1007
1097db96d56Sopenharmony_cishix153 shift  1.00000000E-999      1  -> 0E-1007
1107db96d56Sopenharmony_cishix154 shift  1.00000000E-999      8  -> 0E-1007
1117db96d56Sopenharmony_cishix155 shift  9.00000000E-999     -1  -> 9.0000000E-1000
1127db96d56Sopenharmony_cishix156 shift  9.00000000E-999     -8  -> 9E-1007
1137db96d56Sopenharmony_cishix157 shift  9.00000000E-999      1  -> 0E-1007
1147db96d56Sopenharmony_cishix158 shift  9.00000000E-999      8  -> 0E-1007
1157db96d56Sopenharmony_cishix160 shift  1E-1007             -1  -> 0E-1007
1167db96d56Sopenharmony_cishix161 shift  1E-1007             -8  -> 0E-1007
1177db96d56Sopenharmony_cishix162 shift  1E-1007              1  -> 1.0E-1006
1187db96d56Sopenharmony_cishix163 shift  1E-1007              8  -> 1.00000000E-999
1197db96d56Sopenharmony_ci--  negatives
1207db96d56Sopenharmony_cishix171 shift -9.99999999E+999     -1  -> -9.9999999E+998
1217db96d56Sopenharmony_cishix172 shift -9.99999999E+999     -8  -> -9E+991
1227db96d56Sopenharmony_cishix173 shift -9.99999999E+999      1  -> -9.99999990E+999
1237db96d56Sopenharmony_cishix174 shift -9.99999999E+999      8  -> -9.00000000E+999
1247db96d56Sopenharmony_cishix175 shift -1E-999              -1  -> -0E-999
1257db96d56Sopenharmony_cishix176 shift -1E-999              -8  -> -0E-999
1267db96d56Sopenharmony_cishix177 shift -1E-999               1  -> -1.0E-998
1277db96d56Sopenharmony_cishix178 shift -1E-999               8  -> -1.00000000E-991
1287db96d56Sopenharmony_cishix181 shift -1.00000000E-999     -1  -> -1.0000000E-1000
1297db96d56Sopenharmony_cishix182 shift -1.00000000E-999     -8  -> -1E-1007
1307db96d56Sopenharmony_cishix183 shift -1.00000000E-999      1  -> -0E-1007
1317db96d56Sopenharmony_cishix184 shift -1.00000000E-999      8  -> -0E-1007
1327db96d56Sopenharmony_cishix185 shift -9.00000000E-999     -1  -> -9.0000000E-1000
1337db96d56Sopenharmony_cishix186 shift -9.00000000E-999     -8  -> -9E-1007
1347db96d56Sopenharmony_cishix187 shift -9.00000000E-999      1  -> -0E-1007
1357db96d56Sopenharmony_cishix188 shift -9.00000000E-999      8  -> -0E-1007
1367db96d56Sopenharmony_cishix190 shift -1E-1007             -1  -> -0E-1007
1377db96d56Sopenharmony_cishix191 shift -1E-1007             -8  -> -0E-1007
1387db96d56Sopenharmony_cishix192 shift -1E-1007              1  -> -1.0E-1006
1397db96d56Sopenharmony_cishix193 shift -1E-1007              8  -> -1.00000000E-999
1407db96d56Sopenharmony_ci
1417db96d56Sopenharmony_ci-- more negatives (of sanities)
1427db96d56Sopenharmony_cishix201 shift         -0    0  ->  -0
1437db96d56Sopenharmony_cishix202 shift         -0    2  ->  -0
1447db96d56Sopenharmony_cishix203 shift         -1    2  ->  -100
1457db96d56Sopenharmony_cishix204 shift         -1    8  ->  -100000000
1467db96d56Sopenharmony_cishix205 shift         -1    9  ->  -0
1477db96d56Sopenharmony_cishix206 shift         -1   -1  ->  -0
1487db96d56Sopenharmony_cishix207 shift -123456789   -1  ->  -12345678
1497db96d56Sopenharmony_cishix208 shift -123456789   -8  ->  -1
1507db96d56Sopenharmony_cishix209 shift -123456789   -9  ->  -0
1517db96d56Sopenharmony_cishix210 shift         -0   -2  ->  -0
1527db96d56Sopenharmony_cishix211 shift         -0   -0  ->  -0
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_ci
1557db96d56Sopenharmony_ci-- Specials; NaNs are handled as usual
1567db96d56Sopenharmony_cishix781 shift -Inf  -8     -> -Infinity
1577db96d56Sopenharmony_cishix782 shift -Inf  -1     -> -Infinity
1587db96d56Sopenharmony_cishix783 shift -Inf  -0     -> -Infinity
1597db96d56Sopenharmony_cishix784 shift -Inf   0     -> -Infinity
1607db96d56Sopenharmony_cishix785 shift -Inf   1     -> -Infinity
1617db96d56Sopenharmony_cishix786 shift -Inf   8     -> -Infinity
1627db96d56Sopenharmony_cishix787 shift -1000 -Inf   -> NaN Invalid_operation
1637db96d56Sopenharmony_cishix788 shift -Inf  -Inf   -> NaN Invalid_operation
1647db96d56Sopenharmony_cishix789 shift -1    -Inf   -> NaN Invalid_operation
1657db96d56Sopenharmony_cishix790 shift -0    -Inf   -> NaN Invalid_operation
1667db96d56Sopenharmony_cishix791 shift  0    -Inf   -> NaN Invalid_operation
1677db96d56Sopenharmony_cishix792 shift  1    -Inf   -> NaN Invalid_operation
1687db96d56Sopenharmony_cishix793 shift  1000 -Inf   -> NaN Invalid_operation
1697db96d56Sopenharmony_cishix794 shift  Inf  -Inf   -> NaN Invalid_operation
1707db96d56Sopenharmony_ci
1717db96d56Sopenharmony_cishix800 shift  Inf  -Inf   -> NaN Invalid_operation
1727db96d56Sopenharmony_cishix801 shift  Inf  -8     -> Infinity
1737db96d56Sopenharmony_cishix802 shift  Inf  -1     -> Infinity
1747db96d56Sopenharmony_cishix803 shift  Inf  -0     -> Infinity
1757db96d56Sopenharmony_cishix804 shift  Inf   0     -> Infinity
1767db96d56Sopenharmony_cishix805 shift  Inf   1     -> Infinity
1777db96d56Sopenharmony_cishix806 shift  Inf   8     -> Infinity
1787db96d56Sopenharmony_cishix807 shift  Inf   Inf   -> NaN Invalid_operation
1797db96d56Sopenharmony_cishix808 shift -1000  Inf   -> NaN Invalid_operation
1807db96d56Sopenharmony_cishix809 shift -Inf   Inf   -> NaN Invalid_operation
1817db96d56Sopenharmony_cishix810 shift -1     Inf   -> NaN Invalid_operation
1827db96d56Sopenharmony_cishix811 shift -0     Inf   -> NaN Invalid_operation
1837db96d56Sopenharmony_cishix812 shift  0     Inf   -> NaN Invalid_operation
1847db96d56Sopenharmony_cishix813 shift  1     Inf   -> NaN Invalid_operation
1857db96d56Sopenharmony_cishix814 shift  1000  Inf   -> NaN Invalid_operation
1867db96d56Sopenharmony_cishix815 shift  Inf   Inf   -> NaN Invalid_operation
1877db96d56Sopenharmony_ci
1887db96d56Sopenharmony_cishix821 shift  NaN -Inf    ->  NaN
1897db96d56Sopenharmony_cishix822 shift  NaN -1000   ->  NaN
1907db96d56Sopenharmony_cishix823 shift  NaN -1      ->  NaN
1917db96d56Sopenharmony_cishix824 shift  NaN -0      ->  NaN
1927db96d56Sopenharmony_cishix825 shift  NaN  0      ->  NaN
1937db96d56Sopenharmony_cishix826 shift  NaN  1      ->  NaN
1947db96d56Sopenharmony_cishix827 shift  NaN  1000   ->  NaN
1957db96d56Sopenharmony_cishix828 shift  NaN  Inf    ->  NaN
1967db96d56Sopenharmony_cishix829 shift  NaN  NaN    ->  NaN
1977db96d56Sopenharmony_cishix830 shift -Inf  NaN    ->  NaN
1987db96d56Sopenharmony_cishix831 shift -1000 NaN    ->  NaN
1997db96d56Sopenharmony_cishix832 shift -1    NaN    ->  NaN
2007db96d56Sopenharmony_cishix833 shift -0    NaN    ->  NaN
2017db96d56Sopenharmony_cishix834 shift  0    NaN    ->  NaN
2027db96d56Sopenharmony_cishix835 shift  1    NaN    ->  NaN
2037db96d56Sopenharmony_cishix836 shift  1000 NaN    ->  NaN
2047db96d56Sopenharmony_cishix837 shift  Inf  NaN    ->  NaN
2057db96d56Sopenharmony_ci
2067db96d56Sopenharmony_cishix841 shift  sNaN -Inf   ->  NaN  Invalid_operation
2077db96d56Sopenharmony_cishix842 shift  sNaN -1000  ->  NaN  Invalid_operation
2087db96d56Sopenharmony_cishix843 shift  sNaN -1     ->  NaN  Invalid_operation
2097db96d56Sopenharmony_cishix844 shift  sNaN -0     ->  NaN  Invalid_operation
2107db96d56Sopenharmony_cishix845 shift  sNaN  0     ->  NaN  Invalid_operation
2117db96d56Sopenharmony_cishix846 shift  sNaN  1     ->  NaN  Invalid_operation
2127db96d56Sopenharmony_cishix847 shift  sNaN  1000  ->  NaN  Invalid_operation
2137db96d56Sopenharmony_cishix848 shift  sNaN  NaN   ->  NaN  Invalid_operation
2147db96d56Sopenharmony_cishix849 shift  sNaN sNaN   ->  NaN  Invalid_operation
2157db96d56Sopenharmony_cishix850 shift  NaN  sNaN   ->  NaN  Invalid_operation
2167db96d56Sopenharmony_cishix851 shift -Inf  sNaN   ->  NaN  Invalid_operation
2177db96d56Sopenharmony_cishix852 shift -1000 sNaN   ->  NaN  Invalid_operation
2187db96d56Sopenharmony_cishix853 shift -1    sNaN   ->  NaN  Invalid_operation
2197db96d56Sopenharmony_cishix854 shift -0    sNaN   ->  NaN  Invalid_operation
2207db96d56Sopenharmony_cishix855 shift  0    sNaN   ->  NaN  Invalid_operation
2217db96d56Sopenharmony_cishix856 shift  1    sNaN   ->  NaN  Invalid_operation
2227db96d56Sopenharmony_cishix857 shift  1000 sNaN   ->  NaN  Invalid_operation
2237db96d56Sopenharmony_cishix858 shift  Inf  sNaN   ->  NaN  Invalid_operation
2247db96d56Sopenharmony_cishix859 shift  NaN  sNaN   ->  NaN  Invalid_operation
2257db96d56Sopenharmony_ci
2267db96d56Sopenharmony_ci-- propagating NaNs
2277db96d56Sopenharmony_cishix861 shift  NaN1   -Inf    ->  NaN1
2287db96d56Sopenharmony_cishix862 shift +NaN2   -1000   ->  NaN2
2297db96d56Sopenharmony_cishix863 shift  NaN3    1000   ->  NaN3
2307db96d56Sopenharmony_cishix864 shift  NaN4    Inf    ->  NaN4
2317db96d56Sopenharmony_cishix865 shift  NaN5   +NaN6   ->  NaN5
2327db96d56Sopenharmony_cishix866 shift -Inf     NaN7   ->  NaN7
2337db96d56Sopenharmony_cishix867 shift -1000    NaN8   ->  NaN8
2347db96d56Sopenharmony_cishix868 shift  1000    NaN9   ->  NaN9
2357db96d56Sopenharmony_cishix869 shift  Inf    +NaN10  ->  NaN10
2367db96d56Sopenharmony_cishix871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation
2377db96d56Sopenharmony_cishix872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation
2387db96d56Sopenharmony_cishix873 shift  sNaN13   1000  ->  NaN13  Invalid_operation
2397db96d56Sopenharmony_cishix874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation
2407db96d56Sopenharmony_cishix875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation
2417db96d56Sopenharmony_cishix876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation
2427db96d56Sopenharmony_cishix877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation
2437db96d56Sopenharmony_cishix878 shift -1000    sNaN21 ->  NaN21  Invalid_operation
2447db96d56Sopenharmony_cishix879 shift  1000    sNaN22 ->  NaN22  Invalid_operation
2457db96d56Sopenharmony_cishix880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation
2467db96d56Sopenharmony_cishix881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation
2477db96d56Sopenharmony_cishix882 shift -NaN26    NaN28 -> -NaN26
2487db96d56Sopenharmony_cishix883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation
2497db96d56Sopenharmony_cishix884 shift  1000    -NaN30 -> -NaN30
2507db96d56Sopenharmony_cishix885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation
251