| The Fortran routines here were extracted from LAPACK 3.1.0, then | |
| 3.1.1, 3.4.1, 3.4.2, 3.5.0, 3.6.0, 3.6.1, 3.7.0, 3.7.1, 3.8.0, 3.9.0 | |
| (Sources from http://www.netlib.org/lapack and mirrors). | |
| dlapack.f contains support routines for `real' LAPACK calls. | |
| cmplx.f contains support routines for LAPACK calls from complex | |
| arithmetic routines, that are only used if COMPLEX*16 is supported by | |
| the Fortran compiler and compatible with the Rcomplex type. | |
| Neither will be compiled if an external LAPACK is used. | |
| We have tried to avoid including any single-precision routines. | |
| Preparation | |
| ----------- | |
| dlapack.f and cmplx.f were created at the top level in the LAPACK | |
| 3.9.0 sources by copying {dble,cmplx}.txt there and running in R | |
| dir.create('dble') | |
| foo <- scan('dble.txt', "") | |
| file.copy(file.path("SRC", foo), 'dble') | |
| file.copy(file.path("INSTALL", 'ilaver.f'), 'dble') | |
| system('cpp SRC/iparam2stage.F > dble/iparam2stage.f') | |
| system("cat dble/* > dlapack.f") | |
| dir.create('cmplx') | |
| foo <- scan('cmplx.txt', "") | |
| file.copy(file.path("SRC", foo), 'cmplx') | |
| system("cat cmplx/* > cmplx.f") | |
| If you update the LAPACK version, you need to copy over the LICENSE | |
| file and update it in doc/COPYRIGHTS. And if you patch the sources, | |
| *DO* mention it here and add the patch to a file R.patch (not | |
| currently used). | |
| New LAPACK versions (even point releases) often add new auxiliary | |
| routines, and these can be hard to track down. We found it helpful to | |
| compare the outputs of | |
| nm -g dlapack.o | grep ' T ' | cut -b20- | |
| nm -g dlapack.o | grep ' U ' | cut -b20- | |
| before and after upating (ditto for cmplx.o). (This may need | |
| adjusting for your platform's nm.) | |
| History | |
| ------- | |
| zlahr2 zlaqr0 zlaqr1 zlaqr2 zlaqr3 zlaqr4 zlaqr5 zlartg zpotf2 zpotrf | |
| zrot ztrexc | |
| were added in R 2.5.0. | |
| izmax1 zdrscl zgecon zlacn2 zlantr ztrcon | |
| were added in R 2.7.0. | |
| dzsum1 ilazlc ilazlr zunmhr | |
| were added in R 2.15.2. | |
| zgelsd zgesdd zlacp2 zlacrm zlals0 zlalsa zlalsd zlarcm | |
| were added in R 3.1.0. | |
| zgeequ zgees zgels zgerfs zgesc2 zgesvx zgetc2 zgetri zggbak zggbal | |
| zgges zggev zgghrd zheevd zhgeqz zlaed0 zlaed7 zlaed8 zlaqge zlasyf | |
| zlatdf zlauu2 zlauum zpotri zstedc zsymv zsyr zsytf2 zsytrf zsytri | |
| ztgevc ztgex2 ztgexc ztgsen ztgsy2 ztgsyl ztrsen ztrsyl ztrti2 ztrtri | |
| zunm2l zunmql zunmtr | |
| were added in R 3.3.0 for use by a CRAN package. | |
| dbdsvdx dgesvdx dgetrf2 dgges3 dggev3 dgghd3 dggsvd3 dggsvp3 dorm22 dpotrf2 | |
| zgetrf2 zpotrf2 | |
| were new in LAPACK 3.6.0 and added in R 3.3.0. | |
| dtrevc3 and ztrevc3 were new in LAPACK 3.6.1 and added in R 3.4.0. | |
| ------------------------------------------------- | |
| For 'base' R addition of a new .Call()able Lapack routine, | |
| all these files must be updated {path relative to R's topdir}: | |
| src/gnuwin32/Rdll.hide | |
| src/include/R_ext/Lapack.h | |
| src/include/Rmodules/Rlapack.h | |
| src/main/basedecl.h | |
| src/main/lapack.c | |
| src/main/registration.c | |
| src/modules/lapack/Lapack.c | |
| src/modules/lapack/Lapack.h | |
| src/modules/lapack/cmplx.f or dlapack.f |