173f4d377SMatthew Knepley /* $Id: petscblaslapack.h,v 1.51 2001/08/22 18:03:11 balay Exp $ */ 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) 31*e3353558SSatish 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 7901ad1a64SSatish Balay #if defined(PETSC_USE_SINGLE) 8001ad1a64SSatish Balay 8101ad1a64SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 8201ad1a64SSatish Balay #define LAgeqrf_ sgeqrf_ 8301ad1a64SSatish Balay #define LAgetrf_ sgetrf_ 8401ad1a64SSatish Balay #define LAgetf2_ sgetf2_ 8501ad1a64SSatish Balay #define BLdot_ sdot_ 8601ad1a64SSatish Balay #define BLnrm2_ snrm2_ 8701ad1a64SSatish Balay #define BLscal_ sscal_ 8801ad1a64SSatish Balay #define BLcopy_ scopy_ 8901ad1a64SSatish Balay #define BLswap_ sswap_ 9001ad1a64SSatish Balay #define BLaxpy_ saxpy_ 9101ad1a64SSatish Balay #define BLasum_ sasum_ 9201ad1a64SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_CAPS) 9301ad1a64SSatish Balay #define LAgeqrf_ SGEQRF 9401ad1a64SSatish Balay #define LAgetrf_ SGETRF 9501ad1a64SSatish Balay #define LAgetf2_ SGETF2 9601ad1a64SSatish Balay #define BLdot_ SDOT 9701ad1a64SSatish Balay #define BLnrm2_ SNRM2 9801ad1a64SSatish Balay #define BLscal_ SSCAL 9901ad1a64SSatish Balay #define BLcopy_ SCOPY 10001ad1a64SSatish Balay #define BLswap_ SSWAP 10101ad1a64SSatish Balay #define BLaxpy_ SAXPY 10201ad1a64SSatish Balay #define BLasum_ SASUM 10301ad1a64SSatish Balay #else 10401ad1a64SSatish Balay #define LAgeqrf_ sgeqrf 10501ad1a64SSatish Balay #define LAgetrf_ sgetrf 10601ad1a64SSatish Balay #define LAgetf2_ sgetf2 10701ad1a64SSatish Balay #define BLdot_ sdot 10801ad1a64SSatish Balay #define BLnrm2_ snrm2 10901ad1a64SSatish Balay #define BLscal_ sscal 11001ad1a64SSatish Balay #define BLcopy_ scopy 11101ad1a64SSatish Balay #define BLswap_ sswap 11201ad1a64SSatish Balay #define BLaxpy_ saxpy 11301ad1a64SSatish Balay #define BLasum_ sasum 11401ad1a64SSatish Balay #endif 11501ad1a64SSatish Balay 11601ad1a64SSatish Balay #else 11701ad1a64SSatish 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 15301ad1a64SSatish Balay #endif 15401ad1a64SSatish 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 176516d1546SSatish Balay 177516d1546SSatish Balay #elif defined(PETSC_USE_SINGLE) 178516d1546SSatish Balay 179516d1546SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 180516d1546SSatish Balay #define LAormqr_ sormqr_ 181516d1546SSatish Balay #define LAtrtrs_ strtrs_ 182516d1546SSatish Balay #define LApotrf_ spotrf_ 183516d1546SSatish Balay #define LApotrs_ spotrs_ 184516d1546SSatish Balay #define LAgemv_ sgemv_ 185516d1546SSatish Balay #define LAgetrs_ sgetrs_ 186516d1546SSatish Balay #define LAtrmv_ strmv_ 187516d1546SSatish Balay #define LAtrsl_ strsl_ 188516d1546SSatish Balay #define BLgemm_ sgemm_ 189516d1546SSatish Balay #define LAgesvd_ sgesvd_ 190516d1546SSatish Balay #define LAgeev_ sgeev_ 191516d1546SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_CAPS) 192516d1546SSatish Balay #define LAormqr_ SORMQR 193516d1546SSatish Balay #define LAtrtrs_ STRTRS 194516d1546SSatish Balay #define LApotrf_ SPOTRF 195516d1546SSatish Balay #define LApotrs_ SPOTRS 196516d1546SSatish Balay #define LAgemv_ SGEMV 197516d1546SSatish Balay #define LAgetrs_ SGETRS 198516d1546SSatish Balay #define LAtrmv_ STRMV 199516d1546SSatish Balay #define LAtrsl_ STRSL 200516d1546SSatish Balay #define LAgesvd_ SGESVD 201516d1546SSatish Balay #define LAgeev_ SGEEV 202516d1546SSatish Balay #define BLgemm_ SGEMM 203516d1546SSatish Balay #else 204516d1546SSatish Balay #define LAormqr_ sormqr 205516d1546SSatish Balay #define LAtrtrs_ strtrs 206516d1546SSatish Balay #define LApotrf_ spotrf 207516d1546SSatish Balay #define LApotrs_ spotrs 208516d1546SSatish Balay #define LAgemv_ sgemv 209516d1546SSatish Balay #define LAgetrs_ sgetrs 210516d1546SSatish Balay #define LAtrmv_ strmv 211516d1546SSatish Balay #define LAtrsl_ strsl 212516d1546SSatish Balay #define BLgemm_ sgemm 213516d1546SSatish Balay #define LAgesvd_ sgesvd 214516d1546SSatish Balay #define LAgeev_ sgeev 215516d1546SSatish Balay #endif 216516d1546SSatish Balay 217516d1546SSatish Balay #else /* PETSC_USE_SINGLE */ 218516d1546SSatish Balay 219516d1546SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 22025fce39dSBarry Smith #define LAormqr_ dormqr_ 22125fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 22225fce39dSBarry Smith #define LApotrf_ dpotrf_ 22325fce39dSBarry Smith #define LApotrs_ dpotrs_ 22425fce39dSBarry Smith #define LAgemv_ dgemv_ 22525fce39dSBarry Smith #define LAgetrs_ dgetrs_ 22625fce39dSBarry Smith #define LAtrmv_ dtrmv_ 22725fce39dSBarry Smith #define LAtrsl_ dtrsl_ 22825fce39dSBarry Smith #define BLgemm_ dgemm_ 22925fce39dSBarry Smith #define LAgesvd_ dgesvd_ 23025fce39dSBarry Smith #define LAgeev_ dgeev_ 231aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 232c0534c1cSBarry Smith #define LAormqr_ DORMQR 233c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 234a1e12872SBarry Smith #define LApotrf_ DPOTRF 235a1e12872SBarry Smith #define LApotrs_ DPOTRS 236a1e12872SBarry Smith #define LAgemv_ DGEMV 237a1e12872SBarry Smith #define LAgetrs_ DGETRS 238a1e12872SBarry Smith #define LAtrmv_ DTRMV 239a1e12872SBarry Smith #define LAtrsl_ DTRSL 240af6b99e9SBarry Smith #define LAgesvd_ DGESVD 241d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 2424eeb42bcSBarry Smith #define BLgemm_ DGEMM 24325fce39dSBarry Smith #else 244c0534c1cSBarry Smith #define LAormqr_ dormqr 245c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 246a1e12872SBarry Smith #define LApotrf_ dpotrf 247a1e12872SBarry Smith #define LApotrs_ dpotrs 248a1e12872SBarry Smith #define LAgemv_ dgemv 249a1e12872SBarry Smith #define LAgetrs_ dgetrs 250a1e12872SBarry Smith #define LAtrmv_ dtrmv 251a1e12872SBarry Smith #define LAtrsl_ dtrsl 2524eeb42bcSBarry Smith #define BLgemm_ dgemm 253af6b99e9SBarry Smith #define LAgesvd_ dgesvd 254d4fbbf0eSBarry Smith #define LAgeev_ dgeev 255a1e12872SBarry Smith #endif 256a1e12872SBarry Smith 257516d1546SSatish Balay #endif /* PETSC_USES_CPTOFCD */ 258516d1546SSatish Balay 259a1e12872SBarry Smith #else 2604eeb42bcSBarry Smith /* 2614eeb42bcSBarry Smith Complex with no character string arguments 2624eeb42bcSBarry Smith */ 263f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 2648f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 2658f4c8dbaSBarry Smith #define ZDOTC CDOTC 2668f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 2678f4c8dbaSBarry Smith #define ZSCAL CSCAL 2688f4c8dbaSBarry Smith #define ZCOPY CCOPY 2698f4c8dbaSBarry Smith #define ZSWAP CSWAP 2708f4c8dbaSBarry Smith #define ZAXPY CAXPY 2718f4c8dbaSBarry Smith #define DZASUM SCASUM 2728f4c8dbaSBarry Smith #define ZGETRF CGETRF 2738f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 2748f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 2758f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 2768f4c8dbaSBarry Smith #define ZGEMV CGEMV 2778f4c8dbaSBarry Smith #define ZGETRS CGETRS 2788f4c8dbaSBarry Smith #define ZGEMM SGEMM 2798f4c8dbaSBarry Smith #define ZTRMV CTRMV 280160814fdSSatish Balay #define ZTRSL CTRSL 281633a50d3SSatish Balay #define ZGEEV CGEEV 2828f4c8dbaSBarry Smith #endif 2838f4c8dbaSBarry Smith 284ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 285c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2865392566eSBarry Smith #define LAgetrf_ zgetrf_ 28708d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 288a1e12872SBarry Smith #define BLdot_ zdotc_ 289a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 290a1e12872SBarry Smith #define BLscal_ zscal_ 291a1e12872SBarry Smith #define BLcopy_ zcopy_ 292a1e12872SBarry Smith #define BLswap_ zswap_ 293a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 294a1e12872SBarry Smith #define BLasum_ dzasum_ 295aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 29625fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 29725fce39dSBarry Smith #define BLdot_ ZDOTC 29825fce39dSBarry Smith #define BLnrm2_ DZNRM2 29925fce39dSBarry Smith #define BLscal_ ZSCAL 30025fce39dSBarry Smith #define BLcopy_ ZCOPY 30125fce39dSBarry Smith #define BLswap_ ZSWAP 30225fce39dSBarry Smith #define BLaxpy_ ZAXPY 30325fce39dSBarry Smith #define BLasum_ DZASUM 30425fce39dSBarry Smith #define LAgetrf_ ZGETRF 30525fce39dSBarry Smith #else 30625fce39dSBarry Smith #define LAgeqrf_ zgeqrf 30725fce39dSBarry Smith #define LAgetrf_ zgetrf 30825fce39dSBarry Smith #define LAgetf2_ zgetf2 30925fce39dSBarry Smith #define BLdot_ zdotc 31025fce39dSBarry Smith #define BLnrm2_ dznrm2 31125fce39dSBarry Smith #define BLscal_ zscal 31225fce39dSBarry Smith #define BLcopy_ zcopy 31325fce39dSBarry Smith #define BLswap_ zswap 31425fce39dSBarry Smith #define BLaxpy_ zaxpy 31525fce39dSBarry Smith #define BLasum_ dzasum 316a1e12872SBarry Smith #endif 317a1e12872SBarry Smith 318f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 319f7d3a2fdSBarry 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)) 3208f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 321f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 322f7d3a2fdSBarry 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)) 323f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 324f7d3a2fdSBarry 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)) 325f7d3a2fdSBarry 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)) 326f7d3a2fdSBarry 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)) 3278f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 3288f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 329ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 33025fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 33125fce39dSBarry Smith #define LApotrf_ zpotrf_ 33225fce39dSBarry Smith #define LApotrs_ zpotrs_ 33325fce39dSBarry Smith #define LAgemv_ zgemv_ 33425fce39dSBarry Smith #define LAgetrs_ zgetrs_ 33525fce39dSBarry Smith #define LAtrmv_ ztrmv_ 33625fce39dSBarry Smith #define LAtrsl_ ztrsl_ 33725fce39dSBarry Smith #define BLgemm_ zgemm_ 33825fce39dSBarry Smith #define LAgesvd_ zgesvd_ 33925fce39dSBarry Smith #define LAgeev_ zgeev_ 340aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 341c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 342a1e12872SBarry Smith #define LApotrf_ ZPOTRF 343a1e12872SBarry Smith #define LApotrs_ ZPOTRS 344a1e12872SBarry Smith #define LAgemv_ ZGEMV 345a1e12872SBarry Smith #define LAgetrf_ ZGETRF 34608d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 347a1e12872SBarry Smith #define LAgetrs_ ZGETRS 348a1e12872SBarry Smith #define LAtrmv_ ZTRMV 349a1e12872SBarry Smith #define LAtrsl_ ZTRSL 3505a778de9SBarry Smith #define BLgemm_ ZGEMM 351d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 352d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 35325fce39dSBarry Smith #else 354c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 355a1e12872SBarry Smith #define LApotrf_ zpotrf 356a1e12872SBarry Smith #define LApotrs_ zpotrs 357a1e12872SBarry Smith #define LAgemv_ zgemv 358a1e12872SBarry Smith #define LAgetrs_ zgetrs 359a1e12872SBarry Smith #define LAtrmv_ ztrmv 360a1e12872SBarry Smith #define LAtrsl_ ztrsl 3615a778de9SBarry Smith #define BLgemm_ zgemm 362d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 363d4fbbf0eSBarry Smith #define LAgeev_ zgeev 364a1e12872SBarry Smith #endif 365a1e12872SBarry Smith 366a1e12872SBarry Smith #endif 367a1e12872SBarry Smith 368fb2e594dSBarry Smith EXTERN_C_BEGIN 369a1e12872SBarry Smith 3708f4c8dbaSBarry Smith /* 3718f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 3728f4c8dbaSBarry Smith handle returing a double complex to C++. 373126c565eSBarry Smith */ 37413f16e43SBarry Smith EXTERN PetscReal BLdot_(int*,PetscScalar*,int*,PetscScalar*,int*); 37513f16e43SBarry Smith EXTERN PetscReal BLnrm2_(int*,PetscScalar*,int*); 37613f16e43SBarry Smith EXTERN PetscReal BLasum_(int*,PetscScalar*,int*); 37787828ca2SBarry Smith EXTERN void BLscal_(int*,PetscScalar*,PetscScalar*,int*); 37887828ca2SBarry Smith EXTERN void BLcopy_(int*,PetscScalar*,int*,PetscScalar*,int*); 37987828ca2SBarry Smith EXTERN void BLswap_(int*,PetscScalar*,int*,PetscScalar*,int*); 38087828ca2SBarry Smith EXTERN void BLaxpy_(int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*); 38187828ca2SBarry Smith EXTERN void LAgetrf_(int*,int*,PetscScalar*,int*,int*,int*); 38287828ca2SBarry Smith EXTERN void LAgetf2_(int*,int*,PetscScalar*,int*,int*,int*); 38387828ca2SBarry Smith EXTERN void LAgeqrf_(int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*); 3845392566eSBarry Smith 385f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 386112a2221SBarry Smith 387aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 388f0234f3fSSatish Balay EXTERN void ZORMQR(_fcd,_fcd,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 389f0234f3fSSatish Balay EXTERN void ZTRTRS(_fcd,_fcd,_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 39087828ca2SBarry Smith EXTERN void ZPOTRF(_fcd,int*,PetscScalar*,int*,int*); 391f7d3a2fdSBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 39287828ca2SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 39387828ca2SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 394f7d3a2fdSBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 39513f16e43SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 39613f16e43SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 3975392566eSBarry Smith #else 398f0234f3fSSatish Balay EXTERN void DORMQR(_fcd,_fcd,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 399f0234f3fSSatish Balay EXTERN void DTRTRS(_fcd,_fcd,_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 40087828ca2SBarry Smith EXTERN void DPOTRF(_fcd,int*,PetscScalar*,int*,int*); 401f7d3a2fdSBarry Smith EXTERN void DGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 40287828ca2SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 40387828ca2SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 404f7d3a2fdSBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 405f7d3a2fdSBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 406f7d3a2fdSBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 407112a2221SBarry Smith #endif 408112a2221SBarry Smith 409112a2221SBarry Smith #else 410f7d3a2fdSBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 411f7d3a2fdSBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 41287828ca2SBarry Smith EXTERN void LApotrf_(char*,int*,PetscScalar*,int*,int*); 413f7d3a2fdSBarry Smith EXTERN void LAgemv_(char*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 41487828ca2SBarry Smith EXTERN void LApotrs_(char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 41587828ca2SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 416f7d3a2fdSBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 417e38aa075SLois Curfman McInnes 418e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 419aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 42013f16e43SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,PetscReal*,int*); 42113f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 422aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 42313f16e43SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,PetscReal*,int*); 42413f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 425aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 42613f16e43SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscReal*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 42713f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 428d4fbbf0eSBarry Smith #else 42913f16e43SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 43013f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 431d4fbbf0eSBarry Smith #endif 4325392566eSBarry Smith #endif 433a1e12872SBarry Smith 434fb2e594dSBarry Smith EXTERN_C_END 435a1e12872SBarry Smith 436a1e12872SBarry Smith #endif 4375a778de9SBarry Smith 438