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