1*f7d3a2fdSBarry Smith /* $Id: petscblaslapack.h,v 1.47 2001/08/07 03:05:29 balay Exp bsmith $ */ 2a1e12872SBarry Smith /* 3c0581c19SLois Curfman McInnes This file provides some name space protection from LAPACK and BLAS and 4c0581c19SLois Curfman McInnes allows the appropriate single or double precision version to be used. 5c0581c19SLois Curfman McInnes This file also deals with different Fortran 77 naming conventions on machines. 65392566eSBarry Smith 7217f3c9bSSatish Balay Another problem is character strings are represented differently on 85392566eSBarry Smith on some machines in C and Fortran 77. This problem comes up on the 9633a50d3SSatish Balay Cray T3D/T3E. 105392566eSBarry Smith 11a1e12872SBarry Smith */ 12c3e41550SBarry Smith #if !defined(_BLASLAPACK_H) 13c3e41550SBarry Smith #define _BLASLAPACK_H 14a1e12872SBarry Smith 1519b02663SBarry Smith #include "petsc.h" 16a1e12872SBarry Smith 17bb638ab5SSatish Balay 188e0e00b1SSatish Balay #if defined(PETSC_BLASLAPACK_MKL64_ONLY) 198e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 208e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 218e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRF 228e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRF 238e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRS 248e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRS 25e7906763SSatish Balay #elif defined(PETSC_BLASLAPACK_MKL_ONLY) 26bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 27bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 28ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_CRAY_ONLY) 29bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 30ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_ESSL_ONLY) 31ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GESVD 32ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRF 33ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRS 34ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRF 35ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRS 36bb638ab5SSatish Balay #endif 37bb638ab5SSatish Balay 388f4c8dbaSBarry Smith /* 39633a50d3SSatish Balay This include file on the Cray T3D/T3E defines the interface between 40217f3c9bSSatish Balay Fortran and C representations of character strings. 418f4c8dbaSBarry Smith */ 42f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 4393c39befSBarry Smith #include <fortran.h> 445392566eSBarry Smith #endif 455392566eSBarry Smith 46aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX) 474eeb42bcSBarry Smith 484eeb42bcSBarry Smith /* 494eeb42bcSBarry Smith These are real case with no character string arguments 504eeb42bcSBarry Smith */ 518f4c8dbaSBarry Smith 52f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 538f4c8dbaSBarry Smith /* 548f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 558f4c8dbaSBarry Smith */ 568f4c8dbaSBarry Smith #define DGEQRF SGEQRF 578f4c8dbaSBarry Smith #define DGETRF SGETRF 588f4c8dbaSBarry Smith #define DDOT SDOT 598f4c8dbaSBarry Smith #define DNRM2 SNRM2 608f4c8dbaSBarry Smith #define DSCAL SSCAL 618f4c8dbaSBarry Smith #define DCOPY SCOPY 628f4c8dbaSBarry Smith #define DSWAP SSWAP 638f4c8dbaSBarry Smith #define DAXPY SAXPY 648f4c8dbaSBarry Smith #define DASUM SASUM 658f4c8dbaSBarry Smith #define DSORMQR SORMQR 668f4c8dbaSBarry Smith #define DTRTRS STRTRS 678f4c8dbaSBarry Smith #define DPOTRF SPOTRF 688f4c8dbaSBarry Smith #define DPOTRS SPOTRS 698f4c8dbaSBarry Smith #define DGEMV SGEMV 708f4c8dbaSBarry Smith #define DGETRS SGETRS 718f4c8dbaSBarry Smith #define DGETRS SGETRS 728f4c8dbaSBarry Smith #define DGEMM SGEMM 738f4c8dbaSBarry Smith #define DGESVD SGESVD 74d4fbbf0eSBarry Smith #define DGEEV SGEEV 758f4c8dbaSBarry Smith #define DTRMV STRMV 768f4c8dbaSBarry Smith #define DTRSL STRSL 778f4c8dbaSBarry Smith #endif 788f4c8dbaSBarry Smith 79ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 80c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 815392566eSBarry Smith #define LAgetrf_ dgetrf_ 82c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 83a1e12872SBarry Smith #define BLdot_ ddot_ 84a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 85a1e12872SBarry Smith #define BLscal_ dscal_ 86a1e12872SBarry Smith #define BLcopy_ dcopy_ 87a1e12872SBarry Smith #define BLswap_ dswap_ 88a1e12872SBarry Smith #define BLaxpy_ daxpy_ 89a1e12872SBarry Smith #define BLasum_ dasum_ 90aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 9125fce39dSBarry Smith #define LAgeqrf_ DGEQRF 9225fce39dSBarry Smith #define LAgetrf_ DGETRF 9325fce39dSBarry Smith #define LAgetf2_ DGETF2 9425fce39dSBarry Smith #define BLdot_ DDOT 9525fce39dSBarry Smith #define BLnrm2_ DNRM2 9625fce39dSBarry Smith #define BLscal_ DSCAL 9725fce39dSBarry Smith #define BLcopy_ DCOPY 9825fce39dSBarry Smith #define BLswap_ DSWAP 9925fce39dSBarry Smith #define BLaxpy_ DAXPY 10025fce39dSBarry Smith #define BLasum_ DASUM 10125fce39dSBarry Smith #else 10225fce39dSBarry Smith #define LAgeqrf_ dgeqrf 10325fce39dSBarry Smith #define LAgetrf_ dgetrf 10425fce39dSBarry Smith #define LAgetf2_ dgetf2 10525fce39dSBarry Smith #define BLdot_ ddot 10625fce39dSBarry Smith #define BLnrm2_ dnrm2 10725fce39dSBarry Smith #define BLscal_ dscal 10825fce39dSBarry Smith #define BLcopy_ dcopy 10925fce39dSBarry Smith #define BLswap_ dswap 11025fce39dSBarry Smith #define BLaxpy_ daxpy 11125fce39dSBarry Smith #define BLasum_ dasum 112a1e12872SBarry Smith #endif 113a1e12872SBarry Smith 1144eeb42bcSBarry Smith /* 1154eeb42bcSBarry Smith Real with character string arguments. 1164eeb42bcSBarry Smith */ 117f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 1188f4c8dbaSBarry Smith /* 1198f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 120aa482453SBarry Smith the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 1218f4c8dbaSBarry Smith */ 122*f7d3a2fdSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),_cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 123*f7d3a2fdSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),_cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1248f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 125*f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 126*f7d3a2fdSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k)) 127*f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 128*f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 129*f7d3a2fdSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), _cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 130*f7d3a2fdSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 131*f7d3a2fdSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 1328f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1338f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 134633a50d3SSatish Balay #define LAgetrf_ DGETRF 135ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 13625fce39dSBarry Smith #define LAormqr_ dormqr_ 13725fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 13825fce39dSBarry Smith #define LApotrf_ dpotrf_ 13925fce39dSBarry Smith #define LApotrs_ dpotrs_ 14025fce39dSBarry Smith #define LAgemv_ dgemv_ 14125fce39dSBarry Smith #define LAgetrs_ dgetrs_ 14225fce39dSBarry Smith #define LAtrmv_ dtrmv_ 14325fce39dSBarry Smith #define LAtrsl_ dtrsl_ 14425fce39dSBarry Smith #define BLgemm_ dgemm_ 14525fce39dSBarry Smith #define LAgesvd_ dgesvd_ 14625fce39dSBarry Smith #define LAgeev_ dgeev_ 147aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 148c0534c1cSBarry Smith #define LAormqr_ DORMQR 149c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 150a1e12872SBarry Smith #define LApotrf_ DPOTRF 151a1e12872SBarry Smith #define LApotrs_ DPOTRS 152a1e12872SBarry Smith #define LAgemv_ DGEMV 153a1e12872SBarry Smith #define LAgetrs_ DGETRS 154a1e12872SBarry Smith #define LAtrmv_ DTRMV 155a1e12872SBarry Smith #define LAtrsl_ DTRSL 156af6b99e9SBarry Smith #define LAgesvd_ DGESVD 157d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1584eeb42bcSBarry Smith #define BLgemm_ DGEMM 15925fce39dSBarry Smith #else 160c0534c1cSBarry Smith #define LAormqr_ dormqr 161c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 162a1e12872SBarry Smith #define LApotrf_ dpotrf 163a1e12872SBarry Smith #define LApotrs_ dpotrs 164a1e12872SBarry Smith #define LAgemv_ dgemv 165a1e12872SBarry Smith #define LAgetrs_ dgetrs 166a1e12872SBarry Smith #define LAtrmv_ dtrmv 167a1e12872SBarry Smith #define LAtrsl_ dtrsl 1684eeb42bcSBarry Smith #define BLgemm_ dgemm 169af6b99e9SBarry Smith #define LAgesvd_ dgesvd 170d4fbbf0eSBarry Smith #define LAgeev_ dgeev 171a1e12872SBarry Smith #endif 172a1e12872SBarry Smith 173a1e12872SBarry Smith #else 1744eeb42bcSBarry Smith /* 1754eeb42bcSBarry Smith Complex with no character string arguments 1764eeb42bcSBarry Smith */ 177f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 1788f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1798f4c8dbaSBarry Smith #define ZDOTC CDOTC 1808f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1818f4c8dbaSBarry Smith #define ZSCAL CSCAL 1828f4c8dbaSBarry Smith #define ZCOPY CCOPY 1838f4c8dbaSBarry Smith #define ZSWAP CSWAP 1848f4c8dbaSBarry Smith #define ZAXPY CAXPY 1858f4c8dbaSBarry Smith #define DZASUM SCASUM 1868f4c8dbaSBarry Smith #define ZGETRF CGETRF 1878f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 1888f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 1898f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 1908f4c8dbaSBarry Smith #define ZGEMV CGEMV 1918f4c8dbaSBarry Smith #define ZGETRS CGETRS 1928f4c8dbaSBarry Smith #define ZGEMM SGEMM 1938f4c8dbaSBarry Smith #define ZTRMV CTRMV 194160814fdSSatish Balay #define ZTRSL CTRSL 195633a50d3SSatish Balay #define ZGEEV CGEEV 1968f4c8dbaSBarry Smith #endif 1978f4c8dbaSBarry Smith 198ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 199c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2005392566eSBarry Smith #define LAgetrf_ zgetrf_ 20108d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 202a1e12872SBarry Smith #define BLdot_ zdotc_ 203a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 204a1e12872SBarry Smith #define BLscal_ zscal_ 205a1e12872SBarry Smith #define BLcopy_ zcopy_ 206a1e12872SBarry Smith #define BLswap_ zswap_ 207a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 208a1e12872SBarry Smith #define BLasum_ dzasum_ 209aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 21025fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 21125fce39dSBarry Smith #define BLdot_ ZDOTC 21225fce39dSBarry Smith #define BLnrm2_ DZNRM2 21325fce39dSBarry Smith #define BLscal_ ZSCAL 21425fce39dSBarry Smith #define BLcopy_ ZCOPY 21525fce39dSBarry Smith #define BLswap_ ZSWAP 21625fce39dSBarry Smith #define BLaxpy_ ZAXPY 21725fce39dSBarry Smith #define BLasum_ DZASUM 21825fce39dSBarry Smith #define LAgetrf_ ZGETRF 21925fce39dSBarry Smith #else 22025fce39dSBarry Smith #define LAgeqrf_ zgeqrf 22125fce39dSBarry Smith #define LAgetrf_ zgetrf 22225fce39dSBarry Smith #define LAgetf2_ zgetf2 22325fce39dSBarry Smith #define BLdot_ zdotc 22425fce39dSBarry Smith #define BLnrm2_ dznrm2 22525fce39dSBarry Smith #define BLscal_ zscal 22625fce39dSBarry Smith #define BLcopy_ zcopy 22725fce39dSBarry Smith #define BLswap_ zswap 22825fce39dSBarry Smith #define BLaxpy_ zaxpy 22925fce39dSBarry Smith #define BLasum_ dzasum 230a1e12872SBarry Smith #endif 231a1e12872SBarry Smith 232f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 233*f7d3a2fdSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),_cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 2348f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 235*f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 236*f7d3a2fdSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k)) 237*f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 238*f7d3a2fdSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 239*f7d3a2fdSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 240*f7d3a2fdSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 2418f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2428f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 243ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 24425fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 24525fce39dSBarry Smith #define LApotrf_ zpotrf_ 24625fce39dSBarry Smith #define LApotrs_ zpotrs_ 24725fce39dSBarry Smith #define LAgemv_ zgemv_ 24825fce39dSBarry Smith #define LAgetrs_ zgetrs_ 24925fce39dSBarry Smith #define LAtrmv_ ztrmv_ 25025fce39dSBarry Smith #define LAtrsl_ ztrsl_ 25125fce39dSBarry Smith #define BLgemm_ zgemm_ 25225fce39dSBarry Smith #define LAgesvd_ zgesvd_ 25325fce39dSBarry Smith #define LAgeev_ zgeev_ 254aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 255c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 256a1e12872SBarry Smith #define LApotrf_ ZPOTRF 257a1e12872SBarry Smith #define LApotrs_ ZPOTRS 258a1e12872SBarry Smith #define LAgemv_ ZGEMV 259a1e12872SBarry Smith #define LAgetrf_ ZGETRF 26008d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 261a1e12872SBarry Smith #define LAgetrs_ ZGETRS 262a1e12872SBarry Smith #define LAtrmv_ ZTRMV 263a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2645a778de9SBarry Smith #define BLgemm_ ZGEMM 265d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 266d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 26725fce39dSBarry Smith #else 268c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 269a1e12872SBarry Smith #define LApotrf_ zpotrf 270a1e12872SBarry Smith #define LApotrs_ zpotrs 271a1e12872SBarry Smith #define LAgemv_ zgemv 272a1e12872SBarry Smith #define LAgetrs_ zgetrs 273a1e12872SBarry Smith #define LAtrmv_ ztrmv 274a1e12872SBarry Smith #define LAtrsl_ ztrsl 2755a778de9SBarry Smith #define BLgemm_ zgemm 276d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 277d4fbbf0eSBarry Smith #define LAgeev_ zgeev 278a1e12872SBarry Smith #endif 279a1e12872SBarry Smith 280a1e12872SBarry Smith #endif 281a1e12872SBarry Smith 282fb2e594dSBarry Smith EXTERN_C_BEGIN 283a1e12872SBarry Smith 2848f4c8dbaSBarry Smith /* 2858f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 2868f4c8dbaSBarry Smith handle returing a double complex to C++. 287126c565eSBarry Smith */ 28887828ca2SBarry Smith EXTERN double BLdot_(int*,PetscScalar*,int*,PetscScalar*,int*); 289*f7d3a2fdSBarry Smith EXTERN double BLnrm2_(int*,PetscScalar*,int*); 290*f7d3a2fdSBarry Smith EXTERN double BLasum_(int*,PetscScalar*,int*); 29187828ca2SBarry Smith EXTERN void BLscal_(int*,PetscScalar*,PetscScalar*,int*); 29287828ca2SBarry Smith EXTERN void BLcopy_(int*,PetscScalar*,int*,PetscScalar*,int*); 29387828ca2SBarry Smith EXTERN void BLswap_(int*,PetscScalar*,int*,PetscScalar*,int*); 29487828ca2SBarry Smith EXTERN void BLaxpy_(int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*); 29587828ca2SBarry Smith EXTERN void LAgetrf_(int*,int*,PetscScalar*,int*,int*,int*); 29687828ca2SBarry Smith EXTERN void LAgetf2_(int*,int*,PetscScalar*,int*,int*,int*); 29787828ca2SBarry Smith EXTERN void LAgeqrf_(int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*); 2985392566eSBarry Smith 299f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 300112a2221SBarry Smith 301aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 30287828ca2SBarry Smith EXTERN void ZPOTRF(_fcd,int*,PetscScalar*,int*,int*); 303*f7d3a2fdSBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 30487828ca2SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 30587828ca2SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 306*f7d3a2fdSBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 307*f7d3a2fdSBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,double*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 308*f7d3a2fdSBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 3095392566eSBarry Smith #else 31087828ca2SBarry Smith EXTERN void DPOTRF(_fcd,int*,PetscScalar*,int*,int*); 311*f7d3a2fdSBarry Smith EXTERN void DGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 31287828ca2SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 31387828ca2SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 314*f7d3a2fdSBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 315*f7d3a2fdSBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 316*f7d3a2fdSBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 317112a2221SBarry Smith #endif 318112a2221SBarry Smith 319112a2221SBarry Smith #else 320*f7d3a2fdSBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 321*f7d3a2fdSBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 32287828ca2SBarry Smith EXTERN void LApotrf_(char*,int*,PetscScalar*,int*,int*); 323*f7d3a2fdSBarry Smith EXTERN void LAgemv_(char*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 32487828ca2SBarry Smith EXTERN void LApotrs_(char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 32587828ca2SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 326*f7d3a2fdSBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 327e38aa075SLois Curfman McInnes 328e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 329aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 33087828ca2SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,double*,int*); 331*f7d3a2fdSBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 332aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 33387828ca2SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,double*,int*); 334*f7d3a2fdSBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 335aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 336*f7d3a2fdSBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,double*,double*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 337*f7d3a2fdSBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 338d4fbbf0eSBarry Smith #else 339*f7d3a2fdSBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 340*f7d3a2fdSBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 341d4fbbf0eSBarry Smith #endif 3425392566eSBarry Smith #endif 343a1e12872SBarry Smith 344fb2e594dSBarry Smith EXTERN_C_END 345a1e12872SBarry Smith 346a1e12872SBarry Smith #endif 3475a778de9SBarry Smith 348