Когда входные параметры для "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 ни одна из функций slasq не была изменена, по крайней мере, с версии 3.7.0. Судя по вашему описанию, это зацикливание, поскольку TAU никогда не становится достаточно маленьким?
Как вы думаете, это работало в более ранних версиях? AFAIK ни одна из функций slasq не была изменена, по крайней мере, с версии 3.7.0. Судя по вашему описанию, это зацикливание, поскольку 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.