// function public double value(int k) { if (k > n_) { return(0.0); } // p==1.0 if (logP_.IsEqual(0.0)) { return(k == n_ ? 1.0 : 0.0); } // p==0.0 if (logOneMinusP_.IsEqual(0.0)) { return(k == 0 ? 1.0 : 0.0); } return(Math.Exp(Utils.binomialCoefficientLn(n_, k) + k * logP_ + (n_ - k) * logOneMinusP_)); }
public static double binomialCoefficient(int n, int k) { return(Math.Floor(0.5 + Math.Exp(Utils.binomialCoefficientLn(n, k)))); }