I have been looking for an online calculator that can do combinatoric math calculations, specifically those that can be used to calculate poker hand probabilities and odds. These calculations are largely based on the binomial coefficient C(n,k). Not satisfied with my findings, I set out to build one myself.
At first this seemed quite the trivial task, just some number crunching. However I soon realized that the numbers used in these calculations can get large. Very large. The first step was making the C(n,k) calculation as efficient as possible by factoring out repetitive n! calculations. Doing that, in combination with arbitrary precision math functions, I was able to come up with a working function. It seems to work well and can handle very large numbers. (I haven't tested any beyond 1000, but that is certainly more than enough for poker hands.)
After getting C(n,k) working, the rest falls into place. The poker calculator uses the four pieces of information (outs, required outs, drawn, total) to compute the equation C(outs,required)*C(total-outs,drawn-required)/C(total,drawn)