1*c0534c1cSBarry Smith /* $Id: plapack.h,v 1.5 1995/06/21 15:29:45 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 15a1e12872SBarry Smith #include "ptscimpl.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) 23*c0534c1cSBarry 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) 33*c0534c1cSBarry 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) 43*c0534c1cSBarry 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 53*c0534c1cSBarry 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) 65*c0534c1cSBarry Smith #define LAormqr_(a,b,c,d,f,g,h,i,j,k,l,m,n) SORMQR(cptofcd((a),1),\ 66*c0534c1cSBarry Smith cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 67*c0534c1cSBarry Smith #define LAtrtrs_ STRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 68*c0534c1cSBarry 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) 79*c0534c1cSBarry Smith #define LAormqr_ SORMQR 80*c0534c1cSBarry 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) 89*c0534c1cSBarry Smith #define LAormqr_ DORMQR 90*c0534c1cSBarry 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) 98*c0534c1cSBarry Smith #define LAormqr_ dormqr 99*c0534c1cSBarry 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 107*c0534c1cSBarry Smith #define LAormqr_ dormqr_ 108*c0534c1cSBarry 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) 120*c0534c1cSBarry 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) 130*c0534c1cSBarry 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) 139*c0534c1cSBarry 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 149*c0534c1cSBarry 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) 161*c0534c1cSBarry Smith #define LAormqr_(a,b,c,d,f,g,h,i,j,k,l,m,n) CORMQR(cptofcd((a),1),\ 162*c0534c1cSBarry Smith cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 163*c0534c1cSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) CTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 164*c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1655392566eSBarry Smith #define LApotrf_(a,b,c,d,e) CPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1665392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1675392566eSBarry Smith (f),(g),(h)) 1685392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1695392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1705392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1715392566eSBarry Smith (f),(g),(h),(i)) 1725392566eSBarry Smith #define LAtrmv_ CTRMV 1735392566eSBarry Smith #define LAtrsl_ CTRSL 1745392566eSBarry Smith #elif defined(PARCH_cray) 175*c0534c1cSBarry Smith #define LAormqr_ CORMQR 176*c0534c1cSBarry Smith #define LAtrtrs_ CTRTRS 177a1e12872SBarry Smith #define LApotrf_ CPOTRF 178a1e12872SBarry Smith #define LApotrs_ CPOTRS 179a1e12872SBarry Smith #define LAgetrs_ CGETRS 180a1e12872SBarry Smith #define LAgemv_ CGEMV 181a1e12872SBarry Smith #define LAtrmv_ CTRMV 182a1e12872SBarry Smith #define LAtrsl_ CTRSL 183a1e12872SBarry Smith #elif defined(FORTRANCAPS) 184*c0534c1cSBarry Smith #define LAormqr_ ZORMQR 185*c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 186a1e12872SBarry Smith #define LApotrf_ ZPOTRF 187a1e12872SBarry Smith #define LApotrs_ ZPOTRS 188a1e12872SBarry Smith #define LAgemv_ ZGEMV 189a1e12872SBarry Smith #define LAgetrf_ ZGETRF 190a1e12872SBarry Smith #define LAgetrs_ ZGETRS 191a1e12872SBarry Smith #define LAtrmv_ ZTRMV 192a1e12872SBarry Smith #define LAtrsl_ ZTRSL 193a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 194*c0534c1cSBarry Smith #define LAormqr_ zormqr 195*c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 196a1e12872SBarry Smith #define LApotrf_ zpotrf 197a1e12872SBarry Smith #define LApotrs_ zpotrs 198a1e12872SBarry Smith #define LAgemv_ zgemv 199a1e12872SBarry Smith #define LAgetrs_ zgetrs 200a1e12872SBarry Smith #define LAtrmv_ ztrmv 201a1e12872SBarry Smith #define LAtrsl_ ztrsl 202a1e12872SBarry Smith #else 203*c0534c1cSBarry Smith #define LAormqr_ zormqr_ 204*c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs_ 205a1e12872SBarry Smith #define LApotrf_ zpotrf_ 206a1e12872SBarry Smith #define LApotrs_ zpotrs_ 207a1e12872SBarry Smith #define LAgemv_ zgemv_ 208a1e12872SBarry Smith #define LAgetrs_ zgetrs_ 209a1e12872SBarry Smith #define LAtrmv_ ztrmv_ 210a1e12872SBarry Smith #define LAtrsl_ ztrsl_ 211a1e12872SBarry Smith #endif 212a1e12872SBarry Smith 213a1e12872SBarry Smith #endif 214a1e12872SBarry Smith 215a1e12872SBarry Smith #if defined(__cplusplus) 216a1e12872SBarry Smith extern "C" { 217a1e12872SBarry Smith #endif 218a1e12872SBarry Smith 219126c565eSBarry Smith /* note that BLdot cannot be used with COMPLEX because it cannot 220126c565eSBarry Smith handle returing a double complex!! 221126c565eSBarry Smith */ 222126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*); 2231eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 2241eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 2251eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 2261eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 2271eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 2281eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 229*c0534c1cSBarry Smith extern void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 2305392566eSBarry Smith 2315392566eSBarry Smith #if defined(PARCH_t3d) 2325392566eSBarry Smith extern void CPOTRF(_fcd,int*,Scalar*,int*,int*); 2335392566eSBarry Smith extern void CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 2345392566eSBarry Smith Scalar*,Scalar*,int*); 2355392566eSBarry Smith extern void CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2365392566eSBarry Smith extern void CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2375392566eSBarry Smith #else 238*c0534c1cSBarry Smith extern void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 239*c0534c1cSBarry Smith int*,Scalar*,int*,int*); 240*c0534c1cSBarry Smith extern void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 241*c0534c1cSBarry Smith int*); 2421eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 2431eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 244a1e12872SBarry Smith Scalar*,Scalar*,int*); 2451eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2461eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2475392566eSBarry Smith #endif 248a1e12872SBarry Smith 249a1e12872SBarry Smith #if defined(__cplusplus) 250a1e12872SBarry Smith }; 251a1e12872SBarry Smith #endif 252a1e12872SBarry Smith 253a1e12872SBarry Smith #endif 254