1*bb638ab5SSatish Balay /* $Id: petscblaslapack.h,v 1.39 2000/05/10 16:44:31 bsmith Exp balay $ */ 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 75392566eSBarry Smith Another problem is charactor 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 17*bb638ab5SSatish Balay 18*bb638ab5SSatish Balay #if defined(PETSC_HAVE_MKL_BLAS) 19*bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 20*bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 21*bb638ab5SSatish Balay #else defined(PETSC_HAVE_CRAYT3D_BLAS) 22*bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 23*bb638ab5SSatish Balay #endif 24*bb638ab5SSatish Balay 258f4c8dbaSBarry Smith /* 26633a50d3SSatish Balay This include file on the Cray T3D/T3E defines the interface between 278f4c8dbaSBarry Smith Fortran and C representations of charactor strings. 288f4c8dbaSBarry Smith */ 29f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 3093c39befSBarry Smith #include <fortran.h> 315392566eSBarry Smith #endif 325392566eSBarry Smith 33aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX) 344eeb42bcSBarry Smith 354eeb42bcSBarry Smith /* 364eeb42bcSBarry Smith These are real case with no character string arguments 374eeb42bcSBarry Smith */ 388f4c8dbaSBarry Smith 39f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 408f4c8dbaSBarry Smith /* 418f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 428f4c8dbaSBarry Smith */ 438f4c8dbaSBarry Smith #define DGEQRF SGEQRF 448f4c8dbaSBarry Smith #define DGETRF SGETRF 458f4c8dbaSBarry Smith #define DDOT SDOT 468f4c8dbaSBarry Smith #define DNRM2 SNRM2 478f4c8dbaSBarry Smith #define DSCAL SSCAL 488f4c8dbaSBarry Smith #define DCOPY SCOPY 498f4c8dbaSBarry Smith #define DSWAP SSWAP 508f4c8dbaSBarry Smith #define DAXPY SAXPY 518f4c8dbaSBarry Smith #define DASUM SASUM 528f4c8dbaSBarry Smith #define DSORMQR SORMQR 538f4c8dbaSBarry Smith #define DTRTRS STRTRS 548f4c8dbaSBarry Smith #define DPOTRF SPOTRF 558f4c8dbaSBarry Smith #define DPOTRS SPOTRS 568f4c8dbaSBarry Smith #define DGEMV SGEMV 578f4c8dbaSBarry Smith #define DGETRS SGETRS 588f4c8dbaSBarry Smith #define DGETRS SGETRS 598f4c8dbaSBarry Smith #define DGEMM SGEMM 608f4c8dbaSBarry Smith #define DGESVD SGESVD 61d4fbbf0eSBarry Smith #define DGEEV SGEEV 628f4c8dbaSBarry Smith #define DTRMV STRMV 638f4c8dbaSBarry Smith #define DTRSL STRSL 648f4c8dbaSBarry Smith #endif 658f4c8dbaSBarry Smith 66*bb638ab5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK) 67c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 685392566eSBarry Smith #define LAgetrf_ dgetrf_ 69c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 70a1e12872SBarry Smith #define BLdot_ ddot_ 71a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 72a1e12872SBarry Smith #define BLscal_ dscal_ 73a1e12872SBarry Smith #define BLcopy_ dcopy_ 74a1e12872SBarry Smith #define BLswap_ dswap_ 75a1e12872SBarry Smith #define BLaxpy_ daxpy_ 76a1e12872SBarry Smith #define BLasum_ dasum_ 77aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 7825fce39dSBarry Smith #define LAgeqrf_ DGEQRF 7925fce39dSBarry Smith #define LAgetrf_ DGETRF 8025fce39dSBarry Smith #define LAgetf2_ DGETF2 8125fce39dSBarry Smith #define BLdot_ DDOT 8225fce39dSBarry Smith #define BLnrm2_ DNRM2 8325fce39dSBarry Smith #define BLscal_ DSCAL 8425fce39dSBarry Smith #define BLcopy_ DCOPY 8525fce39dSBarry Smith #define BLswap_ DSWAP 8625fce39dSBarry Smith #define BLaxpy_ DAXPY 8725fce39dSBarry Smith #define BLasum_ DASUM 8825fce39dSBarry Smith #else 8925fce39dSBarry Smith #define LAgeqrf_ dgeqrf 9025fce39dSBarry Smith #define LAgetrf_ dgetrf 9125fce39dSBarry Smith #define LAgetf2_ dgetf2 9225fce39dSBarry Smith #define BLdot_ ddot 9325fce39dSBarry Smith #define BLnrm2_ dnrm2 9425fce39dSBarry Smith #define BLscal_ dscal 9525fce39dSBarry Smith #define BLcopy_ dcopy 9625fce39dSBarry Smith #define BLswap_ dswap 9725fce39dSBarry Smith #define BLaxpy_ daxpy 9825fce39dSBarry Smith #define BLasum_ dasum 99a1e12872SBarry Smith #endif 100a1e12872SBarry Smith 1014eeb42bcSBarry Smith /* 1024eeb42bcSBarry Smith Real with character string arguments. 1034eeb42bcSBarry Smith */ 104f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 1058f4c8dbaSBarry Smith /* 1068f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 107aa482453SBarry Smith the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 1088f4c8dbaSBarry Smith */ 1098f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),\ 110bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 1118f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 112c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1138f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1148f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1155392566eSBarry Smith (f),(g),(h)) 1168f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1175392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1188f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1195392566eSBarry Smith (f),(g),(h),(i)) 1208f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1214eeb42bcSBarry Smith (f),(g),(h),(i)) 1228f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \ 1234eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 1244eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 12521c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \ 126af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 12721c89e3eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 128d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \ 129d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 130d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 1318f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1328f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 133633a50d3SSatish Balay #define LAgetrf_ DGETRF 134*bb638ab5SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK) 13525fce39dSBarry Smith #define LAormqr_ dormqr_ 13625fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 13725fce39dSBarry Smith #define LApotrf_ dpotrf_ 13825fce39dSBarry Smith #define LApotrs_ dpotrs_ 13925fce39dSBarry Smith #define LAgemv_ dgemv_ 14025fce39dSBarry Smith #define LAgetrs_ dgetrs_ 14125fce39dSBarry Smith #define LAtrmv_ dtrmv_ 14225fce39dSBarry Smith #define LAtrsl_ dtrsl_ 14325fce39dSBarry Smith #define BLgemm_ dgemm_ 14425fce39dSBarry Smith #define LAgesvd_ dgesvd_ 14525fce39dSBarry Smith #define LAgeev_ dgeev_ 146aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 147c0534c1cSBarry Smith #define LAormqr_ DORMQR 148c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 149a1e12872SBarry Smith #define LApotrf_ DPOTRF 150a1e12872SBarry Smith #define LApotrs_ DPOTRS 151a1e12872SBarry Smith #define LAgemv_ DGEMV 152a1e12872SBarry Smith #define LAgetrs_ DGETRS 153a1e12872SBarry Smith #define LAtrmv_ DTRMV 154a1e12872SBarry Smith #define LAtrsl_ DTRSL 155af6b99e9SBarry Smith #define LAgesvd_ DGESVD 156d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1574eeb42bcSBarry Smith #define BLgemm_ DGEMM 15825fce39dSBarry Smith #else 159c0534c1cSBarry Smith #define LAormqr_ dormqr 160c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 161a1e12872SBarry Smith #define LApotrf_ dpotrf 162a1e12872SBarry Smith #define LApotrs_ dpotrs 163a1e12872SBarry Smith #define LAgemv_ dgemv 164a1e12872SBarry Smith #define LAgetrs_ dgetrs 165a1e12872SBarry Smith #define LAtrmv_ dtrmv 166a1e12872SBarry Smith #define LAtrsl_ dtrsl 1674eeb42bcSBarry Smith #define BLgemm_ dgemm 168af6b99e9SBarry Smith #define LAgesvd_ dgesvd 169d4fbbf0eSBarry Smith #define LAgeev_ dgeev 170a1e12872SBarry Smith #endif 171a1e12872SBarry Smith 172a1e12872SBarry Smith #else 1734eeb42bcSBarry Smith /* 1744eeb42bcSBarry Smith Complex with no character string arguments 1754eeb42bcSBarry Smith */ 176f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 1778f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1788f4c8dbaSBarry Smith #define ZDOTC CDOTC 1798f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1808f4c8dbaSBarry Smith #define ZSCAL CSCAL 1818f4c8dbaSBarry Smith #define ZCOPY CCOPY 1828f4c8dbaSBarry Smith #define ZSWAP CSWAP 1838f4c8dbaSBarry Smith #define ZAXPY CAXPY 1848f4c8dbaSBarry Smith #define DZASUM SCASUM 1858f4c8dbaSBarry Smith #define ZGETRF CGETRF 1868f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 1878f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 1888f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 1898f4c8dbaSBarry Smith #define ZGEMV CGEMV 1908f4c8dbaSBarry Smith #define ZGETRS CGETRS 1918f4c8dbaSBarry Smith #define ZGEMM SGEMM 1928f4c8dbaSBarry Smith #define ZTRMV CTRMV 193160814fdSSatish Balay #define ZTRSL CTRSL 194633a50d3SSatish Balay #define ZGEEV CGEEV 1958f4c8dbaSBarry Smith #endif 1968f4c8dbaSBarry Smith 197*bb638ab5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK) 198c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 1995392566eSBarry Smith #define LAgetrf_ zgetrf_ 20008d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 201a1e12872SBarry Smith #define BLdot_ zdotc_ 202a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 203a1e12872SBarry Smith #define BLscal_ zscal_ 204a1e12872SBarry Smith #define BLcopy_ zcopy_ 205a1e12872SBarry Smith #define BLswap_ zswap_ 206a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 207a1e12872SBarry Smith #define BLasum_ dzasum_ 208aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 20925fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 21025fce39dSBarry Smith #define BLdot_ ZDOTC 21125fce39dSBarry Smith #define BLnrm2_ DZNRM2 21225fce39dSBarry Smith #define BLscal_ ZSCAL 21325fce39dSBarry Smith #define BLcopy_ ZCOPY 21425fce39dSBarry Smith #define BLswap_ ZSWAP 21525fce39dSBarry Smith #define BLaxpy_ ZAXPY 21625fce39dSBarry Smith #define BLasum_ DZASUM 21725fce39dSBarry Smith #define LAgetrf_ ZGETRF 21825fce39dSBarry Smith #else 21925fce39dSBarry Smith #define LAgeqrf_ zgeqrf 22025fce39dSBarry Smith #define LAgetrf_ zgetrf 22125fce39dSBarry Smith #define LAgetf2_ zgetf2 22225fce39dSBarry Smith #define BLdot_ zdotc 22325fce39dSBarry Smith #define BLnrm2_ dznrm2 22425fce39dSBarry Smith #define BLscal_ zscal 22525fce39dSBarry Smith #define BLcopy_ zcopy 22625fce39dSBarry Smith #define BLswap_ zswap 22725fce39dSBarry Smith #define BLaxpy_ zaxpy 22825fce39dSBarry Smith #define BLasum_ dzasum 229a1e12872SBarry Smith #endif 230a1e12872SBarry Smith 231f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 2328f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 233c0534c1cSBarry Smith _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)) 2358f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2365392566eSBarry Smith (f),(g),(h)) 2378f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 2385392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 2398f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2405392566eSBarry Smith (f),(g),(h),(i)) 2418f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \ 2424eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 2434eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 244d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \ 245d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 246d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 247639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \ 248d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 249639f9d9dSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 2508f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2518f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 252*bb638ab5SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK) 25325fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 25425fce39dSBarry Smith #define LApotrf_ zpotrf_ 25525fce39dSBarry Smith #define LApotrs_ zpotrs_ 25625fce39dSBarry Smith #define LAgemv_ zgemv_ 25725fce39dSBarry Smith #define LAgetrs_ zgetrs_ 25825fce39dSBarry Smith #define LAtrmv_ ztrmv_ 25925fce39dSBarry Smith #define LAtrsl_ ztrsl_ 26025fce39dSBarry Smith #define BLgemm_ zgemm_ 26125fce39dSBarry Smith #define LAgesvd_ zgesvd_ 26225fce39dSBarry Smith #define LAgeev_ zgeev_ 263aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 264c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 265a1e12872SBarry Smith #define LApotrf_ ZPOTRF 266a1e12872SBarry Smith #define LApotrs_ ZPOTRS 267a1e12872SBarry Smith #define LAgemv_ ZGEMV 268a1e12872SBarry Smith #define LAgetrf_ ZGETRF 26908d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 270a1e12872SBarry Smith #define LAgetrs_ ZGETRS 271a1e12872SBarry Smith #define LAtrmv_ ZTRMV 272a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2735a778de9SBarry Smith #define BLgemm_ ZGEMM 274d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 275d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 27625fce39dSBarry Smith #else 277c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 278a1e12872SBarry Smith #define LApotrf_ zpotrf 279a1e12872SBarry Smith #define LApotrs_ zpotrs 280a1e12872SBarry Smith #define LAgemv_ zgemv 281a1e12872SBarry Smith #define LAgetrs_ zgetrs 282a1e12872SBarry Smith #define LAtrmv_ ztrmv 283a1e12872SBarry Smith #define LAtrsl_ ztrsl 2845a778de9SBarry Smith #define BLgemm_ zgemm 285d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 286d4fbbf0eSBarry Smith #define LAgeev_ zgeev 287a1e12872SBarry Smith #endif 288a1e12872SBarry Smith 289a1e12872SBarry Smith #endif 290a1e12872SBarry Smith 291fb2e594dSBarry Smith EXTERN_C_BEGIN 292a1e12872SBarry Smith 2938f4c8dbaSBarry Smith /* 2948f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 2958f4c8dbaSBarry Smith handle returing a double complex to C++. 296126c565eSBarry Smith */ 297ca44d042SBarry Smith EXTERN double BLdot_(int*,Scalar*,int*,Scalar*,int*); 298ca44d042SBarry Smith EXTERN double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 299ca44d042SBarry Smith EXTERN void BLscal_(int*,Scalar*,Scalar*,int*); 300ca44d042SBarry Smith EXTERN void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 301ca44d042SBarry Smith EXTERN void BLswap_(int*,Scalar*,int*,Scalar*,int*); 302ca44d042SBarry Smith EXTERN void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 303ca44d042SBarry Smith EXTERN void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 304ca44d042SBarry Smith EXTERN void LAgetf2_(int*,int*,Scalar*,int*,int*,int*); 305ca44d042SBarry Smith EXTERN void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 3065392566eSBarry Smith 307f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 308112a2221SBarry Smith 309aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 310ca44d042SBarry Smith EXTERN void ZPOTRF(_fcd,int*,Scalar*,int*,int*); 311ca44d042SBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 3125392566eSBarry Smith Scalar*,Scalar*,int*); 313ca44d042SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 314ca44d042SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 315ca44d042SBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3164eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 317ca44d042SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,double*,Scalar*, 318d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 319ca44d042SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*, 320d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 3215392566eSBarry Smith #else 322ca44d042SBarry Smith EXTERN void DPOTRF(_fcd,int*,Scalar*,int*,int*); 323ca44d042SBarry Smith EXTERN void DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 324112a2221SBarry Smith Scalar*,Scalar*,int*); 325ca44d042SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 326ca44d042SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 327ca44d042SBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3284eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 329ca44d042SBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,Scalar*,Scalar*, 330af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 331ca44d042SBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*, 332d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 333112a2221SBarry Smith #endif 334112a2221SBarry Smith 335112a2221SBarry Smith #else 336ca44d042SBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 337c0534c1cSBarry Smith int*,Scalar*,int*,int*); 338ca44d042SBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 339c0534c1cSBarry Smith int*); 340ca44d042SBarry Smith EXTERN void LApotrf_(char*,int*,Scalar*,int*,int*); 341ca44d042SBarry Smith EXTERN void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 342a1e12872SBarry Smith Scalar*,Scalar*,int*); 343ca44d042SBarry Smith EXTERN void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 344ca44d042SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 345ca44d042SBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*, 3464eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 347e38aa075SLois Curfman McInnes 348e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 349aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 350ca44d042SBarry Smith EXTERN void LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*); 351ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 352e38aa075SLois Curfman McInnes int*,Scalar*,int*,Scalar*,int*,double*,int*); 353aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 354ca44d042SBarry Smith EXTERN void LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*); 355ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 356e38aa075SLois Curfman McInnes int*,Scalar*,int*,Scalar*,int*,int*); 357aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 358ca44d042SBarry Smith EXTERN void LAgeev_(char *,char *,int *,Scalar *,int*,double*,double*,Scalar*, 359af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 360ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 361d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 362d4fbbf0eSBarry Smith #else 363ca44d042SBarry Smith EXTERN void LAgeev_(char *,char *,int *,Scalar *,int*,Scalar*,Scalar*, 364d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 365ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 366d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 367d4fbbf0eSBarry Smith #endif 3685392566eSBarry Smith #endif 369a1e12872SBarry Smith 370fb2e594dSBarry Smith EXTERN_C_END 371a1e12872SBarry Smith 372a1e12872SBarry Smith #endif 3735a778de9SBarry Smith 3745a778de9SBarry Smith 3755a778de9SBarry Smith 376