Я не мог придумать правильное название для своего вопроса, но позвольте мне представить свое дело; Я хочу рассчитать коэффициент значимости в виде: p = 1 - X / Y
Здесь X происходит из итеративного процесса; процесс выполняет большое количество шагов и подсчитывает, сколькими различными способами процесс может оказаться в разных состояниях (хранящихся в HashMap). После завершения итерации я выбираю несколько состояний и суммирую их значения. Трудно сказать, насколько велики эти числа, поэтому я намерен реализовать сумму как BigInteger
.
Y, с другой стороны, получается из биномиального коэффициента с числами в тысячной шкале. Я склонен использовать logGamma для вычисления этих коэффициентов, которые в результате дают мне натуральный логарифм значения.
Меня интересует разделение X / Y наилучшим/наиболее эффективным способом. Если бы я мог получить X в натуральном логарифме, тогда я мог бы вычесть степени и получить результат как 1 - e ^ (lnX - lnY).
Я вижу, что BigInteger
нельзя логарифмировать с помощью Math.log
, что мне делать в этом случае?