summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/rotate.decTest
blob: 32dbd537c49a38c4fa29113c7ac22cbd2d18357f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
------------------------------------------------------------------------
-- rotate.decTest -- rotate coefficient left or right                 --
-- Copyright (c) IBM Corporation, 1981, 2007.  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.57

extended:    1
precision:   9
rounding:    half_up
maxExponent: 999
minExponent: -999

-- Sanity check
rotx001 rotate          0    0  ->  0
rotx002 rotate          0    2  ->  0
rotx003 rotate          1    2  ->  100
rotx004 rotate         34    8  ->  400000003
rotx005 rotate          1    9  ->  1
rotx006 rotate          1   -1  ->  100000000
rotx007 rotate  123456789   -1  ->  912345678
rotx008 rotate  123456789   -8  ->  234567891
rotx009 rotate  123456789   -9  ->  123456789
rotx010 rotate          0   -2  ->  0

-- rhs must be an integer
rotx011 rotate        1    1.5    -> NaN Invalid_operation
rotx012 rotate        1    1.0    -> NaN Invalid_operation
rotx013 rotate        1    0.1    -> NaN Invalid_operation
rotx014 rotate        1    0.0    -> NaN Invalid_operation
rotx015 rotate        1    1E+1   -> NaN Invalid_operation
rotx016 rotate        1    1E+99  -> NaN Invalid_operation
rotx017 rotate        1    Inf    -> NaN Invalid_operation
rotx018 rotate        1    -Inf   -> NaN Invalid_operation
-- and |rhs| <= precision
rotx020 rotate        1    -1000  -> NaN Invalid_operation
rotx021 rotate        1    -10    -> NaN Invalid_operation
rotx022 rotate        1     10    -> NaN Invalid_operation
rotx023 rotate        1     1000  -> NaN Invalid_operation

-- full pattern
rotx030 rotate  123456789          -9   -> 123456789
rotx031 rotate  123456789          -8   -> 234567891
rotx032 rotate  123456789          -7   -> 345678912
rotx033 rotate  123456789          -6   -> 456789123
rotx034 rotate  123456789          -5   -> 567891234
rotx035 rotate  123456789          -4   -> 678912345
rotx036 rotate  123456789          -3   -> 789123456
rotx037 rotate  123456789          -2   -> 891234567
rotx038 rotate  123456789          -1   -> 912345678
rotx039 rotate  123456789          -0   -> 123456789
rotx040 rotate  123456789          +0   -> 123456789
rotx041 rotate  123456789          +1   -> 234567891
rotx042 rotate  123456789          +2   -> 345678912
rotx043 rotate  123456789          +3   -> 456789123
rotx044 rotate  123456789          +4   -> 567891234
rotx045 rotate  123456789          +5   -> 678912345
rotx046 rotate  123456789          +6   -> 789123456
rotx047 rotate  123456789          +7   -> 891234567
rotx048 rotate  123456789          +8   -> 912345678
rotx049 rotate  123456789          +9   -> 123456789

-- zeros
rotx060 rotate  0E-10              +9   ->   0E-10
rotx061 rotate  0E-10              -9   ->   0E-10
rotx062 rotate  0.000              +9   ->   0.000
rotx063 rotate  0.000              -9   ->   0.000
rotx064 rotate  0E+10              +9   ->   0E+10
rotx065 rotate  0E+10              -9   ->   0E+10
rotx066 rotate -0E-10              +9   ->  -0E-10
rotx067 rotate -0E-10              -9   ->  -0E-10
rotx068 rotate -0.000              +9   ->  -0.000
rotx069 rotate -0.000              -9   ->  -0.000
rotx070 rotate -0E+10              +9   ->  -0E+10
rotx071 rotate -0E+10              -9   ->  -0E+10

