我有一个通过 R 运行但使用 BLAS 例程的程序。它正确运行了大约 8 次,但随后抛出错误:
BLAS/LAPACK 例程“DGEMV”给出错误代码 -6
这个错误代码是什么意思?
R 将 XERBLA 函数定义为
void F77_NAME(xerbla)(const char *srname, int *info)
{
/* srname is not null-terminated. It should be 6 characters. */
char buf[7];
strncpy(buf, srname, 6);
buf[6] = '\0';
error(_("BLAS/LAPACK routine '%6s' gave error code %d"), buf, -(*info));
}
来自 src/main/print.c 文件。
dgemv.f 的 Netlib 版本显示仅检查输入参数。代码 6 表示 LDA 或 M 参数有问题。
*...
ELSE IF (LDA.LT.MAX(1,M)) THEN
INFO = 6
*...
END IF
IF (INFO.NE.0) THEN
CALL XERBLA('DGEMV ',INFO)
RETURN
所以看起来 R 取了 BLAS 错误代码的负数,我认为这会引起很多混乱。我认为这回答了我的问题,但不是我的问题,因为它在抛出错误之前使用相同的参数多次工作。