in commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/FDistribution.java [65:89]
private FDistribution(double numeratorDegreesOfFreedom,
double denominatorDegreesOfFreedom) {
this.numeratorDegreesOfFreedom = numeratorDegreesOfFreedom;
this.denominatorDegreesOfFreedom = denominatorDegreesOfFreedom;
final double nhalf = numeratorDegreesOfFreedom / 2;
final double mhalf = denominatorDegreesOfFreedom / 2;
nHalfLogNmHalfLogM = nhalf * Math.log(numeratorDegreesOfFreedom) +
mhalf * Math.log(denominatorDegreesOfFreedom);
logBetaNhalfMhalf = LogBeta.value(nhalf, mhalf);
if (denominatorDegreesOfFreedom > MIN_DENOMINATOR_DF_FOR_MEAN) {
mean = denominatorDegreesOfFreedom / (denominatorDegreesOfFreedom - 2);
} else {
mean = Double.NaN;
}
if (denominatorDegreesOfFreedom > MIN_DENOMINATOR_DF_FOR_VARIANCE) {
final double denomDFMinusTwo = denominatorDegreesOfFreedom - 2;
variance = (2 * (denominatorDegreesOfFreedom * denominatorDegreesOfFreedom) *
(numeratorDegreesOfFreedom + denominatorDegreesOfFreedom - 2)) /
(numeratorDegreesOfFreedom * (denomDFMinusTwo * denomDFMinusTwo) *
(denominatorDegreesOfFreedom - 4));
} else {
variance = Double.NaN;
}
}