【发布时间】:2016-01-03 07:45:09
【问题描述】:
我有一组值a[i]。
然后我计算
for(...){
b[i] = log(a[i]);
}
那我总结一下
for(...){
s += c[i] * b[i];
}
到目前为止没问题。
但是对于某些i 我的a[i] 可能为零并导致b[i] = log(0) = -Inf。对于这些i,c[i] 也为零 - 这些是一些无效数据点。但是zero*-Inf好像给NaN,我的总和搞砸了……
当c[i] = 0 时,有没有办法让c[i] * b[i] = 0?
我看到的唯一方法是将所有零 a[i] 设置为一个小的非零值或检查零,但可能有更好的解决方案。
我使用 C++ 和 std 数学函数,但我正在寻找一种尽可能通用的方法。
【问题讨论】:
-
浏览数组并将所有NaN替换为0?