1*ca44d042SBarry Smith /* $Id: blaslapack.h,v 1.38 2000/01/11 21:04:10 bsmith 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 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 178f4c8dbaSBarry Smith /* 18633a50d3SSatish Balay This include file on the Cray T3D/T3E defines the interface between 198f4c8dbaSBarry Smith Fortran and C representations of charactor strings. 208f4c8dbaSBarry Smith */ 21f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 2293c39befSBarry Smith #include <fortran.h> 235392566eSBarry Smith #endif 245392566eSBarry Smith 25aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX) 264eeb42bcSBarry Smith 274eeb42bcSBarry Smith /* 284eeb42bcSBarry Smith These are real case with no character string arguments 294eeb42bcSBarry Smith */ 308f4c8dbaSBarry Smith 31f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 328f4c8dbaSBarry Smith /* 338f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 348f4c8dbaSBarry Smith */ 358f4c8dbaSBarry Smith #define DGEQRF SGEQRF 368f4c8dbaSBarry Smith #define DGETRF SGETRF 378f4c8dbaSBarry Smith #define DDOT SDOT 388f4c8dbaSBarry Smith #define DNRM2 SNRM2 398f4c8dbaSBarry Smith #define DSCAL SSCAL 408f4c8dbaSBarry Smith #define DCOPY SCOPY 418f4c8dbaSBarry Smith #define DSWAP SSWAP 428f4c8dbaSBarry Smith #define DAXPY SAXPY 438f4c8dbaSBarry Smith #define DASUM SASUM 448f4c8dbaSBarry Smith #define DSORMQR SORMQR 458f4c8dbaSBarry Smith #define DTRTRS STRTRS 468f4c8dbaSBarry Smith #define DPOTRF SPOTRF 478f4c8dbaSBarry Smith #define DPOTRS SPOTRS 488f4c8dbaSBarry Smith #define DGEMV SGEMV 498f4c8dbaSBarry Smith #define DGETRS SGETRS 508f4c8dbaSBarry Smith #define DGETRS SGETRS 518f4c8dbaSBarry Smith #define DGEMM SGEMM 528f4c8dbaSBarry Smith #define DGESVD SGESVD 53d4fbbf0eSBarry Smith #define DGEEV SGEEV 548f4c8dbaSBarry Smith #define DTRMV STRMV 558f4c8dbaSBarry Smith #define DTRSL STRSL 568f4c8dbaSBarry Smith #endif 578f4c8dbaSBarry Smith 58aa482453SBarry Smith #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK) 59c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 605392566eSBarry Smith #define LAgetrf_ dgetrf_ 61c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 62a1e12872SBarry Smith #define BLdot_ ddot_ 63a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 64a1e12872SBarry Smith #define BLscal_ dscal_ 65a1e12872SBarry Smith #define BLcopy_ dcopy_ 66a1e12872SBarry Smith #define BLswap_ dswap_ 67a1e12872SBarry Smith #define BLaxpy_ daxpy_ 68a1e12872SBarry Smith #define BLasum_ dasum_ 69aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 7025fce39dSBarry Smith #define LAgeqrf_ DGEQRF 7125fce39dSBarry Smith #define LAgetrf_ DGETRF 7225fce39dSBarry Smith #define LAgetf2_ DGETF2 7325fce39dSBarry Smith #define BLdot_ DDOT 7425fce39dSBarry Smith #define BLnrm2_ DNRM2 7525fce39dSBarry Smith #define BLscal_ DSCAL 7625fce39dSBarry Smith #define BLcopy_ DCOPY 7725fce39dSBarry Smith #define BLswap_ DSWAP 7825fce39dSBarry Smith #define BLaxpy_ DAXPY 7925fce39dSBarry Smith #define BLasum_ DASUM 8025fce39dSBarry Smith #else 8125fce39dSBarry Smith #define LAgeqrf_ dgeqrf 8225fce39dSBarry Smith #define LAgetrf_ dgetrf 8325fce39dSBarry Smith #define LAgetf2_ dgetf2 8425fce39dSBarry Smith #define BLdot_ ddot 8525fce39dSBarry Smith #define BLnrm2_ dnrm2 8625fce39dSBarry Smith #define BLscal_ dscal 8725fce39dSBarry Smith #define BLcopy_ dcopy 8825fce39dSBarry Smith #define BLswap_ dswap 8925fce39dSBarry Smith #define BLaxpy_ daxpy 9025fce39dSBarry Smith #define BLasum_ dasum 91a1e12872SBarry Smith #endif 92a1e12872SBarry Smith 934eeb42bcSBarry Smith /* 944eeb42bcSBarry Smith Real with character string arguments. 954eeb42bcSBarry Smith */ 96f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 978f4c8dbaSBarry Smith /* 988f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 99aa482453SBarry Smith the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 1008f4c8dbaSBarry Smith */ 1018f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),\ 102bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 1038f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 104c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1058f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1068f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1075392566eSBarry Smith (f),(g),(h)) 1088f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1095392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1108f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1115392566eSBarry Smith (f),(g),(h),(i)) 1128f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1134eeb42bcSBarry Smith (f),(g),(h),(i)) 1148f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \ 1154eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 1164eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 11721c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \ 118af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 11921c89e3eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 120d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \ 121d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 122d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 1238f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1248f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 125633a50d3SSatish Balay #define LAgetrf_ DGETRF 126aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK) 12725fce39dSBarry Smith #define LAormqr_ dormqr_ 12825fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 12925fce39dSBarry Smith #define LApotrf_ dpotrf_ 13025fce39dSBarry Smith #define LApotrs_ dpotrs_ 13125fce39dSBarry Smith #define LAgemv_ dgemv_ 13225fce39dSBarry Smith #define LAgetrs_ dgetrs_ 13325fce39dSBarry Smith #define LAtrmv_ dtrmv_ 13425fce39dSBarry Smith #define LAtrsl_ dtrsl_ 13525fce39dSBarry Smith #define BLgemm_ dgemm_ 13625fce39dSBarry Smith #define LAgesvd_ dgesvd_ 13725fce39dSBarry Smith #define LAgeev_ dgeev_ 138aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 139c0534c1cSBarry Smith #define LAormqr_ DORMQR 140c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 141a1e12872SBarry Smith #define LApotrf_ DPOTRF 142a1e12872SBarry Smith #define LApotrs_ DPOTRS 143a1e12872SBarry Smith #define LAgemv_ DGEMV 144a1e12872SBarry Smith #define LAgetrs_ DGETRS 145a1e12872SBarry Smith #define LAtrmv_ DTRMV 146a1e12872SBarry Smith #define LAtrsl_ DTRSL 147af6b99e9SBarry Smith #define LAgesvd_ DGESVD 148d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1494eeb42bcSBarry Smith #define BLgemm_ DGEMM 15025fce39dSBarry Smith #else 151c0534c1cSBarry Smith #define LAormqr_ dormqr 152c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 153a1e12872SBarry Smith #define LApotrf_ dpotrf 154a1e12872SBarry Smith #define LApotrs_ dpotrs 155a1e12872SBarry Smith #define LAgemv_ dgemv 156a1e12872SBarry Smith #define LAgetrs_ dgetrs 157a1e12872SBarry Smith #define LAtrmv_ dtrmv 158a1e12872SBarry Smith #define LAtrsl_ dtrsl 1594eeb42bcSBarry Smith #define BLgemm_ dgemm 160af6b99e9SBarry Smith #define LAgesvd_ dgesvd 161d4fbbf0eSBarry Smith #define LAgeev_ dgeev 162a1e12872SBarry Smith #endif 163a1e12872SBarry Smith 164a1e12872SBarry Smith #else 1654eeb42bcSBarry Smith /* 1664eeb42bcSBarry Smith Complex with no character string arguments 1674eeb42bcSBarry Smith */ 168f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 1698f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1708f4c8dbaSBarry Smith #define ZDOTC CDOTC 1718f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1728f4c8dbaSBarry Smith #define ZSCAL CSCAL 1738f4c8dbaSBarry Smith #define ZCOPY CCOPY 1748f4c8dbaSBarry Smith #define ZSWAP CSWAP 1758f4c8dbaSBarry Smith #define ZAXPY CAXPY 1768f4c8dbaSBarry Smith #define DZASUM SCASUM 1778f4c8dbaSBarry Smith #define ZGETRF CGETRF 1788f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 1798f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 1808f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 1818f4c8dbaSBarry Smith #define ZGEMV CGEMV 1828f4c8dbaSBarry Smith #define ZGETRS CGETRS 1838f4c8dbaSBarry Smith #define ZGEMM SGEMM 1848f4c8dbaSBarry Smith #define ZTRMV CTRMV 185160814fdSSatish Balay #define ZTRSL CTRSL 186633a50d3SSatish Balay #define ZGEEV CGEEV 1878f4c8dbaSBarry Smith #endif 1888f4c8dbaSBarry Smith 189aa482453SBarry Smith #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK) 190c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 1915392566eSBarry Smith #define LAgetrf_ zgetrf_ 19208d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 193a1e12872SBarry Smith #define BLdot_ zdotc_ 194a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 195a1e12872SBarry Smith #define BLscal_ zscal_ 196a1e12872SBarry Smith #define BLcopy_ zcopy_ 197a1e12872SBarry Smith #define BLswap_ zswap_ 198a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 199a1e12872SBarry Smith #define BLasum_ dzasum_ 200aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 20125fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 20225fce39dSBarry Smith #define BLdot_ ZDOTC 20325fce39dSBarry Smith #define BLnrm2_ DZNRM2 20425fce39dSBarry Smith #define BLscal_ ZSCAL 20525fce39dSBarry Smith #define BLcopy_ ZCOPY 20625fce39dSBarry Smith #define BLswap_ ZSWAP 20725fce39dSBarry Smith #define BLaxpy_ ZAXPY 20825fce39dSBarry Smith #define BLasum_ DZASUM 20925fce39dSBarry Smith #define LAgetrf_ ZGETRF 21025fce39dSBarry Smith #else 21125fce39dSBarry Smith #define LAgeqrf_ zgeqrf 21225fce39dSBarry Smith #define LAgetrf_ zgetrf 21325fce39dSBarry Smith #define LAgetf2_ zgetf2 21425fce39dSBarry Smith #define BLdot_ zdotc 21525fce39dSBarry Smith #define BLnrm2_ dznrm2 21625fce39dSBarry Smith #define BLscal_ zscal 21725fce39dSBarry Smith #define BLcopy_ zcopy 21825fce39dSBarry Smith #define BLswap_ zswap 21925fce39dSBarry Smith #define BLaxpy_ zaxpy 22025fce39dSBarry Smith #define BLasum_ dzasum 221a1e12872SBarry Smith #endif 222a1e12872SBarry Smith 223f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 2248f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 225c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 2268f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 2278f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2285392566eSBarry Smith (f),(g),(h)) 2298f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 2305392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 2318f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2325392566eSBarry Smith (f),(g),(h),(i)) 2338f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \ 2344eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 2354eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 236d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \ 237d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 238d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 239639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \ 240d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 241639f9d9dSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 2428f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2438f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 244aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK) 24525fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 24625fce39dSBarry Smith #define LApotrf_ zpotrf_ 24725fce39dSBarry Smith #define LApotrs_ zpotrs_ 24825fce39dSBarry Smith #define LAgemv_ zgemv_ 24925fce39dSBarry Smith #define LAgetrs_ zgetrs_ 25025fce39dSBarry Smith #define LAtrmv_ ztrmv_ 25125fce39dSBarry Smith #define LAtrsl_ ztrsl_ 25225fce39dSBarry Smith #define BLgemm_ zgemm_ 25325fce39dSBarry Smith #define LAgesvd_ zgesvd_ 25425fce39dSBarry Smith #define LAgeev_ zgeev_ 255aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 256c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 257a1e12872SBarry Smith #define LApotrf_ ZPOTRF 258a1e12872SBarry Smith #define LApotrs_ ZPOTRS 259a1e12872SBarry Smith #define LAgemv_ ZGEMV 260a1e12872SBarry Smith #define LAgetrf_ ZGETRF 26108d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 262a1e12872SBarry Smith #define LAgetrs_ ZGETRS 263a1e12872SBarry Smith #define LAtrmv_ ZTRMV 264a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2655a778de9SBarry Smith #define BLgemm_ ZGEMM 266d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 267d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 26825fce39dSBarry Smith #else 269c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 270a1e12872SBarry Smith #define LApotrf_ zpotrf 271a1e12872SBarry Smith #define LApotrs_ zpotrs 272a1e12872SBarry Smith #define LAgemv_ zgemv 273a1e12872SBarry Smith #define LAgetrs_ zgetrs 274a1e12872SBarry Smith #define LAtrmv_ ztrmv 275a1e12872SBarry Smith #define LAtrsl_ ztrsl 2765a778de9SBarry Smith #define BLgemm_ zgemm 277d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 278d4fbbf0eSBarry Smith #define LAgeev_ zgeev 279a1e12872SBarry Smith #endif 280a1e12872SBarry Smith 281a1e12872SBarry Smith #endif 282a1e12872SBarry Smith 283aa482453SBarry Smith #if !defined(PETSC_USE_CBLASLAPACK) 284fb2e594dSBarry Smith EXTERN_C_BEGIN 28530d4a072SBarry Smith #endif 286a1e12872SBarry Smith 2878f4c8dbaSBarry Smith /* 2888f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 2898f4c8dbaSBarry Smith handle returing a double complex to C++. 290126c565eSBarry Smith */ 291*ca44d042SBarry Smith EXTERN double BLdot_(int*,Scalar*,int*,Scalar*,int*); 292*ca44d042SBarry Smith EXTERN double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 293*ca44d042SBarry Smith EXTERN void BLscal_(int*,Scalar*,Scalar*,int*); 294*ca44d042SBarry Smith EXTERN void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 295*ca44d042SBarry Smith EXTERN void BLswap_(int*,Scalar*,int*,Scalar*,int*); 296*ca44d042SBarry Smith EXTERN void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 297*ca44d042SBarry Smith EXTERN void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 298*ca44d042SBarry Smith EXTERN void LAgetf2_(int*,int*,Scalar*,int*,int*,int*); 299*ca44d042SBarry Smith EXTERN void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 3005392566eSBarry Smith 301f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 302112a2221SBarry Smith 303aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 304*ca44d042SBarry Smith EXTERN void ZPOTRF(_fcd,int*,Scalar*,int*,int*); 305*ca44d042SBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 3065392566eSBarry Smith Scalar*,Scalar*,int*); 307*ca44d042SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 308*ca44d042SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 309*ca44d042SBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3104eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 311*ca44d042SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,double*,Scalar*, 312d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 313*ca44d042SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*, 314d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 3155392566eSBarry Smith #else 316*ca44d042SBarry Smith EXTERN void DPOTRF(_fcd,int*,Scalar*,int*,int*); 317*ca44d042SBarry Smith EXTERN void DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 318112a2221SBarry Smith Scalar*,Scalar*,int*); 319*ca44d042SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 320*ca44d042SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 321*ca44d042SBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3224eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 323*ca44d042SBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,Scalar*,Scalar*, 324af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 325*ca44d042SBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*, 326d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 327112a2221SBarry Smith #endif 328112a2221SBarry Smith 329112a2221SBarry Smith #else 330*ca44d042SBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 331c0534c1cSBarry Smith int*,Scalar*,int*,int*); 332*ca44d042SBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 333c0534c1cSBarry Smith int*); 334*ca44d042SBarry Smith EXTERN void LApotrf_(char*,int*,Scalar*,int*,int*); 335*ca44d042SBarry Smith EXTERN void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 336a1e12872SBarry Smith Scalar*,Scalar*,int*); 337*ca44d042SBarry Smith EXTERN void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 338*ca44d042SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 339*ca44d042SBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*, 3404eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 341e38aa075SLois Curfman McInnes 342e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 343aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 344*ca44d042SBarry Smith EXTERN void LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*); 345*ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 346e38aa075SLois Curfman McInnes int*,Scalar*,int*,Scalar*,int*,double*,int*); 347aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 348*ca44d042SBarry Smith EXTERN void LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*); 349*ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 350e38aa075SLois Curfman McInnes int*,Scalar*,int*,Scalar*,int*,int*); 351aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 352*ca44d042SBarry Smith EXTERN void LAgeev_(char *,char *,int *,Scalar *,int*,double*,double*,Scalar*, 353af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 354*ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 355d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 356d4fbbf0eSBarry Smith #else 357*ca44d042SBarry Smith EXTERN void LAgeev_(char *,char *,int *,Scalar *,int*,Scalar*,Scalar*, 358d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 359*ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 360d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 361d4fbbf0eSBarry Smith #endif 3625392566eSBarry Smith #endif 363a1e12872SBarry Smith 364aa482453SBarry Smith #if !defined(PETSC_USE_CBLASLAPACK) 365fb2e594dSBarry Smith EXTERN_C_END 36630d4a072SBarry Smith #endif 367a1e12872SBarry Smith 368a1e12872SBarry Smith #endif 3695a778de9SBarry Smith 3705a778de9SBarry Smith 3715a778de9SBarry Smith 372