### Question:
ComputeEnrichment { public static double computeHyperGeo(double x, double N, double n, double k) { double h = Gamma.logGamma(k+1) - Gamma.logGamma(k-x+1) - Gamma.logGamma(x+1) + Gamma.logGamma(N-k+1) - Gamma.logGamma(N-k-n+x+1) - Gamma.logGamma(n-x+1) - Gamma.logGamma(N+1) + Gamma.logGamma(N-n+1) + Gamma.logGamma(n+1); return Math.exp(h); } ComputeEnrichment(DataCache cache, EnrichmentEngineRequestDto request); EnrichmentEngineResponseDto process(); static double computeHyperGeo(double x, double N, double n, double k); static double computeCumulHyperGeo(double x, double N, double n, double k); static DenseVector computeFDRqval(int N, DenseVector pvals);  }### Answer:
@Test public void testHyperGeo() { double N = 20; double k = 6; double n = 7; double x = 4; double p = ComputeEnrichment.computeHyperGeo(x, N, n, k); assertEquals(7.04334e-2, p, 1e-6); }