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 1419b02663SBarry Smith #include "petsc.h" 15*e9fa29b7SSatish Balay PETSC_EXTERN_CXX_BEGIN 16bb638ab5SSatish Balay 178e0e00b1SSatish Balay #if defined(PETSC_BLASLAPACK_MKL64_ONLY) 188e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 198e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 208e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRF 218e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRF 228e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRS 238e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRS 24e7906763SSatish Balay #elif defined(PETSC_BLASLAPACK_MKL_ONLY) 25bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 26bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV 27ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_CRAY_ONLY) 28bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 29ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_ESSL_ONLY) 30e3353558SSatish Balay #define PETSC_MISSING_LAPACK_GESVD 31ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRF 32ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRS 33ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRF 34ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRS 35bb638ab5SSatish Balay #endif 36bb638ab5SSatish Balay 378f4c8dbaSBarry Smith /* 38633a50d3SSatish Balay This include file on the Cray T3D/T3E defines the interface between 39217f3c9bSSatish Balay Fortran and C representations of character strings. 408f4c8dbaSBarry Smith */ 41f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 4293c39befSBarry Smith #include <fortran.h> 435392566eSBarry Smith #endif 445392566eSBarry Smith 45aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX) 464eeb42bcSBarry Smith 474eeb42bcSBarry Smith /* 484eeb42bcSBarry Smith These are real case with no character string arguments 494eeb42bcSBarry Smith */ 508f4c8dbaSBarry Smith 51f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 528f4c8dbaSBarry Smith /* 538f4c8dbaSBarry Smith For these machines we must call the single precision Fortran version 548f4c8dbaSBarry Smith */ 558f4c8dbaSBarry Smith #define DGEQRF SGEQRF 568f4c8dbaSBarry Smith #define DGETRF SGETRF 578f4c8dbaSBarry Smith #define DDOT SDOT 588f4c8dbaSBarry Smith #define DNRM2 SNRM2 598f4c8dbaSBarry Smith #define DSCAL SSCAL 608f4c8dbaSBarry Smith #define DCOPY SCOPY 618f4c8dbaSBarry Smith #define DSWAP SSWAP 628f4c8dbaSBarry Smith #define DAXPY SAXPY 638f4c8dbaSBarry Smith #define DASUM SASUM 648f4c8dbaSBarry Smith #define DSORMQR SORMQR 658f4c8dbaSBarry Smith #define DTRTRS STRTRS 668f4c8dbaSBarry Smith #define DPOTRF SPOTRF 678f4c8dbaSBarry Smith #define DPOTRS SPOTRS 688f4c8dbaSBarry Smith #define DGEMV SGEMV 698f4c8dbaSBarry Smith #define DGETRS SGETRS 708f4c8dbaSBarry Smith #define DGETRS SGETRS 718f4c8dbaSBarry Smith #define DGEMM SGEMM 728f4c8dbaSBarry Smith #define DGESVD SGESVD 73d4fbbf0eSBarry Smith #define DGEEV SGEEV 748f4c8dbaSBarry Smith #define DTRMV STRMV 758f4c8dbaSBarry Smith #define DTRSL STRSL 768f4c8dbaSBarry Smith #endif 778f4c8dbaSBarry Smith 7801ad1a64SSatish Balay #if defined(PETSC_USE_SINGLE) 7901ad1a64SSatish Balay 8001ad1a64SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 8101ad1a64SSatish Balay #define LAgeqrf_ sgeqrf_ 8201ad1a64SSatish Balay #define LAgetrf_ sgetrf_ 8301ad1a64SSatish Balay #define LAgetf2_ sgetf2_ 8401ad1a64SSatish Balay #define BLdot_ sdot_ 8501ad1a64SSatish Balay #define BLnrm2_ snrm2_ 8601ad1a64SSatish Balay #define BLscal_ sscal_ 8701ad1a64SSatish Balay #define BLcopy_ scopy_ 8801ad1a64SSatish Balay #define BLswap_ sswap_ 8901ad1a64SSatish Balay #define BLaxpy_ saxpy_ 9001ad1a64SSatish Balay #define BLasum_ sasum_ 9101ad1a64SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_CAPS) 9201ad1a64SSatish Balay #define LAgeqrf_ SGEQRF 9301ad1a64SSatish Balay #define LAgetrf_ SGETRF 9401ad1a64SSatish Balay #define LAgetf2_ SGETF2 9501ad1a64SSatish Balay #define BLdot_ SDOT 9601ad1a64SSatish Balay #define BLnrm2_ SNRM2 9701ad1a64SSatish Balay #define BLscal_ SSCAL 9801ad1a64SSatish Balay #define BLcopy_ SCOPY 9901ad1a64SSatish Balay #define BLswap_ SSWAP 10001ad1a64SSatish Balay #define BLaxpy_ SAXPY 10101ad1a64SSatish Balay #define BLasum_ SASUM 10201ad1a64SSatish Balay #else 10301ad1a64SSatish Balay #define LAgeqrf_ sgeqrf 10401ad1a64SSatish Balay #define LAgetrf_ sgetrf 10501ad1a64SSatish Balay #define LAgetf2_ sgetf2 10601ad1a64SSatish Balay #define BLdot_ sdot 10701ad1a64SSatish Balay #define BLnrm2_ snrm2 10801ad1a64SSatish Balay #define BLscal_ sscal 10901ad1a64SSatish Balay #define BLcopy_ scopy 11001ad1a64SSatish Balay #define BLswap_ sswap 11101ad1a64SSatish Balay #define BLaxpy_ saxpy 11201ad1a64SSatish Balay #define BLasum_ sasum 11301ad1a64SSatish Balay #endif 11401ad1a64SSatish Balay 11501ad1a64SSatish Balay #else 11601ad1a64SSatish Balay 117ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 118c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_ 1195392566eSBarry Smith #define LAgetrf_ dgetrf_ 120c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_ 121a1e12872SBarry Smith #define BLdot_ ddot_ 122a1e12872SBarry Smith #define BLnrm2_ dnrm2_ 123a1e12872SBarry Smith #define BLscal_ dscal_ 124a1e12872SBarry Smith #define BLcopy_ dcopy_ 125a1e12872SBarry Smith #define BLswap_ dswap_ 126a1e12872SBarry Smith #define BLaxpy_ daxpy_ 127a1e12872SBarry Smith #define BLasum_ dasum_ 128aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 12925fce39dSBarry Smith #define LAgeqrf_ DGEQRF 13025fce39dSBarry Smith #define LAgetrf_ DGETRF 13125fce39dSBarry Smith #define LAgetf2_ DGETF2 13225fce39dSBarry Smith #define BLdot_ DDOT 13325fce39dSBarry Smith #define BLnrm2_ DNRM2 13425fce39dSBarry Smith #define BLscal_ DSCAL 13525fce39dSBarry Smith #define BLcopy_ DCOPY 13625fce39dSBarry Smith #define BLswap_ DSWAP 13725fce39dSBarry Smith #define BLaxpy_ DAXPY 13825fce39dSBarry Smith #define BLasum_ DASUM 13925fce39dSBarry Smith #else 14025fce39dSBarry Smith #define LAgeqrf_ dgeqrf 14125fce39dSBarry Smith #define LAgetrf_ dgetrf 14225fce39dSBarry Smith #define LAgetf2_ dgetf2 14325fce39dSBarry Smith #define BLdot_ ddot 14425fce39dSBarry Smith #define BLnrm2_ dnrm2 14525fce39dSBarry Smith #define BLscal_ dscal 14625fce39dSBarry Smith #define BLcopy_ dcopy 14725fce39dSBarry Smith #define BLswap_ dswap 14825fce39dSBarry Smith #define BLaxpy_ daxpy 14925fce39dSBarry Smith #define BLasum_ dasum 150a1e12872SBarry Smith #endif 151a1e12872SBarry Smith 15201ad1a64SSatish Balay #endif 15301ad1a64SSatish Balay 1544eeb42bcSBarry Smith /* 1554eeb42bcSBarry Smith Real with character string arguments. 1564eeb42bcSBarry Smith */ 157f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 1588f4c8dbaSBarry Smith /* 1598f4c8dbaSBarry Smith Note that this assumes that machines which use cptofcd() use 160aa482453SBarry Smith the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E. 1618f4c8dbaSBarry Smith */ 162f7d3a2fdSBarry 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)) 163f7d3a2fdSBarry 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)) 1648f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 165f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 166f7d3a2fdSBarry 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)) 167f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 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 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)) 170f7d3a2fdSBarry 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)) 171f7d3a2fdSBarry 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)) 1728f4c8dbaSBarry Smith #define LAtrmv_ DTRMV 1738f4c8dbaSBarry Smith #define LAtrsl_ DTRSL 174633a50d3SSatish Balay #define LAgetrf_ DGETRF 175516d1546SSatish Balay 176516d1546SSatish Balay #elif defined(PETSC_USE_SINGLE) 177516d1546SSatish Balay 178516d1546SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 179516d1546SSatish Balay #define LAormqr_ sormqr_ 180516d1546SSatish Balay #define LAtrtrs_ strtrs_ 181516d1546SSatish Balay #define LApotrf_ spotrf_ 182516d1546SSatish Balay #define LApotrs_ spotrs_ 183516d1546SSatish Balay #define LAgemv_ sgemv_ 184516d1546SSatish Balay #define LAgetrs_ sgetrs_ 185516d1546SSatish Balay #define LAtrmv_ strmv_ 186516d1546SSatish Balay #define LAtrsl_ strsl_ 187516d1546SSatish Balay #define BLgemm_ sgemm_ 188516d1546SSatish Balay #define LAgesvd_ sgesvd_ 189516d1546SSatish Balay #define LAgeev_ sgeev_ 190516d1546SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_CAPS) 191516d1546SSatish Balay #define LAormqr_ SORMQR 192516d1546SSatish Balay #define LAtrtrs_ STRTRS 193516d1546SSatish Balay #define LApotrf_ SPOTRF 194516d1546SSatish Balay #define LApotrs_ SPOTRS 195516d1546SSatish Balay #define LAgemv_ SGEMV 196516d1546SSatish Balay #define LAgetrs_ SGETRS 197516d1546SSatish Balay #define LAtrmv_ STRMV 198516d1546SSatish Balay #define LAtrsl_ STRSL 199516d1546SSatish Balay #define LAgesvd_ SGESVD 200516d1546SSatish Balay #define LAgeev_ SGEEV 201516d1546SSatish Balay #define BLgemm_ SGEMM 202516d1546SSatish Balay #else 203516d1546SSatish Balay #define LAormqr_ sormqr 204516d1546SSatish Balay #define LAtrtrs_ strtrs 205516d1546SSatish Balay #define LApotrf_ spotrf 206516d1546SSatish Balay #define LApotrs_ spotrs 207516d1546SSatish Balay #define LAgemv_ sgemv 208516d1546SSatish Balay #define LAgetrs_ sgetrs 209516d1546SSatish Balay #define LAtrmv_ strmv 210516d1546SSatish Balay #define LAtrsl_ strsl 211516d1546SSatish Balay #define BLgemm_ sgemm 212516d1546SSatish Balay #define LAgesvd_ sgesvd 213516d1546SSatish Balay #define LAgeev_ sgeev 214516d1546SSatish Balay #endif 215516d1546SSatish Balay 216516d1546SSatish Balay #else /* PETSC_USE_SINGLE */ 217516d1546SSatish Balay 218516d1546SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 21925fce39dSBarry Smith #define LAormqr_ dormqr_ 22025fce39dSBarry Smith #define LAtrtrs_ dtrtrs_ 22125fce39dSBarry Smith #define LApotrf_ dpotrf_ 22225fce39dSBarry Smith #define LApotrs_ dpotrs_ 22325fce39dSBarry Smith #define LAgemv_ dgemv_ 22425fce39dSBarry Smith #define LAgetrs_ dgetrs_ 22525fce39dSBarry Smith #define LAtrmv_ dtrmv_ 22625fce39dSBarry Smith #define LAtrsl_ dtrsl_ 22725fce39dSBarry Smith #define BLgemm_ dgemm_ 22825fce39dSBarry Smith #define LAgesvd_ dgesvd_ 22925fce39dSBarry Smith #define LAgeev_ dgeev_ 230aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 231c0534c1cSBarry Smith #define LAormqr_ DORMQR 232c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS 233a1e12872SBarry Smith #define LApotrf_ DPOTRF 234a1e12872SBarry Smith #define LApotrs_ DPOTRS 235a1e12872SBarry Smith #define LAgemv_ DGEMV 236a1e12872SBarry Smith #define LAgetrs_ DGETRS 237a1e12872SBarry Smith #define LAtrmv_ DTRMV 238a1e12872SBarry Smith #define LAtrsl_ DTRSL 239af6b99e9SBarry Smith #define LAgesvd_ DGESVD 240d4fbbf0eSBarry Smith #define LAgeev_ DGEEV 2414eeb42bcSBarry Smith #define BLgemm_ DGEMM 24225fce39dSBarry Smith #else 243c0534c1cSBarry Smith #define LAormqr_ dormqr 244c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs 245a1e12872SBarry Smith #define LApotrf_ dpotrf 246a1e12872SBarry Smith #define LApotrs_ dpotrs 247a1e12872SBarry Smith #define LAgemv_ dgemv 248a1e12872SBarry Smith #define LAgetrs_ dgetrs 249a1e12872SBarry Smith #define LAtrmv_ dtrmv 250a1e12872SBarry Smith #define LAtrsl_ dtrsl 2514eeb42bcSBarry Smith #define BLgemm_ dgemm 252af6b99e9SBarry Smith #define LAgesvd_ dgesvd 253d4fbbf0eSBarry Smith #define LAgeev_ dgeev 254a1e12872SBarry Smith #endif 255a1e12872SBarry Smith 256516d1546SSatish Balay #endif /* PETSC_USES_CPTOFCD */ 257516d1546SSatish Balay 258a1e12872SBarry Smith #else 2594eeb42bcSBarry Smith /* 2604eeb42bcSBarry Smith Complex with no character string arguments 2614eeb42bcSBarry Smith */ 262f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE) 2638f4c8dbaSBarry Smith #define ZGEQRF CGEQRF 2648f4c8dbaSBarry Smith #define ZDOTC CDOTC 2658f4c8dbaSBarry Smith #define DZNRM2 SCNRM2 2668f4c8dbaSBarry Smith #define ZSCAL CSCAL 2678f4c8dbaSBarry Smith #define ZCOPY CCOPY 2688f4c8dbaSBarry Smith #define ZSWAP CSWAP 2698f4c8dbaSBarry Smith #define ZAXPY CAXPY 2708f4c8dbaSBarry Smith #define DZASUM SCASUM 2718f4c8dbaSBarry Smith #define ZGETRF CGETRF 2728f4c8dbaSBarry Smith #define ZTRTRS CTRTRS 2738f4c8dbaSBarry Smith #define ZPOTRF CPOTRF 2748f4c8dbaSBarry Smith #define ZPOTRS CPOTRS 2758f4c8dbaSBarry Smith #define ZGEMV CGEMV 2768f4c8dbaSBarry Smith #define ZGETRS CGETRS 2778f4c8dbaSBarry Smith #define ZGEMM SGEMM 2788f4c8dbaSBarry Smith #define ZTRMV CTRMV 279160814fdSSatish Balay #define ZTRSL CTRSL 280633a50d3SSatish Balay #define ZGEEV CGEEV 2818f4c8dbaSBarry Smith #endif 2828f4c8dbaSBarry Smith 283ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 284c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_ 2855392566eSBarry Smith #define LAgetrf_ zgetrf_ 28608d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_ 287a1e12872SBarry Smith #define BLdot_ zdotc_ 288a1e12872SBarry Smith #define BLnrm2_ dznrm2_ 289a1e12872SBarry Smith #define BLscal_ zscal_ 290a1e12872SBarry Smith #define BLcopy_ zcopy_ 291a1e12872SBarry Smith #define BLswap_ zswap_ 292a1e12872SBarry Smith #define BLaxpy_ zaxpy_ 293a1e12872SBarry Smith #define BLasum_ dzasum_ 294aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 29525fce39dSBarry Smith #define LAgeqrf_ ZGEQRF 29625fce39dSBarry Smith #define BLdot_ ZDOTC 29725fce39dSBarry Smith #define BLnrm2_ DZNRM2 29825fce39dSBarry Smith #define BLscal_ ZSCAL 29925fce39dSBarry Smith #define BLcopy_ ZCOPY 30025fce39dSBarry Smith #define BLswap_ ZSWAP 30125fce39dSBarry Smith #define BLaxpy_ ZAXPY 30225fce39dSBarry Smith #define BLasum_ DZASUM 30325fce39dSBarry Smith #define LAgetrf_ ZGETRF 30425fce39dSBarry Smith #else 30525fce39dSBarry Smith #define LAgeqrf_ zgeqrf 30625fce39dSBarry Smith #define LAgetrf_ zgetrf 30725fce39dSBarry Smith #define LAgetf2_ zgetf2 30825fce39dSBarry Smith #define BLdot_ zdotc 30925fce39dSBarry Smith #define BLnrm2_ dznrm2 31025fce39dSBarry Smith #define BLscal_ zscal 31125fce39dSBarry Smith #define BLcopy_ zcopy 31225fce39dSBarry Smith #define BLswap_ zswap 31325fce39dSBarry Smith #define BLaxpy_ zaxpy 31425fce39dSBarry Smith #define BLasum_ dzasum 315a1e12872SBarry Smith #endif 316a1e12872SBarry Smith 317f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 318f7d3a2fdSBarry 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)) 3198f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e)) 320f7d3a2fdSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h)) 321f7d3a2fdSBarry 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)) 322f7d3a2fdSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),(f),(g),(h),(i)) 323f7d3a2fdSBarry 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)) 324f7d3a2fdSBarry 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)) 325f7d3a2fdSBarry 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)) 3268f4c8dbaSBarry Smith #define LAtrmv_ ZTRMV 3278f4c8dbaSBarry Smith #define LAtrsl_ ZTRSL 328ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C) 32925fce39dSBarry Smith #define LAtrtrs_ ztrtrs_ 33025fce39dSBarry Smith #define LApotrf_ zpotrf_ 33125fce39dSBarry Smith #define LApotrs_ zpotrs_ 33225fce39dSBarry Smith #define LAgemv_ zgemv_ 33325fce39dSBarry Smith #define LAgetrs_ zgetrs_ 33425fce39dSBarry Smith #define LAtrmv_ ztrmv_ 33525fce39dSBarry Smith #define LAtrsl_ ztrsl_ 33625fce39dSBarry Smith #define BLgemm_ zgemm_ 33725fce39dSBarry Smith #define LAgesvd_ zgesvd_ 33825fce39dSBarry Smith #define LAgeev_ zgeev_ 339aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS) 340c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS 341a1e12872SBarry Smith #define LApotrf_ ZPOTRF 342a1e12872SBarry Smith #define LApotrs_ ZPOTRS 343a1e12872SBarry Smith #define LAgemv_ ZGEMV 344a1e12872SBarry Smith #define LAgetrf_ ZGETRF 34508d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2 346a1e12872SBarry Smith #define LAgetrs_ ZGETRS 347a1e12872SBarry Smith #define LAtrmv_ ZTRMV 348a1e12872SBarry Smith #define LAtrsl_ ZTRSL 3495a778de9SBarry Smith #define BLgemm_ ZGEMM 350d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD 351d4fbbf0eSBarry Smith #define LAgeev_ ZGEEV 35225fce39dSBarry Smith #else 353c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs 354a1e12872SBarry Smith #define LApotrf_ zpotrf 355a1e12872SBarry Smith #define LApotrs_ zpotrs 356a1e12872SBarry Smith #define LAgemv_ zgemv 357a1e12872SBarry Smith #define LAgetrs_ zgetrs 358a1e12872SBarry Smith #define LAtrmv_ ztrmv 359a1e12872SBarry Smith #define LAtrsl_ ztrsl 3605a778de9SBarry Smith #define BLgemm_ zgemm 361d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd 362d4fbbf0eSBarry Smith #define LAgeev_ zgeev 363a1e12872SBarry Smith #endif 364a1e12872SBarry Smith 365a1e12872SBarry Smith #endif 366a1e12872SBarry Smith 367fb2e594dSBarry Smith EXTERN_C_BEGIN 368a1e12872SBarry Smith 3698f4c8dbaSBarry Smith /* 3708f4c8dbaSBarry Smith BLdot cannot be used with COMPLEX because it cannot 3718f4c8dbaSBarry Smith handle returing a double complex to C++. 372126c565eSBarry Smith */ 37313f16e43SBarry Smith EXTERN PetscReal BLdot_(int*,PetscScalar*,int*,PetscScalar*,int*); 37413f16e43SBarry Smith EXTERN PetscReal BLnrm2_(int*,PetscScalar*,int*); 37513f16e43SBarry Smith EXTERN PetscReal BLasum_(int*,PetscScalar*,int*); 37687828ca2SBarry Smith EXTERN void BLscal_(int*,PetscScalar*,PetscScalar*,int*); 37787828ca2SBarry Smith EXTERN void BLcopy_(int*,PetscScalar*,int*,PetscScalar*,int*); 37887828ca2SBarry Smith EXTERN void BLswap_(int*,PetscScalar*,int*,PetscScalar*,int*); 37987828ca2SBarry Smith EXTERN void BLaxpy_(int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*); 38087828ca2SBarry Smith EXTERN void LAgetrf_(int*,int*,PetscScalar*,int*,int*,int*); 38187828ca2SBarry Smith EXTERN void LAgetf2_(int*,int*,PetscScalar*,int*,int*,int*); 38287828ca2SBarry Smith EXTERN void LAgeqrf_(int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*); 3835392566eSBarry Smith 384f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD) 385112a2221SBarry Smith 386aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX) 387f0234f3fSSatish Balay EXTERN void ZORMQR(_fcd,_fcd,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 388f0234f3fSSatish Balay EXTERN void ZTRTRS(_fcd,_fcd,_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 38987828ca2SBarry Smith EXTERN void ZPOTRF(_fcd,int*,PetscScalar*,int*,int*); 390f7d3a2fdSBarry Smith EXTERN void ZGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 39187828ca2SBarry Smith EXTERN void ZPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 39287828ca2SBarry Smith EXTERN void ZGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 393f7d3a2fdSBarry Smith EXTERN void ZGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 39413f16e43SBarry Smith EXTERN void ZGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 39513f16e43SBarry Smith EXTERN void ZGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 3965392566eSBarry Smith #else 397f0234f3fSSatish Balay EXTERN void DORMQR(_fcd,_fcd,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 398f0234f3fSSatish Balay EXTERN void DTRTRS(_fcd,_fcd,_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 39987828ca2SBarry Smith EXTERN void DPOTRF(_fcd,int*,PetscScalar*,int*,int*); 400f7d3a2fdSBarry Smith EXTERN void DGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 40187828ca2SBarry Smith EXTERN void DPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 40287828ca2SBarry Smith EXTERN void DGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 403f7d3a2fdSBarry Smith EXTERN void DGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 404f7d3a2fdSBarry Smith EXTERN void DGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 405f7d3a2fdSBarry Smith EXTERN void DGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 406112a2221SBarry Smith #endif 407112a2221SBarry Smith 408112a2221SBarry Smith #else 409f7d3a2fdSBarry Smith EXTERN void LAormqr_(char*,char*,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*); 410f7d3a2fdSBarry Smith EXTERN void LAtrtrs_(char*,char*,char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 41187828ca2SBarry Smith EXTERN void LApotrf_(char*,int*,PetscScalar*,int*,int*); 412f7d3a2fdSBarry Smith EXTERN void LAgemv_(char*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*); 41387828ca2SBarry Smith EXTERN void LApotrs_(char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 41487828ca2SBarry Smith EXTERN void LAgetrs_(char*,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*); 415f7d3a2fdSBarry Smith EXTERN void BLgemm_(char *,char*,int*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*); 416e38aa075SLois Curfman McInnes 417e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */ 418aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX) 41913f16e43SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,PetscReal*,int*); 42013f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 421aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL) 42213f16e43SBarry Smith EXTERN void LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,PetscReal*,int*); 42313f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 424aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX) 42513f16e43SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscReal*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 42613f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,int*); 427d4fbbf0eSBarry Smith #else 42813f16e43SBarry Smith EXTERN void LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 42913f16e43SBarry Smith EXTERN void LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,PetscReal*,PetscScalar*,int*,PetscScalar*,int*,PetscScalar*,int*,PetscReal*,int*); 430d4fbbf0eSBarry Smith #endif 4315392566eSBarry Smith #endif 432a1e12872SBarry Smith 433fb2e594dSBarry Smith EXTERN_C_END 434*e9fa29b7SSatish Balay PETSC_EXTERN_CXX_END 435a1e12872SBarry Smith #endif 436