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