1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.math4.legacy.core.dfp;
19
20 import org.junit.After;
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.Test;
24
25 public class DfpDecTest {
26
27 private DfpField field;
28 private Dfp pinf;
29 private Dfp ninf;
30
31 @Before
32 public void setUp() {
33
34 field = new DfpField(20);
35 pinf = new DfpDec(field, 1).divide(new DfpDec(field, 0));
36 ninf = new DfpDec(field, -1).divide(new DfpDec(field, 0));
37 ninf.getField().clearIEEEFlags();
38 }
39
40 @After
41 public void tearDown() {
42 field = null;
43 pinf = null;
44 ninf = null;
45 }
46
47
48
49
50 private void test(Dfp x, Dfp y, int flags, String desc) {
51 boolean b = x.equals(y);
52
53 if (!x.equals(y) && !x.unequal(y)) {
54 b = x.toString().equals(y.toString());
55 }
56
57 if (x.equals(new DfpDec(field, 0))) {
58 b = b && (x.toString().equals(y.toString()));
59 }
60
61 b = b && x.getField().getIEEEFlags() == flags;
62
63 if (!b) {
64 Assert.assertTrue(
65 "assertion failed " + desc + " x = " + x.toString() + " flags = " + x.getField().getIEEEFlags(), b);
66 }
67
68 x.getField().clearIEEEFlags();
69 }
70
71 @Test
72 public void testRound() {
73 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_EVEN);
74
75 test(new DfpDec(field, "12345678901234567890"),
76 new DfpDec(field, "12345678901234568000"),
77 DfpField.FLAG_INEXACT, "Round #1");
78
79 test(new DfpDec(field, "0.12345678901234567890"),
80 new DfpDec(field, "0.12345678901234568"),
81 DfpField.FLAG_INEXACT, "Round #2");
82
83 test(new DfpDec(field, "0.12345678901234567500"),
84 new DfpDec(field, "0.12345678901234568"),
85 DfpField.FLAG_INEXACT, "Round #3");
86
87 test(new DfpDec(field, "0.12345678901234568500"),
88 new DfpDec(field, "0.12345678901234568"),
89 DfpField.FLAG_INEXACT, "Round #4");
90
91 test(new DfpDec(field, "0.12345678901234568501"),
92 new DfpDec(field, "0.12345678901234569"),
93 DfpField.FLAG_INEXACT, "Round #5");
94
95 test(new DfpDec(field, "0.12345678901234568499"),
96 new DfpDec(field, "0.12345678901234568"),
97 DfpField.FLAG_INEXACT, "Round #6");
98
99 test(new DfpDec(field, "1.2345678901234567890"),
100 new DfpDec(field, "1.2345678901234568"),
101 DfpField.FLAG_INEXACT, "Round #7");
102
103 test(new DfpDec(field, "1.2345678901234567500"),
104 new DfpDec(field, "1.2345678901234568"),
105 DfpField.FLAG_INEXACT, "Round #8");
106
107 test(new DfpDec(field, "1.2345678901234568500"),
108 new DfpDec(field, "1.2345678901234568"),
109 DfpField.FLAG_INEXACT, "Round #9");
110
111 test(new DfpDec(field, "1.2345678901234568000").add(new DfpDec(field, ".0000000000000000501")),
112 new DfpDec(field, "1.2345678901234569"),
113 DfpField.FLAG_INEXACT, "Round #10");
114
115 test(new DfpDec(field, "1.2345678901234568499"),
116 new DfpDec(field, "1.2345678901234568"),
117 DfpField.FLAG_INEXACT, "Round #11");
118
119 test(new DfpDec(field, "12.345678901234567890"),
120 new DfpDec(field, "12.345678901234568"),
121 DfpField.FLAG_INEXACT, "Round #12");
122
123 test(new DfpDec(field, "12.345678901234567500"),
124 new DfpDec(field, "12.345678901234568"),
125 DfpField.FLAG_INEXACT, "Round #13");
126
127 test(new DfpDec(field, "12.345678901234568500"),
128 new DfpDec(field, "12.345678901234568"),
129 DfpField.FLAG_INEXACT, "Round #14");
130
131 test(new DfpDec(field, "12.345678901234568").add(new DfpDec(field, ".000000000000000501")),
132 new DfpDec(field, "12.345678901234569"),
133 DfpField.FLAG_INEXACT, "Round #15");
134
135 test(new DfpDec(field, "12.345678901234568499"),
136 new DfpDec(field, "12.345678901234568"),
137 DfpField.FLAG_INEXACT, "Round #16");
138
139 test(new DfpDec(field, "123.45678901234567890"),
140 new DfpDec(field, "123.45678901234568"),
141 DfpField.FLAG_INEXACT, "Round #17");
142
143 test(new DfpDec(field, "123.45678901234567500"),
144 new DfpDec(field, "123.45678901234568"),
145 DfpField.FLAG_INEXACT, "Round #18");
146
147 test(new DfpDec(field, "123.45678901234568500"),
148 new DfpDec(field, "123.45678901234568"),
149 DfpField.FLAG_INEXACT, "Round #19");
150
151 test(new DfpDec(field, "123.456789012345685").add(new DfpDec(field, ".00000000000000501")),
152 new DfpDec(field, "123.45678901234569"),
153 DfpField.FLAG_INEXACT, "Round #20");
154
155 test(new DfpDec(field, "123.45678901234568499"),
156 new DfpDec(field, "123.45678901234568"),
157 DfpField.FLAG_INEXACT, "Round #21");
158
159 field.setRoundingMode(DfpField.RoundingMode.ROUND_DOWN);
160
161
162 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.9")),
163 new DfpDec(field, "12345678901234567"),
164 DfpField.FLAG_INEXACT, "Round #22");
165
166 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.99999999")),
167 new DfpDec(field, "12345678901234567"),
168 DfpField.FLAG_INEXACT, "Round #23");
169
170 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.99999999")),
171 new DfpDec(field, "-12345678901234567"),
172 DfpField.FLAG_INEXACT, "Round #24");
173
174 field.setRoundingMode(DfpField.RoundingMode.ROUND_UP);
175
176
177 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.1")),
178 new DfpDec(field, "12345678901234568"),
179 DfpField.FLAG_INEXACT, "Round #25");
180
181 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.0001")),
182 new DfpDec(field, "12345678901234568"),
183 DfpField.FLAG_INEXACT, "Round #26");
184
185 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.1")),
186 new DfpDec(field, "-12345678901234568"),
187 DfpField.FLAG_INEXACT, "Round #27");
188
189 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.0001")),
190 new DfpDec(field, "-12345678901234568"),
191 DfpField.FLAG_INEXACT, "Round #28");
192
193 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "0")),
194 new DfpDec(field, "-12345678901234567"),
195 0, "Round #28.5");
196
197 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_UP);
198
199
200 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.499999999999")),
201 new DfpDec(field, "12345678901234567"),
202 DfpField.FLAG_INEXACT, "Round #29");
203
204 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.50000001")),
205 new DfpDec(field, "12345678901234568"),
206 DfpField.FLAG_INEXACT, "Round #30");
207
208 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.5")),
209 new DfpDec(field, "12345678901234568"),
210 DfpField.FLAG_INEXACT, "Round #30.5");
211
212 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.499999999999")),
213 new DfpDec(field, "-12345678901234567"),
214 DfpField.FLAG_INEXACT, "Round #31");
215
216 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.50000001")),
217 new DfpDec(field, "-12345678901234568"),
218 DfpField.FLAG_INEXACT, "Round #32");
219
220 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_DOWN);
221
222
223 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.5001")),
224 new DfpDec(field, "12345678901234568"),
225 DfpField.FLAG_INEXACT, "Round #33");
226
227 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.5000")),
228 new DfpDec(field, "12345678901234567"),
229 DfpField.FLAG_INEXACT, "Round #34");
230
231 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.5001")),
232 new DfpDec(field, "-12345678901234568"),
233 DfpField.FLAG_INEXACT, "Round #35");
234
235 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.6")),
236 new DfpDec(field, "-12345678901234568"),
237 DfpField.FLAG_INEXACT, "Round #35.5");
238
239 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.5000")),
240 new DfpDec(field, "-12345678901234567"),
241 DfpField.FLAG_INEXACT, "Round #36");
242
243 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_ODD);
244
245
246 test(new DfpDec(field, "12345678901234568").add(new DfpDec(field, "0.5000")),
247 new DfpDec(field, "12345678901234569"),
248 DfpField.FLAG_INEXACT, "Round #37");
249
250 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.5000")),
251 new DfpDec(field, "12345678901234567"),
252 DfpField.FLAG_INEXACT, "Round #38");
253
254 test(new DfpDec(field, "-12345678901234568").add(new DfpDec(field, "-0.5000")),
255 new DfpDec(field, "-12345678901234569"),
256 DfpField.FLAG_INEXACT, "Round #39");
257
258 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.5000")),
259 new DfpDec(field, "-12345678901234567"),
260 DfpField.FLAG_INEXACT, "Round #40");
261
262 field.setRoundingMode(DfpField.RoundingMode.ROUND_CEIL);
263
264
265 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.0001")),
266 new DfpDec(field, "12345678901234568"),
267 DfpField.FLAG_INEXACT, "Round #41");
268
269 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.9999")),
270 new DfpDec(field, "-12345678901234567"),
271 DfpField.FLAG_INEXACT, "Round #42");
272
273 field.setRoundingMode(DfpField.RoundingMode.ROUND_FLOOR);
274
275
276 test(new DfpDec(field, "12345678901234567").add(new DfpDec(field, "0.9999")),
277 new DfpDec(field, "12345678901234567"),
278 DfpField.FLAG_INEXACT, "Round #43");
279
280 test(new DfpDec(field, "-12345678901234567").add(new DfpDec(field, "-0.0001")),
281 new DfpDec(field, "-12345678901234568"),
282 DfpField.FLAG_INEXACT, "Round #44");
283
284 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_EVEN);
285 }
286
287 @Test
288 public void testRoundDecimal10() {
289 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_EVEN);
290
291 test(new Decimal10(field, "1234567891234567890"),
292 new Decimal10(field, "1234567891000000000"),
293 DfpField.FLAG_INEXACT, "RoundDecimal10 #1");
294
295 test(new Decimal10(field, "0.1234567891634567890"),
296 new Decimal10(field, "0.1234567892"),
297 DfpField.FLAG_INEXACT, "RoundDecimal10 #2");
298
299 test(new Decimal10(field, "0.1234567891500000000"),
300 new Decimal10(field, "0.1234567892"),
301 DfpField.FLAG_INEXACT, "RoundDecimal10 #3");
302
303 test(new Decimal10(field, "0.1234567890500"),
304 new Decimal10(field, "0.1234567890"),
305 DfpField.FLAG_INEXACT, "RoundDecimal10 #4");
306
307 test(new Decimal10(field, "0.1234567890501"),
308 new Decimal10(field, "0.1234567891"),
309 DfpField.FLAG_INEXACT, "RoundDecimal10 #5");
310
311 test(new Decimal10(field, "0.1234567890499"),
312 new Decimal10(field, "0.1234567890"),
313 DfpField.FLAG_INEXACT, "RoundDecimal10 #6");
314
315 test(new Decimal10(field, "1.234567890890"),
316 new Decimal10(field, "1.234567891"),
317 DfpField.FLAG_INEXACT, "RoundDecimal10 #7");
318
319 test(new Decimal10(field, "1.234567891500"),
320 new Decimal10(field, "1.234567892"),
321 DfpField.FLAG_INEXACT, "RoundDecimal10 #8");
322
323 test(new Decimal10(field, "1.234567890500"),
324 new Decimal10(field, "1.234567890"),
325 DfpField.FLAG_INEXACT, "RoundDecimal10 #9");
326
327 test(new Decimal10(field, "1.234567890000").add(new Decimal10(field, ".000000000501")),
328 new Decimal10(field, "1.234567891"),
329 DfpField.FLAG_INEXACT, "RoundDecimal10 #10");
330
331 test(new Decimal10(field, "1.234567890499"),
332 new Decimal10(field, "1.234567890"),
333 DfpField.FLAG_INEXACT, "RoundDecimal10 #11");
334
335 test(new Decimal10(field, "12.34567890890"),
336 new Decimal10(field, "12.34567891"),
337 DfpField.FLAG_INEXACT, "RoundDecimal10 #12");
338
339 test(new Decimal10(field, "12.34567891500"),
340 new Decimal10(field, "12.34567892"),
341 DfpField.FLAG_INEXACT, "RoundDecimal10 #13");
342
343 test(new Decimal10(field, "12.34567890500"),
344 new Decimal10(field, "12.34567890"),
345 DfpField.FLAG_INEXACT, "RoundDecimal10 #14");
346
347 test(new Decimal10(field, "12.34567890").add(new Decimal10(field, ".00000000501")),
348 new Decimal10(field, "12.34567891"),
349 DfpField.FLAG_INEXACT, "RoundDecimal10 #15");
350
351 test(new Decimal10(field, "12.34567890499"),
352 new Decimal10(field, "12.34567890"),
353 DfpField.FLAG_INEXACT, "RoundDecimal10 #16");
354
355 test(new Decimal10(field, "123.4567890890"),
356 new Decimal10(field, "123.4567891"),
357 DfpField.FLAG_INEXACT, "RoundDecimal10 #17");
358
359 test(new Decimal10(field, "123.4567891500"),
360 new Decimal10(field, "123.4567892"),
361 DfpField.FLAG_INEXACT, "RoundDecimal10 #18");
362
363 test(new Decimal10(field, "123.4567890500"),
364 new Decimal10(field, "123.4567890"),
365 DfpField.FLAG_INEXACT, "RoundDecimal10 #19");
366
367 test(new Decimal10(field, "123.4567890").add(new Decimal10(field, ".0000000501")),
368 new Decimal10(field, "123.4567891"),
369 DfpField.FLAG_INEXACT, "RoundDecimal10 #20");
370
371 test(new Decimal10(field, "123.4567890499"),
372 new Decimal10(field, "123.4567890"),
373 DfpField.FLAG_INEXACT, "RoundDecimal10 #21");
374
375 field.setRoundingMode(DfpField.RoundingMode.ROUND_DOWN);
376
377
378 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.9")),
379 new Decimal10(field, "1234567890"),
380 DfpField.FLAG_INEXACT, "RoundDecimal10 #22");
381
382 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.99999999")),
383 new Decimal10(field, "1234567890"),
384 DfpField.FLAG_INEXACT, "RoundDecimal10 #23");
385
386 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.99999999")),
387 new Decimal10(field, "-1234567890"),
388 DfpField.FLAG_INEXACT, "RoundDecimal10 #24");
389
390 field.setRoundingMode(DfpField.RoundingMode.ROUND_UP);
391
392
393 test(new Decimal10(field, 1234567890).add(new Decimal10(field, "0.1")),
394 new Decimal10(field, 1234567891L),
395 DfpField.FLAG_INEXACT, "RoundDecimal10 #25");
396
397 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.0001")),
398 new Decimal10(field, "1234567891"),
399 DfpField.FLAG_INEXACT, "RoundDecimal10 #26");
400
401 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.1")),
402 new Decimal10(field, "-1234567891"),
403 DfpField.FLAG_INEXACT, "RoundDecimal10 #27");
404
405 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.0001")),
406 new Decimal10(field, "-1234567891"),
407 DfpField.FLAG_INEXACT, "RoundDecimal10 #28");
408
409 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "0")),
410 new Decimal10(field, "-1234567890"),
411 0, "RoundDecimal10 #28.5");
412
413 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_UP);
414
415
416 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.4999999999")),
417 new Decimal10(field, "1234567890"),
418 DfpField.FLAG_INEXACT, "RoundDecimal10 #29");
419
420 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.50000001")),
421 new Decimal10(field, "1234567891"),
422 DfpField.FLAG_INEXACT, "RoundDecimal10 #30");
423
424 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.5")),
425 new Decimal10(field, "1234567891"),
426 DfpField.FLAG_INEXACT, "RoundDecimal10 #30.5");
427
428 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.4999999999")),
429 new Decimal10(field, "-1234567890"),
430 DfpField.FLAG_INEXACT, "RoundDecimal10 #31");
431
432 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.50000001")),
433 new Decimal10(field, "-1234567891"),
434 DfpField.FLAG_INEXACT, "RoundDecimal10 #32");
435
436 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_DOWN);
437
438
439 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.5001")),
440 new Decimal10(field, "1234567890"),
441 DfpField.FLAG_INEXACT, "RoundDecimal10 #33");
442
443 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.5000")),
444 new Decimal10(field, "1234567890"),
445 DfpField.FLAG_INEXACT, "RoundDecimal10 #34");
446
447 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.5001")),
448 new Decimal10(field, "-1234567890"),
449 DfpField.FLAG_INEXACT, "RoundDecimal10 #35");
450
451 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.6")),
452 new Decimal10(field, "-1234567891"),
453 DfpField.FLAG_INEXACT, "RoundDecimal10 #35.5");
454
455 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.5000")),
456 new Decimal10(field, "-1234567890"),
457 DfpField.FLAG_INEXACT, "RoundDecimal10 #36");
458
459 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_ODD);
460
461
462 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.5000")),
463 new Decimal10(field, "1234567891"),
464 DfpField.FLAG_INEXACT, "RoundDecimal10 #37");
465
466 test(new Decimal10(field, "1234567891").add(new Decimal10(field, "0.5000")),
467 new Decimal10(field, "1234567891"),
468 DfpField.FLAG_INEXACT, "RoundDecimal10 #38");
469
470 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.5000")),
471 new Decimal10(field, "-1234567891"),
472 DfpField.FLAG_INEXACT, "RoundDecimal10 #39");
473
474 test(new Decimal10(field, "-1234567891").add(new Decimal10(field, "-0.5000")),
475 new Decimal10(field, "-1234567891"),
476 DfpField.FLAG_INEXACT, "RoundDecimal10 #40");
477
478 field.setRoundingMode(DfpField.RoundingMode.ROUND_CEIL);
479
480
481 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.0001")),
482 new Decimal10(field, "1234567891"),
483 DfpField.FLAG_INEXACT, "RoundDecimal10 #41");
484
485 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.9999")),
486 new Decimal10(field, "-1234567890"),
487 DfpField.FLAG_INEXACT, "RoundDecimal10 #42");
488
489 field.setRoundingMode(DfpField.RoundingMode.ROUND_FLOOR);
490
491
492 test(new Decimal10(field, "1234567890").add(new Decimal10(field, "0.9999")),
493 new Decimal10(field, "1234567890"),
494 DfpField.FLAG_INEXACT, "RoundDecimal10 #43");
495
496 test(new Decimal10(field, "-1234567890").add(new Decimal10(field, "-0.0001")),
497 new Decimal10(field, "-1234567891"),
498 DfpField.FLAG_INEXACT, "RoundDecimal10 #44");
499
500 field.setRoundingMode(DfpField.RoundingMode.ROUND_HALF_EVEN);
501 }
502
503 @Test
504 public void testNextAfter() {
505 test(new DfpDec(field, 1).nextAfter(pinf),
506 new DfpDec(field, "1.0000000000000001"),
507 0, "NextAfter #1");
508
509 test(new DfpDec(field, "1.0000000000000001").nextAfter(ninf),
510 new DfpDec(field, 1),
511 0, "NextAfter #1.5");
512
513 test(new DfpDec(field, 1).nextAfter(ninf),
514 new DfpDec(field, "0.99999999999999999"),
515 0, "NextAfter #2");
516
517 test(new DfpDec(field, "0.99999999999999999").nextAfter(new DfpDec(field, 2)),
518 new DfpDec(field, 1),
519 0, "NextAfter #3");
520
521 test(new DfpDec(field, -1).nextAfter(ninf),
522 new DfpDec(field, "-1.0000000000000001"),
523 0, "NextAfter #4");
524
525 test(new DfpDec(field, -1).nextAfter(pinf),
526 new DfpDec(field, "-0.99999999999999999"),
527 0, "NextAfter #5");
528
529 test(new DfpDec(field, "-0.99999999999999999").nextAfter(new DfpDec(field, -2)),
530 new DfpDec(field, (byte) -1),
531 0, "NextAfter #6");
532
533 test(new DfpDec(field, (byte) 2).nextAfter(new DfpDec(field, 2)),
534 new DfpDec(field, 2L),
535 0, "NextAfter #7");
536
537 test(new DfpDec(field, 0).nextAfter(new DfpDec(field, 0)),
538 new DfpDec(field, 0),
539 0, "NextAfter #8");
540
541 test(new DfpDec(field, -2).nextAfter(new DfpDec(field, -2)),
542 new DfpDec(field, -2),
543 0, "NextAfter #9");
544
545 test(new DfpDec(field, 0).nextAfter(new DfpDec(field, 1)),
546 new DfpDec(field, "1e-131092"),
547 DfpField.FLAG_UNDERFLOW, "NextAfter #10");
548
549 test(new DfpDec(field, 0).nextAfter(new DfpDec(field, -1)),
550 new DfpDec(field, "-1e-131092"),
551 DfpField.FLAG_UNDERFLOW, "NextAfter #11");
552
553 test(new DfpDec(field, "-1e-131092").nextAfter(pinf),
554 new DfpDec(field, "-0"),
555 DfpField.FLAG_UNDERFLOW | DfpField.FLAG_INEXACT, "Next After #12");
556
557 test(new DfpDec(field, "1e-131092").nextAfter(ninf),
558 new DfpDec(field, "0"),
559 DfpField.FLAG_UNDERFLOW | DfpField.FLAG_INEXACT, "Next After #13");
560
561 test(new DfpDec(field, "9.9999999999999999e131078").nextAfter(pinf),
562 pinf,
563 DfpField.FLAG_OVERFLOW | DfpField.FLAG_INEXACT, "Next After #14");
564 }
565 }