2017-09-05 34 views
2

NaNと普通の数値を別の方法で結合する方法はありますか?通常はFortranで行いますか?Fortranでの合計でNaN項を無視する

私は、安全な用語を含むいくつかの集計を持っていますが、それはNaNとすることはできず、その他の用語はNaNとすることができます。 NaNの場合には、加数を無視して式の評価をしたいと思います。

NaNと入力したときにそれらを乗算することはできません。NaN x 0はとにかくNaNです。 アイデア?

おかげ

答えて

4

NaNを伝播しません何の演算はありません。したがって、0を掛けるなどのアイデアはうまくいきません。

あなたの唯一の解決策は、合計でNaNの用語を忘れることです。あなたはIEEE754を使用していないか、FORTRANの古い標準を使用している場合は、何かが

IF (IEEE_IS_NAN(x)) 

に基づいて、次にあなたが使用できるならばTRUEのみの場合のxとなります

IF(x .NE. x)

NaNです。

+1

isnanは標準のFortran組み込み関数ではありません。 ieee_is_nanを使う方がいいです、https://software.intel.com/en-us/node/692942 –

+1

を参照してください。また、特定のコンパイラオプションは 'x .neを最適化します。 x'なので、注意してください。常に各システムのNaN検出器をテストしてください。 – Ross

+0

@イアンブッシュ:確かに;私はしばらくFORTRANを使用していませんでしたが、深く遠い過去には 'IF(x .NE。x)'を使用しました。 – Bathsheba

関連する問題