summaryrefslogtreecommitdiffstats
path: root/Lib/test/decimaltestdata/dqShift.decTest
blob: e48dd9f48ec4c3ef0a60f256ac30d59f6274e10f (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
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
------------------------------------------------------------------------
-- dqShift.decTest -- shift decQuad coefficient left or right         --
-- 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

extended:    1
clamp:       1
precision:   34
maxExponent: 6144
minExponent: -6143
rounding:    half_even

-- Sanity check
dqshi001 shift                                   0    0  ->  0
dqshi002 shift                                   0    2  ->  0
dqshi003 shift                                   1    2  ->  100
dqshi004 shift                                   1   33  ->  1000000000000000000000000000000000
dqshi005 shift                                   1   34  ->  0
dqshi006 shift                                   1   -1  ->  0
dqshi007 shift                                   0   -2  ->  0
dqshi008 shift  1234567890123456789012345678901234   -1  ->  123456789012345678901234567890123
dqshi009 shift  1234567890123456789012345678901234   -33 ->  1
dqshi010 shift  1234567890123456789012345678901234   -34 ->  0
dqshi011 shift  9934567890123456789012345678901234   -33 ->  9
dqshi012 shift  9934567890123456789012345678901234   -34 ->  0

-- rhs must be an integer
dqshi015 shift        1    1.5    -> NaN Invalid_operation
dqshi016 shift        1    1.0    -> NaN Invalid_operation
dqshi017 shift        1    0.1    -> NaN Invalid_operation
dqshi018 shift        1    0.0    -> NaN Invalid_operation
dqshi019 shift        1    1E+1   -> NaN Invalid_operation
dqshi020 shift        1    1E+99  -> NaN Invalid_operation
dqshi021 shift        1    Inf    -> NaN Invalid_operation
dqshi022 shift        1    -Inf   -> NaN Invalid_operation
-- and |rhs| <= precision
dqshi025 shift        1    -1000  -> NaN Invalid_operation
dqshi026 shift        1    -35    -> NaN Invalid_operation
dqshi027 shift        1     35    -> NaN Invalid_operation
dqshi028 shift        1     1000  -> NaN Invalid_operation

-- full shifting pattern
dqshi030 shift  1234567890123456789012345678901234         -34  -> 0
dqshi031 shift  1234567890123456789012345678901234         -33  -> 1
dqshi032 shift  1234567890123456789012345678901234         -32  -> 12
dqshi033 shift  1234567890123456789012345678901234         -31  -> 123
dqshi034 shift  1234567890123456789012345678901234         -30  -> 1234
dqshi035 shift  1234567890123456789012345678901234         -29  -> 12345
dqshi036 shift  1234567890123456789012345678901234         -28  -> 123456
dqshi037 shift  1234567890123456789012345678901234         -27  -> 1234567
dqshi038 shift  1234567890123456789012345678901234         -26  -> 12345678
dqshi039 shift  1234567890123456789012345678901234         -25  -> 123456789
dqshi040 shift  1234567890123456789012345678901234         -24  -> 1234567890
dqshi041 shift  1234567890123456789012345678901234         -23  -> 12345678901
dqshi042 shift  1234567890123456789012345678901234         -22  -> 123456789012
dqshi043 shift  1234567890123456789012345678901234         -21  -> 1234567890123
dqshi044 shift  1234567890123456789012345678901234         -20  -> 12345678901234
dqshi045 shift  1234567890123456789012345678901234         -19  -> 123456789012345
dqshi047 shift  1234567890123456789012345678901234         -18  -> 1234567890123456
dqshi048 shift  1234567890123456789012345678901234         -17  -> 12345678901234567
dqshi049 shift  1234567890123456789012345678901234         -16  -> 123456789012345678
dqshi050 shift  1234567890123456789012345678901234         -15  -> 1234567890123456789
dqshi051 shift  1234567890123456789012345678901234         -14  -> 12345678901234567890
dqshi052 shift  1234567890123456789012345678901234         -13  -> 123456789012345678901
dqshi053 shift  1234567890123456789012345678901234         -12  -> 1234567890123456789012
dqshi054 shift  1234567890123456789012345678901234         -11  -> 12345678901234567890123
dqshi055 shift  1234567890123456789012345678901234         -10  -> 123456789012345678901234
dqshi056 shift  1234567890123456789012345678901234         -9   -> 1234567890123456789012345
dqshi057 shift  1234567890123456789012345678901234         -8   -> 12345678901234567890123456
dqshi058 shift  1234567890123456789012345678901234         -7   -> 123456789012345678901234567
dqshi059 shift  1234567890123456789012345678901234         -6   -> 1234567890123456789012345678
dqshi060 shift  1234567890123456789012345678901234         -5   -> 12345678901234567890123456789
dqshi061 shift  1234567890123456789012345678901234         -4   -> 123456789012345678901234567890
dqshi062 shift  1234567890123456789012345678901234         -3   -> 1234567890123456789012345678901
dqshi063 shift  1234567890123456789012345678901234         -2   -> 12345678901234567890123456789012
dqshi064 shift  1234567890123456789012345678901234         -1   -> 123456789012345678901234567890123
dqshi065 shift  1234567890123456789012345678901234         -0   -> 1234567890123456789012345678901234

dqshi066 shift  1234567890123456789012345678901234         +0   -> 1234567890123456789012345678901234
dqshi067 shift  1234567890123456789012345678901234         +1   -> 2345678901234567890123456789012340
dqshi068 shift  1234567890123456789012345678901234         +2   -> 3456789012345678901234567890123400
dqshi069 shift  1234567890123456789012345678901234         +3   -> 4567890123456789012345678901234000
dqshi070 shift  1234567890123456789012345678901234         +4   -> 5678901234567890123456789012340000
dqshi071 shift  1234567890123456789012345678901234         +5   -> 6789012345678901234567890123400000
dqshi072 shift  1234567890123456789012345678901234         +6   -> 7890123456789012345678901234000000
dqshi073 shift  1234567890123456789012345678901234         +7   -> 8901234567890123456789012340000000
dqshi074 shift  1234567890123456789012345678901234         +8   -> 9012345678901234567890123400000000
dqshi075 shift  1234567890123456789012345678901234         +9   ->  123456789012345678901234000000000
dqshi076 shift  1234567890123456789012345678901234         +10  -> 1234567890123456789012340000000000
dqshi077 shift  1234567890123456789012345678901234         +11  -> 2345678901234567890123400000000000
dqshi078 shift  1234567890123456789012345678901234         +12  -> 3456789012345678901234000000000000
dqshi079 shift  1234567890123456789012345678901234         +13  -> 4567890123456789012340000000000000
dqshi080 shift  1234567890123456789012345678901234         +14  -> 5678901234567890123400000000000000
dqshi081 shift  1234567890123456789012345678901234         +15  -> 6789012345678901234000000000000000
dqshi082 shift  1234567890123456789012345678901234         +16  -> 7890123456789012340000000000000000
dqshi083 shift  1234567890123456789012345678901234         +17  -> 8901234567890123400000000000000000
dqshi084 shift  1234567890123456789012345678901234         +18  -> 9012345678901234000000000000000000
dqshi085 shift  1234567890123456789012345678901234         +19  ->  123456789012340000000000000000000
dqshi086 shift  1234567890123456789012345678901234         +20  -> 1234567890123400000000000000000000
dqshi087 shift  1234567890123456789012345678901234         +21  -> 2345678901234000000000000000000000
dqshi088 shift  1234567890123456789012345678901234         +22  -> 3456789012340000000000000000000000
dqshi089 shift  1234567890123456789012345678901234         +23  -> 4567890123400000000000000000000000
dqshi090 shift  1234567890123456789012345678901234         +24  -> 5678901234000000000000000000000000
dqshi091 shift  1234567890123456789012345678901234         +25  -> 6789012340000000000000000000000000
dqshi092 shift  1234567890123456789012345678901234         +26  -> 7890123400000000000000000000000000
dqshi093 shift  1234567890123456789012345678901234         +27  -> 8901234000000000000000000000000000
dqshi094 shift  1234567890123456789012345678901234         +28  -> 9012340000000000000000000000000000
dqshi095 shift  1234567890123456789012345678901234         +29  ->  123400000000000000000000000000000
dqshi096 shift  1234567890123456789012345678901234         +30  -> 1234000000000000000000000000000000
dqshi097 shift  1234567890123456789012345678901234         +31  -> 2340000000000000000000000000000000
dqshi098 shift  1234567890123456789012345678901234         +32  -> 3400000000000000000000000000000000
dqshi099 shift  1234567890123456789012345678901234         +33  -> 4000000000000000000000000000000000
dqshi100 shift  1234567890123456789012345678901234         +34  -> 0

-- zeros
dqshi270 shift  0E-10              +29   ->   0E-10
dqshi271 shift  0E-10              -29   ->   0E-10
dqshi272 shift  0.000              +29   ->   0.000
dqshi273 shift  0.000              -29   ->   0.000
dqshi274 shift  0E+10              +29   ->   0E+10
dqshi275 shift  0E+10              -29   ->   0E+10
dqshi276 shift -0E-10              +29   ->  -0E-10
dqshi277 shift -0E-10              -29   ->  -0E-10
dqshi278 shift -0.000              +29   ->  -0.000
dqshi279 shift -0.000              -29   ->  -0.000
dqshi280 shift -0E+10              +29   ->  -0E+10
dqshi281 shift -0E+10              -29   ->  -0E+10

-- Nmax, Nmin, Ntiny
dqshi141 shift  9.999999999999999999999999999999999E+6144     -1  -> 9.99999999999999999999999999999999E+6143
dqshi142 shift  9.999999999999999999999999999999999E+6144     -33 -> 9E+6111
dqshi143 shift  9.999999999999999999999999999999999E+6144      1  -> 9.999999999999999999999999999999990E+6144
dqshi144 shift  9.999999999999999999999999999999999E+6144      33 -> 9.000000000000000000000000000000000E+6144
dqshi145 shift  1E-6143                                       -1  -> 0E-6143
dqshi146 shift  1E-6143                                       -33 -> 0E-6143
dqshi147 shift  1E-6143                                        1  -> 1.0E-6142
dqshi148 shift  1E-6143                                        33 -> 1.000000000000000000000000000000000E-6110
dqshi151 shift  1.000000000000000000000000000000000E-6143     -1  -> 1.00000000000000000000000000000000E-6144
dqshi152 shift  1.000000000000000000000000000000000E-6143     -33 -> 1E-6176
dqshi153 shift  1.000000000000000000000000000000000E-6143      1  -> 0E-6176
dqshi154 shift  1.000000000000000000000000000000000E-6143      33 -> 0E-6176
dqshi155 shift  9.000000000000000000000000000000000E-6143     -1  -> 9.00000000000000000000000000000000E-6144
dqshi156 shift  9.000000000000000000000000000000000E-6143     -33 -> 9E-6176
dqshi157 shift  9.000000000000000000000000000000000E-6143      1  -> 0E-6176
dqshi158 shift  9.000000000000000000000000000000000E-6143      33 -> 0E-6176
dqshi160 shift  1E-6176                                       -1  -> 0E-6176
dqshi161 shift  1E-6176                                       -33 -> 0E-6176
dqshi162 shift  1E-6176                                        1  -> 1.0E-6175
dqshi163 shift  1E-6176                                        33 -> 1.000000000000000000000000000000000E-6143
--  negatives
dqshi171 shift -9.999999999999999999999999999999999E+6144     -1  -> -9.99999999999999999999999999999999E+6143
dqshi172 shift -9.999999999999999999999999999999999E+6144     -33 -> -9E+6111
dqshi173 shift -9.999999999999999999999999999999999E+6144      1  -> -9.999999999999999999999999999999990E+6144
dqshi174 shift -9.999999999999999999999999999999999E+6144      33 -> -9.000000000000000000000000000000000E+6144
dqshi175 shift -1E-6143                                       -1  -> -0E-6143
dqshi176 shift -1E-6143                                       -33 -> -0E-6143
dqshi177 shift -1E-6143                                        1  -> -1.0E-6142
dqshi178 shift -1E-6143                                        33 -> -1.000000000000000000000000000000000E-6110
dqshi181 shift -1.000000000000000000000000000000000E-6143     -1  -> -1.00000000000000000000000000000000E-6144
dqshi182 shift -1.000000000000000000000000000000000E-6143     -33 -> -1E-6176
dqshi183 shift -1.000000000000000000000000000000000E-6143      1  -> -0E-6176
dqshi184 shift -1.000000000000000000000000000000000E-6143      33 -> -0E-6176
dqshi185 shift -9.000000000000000000000000000000000E-6143     -1  -> -9.00000000000000000000000000000000E-6144
dqshi186 shift -9.000000000000000000000000000000000E-6143     -33 -> -9E-6176
dqshi187 shift -9.000000000000000000000000000000000E-6143      1  -> -0E-6176
dqshi188 shift -9.000000000000000000000000000000000E-6143      33 -> -0E-6176
dqshi190 shift -1E-6176                                       -1  -> -0E-6176
dqshi191 shift -1E-6176                                       -33 -> -0E-6176
dqshi192 shift -1E-6176                                        1  -> -1.0E-6175
dqshi193 shift -1E-6176                                        33 -> -1.000000000000000000000000000000000E-6143

-- more negatives (of sanities)
dqshi201 shift                                  -0    0  -> -0
dqshi202 shift                                  -0    2  -> -0
dqshi203 shift                                  -1    2  -> -100
dqshi204 shift                                  -1   33  -> -1000000000000000000000000000000000
dqshi205 shift                                  -1   34  -> -0
dqshi206 shift                                  -1   -1  -> -0
dqshi207 shift                                  -0   -2  -> -0
dqshi208 shift -1234567890123456789012345678901234   -1  -> -123456789012345678901234567890123
dqshi209 shift -1234567890123456789012345678901234   -33 -> -1
dqshi210 shift -1234567890123456789012345678901234   -34 -> -0
dqshi211 shift -9934567890123456789012345678901234   -33 -> -9
dqshi212 shift -9934567890123456789012345678901234   -34 -> -0


-- Specials; NaNs are handled as usual
dqshi781 shift -Inf  -8     -> -Infinity
dqshi782 shift -Inf  -1     -> -Infinity
dqshi783 shift -Inf  -0     -> -Infinity
dqshi784 shift -Inf   0     -> -Infinity
dqshi785 shift -Inf   1     -> -Infinity
dqshi786 shift -Inf   8     -> -Infinity
dqshi787 shift -1000 -Inf   -> NaN Invalid_operation
dqshi788 shift -Inf  -Inf   -> NaN Invalid_operation
dqshi789 shift -1    -Inf   -> NaN Invalid_operation
dqshi790 shift -0    -Inf   -> NaN Invalid_operation
dqshi791 shift  0    -Inf   -> NaN Invalid_operation
dqshi792 shift  1    -Inf   -> NaN Invalid_operation
dqshi793 shift  1000 -Inf   -> NaN Invalid_operation
dqshi794 shift  Inf  -Inf   -> NaN Invalid_operation

dqshi800 shift  Inf  -Inf   -> NaN Invalid_operation
dqshi801 shift  Inf  -8     -> Infinity
dqshi802 shift  Inf  -1     -> Infinity
dqshi803 shift  Inf  -0     -> Infinity
dqshi804 shift  Inf   0     -> Infinity
dqshi805 shift  Inf   1     -> Infinity
dqshi806 shift  Inf   8     -> Infinity
dqshi807 shift  Inf   Inf   -> NaN Invalid_operation
dqshi808 shift -1000  Inf   -> NaN Invalid_operation
dqshi809 shift -Inf   Inf   -> NaN Invalid_operation
dqshi810 shift -1     Inf   -> NaN Invalid_operation
dqshi811 shift -0     Inf   -> NaN Invalid_operation
dqshi812 shift  0     Inf   -> NaN Invalid_operation
dqshi813 shift  1     Inf   -> NaN Invalid_operation
dqshi814 shift  1000  Inf   -> NaN Invalid_operation
dqshi815 shift  Inf   Inf   -> NaN Invalid_operation

dqshi821 shift  NaN -Inf    ->  NaN
dqshi822 shift  NaN -1000   ->  NaN
dqshi823 shift  NaN -1      ->  NaN
dqshi824 shift  NaN -0      ->  NaN
dqshi825 shift  NaN  0      ->  NaN
dqshi826 shift  NaN  1      ->  NaN
dqshi827 shift  NaN  1000   ->  NaN
dqshi828 shift  NaN  Inf    ->  NaN
dqshi829 shift  NaN  NaN    ->  NaN
dqshi830 shift -Inf  NaN    ->  NaN
dqshi831 shift -1000 NaN    ->  NaN
dqshi832 shift -1    NaN    ->  NaN
dqshi833 shift -0    NaN    ->  NaN
dqshi834 shift  0    NaN    ->  NaN
dqshi835 shift  1    NaN    ->  NaN
dqshi836 shift  1000 NaN    ->  NaN
dqshi837 shift  Inf  NaN    ->  NaN

dqshi841 shift  sNaN -Inf   ->  NaN  Invalid_operation
dqshi842 shift  sNaN -1000  ->  NaN  Invalid_operation
dqshi843 shift  sNaN -1     ->  NaN  Invalid_operation
dqshi844 shift  sNaN -0     ->  NaN  Invalid_operation
dqshi845 shift  sNaN  0     ->  NaN  Invalid_operation
dqshi846 shift  sNaN  1     ->  NaN  Invalid_operation
dqshi847 shift  sNaN  1000  ->  NaN  Invalid_operation
dqshi848 shift  sNaN  NaN   ->  NaN  Invalid_operation
dqshi849 shift  sNaN sNaN   ->  NaN  Invalid_operation
dqshi850 shift  NaN  sNaN   ->  NaN  Invalid_operation
dqshi851 shift -Inf  sNaN   ->  NaN  Invalid_operation
dqshi852 shift -1000 sNaN   ->  NaN  Invalid_operation
dqshi853 shift -1    sNaN   ->  NaN  Invalid_operation
dqshi854 shift -0    sNaN   ->  NaN  Invalid_operation
dqshi855 shift  0    sNaN   ->  NaN  Invalid_operation
dqshi856 shift  1    sNaN   ->  NaN  Invalid_operation
dqshi857 shift  1000 sNaN   ->  NaN  Invalid_operation
dqshi858 shift  Inf  sNaN   ->  NaN  Invalid_operation
dqshi859 shift  NaN  sNaN   ->  NaN  Invalid_operation

-- propagating NaNs
dqshi861 shift  NaN1   -Inf    ->  NaN1
dqshi862 shift +NaN2   -1000   ->  NaN2
dqshi863 shift  NaN3    1000   ->  NaN3
dqshi864 shift  NaN4    Inf    ->  NaN4
dqshi865 shift  NaN5   +NaN6   ->  NaN5
dqshi866 shift -Inf     NaN7   ->  NaN7
dqshi867 shift -1000    NaN8   ->  NaN8
dqshi868 shift  1000    NaN9   ->  NaN9
dqshi869 shift  Inf    +NaN10  ->  NaN10
dqshi871 shift  sNaN11  -Inf   ->  NaN11  Invalid_operation
dqshi872 shift  sNaN12  -1000  ->  NaN12  Invalid_operation
dqshi873 shift  sNaN13   1000  ->  NaN13  Invalid_operation
dqshi874 shift  sNaN14   NaN17 ->  NaN14  Invalid_operation
dqshi875 shift  sNaN15  sNaN18 ->  NaN15  Invalid_operation
dqshi876 shift  NaN16   sNaN19 ->  NaN19  Invalid_operation
dqshi877 shift -Inf    +sNaN20 ->  NaN20  Invalid_operation
dqshi878 shift -1000    sNaN21 ->  NaN21  Invalid_operation
dqshi879 shift  1000    sNaN22 ->  NaN22  Invalid_operation
dqshi880 shift  Inf     sNaN23 ->  NaN23  Invalid_operation
dqshi881 shift +NaN25  +sNaN24 ->  NaN24  Invalid_operation
dqshi882 shift -NaN26    NaN28 -> -NaN26
dqshi883 shift -sNaN27  sNaN29 -> -NaN27  Invalid_operation
dqshi884 shift  1000    -NaN30 -> -NaN30
dqshi885 shift  1000   -sNaN31 -> -NaN31  Invalid_operation