Quando os parâmetros de entrada para "slasq3" seguem o padrão abaixo:
i0 = 3, n0 = 16, pp = 1, desig = 0.2f, qmax = 0.2f, nfail = 4, iter = 1, ndiv = 2, ieee = 0, ttype = -1
esta função cai em um loop infinito entre a linha de código 332 ~ 362.
100% reproduzem.
Você acha que isso costumava funcionar nas versões anteriores? AFAIK nenhuma das funções slasq foi modificada desde pelo menos 3.7.0. Pela sua descrição está em loop, já que o TAU nunca fica pequeno o suficiente?
Você acha que isso costumava funcionar nas versões anteriores? AFAIK nenhuma das funções slasq foi modificada desde pelo menos 3.7.0. Pela sua descrição está em loop, já que o TAU nunca fica pequeno o suficiente?
Desculpe, eu só verifiquei no 3.9.0 até agora, pois esta é a única versão disponível.
Você teria um reprodutor completo para isso, em particular com os valores contidos no array z ? Não posso reproduzir o problema com os dados que você forneceu e um z aleatório, e imagino que coisas ruins acontecerão, se não mesmo quando algum dos elementos do array for um NaN.
se dmin for nan, ele deve ser definido com algum valor incorreto legítimo; impediria o infinito.
Eu também pensei sobre isso, mas se estou correto sobre as regras de comparação com NaN, este provavelmente não é o problema.
Nenhum loop infinito usando 4b3c7c249f6a2cfed76603d9987cf5164fa6f9e1 para construir o código:
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
Com base na postagem de @weslleyspereira , vamos encerrar esse assunto então.
@ Peter9606 obrigado por relatar o problema, se o problema voltar, por favor, volte para nós.
Julien.
Comentários muito úteis
Você teria um reprodutor completo para isso, em particular com os valores contidos no array z ? Não posso reproduzir o problema com os dados que você forneceu e um z aleatório,
e imagino que coisas ruins acontecerão, senão mesmo quando algum dos elementos do array for um NaN.