Lapack: [Versão 3.9.0] Loop infinito em slasq3

Criado em 21 jan. 2020  ·  7Comentários  ·  Fonte: Reference-LAPACK/lapack

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.

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, se não mesmo quando algum dos elementos do array for um NaN.

Todos 7 comentários

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.

Esta página foi útil?
0 / 5 - 0 avaliações