xref: /petsc/include/petscblaslapack.h (revision e9fa29b77eaf32efadba30e98aa12b45e655e5d0)
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