Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | ------------------------------------------------------------------------ |
2 | -- add.decTest -- decimal addition -- | |
3 | -- Copyright (c) IBM Corporation, 1981, 2004. All rights reserved. -- | |
4 | ------------------------------------------------------------------------ | |
5 | -- Please see the document "General Decimal Arithmetic Testcases" -- | |
6 | -- at http://www2.hursley.ibm.com/decimal for the description of -- | |
7 | -- these testcases. -- | |
8 | -- -- | |
9 | -- These testcases are experimental ('beta' versions), and they -- | |
10 | -- may contain errors. They are offered on an as-is basis. In -- | |
11 | -- particular, achieving the same results as the tests here is not -- | |
12 | -- a guarantee that an implementation complies with any Standard -- | |
13 | -- or specification. The tests are not exhaustive. -- | |
14 | -- -- | |
15 | -- Please send comments, suggestions, and corrections to the author: -- | |
16 | -- Mike Cowlishaw, IBM Fellow -- | |
17 | -- IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK -- | |
18 | -- mfc@uk.ibm.com -- | |
19 | ------------------------------------------------------------------------ | |
20 | version: 2.39 | |
21 | ||
22 | precision: 9 | |
23 | rounding: half_up | |
24 | maxExponent: 384 | |
25 | minexponent: -383 | |
26 | extended: 1 | |
27 | ||
28 | -- [first group are 'quick confidence check'] | |
29 | addx001 add 1 1 -> 2 | |
30 | addx002 add 2 3 -> 5 | |
31 | addx003 add '5.75' '3.3' -> 9.05 | |
32 | addx004 add '5' '-3' -> 2 | |
33 | addx005 add '-5' '-3' -> -8 | |
34 | addx006 add '-7' '2.5' -> -4.5 | |
35 | addx007 add '0.7' '0.3' -> 1.0 | |
36 | addx008 add '1.25' '1.25' -> 2.50 | |
37 | addx009 add '1.23456789' '1.00000000' -> '2.23456789' | |
38 | addx010 add '1.23456789' '1.00000011' -> '2.23456800' | |
39 | ||
40 | addx011 add '0.4444444444' '0.5555555555' -> '1.00000000' Inexact Rounded | |
41 | addx012 add '0.4444444440' '0.5555555555' -> '1.00000000' Inexact Rounded | |
42 | addx013 add '0.4444444444' '0.5555555550' -> '0.999999999' Inexact Rounded | |
43 | addx014 add '0.44444444449' '0' -> '0.444444444' Inexact Rounded | |
44 | addx015 add '0.444444444499' '0' -> '0.444444444' Inexact Rounded | |
45 | addx016 add '0.4444444444999' '0' -> '0.444444444' Inexact Rounded | |
46 | addx017 add '0.4444444445000' '0' -> '0.444444445' Inexact Rounded | |
47 | addx018 add '0.4444444445001' '0' -> '0.444444445' Inexact Rounded | |
48 | addx019 add '0.444444444501' '0' -> '0.444444445' Inexact Rounded | |
49 | addx020 add '0.44444444451' '0' -> '0.444444445' Inexact Rounded | |
50 | ||
51 | addx021 add 0 1 -> 1 | |
52 | addx022 add 1 1 -> 2 | |
53 | addx023 add 2 1 -> 3 | |
54 | addx024 add 3 1 -> 4 | |
55 | addx025 add 4 1 -> 5 | |
56 | addx026 add 5 1 -> 6 | |
57 | addx027 add 6 1 -> 7 | |
58 | addx028 add 7 1 -> 8 | |
59 | addx029 add 8 1 -> 9 | |
60 | addx030 add 9 1 -> 10 | |
61 | ||
62 | -- some carrying effects | |
63 | addx031 add '0.9998' '0.0000' -> '0.9998' | |
64 | addx032 add '0.9998' '0.0001' -> '0.9999' | |
65 | addx033 add '0.9998' '0.0002' -> '1.0000' | |
66 | addx034 add '0.9998' '0.0003' -> '1.0001' | |
67 | ||
68 | addx035 add '70' '10000e+9' -> '1.00000000E+13' Inexact Rounded | |
69 | addx036 add '700' '10000e+9' -> '1.00000000E+13' Inexact Rounded | |
70 | addx037 add '7000' '10000e+9' -> '1.00000000E+13' Inexact Rounded | |
71 | addx038 add '70000' '10000e+9' -> '1.00000001E+13' Inexact Rounded | |
72 | addx039 add '700000' '10000e+9' -> '1.00000007E+13' Rounded | |
73 | ||
74 | -- symmetry: | |
75 | addx040 add '10000e+9' '70' -> '1.00000000E+13' Inexact Rounded | |
76 | addx041 add '10000e+9' '700' -> '1.00000000E+13' Inexact Rounded | |
77 | addx042 add '10000e+9' '7000' -> '1.00000000E+13' Inexact Rounded | |
78 | addx044 add '10000e+9' '70000' -> '1.00000001E+13' Inexact Rounded | |
79 | addx045 add '10000e+9' '700000' -> '1.00000007E+13' Rounded | |
80 | ||
81 | -- same, higher precision | |
82 | precision: 15 | |
83 | addx046 add '10000e+9' '7' -> '10000000000007' | |
84 | addx047 add '10000e+9' '70' -> '10000000000070' | |
85 | addx048 add '10000e+9' '700' -> '10000000000700' | |
86 | addx049 add '10000e+9' '7000' -> '10000000007000' | |
87 | addx050 add '10000e+9' '70000' -> '10000000070000' | |
88 | addx051 add '10000e+9' '700000' -> '10000000700000' | |
89 | ||
90 | -- examples from decarith | |
91 | addx053 add '12' '7.00' -> '19.00' | |
92 | addx054 add '1.3' '-1.07' -> '0.23' | |
93 | addx055 add '1.3' '-1.30' -> '0.00' | |
94 | addx056 add '1.3' '-2.07' -> '-0.77' | |
95 | addx057 add '1E+2' '1E+4' -> '1.01E+4' | |
96 | ||
97 | -- zero preservation | |
98 | precision: 6 | |
99 | addx060 add '10000e+9' '70000' -> '1.00000E+13' Inexact Rounded | |
100 | addx061 add 1 '0.0001' -> '1.0001' | |
101 | addx062 add 1 '0.00001' -> '1.00001' | |
102 | addx063 add 1 '0.000001' -> '1.00000' Inexact Rounded | |
103 | addx064 add 1 '0.0000001' -> '1.00000' Inexact Rounded | |
104 | addx065 add 1 '0.00000001' -> '1.00000' Inexact Rounded | |
105 | ||
106 | -- some funny zeros [in case of bad signum] | |
107 | addx070 add 1 0 -> 1 | |
108 | addx071 add 1 0. -> 1 | |
109 | addx072 add 1 .0 -> 1.0 | |
110 | addx073 add 1 0.0 -> 1.0 | |
111 | addx074 add 1 0.00 -> 1.00 | |
112 | addx075 add 0 1 -> 1 | |
113 | addx076 add 0. 1 -> 1 | |
114 | addx077 add .0 1 -> 1.0 | |
115 | addx078 add 0.0 1 -> 1.0 | |
116 | addx079 add 0.00 1 -> 1.00 | |
117 | ||
118 | precision: 9 | |
119 | ||
120 | -- some carries | |
121 | addx080 add 999999998 1 -> 999999999 | |
122 | addx081 add 999999999 1 -> 1.00000000E+9 Rounded | |
123 | addx082 add 99999999 1 -> 100000000 | |
124 | addx083 add 9999999 1 -> 10000000 | |
125 | addx084 add 999999 1 -> 1000000 | |
126 | addx085 add 99999 1 -> 100000 | |
127 | addx086 add 9999 1 -> 10000 | |
128 | addx087 add 999 1 -> 1000 | |
129 | addx088 add 99 1 -> 100 | |
130 | addx089 add 9 1 -> 10 | |
131 | ||
132 | ||
133 | -- more LHS swaps | |
134 | addx090 add '-56267E-10' 0 -> '-0.0000056267' | |
135 | addx091 add '-56267E-6' 0 -> '-0.056267' | |
136 | addx092 add '-56267E-5' 0 -> '-0.56267' | |
137 | addx093 add '-56267E-4' 0 -> '-5.6267' | |
138 | addx094 add '-56267E-3' 0 -> '-56.267' | |
139 | addx095 add '-56267E-2' 0 -> '-562.67' | |
140 | addx096 add '-56267E-1' 0 -> '-5626.7' | |
141 | addx097 add '-56267E-0' 0 -> '-56267' | |
142 | addx098 add '-5E-10' 0 -> '-5E-10' | |
143 | addx099 add '-5E-7' 0 -> '-5E-7' | |
144 | addx100 add '-5E-6' 0 -> '-0.000005' | |
145 | addx101 add '-5E-5' 0 -> '-0.00005' | |
146 | addx102 add '-5E-4' 0 -> '-0.0005' | |
147 | addx103 add '-5E-1' 0 -> '-0.5' | |
148 | addx104 add '-5E0' 0 -> '-5' | |
149 | addx105 add '-5E1' 0 -> '-50' | |
150 | addx106 add '-5E5' 0 -> '-500000' | |
151 | addx107 add '-5E8' 0 -> '-500000000' | |
152 | addx108 add '-5E9' 0 -> '-5.00000000E+9' Rounded | |
153 | addx109 add '-5E10' 0 -> '-5.00000000E+10' Rounded | |
154 | addx110 add '-5E11' 0 -> '-5.00000000E+11' Rounded | |
155 | addx111 add '-5E100' 0 -> '-5.00000000E+100' Rounded | |
156 | ||
157 | -- more RHS swaps | |
158 | addx113 add 0 '-56267E-10' -> '-0.0000056267' | |
159 | addx114 add 0 '-56267E-6' -> '-0.056267' | |
160 | addx116 add 0 '-56267E-5' -> '-0.56267' | |
161 | addx117 add 0 '-56267E-4' -> '-5.6267' | |
162 | addx119 add 0 '-56267E-3' -> '-56.267' | |
163 | addx120 add 0 '-56267E-2' -> '-562.67' | |
164 | addx121 add 0 '-56267E-1' -> '-5626.7' | |
165 | addx122 add 0 '-56267E-0' -> '-56267' | |
166 | addx123 add 0 '-5E-10' -> '-5E-10' | |
167 | addx124 add 0 '-5E-7' -> '-5E-7' | |
168 | addx125 add 0 '-5E-6' -> '-0.000005' | |
169 | addx126 add 0 '-5E-5' -> '-0.00005' | |
170 | addx127 add 0 '-5E-4' -> '-0.0005' | |
171 | addx128 add 0 '-5E-1' -> '-0.5' | |
172 | addx129 add 0 '-5E0' -> '-5' | |
173 | addx130 add 0 '-5E1' -> '-50' | |
174 | addx131 add 0 '-5E5' -> '-500000' | |
175 | addx132 add 0 '-5E8' -> '-500000000' | |
176 | addx133 add 0 '-5E9' -> '-5.00000000E+9' Rounded | |
177 | addx134 add 0 '-5E10' -> '-5.00000000E+10' Rounded | |
178 | addx135 add 0 '-5E11' -> '-5.00000000E+11' Rounded | |
179 | addx136 add 0 '-5E100' -> '-5.00000000E+100' Rounded | |
180 | ||
181 | -- related | |
182 | addx137 add 1 '0E-12' -> '1.00000000' Rounded | |
183 | addx138 add -1 '0E-12' -> '-1.00000000' Rounded | |
184 | addx139 add '0E-12' 1 -> '1.00000000' Rounded | |
185 | addx140 add '0E-12' -1 -> '-1.00000000' Rounded | |
186 | addx141 add 1E+4 0.0000 -> '10000.0000' | |
187 | addx142 add 1E+4 0.00000 -> '10000.0000' Rounded | |
188 | addx143 add 0.000 1E+5 -> '100000.000' | |
189 | addx144 add 0.0000 1E+5 -> '100000.000' Rounded | |
190 | ||
191 | -- [some of the next group are really constructor tests] | |
192 | addx146 add '00.0' 0 -> '0.0' | |
193 | addx147 add '0.00' 0 -> '0.00' | |
194 | addx148 add 0 '0.00' -> '0.00' | |
195 | addx149 add 0 '00.0' -> '0.0' | |
196 | addx150 add '00.0' '0.00' -> '0.00' | |
197 | addx151 add '0.00' '00.0' -> '0.00' | |
198 | addx152 add '3' '.3' -> '3.3' | |
199 | addx153 add '3.' '.3' -> '3.3' | |
200 | addx154 add '3.0' '.3' -> '3.3' | |
201 | addx155 add '3.00' '.3' -> '3.30' | |
202 | addx156 add '3' '3' -> '6' | |
203 | addx157 add '3' '+3' -> '6' | |
204 | addx158 add '3' '-3' -> '0' | |
205 | addx159 add '0.3' '-0.3' -> '0.0' | |
206 | addx160 add '0.03' '-0.03' -> '0.00' | |
207 | ||
208 | -- try borderline precision, with carries, etc. | |
209 | precision: 15 | |
210 | addx161 add '1E+12' '-1' -> '999999999999' | |
211 | addx162 add '1E+12' '1.11' -> '1000000000001.11' | |
212 | addx163 add '1.11' '1E+12' -> '1000000000001.11' | |
213 | addx164 add '-1' '1E+12' -> '999999999999' | |
214 | addx165 add '7E+12' '-1' -> '6999999999999' | |
215 | addx166 add '7E+12' '1.11' -> '7000000000001.11' | |
216 | addx167 add '1.11' '7E+12' -> '7000000000001.11' | |
217 | addx168 add '-1' '7E+12' -> '6999999999999' | |
218 | ||
219 | -- 123456789012345 123456789012345 1 23456789012345 | |
220 | addx170 add '0.444444444444444' '0.555555555555563' -> '1.00000000000001' Inexact Rounded | |
221 | addx171 add '0.444444444444444' '0.555555555555562' -> '1.00000000000001' Inexact Rounded | |
222 | addx172 add '0.444444444444444' '0.555555555555561' -> '1.00000000000001' Inexact Rounded | |
223 | addx173 add '0.444444444444444' '0.555555555555560' -> '1.00000000000000' Inexact Rounded | |
224 | addx174 add '0.444444444444444' '0.555555555555559' -> '1.00000000000000' Inexact Rounded | |
225 | addx175 add '0.444444444444444' '0.555555555555558' -> '1.00000000000000' Inexact Rounded | |
226 | addx176 add '0.444444444444444' '0.555555555555557' -> '1.00000000000000' Inexact Rounded | |
227 | addx177 add '0.444444444444444' '0.555555555555556' -> '1.00000000000000' Rounded | |
228 | addx178 add '0.444444444444444' '0.555555555555555' -> '0.999999999999999' | |
229 | addx179 add '0.444444444444444' '0.555555555555554' -> '0.999999999999998' | |
230 | addx180 add '0.444444444444444' '0.555555555555553' -> '0.999999999999997' | |
231 | addx181 add '0.444444444444444' '0.555555555555552' -> '0.999999999999996' | |
232 | addx182 add '0.444444444444444' '0.555555555555551' -> '0.999999999999995' | |
233 | addx183 add '0.444444444444444' '0.555555555555550' -> '0.999999999999994' | |
234 | ||
235 | -- and some more, including residue effects and different roundings | |
236 | precision: 9 | |
237 | rounding: half_up | |
238 | addx200 add '123456789' 0 -> '123456789' | |
239 | addx201 add '123456789' 0.000000001 -> '123456789' Inexact Rounded | |
240 | addx202 add '123456789' 0.000001 -> '123456789' Inexact Rounded | |
241 | addx203 add '123456789' 0.1 -> '123456789' Inexact Rounded | |
242 | addx204 add '123456789' 0.4 -> '123456789' Inexact Rounded | |
243 | addx205 add '123456789' 0.49 -> '123456789' Inexact Rounded | |
244 | addx206 add '123456789' 0.499999 -> '123456789' Inexact Rounded | |
245 | addx207 add '123456789' 0.499999999 -> '123456789' Inexact Rounded | |
246 | addx208 add '123456789' 0.5 -> '123456790' Inexact Rounded | |
247 | addx209 add '123456789' 0.500000001 -> '123456790' Inexact Rounded | |
248 | addx210 add '123456789' 0.500001 -> '123456790' Inexact Rounded | |
249 | addx211 add '123456789' 0.51 -> '123456790' Inexact Rounded | |
250 | addx212 add '123456789' 0.6 -> '123456790' Inexact Rounded | |
251 | addx213 add '123456789' 0.9 -> '123456790' Inexact Rounded | |
252 | addx214 add '123456789' 0.99999 -> '123456790' Inexact Rounded | |
253 | addx215 add '123456789' 0.999999999 -> '123456790' Inexact Rounded | |
254 | addx216 add '123456789' 1 -> '123456790' | |
255 | addx217 add '123456789' 1.000000001 -> '123456790' Inexact Rounded | |
256 | addx218 add '123456789' 1.00001 -> '123456790' Inexact Rounded | |
257 | addx219 add '123456789' 1.1 -> '123456790' Inexact Rounded | |
258 | ||
259 | rounding: half_even | |
260 | addx220 add '123456789' 0 -> '123456789' | |
261 | addx221 add '123456789' 0.000000001 -> '123456789' Inexact Rounded | |
262 | addx222 add '123456789' 0.000001 -> '123456789' Inexact Rounded | |
263 | addx223 add '123456789' 0.1 -> '123456789' Inexact Rounded | |
264 | addx224 add '123456789' 0.4 -> '123456789' Inexact Rounded | |
265 | addx225 add '123456789' 0.49 -> '123456789' Inexact Rounded | |
266 | addx226 add '123456789' 0.499999 -> '123456789' Inexact Rounded | |
267 | addx227 add '123456789' 0.499999999 -> '123456789' Inexact Rounded | |
268 | addx228 add '123456789' 0.5 -> '123456790' Inexact Rounded | |
269 | addx229 add '123456789' 0.500000001 -> '123456790' Inexact Rounded | |
270 | addx230 add '123456789' 0.500001 -> '123456790' Inexact Rounded | |
271 | addx231 add '123456789' 0.51 -> '123456790' Inexact Rounded | |
272 | addx232 add '123456789' 0.6 -> '123456790' Inexact Rounded | |
273 | addx233 add '123456789' 0.9 -> '123456790' Inexact Rounded | |
274 | addx234 add '123456789' 0.99999 -> '123456790' Inexact Rounded | |
275 | addx235 add '123456789' 0.999999999 -> '123456790' Inexact Rounded | |
276 | addx236 add '123456789' 1 -> '123456790' | |
277 | addx237 add '123456789' 1.00000001 -> '123456790' Inexact Rounded | |
278 | addx238 add '123456789' 1.00001 -> '123456790' Inexact Rounded | |
279 | addx239 add '123456789' 1.1 -> '123456790' Inexact Rounded | |
280 | -- critical few with even bottom digit... | |
281 | addx240 add '123456788' 0.499999999 -> '123456788' Inexact Rounded | |
282 | addx241 add '123456788' 0.5 -> '123456788' Inexact Rounded | |
283 | addx242 add '123456788' 0.500000001 -> '123456789' Inexact Rounded | |
284 | ||
285 | rounding: down | |
286 | addx250 add '123456789' 0 -> '123456789' | |
287 | addx251 add '123456789' 0.000000001 -> '123456789' Inexact Rounded | |
288 | addx252 add '123456789' 0.000001 -> '123456789' Inexact Rounded | |
289 | addx253 add '123456789' 0.1 -> '123456789' Inexact Rounded | |
290 | addx254 add '123456789' 0.4 -> '123456789' Inexact Rounded | |
291 | addx255 add '123456789' 0.49 -> '123456789' Inexact Rounded | |
292 | addx256 add '123456789' 0.499999 -> '123456789' Inexact Rounded | |
293 | addx257 add '123456789' 0.499999999 -> '123456789' Inexact Rounded | |
294 | addx258 add '123456789' 0.5 -> '123456789' Inexact Rounded | |
295 | addx259 add '123456789' 0.500000001 -> '123456789' Inexact Rounded | |
296 | addx260 add '123456789' 0.500001 -> '123456789' Inexact Rounded | |
297 | addx261 add '123456789' 0.51 -> '123456789' Inexact Rounded | |
298 | addx262 add '123456789' 0.6 -> '123456789' Inexact Rounded | |
299 | addx263 add '123456789' 0.9 -> '123456789' Inexact Rounded | |
300 | addx264 add '123456789' 0.99999 -> '123456789' Inexact Rounded | |
301 | addx265 add '123456789' 0.999999999 -> '123456789' Inexact Rounded | |
302 | addx266 add '123456789' 1 -> '123456790' | |
303 | addx267 add '123456789' 1.00000001 -> '123456790' Inexact Rounded | |
304 | addx268 add '123456789' 1.00001 -> '123456790' Inexact Rounded | |
305 | addx269 add '123456789' 1.1 -> '123456790' Inexact Rounded | |
306 | ||
307 | -- input preparation tests (operands should not be rounded) | |
308 | precision: 3 | |
309 | rounding: half_up | |
310 | ||
311 | addx270 add '12345678900000' 9999999999999 -> '2.23E+13' Inexact Rounded | |
312 | addx271 add '9999999999999' 12345678900000 -> '2.23E+13' Inexact Rounded | |
313 | ||
314 | addx272 add '12E+3' '3444' -> '1.54E+4' Inexact Rounded | |
315 | addx273 add '12E+3' '3446' -> '1.54E+4' Inexact Rounded | |
316 | addx274 add '12E+3' '3449.9' -> '1.54E+4' Inexact Rounded | |
317 | addx275 add '12E+3' '3450.0' -> '1.55E+4' Inexact Rounded | |
318 | addx276 add '12E+3' '3450.1' -> '1.55E+4' Inexact Rounded | |
319 | addx277 add '12E+3' '3454' -> '1.55E+4' Inexact Rounded | |
320 | addx278 add '12E+3' '3456' -> '1.55E+4' Inexact Rounded | |
321 | ||
322 | addx281 add '3444' '12E+3' -> '1.54E+4' Inexact Rounded | |
323 | addx282 add '3446' '12E+3' -> '1.54E+4' Inexact Rounded | |
324 | addx283 add '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded | |
325 | addx284 add '3450.0' '12E+3' -> '1.55E+4' Inexact Rounded | |
326 | addx285 add '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded | |
327 | addx286 add '3454' '12E+3' -> '1.55E+4' Inexact Rounded | |
328 | addx287 add '3456' '12E+3' -> '1.55E+4' Inexact Rounded | |
329 | ||
330 | rounding: half_down | |
331 | addx291 add '3444' '12E+3' -> '1.54E+4' Inexact Rounded | |
332 | addx292 add '3446' '12E+3' -> '1.54E+4' Inexact Rounded | |
333 | addx293 add '3449.9' '12E+3' -> '1.54E+4' Inexact Rounded | |
334 | addx294 add '3450.0' '12E+3' -> '1.54E+4' Inexact Rounded | |
335 | addx295 add '3450.1' '12E+3' -> '1.55E+4' Inexact Rounded | |
336 | addx296 add '3454' '12E+3' -> '1.55E+4' Inexact Rounded | |
337 | addx297 add '3456' '12E+3' -> '1.55E+4' Inexact Rounded | |
338 | ||
339 | -- 1 in last place tests | |
340 | rounding: half_up | |
341 | addx301 add -1 1 -> 0 | |
342 | addx302 add 0 1 -> 1 | |
343 | addx303 add 1 1 -> 2 | |
344 | addx304 add 12 1 -> 13 | |
345 | addx305 add 98 1 -> 99 | |
346 | addx306 add 99 1 -> 100 | |
347 | addx307 add 100 1 -> 101 | |
348 | addx308 add 101 1 -> 102 | |
349 | addx309 add -1 -1 -> -2 | |
350 | addx310 add 0 -1 -> -1 | |
351 | addx311 add 1 -1 -> 0 | |
352 | addx312 add 12 -1 -> 11 | |
353 | addx313 add 98 -1 -> 97 | |
354 | addx314 add 99 -1 -> 98 | |
355 | addx315 add 100 -1 -> 99 | |
356 | addx316 add 101 -1 -> 100 | |
357 | ||
358 | addx321 add -0.01 0.01 -> 0.00 | |
359 | addx322 add 0.00 0.01 -> 0.01 | |
360 | addx323 add 0.01 0.01 -> 0.02 | |
361 | addx324 add 0.12 0.01 -> 0.13 | |
362 | addx325 add 0.98 0.01 -> 0.99 | |
363 | addx326 add 0.99 0.01 -> 1.00 | |
364 | addx327 add 1.00 0.01 -> 1.01 | |
365 | addx328 add 1.01 0.01 -> 1.02 | |
366 | addx329 add -0.01 -0.01 -> -0.02 | |
367 | addx330 add 0.00 -0.01 -> -0.01 | |
368 | addx331 add 0.01 -0.01 -> 0.00 | |
369 | addx332 add 0.12 -0.01 -> 0.11 | |
370 | addx333 add 0.98 -0.01 -> 0.97 | |
371 | addx334 add 0.99 -0.01 -> 0.98 | |
372 | addx335 add 1.00 -0.01 -> 0.99 | |
373 | addx336 add 1.01 -0.01 -> 1.00 | |
374 | ||
375 | -- some more cases where adding 0 affects the coefficient | |
376 | precision: 9 | |
377 | addx340 add 1E+3 0 -> 1000 | |
378 | addx341 add 1E+8 0 -> 100000000 | |
379 | addx342 add 1E+9 0 -> 1.00000000E+9 Rounded | |
380 | addx343 add 1E+10 0 -> 1.00000000E+10 Rounded | |
381 | -- which simply follow from these cases ... | |
382 | addx344 add 1E+3 1 -> 1001 | |
383 | addx345 add 1E+8 1 -> 100000001 | |
384 | addx346 add 1E+9 1 -> 1.00000000E+9 Inexact Rounded | |
385 | addx347 add 1E+10 1 -> 1.00000000E+10 Inexact Rounded | |
386 | addx348 add 1E+3 7 -> 1007 | |
387 | addx349 add 1E+8 7 -> 100000007 | |
388 | addx350 add 1E+9 7 -> 1.00000001E+9 Inexact Rounded | |
389 | addx351 add 1E+10 7 -> 1.00000000E+10 Inexact Rounded | |
390 | ||
391 | -- tryzeros cases | |
392 | precision: 7 | |
393 | rounding: half_up | |
394 | maxExponent: 92 | |
395 | minexponent: -92 | |
396 | addx361 add 0E+50 10000E+1 -> 1.0000E+5 | |
397 | addx362 add 10000E+1 0E-50 -> 100000.0 Rounded | |
398 | addx363 add 10000E+1 10000E-50 -> 100000.0 Rounded Inexact | |
399 | ||
400 | -- a curiosity from JSR 13 testing | |
401 | rounding: half_down | |
402 | precision: 10 | |
403 | addx370 add 99999999 81512 -> 100081511 | |
404 | precision: 6 | |
405 | addx371 add 99999999 81512 -> 1.00082E+8 Rounded Inexact | |
406 | rounding: half_up | |
407 | precision: 10 | |
408 | addx372 add 99999999 81512 -> 100081511 | |
409 | precision: 6 | |
410 | addx373 add 99999999 81512 -> 1.00082E+8 Rounded Inexact | |
411 | rounding: half_even | |
412 | precision: 10 | |
413 | addx374 add 99999999 81512 -> 100081511 | |
414 | precision: 6 | |
415 | addx375 add 99999999 81512 -> 1.00082E+8 Rounded Inexact | |
416 | ||
417 | -- ulp replacement tests | |
418 | precision: 9 | |
419 | maxexponent: 999999999 | |
420 | minexponent: -999999999 | |
421 | addx400 add 1 77e-7 -> 1.0000077 | |
422 | addx401 add 1 77e-8 -> 1.00000077 | |
423 | addx402 add 1 77e-9 -> 1.00000008 Inexact Rounded | |
424 | addx403 add 1 77e-10 -> 1.00000001 Inexact Rounded | |
425 | addx404 add 1 77e-11 -> 1.00000000 Inexact Rounded | |
426 | addx405 add 1 77e-12 -> 1.00000000 Inexact Rounded | |
427 | addx406 add 1 77e-999 -> 1.00000000 Inexact Rounded | |
428 | addx407 add 1 77e-9999999 -> 1.00000000 Inexact Rounded | |
429 | ||
430 | addx410 add 10 77e-7 -> 10.0000077 | |
431 | addx411 add 10 77e-8 -> 10.0000008 Inexact Rounded | |
432 | addx412 add 10 77e-9 -> 10.0000001 Inexact Rounded | |
433 | addx413 add 10 77e-10 -> 10.0000000 Inexact Rounded | |
434 | addx414 add 10 77e-11 -> 10.0000000 Inexact Rounded | |
435 | addx415 add 10 77e-12 -> 10.0000000 Inexact Rounded | |
436 | addx416 add 10 77e-999 -> 10.0000000 Inexact Rounded | |
437 | addx417 add 10 77e-9999999 -> 10.0000000 Inexact Rounded | |
438 | ||
439 | addx420 add 77e-7 1 -> 1.0000077 | |
440 | addx421 add 77e-8 1 -> 1.00000077 | |
441 | addx422 add 77e-9 1 -> 1.00000008 Inexact Rounded | |
442 | addx423 add 77e-10 1 -> 1.00000001 Inexact Rounded | |
443 | addx424 add 77e-11 1 -> 1.00000000 Inexact Rounded | |
444 | addx425 add 77e-12 1 -> 1.00000000 Inexact Rounded | |
445 | addx426 add 77e-999 1 -> 1.00000000 Inexact Rounded | |
446 | addx427 add 77e-9999999 1 -> 1.00000000 Inexact Rounded | |
447 | ||
448 | addx430 add 77e-7 10 -> 10.0000077 | |
449 | addx431 add 77e-8 10 -> 10.0000008 Inexact Rounded | |
450 | addx432 add 77e-9 10 -> 10.0000001 Inexact Rounded | |
451 | addx433 add 77e-10 10 -> 10.0000000 Inexact Rounded | |
452 | addx434 add 77e-11 10 -> 10.0000000 Inexact Rounded | |
453 | addx435 add 77e-12 10 -> 10.0000000 Inexact Rounded | |
454 | addx436 add 77e-999 10 -> 10.0000000 Inexact Rounded | |
455 | addx437 add 77e-9999999 10 -> 10.0000000 Inexact Rounded | |
456 | ||
457 | -- negative ulps | |
458 | addx440 add 1 -77e-7 -> 0.9999923 | |
459 | addx441 add 1 -77e-8 -> 0.99999923 | |
460 | addx442 add 1 -77e-9 -> 0.999999923 | |
461 | addx443 add 1 -77e-10 -> 0.999999992 Inexact Rounded | |
462 | addx444 add 1 -77e-11 -> 0.999999999 Inexact Rounded | |
463 | addx445 add 1 -77e-12 -> 1.00000000 Inexact Rounded | |
464 | addx446 add 1 -77e-999 -> 1.00000000 Inexact Rounded | |
465 | addx447 add 1 -77e-9999999 -> 1.00000000 Inexact Rounded | |
466 | ||
467 | addx450 add 10 -77e-7 -> 9.9999923 | |
468 | addx451 add 10 -77e-8 -> 9.99999923 | |
469 | addx452 add 10 -77e-9 -> 9.99999992 Inexact Rounded | |
470 | addx453 add 10 -77e-10 -> 9.99999999 Inexact Rounded | |
471 | addx454 add 10 -77e-11 -> 10.0000000 Inexact Rounded | |
472 | addx455 add 10 -77e-12 -> 10.0000000 Inexact Rounded | |
473 | addx456 add 10 -77e-999 -> 10.0000000 Inexact Rounded | |
474 | addx457 add 10 -77e-9999999 -> 10.0000000 Inexact Rounded | |
475 | ||
476 | addx460 add -77e-7 1 -> 0.9999923 | |
477 | addx461 add -77e-8 1 -> 0.99999923 | |
478 | addx462 add -77e-9 1 -> 0.999999923 | |
479 | addx463 add -77e-10 1 -> 0.999999992 Inexact Rounded | |
480 | addx464 add -77e-11 1 -> 0.999999999 Inexact Rounded | |
481 | addx465 add -77e-12 1 -> 1.00000000 Inexact Rounded | |
482 | addx466 add -77e-999 1 -> 1.00000000 Inexact Rounded | |
483 | addx467 add -77e-9999999 1 -> 1.00000000 Inexact Rounded | |
484 | ||
485 | addx470 add -77e-7 10 -> 9.9999923 | |
486 | addx471 add -77e-8 10 -> 9.99999923 | |
487 | addx472 add -77e-9 10 -> 9.99999992 Inexact Rounded | |
488 | addx473 add -77e-10 10 -> 9.99999999 Inexact Rounded | |
489 | addx474 add -77e-11 10 -> 10.0000000 Inexact Rounded | |
490 | addx475 add -77e-12 10 -> 10.0000000 Inexact Rounded | |
491 | addx476 add -77e-999 10 -> 10.0000000 Inexact Rounded | |
492 | addx477 add -77e-9999999 10 -> 10.0000000 Inexact Rounded | |
493 | ||
494 | -- negative ulps | |
495 | addx480 add -1 77e-7 -> -0.9999923 | |
496 | addx481 add -1 77e-8 -> -0.99999923 | |
497 | addx482 add -1 77e-9 -> -0.999999923 | |
498 | addx483 add -1 77e-10 -> -0.999999992 Inexact Rounded | |
499 | addx484 add -1 77e-11 -> -0.999999999 Inexact Rounded | |
500 | addx485 add -1 77e-12 -> -1.00000000 Inexact Rounded | |
501 | addx486 add -1 77e-999 -> -1.00000000 Inexact Rounded | |
502 | addx487 add -1 77e-9999999 -> -1.00000000 Inexact Rounded | |
503 | ||
504 | addx490 add -10 77e-7 -> -9.9999923 | |
505 | addx491 add -10 77e-8 -> -9.99999923 | |
506 | addx492 add -10 77e-9 -> -9.99999992 Inexact Rounded | |
507 | addx493 add -10 77e-10 -> -9.99999999 Inexact Rounded | |
508 | addx494 add -10 77e-11 -> -10.0000000 Inexact Rounded | |
509 | addx495 add -10 77e-12 -> -10.0000000 Inexact Rounded | |
510 | addx496 add -10 77e-999 -> -10.0000000 Inexact Rounded | |
511 | addx497 add -10 77e-9999999 -> -10.0000000 Inexact Rounded | |
512 | ||
513 | addx500 add 77e-7 -1 -> -0.9999923 | |
514 | addx501 add 77e-8 -1 -> -0.99999923 | |
515 | addx502 add 77e-9 -1 -> -0.999999923 | |
516 | addx503 add 77e-10 -1 -> -0.999999992 Inexact Rounded | |
517 | addx504 add 77e-11 -1 -> -0.999999999 Inexact Rounded | |
518 | addx505 add 77e-12 -1 -> -1.00000000 Inexact Rounded | |
519 | addx506 add 77e-999 -1 -> -1.00000000 Inexact Rounded | |
520 | addx507 add 77e-9999999 -1 -> -1.00000000 Inexact Rounded | |
521 | ||
522 | addx510 add 77e-7 -10 -> -9.9999923 | |
523 | addx511 add 77e-8 -10 -> -9.99999923 | |
524 | addx512 add 77e-9 -10 -> -9.99999992 Inexact Rounded | |
525 | addx513 add 77e-10 -10 -> -9.99999999 Inexact Rounded | |
526 | addx514 add 77e-11 -10 -> -10.0000000 Inexact Rounded | |
527 | addx515 add 77e-12 -10 -> -10.0000000 Inexact Rounded | |
528 | addx516 add 77e-999 -10 -> -10.0000000 Inexact Rounded | |
529 | addx517 add 77e-9999999 -10 -> -10.0000000 Inexact Rounded | |
530 | ||
531 | ||
532 | -- long operands | |
533 | maxexponent: 999 | |
534 | minexponent: -999 | |
535 | precision: 9 | |
536 | addx521 add 12345678000 0 -> 1.23456780E+10 Rounded | |
537 | addx522 add 0 12345678000 -> 1.23456780E+10 Rounded | |
538 | addx523 add 1234567800 0 -> 1.23456780E+9 Rounded | |
539 | addx524 add 0 1234567800 -> 1.23456780E+9 Rounded | |
540 | addx525 add 1234567890 0 -> 1.23456789E+9 Rounded | |
541 | addx526 add 0 1234567890 -> 1.23456789E+9 Rounded | |
542 | addx527 add 1234567891 0 -> 1.23456789E+9 Inexact Rounded | |
543 | addx528 add 0 1234567891 -> 1.23456789E+9 Inexact Rounded | |
544 | addx529 add 12345678901 0 -> 1.23456789E+10 Inexact Rounded | |
545 | addx530 add 0 12345678901 -> 1.23456789E+10 Inexact Rounded | |
546 | addx531 add 1234567896 0 -> 1.23456790E+9 Inexact Rounded | |
547 | addx532 add 0 1234567896 -> 1.23456790E+9 Inexact Rounded | |
548 | ||
549 | precision: 15 | |
550 | -- still checking | |
551 | addx541 add 12345678000 0 -> 12345678000 | |
552 | addx542 add 0 12345678000 -> 12345678000 | |
553 | addx543 add 1234567800 0 -> 1234567800 | |
554 | addx544 add 0 1234567800 -> 1234567800 | |
555 | addx545 add 1234567890 0 -> 1234567890 | |
556 | addx546 add 0 1234567890 -> 1234567890 | |
557 | addx547 add 1234567891 0 -> 1234567891 | |
558 | addx548 add 0 1234567891 -> 1234567891 | |
559 | addx549 add 12345678901 0 -> 12345678901 | |
560 | addx550 add 0 12345678901 -> 12345678901 | |
561 | addx551 add 1234567896 0 -> 1234567896 | |
562 | addx552 add 0 1234567896 -> 1234567896 | |
563 | ||
564 | -- verify a query | |
565 | precision: 16 | |
566 | maxExponent: +394 | |
567 | minExponent: -393 | |
568 | rounding: down | |
569 | addx561 add 1e-398 9.000000000000000E+384 -> 9.000000000000000E+384 Inexact Rounded | |
570 | addx562 add 0 9.000000000000000E+384 -> 9.000000000000000E+384 Rounded | |
571 | -- and using decimal64 bounds... | |
572 | precision: 16 | |
573 | maxExponent: +384 | |
574 | minExponent: -383 | |
575 | rounding: down | |
576 | addx563 add 1e-388 9.000000000000000E+374 -> 9.000000000000000E+374 Inexact Rounded | |
577 | addx564 add 0 9.000000000000000E+374 -> 9.000000000000000E+374 Rounded | |
578 | ||
579 | -- some more residue effects with extreme rounding | |
580 | precision: 9 | |
581 | rounding: half_up | |
582 | addx601 add 123456789 0.000001 -> 123456789 Inexact Rounded | |
583 | rounding: half_even | |
584 | addx602 add 123456789 0.000001 -> 123456789 Inexact Rounded | |
585 | rounding: half_down | |
586 | addx603 add 123456789 0.000001 -> 123456789 Inexact Rounded | |
587 | rounding: floor | |
588 | addx604 add 123456789 0.000001 -> 123456789 Inexact Rounded | |
589 | rounding: ceiling | |
590 | addx605 add 123456789 0.000001 -> 123456790 Inexact Rounded | |
591 | rounding: up | |
592 | addx606 add 123456789 0.000001 -> 123456790 Inexact Rounded | |
593 | rounding: down | |
594 | addx607 add 123456789 0.000001 -> 123456789 Inexact Rounded | |
595 | ||
596 | rounding: half_up | |
597 | addx611 add 123456789 -0.000001 -> 123456789 Inexact Rounded | |
598 | rounding: half_even | |
599 | addx612 add 123456789 -0.000001 -> 123456789 Inexact Rounded | |
600 | rounding: half_down | |
601 | addx613 add 123456789 -0.000001 -> 123456789 Inexact Rounded | |
602 | rounding: floor | |
603 | addx614 add 123456789 -0.000001 -> 123456788 Inexact Rounded | |
604 | rounding: ceiling | |
605 | addx615 add 123456789 -0.000001 -> 123456789 Inexact Rounded | |
606 | rounding: up | |
607 | addx616 add 123456789 -0.000001 -> 123456789 Inexact Rounded | |
608 | rounding: down | |
609 | addx617 add 123456789 -0.000001 -> 123456788 Inexact Rounded | |
610 | ||
611 | rounding: half_up | |
612 | addx621 add 123456789 0.499999 -> 123456789 Inexact Rounded | |
613 | rounding: half_even | |
614 | addx622 add 123456789 0.499999 -> 123456789 Inexact Rounded | |
615 | rounding: half_down | |
616 | addx623 add 123456789 0.499999 -> 123456789 Inexact Rounded | |
617 | rounding: floor | |
618 | addx624 add 123456789 0.499999 -> 123456789 Inexact Rounded | |
619 | rounding: ceiling | |
620 | addx625 add 123456789 0.499999 -> 123456790 Inexact Rounded | |
621 | rounding: up | |
622 | addx626 add 123456789 0.499999 -> 123456790 Inexact Rounded | |
623 | rounding: down | |
624 | addx627 add 123456789 0.499999 -> 123456789 Inexact Rounded | |
625 | ||
626 | rounding: half_up | |
627 | addx631 add 123456789 -0.499999 -> 123456789 Inexact Rounded | |
628 | rounding: half_even | |
629 | addx632 add 123456789 -0.499999 -> 123456789 Inexact Rounded | |
630 | rounding: half_down | |
631 | addx633 add 123456789 -0.499999 -> 123456789 Inexact Rounded | |
632 | rounding: floor | |
633 | addx634 add 123456789 -0.499999 -> 123456788 Inexact Rounded | |
634 | rounding: ceiling | |
635 | addx635 add 123456789 -0.499999 -> 123456789 Inexact Rounded | |
636 | rounding: up | |
637 | addx636 add 123456789 -0.499999 -> 123456789 Inexact Rounded | |
638 | rounding: down | |
639 | addx637 add 123456789 -0.499999 -> 123456788 Inexact Rounded | |
640 | ||
641 | rounding: half_up | |
642 | addx641 add 123456789 0.500001 -> 123456790 Inexact Rounded | |
643 | rounding: half_even | |
644 | addx642 add 123456789 0.500001 -> 123456790 Inexact Rounded | |
645 | rounding: half_down | |
646 | addx643 add 123456789 0.500001 -> 123456790 Inexact Rounded | |
647 | rounding: floor | |
648 | addx644 add 123456789 0.500001 -> 123456789 Inexact Rounded | |
649 | rounding: ceiling | |
650 | addx645 add 123456789 0.500001 -> 123456790 Inexact Rounded | |
651 | rounding: up | |
652 | addx646 add 123456789 0.500001 -> 123456790 Inexact Rounded | |
653 | rounding: down | |
654 | addx647 add 123456789 0.500001 -> 123456789 Inexact Rounded | |
655 | ||
656 | rounding: half_up | |
657 | addx651 add 123456789 -0.500001 -> 123456788 Inexact Rounded | |
658 | rounding: half_even | |
659 | addx652 add 123456789 -0.500001 -> 123456788 Inexact Rounded | |
660 | rounding: half_down | |
661 | addx653 add 123456789 -0.500001 -> 123456788 Inexact Rounded | |
662 | rounding: floor | |
663 | addx654 add 123456789 -0.500001 -> 123456788 Inexact Rounded | |
664 | rounding: ceiling | |
665 | addx655 add 123456789 -0.500001 -> 123456789 Inexact Rounded | |
666 | rounding: up | |
667 | addx656 add 123456789 -0.500001 -> 123456789 Inexact Rounded | |
668 | rounding: down | |
669 | addx657 add 123456789 -0.500001 -> 123456788 Inexact Rounded | |
670 | ||
671 | -- long operand triangle | |
672 | rounding: half_up | |
673 | precision: 37 | |
674 | addx660 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114834538 | |
675 | precision: 36 | |
676 | addx661 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483454 Inexact Rounded | |
677 | precision: 35 | |
678 | addx662 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148345 Inexact Rounded | |
679 | precision: 34 | |
680 | addx663 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337114835 Inexact Rounded | |
681 | precision: 33 | |
682 | addx664 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711483 Inexact Rounded | |
683 | precision: 32 | |
684 | addx665 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371148 Inexact Rounded | |
685 | precision: 31 | |
686 | addx666 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337115 Inexact Rounded | |
687 | precision: 30 | |
688 | addx667 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892233711 Inexact Rounded | |
689 | precision: 29 | |
690 | addx668 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223371 Inexact Rounded | |
691 | precision: 28 | |
692 | addx669 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922337 Inexact Rounded | |
693 | precision: 27 | |
694 | addx670 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892234 Inexact Rounded | |
695 | precision: 26 | |
696 | addx671 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389223 Inexact Rounded | |
697 | precision: 25 | |
698 | addx672 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023638922 Inexact Rounded | |
699 | precision: 24 | |
700 | addx673 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102363892 Inexact Rounded | |
701 | precision: 23 | |
702 | addx674 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236389 Inexact Rounded | |
703 | precision: 22 | |
704 | addx675 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211023639 Inexact Rounded | |
705 | precision: 21 | |
706 | addx676 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102364 Inexact Rounded | |
707 | precision: 20 | |
708 | addx677 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110236 Inexact Rounded | |
709 | precision: 19 | |
710 | addx678 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211024 Inexact Rounded | |
711 | precision: 18 | |
712 | addx679 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221102 Inexact Rounded | |
713 | precision: 17 | |
714 | addx680 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422110 Inexact Rounded | |
715 | precision: 16 | |
716 | addx681 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42211 Inexact Rounded | |
717 | precision: 15 | |
718 | addx682 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4221 Inexact Rounded | |
719 | precision: 14 | |
720 | addx683 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.422 Inexact Rounded | |
721 | precision: 13 | |
722 | addx684 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.42 Inexact Rounded | |
723 | precision: 12 | |
724 | addx685 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166.4 Inexact Rounded | |
725 | precision: 11 | |
726 | addx686 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 98471174166 Inexact Rounded | |
727 | precision: 10 | |
728 | addx687 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117417E+10 Inexact Rounded | |
729 | precision: 9 | |
730 | addx688 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84711742E+10 Inexact Rounded | |
731 | precision: 8 | |
732 | addx689 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471174E+10 Inexact Rounded | |
733 | precision: 7 | |
734 | addx690 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847117E+10 Inexact Rounded | |
735 | precision: 6 | |
736 | addx691 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.84712E+10 Inexact Rounded | |
737 | precision: 5 | |
738 | addx692 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8471E+10 Inexact Rounded | |
739 | precision: 4 | |
740 | addx693 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.847E+10 Inexact Rounded | |
741 | precision: 3 | |
742 | addx694 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.85E+10 Inexact Rounded | |
743 | precision: 2 | |
744 | addx695 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 9.8E+10 Inexact Rounded | |
745 | precision: 1 | |
746 | addx696 add 98471198160.56524417578665886060 -23994.14313393939743548945165462 -> 1E+11 Inexact Rounded | |
747 | ||
748 | -- more zeros, etc. | |
749 | rounding: half_up | |
750 | precision: 9 | |
751 | ||
752 | addx701 add 5.00 1.00E-3 -> 5.00100 | |
753 | addx702 add 00.00 0.000 -> 0.000 | |
754 | addx703 add 00.00 0E-3 -> 0.000 | |
755 | addx704 add 0E-3 00.00 -> 0.000 | |
756 | ||
757 | addx710 add 0E+3 00.00 -> 0.00 | |
758 | addx711 add 0E+3 00.0 -> 0.0 | |
759 | addx712 add 0E+3 00. -> 0 | |
760 | addx713 add 0E+3 00.E+1 -> 0E+1 | |
761 | addx714 add 0E+3 00.E+2 -> 0E+2 | |
762 | addx715 add 0E+3 00.E+3 -> 0E+3 | |
763 | addx716 add 0E+3 00.E+4 -> 0E+3 | |
764 | addx717 add 0E+3 00.E+5 -> 0E+3 | |
765 | addx718 add 0E+3 -00.0 -> 0.0 | |
766 | addx719 add 0E+3 -00. -> 0 | |
767 | addx731 add 0E+3 -00.E+1 -> 0E+1 | |
768 | ||
769 | addx720 add 00.00 0E+3 -> 0.00 | |
770 | addx721 add 00.0 0E+3 -> 0.0 | |
771 | addx722 add 00. 0E+3 -> 0 | |
772 | addx723 add 00.E+1 0E+3 -> 0E+1 | |
773 | addx724 add 00.E+2 0E+3 -> 0E+2 | |
774 | addx725 add 00.E+3 0E+3 -> 0E+3 | |
775 | addx726 add 00.E+4 0E+3 -> 0E+3 | |
776 | addx727 add 00.E+5 0E+3 -> 0E+3 | |
777 | addx728 add -00.00 0E+3 -> 0.00 | |
778 | addx729 add -00.0 0E+3 -> 0.0 | |
779 | addx730 add -00. 0E+3 -> 0 | |
780 | ||
781 | addx732 add 0 0 -> 0 | |
782 | addx733 add 0 -0 -> 0 | |
783 | addx734 add -0 0 -> 0 | |
784 | addx735 add -0 -0 -> -0 -- IEEE 854 special case | |
785 | ||
786 | addx736 add 1 -1 -> 0 | |
787 | addx737 add -1 -1 -> -2 | |
788 | addx738 add 1 1 -> 2 | |
789 | addx739 add -1 1 -> 0 | |
790 | ||
791 | addx741 add 0 -1 -> -1 | |
792 | addx742 add -0 -1 -> -1 | |
793 | addx743 add 0 1 -> 1 | |
794 | addx744 add -0 1 -> 1 | |
795 | addx745 add -1 0 -> -1 | |
796 | addx746 add -1 -0 -> -1 | |
797 | addx747 add 1 0 -> 1 | |
798 | addx748 add 1 -0 -> 1 | |
799 | ||
800 | addx751 add 0.0 -1 -> -1.0 | |
801 | addx752 add -0.0 -1 -> -1.0 | |
802 | addx753 add 0.0 1 -> 1.0 | |
803 | addx754 add -0.0 1 -> 1.0 | |
804 | addx755 add -1.0 0 -> -1.0 | |
805 | addx756 add -1.0 -0 -> -1.0 | |
806 | addx757 add 1.0 0 -> 1.0 | |
807 | addx758 add 1.0 -0 -> 1.0 | |
808 | ||
809 | addx761 add 0 -1.0 -> -1.0 | |
810 | addx762 add -0 -1.0 -> -1.0 | |
811 | addx763 add 0 1.0 -> 1.0 | |
812 | addx764 add -0 1.0 -> 1.0 | |
813 | addx765 add -1 0.0 -> -1.0 | |
814 | addx766 add -1 -0.0 -> -1.0 | |
815 | addx767 add 1 0.0 -> 1.0 | |
816 | addx768 add 1 -0.0 -> 1.0 | |
817 | ||
818 | addx771 add 0.0 -1.0 -> -1.0 | |
819 | addx772 add -0.0 -1.0 -> -1.0 | |
820 | addx773 add 0.0 1.0 -> 1.0 | |
821 | addx774 add -0.0 1.0 -> 1.0 | |
822 | addx775 add -1.0 0.0 -> -1.0 | |
823 | addx776 add -1.0 -0.0 -> -1.0 | |
824 | addx777 add 1.0 0.0 -> 1.0 | |
825 | addx778 add 1.0 -0.0 -> 1.0 | |
826 | ||
827 | -- Specials | |
828 | addx780 add -Inf -Inf -> -Infinity | |
829 | addx781 add -Inf -1000 -> -Infinity | |
830 | addx782 add -Inf -1 -> -Infinity | |
831 | addx783 add -Inf -0 -> -Infinity | |
832 | addx784 add -Inf 0 -> -Infinity | |
833 | addx785 add -Inf 1 -> -Infinity | |
834 | addx786 add -Inf 1000 -> -Infinity | |
835 | addx787 add -1000 -Inf -> -Infinity | |
836 | addx788 add -Inf -Inf -> -Infinity | |
837 | addx789 add -1 -Inf -> -Infinity | |
838 | addx790 add -0 -Inf -> -Infinity | |
839 | addx791 add 0 -Inf -> -Infinity | |
840 | addx792 add 1 -Inf -> -Infinity | |
841 | addx793 add 1000 -Inf -> -Infinity | |
842 | addx794 add Inf -Inf -> NaN Invalid_operation | |
843 | ||
844 | addx800 add Inf -Inf -> NaN Invalid_operation | |
845 | addx801 add Inf -1000 -> Infinity | |
846 | addx802 add Inf -1 -> Infinity | |
847 | addx803 add Inf -0 -> Infinity | |
848 | addx804 add Inf 0 -> Infinity | |
849 | addx805 add Inf 1 -> Infinity | |
850 | addx806 add Inf 1000 -> Infinity | |
851 | addx807 add Inf Inf -> Infinity | |
852 | addx808 add -1000 Inf -> Infinity | |
853 | addx809 add -Inf Inf -> NaN Invalid_operation | |
854 | addx810 add -1 Inf -> Infinity | |
855 | addx811 add -0 Inf -> Infinity | |
856 | addx812 add 0 Inf -> Infinity | |
857 | addx813 add 1 Inf -> Infinity | |
858 | addx814 add 1000 Inf -> Infinity | |
859 | addx815 add Inf Inf -> Infinity | |
860 | ||
861 | addx821 add NaN -Inf -> NaN | |
862 | addx822 add NaN -1000 -> NaN | |
863 | addx823 add NaN -1 -> NaN | |
864 | addx824 add NaN -0 -> NaN | |
865 | addx825 add NaN 0 -> NaN | |
866 | addx826 add NaN 1 -> NaN | |
867 | addx827 add NaN 1000 -> NaN | |
868 | addx828 add NaN Inf -> NaN | |
869 | addx829 add NaN NaN -> NaN | |
870 | addx830 add -Inf NaN -> NaN | |
871 | addx831 add -1000 NaN -> NaN | |
872 | addx832 add -1 NaN -> NaN | |
873 | addx833 add -0 NaN -> NaN | |
874 | addx834 add 0 NaN -> NaN | |
875 | addx835 add 1 NaN -> NaN | |
876 | addx836 add 1000 NaN -> NaN | |
877 | addx837 add Inf NaN -> NaN | |
878 | ||
879 | addx841 add sNaN -Inf -> NaN Invalid_operation | |
880 | addx842 add sNaN -1000 -> NaN Invalid_operation | |
881 | addx843 add sNaN -1 -> NaN Invalid_operation | |
882 | addx844 add sNaN -0 -> NaN Invalid_operation | |
883 | addx845 add sNaN 0 -> NaN Invalid_operation | |
884 | addx846 add sNaN 1 -> NaN Invalid_operation | |
885 | addx847 add sNaN 1000 -> NaN Invalid_operation | |
886 | addx848 add sNaN NaN -> NaN Invalid_operation | |
887 | addx849 add sNaN sNaN -> NaN Invalid_operation | |
888 | addx850 add NaN sNaN -> NaN Invalid_operation | |
889 | addx851 add -Inf sNaN -> NaN Invalid_operation | |
890 | addx852 add -1000 sNaN -> NaN Invalid_operation | |
891 | addx853 add -1 sNaN -> NaN Invalid_operation | |
892 | addx854 add -0 sNaN -> NaN Invalid_operation | |
893 | addx855 add 0 sNaN -> NaN Invalid_operation | |
894 | addx856 add 1 sNaN -> NaN Invalid_operation | |
895 | addx857 add 1000 sNaN -> NaN Invalid_operation | |
896 | addx858 add Inf sNaN -> NaN Invalid_operation | |
897 | addx859 add NaN sNaN -> NaN Invalid_operation | |
898 | ||
899 | -- propagating NaNs | |
900 | addx861 add NaN1 -Inf -> NaN1 | |
901 | addx862 add +NaN2 -1000 -> NaN2 | |
902 | addx863 add NaN3 1000 -> NaN3 | |
903 | addx864 add NaN4 Inf -> NaN4 | |
904 | addx865 add NaN5 +NaN6 -> NaN5 | |
905 | addx866 add -Inf NaN7 -> NaN7 | |
906 | addx867 add -1000 NaN8 -> NaN8 | |
907 | addx868 add 1000 NaN9 -> NaN9 | |
908 | addx869 add Inf +NaN10 -> NaN10 | |
909 | addx871 add sNaN11 -Inf -> NaN11 Invalid_operation | |
910 | addx872 add sNaN12 -1000 -> NaN12 Invalid_operation | |
911 | addx873 add sNaN13 1000 -> NaN13 Invalid_operation | |
912 | addx874 add sNaN14 NaN17 -> NaN14 Invalid_operation | |
913 | addx875 add sNaN15 sNaN18 -> NaN15 Invalid_operation | |
914 | addx876 add NaN16 sNaN19 -> NaN19 Invalid_operation | |
915 | addx877 add -Inf +sNaN20 -> NaN20 Invalid_operation | |
916 | addx878 add -1000 sNaN21 -> NaN21 Invalid_operation | |
917 | addx879 add 1000 sNaN22 -> NaN22 Invalid_operation | |
918 | addx880 add Inf sNaN23 -> NaN23 Invalid_operation | |
919 | addx881 add +NaN25 +sNaN24 -> NaN24 Invalid_operation | |
920 | addx882 add -NaN26 NaN28 -> -NaN26 | |
921 | addx883 add -sNaN27 sNaN29 -> -NaN27 Invalid_operation | |
922 | addx884 add 1000 -NaN30 -> -NaN30 | |
923 | addx885 add 1000 -sNaN31 -> -NaN31 Invalid_operation | |
924 | ||
925 | -- overflow, underflow and subnormal tests | |
926 | maxexponent: 999999999 | |
927 | minexponent: -999999999 | |
928 | precision: 9 | |
929 | addx890 add 1E+999999999 9E+999999999 -> Infinity Overflow Inexact Rounded | |
930 | addx891 add 9E+999999999 1E+999999999 -> Infinity Overflow Inexact Rounded | |
931 | addx892 add -1.1E-999999999 1E-999999999 -> -1E-1000000000 Subnormal | |
932 | addx893 add 1E-999999999 -1.1e-999999999 -> -1E-1000000000 Subnormal | |
933 | addx894 add -1.0001E-999999999 1E-999999999 -> -1E-1000000003 Subnormal | |
934 | addx895 add 1E-999999999 -1.0001e-999999999 -> -1E-1000000003 Subnormal | |
935 | addx896 add -1E+999999999 -9E+999999999 -> -Infinity Overflow Inexact Rounded | |
936 | addx897 add -9E+999999999 -1E+999999999 -> -Infinity Overflow Inexact Rounded | |
937 | addx898 add +1.1E-999999999 -1E-999999999 -> 1E-1000000000 Subnormal | |
938 | addx899 add -1E-999999999 +1.1e-999999999 -> 1E-1000000000 Subnormal | |
939 | addx900 add +1.0001E-999999999 -1E-999999999 -> 1E-1000000003 Subnormal | |
940 | addx901 add -1E-999999999 +1.0001e-999999999 -> 1E-1000000003 Subnormal | |
941 | addx902 add -1E+999999999 +9E+999999999 -> 8E+999999999 | |
942 | addx903 add -9E+999999999 +1E+999999999 -> -8E+999999999 | |
943 | ||
944 | precision: 3 | |
945 | addx904 add 0 -9.999E+999999999 -> -Infinity Inexact Overflow Rounded | |
946 | addx905 add -9.999E+999999999 0 -> -Infinity Inexact Overflow Rounded | |
947 | addx906 add 0 9.999E+999999999 -> Infinity Inexact Overflow Rounded | |
948 | addx907 add 9.999E+999999999 0 -> Infinity Inexact Overflow Rounded | |
949 | ||
950 | precision: 3 | |
951 | maxexponent: 999 | |
952 | minexponent: -999 | |
953 | addx910 add 1.00E-999 0 -> 1.00E-999 | |
954 | addx911 add 0.1E-999 0 -> 1E-1000 Subnormal | |
955 | addx912 add 0.10E-999 0 -> 1.0E-1000 Subnormal | |
956 | addx913 add 0.100E-999 0 -> 1.0E-1000 Subnormal Rounded | |
957 | addx914 add 0.01E-999 0 -> 1E-1001 Subnormal | |
958 | -- next is rounded to Emin | |
959 | addx915 add 0.999E-999 0 -> 1.00E-999 Inexact Rounded Subnormal Underflow | |
960 | addx916 add 0.099E-999 0 -> 1.0E-1000 Inexact Rounded Subnormal Underflow | |
961 | addx917 add 0.009E-999 0 -> 1E-1001 Inexact Rounded Subnormal Underflow | |
962 | addx918 add 0.001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow | |
963 | addx919 add 0.0009E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow | |
964 | addx920 add 0.0001E-999 0 -> 0E-1001 Inexact Rounded Subnormal Underflow | |
965 | ||
966 | addx930 add -1.00E-999 0 -> -1.00E-999 | |
967 | addx931 add -0.1E-999 0 -> -1E-1000 Subnormal | |
968 | addx932 add -0.10E-999 0 -> -1.0E-1000 Subnormal | |
969 | addx933 add -0.100E-999 0 -> -1.0E-1000 Subnormal Rounded | |
970 | addx934 add -0.01E-999 0 -> -1E-1001 Subnormal | |
971 | -- next is rounded to Emin | |
972 | addx935 add -0.999E-999 0 -> -1.00E-999 Inexact Rounded Subnormal Underflow | |
973 | addx936 add -0.099E-999 0 -> -1.0E-1000 Inexact Rounded Subnormal Underflow | |
974 | addx937 add -0.009E-999 0 -> -1E-1001 Inexact Rounded Subnormal Underflow | |
975 | addx938 add -0.001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow | |
976 | addx939 add -0.0009E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow | |
977 | addx940 add -0.0001E-999 0 -> -0E-1001 Inexact Rounded Subnormal Underflow | |
978 | ||
979 | -- some non-zero subnormal adds | |
980 | addx950 add 1.00E-999 0.1E-999 -> 1.10E-999 | |
981 | addx951 add 0.1E-999 0.1E-999 -> 2E-1000 Subnormal | |
982 | addx952 add 0.10E-999 0.1E-999 -> 2.0E-1000 Subnormal | |
983 | addx953 add 0.100E-999 0.1E-999 -> 2.0E-1000 Subnormal Rounded | |
984 | addx954 add 0.01E-999 0.1E-999 -> 1.1E-1000 Subnormal | |
985 | addx955 add 0.999E-999 0.1E-999 -> 1.10E-999 Inexact Rounded | |
986 | addx956 add 0.099E-999 0.1E-999 -> 2.0E-1000 Inexact Rounded Subnormal Underflow | |
987 | addx957 add 0.009E-999 0.1E-999 -> 1.1E-1000 Inexact Rounded Subnormal Underflow | |
988 | addx958 add 0.001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow | |
989 | addx959 add 0.0009E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow | |
990 | addx960 add 0.0001E-999 0.1E-999 -> 1.0E-1000 Inexact Rounded Subnormal Underflow | |
991 | -- negatives... | |
992 | addx961 add 1.00E-999 -0.1E-999 -> 9.0E-1000 Subnormal | |
993 | addx962 add 0.1E-999 -0.1E-999 -> 0E-1000 | |
994 | addx963 add 0.10E-999 -0.1E-999 -> 0E-1001 | |
995 | addx964 add 0.100E-999 -0.1E-999 -> 0E-1001 Clamped | |
996 | addx965 add 0.01E-999 -0.1E-999 -> -9E-1001 Subnormal | |
997 | addx966 add 0.999E-999 -0.1E-999 -> 9.0E-1000 Inexact Rounded Subnormal Underflow | |
998 | addx967 add 0.099E-999 -0.1E-999 -> -0E-1001 Inexact Rounded Subnormal Underflow | |
999 | addx968 add 0.009E-999 -0.1E-999 -> -9E-1001 Inexact Rounded Subnormal Underflow | |
1000 | addx969 add 0.001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow | |
1001 | addx970 add 0.0009E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow | |
1002 | addx971 add 0.0001E-999 -0.1E-999 -> -1.0E-1000 Inexact Rounded Subnormal Underflow | |
1003 | ||
1004 | -- check overflow edge case | |
1005 | precision: 7 | |
1006 | rounding: half_up | |
1007 | maxExponent: 96 | |
1008 | minExponent: -95 | |
1009 | addx972 apply 9.999999E+96 -> 9.999999E+96 | |
1010 | addx973 add 9.999999E+96 1 -> 9.999999E+96 Inexact Rounded | |
1011 | addx974 add 9999999E+90 1 -> 9.999999E+96 Inexact Rounded | |
1012 | addx975 add 9999999E+90 1E+90 -> Infinity Overflow Inexact Rounded | |
1013 | addx976 add 9999999E+90 9E+89 -> Infinity Overflow Inexact Rounded | |
1014 | addx977 add 9999999E+90 8E+89 -> Infinity Overflow Inexact Rounded | |
1015 | addx978 add 9999999E+90 7E+89 -> Infinity Overflow Inexact Rounded | |
1016 | addx979 add 9999999E+90 6E+89 -> Infinity Overflow Inexact Rounded | |
1017 | addx980 add 9999999E+90 5E+89 -> Infinity Overflow Inexact Rounded | |
1018 | addx981 add 9999999E+90 4E+89 -> 9.999999E+96 Inexact Rounded | |
1019 | addx982 add 9999999E+90 3E+89 -> 9.999999E+96 Inexact Rounded | |
1020 | addx983 add 9999999E+90 2E+89 -> 9.999999E+96 Inexact Rounded | |
1021 | addx984 add 9999999E+90 1E+89 -> 9.999999E+96 Inexact Rounded | |
1022 | ||
1023 | addx985 apply -9.999999E+96 -> -9.999999E+96 | |
1024 | addx986 add -9.999999E+96 -1 -> -9.999999E+96 Inexact Rounded | |
1025 | addx987 add -9999999E+90 -1 -> -9.999999E+96 Inexact Rounded | |
1026 | addx988 add -9999999E+90 -1E+90 -> -Infinity Overflow Inexact Rounded | |
1027 | addx989 add -9999999E+90 -9E+89 -> -Infinity Overflow Inexact Rounded | |
1028 | addx990 add -9999999E+90 -8E+89 -> -Infinity Overflow Inexact Rounded | |
1029 | addx991 add -9999999E+90 -7E+89 -> -Infinity Overflow Inexact Rounded | |
1030 | addx992 add -9999999E+90 -6E+89 -> -Infinity Overflow Inexact Rounded | |
1031 | addx993 add -9999999E+90 -5E+89 -> -Infinity Overflow Inexact Rounded | |
1032 | addx994 add -9999999E+90 -4E+89 -> -9.999999E+96 Inexact Rounded | |
1033 | addx995 add -9999999E+90 -3E+89 -> -9.999999E+96 Inexact Rounded | |
1034 | addx996 add -9999999E+90 -2E+89 -> -9.999999E+96 Inexact Rounded | |
1035 | addx997 add -9999999E+90 -1E+89 -> -9.999999E+96 Inexact Rounded | |
1036 | ||
1037 | -- check for double-rounded subnormals | |
1038 | precision: 5 | |
1039 | maxexponent: 79 | |
1040 | minexponent: -79 | |
1041 | -- Add: lhs and rhs 0 | |
1042 | addx1001 add 1.52444E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1043 | addx1002 add 1.52445E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1044 | addx1003 add 1.52446E-80 0 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1045 | addx1004 add 0 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1046 | addx1005 add 0 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1047 | addx1006 add 0 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1048 | ||
1049 | -- Add: lhs >> rhs and vice versa | |
1050 | addx1011 add 1.52444E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1051 | addx1012 add 1.52445E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1052 | addx1013 add 1.52446E-80 1E-100 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1053 | addx1014 add 1E-100 1.52444E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1054 | addx1015 add 1E-100 1.52445E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1055 | addx1016 add 1E-100 1.52446E-80 -> 1.524E-80 Inexact Rounded Subnormal Underflow | |
1056 | ||
1057 | -- Add: lhs + rhs addition carried out | |
1058 | addx1021 add 1.52443E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow | |
1059 | addx1022 add 1.52444E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow | |
1060 | addx1023 add 1.52445E-80 1.00001E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow | |
1061 | addx1024 add 1.00001E-80 1.52443E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow | |
1062 | addx1025 add 1.00001E-80 1.52444E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow | |
1063 | addx1026 add 1.00001E-80 1.52445E-80 -> 2.524E-80 Inexact Rounded Subnormal Underflow | |
1064 | ||
1065 | -- And for round down full and subnormal results | |
1066 | precision: 16 | |
1067 | maxExponent: +384 | |
1068 | minExponent: -383 | |
1069 | rounding: down | |
1070 | ||
1071 | addx1100 add 1e+2 -1e-383 -> 99.99999999999999 Rounded Inexact | |
1072 | addx1101 add 1e+1 -1e-383 -> 9.999999999999999 Rounded Inexact | |
1073 | addx1103 add +1 -1e-383 -> 0.9999999999999999 Rounded Inexact | |
1074 | addx1104 add 1e-1 -1e-383 -> 0.09999999999999999 Rounded Inexact | |
1075 | addx1105 add 1e-2 -1e-383 -> 0.009999999999999999 Rounded Inexact | |
1076 | addx1106 add 1e-3 -1e-383 -> 0.0009999999999999999 Rounded Inexact | |
1077 | addx1107 add 1e-4 -1e-383 -> 0.00009999999999999999 Rounded Inexact | |
1078 | addx1108 add 1e-5 -1e-383 -> 0.000009999999999999999 Rounded Inexact | |
1079 | addx1109 add 1e-6 -1e-383 -> 9.999999999999999E-7 Rounded Inexact | |
1080 | ||
1081 | rounding: ceiling | |
1082 | addx1110 add -1e+2 +1e-383 -> -99.99999999999999 Rounded Inexact | |
1083 | addx1111 add -1e+1 +1e-383 -> -9.999999999999999 Rounded Inexact | |
1084 | addx1113 add -1 +1e-383 -> -0.9999999999999999 Rounded Inexact | |
1085 | addx1114 add -1e-1 +1e-383 -> -0.09999999999999999 Rounded Inexact | |
1086 | addx1115 add -1e-2 +1e-383 -> -0.009999999999999999 Rounded Inexact | |
1087 | addx1116 add -1e-3 +1e-383 -> -0.0009999999999999999 Rounded Inexact | |
1088 | addx1117 add -1e-4 +1e-383 -> -0.00009999999999999999 Rounded Inexact | |
1089 | addx1118 add -1e-5 +1e-383 -> -0.000009999999999999999 Rounded Inexact | |
1090 | addx1119 add -1e-6 +1e-383 -> -9.999999999999999E-7 Rounded Inexact | |
1091 | ||
1092 | rounding: down | |
1093 | precision: 7 | |
1094 | maxExponent: +96 | |
1095 | minExponent: -95 | |
1096 | addx1130 add 1 -1e-200 -> 0.9999999 Rounded Inexact | |
1097 | -- subnormal boundary | |
1098 | addx1131 add 1.000000E-94 -1e-200 -> 9.999999E-95 Rounded Inexact | |
1099 | addx1132 add 1.000001E-95 -1e-200 -> 1.000000E-95 Rounded Inexact | |
1100 | addx1133 add 1.000000E-95 -1e-200 -> 9.99999E-96 Rounded Inexact Subnormal Underflow | |
1101 | addx1134 add 0.999999E-95 -1e-200 -> 9.99998E-96 Rounded Inexact Subnormal Underflow | |
1102 | addx1135 add 0.001000E-95 -1e-200 -> 9.99E-99 Rounded Inexact Subnormal Underflow | |
1103 | addx1136 add 0.000999E-95 -1e-200 -> 9.98E-99 Rounded Inexact Subnormal Underflow | |
1104 | addx1137 add 1.000000E-95 -1e-101 -> 9.99999E-96 Subnormal | |
1105 | addx1138 add 10000E-101 -1e-200 -> 9.999E-98 Subnormal Inexact Rounded Underflow | |
1106 | addx1139 add 1000E-101 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow | |
1107 | addx1140 add 100E-101 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow | |
1108 | addx1141 add 10E-101 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow | |
1109 | addx1142 add 1E-101 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow | |
1110 | addx1143 add 0E-101 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow | |
1111 | addx1144 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow | |
1112 | ||
1113 | addx1151 add 10000E-102 -1e-200 -> 9.99E-99 Subnormal Inexact Rounded Underflow | |
1114 | addx1152 add 1000E-102 -1e-200 -> 9.9E-100 Subnormal Inexact Rounded Underflow | |
1115 | addx1153 add 100E-102 -1e-200 -> 9E-101 Subnormal Inexact Rounded Underflow | |
1116 | addx1154 add 10E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow | |
1117 | addx1155 add 1E-102 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow | |
1118 | addx1156 add 0E-102 -1e-200 -> -0E-101 Subnormal Inexact Rounded Underflow | |
1119 | addx1157 add 1E-103 -1e-200 -> 0E-101 Subnormal Inexact Rounded Underflow | |
1120 | ||
1121 | addx1160 add 100E-105 -1e-101 -> -0E-101 Subnormal Inexact Rounded Underflow | |
1122 | addx1161 add 100E-105 -1e-201 -> 0E-101 Subnormal Inexact Rounded Underflow | |
1123 | ||
1124 | ||
1125 | -- Null tests | |
1126 | addx9990 add 10 # -> NaN Invalid_operation | |
1127 | addx9991 add # 10 -> NaN Invalid_operation |