1*639f9d9dSBarry Smith /* $Id: plapack.h,v 1.23 1996/09/12 16:28:52 bsmith Exp bsmith $ */ 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 178f4c8dbaSBarry Smith /* 188f4c8dbaSBarry Smith This include file on the Cray T3D defines the interface between 198f4c8dbaSBarry Smith Fortran and C representations of charactor strings. 208f4c8dbaSBarry Smith */ 218f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 225392566eSBarry Smith #include "fortran.h" 235392566eSBarry Smith #endif 245392566eSBarry Smith 25a1e12872SBarry Smith #if !defined(PETSC_COMPLEX) 264eeb42bcSBarry Smith 274eeb42bcSBarry Smith /* 284eeb42bcSBarry Smith These are real case with no character string arguments 294eeb42bcSBarry Smith */ 308f4c8dbaSBarry Smith 318f4c8dbaSBarry Smith #if defined(USES_FORTRAN_SINGLE) 328f4c8dbaSBarry Smith /* 338f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 348f4c8dbaSBarry Smith */ 358f4c8dbaSBarry Smith #define DGEQRF SGEQRF 368f4c8dbaSBarry Smith #define DGETRF SGETRF 378f4c8dbaSBarry Smith #define DDOT SDOT 388f4c8dbaSBarry Smith #define DNRM2 SNRM2 398f4c8dbaSBarry Smith #define DSCAL SSCAL 408f4c8dbaSBarry Smith #define DCOPY SCOPY 418f4c8dbaSBarry Smith #define DSWAP SSWAP 428f4c8dbaSBarry Smith #define DAXPY SAXPY 438f4c8dbaSBarry Smith #define DASUM SASUM 448f4c8dbaSBarry Smith #define DSORMQR SORMQR 458f4c8dbaSBarry Smith #define DTRTRS STRTRS 468f4c8dbaSBarry Smith #define DPOTRF SPOTRF 478f4c8dbaSBarry Smith #define DPOTRS SPOTRS 488f4c8dbaSBarry Smith #define DGEMV SGEMV 498f4c8dbaSBarry Smith #define DGETRS SGETRS 508f4c8dbaSBarry Smith #define DGETRS SGETRS 518f4c8dbaSBarry Smith #define DGEMM SGEMM 528f4c8dbaSBarry Smith #define DGESVD SGESVD 53d4fbbf0eSBarry Smith #define DGEEV SGEEV 548f4c8dbaSBarry Smith #define DTRMV STRMV 558f4c8dbaSBarry Smith #define DTRSL STRSL 568f4c8dbaSBarry Smith #endif 578f4c8dbaSBarry Smith 588f4c8dbaSBarry Smith #if defined(HAVE_FORTRAN_CAPS) 59c0534c1cSBarry Smith #define LAgeqrf_ DGEQRF 605392566eSBarry Smith #define LAgetrf_ DGETRF 61c0581c19SLois Curfman McInnes #define LAgetf2_ DGETF2 62a1e12872SBarry Smith #define BLdot_ DDOT 63a1e12872SBarry Smith #define BLnrm2_ DNRM2 64a1e12872SBarry Smith #define BLscal_ DSCAL 65a1e12872SBarry Smith #define BLcopy_ DCOPY 66a1e12872SBarry Smith #define BLswap_ DSWAP 67a1e12872SBarry Smith #define BLaxpy_ DAXPY 68a1e12872SBarry Smith #define BLasum_ DASUM 69227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 70c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf 715392566eSBarry Smith #define LAgetrf_ dgetrf 72c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2 73a1e12872SBarry Smith #define BLdot_ ddot 74a1e12872SBarry Smith #define BLnrm2_ dnrm2 75a1e12872SBarry Smith #define BLscal_ dscal 76a1e12872SBarry Smith #define BLcopy_ dcopy 77a1e12872SBarry Smith #define BLswap_ dswap 78a1e12872SBarry Smith #define BLaxpy_ daxpy 79a1e12872SBarry Smith #define BLasum_ dasum 80a1e12872SBarry Smith #else 81c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 825392566eSBarry Smith #define LAgetrf_ dgetrf_ 83c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 84a1e12872SBarry Smith #define BLdot_ ddot_ 85a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 86a1e12872SBarry Smith #define BLscal_ dscal_ 87a1e12872SBarry Smith #define BLcopy_ dcopy_ 88a1e12872SBarry Smith #define BLswap_ dswap_ 89a1e12872SBarry Smith #define BLaxpy_ daxpy_ 90a1e12872SBarry Smith #define BLasum_ dasum_ 91a1e12872SBarry Smith #endif 92a1e12872SBarry Smith 934eeb42bcSBarry Smith /* 944eeb42bcSBarry Smith Real with character string arguments. 954eeb42bcSBarry Smith */ 968f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 978f4c8dbaSBarry Smith /* 988f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 998f4c8dbaSBarry Smith the HAVE_FORTRAN_CAPS option. This is true on the Cray T3d. 1008f4c8dbaSBarry Smith */ 1018f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),\ 102bbb6d6a8SBarry Smith _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 1038f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 104c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1058f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 1068f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1075392566eSBarry Smith (f),(g),(h)) 1088f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 1095392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 1108f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1115392566eSBarry Smith (f),(g),(h),(i)) 1128f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 1134eeb42bcSBarry Smith (f),(g),(h),(i)) 1148f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \ 1154eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 1164eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 11721c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \ 118af6b99e9SBarry Smith _cptofcd((a),1),(c),(d),(e),\ 11921c89e3eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 120d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \ 121d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 122d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 1238f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1248f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 125227d817aSBarry Smith #elif defined(HAVE_FORTRAN_CAPS) 126c0534c1cSBarry Smith #define LAormqr_ DORMQR 127c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 128a1e12872SBarry Smith #define LApotrf_ DPOTRF 129a1e12872SBarry Smith #define LApotrs_ DPOTRS 130a1e12872SBarry Smith #define LAgemv_ DGEMV 131a1e12872SBarry Smith #define LAgetrs_ DGETRS 132a1e12872SBarry Smith #define LAtrmv_ DTRMV 133a1e12872SBarry Smith #define LAtrsl_ DTRSL 134af6b99e9SBarry Smith #define LAgesvd_ DGESVD 135d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1364eeb42bcSBarry Smith #define BLgemm_ DGEMM 137227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 138c0534c1cSBarry Smith #define LAormqr_ dormqr 139c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 140a1e12872SBarry Smith #define LApotrf_ dpotrf 141a1e12872SBarry Smith #define LApotrs_ dpotrs 142a1e12872SBarry Smith #define LAgemv_ dgemv 143a1e12872SBarry Smith #define LAgetrs_ dgetrs 144a1e12872SBarry Smith #define LAtrmv_ dtrmv 145a1e12872SBarry Smith #define LAtrsl_ dtrsl 1464eeb42bcSBarry Smith #define BLgemm_ dgemm 147af6b99e9SBarry Smith #define LAgesvd_ dgesvd 148d4fbbf0eSBarry Smith #define LAgeev_ dgeev 149a1e12872SBarry Smith #else 150c0534c1cSBarry Smith #define LAormqr_ dormqr_ 151c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs_ 152a1e12872SBarry Smith #define LApotrf_ dpotrf_ 153a1e12872SBarry Smith #define LApotrs_ dpotrs_ 154a1e12872SBarry Smith #define LAgemv_ dgemv_ 155a1e12872SBarry Smith #define LAgetrs_ dgetrs_ 156a1e12872SBarry Smith #define LAtrmv_ dtrmv_ 157a1e12872SBarry Smith #define LAtrsl_ dtrsl_ 1584eeb42bcSBarry Smith #define BLgemm_ dgemm_ 159af6b99e9SBarry Smith #define LAgesvd_ dgesvd_ 160d4fbbf0eSBarry Smith #define LAgeev_ dgeev_ 161a1e12872SBarry Smith #endif 162a1e12872SBarry Smith 163a1e12872SBarry Smith #else 1644eeb42bcSBarry Smith /* 1654eeb42bcSBarry Smith Complex with no character string arguments 1664eeb42bcSBarry Smith */ 1678f4c8dbaSBarry Smith #if defined(USES_FORTRAN_SINGLE) 1688f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 1698f4c8dbaSBarry Smith #define ZDOTC CDOTC 1708f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 1718f4c8dbaSBarry Smith #define ZSCAL CSCAL 1728f4c8dbaSBarry Smith #define ZCOPY CCOPY 1738f4c8dbaSBarry Smith #define ZSWAP CSWAP 1748f4c8dbaSBarry Smith #define ZAXPY CAXPY 1758f4c8dbaSBarry Smith #define DZASUM SCASUM 1768f4c8dbaSBarry Smith #define ZGETRF CGETRF 1778f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 1788f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 1798f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 1808f4c8dbaSBarry Smith #define ZGEMV CGEMV 1818f4c8dbaSBarry Smith #define ZGETRS CGETRS 1828f4c8dbaSBarry Smith #define ZGEMM SGEMM 1838f4c8dbaSBarry Smith #define ZTRMV CTRMV 1848f4c8dbaSBarry Smith #define ZTRSL CTRSL 1858f4c8dbaSBarry Smith #endif 1868f4c8dbaSBarry Smith 1878f4c8dbaSBarry Smith #if defined(HAVE_FORTRAN_CAPS) 188c0534c1cSBarry Smith #define LAgeqrf_ ZGEQRF 189a1e12872SBarry Smith #define BLdot_ ZDOTC 190a1e12872SBarry Smith #define BLnrm2_ DZNRM2 191a1e12872SBarry Smith #define BLscal_ ZSCAL 192a1e12872SBarry Smith #define BLcopy_ ZCOPY 193a1e12872SBarry Smith #define BLswap_ ZSWAP 194a1e12872SBarry Smith #define BLaxpy_ ZAXPY 195a1e12872SBarry Smith #define BLasum_ DZASUM 196227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 197c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf 1985392566eSBarry Smith #define LAgetrf_ zgetrf 19908d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2 200a1e12872SBarry Smith #define BLdot_ zdotc 201a1e12872SBarry Smith #define BLnrm2_ dznrm2 202a1e12872SBarry Smith #define BLscal_ zscal 203a1e12872SBarry Smith #define BLcopy_ zcopy 204a1e12872SBarry Smith #define BLswap_ zswap 205a1e12872SBarry Smith #define BLaxpy_ zaxpy 206a1e12872SBarry Smith #define BLasum_ dzasum 207a1e12872SBarry Smith #else 208c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2095392566eSBarry Smith #define LAgetrf_ zgetrf_ 21008d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 211a1e12872SBarry Smith #define BLdot_ zdotc_ 212a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 213a1e12872SBarry Smith #define BLscal_ zscal_ 214a1e12872SBarry Smith #define BLcopy_ zcopy_ 215a1e12872SBarry Smith #define BLswap_ zswap_ 216a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 217a1e12872SBarry Smith #define BLasum_ dzasum_ 218a1e12872SBarry Smith #endif 219a1e12872SBarry Smith 220a2ce50c7SBarry Smith #if defined(USES_CPTOFCD) 2218f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\ 222c0534c1cSBarry Smith _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 2238f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 2248f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2255392566eSBarry Smith (f),(g),(h)) 2268f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\ 2275392566eSBarry Smith (f),(g),(h),(i),(j),(k)) 2288f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\ 2295392566eSBarry Smith (f),(g),(h),(i)) 2308f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \ 2314eeb42bcSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 2324eeb42bcSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m)) 233d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \ 234d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 235d4fbbf0eSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 236*639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \ 237d4fbbf0eSBarry Smith _cptofcd((a),1),(c),(d),(e),\ 238*639f9d9dSBarry Smith (f),(g),(h),(i),(j),(k),(l),(m),(n)) 2398f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2408f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 241227d817aSBarry Smith #elif defined(HAVE_FORTRAN_CAPS) 242c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 243a1e12872SBarry Smith #define LApotrf_ ZPOTRF 244a1e12872SBarry Smith #define LApotrs_ ZPOTRS 245a1e12872SBarry Smith #define LAgemv_ ZGEMV 246a1e12872SBarry Smith #define LAgetrf_ ZGETRF 24708d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 248a1e12872SBarry Smith #define LAgetrs_ ZGETRS 249a1e12872SBarry Smith #define LAtrmv_ ZTRMV 250a1e12872SBarry Smith #define LAtrsl_ ZTRSL 2515a778de9SBarry Smith #define BLgemm_ ZGEMM 252d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 253d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 254227d817aSBarry Smith #elif !defined(HAVE_FORTRAN_UNDERSCORE) 255c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 256a1e12872SBarry Smith #define LApotrf_ zpotrf 257a1e12872SBarry Smith #define LApotrs_ zpotrs 258a1e12872SBarry Smith #define LAgemv_ zgemv 259a1e12872SBarry Smith #define LAgetrs_ zgetrs 260a1e12872SBarry Smith #define LAtrmv_ ztrmv 261a1e12872SBarry Smith #define LAtrsl_ ztrsl 2625a778de9SBarry Smith #define BLgemm_ zgemm 263d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 264d4fbbf0eSBarry Smith #define LAgeev_ zgeev 265a1e12872SBarry Smith #else 266c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs_ 267a1e12872SBarry Smith #define LApotrf_ zpotrf_ 268a1e12872SBarry Smith #define LApotrs_ zpotrs_ 269a1e12872SBarry Smith #define LAgemv_ zgemv_ 270a1e12872SBarry Smith #define LAgetrs_ zgetrs_ 271a1e12872SBarry Smith #define LAtrmv_ ztrmv_ 272a1e12872SBarry Smith #define LAtrsl_ ztrsl_ 2735a778de9SBarry Smith #define BLgemm_ zgemm_ 274d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd_ 275d4fbbf0eSBarry Smith #define LAgeev_ zgeev_ 276a1e12872SBarry Smith #endif 277a1e12872SBarry Smith 278a1e12872SBarry Smith #endif 279a1e12872SBarry Smith 280a1e12872SBarry Smith #if defined(__cplusplus) 281a1e12872SBarry Smith extern "C" { 282a1e12872SBarry Smith #endif 283a1e12872SBarry Smith 2848f4c8dbaSBarry Smith /* 2858f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 2868f4c8dbaSBarry Smith handle returing a double complex to C++. 287126c565eSBarry Smith */ 288126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*); 2891eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*); 2901eb62cbbSBarry Smith extern void BLscal_(int*,Scalar*,Scalar*,int*); 2911eb62cbbSBarry Smith extern void BLcopy_(int*,Scalar*,int*,Scalar*,int*); 2921eb62cbbSBarry Smith extern void BLswap_(int*,Scalar*,int*,Scalar*,int*); 2931eb62cbbSBarry Smith extern void BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*); 2941eb62cbbSBarry Smith extern void LAgetrf_(int*,int*,Scalar*,int*,int*,int*); 295bae8960eSLois Curfman McInnes extern void LAgetf2_(int*,int*,Scalar*,int*,int*,int*); 296c0534c1cSBarry Smith extern void LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*); 2975392566eSBarry Smith 2988f4c8dbaSBarry Smith #if defined(USES_CPTOFCD) 299112a2221SBarry Smith 300112a2221SBarry Smith #if defined(PETSC_COMPLEX) 3018f4c8dbaSBarry Smith extern void ZPOTRF(_fcd,int*,Scalar*,int*,int*); 3028f4c8dbaSBarry Smith extern void ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 3035392566eSBarry Smith Scalar*,Scalar*,int*); 3048f4c8dbaSBarry Smith extern void ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 3058f4c8dbaSBarry Smith extern void ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 3068f4c8dbaSBarry Smith extern void ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3074eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 308d4fbbf0eSBarry Smith extern void ZGESVD(_fcd,_fcd,int *,int*, Scalar *,int*,double*,Scalar*, 309d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 310d4fbbf0eSBarry Smith extern void ZGEEV(_fcd,_fcd,int *, Scalar *,int*,Scalar*,Scalar*, 311d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 3125392566eSBarry Smith #else 3138f4c8dbaSBarry Smith extern void DPOTRF(_fcd,int*,Scalar*,int*,int*); 3148f4c8dbaSBarry Smith extern void DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 315112a2221SBarry Smith Scalar*,Scalar*,int*); 3168f4c8dbaSBarry Smith extern void DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*); 3178f4c8dbaSBarry Smith extern void DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 3188f4c8dbaSBarry Smith extern void DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*, 3194eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 3208f4c8dbaSBarry Smith extern void DGESVD(_fcd,_fcd,int *,int*, Scalar *,int*,Scalar*,Scalar*, 321af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 322d4fbbf0eSBarry Smith extern void DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*, 323d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 324112a2221SBarry Smith #endif 325112a2221SBarry Smith 326112a2221SBarry Smith #else 327c0534c1cSBarry Smith extern void LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*, 328c0534c1cSBarry Smith int*,Scalar*,int*,int*); 329c0534c1cSBarry Smith extern void LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*, 330c0534c1cSBarry Smith int*); 3311eb62cbbSBarry Smith extern void LApotrf_(char*,int*,Scalar*,int*,int*); 3321eb62cbbSBarry Smith extern void LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*, 333a1e12872SBarry Smith Scalar*,Scalar*,int*); 3341eb62cbbSBarry Smith extern void LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*); 3351eb62cbbSBarry Smith extern void LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*); 3364eeb42bcSBarry Smith extern void BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*, 3374eeb42bcSBarry Smith Scalar*,int*,Scalar*,Scalar*,int*); 338d4fbbf0eSBarry Smith #if !defined(PETSC_COMPLEX) 339d4fbbf0eSBarry Smith extern void LAgeev_(char *,char *,int *, Scalar *,int*,double*,double*,Scalar*, 340af6b99e9SBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 341d4fbbf0eSBarry Smith extern void LAgesvd_(char *,char *,int *,int*, Scalar *,int*,double*,Scalar*, 342d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,int*); 343d4fbbf0eSBarry Smith #else 344d4fbbf0eSBarry Smith extern void LAgeev_(char *,char *,int *, Scalar *,int*,Scalar*,Scalar*, 345d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 346d4fbbf0eSBarry Smith extern void LAgesvd_(char *,char *,int *,int*, Scalar *,int*,double*,Scalar*, 347d4fbbf0eSBarry Smith int*,Scalar*,int*,Scalar*,int*,double*,int*); 348d4fbbf0eSBarry Smith #endif 3495392566eSBarry Smith #endif 350a1e12872SBarry Smith 351a1e12872SBarry Smith #if defined(__cplusplus) 35202834360SBarry Smith } 353a1e12872SBarry Smith #endif 354a1e12872SBarry Smith 355a1e12872SBarry Smith #endif 3565a778de9SBarry Smith 3575a778de9SBarry Smith 3585a778de9SBarry Smith 359