xref: /petsc/include/petscblaslapack.h (revision bb638ab57c4775ae0752f706fbc5e9839446871b)
1*bb638ab5SSatish Balay /* $Id: petscblaslapack.h,v 1.39 2000/05/10 16:44:31 bsmith 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 
17*bb638ab5SSatish Balay 
18*bb638ab5SSatish Balay #if defined(PETSC_HAVE_MKL_BLAS)
19*bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
20*bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GEEV
21*bb638ab5SSatish Balay #else defined(PETSC_HAVE_CRAYT3D_BLAS)
22*bb638ab5SSatish Balay #define PETSC_MISSING_LAPACK_GESVD
23*bb638ab5SSatish Balay #endif
24*bb638ab5SSatish Balay 
258f4c8dbaSBarry Smith /*
26633a50d3SSatish Balay    This include file on the Cray T3D/T3E defines the interface between
278f4c8dbaSBarry Smith   Fortran and C representations of charactor strings.
288f4c8dbaSBarry Smith */
29f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
3093c39befSBarry Smith #include <fortran.h>
315392566eSBarry Smith #endif
325392566eSBarry Smith 
33aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX)
344eeb42bcSBarry Smith 
354eeb42bcSBarry Smith /*
364eeb42bcSBarry Smith     These are real case with no character string arguments
374eeb42bcSBarry Smith */
388f4c8dbaSBarry Smith 
39f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
408f4c8dbaSBarry Smith /*
418f4c8dbaSBarry Smith    For these machines we must call the single precision Fortran version
428f4c8dbaSBarry Smith */
438f4c8dbaSBarry Smith #define DGEQRF   SGEQRF
448f4c8dbaSBarry Smith #define DGETRF   SGETRF
458f4c8dbaSBarry Smith #define DDOT     SDOT
468f4c8dbaSBarry Smith #define DNRM2    SNRM2
478f4c8dbaSBarry Smith #define DSCAL    SSCAL
488f4c8dbaSBarry Smith #define DCOPY    SCOPY
498f4c8dbaSBarry Smith #define DSWAP    SSWAP
508f4c8dbaSBarry Smith #define DAXPY    SAXPY
518f4c8dbaSBarry Smith #define DASUM    SASUM
528f4c8dbaSBarry Smith #define DSORMQR  SORMQR
538f4c8dbaSBarry Smith #define DTRTRS   STRTRS
548f4c8dbaSBarry Smith #define DPOTRF   SPOTRF
558f4c8dbaSBarry Smith #define DPOTRS   SPOTRS
568f4c8dbaSBarry Smith #define DGEMV    SGEMV
578f4c8dbaSBarry Smith #define DGETRS   SGETRS
588f4c8dbaSBarry Smith #define DGETRS   SGETRS
598f4c8dbaSBarry Smith #define DGEMM    SGEMM
608f4c8dbaSBarry Smith #define DGESVD   SGESVD
61d4fbbf0eSBarry Smith #define DGEEV    SGEEV
628f4c8dbaSBarry Smith #define DTRMV    STRMV
638f4c8dbaSBarry Smith #define DTRSL    STRSL
648f4c8dbaSBarry Smith #endif
658f4c8dbaSBarry Smith 
66*bb638ab5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK)
67c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_
685392566eSBarry Smith #define LAgetrf_ dgetrf_
69c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_
70a1e12872SBarry Smith #define BLdot_   ddot_
71a1e12872SBarry Smith #define BLnrm2_  dnrm2_
72a1e12872SBarry Smith #define BLscal_  dscal_
73a1e12872SBarry Smith #define BLcopy_  dcopy_
74a1e12872SBarry Smith #define BLswap_  dswap_
75a1e12872SBarry Smith #define BLaxpy_  daxpy_
76a1e12872SBarry Smith #define BLasum_  dasum_
77aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
7825fce39dSBarry Smith #define LAgeqrf_ DGEQRF
7925fce39dSBarry Smith #define LAgetrf_ DGETRF
8025fce39dSBarry Smith #define LAgetf2_ DGETF2
8125fce39dSBarry Smith #define BLdot_   DDOT
8225fce39dSBarry Smith #define BLnrm2_  DNRM2
8325fce39dSBarry Smith #define BLscal_  DSCAL
8425fce39dSBarry Smith #define BLcopy_  DCOPY
8525fce39dSBarry Smith #define BLswap_  DSWAP
8625fce39dSBarry Smith #define BLaxpy_  DAXPY
8725fce39dSBarry Smith #define BLasum_  DASUM
8825fce39dSBarry Smith #else
8925fce39dSBarry Smith #define LAgeqrf_ dgeqrf
9025fce39dSBarry Smith #define LAgetrf_ dgetrf
9125fce39dSBarry Smith #define LAgetf2_ dgetf2
9225fce39dSBarry Smith #define BLdot_   ddot
9325fce39dSBarry Smith #define BLnrm2_  dnrm2
9425fce39dSBarry Smith #define BLscal_  dscal
9525fce39dSBarry Smith #define BLcopy_  dcopy
9625fce39dSBarry Smith #define BLswap_  dswap
9725fce39dSBarry Smith #define BLaxpy_  daxpy
9825fce39dSBarry Smith #define BLasum_  dasum
99a1e12872SBarry Smith #endif
100a1e12872SBarry Smith 
1014eeb42bcSBarry Smith /*
1024eeb42bcSBarry Smith    Real with character string arguments.
1034eeb42bcSBarry Smith */
104f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
1058f4c8dbaSBarry Smith /*
1068f4c8dbaSBarry Smith    Note that this assumes that machines which use cptofcd() use
107aa482453SBarry Smith   the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E.
1088f4c8dbaSBarry Smith */
1098f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m)  DORMQR(_cptofcd((a),1),\
110bbb6d6a8SBarry Smith              _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m))
1118f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
112c0534c1cSBarry Smith                              _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
1138f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
1148f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
1155392566eSBarry Smith                                          (f),(g),(h))
1168f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
1175392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
1188f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1195392566eSBarry Smith                                         (f),(g),(h),(i))
1208f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1214eeb42bcSBarry Smith                                         (f),(g),(h),(i))
1228f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \
1234eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
1244eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
12521c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \
126af6b99e9SBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
12721c89e3eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
128d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \
129d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
130d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
1318f4c8dbaSBarry Smith #define LAtrmv_  DTRMV
1328f4c8dbaSBarry Smith #define LAtrsl_  DTRSL
133633a50d3SSatish Balay #define LAgetrf_ DGETRF
134*bb638ab5SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK)
13525fce39dSBarry Smith #define LAormqr_ dormqr_
13625fce39dSBarry Smith #define LAtrtrs_ dtrtrs_
13725fce39dSBarry Smith #define LApotrf_ dpotrf_
13825fce39dSBarry Smith #define LApotrs_ dpotrs_
13925fce39dSBarry Smith #define LAgemv_  dgemv_
14025fce39dSBarry Smith #define LAgetrs_ dgetrs_
14125fce39dSBarry Smith #define LAtrmv_  dtrmv_
14225fce39dSBarry Smith #define LAtrsl_  dtrsl_
14325fce39dSBarry Smith #define BLgemm_  dgemm_
14425fce39dSBarry Smith #define LAgesvd_ dgesvd_
14525fce39dSBarry Smith #define LAgeev_  dgeev_
146aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
147c0534c1cSBarry Smith #define LAormqr_ DORMQR
148c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS
149a1e12872SBarry Smith #define LApotrf_ DPOTRF
150a1e12872SBarry Smith #define LApotrs_ DPOTRS
151a1e12872SBarry Smith #define LAgemv_  DGEMV
152a1e12872SBarry Smith #define LAgetrs_ DGETRS
153a1e12872SBarry Smith #define LAtrmv_  DTRMV
154a1e12872SBarry Smith #define LAtrsl_  DTRSL
155af6b99e9SBarry Smith #define LAgesvd_ DGESVD
156d4fbbf0eSBarry Smith #define LAgeev_  DGEEV
1574eeb42bcSBarry Smith #define BLgemm_  DGEMM
15825fce39dSBarry Smith #else
159c0534c1cSBarry Smith #define LAormqr_ dormqr
160c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs
161a1e12872SBarry Smith #define LApotrf_ dpotrf
162a1e12872SBarry Smith #define LApotrs_ dpotrs
163a1e12872SBarry Smith #define LAgemv_  dgemv
164a1e12872SBarry Smith #define LAgetrs_ dgetrs
165a1e12872SBarry Smith #define LAtrmv_  dtrmv
166a1e12872SBarry Smith #define LAtrsl_  dtrsl
1674eeb42bcSBarry Smith #define BLgemm_  dgemm
168af6b99e9SBarry Smith #define LAgesvd_ dgesvd
169d4fbbf0eSBarry Smith #define LAgeev_  dgeev
170a1e12872SBarry Smith #endif
171a1e12872SBarry Smith 
172a1e12872SBarry Smith #else
1734eeb42bcSBarry Smith /*
1744eeb42bcSBarry Smith    Complex with no character string arguments
1754eeb42bcSBarry Smith */
176f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
1778f4c8dbaSBarry Smith #define ZGEQRF  CGEQRF
1788f4c8dbaSBarry Smith #define ZDOTC   CDOTC
1798f4c8dbaSBarry Smith #define DZNRM2  SCNRM2
1808f4c8dbaSBarry Smith #define ZSCAL   CSCAL
1818f4c8dbaSBarry Smith #define ZCOPY   CCOPY
1828f4c8dbaSBarry Smith #define ZSWAP   CSWAP
1838f4c8dbaSBarry Smith #define ZAXPY   CAXPY
1848f4c8dbaSBarry Smith #define DZASUM  SCASUM
1858f4c8dbaSBarry Smith #define ZGETRF  CGETRF
1868f4c8dbaSBarry Smith #define ZTRTRS  CTRTRS
1878f4c8dbaSBarry Smith #define ZPOTRF  CPOTRF
1888f4c8dbaSBarry Smith #define ZPOTRS  CPOTRS
1898f4c8dbaSBarry Smith #define ZGEMV   CGEMV
1908f4c8dbaSBarry Smith #define ZGETRS  CGETRS
1918f4c8dbaSBarry Smith #define ZGEMM   SGEMM
1928f4c8dbaSBarry Smith #define ZTRMV   CTRMV
193160814fdSSatish Balay #define ZTRSL   CTRSL
194633a50d3SSatish Balay #define ZGEEV   CGEEV
1958f4c8dbaSBarry Smith #endif
1968f4c8dbaSBarry Smith 
197*bb638ab5SSatish Balay #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK)
198c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_
1995392566eSBarry Smith #define LAgetrf_ zgetrf_
20008d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_
201a1e12872SBarry Smith #define BLdot_   zdotc_
202a1e12872SBarry Smith #define BLnrm2_  dznrm2_
203a1e12872SBarry Smith #define BLscal_  zscal_
204a1e12872SBarry Smith #define BLcopy_  zcopy_
205a1e12872SBarry Smith #define BLswap_  zswap_
206a1e12872SBarry Smith #define BLaxpy_  zaxpy_
207a1e12872SBarry Smith #define BLasum_  dzasum_
208aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
20925fce39dSBarry Smith #define LAgeqrf_ ZGEQRF
21025fce39dSBarry Smith #define BLdot_   ZDOTC
21125fce39dSBarry Smith #define BLnrm2_  DZNRM2
21225fce39dSBarry Smith #define BLscal_  ZSCAL
21325fce39dSBarry Smith #define BLcopy_  ZCOPY
21425fce39dSBarry Smith #define BLswap_  ZSWAP
21525fce39dSBarry Smith #define BLaxpy_  ZAXPY
21625fce39dSBarry Smith #define BLasum_  DZASUM
21725fce39dSBarry Smith #define LAgetrf_ ZGETRF
21825fce39dSBarry Smith #else
21925fce39dSBarry Smith #define LAgeqrf_ zgeqrf
22025fce39dSBarry Smith #define LAgetrf_ zgetrf
22125fce39dSBarry Smith #define LAgetf2_ zgetf2
22225fce39dSBarry Smith #define BLdot_   zdotc
22325fce39dSBarry Smith #define BLnrm2_  dznrm2
22425fce39dSBarry Smith #define BLscal_  zscal
22525fce39dSBarry Smith #define BLcopy_  zcopy
22625fce39dSBarry Smith #define BLswap_  zswap
22725fce39dSBarry Smith #define BLaxpy_  zaxpy
22825fce39dSBarry Smith #define BLasum_  dzasum
229a1e12872SBarry Smith #endif
230a1e12872SBarry Smith 
231f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
2328f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
233c0534c1cSBarry Smith                               _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
2348f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e)       ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
2358f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
2365392566eSBarry Smith                                          (f),(g),(h))
2378f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
2385392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
2398f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
2405392566eSBarry Smith                                         (f),(g),(h),(i))
2418f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \
2424eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
2434eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
244d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \
245d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
246d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n),(p))
247639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \
248d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
249639f9d9dSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
2508f4c8dbaSBarry Smith #define LAtrmv_  ZTRMV
2518f4c8dbaSBarry Smith #define LAtrsl_  ZTRSL
252*bb638ab5SSatish Balay #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_HAVE_CBLASLAPACK)
25325fce39dSBarry Smith #define LAtrtrs_ ztrtrs_
25425fce39dSBarry Smith #define LApotrf_ zpotrf_
25525fce39dSBarry Smith #define LApotrs_ zpotrs_
25625fce39dSBarry Smith #define LAgemv_  zgemv_
25725fce39dSBarry Smith #define LAgetrs_ zgetrs_
25825fce39dSBarry Smith #define LAtrmv_  ztrmv_
25925fce39dSBarry Smith #define LAtrsl_  ztrsl_
26025fce39dSBarry Smith #define BLgemm_  zgemm_
26125fce39dSBarry Smith #define LAgesvd_ zgesvd_
26225fce39dSBarry Smith #define LAgeev_  zgeev_
263aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
264c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS
265a1e12872SBarry Smith #define LApotrf_ ZPOTRF
266a1e12872SBarry Smith #define LApotrs_ ZPOTRS
267a1e12872SBarry Smith #define LAgemv_  ZGEMV
268a1e12872SBarry Smith #define LAgetrf_ ZGETRF
26908d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2
270a1e12872SBarry Smith #define LAgetrs_ ZGETRS
271a1e12872SBarry Smith #define LAtrmv_  ZTRMV
272a1e12872SBarry Smith #define LAtrsl_  ZTRSL
2735a778de9SBarry Smith #define BLgemm_  ZGEMM
274d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD
275d4fbbf0eSBarry Smith #define LAgeev_  ZGEEV
27625fce39dSBarry Smith #else
277c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs
278a1e12872SBarry Smith #define LApotrf_ zpotrf
279a1e12872SBarry Smith #define LApotrs_ zpotrs
280a1e12872SBarry Smith #define LAgemv_  zgemv
281a1e12872SBarry Smith #define LAgetrs_ zgetrs
282a1e12872SBarry Smith #define LAtrmv_  ztrmv
283a1e12872SBarry Smith #define LAtrsl_  ztrsl
2845a778de9SBarry Smith #define BLgemm_  zgemm
285d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd
286d4fbbf0eSBarry Smith #define LAgeev_  zgeev
287a1e12872SBarry Smith #endif
288a1e12872SBarry Smith 
289a1e12872SBarry Smith #endif
290a1e12872SBarry Smith 
291fb2e594dSBarry Smith EXTERN_C_BEGIN
292a1e12872SBarry Smith 
2938f4c8dbaSBarry Smith /*
2948f4c8dbaSBarry Smith    BLdot cannot be used with COMPLEX because it cannot
2958f4c8dbaSBarry Smith    handle returing a double complex to C++.
296126c565eSBarry Smith */
297ca44d042SBarry Smith EXTERN double BLdot_(int*,Scalar*,int*,Scalar*,int*);
298ca44d042SBarry Smith EXTERN double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
299ca44d042SBarry Smith EXTERN void   BLscal_(int*,Scalar*,Scalar*,int*);
300ca44d042SBarry Smith EXTERN void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
301ca44d042SBarry Smith EXTERN void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
302ca44d042SBarry Smith EXTERN void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
303ca44d042SBarry Smith EXTERN void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
304ca44d042SBarry Smith EXTERN void   LAgetf2_(int*,int*,Scalar*,int*,int*,int*);
305ca44d042SBarry Smith EXTERN void   LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*);
3065392566eSBarry Smith 
307f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
308112a2221SBarry Smith 
309aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX)
310ca44d042SBarry Smith EXTERN void   ZPOTRF(_fcd,int*,Scalar*,int*,int*);
311ca44d042SBarry Smith EXTERN void   ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
3125392566eSBarry Smith                     Scalar*,Scalar*,int*);
313ca44d042SBarry Smith EXTERN void   ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
314ca44d042SBarry Smith EXTERN void   ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
315ca44d042SBarry Smith EXTERN void   ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*,
3164eeb42bcSBarry Smith                     Scalar*,int*,Scalar*,Scalar*,int*);
317ca44d042SBarry Smith EXTERN void   ZGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,double*,Scalar*,
318d4fbbf0eSBarry Smith                      int*,Scalar*,int*,Scalar*,int*,double*,int*);
319ca44d042SBarry Smith EXTERN void   ZGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,
320d4fbbf0eSBarry Smith                     int*,Scalar*,int*,Scalar*,int*,double*,int*);
3215392566eSBarry Smith #else
322ca44d042SBarry Smith EXTERN void   DPOTRF(_fcd,int*,Scalar*,int*,int*);
323ca44d042SBarry Smith EXTERN void   DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
324112a2221SBarry Smith                     Scalar*,Scalar*,int*);
325ca44d042SBarry Smith EXTERN void   DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
326ca44d042SBarry Smith EXTERN void   DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
327ca44d042SBarry Smith EXTERN void   DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*,
3284eeb42bcSBarry Smith                     Scalar*,int*,Scalar*,Scalar*,int*);
329ca44d042SBarry Smith EXTERN void   DGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,Scalar*,Scalar*,
330af6b99e9SBarry Smith                      int*,Scalar*,int*,Scalar*,int*,int*);
331ca44d042SBarry Smith EXTERN void   DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*,
332d4fbbf0eSBarry Smith                     int*,Scalar*,int*,Scalar*,int*,int*);
333112a2221SBarry Smith #endif
334112a2221SBarry Smith 
335112a2221SBarry Smith #else
336ca44d042SBarry Smith EXTERN void   LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*,
337c0534c1cSBarry Smith                        int*,Scalar*,int*,int*);
338ca44d042SBarry Smith EXTERN void   LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*,
339c0534c1cSBarry Smith                        int*);
340ca44d042SBarry Smith EXTERN void   LApotrf_(char*,int*,Scalar*,int*,int*);
341ca44d042SBarry Smith EXTERN void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
342a1e12872SBarry Smith                       Scalar*,Scalar*,int*);
343ca44d042SBarry Smith EXTERN void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
344ca44d042SBarry Smith EXTERN void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
345ca44d042SBarry Smith EXTERN void   BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*,
3464eeb42bcSBarry Smith                       Scalar*,int*,Scalar*,Scalar*,int*);
347e38aa075SLois Curfman McInnes 
348e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */
349aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX)
350ca44d042SBarry Smith EXTERN void   LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*);
351ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
352e38aa075SLois Curfman McInnes                        int*,Scalar*,int*,Scalar*,int*,double*,int*);
353aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL)
354ca44d042SBarry Smith EXTERN void   LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*);
355ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
356e38aa075SLois Curfman McInnes                        int*,Scalar*,int*,Scalar*,int*,int*);
357aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX)
358ca44d042SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,Scalar *,int*,double*,double*,Scalar*,
359af6b99e9SBarry Smith                       int*,Scalar*,int*,Scalar*,int*,int*);
360ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
361d4fbbf0eSBarry Smith                        int*,Scalar*,int*,Scalar*,int*,int*);
362d4fbbf0eSBarry Smith #else
363ca44d042SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,Scalar *,int*,Scalar*,Scalar*,
364d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
365ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
366d4fbbf0eSBarry Smith                        int*,Scalar*,int*,Scalar*,int*,double*,int*);
367d4fbbf0eSBarry Smith #endif
3685392566eSBarry Smith #endif
369a1e12872SBarry Smith 
370fb2e594dSBarry Smith EXTERN_C_END
371a1e12872SBarry Smith 
372a1e12872SBarry Smith #endif
3735a778de9SBarry Smith 
3745a778de9SBarry Smith 
3755a778de9SBarry Smith 
376