Dear All,
Under Debian GNU/Linux La.svd (with method = "dgesdd") sometimes gives the
error
"Error in La.svd(data, nu = 0, nv = min(nrow, ncol), method = "dgesdd") :
LAPACK routine DGESDD gave error code -12"
It seems not to depend on the data per se, but on the relationship between
numbers of rows and columns.
For example, if the number of columns is 100, La.svd will fail when
the number of rows is 56, but not if it is 55 or 57. It will not fail
if we use "dgesvd". If the number of columns is 51, La.svd fails when
the number of rows is between 29 and 50 if we use "dgesdd".
This happens if I use the latest deb packages (and thus ATLAS,
etc). It does not happen if I build R in this same machine with
"--without-blas" (where make check reports no errors). In case it
matters, the bug does not show up in a different machine with Windwos
2000 and the Rblas.dll linked against ATLAS provided in
http://cran.r-project.org/bin/windows/contrib/ATLAS/P4).
I understand this is probably related to the issues mentioned in
R-admin about LAPACK 3.0 and some of the issues recently discussed in
this list by M. Burger, D. Bates and D. Eddelbuettel. Are there any
workarounds (besides not using ATLAS at all?).
********************************
An example of failure:
## ncol = 100
nrow <- 56
ncol <- 100
data <- matrix(1:(nrow * ncol), ncol = ncol)
## you get the errors if you use any other data
## such as data <- matrix(rnorm(nrow * ncol), ncol = ncol)
svd(data) ## error
La.svd(data, nu = 0,
nv = min(nrow, ncol), method = "dgesdd") ## error
nv = min(nrow, ncol), method = "dgesvd") ## OK
##ncol = 51; it fails with nrow in [29, 50]
*************************