1*ae7cfcebSSatish Balay /* $Id: petscblaslapack.h,v 1.41 2001/03/26 19:28:22 balay 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 17bb638ab5SSatish Balay 18*ae7cfcebSSatish Balay #if defined(PETSC_BLASLAPACK_MKL_ONLY) 19bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 20bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 21*ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_CRAY_ONLY) 22bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 23*ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_ESSL_ONLY) 24*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GESVD 25*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRF 26*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRS 27*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRF 28*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRS 29bb638ab5SSatish Balay #endif 30bb638ab5SSatish Balay 318f4c8dbaSBarry Smith /* 32633a50d3SSatish Balay This include file on the Cray T3D/T3E defines the interface between 338f4c8dbaSBarry Smith Fortran and C representations of charactor strings. 348f4c8dbaSBarry Smith */ 35f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 3693c39befSBarry Smith #include <fortran.h> 375392566eSBarry Smith #endif 385392566eSBarry Smith 39aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX) 404eeb42bcSBarry Smith 414eeb42bcSBarry Smith /* 424eeb42bcSBarry Smith These are real case with no character string arguments 434eeb42bcSBarry Smith */ 448f4c8dbaSBarry Smith 45f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 468f4c8dbaSBarry Smith /* 478f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 488f4c8dbaSBarry Smith */ 498f4c8dbaSBarry Smith #define DGEQRF SGEQRF 508f4c8dbaSBarry Smith #define DGETRF SGETRF 518f4c8dbaSBarry Smith #define DDOT SDOT 528f4c8dbaSBarry Smith #define DNRM2 SNRM2 538f4c8dbaSBarry Smith #define DSCAL SSCAL 548f4c8dbaSBarry Smith #define DCOPY SCOPY 558f4c8dbaSBarry Smith #define DSWAP SSWAP 568f4c8dbaSBarry Smith #define DAXPY SAXPY 578f4c8dbaSBarry Smith #define DASUM SASUM 588f4c8dbaSBarry Smith #define DSORMQR SORMQR 598f4c8dbaSBarry Smith #define DTRTRS STRTRS 608f4c8dbaSBarry Smith #define DPOTRF SPOTRF 618f4c8dbaSBarry Smith #define DPOTRS SPOTRS 628f4c8dbaSBarry Smith #define DGEMV SGEMV 638f4c8dbaSBarry Smith #define DGETRS SGETRS 648f4c8dbaSBarry Smith #define DGETRS SGETRS 658f4c8dbaSBarry Smith #define DGEMM SGEMM 668f4c8dbaSBarry Smith #define DGESVD SGESVD 67d4fbbf0eSBarry Smith #define DGEEV SGEEV 688f4c8dbaSBarry Smith #define DTRMV STRMV 698f4c8dbaSBarry Smith #define DTRSL STRSL 708f4c8dbaSBarry Smith #endif 718f4c8dbaSBarry Smith 72*ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 73c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 745392566eSBarry Smith #define LAgetrf_ dgetrf_ 75c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 76a1e12872SBarry Smith #define BLdot_ ddot_ 77a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 78a1e12872SBarry Smith #define BLscal_ dscal_ 79a1e12872SBarry Smith #define BLcopy_ dcopy_ 80a1e12872SBarry Smith #define BLswap_ dswap_ 81a1e12872SBarry Smith #define BLaxpy_ daxpy_ 82a1e12872SBarry Smith #define BLasum_ dasum_ 83aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 8425fce39dSBarry Smith #define LAgeqrf_ DGEQRF 8525fce39dSBarry Smith #define LAgetrf_ DGETRF 8625fce39dSBarry Smith #define LAgetf2_ DGETF2 8725fce39dSBarry Smith #define BLdot_ DDOT 8825fce39dSBarry Smith #define BLnrm2_ DNRM2 8925fce39dSBarry Smith #define BLscal_ DSCAL 9025fce39dSBarry Smith #define BLcopy_ DCOPY 9125fce39dSBarry Smith #define BLswap_ DSWAP 9225fce39dSBarry Smith #define BLaxpy_ DAXPY 9325fce39dSBarry Smith #define BLasum_ DASUM 9425fce39dSBarry Smith #else 9525fce39dSBarry Smith #define LAgeqrf_ dgeqrf 9625fce39dSBarry Smith #define LAgetrf_ dgetrf 9725fce39dSBarry Smith #define LAgetf2_ dgetf2 9825fce39dSBarry Smith #define BLdot_ ddot 9925fce39dSBarry Smith #define BLnrm2_ dnrm2 10025fce39dSBarry Smith #define BLscal_ dscal 10125fce39dSBarry Smith #define BLcopy_ dcopy 10225fce39dSBarry Smith #define BLswap_ dswap 10325fce39dSBarry Smith #define BLaxpy_ daxpy 10425fce39dSBarry Smith #define BLasum_ dasum 105a1e12872SBarry Smith #endif 106a1e12872SBarry Smith 1074eeb42bcSBarry Smith /* 1084eeb42bcSBarry Smith Real with character string arguments. 1094eeb42bcSBarry Smith */ 110f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 1118f4c8dbaSBarry Smith /* 1128f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 113aa482453SBarry Smith the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 1148f4c8dbaSBarry Smith */ 1158f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),\ 116bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 1178f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 118c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1198f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1208f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1215392566eSBarry Smith (f),(g),(h)) 1228f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1235392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1248f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1255392566eSBarry Smith (f),(g),(h),(i)) 1268f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1274eeb42bcSBarry Smith (f),(g),(h),(i)) 1288f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \ 1294eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 1304eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 13121c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \ 132af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 13321c89e3eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 134d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \ 135d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 136d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 1378f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1388f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 139633a50d3SSatish Balay #define LAgetrf_ DGETRF 140*ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 14125fce39dSBarry Smith #define LAormqr_ dormqr_ 14225fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 14325fce39dSBarry Smith #define LApotrf_ dpotrf_ 14425fce39dSBarry Smith #define LApotrs_ dpotrs_ 14525fce39dSBarry Smith #define LAgemv_ dgemv_ 14625fce39dSBarry Smith #define LAgetrs_ dgetrs_ 14725fce39dSBarry Smith #define LAtrmv_ dtrmv_ 14825fce39dSBarry Smith #define LAtrsl_ dtrsl_ 14925fce39dSBarry Smith #define BLgemm_ dgemm_ 15025fce39dSBarry Smith #define LAgesvd_ dgesvd_ 15125fce39dSBarry Smith #define LAgeev_ dgeev_ 152aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 153c0534c1cSBarry Smith #define LAormqr_ DORMQR 154c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 155a1e12872SBarry Smith #define LApotrf_ DPOTRF 156a1e12872SBarry Smith #define LApotrs_ DPOTRS 157a1e12872SBarry Smith #define LAgemv_ DGEMV 158a1e12872SBarry Smith #define LAgetrs_ DGETRS 159a1e12872SBarry Smith #define LAtrmv_ DTRMV 160a1e12872SBarry Smith #define LAtrsl_ DTRSL 161af6b99e9SBarry Smith #define LAgesvd_ DGESVD 162d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1634eeb42bcSBarry Smith #define BLgemm_ DGEMM 16425fce39dSBarry Smith #else 165c0534c1cSBarry Smith #define LAormqr_ dormqr 166c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 167a1e12872SBarry Smith #define LApotrf_ dpotrf 168a1e12872SBarry Smith #define LApotrs_ dpotrs 169a1e12872SBarry Smith #define LAgemv_ dgemv 170a1e12872SBarry Smith #define LAgetrs_ dgetrs 171a1e12872SBarry Smith #define LAtrmv_ dtrmv 172a1e12872SBarry Smith #define LAtrsl_ dtrsl 1734eeb42bcSBarry Smith #define BLgemm_ dgemm 174af6b99e9SBarry Smith #define LAgesvd_ dgesvd 175d4fbbf0eSBarry Smith #define LAgeev_ dgeev 176a1e12872SBarry Smith #endif 177a1e12872SBarry Smith 178a1e12872SBarry Smith #else 1794eeb42bcSBarry Smith /* 1804eeb42bcSBarry Smith Complex with no character string arguments 1814eeb42bcSBarry Smith */ 182f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 1838f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1848f4c8dbaSBarry Smith #define ZDOTC CDOTC 1858f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1868f4c8dbaSBarry Smith #define ZSCAL CSCAL 1878f4c8dbaSBarry Smith #define ZCOPY CCOPY 1888f4c8dbaSBarry Smith #define ZSWAP CSWAP 1898f4c8dbaSBarry Smith #define ZAXPY CAXPY 1908f4c8dbaSBarry Smith #define DZASUM SCASUM 1918f4c8dbaSBarry Smith #define ZGETRF CGETRF 1928f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 1938f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 1948f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 1958f4c8dbaSBarry Smith #define ZGEMV CGEMV 1968f4c8dbaSBarry Smith #define ZGETRS CGETRS 1978f4c8dbaSBarry Smith #define ZGEMM SGEMM 1988f4c8dbaSBarry Smith #define ZTRMV CTRMV 199160814fdSSatish Balay #define ZTRSL CTRSL 200633a50d3SSatish Balay #define ZGEEV CGEEV 2018f4c8dbaSBarry Smith #endif 2028f4c8dbaSBarry Smith 203*ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 204c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2055392566eSBarry Smith #define LAgetrf_ zgetrf_ 20608d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 207a1e12872SBarry Smith #define BLdot_ zdotc_ 208a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 209a1e12872SBarry Smith #define BLscal_ zscal_ 210a1e12872SBarry Smith #define BLcopy_ zcopy_ 211a1e12872SBarry Smith #define BLswap_ zswap_ 212a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 213a1e12872SBarry Smith #define BLasum_ dzasum_ 214aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 21525fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 21625fce39dSBarry Smith #define BLdot_ ZDOTC 21725fce39dSBarry Smith #define BLnrm2_ DZNRM2 21825fce39dSBarry Smith #define BLscal_ ZSCAL 21925fce39dSBarry Smith #define BLcopy_ ZCOPY 22025fce39dSBarry Smith #define BLswap_ ZSWAP 22125fce39dSBarry Smith #define BLaxpy_ ZAXPY 22225fce39dSBarry Smith #define BLasum_ DZASUM 22325fce39dSBarry Smith #define LAgetrf_ ZGETRF 22425fce39dSBarry Smith #else 22525fce39dSBarry Smith #define LAgeqrf_ zgeqrf 22625fce39dSBarry Smith #define LAgetrf_ zgetrf 22725fce39dSBarry Smith #define LAgetf2_ zgetf2 22825fce39dSBarry Smith #define BLdot_ zdotc 22925fce39dSBarry Smith #define BLnrm2_ dznrm2 23025fce39dSBarry Smith #define BLscal_ zscal 23125fce39dSBarry Smith #define BLcopy_ zcopy 23225fce39dSBarry Smith #define BLswap_ zswap 23325fce39dSBarry Smith #define BLaxpy_ zaxpy 23425fce39dSBarry Smith #define BLasum_ dzasum 235a1e12872SBarry Smith #endif 236a1e12872SBarry Smith 237f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 2388f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 239c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 2408f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 2418f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2425392566eSBarry Smith (f),(g),(h)) 2438f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 2445392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 2458f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2465392566eSBarry Smith (f),(g),(h),(i)) 2478f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \ 2484eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 2494eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 250d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \ 251d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 252d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 253639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \ 254d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 255639f9d9dSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 2568f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2578f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 258*ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 25925fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 26025fce39dSBarry Smith #define LApotrf_ zpotrf_ 26125fce39dSBarry Smith #define LApotrs_ zpotrs_ 26225fce39dSBarry Smith #define LAgemv_ zgemv_ 26325fce39dSBarry Smith #define LAgetrs_ zgetrs_ 26425fce39dSBarry Smith #define LAtrmv_ ztrmv_ 26525fce39dSBarry Smith #define LAtrsl_ ztrsl_ 26625fce39dSBarry Smith #define BLgemm_ zgemm_ 26725fce39dSBarry Smith #define LAgesvd_ zgesvd_ 26825fce39dSBarry Smith #define LAgeev_ zgeev_ 269aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 270c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 271a1e12872SBarry Smith #define LApotrf_ ZPOTRF 272a1e12872SBarry Smith #define LApotrs_ ZPOTRS 273a1e12872SBarry Smith #define LAgemv_ ZGEMV 274a1e12872SBarry Smith #define LAgetrf_ ZGETRF 27508d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 276a1e12872SBarry Smith #define LAgetrs_ ZGETRS 277a1e12872SBarry Smith #define LAtrmv_ ZTRMV 278a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2795a778de9SBarry Smith #define BLgemm_ ZGEMM 280d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 281d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 28225fce39dSBarry Smith #else 283c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 284a1e12872SBarry Smith #define LApotrf_ zpotrf 285a1e12872SBarry Smith #define LApotrs_ zpotrs 286a1e12872SBarry Smith #define LAgemv_ zgemv 287a1e12872SBarry Smith #define LAgetrs_ zgetrs 288a1e12872SBarry Smith #define LAtrmv_ ztrmv 289a1e12872SBarry Smith #define LAtrsl_ ztrsl 2905a778de9SBarry Smith #define BLgemm_ zgemm 291d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 292d4fbbf0eSBarry Smith #define LAgeev_ zgeev 293a1e12872SBarry Smith #endif 294a1e12872SBarry Smith 295a1e12872SBarry Smith #endif 296a1e12872SBarry Smith 297fb2e594dSBarry Smith EXTERN_C_BEGIN 298a1e12872SBarry Smith 2998f4c8dbaSBarry Smith /* 3008f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 3018f4c8dbaSBarry Smith handle returing a double complex to C++. 302126c565eSBarry Smith */ 303ca44d042SBarry Smith EXTERN double BLdot_(int*,Scalar*,int*,Scalar*,int*); 304ca44d042SBarry Smith EXTERN double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 305ca44d042SBarry Smith EXTERN void BLscal_(int*,Scalar*,Scalar*,int*); 306ca44d042SBarry Smith EXTERN void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 307ca44d042SBarry Smith EXTERN void BLswap_(int*,Scalar*,int*,Scalar*,int*); 308ca44d042SBarry Smith EXTERN void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 309ca44d042SBarry Smith EXTERN void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 310ca44d042SBarry Smith EXTERN void LAgetf2_(int*,int*,Scalar*,int*,int*,int*); 311ca44d042SBarry Smith EXTERN void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 3125392566eSBarry Smith 313f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 314112a2221SBarry Smith 315aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 316ca44d042SBarry Smith EXTERN void ZPOTRF(_fcd,int*,Scalar*,int*,int*); 317ca44d042SBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 3185392566eSBarry Smith Scalar*,Scalar*,int*); 319ca44d042SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 320ca44d042SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 321ca44d042SBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3224eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 323ca44d042SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,double*,Scalar*, 324d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 325ca44d042SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*, 326d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 3275392566eSBarry Smith #else 328ca44d042SBarry Smith EXTERN void DPOTRF(_fcd,int*,Scalar*,int*,int*); 329ca44d042SBarry Smith EXTERN void DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 330112a2221SBarry Smith Scalar*,Scalar*,int*); 331ca44d042SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 332ca44d042SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 333ca44d042SBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3344eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 335ca44d042SBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,Scalar*,Scalar*, 336af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 337ca44d042SBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*, 338d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 339112a2221SBarry Smith #endif 340112a2221SBarry Smith 341112a2221SBarry Smith #else 342ca44d042SBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 343c0534c1cSBarry Smith int*,Scalar*,int*,int*); 344ca44d042SBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 345c0534c1cSBarry Smith int*); 346ca44d042SBarry Smith EXTERN void LApotrf_(char*,int*,Scalar*,int*,int*); 347ca44d042SBarry Smith EXTERN void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 348a1e12872SBarry Smith Scalar*,Scalar*,int*); 349ca44d042SBarry Smith EXTERN void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 350ca44d042SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 351ca44d042SBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*, 3524eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 353e38aa075SLois Curfman McInnes 354e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 355aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 356ca44d042SBarry Smith EXTERN void LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*); 357ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 358e38aa075SLois Curfman McInnes int*,Scalar*,int*,Scalar*,int*,double*,int*); 359aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 360ca44d042SBarry Smith EXTERN void LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*); 361ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 362e38aa075SLois Curfman McInnes int*,Scalar*,int*,Scalar*,int*,int*); 363aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 364ca44d042SBarry Smith EXTERN void LAgeev_(char *,char *,int *,Scalar *,int*,double*,double*,Scalar*, 365af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 366ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 367d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 368d4fbbf0eSBarry Smith #else 369ca44d042SBarry Smith EXTERN void LAgeev_(char *,char *,int *,Scalar *,int*,Scalar*,Scalar*, 370d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 371ca44d042SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*, 372d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 373d4fbbf0eSBarry Smith #endif 3745392566eSBarry Smith #endif 375a1e12872SBarry Smith 376fb2e594dSBarry Smith EXTERN_C_END 377a1e12872SBarry Smith 378a1e12872SBarry Smith #endif 3795a778de9SBarry Smith 380