xref: /petsc/include/petscblaslapack.h (revision 87828ca270d8140797fd4271705413c4ecfcb535)
1*87828ca2SBarry Smith /* $Id: petscblaslapack.h,v 1.45 2001/05/10 18:08:30 balay Exp bsmith $ */
2a1e12872SBarry Smith /*
3c0581c19SLois Curfman McInnes    This file provides some name space protection from LAPACK and BLAS and
4c0581c19SLois Curfman McInnes allows the appropriate single or double precision version to be used.
5c0581c19SLois Curfman McInnes This file also deals with different Fortran 77 naming conventions on machines.
65392566eSBarry Smith 
7217f3c9bSSatish Balay    Another problem is character strings are represented differently on
85392566eSBarry Smith on some machines in C and Fortran 77. This problem comes up on the
9633a50d3SSatish Balay Cray T3D/T3E.
105392566eSBarry Smith 
11a1e12872SBarry Smith */
12c3e41550SBarry Smith #if !defined(_BLASLAPACK_H)
13c3e41550SBarry Smith #define _BLASLAPACK_H
14a1e12872SBarry Smith 
1519b02663SBarry Smith #include "petsc.h"
16a1e12872SBarry Smith 
17bb638ab5SSatish Balay 
188e0e00b1SSatish Balay #if defined(PETSC_BLASLAPACK_MKL64_ONLY)
198e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
208e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GEEV
218e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRF
228e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRF
238e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_GETRS
248e0e00b1SSatish Balay #define PETSC_MISSING_LAPACK_POTRS
25e7906763SSatish Balay #elif defined(PETSC_BLASLAPACK_MKL_ONLY)
26bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
27bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV
28ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_CRAY_ONLY)
29bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
30ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_ESSL_ONLY)
31ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GESVD
32ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRF
33ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRS
34ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRF
35ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRS
36bb638ab5SSatish Balay #endif
37bb638ab5SSatish Balay 
388f4c8dbaSBarry Smith /*
39633a50d3SSatish Balay    This include file on the Cray T3D/T3E defines the interface between
40217f3c9bSSatish Balay   Fortran and C representations of character strings.
418f4c8dbaSBarry Smith */
42f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
4393c39befSBarry Smith #include <fortran.h>
445392566eSBarry Smith #endif
455392566eSBarry Smith 
46aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX)
474eeb42bcSBarry Smith 
484eeb42bcSBarry Smith /*
494eeb42bcSBarry Smith     These are real case with no character string arguments
504eeb42bcSBarry Smith */
518f4c8dbaSBarry Smith 
52f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
538f4c8dbaSBarry Smith /*
548f4c8dbaSBarry Smith    For these machines we must call the single precision Fortran version
558f4c8dbaSBarry Smith */
568f4c8dbaSBarry Smith #define DGEQRF   SGEQRF
578f4c8dbaSBarry Smith #define DGETRF   SGETRF
588f4c8dbaSBarry Smith #define DDOT     SDOT
598f4c8dbaSBarry Smith #define DNRM2    SNRM2
608f4c8dbaSBarry Smith #define DSCAL    SSCAL
618f4c8dbaSBarry Smith #define DCOPY    SCOPY
628f4c8dbaSBarry Smith #define DSWAP    SSWAP
638f4c8dbaSBarry Smith #define DAXPY    SAXPY
648f4c8dbaSBarry Smith #define DASUM    SASUM
658f4c8dbaSBarry Smith #define DSORMQR  SORMQR
668f4c8dbaSBarry Smith #define DTRTRS   STRTRS
678f4c8dbaSBarry Smith #define DPOTRF   SPOTRF
688f4c8dbaSBarry Smith #define DPOTRS   SPOTRS
698f4c8dbaSBarry Smith #define DGEMV    SGEMV
708f4c8dbaSBarry Smith #define DGETRS   SGETRS
718f4c8dbaSBarry Smith #define DGETRS   SGETRS
728f4c8dbaSBarry Smith #define DGEMM    SGEMM
738f4c8dbaSBarry Smith #define DGESVD   SGESVD
74d4fbbf0eSBarry Smith #define DGEEV    SGEEV
758f4c8dbaSBarry Smith #define DTRMV    STRMV
768f4c8dbaSBarry Smith #define DTRSL    STRSL
778f4c8dbaSBarry Smith #endif
788f4c8dbaSBarry Smith 
79ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
80c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_
815392566eSBarry Smith #define LAgetrf_ dgetrf_
82c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_
83a1e12872SBarry Smith #define BLdot_   ddot_
84a1e12872SBarry Smith #define BLnrm2_  dnrm2_
85a1e12872SBarry Smith #define BLscal_  dscal_
86a1e12872SBarry Smith #define BLcopy_  dcopy_
87a1e12872SBarry Smith #define BLswap_  dswap_
88a1e12872SBarry Smith #define BLaxpy_  daxpy_
89a1e12872SBarry Smith #define BLasum_  dasum_
90aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
9125fce39dSBarry Smith #define LAgeqrf_ DGEQRF
9225fce39dSBarry Smith #define LAgetrf_ DGETRF
9325fce39dSBarry Smith #define LAgetf2_ DGETF2
9425fce39dSBarry Smith #define BLdot_   DDOT
9525fce39dSBarry Smith #define BLnrm2_  DNRM2
9625fce39dSBarry Smith #define BLscal_  DSCAL
9725fce39dSBarry Smith #define BLcopy_  DCOPY
9825fce39dSBarry Smith #define BLswap_  DSWAP
9925fce39dSBarry Smith #define BLaxpy_  DAXPY
10025fce39dSBarry Smith #define BLasum_  DASUM
10125fce39dSBarry Smith #else
10225fce39dSBarry Smith #define LAgeqrf_ dgeqrf
10325fce39dSBarry Smith #define LAgetrf_ dgetrf
10425fce39dSBarry Smith #define LAgetf2_ dgetf2
10525fce39dSBarry Smith #define BLdot_   ddot
10625fce39dSBarry Smith #define BLnrm2_  dnrm2
10725fce39dSBarry Smith #define BLscal_  dscal
10825fce39dSBarry Smith #define BLcopy_  dcopy
10925fce39dSBarry Smith #define BLswap_  dswap
11025fce39dSBarry Smith #define BLaxpy_  daxpy
11125fce39dSBarry Smith #define BLasum_  dasum
112a1e12872SBarry Smith #endif
113a1e12872SBarry Smith 
1144eeb42bcSBarry Smith /*
1154eeb42bcSBarry Smith    Real with character string arguments.
1164eeb42bcSBarry Smith */
117f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
1188f4c8dbaSBarry Smith /*
1198f4c8dbaSBarry Smith    Note that this assumes that machines which use cptofcd() use
120aa482453SBarry Smith   the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E.
1218f4c8dbaSBarry Smith */
1228f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m)  DORMQR(_cptofcd((a),1),\
123bbb6d6a8SBarry Smith              _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m))
1248f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
125c0534c1cSBarry Smith                              _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
1268f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
1278f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
1285392566eSBarry Smith                                          (f),(g),(h))
1298f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
1305392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
1318f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1325392566eSBarry Smith                                         (f),(g),(h),(i))
1338f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1344eeb42bcSBarry Smith                                         (f),(g),(h),(i))
1358f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \
1364eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
1374eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
13821c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \
139af6b99e9SBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
14021c89e3eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
141d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \
142d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
143d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
1448f4c8dbaSBarry Smith #define LAtrmv_  DTRMV
1458f4c8dbaSBarry Smith #define LAtrsl_  DTRSL
146633a50d3SSatish Balay #define LAgetrf_ DGETRF
147ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
14825fce39dSBarry Smith #define LAormqr_ dormqr_
14925fce39dSBarry Smith #define LAtrtrs_ dtrtrs_
15025fce39dSBarry Smith #define LApotrf_ dpotrf_
15125fce39dSBarry Smith #define LApotrs_ dpotrs_
15225fce39dSBarry Smith #define LAgemv_  dgemv_
15325fce39dSBarry Smith #define LAgetrs_ dgetrs_
15425fce39dSBarry Smith #define LAtrmv_  dtrmv_
15525fce39dSBarry Smith #define LAtrsl_  dtrsl_
15625fce39dSBarry Smith #define BLgemm_  dgemm_
15725fce39dSBarry Smith #define LAgesvd_ dgesvd_
15825fce39dSBarry Smith #define LAgeev_  dgeev_
159aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
160c0534c1cSBarry Smith #define LAormqr_ DORMQR
161c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS
162a1e12872SBarry Smith #define LApotrf_ DPOTRF
163a1e12872SBarry Smith #define LApotrs_ DPOTRS
164a1e12872SBarry Smith #define LAgemv_  DGEMV
165a1e12872SBarry Smith #define LAgetrs_ DGETRS
166a1e12872SBarry Smith #define LAtrmv_  DTRMV
167a1e12872SBarry Smith #define LAtrsl_  DTRSL
168af6b99e9SBarry Smith #define LAgesvd_ DGESVD
169d4fbbf0eSBarry Smith #define LAgeev_  DGEEV
1704eeb42bcSBarry Smith #define BLgemm_  DGEMM
17125fce39dSBarry Smith #else
172c0534c1cSBarry Smith #define LAormqr_ dormqr
173c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs
174a1e12872SBarry Smith #define LApotrf_ dpotrf
175a1e12872SBarry Smith #define LApotrs_ dpotrs
176a1e12872SBarry Smith #define LAgemv_  dgemv
177a1e12872SBarry Smith #define LAgetrs_ dgetrs
178a1e12872SBarry Smith #define LAtrmv_  dtrmv
179a1e12872SBarry Smith #define LAtrsl_  dtrsl
1804eeb42bcSBarry Smith #define BLgemm_  dgemm
181af6b99e9SBarry Smith #define LAgesvd_ dgesvd
182d4fbbf0eSBarry Smith #define LAgeev_  dgeev
183a1e12872SBarry Smith #endif
184a1e12872SBarry Smith 
185a1e12872SBarry Smith #else
1864eeb42bcSBarry Smith /*
1874eeb42bcSBarry Smith    Complex with no character string arguments
1884eeb42bcSBarry Smith */
189f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
1908f4c8dbaSBarry Smith #define ZGEQRF  CGEQRF
1918f4c8dbaSBarry Smith #define ZDOTC   CDOTC
1928f4c8dbaSBarry Smith #define DZNRM2  SCNRM2
1938f4c8dbaSBarry Smith #define ZSCAL   CSCAL
1948f4c8dbaSBarry Smith #define ZCOPY   CCOPY
1958f4c8dbaSBarry Smith #define ZSWAP   CSWAP
1968f4c8dbaSBarry Smith #define ZAXPY   CAXPY
1978f4c8dbaSBarry Smith #define DZASUM  SCASUM
1988f4c8dbaSBarry Smith #define ZGETRF  CGETRF
1998f4c8dbaSBarry Smith #define ZTRTRS  CTRTRS
2008f4c8dbaSBarry Smith #define ZPOTRF  CPOTRF
2018f4c8dbaSBarry Smith #define ZPOTRS  CPOTRS
2028f4c8dbaSBarry Smith #define ZGEMV   CGEMV
2038f4c8dbaSBarry Smith #define ZGETRS  CGETRS
2048f4c8dbaSBarry Smith #define ZGEMM   SGEMM
2058f4c8dbaSBarry Smith #define ZTRMV   CTRMV
206160814fdSSatish Balay #define ZTRSL   CTRSL
207633a50d3SSatish Balay #define ZGEEV   CGEEV
2088f4c8dbaSBarry Smith #endif
2098f4c8dbaSBarry Smith 
210ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
211c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_
2125392566eSBarry Smith #define LAgetrf_ zgetrf_
21308d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_
214a1e12872SBarry Smith #define BLdot_   zdotc_
215a1e12872SBarry Smith #define BLnrm2_  dznrm2_
216a1e12872SBarry Smith #define BLscal_  zscal_
217a1e12872SBarry Smith #define BLcopy_  zcopy_
218a1e12872SBarry Smith #define BLswap_  zswap_
219a1e12872SBarry Smith #define BLaxpy_  zaxpy_
220a1e12872SBarry Smith #define BLasum_  dzasum_
221aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
22225fce39dSBarry Smith #define LAgeqrf_ ZGEQRF
22325fce39dSBarry Smith #define BLdot_   ZDOTC
22425fce39dSBarry Smith #define BLnrm2_  DZNRM2
22525fce39dSBarry Smith #define BLscal_  ZSCAL
22625fce39dSBarry Smith #define BLcopy_  ZCOPY
22725fce39dSBarry Smith #define BLswap_  ZSWAP
22825fce39dSBarry Smith #define BLaxpy_  ZAXPY
22925fce39dSBarry Smith #define BLasum_  DZASUM
23025fce39dSBarry Smith #define LAgetrf_ ZGETRF
23125fce39dSBarry Smith #else
23225fce39dSBarry Smith #define LAgeqrf_ zgeqrf
23325fce39dSBarry Smith #define LAgetrf_ zgetrf
23425fce39dSBarry Smith #define LAgetf2_ zgetf2
23525fce39dSBarry Smith #define BLdot_   zdotc
23625fce39dSBarry Smith #define BLnrm2_  dznrm2
23725fce39dSBarry Smith #define BLscal_  zscal
23825fce39dSBarry Smith #define BLcopy_  zcopy
23925fce39dSBarry Smith #define BLswap_  zswap
24025fce39dSBarry Smith #define BLaxpy_  zaxpy
24125fce39dSBarry Smith #define BLasum_  dzasum
242a1e12872SBarry Smith #endif
243a1e12872SBarry Smith 
244f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
2458f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
246c0534c1cSBarry Smith                               _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
2478f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e)       ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
2488f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
2495392566eSBarry Smith                                          (f),(g),(h))
2508f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
2515392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
2528f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
2535392566eSBarry Smith                                         (f),(g),(h),(i))
2548f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \
2554eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
2564eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
257d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \
258d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
259d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n),(p))
260639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \
261d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
262639f9d9dSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
2638f4c8dbaSBarry Smith #define LAtrmv_  ZTRMV
2648f4c8dbaSBarry Smith #define LAtrsl_  ZTRSL
265ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
26625fce39dSBarry Smith #define LAtrtrs_ ztrtrs_
26725fce39dSBarry Smith #define LApotrf_ zpotrf_
26825fce39dSBarry Smith #define LApotrs_ zpotrs_
26925fce39dSBarry Smith #define LAgemv_  zgemv_
27025fce39dSBarry Smith #define LAgetrs_ zgetrs_
27125fce39dSBarry Smith #define LAtrmv_  ztrmv_
27225fce39dSBarry Smith #define LAtrsl_  ztrsl_
27325fce39dSBarry Smith #define BLgemm_  zgemm_
27425fce39dSBarry Smith #define LAgesvd_ zgesvd_
27525fce39dSBarry Smith #define LAgeev_  zgeev_
276aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
277c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS
278a1e12872SBarry Smith #define LApotrf_ ZPOTRF
279a1e12872SBarry Smith #define LApotrs_ ZPOTRS
280a1e12872SBarry Smith #define LAgemv_  ZGEMV
281a1e12872SBarry Smith #define LAgetrf_ ZGETRF
28208d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2
283a1e12872SBarry Smith #define LAgetrs_ ZGETRS
284a1e12872SBarry Smith #define LAtrmv_  ZTRMV
285a1e12872SBarry Smith #define LAtrsl_  ZTRSL
2865a778de9SBarry Smith #define BLgemm_  ZGEMM
287d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD
288d4fbbf0eSBarry Smith #define LAgeev_  ZGEEV
28925fce39dSBarry Smith #else
290c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs
291a1e12872SBarry Smith #define LApotrf_ zpotrf
292a1e12872SBarry Smith #define LApotrs_ zpotrs
293a1e12872SBarry Smith #define LAgemv_  zgemv
294a1e12872SBarry Smith #define LAgetrs_ zgetrs
295a1e12872SBarry Smith #define LAtrmv_  ztrmv
296a1e12872SBarry Smith #define LAtrsl_  ztrsl
2975a778de9SBarry Smith #define BLgemm_  zgemm
298d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd
299d4fbbf0eSBarry Smith #define LAgeev_  zgeev
300a1e12872SBarry Smith #endif
301a1e12872SBarry Smith 
302a1e12872SBarry Smith #endif
303a1e12872SBarry Smith 
304fb2e594dSBarry Smith EXTERN_C_BEGIN
305a1e12872SBarry Smith 
3068f4c8dbaSBarry Smith /*
3078f4c8dbaSBarry Smith    BLdot cannot be used with COMPLEX because it cannot
3088f4c8dbaSBarry Smith    handle returing a double complex to C++.
309126c565eSBarry Smith */
310*87828ca2SBarry Smith EXTERN double BLdot_(int*,PetscScalar*,int*,PetscScalar*,int*);
311*87828ca2SBarry Smith EXTERN double BLnrm2_(int*,PetscScalar*,int*),BLasum_(int*,PetscScalar*,int*);
312*87828ca2SBarry Smith EXTERN void   BLscal_(int*,PetscScalar*,PetscScalar*,int*);
313*87828ca2SBarry Smith EXTERN void   BLcopy_(int*,PetscScalar*,int*,PetscScalar*,int*);
314*87828ca2SBarry Smith EXTERN void   BLswap_(int*,PetscScalar*,int*,PetscScalar*,int*);
315*87828ca2SBarry Smith EXTERN void   BLaxpy_(int*,PetscScalar*,PetscScalar*,int*,PetscScalar*,int*);
316*87828ca2SBarry Smith EXTERN void   LAgetrf_(int*,int*,PetscScalar*,int*,int*,int*);
317*87828ca2SBarry Smith EXTERN void   LAgetf2_(int*,int*,PetscScalar*,int*,int*,int*);
318*87828ca2SBarry Smith EXTERN void   LAgeqrf_(int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*);
3195392566eSBarry Smith 
320f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
321112a2221SBarry Smith 
322aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX)
323*87828ca2SBarry Smith EXTERN void   ZPOTRF(_fcd,int*,PetscScalar*,int*,int*);
324*87828ca2SBarry Smith EXTERN void   ZGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,
325*87828ca2SBarry Smith                     Scalar*,PetscScalar*,int*);
326*87828ca2SBarry Smith EXTERN void   ZPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*);
327*87828ca2SBarry Smith EXTERN void   ZGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*);
328*87828ca2SBarry Smith EXTERN void   ZGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,
329*87828ca2SBarry Smith                     Scalar*,int*,PetscScalar*,PetscScalar*,int*);
330*87828ca2SBarry Smith EXTERN void   ZGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,double*,PetscScalar*,
331*87828ca2SBarry Smith                      int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*);
332*87828ca2SBarry Smith EXTERN void   ZGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,
333*87828ca2SBarry Smith                     int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*);
3345392566eSBarry Smith #else
335*87828ca2SBarry Smith EXTERN void   DPOTRF(_fcd,int*,PetscScalar*,int*,int*);
336*87828ca2SBarry Smith EXTERN void   DGEMV(_fcd,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,
337*87828ca2SBarry Smith                     Scalar*,PetscScalar*,int*);
338*87828ca2SBarry Smith EXTERN void   DPOTRS(_fcd,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*);
339*87828ca2SBarry Smith EXTERN void   DGETRS(_fcd,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*);
340*87828ca2SBarry Smith EXTERN void   DGEMM(_fcd,_fcd,int*,int*,int*,PetscScalar*,PetscScalar*,int*,
341*87828ca2SBarry Smith                     Scalar*,int*,PetscScalar*,PetscScalar*,int*);
342*87828ca2SBarry Smith EXTERN void   DGESVD(_fcd,_fcd,int *,int*,PetscScalar *,int*,PetscScalar*,PetscScalar*,
343*87828ca2SBarry Smith                      int*,PetscScalar*,int*,PetscScalar*,int*,int*);
344*87828ca2SBarry Smith EXTERN void   DGEEV(_fcd,_fcd,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,PetscScalar*,
345*87828ca2SBarry Smith                     int*,PetscScalar*,int*,PetscScalar*,int*,int*);
346112a2221SBarry Smith #endif
347112a2221SBarry Smith 
348112a2221SBarry Smith #else
349*87828ca2SBarry Smith EXTERN void   LAormqr_(char*,char*,int*,int*,int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,
350*87828ca2SBarry Smith                        int*,PetscScalar*,int*,int*);
351*87828ca2SBarry Smith EXTERN void   LAtrtrs_(char*,char*,char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,
352c0534c1cSBarry Smith                        int*);
353*87828ca2SBarry Smith EXTERN void   LApotrf_(char*,int*,PetscScalar*,int*,int*);
354*87828ca2SBarry Smith EXTERN void   LAgemv_(char*,int*,int*,PetscScalar*,PetscScalar*,int*,PetscScalar *,int*,
355*87828ca2SBarry Smith                       Scalar*,PetscScalar*,int*);
356*87828ca2SBarry Smith EXTERN void   LApotrs_(char*,int*,int*,PetscScalar*,int*,PetscScalar*,int*,int*);
357*87828ca2SBarry Smith EXTERN void   LAgetrs_(char*,int*,int*,PetscScalar*,int*,int*,PetscScalar*,int*,int*);
358*87828ca2SBarry Smith EXTERN void   BLgemm_(char *,char*,int*,int*,int*,PetscScalar*,PetscScalar*,int*,
359*87828ca2SBarry Smith                       Scalar*,int*,PetscScalar*,PetscScalar*,int*);
360e38aa075SLois Curfman McInnes 
361e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */
362aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX)
363*87828ca2SBarry Smith EXTERN void   LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,double*,int*);
364*87828ca2SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,
365*87828ca2SBarry Smith                        int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*);
366aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL)
367*87828ca2SBarry Smith EXTERN void   LAgeev_(int*,PetscScalar*,int*,PetscScalar*,PetscScalar*,int*,int*,int*,double*,int*);
368*87828ca2SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,
369*87828ca2SBarry Smith                        int*,PetscScalar*,int*,PetscScalar*,int*,int*);
370aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX)
371*87828ca2SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,PetscScalar *,int*,double*,double*,PetscScalar*,
372*87828ca2SBarry Smith                       int*,PetscScalar*,int*,PetscScalar*,int*,int*);
373*87828ca2SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,
374*87828ca2SBarry Smith                        int*,PetscScalar*,int*,PetscScalar*,int*,int*);
375d4fbbf0eSBarry Smith #else
376*87828ca2SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,PetscScalar *,int*,PetscScalar*,PetscScalar*,
377*87828ca2SBarry Smith                       int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*);
378*87828ca2SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,PetscScalar *,int*,double*,PetscScalar*,
379*87828ca2SBarry Smith                        int*,PetscScalar*,int*,PetscScalar*,int*,double*,int*);
380d4fbbf0eSBarry Smith #endif
3815392566eSBarry Smith #endif
382a1e12872SBarry Smith 
383fb2e594dSBarry Smith EXTERN_C_END
384a1e12872SBarry Smith 
385a1e12872SBarry Smith #endif
3865a778de9SBarry Smith 
387