1a1e12872SBarry Smith /* 2a1e12872SBarry Smith This is to provide some name space protection from Lapack and Blas 3a1e12872SBarry Smith allow the appropriate single or double precision version to be used. 4a1e12872SBarry Smith Also deals with different Fortran 77 naming conventions on machines. 5a1e12872SBarry Smith */ 6a1e12872SBarry Smith #if !defined(_PLAPACK_H) 7a1e12872SBarry Smith #define _PLAPACK_H 8a1e12872SBarry Smith 9a1e12872SBarry Smith #include "ptscimpl.h" 10a1e12872SBarry Smith 11a1e12872SBarry Smith #if !defined(PETSC_COMPLEX) 12*1eb62cbbSBarry Smith #if defined(PARCH_cray) 13a1e12872SBarry Smith #define BLdot_ SDOT 14a1e12872SBarry Smith #define BLnrm2_ SNRM2 15a1e12872SBarry Smith #define BLscal_ SSCAL 16a1e12872SBarry Smith #define BLcopy_ SCOPY 17a1e12872SBarry Smith #define BLswap_ SSWAP 18a1e12872SBarry Smith #define BLaxpy_ SAXPY 19a1e12872SBarry Smith #define BLasum_ SASUM 20a1e12872SBarry Smith #elif defined(FORTRANCAPS) 21a1e12872SBarry Smith #define BLdot_ DDOT 22a1e12872SBarry Smith #define BLnrm2_ DNRM2 23a1e12872SBarry Smith #define BLscal_ DSCAL 24a1e12872SBarry Smith #define BLcopy_ DCOPY 25a1e12872SBarry Smith #define BLswap_ DSWAP 26a1e12872SBarry Smith #define BLaxpy_ DAXPY 27a1e12872SBarry Smith #define BLasum_ DASUM 28a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 29a1e12872SBarry Smith #define BLdot_ ddot 30a1e12872SBarry Smith #define BLnrm2_ dnrm2 31a1e12872SBarry Smith #define BLscal_ dscal 32a1e12872SBarry Smith #define BLcopy_ dcopy 33a1e12872SBarry Smith #define BLswap_ dswap 34a1e12872SBarry Smith #define BLaxpy_ daxpy 35a1e12872SBarry Smith #define BLasum_ dasum 36a1e12872SBarry Smith #else 37a1e12872SBarry Smith #define BLdot_ ddot_ 38a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 39a1e12872SBarry Smith #define BLscal_ dscal_ 40a1e12872SBarry Smith #define BLcopy_ dcopy_ 41a1e12872SBarry Smith #define BLswap_ dswap_ 42a1e12872SBarry Smith #define BLaxpy_ daxpy_ 43a1e12872SBarry Smith #define BLasum_ dasum_ 44a1e12872SBarry Smith #endif 45a1e12872SBarry Smith 46*1eb62cbbSBarry Smith #if defined(PARCH_cray) 47a1e12872SBarry Smith #define LApotrf_ SPOTRF 48a1e12872SBarry Smith #define LApotrs_ SPOTRS 49a1e12872SBarry Smith #define LAgemv_ SGEMV 50a1e12872SBarry Smith #define LAgetrf_ SGETRF 51a1e12872SBarry Smith #define LAgetrs_ SGETRS 52a1e12872SBarry Smith #define LAgemv_ SGEMV 53a1e12872SBarry Smith #define LAtrmv_ STRMV 54a1e12872SBarry Smith #define LAtrsl_ STRSL 55a1e12872SBarry Smith #define LAger_ SGER 56a1e12872SBarry Smith #elif defined(FORTRANCAPS) 57a1e12872SBarry Smith #define LApotrf_ DPOTRF 58a1e12872SBarry Smith #define LApotrs_ DPOTRS 59a1e12872SBarry Smith #define LAgemv_ DGEMV 60a1e12872SBarry Smith #define LAgetrf_ DGETRF 61a1e12872SBarry Smith #define LAgetrs_ DGETRS 62a1e12872SBarry Smith #define LAger_ DGER 63a1e12872SBarry Smith #define LAtrmv_ DTRMV 64a1e12872SBarry Smith #define LAtrsl_ DTRSL 65a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 66a1e12872SBarry Smith #define LApotrf_ dpotrf 67a1e12872SBarry Smith #define LApotrs_ dpotrs 68a1e12872SBarry Smith #define LAgemv_ dgemv 69a1e12872SBarry Smith #define LAgetrf_ dgetrf 70a1e12872SBarry Smith #define LAgetrs_ dgetrs 71a1e12872SBarry Smith #define LAger_ dger 72a1e12872SBarry Smith #define LAtrmv_ dtrmv 73a1e12872SBarry Smith #define LAtrsl_ dtrsl 74a1e12872SBarry Smith #else 75a1e12872SBarry Smith #define LApotrf_ dpotrf_ 76a1e12872SBarry Smith #define LApotrs_ dpotrs_ 77a1e12872SBarry Smith #define LAgemv_ dgemv_ 78a1e12872SBarry Smith #define LAgetrf_ dgetrf_ 79a1e12872SBarry Smith #define LAgetrs_ dgetrs_ 80a1e12872SBarry Smith #define LAger_ dger_ 81a1e12872SBarry Smith #define LAtrmv_ dtrmv_ 82a1e12872SBarry Smith #define LAtrsl_ dtrsl_ 83a1e12872SBarry Smith #endif 84a1e12872SBarry Smith 85a1e12872SBarry Smith #else 86a1e12872SBarry Smith 87*1eb62cbbSBarry Smith #if defined(PARCH_cray) 88a1e12872SBarry Smith #define BLdot_ CDOTC 89a1e12872SBarry Smith #define BLnrm2_ SCNRM2 90a1e12872SBarry Smith #define BLscal_ CSCAL 91a1e12872SBarry Smith #define BLcopy_ CCOPY 92a1e12872SBarry Smith #define BLswap_ CSWAP 93a1e12872SBarry Smith #define BLaxpy_ CAXPY 94a1e12872SBarry Smith #define BLasum_ SCASUM 95a1e12872SBarry Smith #elif defined(FORTRANCAPS) 96a1e12872SBarry Smith #define BLdot_ ZDOTC 97a1e12872SBarry Smith #define BLnrm2_ DZNRM2 98a1e12872SBarry Smith #define BLscal_ ZSCAL 99a1e12872SBarry Smith #define BLcopy_ ZCOPY 100a1e12872SBarry Smith #define BLswap_ ZSWAP 101a1e12872SBarry Smith #define BLaxpy_ ZAXPY 102a1e12872SBarry Smith #define BLasum_ DZASUM 103a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 104a1e12872SBarry Smith #define BLdot_ zdotc 105a1e12872SBarry Smith #define BLnrm2_ dznrm2 106a1e12872SBarry Smith #define BLscal_ zscal 107a1e12872SBarry Smith #define BLcopy_ zcopy 108a1e12872SBarry Smith #define BLswap_ zswap 109a1e12872SBarry Smith #define BLaxpy_ zaxpy 110a1e12872SBarry Smith #define BLasum_ dzasum 111a1e12872SBarry Smith #else 112a1e12872SBarry Smith #define BLdot_ zdotc_ 113a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 114a1e12872SBarry Smith #define BLscal_ zscal_ 115a1e12872SBarry Smith #define BLcopy_ zcopy_ 116a1e12872SBarry Smith #define BLswap_ zswap_ 117a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 118a1e12872SBarry Smith #define BLasum_ dzasum_ 119a1e12872SBarry Smith #endif 120a1e12872SBarry Smith 121*1eb62cbbSBarry Smith #if defined(PARCH_cray) 122a1e12872SBarry Smith #define LApotrf_ CPOTRF 123a1e12872SBarry Smith #define LApotrs_ CPOTRS 124a1e12872SBarry Smith #define LAgemv_ CGEMV 125a1e12872SBarry Smith #define LAgetrf_ CGETRF 126a1e12872SBarry Smith #define LAgetrs_ CGETRS 127a1e12872SBarry Smith #define LAgemv_ CGEMV 128a1e12872SBarry Smith #define LAtrmv_ CTRMV 129a1e12872SBarry Smith #define LAtrsl_ CTRSL 130a1e12872SBarry Smith #define LAger_ CGER 131a1e12872SBarry Smith #elif defined(FORTRANCAPS) 132a1e12872SBarry Smith #define LApotrf_ ZPOTRF 133a1e12872SBarry Smith #define LApotrs_ ZPOTRS 134a1e12872SBarry Smith #define LAgemv_ ZGEMV 135a1e12872SBarry Smith #define LAgetrf_ ZGETRF 136a1e12872SBarry Smith #define LAgetrs_ ZGETRS 137a1e12872SBarry Smith #define LAger_ ZGER 138a1e12872SBarry Smith #define LAtrmv_ ZTRMV 139a1e12872SBarry Smith #define LAtrsl_ ZTRSL 140a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 141a1e12872SBarry Smith #define LApotrf_ zpotrf 142a1e12872SBarry Smith #define LApotrs_ zpotrs 143a1e12872SBarry Smith #define LAgemv_ zgemv 144a1e12872SBarry Smith #define LAgetrf_ zgetrf 145a1e12872SBarry Smith #define LAgetrs_ zgetrs 146a1e12872SBarry Smith #define LAger_ zger 147a1e12872SBarry Smith #define LAtrmv_ ztrmv 148a1e12872SBarry Smith #define LAtrsl_ ztrsl 149a1e12872SBarry Smith #else 150a1e12872SBarry Smith #define LApotrf_ zpotrf_ 151a1e12872SBarry Smith #define LApotrs_ zpotrs_ 152a1e12872SBarry Smith #define LAgemv_ zgemv_ 153a1e12872SBarry Smith #define LAgetrf_ zgetrf_ 154a1e12872SBarry Smith #define LAgetrs_ zgetrs_ 155a1e12872SBarry Smith #define LAger_ zger_ 156a1e12872SBarry Smith #define LAtrmv_ ztrmv_ 157a1e12872SBarry Smith #define LAtrsl_ ztrsl_ 158a1e12872SBarry Smith #endif 159a1e12872SBarry Smith 160a1e12872SBarry Smith #endif 161a1e12872SBarry Smith 162a1e12872SBarry Smith #if defined(__cplusplus) 163a1e12872SBarry Smith extern "C" { 164a1e12872SBarry Smith #endif 165a1e12872SBarry Smith 166*1eb62cbbSBarry Smith extern Scalar BLdot_(int*,Scalar*,int*,Scalar*,int*); 167*1eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 168*1eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 169*1eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 170*1eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 171*1eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 172a1e12872SBarry Smith 173*1eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 174*1eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 175*1eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 176a1e12872SBarry Smith Scalar*,Scalar*,int*); 177*1eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 178*1eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 179a1e12872SBarry Smith 180a1e12872SBarry Smith #if defined(__cplusplus) 181a1e12872SBarry Smith }; 182a1e12872SBarry Smith #endif 183a1e12872SBarry Smith 184a1e12872SBarry Smith #endif 185