1*02834360SBarry Smith /* $Id: plapack.h,v 1.8 1995/08/07 22:02:01 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. 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 95392566eSBarry Smith Cray T3D. Yet another reason to hate ... 105392566eSBarry Smith 11a1e12872SBarry Smith */ 12a1e12872SBarry Smith #if !defined(_PLAPACK_H) 13a1e12872SBarry Smith #define _PLAPACK_H 14a1e12872SBarry Smith 1519b02663SBarry Smith #include "petsc.h" 16a1e12872SBarry Smith 175392566eSBarry Smith #if defined(PARCH_t3d) 185392566eSBarry Smith #include "fortran.h" 195392566eSBarry Smith #endif 205392566eSBarry Smith 21a1e12872SBarry Smith #if !defined(PETSC_COMPLEX) 225392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d) 23c0534c1cSBarry Smith #define LAgeqrf_ SGEQRF 245392566eSBarry 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) 33c0534c1cSBarry Smith #define LAgeqrf_ DGEQRF 345392566eSBarry Smith #define LAgetrf_ DGETRF 35a1e12872SBarry Smith #define BLdot_ DDOT 36a1e12872SBarry Smith #define BLnrm2_ DNRM2 37a1e12872SBarry Smith #define BLscal_ DSCAL 38a1e12872SBarry Smith #define BLcopy_ DCOPY 39a1e12872SBarry Smith #define BLswap_ DSWAP 40a1e12872SBarry Smith #define BLaxpy_ DAXPY 41a1e12872SBarry Smith #define BLasum_ DASUM 42a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 43c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf 445392566eSBarry Smith #define LAgetrf_ dgetrf 45a1e12872SBarry Smith #define BLdot_ ddot 46a1e12872SBarry Smith #define BLnrm2_ dnrm2 47a1e12872SBarry Smith #define BLscal_ dscal 48a1e12872SBarry Smith #define BLcopy_ dcopy 49a1e12872SBarry Smith #define BLswap_ dswap 50a1e12872SBarry Smith #define BLaxpy_ daxpy 51a1e12872SBarry Smith #define BLasum_ dasum 52a1e12872SBarry Smith #else 53c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 545392566eSBarry Smith #define LAgetrf_ dgetrf_ 55a1e12872SBarry Smith #define BLdot_ ddot_ 56a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 57a1e12872SBarry Smith #define BLscal_ dscal_ 58a1e12872SBarry Smith #define BLcopy_ dcopy_ 59a1e12872SBarry Smith #define BLswap_ dswap_ 60a1e12872SBarry Smith #define BLaxpy_ daxpy_ 61a1e12872SBarry Smith #define BLasum_ dasum_ 62a1e12872SBarry Smith #endif 63a1e12872SBarry Smith 645392566eSBarry Smith #if defined(PARCH_t3d) 65bbb6d6a8SBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) SORMQR(_cptofcd((a),1),\ 66bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 67bbb6d6a8SBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) STRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 68c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 695392566eSBarry Smith #define LApotrf_(a,b,c,d,e) SPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 705392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) SPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 715392566eSBarry Smith (f),(g),(h)) 725392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) SGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 735392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 745392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) SGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 755392566eSBarry Smith (f),(g),(h),(i)) 765392566eSBarry Smith #define LAtrmv_ STRMV 775392566eSBarry Smith #define LAtrsl_ STRSL 785392566eSBarry Smith #elif defined(PARCH_cray) 79c0534c1cSBarry Smith #define LAormqr_ SORMQR 80c0534c1cSBarry Smith #define LAtrtrs_ STRTRS 81a1e12872SBarry Smith #define LApotrf_ SPOTRF 82a1e12872SBarry Smith #define LApotrs_ SPOTRS 83a1e12872SBarry Smith #define LAgemv_ SGEMV 84a1e12872SBarry Smith #define LAgetrs_ SGETRS 85a1e12872SBarry Smith #define LAgemv_ SGEMV 86a1e12872SBarry Smith #define LAtrmv_ STRMV 87a1e12872SBarry Smith #define LAtrsl_ STRSL 88a1e12872SBarry Smith #elif defined(FORTRANCAPS) 89c0534c1cSBarry Smith #define LAormqr_ DORMQR 90c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 91a1e12872SBarry Smith #define LApotrf_ DPOTRF 92a1e12872SBarry Smith #define LApotrs_ DPOTRS 93a1e12872SBarry Smith #define LAgemv_ DGEMV 94a1e12872SBarry Smith #define LAgetrs_ DGETRS 95a1e12872SBarry Smith #define LAtrmv_ DTRMV 96a1e12872SBarry Smith #define LAtrsl_ DTRSL 97a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 98c0534c1cSBarry Smith #define LAormqr_ dormqr 99c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 100a1e12872SBarry Smith #define LApotrf_ dpotrf 101a1e12872SBarry Smith #define LApotrs_ dpotrs 102a1e12872SBarry Smith #define LAgemv_ dgemv 103a1e12872SBarry Smith #define LAgetrs_ dgetrs 104a1e12872SBarry Smith #define LAtrmv_ dtrmv 105a1e12872SBarry Smith #define LAtrsl_ dtrsl 106a1e12872SBarry Smith #else 107c0534c1cSBarry Smith #define LAormqr_ dormqr_ 108c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs_ 109a1e12872SBarry Smith #define LApotrf_ dpotrf_ 110a1e12872SBarry Smith #define LApotrs_ dpotrs_ 111a1e12872SBarry Smith #define LAgemv_ dgemv_ 112a1e12872SBarry Smith #define LAgetrs_ dgetrs_ 113a1e12872SBarry Smith #define LAtrmv_ dtrmv_ 114a1e12872SBarry Smith #define LAtrsl_ dtrsl_ 115a1e12872SBarry Smith #endif 116a1e12872SBarry Smith 117a1e12872SBarry Smith #else 118a1e12872SBarry Smith 1195392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d) 120c0534c1cSBarry Smith #define LAgeqrf_ CGEQRF 121a1e12872SBarry Smith #define BLdot_ CDOTC 122a1e12872SBarry Smith #define BLnrm2_ SCNRM2 123a1e12872SBarry Smith #define BLscal_ CSCAL 124a1e12872SBarry Smith #define BLcopy_ CCOPY 125a1e12872SBarry Smith #define BLswap_ CSWAP 126a1e12872SBarry Smith #define BLaxpy_ CAXPY 127a1e12872SBarry Smith #define BLasum_ SCASUM 1285392566eSBarry Smith #define LAgetrf_ CGETRF 129a1e12872SBarry Smith #elif defined(FORTRANCAPS) 130c0534c1cSBarry Smith #define LAgeqrf_ ZGEQRF 131a1e12872SBarry Smith #define BLdot_ ZDOTC 132a1e12872SBarry Smith #define BLnrm2_ DZNRM2 133a1e12872SBarry Smith #define BLscal_ ZSCAL 134a1e12872SBarry Smith #define BLcopy_ ZCOPY 135a1e12872SBarry Smith #define BLswap_ ZSWAP 136a1e12872SBarry Smith #define BLaxpy_ ZAXPY 137a1e12872SBarry Smith #define BLasum_ DZASUM 138a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 139c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf 1405392566eSBarry Smith #define LAgetrf_ zgetrf 141a1e12872SBarry Smith #define BLdot_ zdotc 142a1e12872SBarry Smith #define BLnrm2_ dznrm2 143a1e12872SBarry Smith #define BLscal_ zscal 144a1e12872SBarry Smith #define BLcopy_ zcopy 145a1e12872SBarry Smith #define BLswap_ zswap 146a1e12872SBarry Smith #define BLaxpy_ zaxpy 147a1e12872SBarry Smith #define BLasum_ dzasum 148a1e12872SBarry Smith #else 149c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 1505392566eSBarry Smith #define LAgetrf_ zgetrf_ 151a1e12872SBarry Smith #define BLdot_ zdotc_ 152a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 153a1e12872SBarry Smith #define BLscal_ zscal_ 154a1e12872SBarry Smith #define BLcopy_ zcopy_ 155a1e12872SBarry Smith #define BLswap_ zswap_ 156a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 157a1e12872SBarry Smith #define BLasum_ dzasum_ 158a1e12872SBarry Smith #endif 159a1e12872SBarry Smith 1605392566eSBarry Smith #if defined(PARCH_t3d) 161c0534c1cSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) CTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 162c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1635392566eSBarry Smith #define LApotrf_(a,b,c,d,e) CPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1645392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1655392566eSBarry Smith (f),(g),(h)) 1665392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1675392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1685392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1695392566eSBarry Smith (f),(g),(h),(i)) 1705392566eSBarry Smith #define LAtrmv_ CTRMV 1715392566eSBarry Smith #define LAtrsl_ CTRSL 1725392566eSBarry Smith #elif defined(PARCH_cray) 173c0534c1cSBarry Smith #define LAormqr_ CORMQR 174c0534c1cSBarry Smith #define LAtrtrs_ CTRTRS 175a1e12872SBarry Smith #define LApotrf_ CPOTRF 176a1e12872SBarry Smith #define LApotrs_ CPOTRS 177a1e12872SBarry Smith #define LAgetrs_ CGETRS 178a1e12872SBarry Smith #define LAgemv_ CGEMV 179a1e12872SBarry Smith #define LAtrmv_ CTRMV 180a1e12872SBarry Smith #define LAtrsl_ CTRSL 181a1e12872SBarry Smith #elif defined(FORTRANCAPS) 182c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 183a1e12872SBarry Smith #define LApotrf_ ZPOTRF 184a1e12872SBarry Smith #define LApotrs_ ZPOTRS 185a1e12872SBarry Smith #define LAgemv_ ZGEMV 186a1e12872SBarry Smith #define LAgetrf_ ZGETRF 187a1e12872SBarry Smith #define LAgetrs_ ZGETRS 188a1e12872SBarry Smith #define LAtrmv_ ZTRMV 189a1e12872SBarry Smith #define LAtrsl_ ZTRSL 190a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 191c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 192a1e12872SBarry Smith #define LApotrf_ zpotrf 193a1e12872SBarry Smith #define LApotrs_ zpotrs 194a1e12872SBarry Smith #define LAgemv_ zgemv 195a1e12872SBarry Smith #define LAgetrs_ zgetrs 196a1e12872SBarry Smith #define LAtrmv_ ztrmv 197a1e12872SBarry Smith #define LAtrsl_ ztrsl 198a1e12872SBarry Smith #else 199c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs_ 200a1e12872SBarry Smith #define LApotrf_ zpotrf_ 201a1e12872SBarry Smith #define LApotrs_ zpotrs_ 202a1e12872SBarry Smith #define LAgemv_ zgemv_ 203a1e12872SBarry Smith #define LAgetrs_ zgetrs_ 204a1e12872SBarry Smith #define LAtrmv_ ztrmv_ 205a1e12872SBarry Smith #define LAtrsl_ ztrsl_ 206a1e12872SBarry Smith #endif 207a1e12872SBarry Smith 208a1e12872SBarry Smith #endif 209a1e12872SBarry Smith 210a1e12872SBarry Smith #if defined(__cplusplus) 211a1e12872SBarry Smith extern "C" { 212a1e12872SBarry Smith #endif 213a1e12872SBarry Smith 214126c565eSBarry Smith /* note that BLdot cannot be used with COMPLEX because it cannot 215126c565eSBarry Smith handle returing a double complex!! 216126c565eSBarry Smith */ 217126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*); 2181eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 2191eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 2201eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 2211eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 2221eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 2231eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 224c0534c1cSBarry Smith extern void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 2255392566eSBarry Smith 2265392566eSBarry Smith #if defined(PARCH_t3d) 2275392566eSBarry Smith extern void CPOTRF(_fcd,int*,Scalar*,int*,int*); 2285392566eSBarry Smith extern void CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 2295392566eSBarry Smith Scalar*,Scalar*,int*); 2305392566eSBarry Smith extern void CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2315392566eSBarry Smith extern void CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2325392566eSBarry Smith #else 233c0534c1cSBarry Smith extern void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 234c0534c1cSBarry Smith int*,Scalar*,int*,int*); 235c0534c1cSBarry Smith extern void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 236c0534c1cSBarry Smith int*); 2371eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 2381eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 239a1e12872SBarry Smith Scalar*,Scalar*,int*); 2401eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2411eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2425392566eSBarry Smith #endif 243a1e12872SBarry Smith 244a1e12872SBarry Smith #if defined(__cplusplus) 245*02834360SBarry Smith } 246a1e12872SBarry Smith #endif 247a1e12872SBarry Smith 248a1e12872SBarry Smith #endif 249