1*126c565eSBarry Smith /* $Id: plapack.h,v 1.4 1995/06/14 17:25:19 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 215392566eSBarry Smith 22a1e12872SBarry Smith #if !defined(PETSC_COMPLEX) 235392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d) 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) 335392566eSBarry 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) 425392566eSBarry 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 515392566eSBarry 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 615392566eSBarry Smith #if defined(PARCH_t3d) 625392566eSBarry Smith #define LApotrf_(a,b,c,d,e) SPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 635392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) SPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 645392566eSBarry Smith (f),(g),(h)) 655392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) SGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 665392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 675392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) SGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 685392566eSBarry Smith (f),(g),(h),(i)) 695392566eSBarry Smith #define LAtrmv_ STRMV 705392566eSBarry Smith #define LAtrsl_ STRSL 715392566eSBarry 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 1045392566eSBarry 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 1125392566eSBarry 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) 1225392566eSBarry 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 1315392566eSBarry 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 1415392566eSBarry Smith #if defined(PARCH_t3d) 1425392566eSBarry Smith #define LApotrf_(a,b,c,d,e) CPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1435392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1445392566eSBarry Smith (f),(g),(h)) 1455392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1465392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1475392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1485392566eSBarry Smith (f),(g),(h),(i)) 1495392566eSBarry Smith #define LAtrmv_ CTRMV 1505392566eSBarry Smith #define LAtrsl_ CTRSL 1515392566eSBarry 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 188*126c565eSBarry Smith /* note that BLdot cannot be used with COMPLEX because it cannot 189*126c565eSBarry Smith handle returing a double complex!! 190*126c565eSBarry Smith */ 191*126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*); 1921eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 1931eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 1941eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 1951eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 1961eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 1971eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 1985392566eSBarry Smith 1995392566eSBarry Smith #if defined(PARCH_t3d) 2005392566eSBarry Smith extern void CPOTRF(_fcd,int*,Scalar*,int*,int*); 2015392566eSBarry Smith extern void CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 2025392566eSBarry Smith Scalar*,Scalar*,int*); 2035392566eSBarry Smith extern void CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2045392566eSBarry Smith extern void CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2055392566eSBarry Smith #else 2061eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 2071eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 208a1e12872SBarry Smith Scalar*,Scalar*,int*); 2091eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2101eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2115392566eSBarry Smith #endif 212a1e12872SBarry Smith 213a1e12872SBarry Smith #if defined(__cplusplus) 214a1e12872SBarry Smith }; 215a1e12872SBarry Smith #endif 216a1e12872SBarry Smith 217a1e12872SBarry Smith #endif 218