xref: /petsc/include/petscblaslapack.h (revision ae7cfceb55b5f4b52a4d945f9f2d81be7e2d348f)
1*ae7cfcebSSatish Balay /* $Id: petscblaslapack.h,v 1.41 2001/03/26 19:28:22 balay Exp balay $ */
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 
75392566eSBarry Smith    Another problem is charactor 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 
18*ae7cfcebSSatish Balay #if defined(PETSC_BLASLAPACK_MKL_ONLY)
19bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
20bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV
21*ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_CRAY_ONLY)
22bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
23*ae7cfcebSSatish Balay #elif defined(PETSC_BLASLAPACK_ESSL_ONLY)
24*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GESVD
25*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRF
26*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_GETRS
27*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRF
28*ae7cfcebSSatish Balay #define PETSC_MISSING_LAPACK_POTRS
29bb638ab5SSatish Balay #endif
30bb638ab5SSatish Balay 
318f4c8dbaSBarry Smith /*
32633a50d3SSatish Balay    This include file on the Cray T3D/T3E defines the interface between
338f4c8dbaSBarry Smith   Fortran and C representations of charactor strings.
348f4c8dbaSBarry Smith */
35f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
3693c39befSBarry Smith #include <fortran.h>
375392566eSBarry Smith #endif
385392566eSBarry Smith 
39aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX)
404eeb42bcSBarry Smith 
414eeb42bcSBarry Smith /*
424eeb42bcSBarry Smith     These are real case with no character string arguments
434eeb42bcSBarry Smith */
448f4c8dbaSBarry Smith 
45f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
468f4c8dbaSBarry Smith /*
478f4c8dbaSBarry Smith    For these machines we must call the single precision Fortran version
488f4c8dbaSBarry Smith */
498f4c8dbaSBarry Smith #define DGEQRF   SGEQRF
508f4c8dbaSBarry Smith #define DGETRF   SGETRF
518f4c8dbaSBarry Smith #define DDOT     SDOT
528f4c8dbaSBarry Smith #define DNRM2    SNRM2
538f4c8dbaSBarry Smith #define DSCAL    SSCAL
548f4c8dbaSBarry Smith #define DCOPY    SCOPY
558f4c8dbaSBarry Smith #define DSWAP    SSWAP
568f4c8dbaSBarry Smith #define DAXPY    SAXPY
578f4c8dbaSBarry Smith #define DASUM    SASUM
588f4c8dbaSBarry Smith #define DSORMQR  SORMQR
598f4c8dbaSBarry Smith #define DTRTRS   STRTRS
608f4c8dbaSBarry Smith #define DPOTRF   SPOTRF
618f4c8dbaSBarry Smith #define DPOTRS   SPOTRS
628f4c8dbaSBarry Smith #define DGEMV    SGEMV
638f4c8dbaSBarry Smith #define DGETRS   SGETRS
648f4c8dbaSBarry Smith #define DGETRS   SGETRS
658f4c8dbaSBarry Smith #define DGEMM    SGEMM
668f4c8dbaSBarry Smith #define DGESVD   SGESVD
67d4fbbf0eSBarry Smith #define DGEEV    SGEEV
688f4c8dbaSBarry Smith #define DTRMV    STRMV
698f4c8dbaSBarry Smith #define DTRSL    STRSL
708f4c8dbaSBarry Smith #endif
718f4c8dbaSBarry Smith 
72*ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
73c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_
745392566eSBarry Smith #define LAgetrf_ dgetrf_
75c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_
76a1e12872SBarry Smith #define BLdot_   ddot_
77a1e12872SBarry Smith #define BLnrm2_  dnrm2_
78a1e12872SBarry Smith #define BLscal_  dscal_
79a1e12872SBarry Smith #define BLcopy_  dcopy_
80a1e12872SBarry Smith #define BLswap_  dswap_
81a1e12872SBarry Smith #define BLaxpy_  daxpy_
82a1e12872SBarry Smith #define BLasum_  dasum_
83aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
8425fce39dSBarry Smith #define LAgeqrf_ DGEQRF
8525fce39dSBarry Smith #define LAgetrf_ DGETRF
8625fce39dSBarry Smith #define LAgetf2_ DGETF2
8725fce39dSBarry Smith #define BLdot_   DDOT
8825fce39dSBarry Smith #define BLnrm2_  DNRM2
8925fce39dSBarry Smith #define BLscal_  DSCAL
9025fce39dSBarry Smith #define BLcopy_  DCOPY
9125fce39dSBarry Smith #define BLswap_  DSWAP
9225fce39dSBarry Smith #define BLaxpy_  DAXPY
9325fce39dSBarry Smith #define BLasum_  DASUM
9425fce39dSBarry Smith #else
9525fce39dSBarry Smith #define LAgeqrf_ dgeqrf
9625fce39dSBarry Smith #define LAgetrf_ dgetrf
9725fce39dSBarry Smith #define LAgetf2_ dgetf2
9825fce39dSBarry Smith #define BLdot_   ddot
9925fce39dSBarry Smith #define BLnrm2_  dnrm2
10025fce39dSBarry Smith #define BLscal_  dscal
10125fce39dSBarry Smith #define BLcopy_  dcopy
10225fce39dSBarry Smith #define BLswap_  dswap
10325fce39dSBarry Smith #define BLaxpy_  daxpy
10425fce39dSBarry Smith #define BLasum_  dasum
105a1e12872SBarry Smith #endif
106a1e12872SBarry Smith 
1074eeb42bcSBarry Smith /*
1084eeb42bcSBarry Smith    Real with character string arguments.
1094eeb42bcSBarry Smith */
110f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
1118f4c8dbaSBarry Smith /*
1128f4c8dbaSBarry Smith    Note that this assumes that machines which use cptofcd() use
113aa482453SBarry Smith   the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E.
1148f4c8dbaSBarry Smith */
1158f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m)  DORMQR(_cptofcd((a),1),\
116bbb6d6a8SBarry Smith              _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m))
1178f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
118c0534c1cSBarry Smith                              _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
1198f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
1208f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
1215392566eSBarry Smith                                          (f),(g),(h))
1228f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
1235392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
1248f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1255392566eSBarry Smith                                         (f),(g),(h),(i))
1268f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1274eeb42bcSBarry Smith                                         (f),(g),(h),(i))
1288f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \
1294eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
1304eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
13121c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \
132af6b99e9SBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
13321c89e3eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
134d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \
135d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
136d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
1378f4c8dbaSBarry Smith #define LAtrmv_  DTRMV
1388f4c8dbaSBarry Smith #define LAtrsl_  DTRSL
139633a50d3SSatish Balay #define LAgetrf_ DGETRF
140*ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
14125fce39dSBarry Smith #define LAormqr_ dormqr_
14225fce39dSBarry Smith #define LAtrtrs_ dtrtrs_
14325fce39dSBarry Smith #define LApotrf_ dpotrf_
14425fce39dSBarry Smith #define LApotrs_ dpotrs_
14525fce39dSBarry Smith #define LAgemv_  dgemv_
14625fce39dSBarry Smith #define LAgetrs_ dgetrs_
14725fce39dSBarry Smith #define LAtrmv_  dtrmv_
14825fce39dSBarry Smith #define LAtrsl_  dtrsl_
14925fce39dSBarry Smith #define BLgemm_  dgemm_
15025fce39dSBarry Smith #define LAgesvd_ dgesvd_
15125fce39dSBarry Smith #define LAgeev_  dgeev_
152aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
153c0534c1cSBarry Smith #define LAormqr_ DORMQR
154c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS
155a1e12872SBarry Smith #define LApotrf_ DPOTRF
156a1e12872SBarry Smith #define LApotrs_ DPOTRS
157a1e12872SBarry Smith #define LAgemv_  DGEMV
158a1e12872SBarry Smith #define LAgetrs_ DGETRS
159a1e12872SBarry Smith #define LAtrmv_  DTRMV
160a1e12872SBarry Smith #define LAtrsl_  DTRSL
161af6b99e9SBarry Smith #define LAgesvd_ DGESVD
162d4fbbf0eSBarry Smith #define LAgeev_  DGEEV
1634eeb42bcSBarry Smith #define BLgemm_  DGEMM
16425fce39dSBarry Smith #else
165c0534c1cSBarry Smith #define LAormqr_ dormqr
166c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs
167a1e12872SBarry Smith #define LApotrf_ dpotrf
168a1e12872SBarry Smith #define LApotrs_ dpotrs
169a1e12872SBarry Smith #define LAgemv_  dgemv
170a1e12872SBarry Smith #define LAgetrs_ dgetrs
171a1e12872SBarry Smith #define LAtrmv_  dtrmv
172a1e12872SBarry Smith #define LAtrsl_  dtrsl
1734eeb42bcSBarry Smith #define BLgemm_  dgemm
174af6b99e9SBarry Smith #define LAgesvd_ dgesvd
175d4fbbf0eSBarry Smith #define LAgeev_  dgeev
176a1e12872SBarry Smith #endif
177a1e12872SBarry Smith 
178a1e12872SBarry Smith #else
1794eeb42bcSBarry Smith /*
1804eeb42bcSBarry Smith    Complex with no character string arguments
1814eeb42bcSBarry Smith */
182f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
1838f4c8dbaSBarry Smith #define ZGEQRF  CGEQRF
1848f4c8dbaSBarry Smith #define ZDOTC   CDOTC
1858f4c8dbaSBarry Smith #define DZNRM2  SCNRM2
1868f4c8dbaSBarry Smith #define ZSCAL   CSCAL
1878f4c8dbaSBarry Smith #define ZCOPY   CCOPY
1888f4c8dbaSBarry Smith #define ZSWAP   CSWAP
1898f4c8dbaSBarry Smith #define ZAXPY   CAXPY
1908f4c8dbaSBarry Smith #define DZASUM  SCASUM
1918f4c8dbaSBarry Smith #define ZGETRF  CGETRF
1928f4c8dbaSBarry Smith #define ZTRTRS  CTRTRS
1938f4c8dbaSBarry Smith #define ZPOTRF  CPOTRF
1948f4c8dbaSBarry Smith #define ZPOTRS  CPOTRS
1958f4c8dbaSBarry Smith #define ZGEMV   CGEMV
1968f4c8dbaSBarry Smith #define ZGETRS  CGETRS
1978f4c8dbaSBarry Smith #define ZGEMM   SGEMM
1988f4c8dbaSBarry Smith #define ZTRMV   CTRMV
199160814fdSSatish Balay #define ZTRSL   CTRSL
200633a50d3SSatish Balay #define ZGEEV   CGEEV
2018f4c8dbaSBarry Smith #endif
2028f4c8dbaSBarry Smith 
203*ae7cfcebSSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
204c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_
2055392566eSBarry Smith #define LAgetrf_ zgetrf_
20608d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_
207a1e12872SBarry Smith #define BLdot_   zdotc_
208a1e12872SBarry Smith #define BLnrm2_  dznrm2_
209a1e12872SBarry Smith #define BLscal_  zscal_
210a1e12872SBarry Smith #define BLcopy_  zcopy_
211a1e12872SBarry Smith #define BLswap_  zswap_
212a1e12872SBarry Smith #define BLaxpy_  zaxpy_
213a1e12872SBarry Smith #define BLasum_  dzasum_
214aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
21525fce39dSBarry Smith #define LAgeqrf_ ZGEQRF
21625fce39dSBarry Smith #define BLdot_   ZDOTC
21725fce39dSBarry Smith #define BLnrm2_  DZNRM2
21825fce39dSBarry Smith #define BLscal_  ZSCAL
21925fce39dSBarry Smith #define BLcopy_  ZCOPY
22025fce39dSBarry Smith #define BLswap_  ZSWAP
22125fce39dSBarry Smith #define BLaxpy_  ZAXPY
22225fce39dSBarry Smith #define BLasum_  DZASUM
22325fce39dSBarry Smith #define LAgetrf_ ZGETRF
22425fce39dSBarry Smith #else
22525fce39dSBarry Smith #define LAgeqrf_ zgeqrf
22625fce39dSBarry Smith #define LAgetrf_ zgetrf
22725fce39dSBarry Smith #define LAgetf2_ zgetf2
22825fce39dSBarry Smith #define BLdot_   zdotc
22925fce39dSBarry Smith #define BLnrm2_  dznrm2
23025fce39dSBarry Smith #define BLscal_  zscal
23125fce39dSBarry Smith #define BLcopy_  zcopy
23225fce39dSBarry Smith #define BLswap_  zswap
23325fce39dSBarry Smith #define BLaxpy_  zaxpy
23425fce39dSBarry Smith #define BLasum_  dzasum
235a1e12872SBarry Smith #endif
236a1e12872SBarry Smith 
237f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
2388f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
239c0534c1cSBarry Smith                               _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
2408f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e)       ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
2418f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
2425392566eSBarry Smith                                          (f),(g),(h))
2438f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
2445392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
2458f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
2465392566eSBarry Smith                                         (f),(g),(h),(i))
2478f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \
2484eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
2494eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
250d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \
251d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
252d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n),(p))
253639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \
254d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
255639f9d9dSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
2568f4c8dbaSBarry Smith #define LAtrmv_  ZTRMV
2578f4c8dbaSBarry Smith #define LAtrsl_  ZTRSL
258*ae7cfcebSSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_BLASLAPACK_F2C)
25925fce39dSBarry Smith #define LAtrtrs_ ztrtrs_
26025fce39dSBarry Smith #define LApotrf_ zpotrf_
26125fce39dSBarry Smith #define LApotrs_ zpotrs_
26225fce39dSBarry Smith #define LAgemv_  zgemv_
26325fce39dSBarry Smith #define LAgetrs_ zgetrs_
26425fce39dSBarry Smith #define LAtrmv_  ztrmv_
26525fce39dSBarry Smith #define LAtrsl_  ztrsl_
26625fce39dSBarry Smith #define BLgemm_  zgemm_
26725fce39dSBarry Smith #define LAgesvd_ zgesvd_
26825fce39dSBarry Smith #define LAgeev_  zgeev_
269aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
270c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS
271a1e12872SBarry Smith #define LApotrf_ ZPOTRF
272a1e12872SBarry Smith #define LApotrs_ ZPOTRS
273a1e12872SBarry Smith #define LAgemv_  ZGEMV
274a1e12872SBarry Smith #define LAgetrf_ ZGETRF
27508d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2
276a1e12872SBarry Smith #define LAgetrs_ ZGETRS
277a1e12872SBarry Smith #define LAtrmv_  ZTRMV
278a1e12872SBarry Smith #define LAtrsl_  ZTRSL
2795a778de9SBarry Smith #define BLgemm_  ZGEMM
280d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD
281d4fbbf0eSBarry Smith #define LAgeev_  ZGEEV
28225fce39dSBarry Smith #else
283c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs
284a1e12872SBarry Smith #define LApotrf_ zpotrf
285a1e12872SBarry Smith #define LApotrs_ zpotrs
286a1e12872SBarry Smith #define LAgemv_  zgemv
287a1e12872SBarry Smith #define LAgetrs_ zgetrs
288a1e12872SBarry Smith #define LAtrmv_  ztrmv
289a1e12872SBarry Smith #define LAtrsl_  ztrsl
2905a778de9SBarry Smith #define BLgemm_  zgemm
291d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd
292d4fbbf0eSBarry Smith #define LAgeev_  zgeev
293a1e12872SBarry Smith #endif
294a1e12872SBarry Smith 
295a1e12872SBarry Smith #endif
296a1e12872SBarry Smith 
297fb2e594dSBarry Smith EXTERN_C_BEGIN
298a1e12872SBarry Smith 
2998f4c8dbaSBarry Smith /*
3008f4c8dbaSBarry Smith    BLdot cannot be used with COMPLEX because it cannot
3018f4c8dbaSBarry Smith    handle returing a double complex to C++.
302126c565eSBarry Smith */
303ca44d042SBarry Smith EXTERN double BLdot_(int*,Scalar*,int*,Scalar*,int*);
304ca44d042SBarry Smith EXTERN double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
305ca44d042SBarry Smith EXTERN void   BLscal_(int*,Scalar*,Scalar*,int*);
306ca44d042SBarry Smith EXTERN void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
307ca44d042SBarry Smith EXTERN void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
308ca44d042SBarry Smith EXTERN void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
309ca44d042SBarry Smith EXTERN void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
310ca44d042SBarry Smith EXTERN void   LAgetf2_(int*,int*,Scalar*,int*,int*,int*);
311ca44d042SBarry Smith EXTERN void   LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*);
3125392566eSBarry Smith 
313f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
314112a2221SBarry Smith 
315aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX)
316ca44d042SBarry Smith EXTERN void   ZPOTRF(_fcd,int*,Scalar*,int*,int*);
317ca44d042SBarry Smith EXTERN void   ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
3185392566eSBarry Smith                     Scalar*,Scalar*,int*);
319ca44d042SBarry Smith EXTERN void   ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
320ca44d042SBarry Smith EXTERN void   ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
321ca44d042SBarry Smith EXTERN void   ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*,
3224eeb42bcSBarry Smith                     Scalar*,int*,Scalar*,Scalar*,int*);
323ca44d042SBarry Smith EXTERN void   ZGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,double*,Scalar*,
324d4fbbf0eSBarry Smith                      int*,Scalar*,int*,Scalar*,int*,double*,int*);
325ca44d042SBarry Smith EXTERN void   ZGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,
326d4fbbf0eSBarry Smith                     int*,Scalar*,int*,Scalar*,int*,double*,int*);
3275392566eSBarry Smith #else
328ca44d042SBarry Smith EXTERN void   DPOTRF(_fcd,int*,Scalar*,int*,int*);
329ca44d042SBarry Smith EXTERN void   DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
330112a2221SBarry Smith                     Scalar*,Scalar*,int*);
331ca44d042SBarry Smith EXTERN void   DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
332ca44d042SBarry Smith EXTERN void   DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
333ca44d042SBarry Smith EXTERN void   DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*,
3344eeb42bcSBarry Smith                     Scalar*,int*,Scalar*,Scalar*,int*);
335ca44d042SBarry Smith EXTERN void   DGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,Scalar*,Scalar*,
336af6b99e9SBarry Smith                      int*,Scalar*,int*,Scalar*,int*,int*);
337ca44d042SBarry Smith EXTERN void   DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*,
338d4fbbf0eSBarry Smith                     int*,Scalar*,int*,Scalar*,int*,int*);
339112a2221SBarry Smith #endif
340112a2221SBarry Smith 
341112a2221SBarry Smith #else
342ca44d042SBarry Smith EXTERN void   LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*,
343c0534c1cSBarry Smith                        int*,Scalar*,int*,int*);
344ca44d042SBarry Smith EXTERN void   LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*,
345c0534c1cSBarry Smith                        int*);
346ca44d042SBarry Smith EXTERN void   LApotrf_(char*,int*,Scalar*,int*,int*);
347ca44d042SBarry Smith EXTERN void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
348a1e12872SBarry Smith                       Scalar*,Scalar*,int*);
349ca44d042SBarry Smith EXTERN void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
350ca44d042SBarry Smith EXTERN void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
351ca44d042SBarry Smith EXTERN void   BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*,
3524eeb42bcSBarry Smith                       Scalar*,int*,Scalar*,Scalar*,int*);
353e38aa075SLois Curfman McInnes 
354e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */
355aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX)
356ca44d042SBarry Smith EXTERN void   LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*);
357ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
358e38aa075SLois Curfman McInnes                        int*,Scalar*,int*,Scalar*,int*,double*,int*);
359aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL)
360ca44d042SBarry Smith EXTERN void   LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*);
361ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
362e38aa075SLois Curfman McInnes                        int*,Scalar*,int*,Scalar*,int*,int*);
363aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX)
364ca44d042SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,Scalar *,int*,double*,double*,Scalar*,
365af6b99e9SBarry Smith                       int*,Scalar*,int*,Scalar*,int*,int*);
366ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
367d4fbbf0eSBarry Smith                        int*,Scalar*,int*,Scalar*,int*,int*);
368d4fbbf0eSBarry Smith #else
369ca44d042SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,Scalar *,int*,Scalar*,Scalar*,
370d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
371ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
372d4fbbf0eSBarry Smith                        int*,Scalar*,int*,Scalar*,int*,double*,int*);
373d4fbbf0eSBarry Smith #endif
3745392566eSBarry Smith #endif
375a1e12872SBarry Smith 
376fb2e594dSBarry Smith EXTERN_C_END
377a1e12872SBarry Smith 
378a1e12872SBarry Smith #endif
3795a778de9SBarry Smith 
380