Professor Ripley commented on LAPACK error codes: stat.ethz.ch/pipermail/r-help/2007-March/127702.html and says "Internal LAPACK errors are usually problems with arithmetic accuracy, and as such are compiler- and CPU-specific." Is there a listing for the error codes from Lapack routine 'dsyevr'? Especially I am interested about the meaning and handling of error codes 1 and 2. In Lapack.c I only see the reference to the variable info in certain Fortran code: F77_CALL(dsyevr)(jobv, range, uplo, &n, rx, &n, &vl, &vu, &il, &iu, &abstol, &m, rvalues, rz, &n, isuppz, &tmp, &lwork, &itmp, &liwork, &info); if (info != 0) error(_("error code %d from Lapack routine '%s'"), info, "dsyevr"); lwork = (int) tmp; liwork = itmp; work = (double *) R_alloc(lwork, sizeof(double)); iwork = (int *) R_alloc(liwork, sizeof(int)); F77_CALL(dsyevr)(jobv, range, uplo, &n, rx, &n, &vl, &vu, &il, &iu, &abstol, &m, rvalues, rz, &n, isuppz, work, &lwork, iwork, &liwork, &info); if (info != 0) error(_("error code %d from Lapack routine '%s'"), info, "dsyevr"); [[alternative HTML version deleted]]
And Orlando D?hring writes:> Is there a listing for the error codes from Lapack routine 'dsyevr'?The HTML-ized LAPACK functions are at netlib.org/lapack/explore-html although they may lag behind releases a little bit. The page for dsyevr.f is: netlib.org/lapack/explore-html/dsyevr.f.html And the LAPACK mailing list is at lapack at cs.utk.edu, although as with all such projects, responses may be a *long* time in coming.> Especially I am interested about the meaning and handling of error codes 1 > and 2.The high-level drivers like DSYEVR dispatch to different internal routines depending on what was requested. That makes documenting the error codes a little painful... For some of the routines involved, INFO.eq.1 or 2 implies 1 or 2 entries didn't converge, either when reducing a tridiagonal to diagonal, in bisection, or in inverse iteration. For another, but only if you're requesting the ilo-th through ihi-th eigenvalues, 2 would imply non-monotonic arithmetic, and I would be *very* surprised. So likely something somewhere didn't converge. Picking parameters that *always* converge for eigenvalues is an open problem. Have you tried this on different platforms, or with different BLAS? Can you release the data that causes the problem? Jason
On Wed, 25 Mar 2009, Orlando D?hring wrote:> Professor Ripley commented on LAPACK error codes: > stat.ethz.ch/pipermail/r-help/2007-March/127702.html and says > "Internal LAPACK errors are usually problems with arithmetic accuracy, > and as such are compiler- and CPU-specific." > > Is there a listing for the error codes from Lapack routine 'dsyevr'? > Especially I am interested about the meaning and handling of error codes 1 > and 2. In Lapack.c I only see the reference to the variable info in certain > Fortran code:I read the LAPACK sources: I know of no other documentation. (You seem to have missed the sources, which are part of R.)> F77_CALL(dsyevr)(jobv, range, uplo, &n, rx, &n, &vl, &vu, &il, &iu, > &abstol, &m, rvalues, rz, &n, isuppz, &tmp, &lwork, &itmp, &liwork, &info); > if (info != 0) > error(_("error code %d from Lapack routine '%s'"), info, "dsyevr"); > lwork = (int) tmp; > liwork = itmp; > > work = (double *) R_alloc(lwork, sizeof(double)); > iwork = (int *) R_alloc(liwork, sizeof(int)); > F77_CALL(dsyevr)(jobv, range, uplo, &n, rx, &n, &vl, &vu, &il, &iu, > &abstol, &m, rvalues, rz, &n, isuppz, work, &lwork, iwork, &liwork, &info); > if (info != 0) > error(_("error code %d from Lapack routine '%s'"), info, "dsyevr"); > > [[alternative HTML version deleted]]Overdue to read the posting guide .... -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, stats.ox.ac.uk/~ripley University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595