1*87828ca2SBarry Smith /* $Id: petscblaslapack.h,v 1.45 2001/05/10 18:08:30 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 */ 1228f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),\ 123bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 1248f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 125c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1268f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1278f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1285392566eSBarry Smith (f),(g),(h)) 1298f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1305392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1318f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1325392566eSBarry Smith (f),(g),(h),(i)) 1338f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1344eeb42bcSBarry Smith (f),(g),(h),(i)) 1358f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \ 1364eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 1374eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 13821c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \ 139af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 14021c89e3eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 141d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \ 142d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 143d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 1448f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1458f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 146633a50d3SSatish Balay #define LAgetrf_ DGETRF 147ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 14825fce39dSBarry Smith #define LAormqr_ dormqr_ 14925fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 15025fce39dSBarry Smith #define LApotrf_ dpotrf_ 15125fce39dSBarry Smith #define LApotrs_ dpotrs_ 15225fce39dSBarry Smith #define LAgemv_ dgemv_ 15325fce39dSBarry Smith #define LAgetrs_ dgetrs_ 15425fce39dSBarry Smith #define LAtrmv_ dtrmv_ 15525fce39dSBarry Smith #define LAtrsl_ dtrsl_ 15625fce39dSBarry Smith #define BLgemm_ dgemm_ 15725fce39dSBarry Smith #define LAgesvd_ dgesvd_ 15825fce39dSBarry Smith #define LAgeev_ dgeev_ 159aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 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 168af6b99e9SBarry Smith #define LAgesvd_ DGESVD 169d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1704eeb42bcSBarry Smith #define BLgemm_ DGEMM 17125fce39dSBarry Smith #else 172c0534c1cSBarry Smith #define LAormqr_ dormqr 173c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 174a1e12872SBarry Smith #define LApotrf_ dpotrf 175a1e12872SBarry Smith #define LApotrs_ dpotrs 176a1e12872SBarry Smith #define LAgemv_ dgemv 177a1e12872SBarry Smith #define LAgetrs_ dgetrs 178a1e12872SBarry Smith #define LAtrmv_ dtrmv 179a1e12872SBarry Smith #define LAtrsl_ dtrsl 1804eeb42bcSBarry Smith #define BLgemm_ dgemm 181af6b99e9SBarry Smith #define LAgesvd_ dgesvd 182d4fbbf0eSBarry Smith #define LAgeev_ dgeev 183a1e12872SBarry Smith #endif 184a1e12872SBarry Smith 185a1e12872SBarry Smith #else 1864eeb42bcSBarry Smith /* 1874eeb42bcSBarry Smith Complex with no character string arguments 1884eeb42bcSBarry Smith */ 189f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 1908f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1918f4c8dbaSBarry Smith #define ZDOTC CDOTC 1928f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1938f4c8dbaSBarry Smith #define ZSCAL CSCAL 1948f4c8dbaSBarry Smith #define ZCOPY CCOPY 1958f4c8dbaSBarry Smith #define ZSWAP CSWAP 1968f4c8dbaSBarry Smith #define ZAXPY CAXPY 1978f4c8dbaSBarry Smith #define DZASUM SCASUM 1988f4c8dbaSBarry Smith #define ZGETRF CGETRF 1998f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 2008f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 2018f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 2028f4c8dbaSBarry Smith #define ZGEMV CGEMV 2038f4c8dbaSBarry Smith #define ZGETRS CGETRS 2048f4c8dbaSBarry Smith #define ZGEMM SGEMM 2058f4c8dbaSBarry Smith #define ZTRMV CTRMV 206160814fdSSatish Balay #define ZTRSL CTRSL 207633a50d3SSatish Balay #define ZGEEV CGEEV 2088f4c8dbaSBarry Smith #endif 2098f4c8dbaSBarry Smith 210ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 211c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2125392566eSBarry Smith #define LAgetrf_ zgetrf_ 21308d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 214a1e12872SBarry Smith #define BLdot_ zdotc_ 215a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 216a1e12872SBarry Smith #define BLscal_ zscal_ 217a1e12872SBarry Smith #define BLcopy_ zcopy_ 218a1e12872SBarry Smith #define BLswap_ zswap_ 219a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 220a1e12872SBarry Smith #define BLasum_ dzasum_ 221aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 22225fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 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 23025fce39dSBarry Smith #define LAgetrf_ ZGETRF 23125fce39dSBarry Smith #else 23225fce39dSBarry Smith #define LAgeqrf_ zgeqrf 23325fce39dSBarry Smith #define LAgetrf_ zgetrf 23425fce39dSBarry Smith #define LAgetf2_ zgetf2 23525fce39dSBarry Smith #define BLdot_ zdotc 23625fce39dSBarry Smith #define BLnrm2_ dznrm2 23725fce39dSBarry Smith #define BLscal_ zscal 23825fce39dSBarry Smith #define BLcopy_ zcopy 23925fce39dSBarry Smith #define BLswap_ zswap 24025fce39dSBarry Smith #define BLaxpy_ zaxpy 24125fce39dSBarry Smith #define BLasum_ dzasum 242a1e12872SBarry Smith #endif 243a1e12872SBarry Smith 244f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 2458f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 246c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 2478f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 2488f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2495392566eSBarry Smith (f),(g),(h)) 2508f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 2515392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 2528f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2535392566eSBarry Smith (f),(g),(h),(i)) 2548f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \ 2554eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 2564eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 257d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \ 258d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 259d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 260639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \ 261d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 262639f9d9dSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 2638f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2648f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 265ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 26625fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 26725fce39dSBarry Smith #define LApotrf_ zpotrf_ 26825fce39dSBarry Smith #define LApotrs_ zpotrs_ 26925fce39dSBarry Smith #define LAgemv_ zgemv_ 27025fce39dSBarry Smith #define LAgetrs_ zgetrs_ 27125fce39dSBarry Smith #define LAtrmv_ ztrmv_ 27225fce39dSBarry Smith #define LAtrsl_ ztrsl_ 27325fce39dSBarry Smith #define BLgemm_ zgemm_ 27425fce39dSBarry Smith #define LAgesvd_ zgesvd_ 27525fce39dSBarry Smith #define LAgeev_ zgeev_ 276aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 277c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 278a1e12872SBarry Smith #define LApotrf_ ZPOTRF 279a1e12872SBarry Smith #define LApotrs_ ZPOTRS 280a1e12872SBarry Smith #define LAgemv_ ZGEMV 281a1e12872SBarry Smith #define LAgetrf_ ZGETRF 28208d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 283a1e12872SBarry Smith #define LAgetrs_ ZGETRS 284a1e12872SBarry Smith #define LAtrmv_ ZTRMV 285a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2865a778de9SBarry Smith #define BLgemm_ ZGEMM 287d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 288d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 28925fce39dSBarry Smith #else 290c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 291a1e12872SBarry Smith #define LApotrf_ zpotrf 292a1e12872SBarry Smith #define LApotrs_ zpotrs 293a1e12872SBarry Smith #define LAgemv_ zgemv 294a1e12872SBarry Smith #define LAgetrs_ zgetrs 295a1e12872SBarry Smith #define LAtrmv_ ztrmv 296a1e12872SBarry Smith #define LAtrsl_ ztrsl 2975a778de9SBarry Smith #define BLgemm_ zgemm 298d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 299d4fbbf0eSBarry Smith #define LAgeev_ zgeev 300a1e12872SBarry Smith #endif 301a1e12872SBarry Smith 302a1e12872SBarry Smith #endif 303a1e12872SBarry Smith 304fb2e594dSBarry Smith EXTERN_C_BEGIN 305a1e12872SBarry Smith 3068f4c8dbaSBarry Smith /* 3078f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 3088f4c8dbaSBarry Smith handle returing a double complex to C++. 309126c565eSBarry Smith */ 310*87828ca2SBarry Smith EXTERN double BLdot_(int*,PetscScalar*,int*,PetscScalar*,int*); 311*87828ca2SBarry Smith EXTERN double BLnrm2_(int*,PetscScalar*,int*),BLasum_(int*,PetscScalar*,int*); 312*87828ca2SBarry Smith EXTERN void BLscal_(int*,PetscScalar*,PetscScalar*,int*); 313*87828ca2SBarry Smith EXTERN void BLcopy_(int*,PetscScalar*,int*,PetscScalar*,int*); 314*87828ca2SBarry Smith EXTERN void BLswap_(int*,PetscScalar*,int*,PetscScalar*,int*); 315*87828ca2SBarry Smith EXTERN void BLaxpy_(int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*); 316*87828ca2SBarry Smith EXTERN void LAgetrf_(int*,int*,PetscScalar*,int*,int*,int*); 317*87828ca2SBarry Smith EXTERN void LAgetf2_(int*,int*,PetscScalar*,int*,int*,int*); 318*87828ca2SBarry Smith EXTERN void LAgeqrf_(int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*); 3195392566eSBarry Smith 320f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 321112a2221SBarry Smith 322aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 323*87828ca2SBarry Smith EXTERN void ZPOTRF(_fcd,int*,PetscScalar*,int*,int*); 324*87828ca2SBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*, 325*87828ca2SBarry Smith Scalar*,PetscScalar*,int*); 326*87828ca2SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 327*87828ca2SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 328*87828ca2SBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*, 329*87828ca2SBarry Smith Scalar*,int*,PetscScalar*,PetscScalar*,int*); 330*87828ca2SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,double*,PetscScalar*, 331*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 332*87828ca2SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*, 333*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 3345392566eSBarry Smith #else 335*87828ca2SBarry Smith EXTERN void DPOTRF(_fcd,int*,PetscScalar*,int*,int*); 336*87828ca2SBarry Smith EXTERN void DGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*, 337*87828ca2SBarry Smith Scalar*,PetscScalar*,int*); 338*87828ca2SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 339*87828ca2SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 340*87828ca2SBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*, 341*87828ca2SBarry Smith Scalar*,int*,PetscScalar*,PetscScalar*,int*); 342*87828ca2SBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*, 343*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,int*); 344*87828ca2SBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,PetscScalar*, 345*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,int*); 346112a2221SBarry Smith #endif 347112a2221SBarry Smith 348112a2221SBarry Smith #else 349*87828ca2SBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*, 350*87828ca2SBarry Smith int*,PetscScalar*,int*,int*); 351*87828ca2SBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*, 352c0534c1cSBarry Smith int*); 353*87828ca2SBarry Smith EXTERN void LApotrf_(char*,int*,PetscScalar*,int*,int*); 354*87828ca2SBarry Smith EXTERN void LAgemv_(char*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*, 355*87828ca2SBarry Smith Scalar*,PetscScalar*,int*); 356*87828ca2SBarry Smith EXTERN void LApotrs_(char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 357*87828ca2SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 358*87828ca2SBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,PetscScalar*,PetscScalar*,int*, 359*87828ca2SBarry Smith Scalar*,int*,PetscScalar*,PetscScalar*,int*); 360e38aa075SLois Curfman McInnes 361e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 362aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 363*87828ca2SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,double*,int*); 364*87828ca2SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*, 365*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 366aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 367*87828ca2SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,double*,int*); 368*87828ca2SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*, 369*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,int*); 370aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 371*87828ca2SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,double*,double*,PetscScalar*, 372*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,int*); 373*87828ca2SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*, 374*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,int*); 375d4fbbf0eSBarry Smith #else 376*87828ca2SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*, 377*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 378*87828ca2SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*, 379*87828ca2SBarry Smith int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*); 380d4fbbf0eSBarry Smith #endif 3815392566eSBarry Smith #endif 382a1e12872SBarry Smith 383fb2e594dSBarry Smith EXTERN_C_END 384a1e12872SBarry Smith 385a1e12872SBarry Smith #endif 3865a778de9SBarry Smith 387