当“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中的我想即使任何数组元素是 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中的
我想即使任何数组元素是 NaN