Lapack: [版本 3.9.0] slasq3 中的无限循环

创建于 2020-01-21  ·  7评论  ·  资料来源: Reference-LAPACK/lapack

当“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% 重现。

最有用的评论

您是否碰巧有一个完整的复制器,特别是包含在数组z中的我想即使任何数组元素是 NaN

所有7条评论

你认为这在早期版本中有效吗? AFAIK 至少从 3.7.0 起没有修改任何 slasq 函数。 根据您的描述,它正在循环,因为 TAU 永远不会变得足够小?

你认为这在早期版本中有效吗? AFAIK 至少从 3.7.0 起没有修改任何 slasq 函数。 根据您的描述,它正在循环,因为 TAU 永远不会变得足够小?

抱歉,到目前为止,我只在 3.9.0 上进行了验证,因为这是手头唯一的版本。

您是否碰巧有一个完整的复制器,特别是包含在数组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感谢您报告问题,如果问题再次出现,请返回给我们。
朱利安。

此页面是否有帮助?
0 / 5 - 0 等级