我有一组值a[i]
。将NaN或Inf乘以0并得到0
然后我计算
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] * b[i]
= 0时c[i]
是= 0?
我看到的唯一方法是将所有零a[i]
设置为一个非零的小值或检查零,但可能会有更好的解决方案。
我使用C++和std
数学函数,但我正在寻找一种尽可能通用的方法。
浏览数组并将所有NaN替换为0? –