-- Nmax, Nmin, Ntiny
rotx141 rotate  9.99999999E+999     -1  -> 9.99999999E+999
rotx142 rotate  9.99999999E+999     -8  -> 9.99999999E+999
rotx143 rotate  9.99999999E+999      1  -> 9.99999999E+999
rotx144 rotate  9.99999999E+999      8  -> 9.99999999E+999
rotx145 rotate  1E-999              -1  -> 1.00000000E-991
rotx146 rotate  1E-999              -8  -> 1.0E-998
rotx147 rotate  1E-999               1  -> 1.0E-998
rotx148 rotate  1E-999               8  -> 1.00000000E-991
rotx151 rotate  1.00000000E-999     -1  -> 1.0000000E-1000
rotx152 rotate  1.00000000E-999     -8  -> 1E-1007
rotx153 rotate  1.00000000E-999      1  -> 1E-1007
rotx154 rotate  1.00000000E-999      8  -> 1.0000000E-1000
rotx155 rotate  9.00000000E-999     -1  -> 9.0000000E-1000
rotx156 rotate  9.00000000E-999     -8  -> 9E-1007
rotx157 rotate  9.00000000E-999      1  -> 9E-1007
rotx158 rotate  9.00000000E-999      8  -> 9.0000000E-1000
rotx160 rotate  1E-1007             -1  -> 1.00000000E-999
rotx161 rotate  1E-1007             -8  -> 1.0E-1006
rotx162 rotate  1E-1007              1  -> 1.0E-1006
rotx163 rotate  1E-1007              8  -> 1.00000000E-999
--  negatives
rotx171 rotate -9.99999999E+999     -1  -> -9.99999999E+999
rotx172 rotate -9.99999999E+999     -8  -> -9.99999999E+999
rotx173 rotate -9.99999999E+999      1  -> -9.99999999E+999
rotx174 rotate -9.99999999E+999      8  -> -9.99999999E+999
rotx175 rotate -1E-999              -1  -> -1.00000000E-991
rotx176 rotate -1E-999              -8  -> -1.0E-998
rotx177 rotate -1E-999               1  -> -1.0E-998
rotx178 rotate -1E-999               8  -> -1.00000000E-991
rotx181 rotate -1.00000000E-999     -1  -> -1.0000000E-1000
rotx182 rotate -1.00000000E-999     -8  -> -1E-1007
rotx183 rotate -1.00000000E-999      1  -> -1E-1007
rotx184 rotate -1.00000000E-999      8  -> -1.0000000E-1000
rotx185 rotate -9.00000000E-999     -1  -> -9.0000000E-1000
rotx186 rotate -9.00000000E-999     -8  -> -9E-1007
rotx187 rotate -9.00000000E-999      1  -> -9E-1007
rotx188 rotate -9.00000000E-999      8  -> -9.0000000E-1000
rotx190 rotate -1E-1007             -1  -> -1.00000000E-999
rotx191 rotate -1E-1007             -8  -> -1.0E-1006
rotx192 rotate -1E-1007              1  -> -1.0E-1006
rotx193 rotate -1E-1007              8  -> -1.00000000E-999

-- more negatives (of sanities)
rotx201 rotate         -0    0  ->  -0
rotx202 rotate         -0    2  ->  -0
rotx203 rotate         -1    2  ->  -100
rotx204 rotate         -1    8  ->  -100000000
rotx205 rotate         -1    9  ->  -1
rotx206 rotate         -1   -1  ->  -100000000
rotx207 rotate -123456789   -1  ->  -912345678
rotx208 rotate -123456789   -8  ->  -234567891
rotx209 rotate -123456789   -9  ->  -123456789
rotx210 rotate         -0   -2  ->  -0

-- Specials; NaNs are handled as usual
rotx781 rotate -Inf  -8     -> -Infinity
rotx782 rotate -Inf  -1     -> -Infinity
rotx783 rotate -Inf  -0     -> -Infinity
rotx784 rotate -Inf   0     -> -Infinity
rotx785 rotate -Inf   1     -> -Infinity
rotx786 rotate -Inf   8     -> -Infinity
rotx787 rotate -1000 -Inf   -> NaN Invalid_operation
rotx788 rotate -Inf  -Inf   -> NaN Invalid_operation
rotx789 rotate -1    -Inf   -> NaN Invalid_operation
rotx790 rotate -0    -Inf   -> NaN Invalid_operation
rotx791 rotate  0    -Inf   -> NaN Invalid_operation
rotx792 rotate  1    -Inf   -> NaN Invalid_operation
rotx793 rotate  1000 -Inf   -> NaN Invalid_operation
rotx794 rotate  Inf  -Inf   -> NaN Invalid_operation

rotx800 rotate  Inf  -Inf   -> NaN Invalid_operation
rotx801 rotate  Inf  -8     -> Infinity
rotx802 rotate  Inf  -1     -> Infinity
rotx803 rotate  Inf  -0     -> Infinity
rotx804 rotate  Inf   0     -> Infinity
rotx805 rotate  Inf   1     -> Infinity
rotx806 rotate  Inf   8     -> Infinity
rotx807 rotate  Inf   Inf   -> NaN Invalid_operation
rotx808 rotate -1000  Inf   -> NaN Invalid_operation
rotx809 rotate -Inf   Inf   -> NaN Invalid_operation
rotx810 rotate -1     Inf   -> NaN Invalid_operation
rotx811 rotate -0     Inf   -> NaN Invalid_operation
rotx812 rotate  0     Inf   -> NaN Invalid_operation
rotx813 rotate  1     Inf   -> NaN Invalid_operation
rotx814 rotate  1000  Inf   -> NaN Invalid_operation
rotx815 rotate  Inf   Inf   -> NaN Invalid_operation

