Fortran
■ このスレッドは過去ログ倉庫に格納されています
0749なんでだろう?
NGNGこの現象に出くわしたのは、2、3年前のことですが、当時の資料を漁ってやっと思い出しました。
結論からいいますと、>>745のケースについては、a,bをゼロに初期化しているのですが、これを
加算または累積計算していくとsumにNaNが入るのです。
おそらく、コンパイラのレジスタの割り当てか何かにバグがあるのでは?という結論になり、
DOループの中で、IF文を使用することで回避する情けない対策をとりました。
これって、コンパイラのバグではないかと思うのですが、こんな現象に出くわした経験者は
いないかと思い、投稿したのです。
>>747さんの質問のndt < nmxはありません。
また、デバッグモードでの実行は実行メモリが大きすぎて出来ませんでした。
>>748
プログラムは、F77で作成されています。従って、SUNのEWSでもF77環境下で動いていました。
>>746のケースは、私が直接タッチした訳でない(同僚が経験した)のですが、書き込み側の
プログラムを作ったのは私です。
この対策は、同僚が読み込みのフォーマットを少し変えることで切り抜けました。
具体的には、
write(nun) mxdt, ( num(i), i = 1 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m+3) ), m = 1 , 3 )
↓
write(nun) mxdt, ( idum, i = 1 , 3 ),
& ( num(i), i = 1 , 3 ),( idum, i = 7 , mxdt ),
& ( ( idat(n,m), n = 1 , num(m) ), m = 1 , 3 )
これはやはり、コンパイラのバグですよね?
なお、Compaq Visual Fortranのバージョンは6です。
■ このスレッドは過去ログ倉庫に格納されています