Greg Tarpinian
2004-Mar-26 20:46 UTC
[R] SUMMARY: Using R's LAPACK & Related files in Visual C++
The following were the replies to my question about using R's LAPACK and other .h files in some of my C programs. From what was said, it appears that buying a ready-made library (MKL = $200, for example) or using CLapack according to the Shumway lecture notes are the best approaches: -------------------------------->From Andy Liaw:(1) If you just want linear algebra routines in your C code, you should really look elsewhere. You could, for example, check out Intel's Math Kernel Library. (It used to be a free download. Not sure if that's still the case.) (2) Googling `calling lapack from C', I also found: http://physics.asu.edu/phy502-shumway/notes/lec11.html -------------------------------->From Timur Elzhov:AFAIK, R uses native FORTRAN l(a,in)pack codes :) Try it, I guess you'll be able to call their functions, this way: void dposl_(double*, int*, int*, double*); //for `dposl' Fortran function Note underscore `_' under function name! ;) -------------------------------->From Douglas Bates:R's include files BLAS.h, Linpack.h, and Lapack.h all contain #include <R_ext/RS.h> which defines portable macros F77_CALL that add the underscore when necessary. The reliable way to use these routines in C is as F77_CALL(dposl)(A, &n, &n, x); where A is a pointer to the matrix, stored in Fortran-like column major order, and x is a pointer to the right hand side. Note that the integer n must be passed by address because of Fortran calling conventions. The Lapack functions defined in Lapack.h can be called from within C routines in R packages but you should include a file Makevars that defines PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) Calling Lapack functions from standalone code is more complicated.
Apparently Analagous Threads
- Using R's LAPACK & Related files in Visual C++
- Unexplained difference between results of dppsv and dpotri LAPACK routines
- Unexplained difference between results of dppsv and dpotri LAPACK routines
- Listing of LAPACK error codes
- calling Lapack and BLAS routines from C