From statmobile at gmail.com  Fri Jun 15 04:53:42 2007
From: statmobile at gmail.com (statmobile at gmail.com)
Date: Thu, 14 Jun 2007 22:53:42 -0400
Subject: [Rd] LAPACK Headers
In-Reply-To: <4671C0E0.7010200@cimr.cam.ac.uk>
References: <20070614214558.GA20567@bjl> <4671C0E0.7010200@cimr.cam.ac.uk>
Message-ID: <20070615025342.GA21406@bjl>

On Thu, Jun 14, 2007 at 11:27:44PM +0100, Hin-Tak Leung wrote:
> Try this? (this is on 2.5.0, I don't use 2.4.x anymore)
> 
> #include <R_ext/Lapack.h>
> 

I tried this, but I still get the warning of implicit declaration of
function.  It does compile though.

> Have you actually tried grep dgesv $R_HOME/include/* $R_HOME/include/*/*
> to see which file to include for dgesv ??

Well, when I grep the R source files, I get:

$ find . -name "*" -print | xargs grep -i 'La_dgesv'
./src/main/basedecl.h:SEXP La_dgesv(SEXP, SEXP, SEXP);
./src/main/lapack.c:SEXP La_dgesv(SEXP A, SEXP B, SEXP tol)
./src/main/lapack.c:SEXP La_dgesv(SEXP A, SEXP B, SEXP tol)
./src/main/registration.c:    CALLDEF(La_dgesv, 3),
./src/library/base/R/solve.R:     .Call("La_dgesv", a, b, tol, PACKAGE
= "base")
./src/library/base/R/solve.R:     drop(.Call("La_dgesv", a,
as.matrix(b), tol, PACKAGE = "base")))
./src/modules/lapack/Lapack.c:static SEXP modLa_dgesv(SEXP A, SEXP
Bin, SEXP tolin)
./src/modules/lapack/Lapack.c:    tmp->dgesv = modLa_dgesv;
./src/include/Rmodules/Rlapack.h:typedef SEXP (*Rf_La_dgesv)(SEXP A,
SEXP B, SEXP tol);
./src/include/Rmodules/Rlapack.h:    Rf_La_dgesv dgesv;

So it looks like La_dgesv is declared in basedecl.h, but I don't see
this file anywhere else on my machine.  Maybe I shouldn't be using
this function in my package?



> 
> HTL
> 
> statmobile at gmail.com wrote:
> >Hey Everyone,
> >
> >I'm running R 2.4.0 on Debian etch 4.0, and I'm trying to call some
> >LAPACK functions from the C code in my package.  Actually, to be
> >honest I'm not really having trouble using commands such as La_dgesv
> >from within my C code, but I do get warning when compiling the package
> >saying:
> >
> >***.c: In function '***':
> >***.c:37: warning: implicit declaration of function 'La_dgesv'
> >***.c:37: warning: assignment makes pointer from integer without
> >a cast
> >
> >I tried using:
> >
> >#include <Rmodules/Rlapack.h>
> >
> >but it won't compile the package at all with that included,
> >complaining that
> >
> >***.h:5:30: error: Rmodules/Rlapack.h: No such file or directory
> >
> >Can someone explain to me how I should include the headers to this
> >AWESOME wrapper code to the LAPACK libraries?  Am I not following the
> >proper protocol by using these La_* commands in my package source
> >code?
> >
> >Note, I also have the following in Makevars
> >
> >PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
> >
> >TIA!
> >
> >I initially posted this question on the general list, but I didn't get
> >any responses.
> >
> >______________________________________________
> >R-devel at r-project.org mailing list
> >https://stat.ethz.ch/mailman/listinfo/r-devel
> 

-- 
Brian J. Lopes
PhD Student
Department of Statistics and Operations Research
University of North Carolina at Chapel Hill

To know that we know what we know, and that we do not know what we do
not know, that is true knowledge --Henry David Thoreau (quoting
Confucius): Walden



[Rd] LAPACK Headers
statmobile at gmail.com