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