xref: /petsc/include/petscblaslapack.h (revision f0234f3fea0bbcb3bb6eb021f51e1278aa0c4ec0)
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)
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 
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)
388*f0234f3fSSatish Balay EXTERN void   ZORMQR(_fcd,_fcd,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*);
389*f0234f3fSSatish 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
398*f0234f3fSSatish Balay EXTERN void   DORMQR(_fcd,_fcd,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*,int*);
399*f0234f3fSSatish 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