1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.math.distribution;
18
19
20
21
22
23
24
25
26 public class ExponentialDistributionTest extends ContinuousDistributionAbstractTest {
27
28
29
30
31
32 public ExponentialDistributionTest(String name) {
33 super(name);
34 }
35
36
37
38
39 @Override
40 public ContinuousDistribution makeDistribution() {
41 return new ExponentialDistributionImpl(5.0);
42 }
43
44
45 @Override
46 public double[] makeCumulativeTestPoints() {
47
48 return new double[] {0.005002502d, 0.05025168d, 0.1265890d, 0.2564665d, 0.5268026d,
49 34.53878d, 23.02585d, 18.44440d, 14.97866d, 11.51293d};
50 }
51
52
53 @Override
54 public double[] makeCumulativeTestValues() {
55 return new double[] {0.001d, 0.01d, 0.025d, 0.05d, 0.1d, 0.999d,
56 0.990d, 0.975d, 0.950d, 0.900d};
57 }
58
59
60
61 public void testCumulativeProbabilityExtremes() throws Exception {
62 setCumulativeTestPoints(new double[] {-2, 0});
63 setCumulativeTestValues(new double[] {0, 0});
64 verifyCumulativeProbabilities();
65 }
66
67 public void testInverseCumulativeProbabilityExtremes() throws Exception {
68 setInverseCumulativeTestPoints(new double[] {0, 1});
69 setInverseCumulativeTestValues(new double[] {0, Double.POSITIVE_INFINITY});
70 verifyInverseCumulativeProbabilities();
71 }
72
73 public void testCumulativeProbability2() throws Exception {
74 double actual = getDistribution().cumulativeProbability(0.25, 0.75);
75 assertEquals(0.0905214, actual, 10e-4);
76 }
77
78 public void testDensity() {
79 ExponentialDistribution d1 = new ExponentialDistributionImpl(1);
80 assertEquals(0.0, d1.density(-1e-9));
81 assertEquals(1.0, d1.density(0.0));
82 assertEquals(0.0, d1.density(1000.0));
83 assertEquals(Math.exp(-1), d1.density(1.0));
84 assertEquals(Math.exp(-2), d1.density(2.0));
85
86 ExponentialDistribution d2 = new ExponentialDistributionImpl(3);
87 assertEquals(1/3.0, d2.density(0.0));
88
89 assertEquals(0.2388437702, d2.density(1.0), 1e-8);
90
91
92 assertEquals(0.1711390397, d2.density(2.0), 1e-8);
93 }
94
95 public void testMeanAccessors() {
96 ExponentialDistribution distribution = (ExponentialDistribution) getDistribution();
97 assertEquals(5d, distribution.getMean(), Double.MIN_VALUE);
98 distribution.setMean(2d);
99 assertEquals(2d, distribution.getMean(), Double.MIN_VALUE);
100 try {
101 distribution.setMean(0);
102 fail("Expecting IllegalArgumentException for 0 mean");
103 } catch (IllegalArgumentException ex) {
104
105 }
106 }
107
108 }