「slasq3」への入力パラメータが以下のパターンに従う場合:
i0 = 3、n0 = 16、pp = 1、desig = 0.2f、qmax = 0.2f、nfail = 4、iter = 1、ndiv = 2、ieee = 0、ttype = -1
この関数は、コード行332〜362の間の無限ループに分類されます。
100%再現。
これは以前のバージョンで機能していたと思いますか? AFAIK少なくとも3.7.0以降、slasq関数は変更されていません。 あなたの説明から、TAUが十分に小さくなることは決してないので、それはループしていますか?
これは以前のバージョンで機能していたと思いますか? AFAIK少なくとも3.7.0以降、slasq関数は変更されていません。 あなたの説明から、TAUが十分に小さくなることは決してないので、それはループしていますか?
申し訳ありませんが、これまでのところ3.9.0でのみ確認しました。これは、手元にある唯一のバージョンです。
特に配列zに含まれている値を使用して、これを完全に再現することができますか? あなたが提供したデータとランダムなzで問題を再現することはできません。また、配列要素のいずれかがNaNである場合でも、悪いことが起こると思います。
dminがnanの場合、正当な誤った値に設定する必要があります。 無限を防ぐでしょう。
これについても考えましたが、NaNと比較するためのルールが正しければ、おそらく問題ではありません。
4b3c7c249f6a2cfed76603d9987cf5164fa6f9e1を使用してコードをビルドする無限ループはありません。
PROGRAM testSLASQ3
IMPLICIT NONE
* .. Scalar Arguments ..
LOGICAL IEEE
INTEGER I0, ITER, N0, NDIV, NFAIL, PP, TTYPE
REAL DESIG, DMIN, DMIN1, DMIN2, DN, DN1, DN2, G,
& QMAX, SIGMA, TAU
* .. Array Arguments ..
REAL Z( 64 )
* .. Subroutines ..
EXTERNAL SLASQ3
PARAMETER ( IEEE=.FALSE. )
PARAMETER ( I0 = 3 )
PARAMETER ( QMAX = 1.0 )
ITER=1
N0=16
NDIV=2
NFAIL=4
PP=1
TTYPE=-1
DESIG=0.2
DMIN1=0.1
DMIN2=0.1
DN=1.0
DN1=1.0
DN2=1.0
G=1.0
TAU=1.0
Z = (/0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,
& 0.1,0.2,0.3,0.4,0.5,0.6,
& 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,
& 0.1,0.2,0.3,0.4,0.5,0.6,
& 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,
& 0.1,0.2,0.3,0.4,0.5,0.6,
& 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,
& 0.1,0.2,0.3,0.4,0.5,0.6/)
CALL SLASQ3( I0, N0, Z, PP, DMIN, SIGMA, DESIG, QMAX, NFAIL,
& ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
& DN2, G, TAU )
END PROGRAM testSLASQ3
@weslleyspereiraの投稿に基づいて、この問題を閉じましょう。
@ Peter9606問題を報告してございます。問題が連絡ください。
ジュリアン。
最も参考になるコメント
特に配列zに含まれている値を使用して、これを完全に再現することができますか? あなたが提供したデータとランダムなzで問題を再現することはできません。また、配列要素のいずれかがNaNである場合でも、
悪いことが起こると思います。