Какво означава BLAS DGEMV код за грешка -6?

Имам програма, която работи през R, но използва рутинните процедури BLAS. Той преминава правилно около 8 пъти, но след това извежда грешка:

BLAS/LAPACK рутина 'DGEMV' даде код на грешка -6

Какво означава този код за грешка?


person Andrew Redd    schedule 16.06.2010    source източник


Отговори (2)


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.

Netlib версията на dgemv.f показва, че се проверяват само входните параметри. Код 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, което според мен причинява много объркване. Мисля, че това отговаря на въпроса ми, но не и на моя проблем, тъй като работи няколко пъти с едни и същи параметри, преди да бъде изведена грешката.

person Andrew Redd    schedule 16.06.2010

DGEMV не връща никакви кодове за грешка.

Тази бъг предполага, че грешката идва от самия R.

Може би трябва да подадете сигнал за грешка срещу R.

person Kevin Panko    schedule 16.06.2010
comment
BLAS има манипулатор на грешки, наречен XERBLA. R презаписва XERBLA, за да предаде съобщения за грешка. Грешката се извиква от променливата info, от това, което виждам. - person Andrew Redd; 17.06.2010
comment
Изглежда, че имаш отговора там. - person Kevin Panko; 17.06.2010