我必须使用 gamma 函数进行一些数值计算。我正在使用tgamma
C++cmath
库中包含的内容。问题是 gamma 函数内部的参数是正的而且很大,所以我总是得到一个nan
.
我知道我可以lgamma
在 C++ 中使用 log-gamma 函数来避免计算期间的数值溢出。问题是我不知道如何在我的情况下应用它。
例如,有类似的东西
在哪里,和是大到足以产生溢出的整数。
我知道我可以使用日志来获取,从该操作中获得结果并进行指数运算以获得正确的结果而不会溢出。
但是,如果我有这样的东西呢?
在这种情况下和是实数。
现在我有一个总和,所以属性没用。当然,我可以简单地用 log-gammas 替换所有的 gammas,但是,在这种情况下,我怎样才能找回我的原始结果呢?我可以做些什么来避免溢出吗?