Rev 88860 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
-*-markdown-*-The Fortran routines here were extracted from LAPACK 3.1.0, then3.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,3.10.0 3.10.1 3.11.0 3.12.0 3.12.1(Sources from https://www.netlib.org/lapack and mirrors).NB: The NEWS for R 4.5.0 accnounced the intention never to update thiscollection: an external BLAS/LAPACK is preferred and is likely to berequired in the near future.dlapack.f contains support routines for `real' LAPACK calls.cmplx.f contains support routines for LAPACK calls from complexarithmetic routines, that are only used if COMPLEX*16 is supported bythe 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-----------For 3.11.0 SRC/dlatrs.f needed patching for gfortran 12: see R.patch.No longer needed for 3.12.0.The original release of 3.12.1 had the wrong version in llaver.f andneeds ediitng.dlapack.f and cmplx.f were created at the top level in the LAPACK3.x.y sources by copying {dble,cmplx}.txt there and running in R```{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') ## may give warningsSys.setlocale("LC_COLLATE", "C")## system("cat dble/* > dlapack.f") #-- a version that *sorts* correctly:system(paste("cat", paste0(list.files("dble", full.names=TRUE), collapse=" "), "> dlapack.f"))dir.create('cmplx')foo <- scan('cmplx.txt', "")table( file.copy(file.path("SRC", foo), 'cmplx') ) # all TRUE !?Sys.setlocale("LC_COLLATE", "C")## system("cat cmplx/* > cmplx.f") #-- a version that *sorts* correctly:system(paste("cat", paste0(list.files("cmplx", full.names=TRUE), collapse=" "), "> cmplx.f"))```Then in the terminalcat INSTALL/droundup_lwork.f >> dlapack.fIf you update the LAPACK version, you need to copy over the LICENSEfile 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.la_xisnan.f90 was created bycpp SRC/la_xisnan.F90 > la_xisnan.f90New LAPACK versions (even point releases) often add new auxiliaryroutines, and these can be hard to track down. We found it helpful tocompare the outputs ofnm -g dlapack.o | grep ' T ' | cut -b20-nm -g dlapack.o | grep ' U ' | cut -b20-before and after updating (ditto for cmplx.o). (This may needadjusting for your platform's nm.)Lnx Fedora 38 (2024-02-06), for `cmplx.o`; old version renamed to `complx.o_1`:```{sh}nm -g cmplx.o | grep ' U ' | cut -b20- > cmplx_U_newnm -g cmplx.o | grep ' T ' | cut -b20- > cmplx_T_newnm -g cmplx.o_1 | grep ' T ' | cut -b20- > cmplx_T_1nm -g cmplx.o_1 | grep ' U ' | cut -b20- > cmplx_U_1diff cmplx_U_1 cmplx_U_new## shows newly needed auxiliary routines - incl one from BLAS (which needs *no* action)diff cmplx_T_1 cmplx_T_new## shows the newly added routines (by yourself, i.e., via cmplx.txt)```History-------zlahr2 zlaqr0 zlaqr1 zlaqr2 zlaqr3 zlaqr4 zlaqr5 zlartg zpotf2 zpotrfzrot ztrexcwere added in R 2.5.0.izmax1 zdrscl zgecon zlacn2 zlantr ztrconwere added in R 2.7.0.dzsum1 ilazlc ilazlr zunmhrwere added in R 2.15.2.zgelsd zgesdd zlacp2 zlacrm zlals0 zlalsa zlalsd zlarcmwere added in R 3.1.0.zgeequ zgees zgels zgerfs zgesc2 zgesvx zgetc2 zgetri zggbak zggbalzgges zggev zgghrd zheevd zhgeqz zlaed0 zlaed7 zlaed8 zlaqge zlasyfzlatdf zlauu2 zlauum zpotri zstedc zsymv zsyr zsytf2 zsytrf zsytriztgevc ztgex2 ztgexc ztgsen ztgsy2 ztgsyl ztrsen ztrsyl ztrti2 ztrtrizunm2l zunmql zunmtrwere added in R 3.3.0 for use by a CRAN package.dbdsvdx dgesvdx dgetrf2 dgges3 dggev3 dgghd3 dggsvd3 dggsvp3 dorm22 dpotrf2zgetrf2 zpotrf2were 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.dcombssq.f was patched in R 3.6.3 (see the R-admin manual): that patchis now in the main distribution.Patches from LAPACK 3.9.0 to 3.10.0 were applied for R 4.2.0 but notthe new .f90 files replacing dlartg.f dlassq.f zlartg.f zlassq.fThose 4 routines were replaced by their .f90 versions in R 4.3.0.### R 4.2.2 addedzgbcon zgbequ zgbrfs zgbsv zgbsvx zgbtf2 zgbtrf zgbtrs zgeevx zgtconzgtrfs zgtsv zgtsvx zgttrf zgttrs zgtts2 zlagtm zlangb zlangt zlansyzlantb zlaqgb zlaqhe zlatbs zpbtf2 zpbtrf zpocon zpoequ zporfs zposvzposvx zpotrs zpstf2 zpstrf ztrsnafor recent RcppArmadillo with LLVM clang 15.### R 4.4.0 addedzrscl needed for zgetf2 in 3.12.0zlansp zlantp zlatps zppcon zpptrf zpptri zpptrs zspconzspr zsptrf zsptri zsptrs zsycon zsytrs ztpcon ztptri ztptrszhecon zhetrf zhetri zhetrszhpcon zhptrf zhptri zhptrs zlanhpplus zspmv for BLASat the request of the Matrix maintainers### R 4.5.0 addeddlarf1f dlarf1l zlarf1f zlarf1l added for 3.12.1and dgemmtr and zgemmtr to BLAS. These have not been added tosrc/incclude/R_ext/{BLAS,LAPACK}.hWe still include the deprecated (in LAPACK 3.6.0) subroutines in filesDEPRECATED/dgegv.f DEPRECATED/dgeqpf.f DEPRECATED/dggsvd.f DEPRECATED/dggsvp.fDEPRECATED/dgegs.f DEPRECATED/dgelsx.f DEPRECATED/dlahrd.f DEPRECATED/dlatzm.fDEPRECATED/dtzrqf.fIf you change this, alter `../../include/R_ext/Lapack.h` accordingly:it documents those in the first line.-------------------------------------------------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.hidesrc/include/R_ext/Lapack.hsrc/include/Rmodules/Rlapack.hsrc/main/basedecl.hsrc/main/lapack.csrc/main/registration.csrc/modules/lapack/Lapack.csrc/modules/lapack/Lapack.hsrc/modules/lapack/cmplx.f or dlapack.f