aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreschnett <eschnett@c7ba4c71-c2f2-49b2-85d5-cb7b5f04bdfb>2014-12-30 18:40:27 +0000
committereschnett <eschnett@c7ba4c71-c2f2-49b2-85d5-cb7b5f04bdfb>2014-12-30 18:40:27 +0000
commitc8695990bf7154264f87d790f5e3b472923f72e8 (patch)
treec1a4e217c7c33e372279b829f9c2bc668028245d
parentae2760e7f4c8387eea90980856710e29b7991c96 (diff)
Add some interfaces for LAPACK routines
git-svn-id: http://svn.cactuscode.org/projects/ExternalLibraries/LAPACK/trunk@55 c7ba4c71-c2f2-49b2-85d5-cb7b5f04bdfb
-rw-r--r--src/lapack.F90208
-rw-r--r--src/make.code.defn2
2 files changed, 209 insertions, 1 deletions
diff --git a/src/lapack.F90 b/src/lapack.F90
new file mode 100644
index 0000000..e330c7f
--- /dev/null
+++ b/src/lapack.F90
@@ -0,0 +1,208 @@
+module lapack
+ implicit none
+
+ integer, parameter :: izero = 0
+ integer, parameter :: blas_integer_kind = kind(izero)
+
+ interface geev
+ SUBROUTINE SGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, &
+ LDVR, WORK, LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
+ REAL A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), &
+ WI( * ), WORK( * ), WR( * )
+ END SUBROUTINE SGEEV
+
+ SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, &
+ LDVR, WORK, LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
+ DOUBLE PRECISION A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), &
+ WI( * ), WORK( * ), WR( * )
+ END SUBROUTINE DGEEV
+
+ SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, &
+ WORK, LWORK, RWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
+ REAL RWORK( * )
+ COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), &
+ W( * ), WORK( * )
+ END SUBROUTINE CGEEV
+
+ SUBROUTINE ZGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, &
+ WORK, LWORK, RWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER JOBVL, JOBVR
+ INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
+ DOUBLE PRECISION RWORK( * )
+ COMPLEX*16 A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), &
+ W( * ), WORK( * )
+ END SUBROUTINE ZGEEV
+ end interface geev
+
+ interface gesv
+ SUBROUTINE SGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, LDB, N, NRHS
+ INTEGER IPIV( * )
+ REAL A( LDA, * ), B( LDB, * )
+ END SUBROUTINE SGESV
+
+ SUBROUTINE DGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, LDB, N, NRHS
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+ END SUBROUTINE DGESV
+
+ SUBROUTINE CGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, LDB, N, NRHS
+ INTEGER IPIV( * )
+ COMPLEX A( LDA, * ), B( LDB, * )
+ END SUBROUTINE CGESV
+
+ SUBROUTINE ZGESV( N, NRHS, A, LDA, IPIV, B, LDB, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, LDB, N, NRHS
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+ END SUBROUTINE ZGESV
+ end interface gesv
+
+ interface getrf
+ SUBROUTINE SGETRF( M, N, A, LDA, IPIV, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, M, N
+ INTEGER IPIV( * )
+ REAL A( LDA, * )
+ END SUBROUTINE SGETRF
+
+ SUBROUTINE DGETRF( M, N, A, LDA, IPIV, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, M, N
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * )
+ END SUBROUTINE DGETRF
+
+ SUBROUTINE CGETRF( M, N, A, LDA, IPIV, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, M, N
+ INTEGER IPIV( * )
+ COMPLEX A( LDA, * )
+ END SUBROUTINE CGETRF
+
+ SUBROUTINE ZGETRF( M, N, A, LDA, IPIV, INFO )
+ IMPLICIT NONE
+ INTEGER INFO, LDA, M, N
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * )
+ END SUBROUTINE ZGETRF
+ end interface getrf
+
+ interface posv
+ SUBROUTINE SPOSV( UPLO, N, NRHS, A, LDA, B, LDB, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+ REAL A( LDA, * ), B( LDB, * )
+ END SUBROUTINE SPOSV
+
+ SUBROUTINE DPOSV( UPLO, N, NRHS, A, LDA, B, LDB, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * )
+ END SUBROUTINE DPOSV
+
+ SUBROUTINE CPOSV( UPLO, N, NRHS, A, LDA, B, LDB, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+ COMPLEX A( LDA, * ), B( LDB, * )
+ END SUBROUTINE CPOSV
+
+ SUBROUTINE ZPOSV( UPLO, N, NRHS, A, LDA, B, LDB, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, N, NRHS
+ COMPLEX*16 A( LDA, * ), B( LDB, * )
+ END SUBROUTINE ZPOSV
+ end interface posv
+
+ interface sysv
+ SUBROUTINE SSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, &
+ LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, LWORK, N, NRHS
+ INTEGER IPIV( * )
+ REAL A( LDA, * ), B( LDB, * ), WORK( * )
+ END SUBROUTINE SSYSV
+
+ SUBROUTINE DSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, &
+ LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, LWORK, N, NRHS
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), B( LDB, * ), WORK( * )
+ END SUBROUTINE DSYSV
+
+ SUBROUTINE CSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, &
+ LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, LWORK, N, NRHS
+ INTEGER IPIV( * )
+ COMPLEX A( LDA, * ), B( LDB, * ), WORK( * )
+ END SUBROUTINE CSYSV
+
+ SUBROUTINE ZSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, &
+ LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LDB, LWORK, N, NRHS
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * )
+ END SUBROUTINE ZSYSV
+ end interface sysv
+
+ interface sytrf
+ SUBROUTINE SSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+ INTEGER IPIV( * )
+ REAL A( LDA, * ), WORK( * )
+ END SUBROUTINE SSYTRF
+
+ SUBROUTINE DSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+ INTEGER IPIV( * )
+ DOUBLE PRECISION A( LDA, * ), WORK( * )
+ END SUBROUTINE DSYTRF
+
+ SUBROUTINE CSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+ INTEGER IPIV( * )
+ COMPLEX A( LDA, * ), WORK( * )
+ END SUBROUTINE CSYTRF
+
+ SUBROUTINE ZSYTRF( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
+ IMPLICIT NONE
+ CHARACTER UPLO
+ INTEGER INFO, LDA, LWORK, N
+ INTEGER IPIV( * )
+ COMPLEX*16 A( LDA, * ), WORK( * )
+ END SUBROUTINE ZSYTRF
+ end interface sytrf
+ end module lapack
diff --git a/src/make.code.defn b/src/make.code.defn
index 4e6894d..420894f 100644
--- a/src/make.code.defn
+++ b/src/make.code.defn
@@ -1,7 +1,7 @@
# Main make.code.defn file for thorn LAPACK
# Source files in this directory
-SRCS =
+SRCS = lapack.F90
# Subdirectories containing source files
SUBDIRS =