1*08d0dac7SLois Curfman McInnes /* $Id: plapack.h,v 1.11 1995/10/12 02:31:54 curfman Exp curfman $ */ 2a1e12872SBarry Smith /* 3c0581c19SLois Curfman McInnes This file provides some name space protection from LAPACK and BLAS and 4c0581c19SLois Curfman McInnes allows the appropriate single or double precision version to be used. 5c0581c19SLois Curfman McInnes This file 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 25c0581c19SLois Curfman McInnes #define LAgetf2_ SGETF2 26a1e12872SBarry Smith #define BLdot_ SDOT 27a1e12872SBarry Smith #define BLnrm2_ SNRM2 28a1e12872SBarry Smith #define BLscal_ SSCAL 29a1e12872SBarry Smith #define BLcopy_ SCOPY 30a1e12872SBarry Smith #define BLswap_ SSWAP 31a1e12872SBarry Smith #define BLaxpy_ SAXPY 32a1e12872SBarry Smith #define BLasum_ SASUM 33a1e12872SBarry Smith #elif defined(FORTRANCAPS) 34c0534c1cSBarry Smith #define LAgeqrf_ DGEQRF 355392566eSBarry Smith #define LAgetrf_ DGETRF 36c0581c19SLois Curfman McInnes #define LAgetf2_ DGETF2 37a1e12872SBarry Smith #define BLdot_ DDOT 38a1e12872SBarry Smith #define BLnrm2_ DNRM2 39a1e12872SBarry Smith #define BLscal_ DSCAL 40a1e12872SBarry Smith #define BLcopy_ DCOPY 41a1e12872SBarry Smith #define BLswap_ DSWAP 42a1e12872SBarry Smith #define BLaxpy_ DAXPY 43a1e12872SBarry Smith #define BLasum_ DASUM 44a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 45c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf 465392566eSBarry Smith #define LAgetrf_ dgetrf 47c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2 48a1e12872SBarry Smith #define BLdot_ ddot 49a1e12872SBarry Smith #define BLnrm2_ dnrm2 50a1e12872SBarry Smith #define BLscal_ dscal 51a1e12872SBarry Smith #define BLcopy_ dcopy 52a1e12872SBarry Smith #define BLswap_ dswap 53a1e12872SBarry Smith #define BLaxpy_ daxpy 54a1e12872SBarry Smith #define BLasum_ dasum 55a1e12872SBarry Smith #else 56c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 575392566eSBarry Smith #define LAgetrf_ dgetrf_ 58c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 59a1e12872SBarry Smith #define BLdot_ ddot_ 60a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 61a1e12872SBarry Smith #define BLscal_ dscal_ 62a1e12872SBarry Smith #define BLcopy_ dcopy_ 63a1e12872SBarry Smith #define BLswap_ dswap_ 64a1e12872SBarry Smith #define BLaxpy_ daxpy_ 65a1e12872SBarry Smith #define BLasum_ dasum_ 66a1e12872SBarry Smith #endif 67a1e12872SBarry Smith 685392566eSBarry Smith #if defined(PARCH_t3d) 69bbb6d6a8SBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) SORMQR(_cptofcd((a),1),\ 70bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 71bbb6d6a8SBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) STRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 72c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 735392566eSBarry Smith #define LApotrf_(a,b,c,d,e) SPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 745392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) SPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 755392566eSBarry Smith (f),(g),(h)) 765392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) SGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 775392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 785392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) SGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 795392566eSBarry Smith (f),(g),(h),(i)) 805392566eSBarry Smith #define LAtrmv_ STRMV 815392566eSBarry Smith #define LAtrsl_ STRSL 825392566eSBarry Smith #elif defined(PARCH_cray) 83c0534c1cSBarry Smith #define LAormqr_ SORMQR 84c0534c1cSBarry Smith #define LAtrtrs_ STRTRS 85a1e12872SBarry Smith #define LApotrf_ SPOTRF 86a1e12872SBarry Smith #define LApotrs_ SPOTRS 87a1e12872SBarry Smith #define LAgemv_ SGEMV 88a1e12872SBarry Smith #define LAgetrs_ SGETRS 89a1e12872SBarry Smith #define LAgemv_ SGEMV 90a1e12872SBarry Smith #define LAtrmv_ STRMV 91a1e12872SBarry Smith #define LAtrsl_ STRSL 92a1e12872SBarry Smith #elif defined(FORTRANCAPS) 93c0534c1cSBarry Smith #define LAormqr_ DORMQR 94c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 95a1e12872SBarry Smith #define LApotrf_ DPOTRF 96a1e12872SBarry Smith #define LApotrs_ DPOTRS 97a1e12872SBarry Smith #define LAgemv_ DGEMV 98a1e12872SBarry Smith #define LAgetrs_ DGETRS 99a1e12872SBarry Smith #define LAtrmv_ DTRMV 100a1e12872SBarry Smith #define LAtrsl_ DTRSL 101a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 102c0534c1cSBarry Smith #define LAormqr_ dormqr 103c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 104a1e12872SBarry Smith #define LApotrf_ dpotrf 105a1e12872SBarry Smith #define LApotrs_ dpotrs 106a1e12872SBarry Smith #define LAgemv_ dgemv 107a1e12872SBarry Smith #define LAgetrs_ dgetrs 108a1e12872SBarry Smith #define LAtrmv_ dtrmv 109a1e12872SBarry Smith #define LAtrsl_ dtrsl 110a1e12872SBarry Smith #else 111c0534c1cSBarry Smith #define LAormqr_ dormqr_ 112c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs_ 113a1e12872SBarry Smith #define LApotrf_ dpotrf_ 114a1e12872SBarry Smith #define LApotrs_ dpotrs_ 115a1e12872SBarry Smith #define LAgemv_ dgemv_ 116a1e12872SBarry Smith #define LAgetrs_ dgetrs_ 117a1e12872SBarry Smith #define LAtrmv_ dtrmv_ 118a1e12872SBarry Smith #define LAtrsl_ dtrsl_ 119a1e12872SBarry Smith #endif 120a1e12872SBarry Smith 121a1e12872SBarry Smith #else 122a1e12872SBarry Smith 1235392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d) 124c0534c1cSBarry Smith #define LAgeqrf_ CGEQRF 125a1e12872SBarry Smith #define BLdot_ CDOTC 126a1e12872SBarry Smith #define BLnrm2_ SCNRM2 127a1e12872SBarry Smith #define BLscal_ CSCAL 128a1e12872SBarry Smith #define BLcopy_ CCOPY 129a1e12872SBarry Smith #define BLswap_ CSWAP 130a1e12872SBarry Smith #define BLaxpy_ CAXPY 131a1e12872SBarry Smith #define BLasum_ SCASUM 1325392566eSBarry Smith #define LAgetrf_ CGETRF 133*08d0dac7SLois Curfman McInnes #define LAgetf2_ CGETF2 134a1e12872SBarry Smith #elif defined(FORTRANCAPS) 135c0534c1cSBarry Smith #define LAgeqrf_ ZGEQRF 136a1e12872SBarry Smith #define BLdot_ ZDOTC 137a1e12872SBarry Smith #define BLnrm2_ DZNRM2 138a1e12872SBarry Smith #define BLscal_ ZSCAL 139a1e12872SBarry Smith #define BLcopy_ ZCOPY 140a1e12872SBarry Smith #define BLswap_ ZSWAP 141a1e12872SBarry Smith #define BLaxpy_ ZAXPY 142a1e12872SBarry Smith #define BLasum_ DZASUM 143a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 144c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf 1455392566eSBarry Smith #define LAgetrf_ zgetrf 146*08d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2 147a1e12872SBarry Smith #define BLdot_ zdotc 148a1e12872SBarry Smith #define BLnrm2_ dznrm2 149a1e12872SBarry Smith #define BLscal_ zscal 150a1e12872SBarry Smith #define BLcopy_ zcopy 151a1e12872SBarry Smith #define BLswap_ zswap 152a1e12872SBarry Smith #define BLaxpy_ zaxpy 153a1e12872SBarry Smith #define BLasum_ dzasum 154a1e12872SBarry Smith #else 155c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 1565392566eSBarry Smith #define LAgetrf_ zgetrf_ 157*08d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 158a1e12872SBarry Smith #define BLdot_ zdotc_ 159a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 160a1e12872SBarry Smith #define BLscal_ zscal_ 161a1e12872SBarry Smith #define BLcopy_ zcopy_ 162a1e12872SBarry Smith #define BLswap_ zswap_ 163a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 164a1e12872SBarry Smith #define BLasum_ dzasum_ 165a1e12872SBarry Smith #endif 166a1e12872SBarry Smith 1675392566eSBarry Smith #if defined(PARCH_t3d) 168c0534c1cSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) CTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 169c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1705392566eSBarry Smith #define LApotrf_(a,b,c,d,e) CPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1715392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1725392566eSBarry Smith (f),(g),(h)) 1735392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1745392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1755392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1765392566eSBarry Smith (f),(g),(h),(i)) 1775392566eSBarry Smith #define LAtrmv_ CTRMV 1785392566eSBarry Smith #define LAtrsl_ CTRSL 1795392566eSBarry Smith #elif defined(PARCH_cray) 180c0534c1cSBarry Smith #define LAormqr_ CORMQR 181c0534c1cSBarry Smith #define LAtrtrs_ CTRTRS 182a1e12872SBarry Smith #define LApotrf_ CPOTRF 183a1e12872SBarry Smith #define LApotrs_ CPOTRS 184a1e12872SBarry Smith #define LAgetrs_ CGETRS 185a1e12872SBarry Smith #define LAgemv_ CGEMV 186a1e12872SBarry Smith #define LAtrmv_ CTRMV 187a1e12872SBarry Smith #define LAtrsl_ CTRSL 188a1e12872SBarry Smith #elif defined(FORTRANCAPS) 189c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 190a1e12872SBarry Smith #define LApotrf_ ZPOTRF 191a1e12872SBarry Smith #define LApotrs_ ZPOTRS 192a1e12872SBarry Smith #define LAgemv_ ZGEMV 193a1e12872SBarry Smith #define LAgetrf_ ZGETRF 194*08d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 195a1e12872SBarry Smith #define LAgetrs_ ZGETRS 196a1e12872SBarry Smith #define LAtrmv_ ZTRMV 197a1e12872SBarry Smith #define LAtrsl_ ZTRSL 198a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE) 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 #else 207c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs_ 208a1e12872SBarry Smith #define LApotrf_ zpotrf_ 209a1e12872SBarry Smith #define LApotrs_ zpotrs_ 210a1e12872SBarry Smith #define LAgemv_ zgemv_ 211a1e12872SBarry Smith #define LAgetrs_ zgetrs_ 212a1e12872SBarry Smith #define LAtrmv_ ztrmv_ 213a1e12872SBarry Smith #define LAtrsl_ ztrsl_ 214a1e12872SBarry Smith #endif 215a1e12872SBarry Smith 216a1e12872SBarry Smith #endif 217a1e12872SBarry Smith 218a1e12872SBarry Smith #if defined(__cplusplus) 219a1e12872SBarry Smith extern "C" { 220a1e12872SBarry Smith #endif 221a1e12872SBarry Smith 222126c565eSBarry Smith /* note that BLdot cannot be used with COMPLEX because it cannot 223126c565eSBarry Smith handle returing a double complex!! 224126c565eSBarry Smith */ 225126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*); 2261eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 2271eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 2281eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 2291eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 2301eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 2311eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 232bae8960eSLois Curfman McInnes extern void LAgetf2_(int*,int*,Scalar*,int*,int*,int*); 233c0534c1cSBarry Smith extern void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 2345392566eSBarry Smith 2355392566eSBarry Smith #if defined(PARCH_t3d) 2365392566eSBarry Smith extern void CPOTRF(_fcd,int*,Scalar*,int*,int*); 2375392566eSBarry Smith extern void CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 2385392566eSBarry Smith Scalar*,Scalar*,int*); 2395392566eSBarry Smith extern void CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2405392566eSBarry Smith extern void CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2415392566eSBarry Smith #else 242c0534c1cSBarry Smith extern void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 243c0534c1cSBarry Smith int*,Scalar*,int*,int*); 244c0534c1cSBarry Smith extern void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 245c0534c1cSBarry Smith int*); 2461eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 2471eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 248a1e12872SBarry Smith Scalar*,Scalar*,int*); 2491eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 2501eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 2515392566eSBarry Smith #endif 252a1e12872SBarry Smith 253a1e12872SBarry Smith #if defined(__cplusplus) 25402834360SBarry Smith } 255a1e12872SBarry Smith #endif 256a1e12872SBarry Smith 257a1e12872SBarry Smith #endif 258