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.distribution.continuous;
24
25 import org.hipparchus.exception.MathIllegalArgumentException;
26 import org.junit.jupiter.api.BeforeEach;
27 import org.junit.jupiter.api.Test;
28
29 import static org.junit.jupiter.api.Assertions.assertEquals;
30 import static org.junit.jupiter.api.Assertions.assertTrue;
31 import static org.junit.jupiter.api.Assertions.fail;
32
33
34
35
36 public class CauchyDistributionTest extends RealDistributionAbstractTest {
37
38
39 protected double defaultTolerance = 1e-9;
40
41 @BeforeEach
42 @Override
43 public void setUp() {
44 super.setUp();
45 setTolerance(defaultTolerance);
46 }
47
48
49
50
51 @Override
52 public CauchyDistribution makeDistribution() {
53 return new CauchyDistribution(1.2, 2.1);
54 }
55
56
57 @Override
58 public double[] makeCumulativeTestPoints() {
59
60 return new double[] {-667.24856187, -65.6230835029, -25.4830299460, -12.0588781808,
61 -5.26313542807, 669.64856187, 68.0230835029, 27.8830299460, 14.4588781808, 7.66313542807};
62 }
63
64
65 @Override
66 public double[] makeCumulativeTestValues() {
67 return new double[] {0.001, 0.01, 0.025, 0.05, 0.1, 0.999,
68 0.990, 0.975, 0.950, 0.900};
69 }
70
71
72 @Override
73 public double[] makeDensityTestValues() {
74 return new double[] {
75 1.49599158008e-06, 0.000149550440335, 0.000933076881878,
76 0.00370933207799, 0.0144742330437, 1.49599158008e-06,
77 0.000149550440335, 0.000933076881878, 0.00370933207799,
78 0.0144742330437
79 };
80 }
81
82
83
84 @Test
85 void testInverseCumulativeProbabilityExtremes() {
86 setInverseCumulativeTestPoints(new double[] {0.0, 1.0});
87 setInverseCumulativeTestValues(
88 new double[] {Double.NEGATIVE_INFINITY, Double.POSITIVE_INFINITY});
89 verifyInverseCumulativeProbabilities();
90 }
91
92 @Test
93 void testMedian() {
94 CauchyDistribution distribution = (CauchyDistribution) getDistribution();
95 assertEquals(1.2, distribution.getMedian(), 0.0);
96 }
97
98 @Test
99 void testScale() {
100 CauchyDistribution distribution = (CauchyDistribution) getDistribution();
101 assertEquals(2.1, distribution.getScale(), 0.0);
102 }
103
104 @Test
105 void testPreconditions() {
106 try {
107 new CauchyDistribution(0, 0);
108 fail("Cannot have zero scale");
109 } catch (MathIllegalArgumentException ex) {
110
111 }
112 try {
113 new CauchyDistribution(0, -1);
114 fail("Cannot have negative scale");
115 } catch (MathIllegalArgumentException ex) {
116
117 }
118 }
119
120 @Test
121 void testMoments() {
122 CauchyDistribution dist;
123
124 dist = new CauchyDistribution(10.2, 0.15);
125 assertTrue(Double.isNaN(dist.getNumericalMean()));
126 assertTrue(Double.isNaN(dist.getNumericalVariance()));
127
128 dist = new CauchyDistribution(23.12, 2.12);
129 assertTrue(Double.isNaN(dist.getNumericalMean()));
130 assertTrue(Double.isNaN(dist.getNumericalVariance()));
131 }
132 }