1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.hipparchus.analysis.differentiation;
19
20 import org.hipparchus.Field;
21 import org.hipparchus.dfp.Dfp;
22 import org.hipparchus.dfp.DfpField;
23 import org.hipparchus.random.RandomGenerator;
24 import org.hipparchus.random.Well19937a;
25 import org.hipparchus.util.FastMath;
26 import org.junit.jupiter.api.Test;
27
28 import static org.junit.jupiter.api.Assertions.assertTrue;
29
30
31
32
33 class FieldDerivativeStructureDfpTest extends FieldDerivativeStructureAbstractTest<Dfp> {
34
35 private static final DfpField FIELD = new DfpField(25);
36
37 @Override
38 protected Field<Dfp> getField() {
39 return FIELD;
40 }
41
42 @Override
43 @Test
44 public void testComposeField() {
45 doTestComposeField(new double[] { 5.0e-24, 5.0e-24, 7.0e-24, 2.0e-23, 3.0e-23, 1.0e-100 });
46 }
47
48 @Override
49 @Test
50 public void testComposePrimitive() {
51 doTestComposePrimitive(new double[] { 2.0e-14, 3.0e-14, 8.0e-14, 2.0e-13, 9.0e-14, 1.0e-100 });
52 }
53
54 @Override
55 @Test
56 public void testHypotNoOverflow() {
57 doTestHypotNoOverflow(65600);
58 }
59
60 @Override
61 @Test
62 public void testLinearCombinationReference() {
63 doTestLinearCombinationReference(x -> build(x), 4.15e-9, 4.21e-9);
64 }
65
66 @Override
67 @Test
68 public void testLinearCombination1DSDS() {
69 doTestLinearCombination1DSDS(9.0e-9);
70 }
71
72 @Override
73 @Test
74 public void testLinearCombination1FieldDS() {
75 doTestLinearCombination1FieldDS(9.0e-9);
76 }
77
78 @Override
79 @Test
80 public void testLinearCombination1DoubleDS() {
81 doTestLinearCombination1DoubleDS(4.0e-8);
82 }
83
84 @Override
85 @Test
86 public void testUlp() {
87 final RandomGenerator random = new Well19937a(0x36d4f8862421e0e4l);
88 for (int i = -300; i < 300; ++i) {
89 final double x = FastMath.scalb(2.0 * random.nextDouble() - 1.0, i);
90 assertTrue(FastMath.ulp(x) >= build(x).ulp().getReal());
91 }
92 }
93
94 }