summaryrefslogtreecommitdiff
path: root/Lib/test/decimaltestdata/or.decTest
blob: ace901b6619376f491746a50e85acd4878ee648a (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
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
------------------------------------------------------------------------
-- or.decTest -- digitwise logical OR                                 --
-- 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 (truth table)
orx001 or             0    0 ->    0
orx002 or             0    1 ->    1
orx003 or             1    0 ->    1
orx004 or             1    1 ->    1
orx005 or          1100 1010 -> 1110
-- and at msd and msd-1
orx006 or 000000000 000000000 ->           0
orx007 or 000000000 100000000 ->   100000000
orx008 or 100000000 000000000 ->   100000000
orx009 or 100000000 100000000 ->   100000000
orx010 or 000000000 000000000 ->           0
orx011 or 000000000 010000000 ->    10000000
orx012 or 010000000 000000000 ->    10000000
orx013 or 010000000 010000000 ->    10000000

-- Various lengths
--        123456789     123456789      123456789
orx021 or 111111111     111111111  ->  111111111
orx022 or 111111111111  111111111  ->  111111111
orx023 or  11111111      11111111  ->   11111111
orx025 or   1111111       1111111  ->    1111111
orx026 or    111111        111111  ->     111111
orx027 or     11111         11111  ->      11111
orx028 or      1111          1111  ->       1111
orx029 or       111           111  ->        111
orx031 or        11            11  ->         11
orx032 or         1             1  ->          1
orx033 or 111111111111 1111111111  ->  111111111
orx034 or 11111111111 11111111111  ->  111111111
orx035 or 1111111111 111111111111  ->  111111111
orx036 or 111111111 1111111111111  ->  111111111

orx040 or 111111111  111111111111  ->  111111111
orx041 or  11111111  111111111111  ->  111111111
orx042 or  11111111     111111111  ->  111111111
orx043 or   1111111     100000010  ->  101111111
orx044 or    111111     100000100  ->  100111111
orx045 or     11111     100001000  ->  100011111
orx046 or      1111     100010000  ->  100011111
orx047 or       111     100100000  ->  100100111
orx048 or        11     101000000  ->  101000011
orx049 or         1     110000000  ->  110000001

orx050 or 1111111111  1  ->  111111111
orx051 or  111111111  1  ->  111111111
orx052 or   11111111  1  ->  11111111
orx053 or    1111111  1  ->  1111111
orx054 or     111111  1  ->  111111
orx055 or      11111  1  ->  11111
orx056 or       1111  1  ->  1111
orx057 or        111  1  ->  111
orx058 or         11  1  ->  11
orx059 or          1  1  ->  1

orx060 or 1111111111  0  ->  111111111
orx061 or  111111111  0  ->  111111111
orx062 or   11111111  0  ->  11111111
orx063 or    1111111  0  ->  1111111
orx064 or     111111  0  ->  111111
orx065 or      11111  0  ->  11111
orx066 or       1111  0  ->  1111
orx067 or        111  0  ->  111
orx068 or         11  0  ->  11
orx069 or          1  0  ->  1

orx070 or 1  1111111111  ->  111111111
orx071 or 1   111111111  ->  111111111
orx072 or 1    11111111  ->  11111111
orx073 or 1     1111111  ->  1111111
orx074 or 1      111111  ->  111111
orx075 or 1       11111  ->  11111
orx076 or 1        1111  ->  1111
orx077 or 1         111  ->  111
orx078 or 1          11  ->  11
orx079 or 1           1  ->  1

orx080 or 0  1111111111  ->  111111111
orx081 or 0   111111111  ->  111111111
orx082 or 0    11111111  ->  11111111
orx083 or 0     1111111  ->  1111111
orx084 or 0      111111  ->  111111
orx085 or 0       11111  ->  11111
orx086 or 0        1111  ->  1111
orx087 or 0         111  ->  111
orx088 or 0          11  ->  11
orx089 or 0           1  ->  1

orx090 or 011111111  111101111  ->  111111111
orx091 or 101111111  111101111  ->  111111111
orx092 or 110111111  111101111  ->  111111111
orx093 or 111011111  111101111  ->  111111111
orx094 or 111101111  111101111  ->  111101111
orx095 or 111110111  111101111  ->  111111111
orx096 or 111111011  111101111  ->  111111111
orx097 or 111111101  111101111  ->  111111111
orx098 or 111111110  111101111  ->  111111111

orx100 or 111101111  011111111  ->  111111111
orx101 or 111101111  101111111  ->  111111111
orx102 or 111101111  110111111  ->  111111111
orx103 or 111101111  111011111  ->  111111111
orx104 or 111101111  111101111  ->  111101111
orx105 or 111101111  111110111  ->  111111111
orx106 or 111101111  111111011  ->  111111111
orx107 or 111101111  111111101  ->  111111111
orx108 or 111101111  111111110  ->  111111111

-- non-0/1 should not be accepted, nor should signs
orx220 or 111111112  111111111  ->  NaN Invalid_operation
orx221 or 333333333  333333333  ->  NaN Invalid_operation
orx222 or 555555555  555555555  ->  NaN Invalid_operation
orx223 or 777777777  777777777  ->  NaN Invalid_operation
orx224 or 999999999  999999999  ->  NaN Invalid_operation
orx225 or 222222222  999999999  ->  NaN Invalid_operation
orx226 or 444444444  999999999  ->  NaN Invalid_operation
orx227 or 666666666  999999999  ->  NaN Invalid_operation
orx228 or 888888888  999999999  ->  NaN Invalid_operation
orx229 or 999999999  222222222  ->  NaN Invalid_operation
orx230 or 999999999  444444444  ->  NaN Invalid_operation
orx231 or 999999999  666666666  ->  NaN Invalid_operation
orx232 or 999999999  888888888  ->  NaN Invalid_operation
-- a few randoms
orx240 or  567468689 -934981942 ->  NaN Invalid_operation
orx241 or  567367689  934981942 ->  NaN Invalid_operation
orx242 or -631917772 -706014634 ->  NaN Invalid_operation
orx243 or -756253257  138579234 ->  NaN Invalid_operation
orx244 or  835590149  567435400 ->  NaN Invalid_operation
-- test MSD
orx250 or  200000000 100000000 ->  NaN Invalid_operation
orx251 or  700000000 100000000 ->  NaN Invalid_operation
orx252 or  800000000 100000000 ->  NaN Invalid_operation
orx253 or  900000000 100000000 ->  NaN Invalid_operation
orx254 or  200000000 000000000 ->  NaN Invalid_operation
orx255 or  700000000 000000000 ->  NaN Invalid_operation
orx256 or  800000000 000000000 ->  NaN Invalid_operation
orx257 or  900000000 000000000 ->  NaN Invalid_operation
orx258 or  100000000 200000000 ->  NaN Invalid_operation
orx259 or  100000000 700000000 ->  NaN Invalid_operation
orx260 or  100000000 800000000 ->  NaN Invalid_operation
orx261 or  100000000 900000000 ->  NaN Invalid_operation
orx262 or  000000000 200000000 ->  NaN Invalid_operation
orx263 or  000000000 700000000 ->  NaN Invalid_operation
orx264 or  000000000 800000000 ->  NaN Invalid_operation
orx265 or  000000000 900000000 ->  NaN Invalid_operation
-- test MSD-1
orx270 or  020000000 100000000 ->  NaN Invalid_operation
orx271 or  070100000 100000000 ->  NaN Invalid_operation
orx272 or  080010000 100000001 ->  NaN Invalid_operation
orx273 or  090001000 100000010 ->  NaN Invalid_operation
orx274 or  100000100 020010100 ->  NaN Invalid_operation
orx275 or  100000000 070001000 ->  NaN Invalid_operation
orx276 or  100000010 080010100 ->  NaN Invalid_operation
orx277 or  100000000 090000010 ->  NaN Invalid_operation
-- test LSD
orx280 or  001000002 100000000 ->  NaN Invalid_operation
orx281 or  000000007 100000000 ->  NaN Invalid_operation
orx282 or  000000008 100000000 ->  NaN Invalid_operation
orx283 or  000000009 100000000 ->  NaN Invalid_operation
orx284 or  100000000 000100002 ->  NaN Invalid_operation
orx285 or  100100000 001000007 ->  NaN Invalid_operation
orx286 or  100010000 010000008 ->  NaN Invalid_operation
orx287 or  100001000 100000009 ->  NaN Invalid_operation
-- test Middie
orx288 or  001020000 100000000 ->  NaN Invalid_operation
orx289 or  000070001 100000000 ->  NaN Invalid_operation
orx290 or  000080000 100010000 ->  NaN Invalid_operation
orx291 or  000090000 100001000 ->  NaN Invalid_operation
orx292 or  100000010 000020100 ->  NaN Invalid_operation
orx293 or  100100000 000070010 ->  NaN Invalid_operation
orx294 or  100010100 000080001 ->  NaN Invalid_operation
orx295 or  100001000 000090000 ->  NaN Invalid_operation
-- signs
orx296 or -100001000 -000000000 ->  NaN Invalid_operation
orx297 or -100001000  000010000 ->  NaN Invalid_operation
orx298 or  100001000 -000000000 ->  NaN Invalid_operation
orx299 or  100001000  000011000 ->  100011000

-- Nmax, Nmin, Ntiny
orx331 or  2   9.99999999E+999     -> NaN Invalid_operation
orx332 or  3   1E-999              -> NaN Invalid_operation
orx333 or  4   1.00000000E-999     -> NaN Invalid_operation
orx334 or  5   1E-1007             -> NaN Invalid_operation
orx335 or  6   -1E-1007            -> NaN Invalid_operation
orx336 or  7   -1.00000000E-999    -> NaN Invalid_operation
orx337 or  8   -1E-999             -> NaN Invalid_operation
orx338 or  9   -9.99999999E+999    -> NaN Invalid_operation
orx341 or  9.99999999E+999     -18 -> NaN Invalid_operation
orx342 or  1E-999               01 -> NaN Invalid_operation
orx343 or  1.00000000E-999     -18 -> NaN Invalid_operation
orx344 or  1E-1007              18 -> NaN Invalid_operation
orx345 or  -1E-1007            -10 -> NaN Invalid_operation
orx346 or  -1.00000000E-999     18 -> NaN Invalid_operation
orx347 or  -1E-999              10 -> NaN Invalid_operation
orx348 or  -9.99999999E+999    -18 -> NaN Invalid_operation

-- A few other non-integers
orx361 or  1.0                  1  -> NaN Invalid_operation
orx362 or  1E+1                 1  -> NaN Invalid_operation
orx363 or  0.0                  1  -> NaN Invalid_operation
orx364 or  0E+1                 1  -> NaN Invalid_operation
orx365 or  9.9                  1  -> NaN Invalid_operation
orx366 or  9E+1                 1  -> NaN Invalid_operation
orx371 or  0 1.0                   -> NaN Invalid_operation
orx372 or  0 1E+1                  -> NaN Invalid_operation
orx373 or  0 0.0                   -> NaN Invalid_operation
orx374 or  0 0E+1                  -> NaN Invalid_operation
orx375 or  0 9.9                   -> NaN Invalid_operation
orx376 or  0 9E+1                  -> NaN Invalid_operation

-- All Specials are in error
orx780 or -Inf  -Inf   -> NaN Invalid_operation
orx781 or -Inf  -1000  -> NaN Invalid_operation
orx782 or -Inf  -1     -> NaN Invalid_operation
orx783 or -Inf  -0     -> NaN Invalid_operation
orx784 or -Inf   0     -> NaN Invalid_operation
orx785 or -Inf   1     -> NaN Invalid_operation
orx786 or -Inf   1000  -> NaN Invalid_operation
orx787 or -1000 -Inf   -> NaN Invalid_operation
orx788 or -Inf  -Inf   -> NaN Invalid_operation
orx789 or -1    -Inf   -> NaN Invalid_operation
orx790 or -0    -Inf   -> NaN Invalid_operation
orx791 or  0    -Inf   -> NaN Invalid_operation
orx792 or  1    -Inf   -> NaN Invalid_operation
orx793 or  1000 -Inf   -> NaN Invalid_operation
orx794 or  Inf  -Inf   -> NaN Invalid_operation

orx800 or  Inf  -Inf   -> NaN Invalid_operation
orx801 or  Inf  -1000  -> NaN Invalid_operation
orx802 or  Inf  -1     -> NaN Invalid_operation
orx803 or  Inf  -0     -> NaN Invalid_operation
orx804 or  Inf   0     -> NaN Invalid_operation
orx805 or  Inf   1     -> NaN Invalid_operation
orx806 or  Inf   1000  -> NaN Invalid_operation
orx807 or  Inf   Inf   -> NaN Invalid_operation
orx808 or -1000  Inf   -> NaN Invalid_operation
orx809 or -Inf   Inf   -> NaN Invalid_operation
orx810 or -1     Inf   -> NaN Invalid_operation
orx811 or -0     Inf   -> NaN Invalid_operation
orx812 or  0     Inf   -> NaN Invalid_operation
orx813 or  1     Inf   -> NaN Invalid_operation
orx814 or  1000  Inf   -> NaN Invalid_operation
orx815 or  Inf   Inf   -> NaN Invalid_operation

orx821 or  NaN -Inf    -> NaN Invalid_operation
orx822 or  NaN -1000   -> NaN Invalid_operation
orx823 or  NaN -1      -> NaN Invalid_operation
orx824 or  NaN -0      -> NaN Invalid_operation
orx825 or  NaN  0      -> NaN Invalid_operation
orx826 or  NaN  1      -> NaN Invalid_operation
orx827 or  NaN  1000   -> NaN Invalid_operation
orx828 or  NaN  Inf    -> NaN Invalid_operation
orx829 or  NaN  NaN    -> NaN Invalid_operation
orx830 or -Inf  NaN    -> NaN Invalid_operation
orx831 or -1000 NaN    -> NaN Invalid_operation
orx832 or -1    NaN    -> NaN Invalid_operation
orx833 or -0    NaN    -> NaN Invalid_operation
orx834 or  0    NaN    -> NaN Invalid_operation
orx835 or  1    NaN    -> NaN Invalid_operation
orx836 or  1000 NaN    -> NaN Invalid_operation
orx837 or  Inf  NaN    -> NaN Invalid_operation

orx841 or  sNaN -Inf   ->  NaN  Invalid_operation
orx842 or  sNaN -1000  ->  NaN  Invalid_operation
orx843 or  sNaN -1     ->  NaN  Invalid_operation
orx844 or  sNaN -0     ->  NaN  Invalid_operation
orx845 or  sNaN  0     ->  NaN  Invalid_operation
orx846 or  sNaN  1     ->  NaN  Invalid_operation
orx847 or  sNaN  1000  ->  NaN  Invalid_operation
orx848 or  sNaN  NaN   ->  NaN  Invalid_operation
orx849 or  sNaN sNaN   ->  NaN  Invalid_operation
orx850 or  NaN  sNaN   ->  NaN  Invalid_operation
orx851 or -Inf  sNaN   ->  NaN  Invalid_operation
orx852 or -1000 sNaN   ->  NaN  Invalid_operation
orx853 or -1    sNaN   ->  NaN  Invalid_operation
orx854 or -0    sNaN   ->  NaN  Invalid_operation
orx855 or  0    sNaN   ->  NaN  Invalid_operation
orx856 or  1    sNaN   ->  NaN  Invalid_operation
orx857 or  1000 sNaN   ->  NaN  Invalid_operation
orx858 or  Inf  sNaN   ->  NaN  Invalid_operation
orx859 or  NaN  sNaN   ->  NaN  Invalid_operation

-- propagating NaNs
orx861 or  NaN1   -Inf    -> NaN Invalid_operation
orx862 or +NaN2   -1000   -> NaN Invalid_operation
orx863 or  NaN3    1000   -> NaN Invalid_operation
orx864 or  NaN4    Inf    -> NaN Invalid_operation
orx865 or  NaN5   +NaN6   -> NaN Invalid_operation
orx866 or -Inf     NaN7   -> NaN Invalid_operation
orx867 or -1000    NaN8   -> NaN Invalid_operation
orx868 or  1000    NaN9   -> NaN Invalid_operation
orx869 or  Inf    +NaN10  -> NaN Invalid_operation
orx871 or  sNaN11  -Inf   -> NaN Invalid_operation
orx872 or  sNaN12  -1000  -> NaN Invalid_operation
orx873 or  sNaN13   1000  -> NaN Invalid_operation
orx874 or  sNaN14   NaN17 -> NaN Invalid_operation
orx875 or  sNaN15  sNaN18 -> NaN Invalid_operation
orx876 or  NaN16   sNaN19 -> NaN Invalid_operation
orx877 or -Inf    +sNaN20 -> NaN Invalid_operation
orx878 or -1000    sNaN21 -> NaN Invalid_operation
orx879 or  1000    sNaN22 -> NaN Invalid_operation
orx880 or  Inf     sNaN23 -> NaN Invalid_operation
orx881 or +NaN25  +sNaN24 -> NaN Invalid_operation
orx882 or -NaN26    NaN28 -> NaN Invalid_operation
orx883 or -sNaN27  sNaN29 -> NaN Invalid_operation
orx884 or  1000    -NaN30 -> NaN Invalid_operation
orx885 or  1000   -sNaN31 -> NaN Invalid_operation