rotx821 rotate  NaN -Inf    ->  NaN
rotx822 rotate  NaN -1000   ->  NaN
rotx823 rotate  NaN -1      ->  NaN
rotx824 rotate  NaN -0      ->  NaN
rotx825 rotate  NaN  0      ->  NaN
rotx826 rotate  NaN  1      ->  NaN
rotx827 rotate  NaN  1000   ->  NaN
rotx828 rotate  NaN  Inf    ->  NaN
rotx829 rotate  NaN  NaN    ->  NaN
rotx830 rotate -Inf  NaN    ->  NaN
rotx831 rotate -1000 NaN    ->  NaN
rotx832 rotate -1    NaN    ->  NaN
rotx833 rotate -0    NaN    ->  NaN
rotx834 rotate  0    NaN    ->  NaN
rotx835 rotate  1    NaN    ->  NaN
rotx836 rotate  1000 NaN    ->  NaN
rotx837 rotate  Inf  NaN    ->  NaN



rotx841 rotate  sNaN -Inf   ->  NaN  Invalid_operation
rotx842 rotate  sNaN -1000  ->  NaN  Invalid_operation
rotx843 rotate  sNaN -1     ->  NaN  Invalid_operation
rotx844 rotate  sNaN -0     ->  NaN  Invalid_operation
rotx845 rotate  sNaN  0     ->  NaN  Invalid_operation
rotx846 rotate  sNaN  1     ->  NaN  Invalid_operation
rotx847 rotate  sNaN  1000  ->  NaN  Invalid_operation
rotx848 rotate  sNaN  NaN   ->  NaN  Invalid_operation
rotx849 rotate  sNaN sNaN   ->  NaN  Invalid_operation
rotx850 rotate  NaN  sNaN   ->  NaN  Invalid_operation
rotx851 rotate -Inf  sNaN   ->  NaN  Invalid_operation
rotx852 rotate -1000 sNaN   ->  NaN  Invalid_operation
rotx853 rotate -1    sNaN   ->  NaN  Invalid_operation
rotx854 rotate -0    sNaN   ->  NaN  Invalid_operation
rotx855 rotate  0    sNaN   ->  NaN  Invalid_operation
rotx856 rotate  1    sNaN   ->  NaN  Invalid_operation
rotx857 rotate  1000 sNaN   ->  NaN  Invalid_operation
rotx858 rotate  Inf  sNaN   ->  NaN  Invalid_operation
rotx859 rotate  NaN  sNaN   ->  NaN  Invalid_operation

-- propagating NaNs
rotx861 rotate  NaN1   -Inf    ->  NaN1
rotx862 rotate +NaN2   -1000   ->  NaN2
rotx863 rotate  NaN3    1000   ->  NaN3
rotx864 rotate  NaN4    Inf    ->  NaN4
rotx865 rotate  NaN5   +NaN6   ->  NaN5
rotx866 rotate -Inf     NaN7   ->  NaN7
rotx867 rotate -1000    NaN8   ->  NaN8
rotx868 rotate  1000    NaN9   ->  NaN9
rotx869 rotate  Inf    +NaN10  ->  NaN10
rotx871 rotate  sNaN11  -Inf   ->  NaN11  Invalid_operation
rotx872 rotate  sNaN12  -1000  ->  NaN12  Invalid_operation
rotx873 rotate  sNaN13   1000  ->  NaN13  Invalid_operation
rotx874 rotate  sNaN14   NaN17 ->  NaN14  Invalid_operation
rotx875 rotate  sNaN15  sNaN18 ->  NaN15  Invalid_operation
rotx876 rotate  NaN16   sNaN19 ->  NaN19  Invalid_operation
rotx877 rotate -Inf    +sNaN20 ->  NaN20  Invalid_operation
rotx878 rotate -1000    sNaN21 ->  NaN21  Invalid_operation
rotx879 rotate  1000    sNaN22 ->  NaN22  Invalid_operation
rotx880 rotate  Inf     sNaN23 ->  NaN23  Invalid_operation
rotx881 rotate +NaN25  +sNaN24 ->  NaN24  Invalid_operation
rotx882 rotate -NaN26    NaN28 -> -NaN26
rotx883 rotate -sNaN27  sNaN29 -> -NaN27  Invalid_operation
rotx884 rotate  1000    -NaN30 -> -NaN30
rotx885 rotate  1000   -sNaN31 -> -NaN31  Invalid_operation

-- payload decapitate
precision: 5
rotx886 rotate  11 -sNaN1234567890 -> -NaN67890  Invalid_operation