### Question:
FDistribution extends AbstractContinuousDistribution { @Override public double cumulativeProbability(double x) { if (x <= SUPPORT_LO) { return 0; } else if (x >= SUPPORT_HI) { return 1; } final double n = numeratorDegreesOfFreedom; final double m = denominatorDegreesOfFreedom; return RegularizedBeta.value((n * x) / (m + n * x), 0.5 * n, 0.5 * m); } FDistribution(double numeratorDegreesOfFreedom,
                         double denominatorDegreesOfFreedom); @Override double density(double x); @Override double logDensity(double x); @Override double cumulativeProbability(double x); double getNumeratorDegreesOfFreedom(); double getDenominatorDegreesOfFreedom(); @Override double getMean(); @Override double getVariance(); @Override double getSupportLowerBound(); @Override double getSupportUpperBound(); @Override boolean isSupportConnected();  }### Answer:
@Test void testLargeDegreesOfFreedom() { final FDistribution fd = new FDistribution(100000, 100000); final double p = fd.cumulativeProbability(.999); final double x = fd.inverseCumulativeProbability(p); Assertions.assertEquals(.999, x, 1.0e-5); }
@Test void testSmallDegreesOfFreedom() { FDistribution fd = new FDistribution(1, 1); double p = fd.cumulativeProbability(0.975); double x = fd.inverseCumulativeProbability(p); Assertions.assertEquals(0.975, x, 1.0e-5); fd = new FDistribution(1, 2); p = fd.cumulativeProbability(0.975); x = fd.inverseCumulativeProbability(p); Assertions.assertEquals(0.975, x, 1.0e-5); }