1*01ad1a64SSatish Balay /* $Id: petscblaslapack.h,v 1.49 2001/08/07 14:56:33 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 7217f3c9bSSatish Balay Another problem is character strings are represented differently on 85392566eSBarry Smith on some machines in C and Fortran 77. This problem comes up on the 9633a50d3SSatish Balay Cray T3D/T3E. 105392566eSBarry Smith 11a1e12872SBarry Smith */ 12c3e41550SBarry Smith #if !defined(_BLASLAPACK_H) 13c3e41550SBarry Smith #define _BLASLAPACK_H 14a1e12872SBarry Smith 1519b02663SBarry Smith #include "petsc.h" 16a1e12872SBarry Smith 17bb638ab5SSatish Balay 188e0e00b1SSatish Balay #if defined(PETSC_BLASLAPACK_MKL64_ONLY) 198e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 208e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 218e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRF 228e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRF 238e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRS 248e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRS 25e7906763SSatish Balay #elif defined(PETSC_BLASLAPACK_MKL_ONLY) 26bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 27bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 28ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_CRAY_ONLY) 29bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 30ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_ESSL_ONLY) 31ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GESVD 32ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRF 33ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRS 34ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRF 35ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRS 36bb638ab5SSatish Balay #endif 37bb638ab5SSatish Balay 388f4c8dbaSBarry Smith /* 39633a50d3SSatish Balay This include file on the Cray T3D/T3E defines the interface between 40217f3c9bSSatish Balay Fortran and C representations of character strings. 418f4c8dbaSBarry Smith */ 42f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 4393c39befSBarry Smith #include <fortran.h> 445392566eSBarry Smith #endif 455392566eSBarry Smith 46aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX) 474eeb42bcSBarry Smith 484eeb42bcSBarry Smith /* 494eeb42bcSBarry Smith These are real case with no character string arguments 504eeb42bcSBarry Smith */ 518f4c8dbaSBarry Smith 52f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 538f4c8dbaSBarry Smith /* 548f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 558f4c8dbaSBarry Smith */ 568f4c8dbaSBarry Smith #define DGEQRF SGEQRF 578f4c8dbaSBarry Smith #define DGETRF SGETRF 588f4c8dbaSBarry Smith #define DDOT SDOT 598f4c8dbaSBarry Smith #define DNRM2 SNRM2 608f4c8dbaSBarry Smith #define DSCAL SSCAL 618f4c8dbaSBarry Smith #define DCOPY SCOPY 628f4c8dbaSBarry Smith #define DSWAP SSWAP 638f4c8dbaSBarry Smith #define DAXPY SAXPY 648f4c8dbaSBarry Smith #define DASUM SASUM 658f4c8dbaSBarry Smith #define DSORMQR SORMQR 668f4c8dbaSBarry Smith #define DTRTRS STRTRS 678f4c8dbaSBarry Smith #define DPOTRF SPOTRF 688f4c8dbaSBarry Smith #define DPOTRS SPOTRS 698f4c8dbaSBarry Smith #define DGEMV SGEMV 708f4c8dbaSBarry Smith #define DGETRS SGETRS 718f4c8dbaSBarry Smith #define DGETRS SGETRS 728f4c8dbaSBarry Smith #define DGEMM SGEMM 738f4c8dbaSBarry Smith #define DGESVD SGESVD 74d4fbbf0eSBarry Smith #define DGEEV SGEEV 758f4c8dbaSBarry Smith #define DTRMV STRMV 768f4c8dbaSBarry Smith #define DTRSL STRSL 778f4c8dbaSBarry Smith #endif 788f4c8dbaSBarry Smith 79*01ad1a64SSatish Balay #if defined(PETSC_USE_SINGLE) 80*01ad1a64SSatish Balay 81*01ad1a64SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 82*01ad1a64SSatish Balay #define LAgeqrf_ sgeqrf_ 83*01ad1a64SSatish Balay #define LAgetrf_ sgetrf_ 84*01ad1a64SSatish Balay #define LAgetf2_ sgetf2_ 85*01ad1a64SSatish Balay #define BLdot_ sdot_ 86*01ad1a64SSatish Balay #define BLnrm2_ snrm2_ 87*01ad1a64SSatish Balay #define BLscal_ sscal_ 88*01ad1a64SSatish Balay #define BLcopy_ scopy_ 89*01ad1a64SSatish Balay #define BLswap_ sswap_ 90*01ad1a64SSatish Balay #define BLaxpy_ saxpy_ 91*01ad1a64SSatish Balay #define BLasum_ sasum_ 92*01ad1a64SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_CAPS) 93*01ad1a64SSatish Balay #define LAgeqrf_ SGEQRF 94*01ad1a64SSatish Balay #define LAgetrf_ SGETRF 95*01ad1a64SSatish Balay #define LAgetf2_ SGETF2 96*01ad1a64SSatish Balay #define BLdot_ SDOT 97*01ad1a64SSatish Balay #define BLnrm2_ SNRM2 98*01ad1a64SSatish Balay #define BLscal_ SSCAL 99*01ad1a64SSatish Balay #define BLcopy_ SCOPY 100*01ad1a64SSatish Balay #define BLswap_ SSWAP 101*01ad1a64SSatish Balay #define BLaxpy_ SAXPY 102*01ad1a64SSatish Balay #define BLasum_ SASUM 103*01ad1a64SSatish Balay #else 104*01ad1a64SSatish Balay #define LAgeqrf_ sgeqrf 105*01ad1a64SSatish Balay #define LAgetrf_ sgetrf 106*01ad1a64SSatish Balay #define LAgetf2_ sgetf2 107*01ad1a64SSatish Balay #define BLdot_ sdot 108*01ad1a64SSatish Balay #define BLnrm2_ snrm2 109*01ad1a64SSatish Balay #define BLscal_ sscal 110*01ad1a64SSatish Balay #define BLcopy_ scopy 111*01ad1a64SSatish Balay #define BLswap_ sswap 112*01ad1a64SSatish Balay #define BLaxpy_ saxpy 113*01ad1a64SSatish Balay #define BLasum_ sasum 114*01ad1a64SSatish Balay #endif 115*01ad1a64SSatish Balay 116*01ad1a64SSatish Balay #else 117*01ad1a64SSatish Balay 118ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 119c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 1205392566eSBarry Smith #define LAgetrf_ dgetrf_ 121c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 122a1e12872SBarry Smith #define BLdot_ ddot_ 123a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 124a1e12872SBarry Smith #define BLscal_ dscal_ 125a1e12872SBarry Smith #define BLcopy_ dcopy_ 126a1e12872SBarry Smith #define BLswap_ dswap_ 127a1e12872SBarry Smith #define BLaxpy_ daxpy_ 128a1e12872SBarry Smith #define BLasum_ dasum_ 129aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 13025fce39dSBarry Smith #define LAgeqrf_ DGEQRF 13125fce39dSBarry Smith #define LAgetrf_ DGETRF 13225fce39dSBarry Smith #define LAgetf2_ DGETF2 13325fce39dSBarry Smith #define BLdot_ DDOT 13425fce39dSBarry Smith #define BLnrm2_ DNRM2 13525fce39dSBarry Smith #define BLscal_ DSCAL 13625fce39dSBarry Smith #define BLcopy_ DCOPY 13725fce39dSBarry Smith #define BLswap_ DSWAP 13825fce39dSBarry Smith #define BLaxpy_ DAXPY 13925fce39dSBarry Smith #define BLasum_ DASUM 14025fce39dSBarry Smith #else 14125fce39dSBarry Smith #define LAgeqrf_ dgeqrf 14225fce39dSBarry Smith #define LAgetrf_ dgetrf 14325fce39dSBarry Smith #define LAgetf2_ dgetf2 14425fce39dSBarry Smith #define BLdot_ ddot 14525fce39dSBarry Smith #define BLnrm2_ dnrm2 14625fce39dSBarry Smith #define BLscal_ dscal 14725fce39dSBarry Smith #define BLcopy_ dcopy 14825fce39dSBarry Smith #define BLswap_ dswap 14925fce39dSBarry Smith #define BLaxpy_ daxpy 15025fce39dSBarry Smith #define BLasum_ dasum 151a1e12872SBarry Smith #endif 152a1e12872SBarry Smith 153*01ad1a64SSatish Balay #endif 154*01ad1a64SSatish Balay 1554eeb42bcSBarry Smith /* 1564eeb42bcSBarry Smith Real with character string arguments. 1574eeb42bcSBarry Smith */ 158f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 1598f4c8dbaSBarry Smith /* 1608f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 161aa482453SBarry Smith the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 1628f4c8dbaSBarry Smith */ 163f7d3a2fdSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m) DORMQR(_cptofcd((a),1),_cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 164f7d3a2fdSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),_cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 1658f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 166f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 167f7d3a2fdSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k)) 168f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 169f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 170f7d3a2fdSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), _cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 171f7d3a2fdSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 172f7d3a2fdSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 1738f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1748f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 175633a50d3SSatish Balay #define LAgetrf_ DGETRF 176ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 17725fce39dSBarry Smith #define LAormqr_ dormqr_ 17825fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 17925fce39dSBarry Smith #define LApotrf_ dpotrf_ 18025fce39dSBarry Smith #define LApotrs_ dpotrs_ 18125fce39dSBarry Smith #define LAgemv_ dgemv_ 18225fce39dSBarry Smith #define LAgetrs_ dgetrs_ 18325fce39dSBarry Smith #define LAtrmv_ dtrmv_ 18425fce39dSBarry Smith #define LAtrsl_ dtrsl_ 18525fce39dSBarry Smith #define BLgemm_ dgemm_ 18625fce39dSBarry Smith #define LAgesvd_ dgesvd_ 18725fce39dSBarry Smith #define LAgeev_ dgeev_ 188aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 189c0534c1cSBarry Smith #define LAormqr_ DORMQR 190c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 191a1e12872SBarry Smith #define LApotrf_ DPOTRF 192a1e12872SBarry Smith #define LApotrs_ DPOTRS 193a1e12872SBarry Smith #define LAgemv_ DGEMV 194a1e12872SBarry Smith #define LAgetrs_ DGETRS 195a1e12872SBarry Smith #define LAtrmv_ DTRMV 196a1e12872SBarry Smith #define LAtrsl_ DTRSL 197af6b99e9SBarry Smith #define LAgesvd_ DGESVD 198d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 1994eeb42bcSBarry Smith #define BLgemm_ DGEMM 20025fce39dSBarry Smith #else 201c0534c1cSBarry Smith #define LAormqr_ dormqr 202c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 203a1e12872SBarry Smith #define LApotrf_ dpotrf 204a1e12872SBarry Smith #define LApotrs_ dpotrs 205a1e12872SBarry Smith #define LAgemv_ dgemv 206a1e12872SBarry Smith #define LAgetrs_ dgetrs 207a1e12872SBarry Smith #define LAtrmv_ dtrmv 208a1e12872SBarry Smith #define LAtrsl_ dtrsl 2094eeb42bcSBarry Smith #define BLgemm_ dgemm 210af6b99e9SBarry Smith #define LAgesvd_ dgesvd 211d4fbbf0eSBarry Smith #define LAgeev_ dgeev 212a1e12872SBarry Smith #endif 213a1e12872SBarry Smith 214a1e12872SBarry Smith #else 2154eeb42bcSBarry Smith /* 2164eeb42bcSBarry Smith Complex with no character string arguments 2174eeb42bcSBarry Smith */ 218f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 2198f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 2208f4c8dbaSBarry Smith #define ZDOTC CDOTC 2218f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 2228f4c8dbaSBarry Smith #define ZSCAL CSCAL 2238f4c8dbaSBarry Smith #define ZCOPY CCOPY 2248f4c8dbaSBarry Smith #define ZSWAP CSWAP 2258f4c8dbaSBarry Smith #define ZAXPY CAXPY 2268f4c8dbaSBarry Smith #define DZASUM SCASUM 2278f4c8dbaSBarry Smith #define ZGETRF CGETRF 2288f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 2298f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 2308f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 2318f4c8dbaSBarry Smith #define ZGEMV CGEMV 2328f4c8dbaSBarry Smith #define ZGETRS CGETRS 2338f4c8dbaSBarry Smith #define ZGEMM SGEMM 2348f4c8dbaSBarry Smith #define ZTRMV CTRMV 235160814fdSSatish Balay #define ZTRSL CTRSL 236633a50d3SSatish Balay #define ZGEEV CGEEV 2378f4c8dbaSBarry Smith #endif 2388f4c8dbaSBarry Smith 239ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 240c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2415392566eSBarry Smith #define LAgetrf_ zgetrf_ 24208d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 243a1e12872SBarry Smith #define BLdot_ zdotc_ 244a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 245a1e12872SBarry Smith #define BLscal_ zscal_ 246a1e12872SBarry Smith #define BLcopy_ zcopy_ 247a1e12872SBarry Smith #define BLswap_ zswap_ 248a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 249a1e12872SBarry Smith #define BLasum_ dzasum_ 250aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 25125fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 25225fce39dSBarry Smith #define BLdot_ ZDOTC 25325fce39dSBarry Smith #define BLnrm2_ DZNRM2 25425fce39dSBarry Smith #define BLscal_ ZSCAL 25525fce39dSBarry Smith #define BLcopy_ ZCOPY 25625fce39dSBarry Smith #define BLswap_ ZSWAP 25725fce39dSBarry Smith #define BLaxpy_ ZAXPY 25825fce39dSBarry Smith #define BLasum_ DZASUM 25925fce39dSBarry Smith #define LAgetrf_ ZGETRF 26025fce39dSBarry Smith #else 26125fce39dSBarry Smith #define LAgeqrf_ zgeqrf 26225fce39dSBarry Smith #define LAgetrf_ zgetrf 26325fce39dSBarry Smith #define LAgetf2_ zgetf2 26425fce39dSBarry Smith #define BLdot_ zdotc 26525fce39dSBarry Smith #define BLnrm2_ dznrm2 26625fce39dSBarry Smith #define BLscal_ zscal 26725fce39dSBarry Smith #define BLcopy_ zcopy 26825fce39dSBarry Smith #define BLswap_ zswap 26925fce39dSBarry Smith #define BLaxpy_ zaxpy 27025fce39dSBarry Smith #define BLasum_ dzasum 271a1e12872SBarry Smith #endif 272a1e12872SBarry Smith 273f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 274f7d3a2fdSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),_cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j)) 2758f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 276f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 277f7d3a2fdSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i),(j),(k)) 278f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 279f7d3a2fdSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m)) 280f7d3a2fdSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n),(p)) 281f7d3a2fdSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1),_cptofcd((a),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m),(n)) 2828f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 2838f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 284ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 28525fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 28625fce39dSBarry Smith #define LApotrf_ zpotrf_ 28725fce39dSBarry Smith #define LApotrs_ zpotrs_ 28825fce39dSBarry Smith #define LAgemv_ zgemv_ 28925fce39dSBarry Smith #define LAgetrs_ zgetrs_ 29025fce39dSBarry Smith #define LAtrmv_ ztrmv_ 29125fce39dSBarry Smith #define LAtrsl_ ztrsl_ 29225fce39dSBarry Smith #define BLgemm_ zgemm_ 29325fce39dSBarry Smith #define LAgesvd_ zgesvd_ 29425fce39dSBarry Smith #define LAgeev_ zgeev_ 295aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 296c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 297a1e12872SBarry Smith #define LApotrf_ ZPOTRF 298a1e12872SBarry Smith #define LApotrs_ ZPOTRS 299a1e12872SBarry Smith #define LAgemv_ ZGEMV 300a1e12872SBarry Smith #define LAgetrf_ ZGETRF 30108d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 302a1e12872SBarry Smith #define LAgetrs_ ZGETRS 303a1e12872SBarry Smith #define LAtrmv_ ZTRMV 304a1e12872SBarry Smith #define LAtrsl_ ZTRSL 3055a778de9SBarry Smith #define BLgemm_ ZGEMM 306d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 307d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 30825fce39dSBarry Smith #else 309c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 310a1e12872SBarry Smith #define LApotrf_ zpotrf 311a1e12872SBarry Smith #define LApotrs_ zpotrs 312a1e12872SBarry Smith #define LAgemv_ zgemv 313a1e12872SBarry Smith #define LAgetrs_ zgetrs 314a1e12872SBarry Smith #define LAtrmv_ ztrmv 315a1e12872SBarry Smith #define LAtrsl_ ztrsl 3165a778de9SBarry Smith #define BLgemm_ zgemm 317d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 318d4fbbf0eSBarry Smith #define LAgeev_ zgeev 319a1e12872SBarry Smith #endif 320a1e12872SBarry Smith 321a1e12872SBarry Smith #endif 322a1e12872SBarry Smith 323fb2e594dSBarry Smith EXTERN_C_BEGIN 324a1e12872SBarry Smith 3258f4c8dbaSBarry Smith /* 3268f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 3278f4c8dbaSBarry Smith handle returing a double complex to C++. 328126c565eSBarry Smith */ 32913f16e43SBarry Smith EXTERN PetscReal BLdot_(int*,PetscScalar*,int*,PetscScalar*,int*); 33013f16e43SBarry Smith EXTERN PetscReal BLnrm2_(int*,PetscScalar*,int*); 33113f16e43SBarry Smith EXTERN PetscReal BLasum_(int*,PetscScalar*,int*); 33287828ca2SBarry Smith EXTERN void BLscal_(int*,PetscScalar*,PetscScalar*,int*); 33387828ca2SBarry Smith EXTERN void BLcopy_(int*,PetscScalar*,int*,PetscScalar*,int*); 33487828ca2SBarry Smith EXTERN void BLswap_(int*,PetscScalar*,int*,PetscScalar*,int*); 33587828ca2SBarry Smith EXTERN void BLaxpy_(int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*); 33687828ca2SBarry Smith EXTERN void LAgetrf_(int*,int*,PetscScalar*,int*,int*,int*); 33787828ca2SBarry Smith EXTERN void LAgetf2_(int*,int*,PetscScalar*,int*,int*,int*); 33887828ca2SBarry Smith EXTERN void LAgeqrf_(int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*); 3395392566eSBarry Smith 340f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 341112a2221SBarry Smith 342aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 34387828ca2SBarry Smith EXTERN void ZPOTRF(_fcd,int*,PetscScalar*,int*,int*); 344f7d3a2fdSBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 34587828ca2SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 34687828ca2SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 347f7d3a2fdSBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 34813f16e43SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 34913f16e43SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 3505392566eSBarry Smith #else 35187828ca2SBarry Smith EXTERN void DPOTRF(_fcd,int*,PetscScalar*,int*,int*); 352f7d3a2fdSBarry Smith EXTERN void DGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 35387828ca2SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 35487828ca2SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 355f7d3a2fdSBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 356f7d3a2fdSBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 357f7d3a2fdSBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 358112a2221SBarry Smith #endif 359112a2221SBarry Smith 360112a2221SBarry Smith #else 361f7d3a2fdSBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 362f7d3a2fdSBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 36387828ca2SBarry Smith EXTERN void LApotrf_(char*,int*,PetscScalar*,int*,int*); 364f7d3a2fdSBarry Smith EXTERN void LAgemv_(char*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 36587828ca2SBarry Smith EXTERN void LApotrs_(char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 36687828ca2SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 367f7d3a2fdSBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 368e38aa075SLois Curfman McInnes 369e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 370aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 37113f16e43SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,PetscReal*,int*); 37213f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 373aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 37413f16e43SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,PetscReal*,int*); 37513f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 376aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 37713f16e43SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscReal*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 37813f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 379d4fbbf0eSBarry Smith #else 38013f16e43SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 38113f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 382d4fbbf0eSBarry Smith #endif 3835392566eSBarry Smith #endif 384a1e12872SBarry Smith 385fb2e594dSBarry Smith EXTERN_C_END 386a1e12872SBarry Smith 387a1e12872SBarry Smith #endif 3885a778de9SBarry Smith 389