From hornik at ci.tuwien.ac.at  Tue Apr 22 21:15:19 2003
From: hornik at ci.tuwien.ac.at (Kurt Hornik)
Date: Tue Apr 22 20:18:14 2003
Subject: [Rd] 
	"LAPACK routine DGESDD gave error code -12" with Debian (PR#2822)
In-Reply-To: <200304221807.h3MI7apD014611@pubhealth.ku.dk>
References: <200304221807.h3MI7apD014611@pubhealth.ku.dk>
Message-ID: <16037.34487.349521.950443@mithrandir.hornik.net>

>>>>> rdiaz  writes:

> 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?).

> Ram?n

> ********************************
> 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
>> La.svd(data, nu = 0,
>              nv = min(nrow, ncol), method = "dgesvd") ## OK

>> ##ncol = 51; it fails with nrow in [29, 50]
> *************************

Confirmed on Debian GNU/Linux testing with atlas2-base-dev for both the
current 1.7.0 debs and 1.8.0 built from scratch using --with-lapack:

hornik@mithrandir:~/tmp$ ldd /usr/local/lib/R/modules/lapack.so 
        libR.so => not found
        liblapack.so.2 => /usr/lib/atlas/liblapack.so.2 (0x40013000)

-k


[Rd] "LAPACK routine DGESDD gave error code -12" with Debian (PR#2822)
Kurt Hornik