2
有沒有一種方法可以以不同的方式將NaN
與普通數字結合起來,然後通常在Fortran中完成?在Fortran中忽略NaN項總和
我有幾個總結,其中包含'安全'條款,它不能是NaN
,以及其他一些條款可以是NaN
。 我想對錶達式的評估忽略加數,如果它們是NaN
。
我不能只是擺脫他們乘以一個空因子時,他們是NaN
因爲NaN x 0
無論如何給NaN
。 想法?
感謝
有沒有一種方法可以以不同的方式將NaN
與普通數字結合起來,然後通常在Fortran中完成?在Fortran中忽略NaN項總和
我有幾個總結,其中包含'安全'條款,它不能是NaN
,以及其他一些條款可以是NaN
。 我想對錶達式的評估忽略加數,如果它們是NaN
。
我不能只是擺脫他們乘以一個空因子時,他們是NaN
因爲NaN x 0
無論如何給NaN
。 想法?
感謝
有不傳播NaN
沒有算術運算。所以像乘以0這樣的想法是行不通的。
你唯一的解決辦法是錯過NaN
這個總和。做到這一點的東西。如果你不使用IEEE754或使用FORTRAN的舊標準上
IF (IEEE_IS_NAN(x))
爲主,那麼你可以使用
IF(x .NE. x)
這將是當且僅當x是NaN。
isnan不是一個標準的Fortran內在。最好使用ieee_is_nan,請參閱https://software.intel.com/zh-cn/node/692942 –
此外,某些編譯器選項將優化掉x .ne。 x',所以要小心。始終測試每個系統的NaN探測器。 – Ross
@IanBush:確實;現在我還沒有使用過FORTRAN,但在深遠的過去,我確實使用了IF(x .NE。x)'。 – Bathsheba