给定log(a)和log(b),返回log(a + b)
double log_sum(double log_a, double log_b){
double v;
if(log_a < log_b){
v=log_b+log(1+exp(log_a-log_b));
}
else{
v=log_a+log(1+exp(log_b-log_a));
}
return v;
}
Run Code Online (Sandbox Code Playgroud)
我想知道上述功能有什么好处?
主要(蛮力)替代方案如下:
v = log(exp(log_a) + exp(log_b));
Run Code Online (Sandbox Code Playgroud)
这有三个超越功能评估.
显示的计算仅使用两个超越函数 - 并且应该更快.
它在数值上也可能更稳定.
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |