我有一組值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? –