25 constexpr double factorials[] = {
47 0.5109094217170944e20,
48 0.112400072777760768e22,
49 0.2585201673888497664e23,
50 0.62044840173323943936e24,
51 0.15511210043330985984e26,
52 0.403291461126605635584e27,
53 0.10888869450418352160768e29,
54 0.304888344611713860501504e30,
55 0.8841761993739701954543616e31,
56 0.26525285981219105863630848e33,
57 0.822283865417792281772556288e34,
58 0.26313083693369353016721801216e36,
59 0.868331761881188649551819440128e37,
60 0.29523279903960414084761860964352e39,
63 if (r >= 35 || k >= 35 || (r - k) >= 35)
64 throw std::runtime_error(
"binomial coefficient parameters out of bounds");
66 return factorials[r] / (factorials[k] * factorials[r - k]);
double binomial_coefficient(unsigned r, unsigned k)