Довольно простой вопрос, но у меня были проблемы с поиском чего-либо в Интернете.
Я ищу версию журнала boost::math::binomial_coefficient
, который может обрабатывать некоторые из больших значений, сгенерированных моим кодом.
В R есть lchoose
который обеспечивает это, однако я не могу найти эквивалент в C ++
Любая помощь приветствуется
Я думаю, что вы должны рассчитать это самостоятельно. тем не мение этот вопрос спрашивает, как это сделать, и оказывается, что это не так уж плохо. Первое приближение:
n log n − m log m − (n−m) log (n−m)
Лучшее приближение можно получить, используя другой член Приближение Стирлинга для журнала (n!)
n log n − m log m − (n−m) log (n−m) + ½(log n − log m − log(n−m) − log 2π)
При всем этом вы вычитаете два термина, которые потенциально имеют одинаковый размер, поэтому вы подвержены потере точности.
Других решений пока нет …