xref: /petsc/include/petscblaslapack.h (revision ca44d042d6f86ecc01fa7a52a5213a5161f95f53)
1*ca44d042SBarry Smith /* $Id: blaslapack.h,v 1.38 2000/01/11 21:04:10 bsmith 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 
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 
178f4c8dbaSBarry Smith /*
18633a50d3SSatish Balay    This include file on the Cray T3D/T3E defines the interface between
198f4c8dbaSBarry Smith   Fortran and C representations of charactor strings.
208f4c8dbaSBarry Smith */
21f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
2293c39befSBarry Smith #include <fortran.h>
235392566eSBarry Smith #endif
245392566eSBarry Smith 
25aa482453SBarry Smith #if !defined(PETSC_USE_COMPLEX)
264eeb42bcSBarry Smith 
274eeb42bcSBarry Smith /*
284eeb42bcSBarry Smith     These are real case with no character string arguments
294eeb42bcSBarry Smith */
308f4c8dbaSBarry Smith 
31f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
328f4c8dbaSBarry Smith /*
338f4c8dbaSBarry Smith    For these machines we must call the single precision Fortran version
348f4c8dbaSBarry Smith */
358f4c8dbaSBarry Smith #define DGEQRF   SGEQRF
368f4c8dbaSBarry Smith #define DGETRF   SGETRF
378f4c8dbaSBarry Smith #define DDOT     SDOT
388f4c8dbaSBarry Smith #define DNRM2    SNRM2
398f4c8dbaSBarry Smith #define DSCAL    SSCAL
408f4c8dbaSBarry Smith #define DCOPY    SCOPY
418f4c8dbaSBarry Smith #define DSWAP    SSWAP
428f4c8dbaSBarry Smith #define DAXPY    SAXPY
438f4c8dbaSBarry Smith #define DASUM    SASUM
448f4c8dbaSBarry Smith #define DSORMQR  SORMQR
458f4c8dbaSBarry Smith #define DTRTRS   STRTRS
468f4c8dbaSBarry Smith #define DPOTRF   SPOTRF
478f4c8dbaSBarry Smith #define DPOTRS   SPOTRS
488f4c8dbaSBarry Smith #define DGEMV    SGEMV
498f4c8dbaSBarry Smith #define DGETRS   SGETRS
508f4c8dbaSBarry Smith #define DGETRS   SGETRS
518f4c8dbaSBarry Smith #define DGEMM    SGEMM
528f4c8dbaSBarry Smith #define DGESVD   SGESVD
53d4fbbf0eSBarry Smith #define DGEEV    SGEEV
548f4c8dbaSBarry Smith #define DTRMV    STRMV
558f4c8dbaSBarry Smith #define DTRSL    STRSL
568f4c8dbaSBarry Smith #endif
578f4c8dbaSBarry Smith 
58aa482453SBarry Smith #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK)
59c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_
605392566eSBarry Smith #define LAgetrf_ dgetrf_
61c0581c19SLois Curfman McInnes #define LAgetf2_ dgetf2_
62a1e12872SBarry Smith #define BLdot_   ddot_
63a1e12872SBarry Smith #define BLnrm2_  dnrm2_
64a1e12872SBarry Smith #define BLscal_  dscal_
65a1e12872SBarry Smith #define BLcopy_  dcopy_
66a1e12872SBarry Smith #define BLswap_  dswap_
67a1e12872SBarry Smith #define BLaxpy_  daxpy_
68a1e12872SBarry Smith #define BLasum_  dasum_
69aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
7025fce39dSBarry Smith #define LAgeqrf_ DGEQRF
7125fce39dSBarry Smith #define LAgetrf_ DGETRF
7225fce39dSBarry Smith #define LAgetf2_ DGETF2
7325fce39dSBarry Smith #define BLdot_   DDOT
7425fce39dSBarry Smith #define BLnrm2_  DNRM2
7525fce39dSBarry Smith #define BLscal_  DSCAL
7625fce39dSBarry Smith #define BLcopy_  DCOPY
7725fce39dSBarry Smith #define BLswap_  DSWAP
7825fce39dSBarry Smith #define BLaxpy_  DAXPY
7925fce39dSBarry Smith #define BLasum_  DASUM
8025fce39dSBarry Smith #else
8125fce39dSBarry Smith #define LAgeqrf_ dgeqrf
8225fce39dSBarry Smith #define LAgetrf_ dgetrf
8325fce39dSBarry Smith #define LAgetf2_ dgetf2
8425fce39dSBarry Smith #define BLdot_   ddot
8525fce39dSBarry Smith #define BLnrm2_  dnrm2
8625fce39dSBarry Smith #define BLscal_  dscal
8725fce39dSBarry Smith #define BLcopy_  dcopy
8825fce39dSBarry Smith #define BLswap_  dswap
8925fce39dSBarry Smith #define BLaxpy_  daxpy
9025fce39dSBarry Smith #define BLasum_  dasum
91a1e12872SBarry Smith #endif
92a1e12872SBarry Smith 
934eeb42bcSBarry Smith /*
944eeb42bcSBarry Smith    Real with character string arguments.
954eeb42bcSBarry Smith */
96f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
978f4c8dbaSBarry Smith /*
988f4c8dbaSBarry Smith    Note that this assumes that machines which use cptofcd() use
99aa482453SBarry Smith   the PETSC_HAVE_FORTRAN_CAPS option. This is true on the Cray T3D/T3E.
1008f4c8dbaSBarry Smith */
1018f4c8dbaSBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m)  DORMQR(_cptofcd((a),1),\
102bbb6d6a8SBarry Smith              _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m))
1038f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) DTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
104c0534c1cSBarry Smith                              _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
1058f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e) DPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
1068f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) DPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
1075392566eSBarry Smith                                          (f),(g),(h))
1088f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) DGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
1095392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
1108f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1115392566eSBarry Smith                                         (f),(g),(h),(i))
1128f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) DGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1134eeb42bcSBarry Smith                                         (f),(g),(h),(i))
1148f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) DGEMM(_cptofcd((a),1), \
1154eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
1164eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
11721c89e3eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGESVD(_cptofcd((a),1), \
118af6b99e9SBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
11921c89e3eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
120d4fbbf0eSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) DGEEV(_cptofcd((a),1), \
121d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
122d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
1238f4c8dbaSBarry Smith #define LAtrmv_  DTRMV
1248f4c8dbaSBarry Smith #define LAtrsl_  DTRSL
125633a50d3SSatish Balay #define LAgetrf_ DGETRF
126aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK)
12725fce39dSBarry Smith #define LAormqr_ dormqr_
12825fce39dSBarry Smith #define LAtrtrs_ dtrtrs_
12925fce39dSBarry Smith #define LApotrf_ dpotrf_
13025fce39dSBarry Smith #define LApotrs_ dpotrs_
13125fce39dSBarry Smith #define LAgemv_  dgemv_
13225fce39dSBarry Smith #define LAgetrs_ dgetrs_
13325fce39dSBarry Smith #define LAtrmv_  dtrmv_
13425fce39dSBarry Smith #define LAtrsl_  dtrsl_
13525fce39dSBarry Smith #define BLgemm_  dgemm_
13625fce39dSBarry Smith #define LAgesvd_ dgesvd_
13725fce39dSBarry Smith #define LAgeev_  dgeev_
138aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
139c0534c1cSBarry Smith #define LAormqr_ DORMQR
140c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS
141a1e12872SBarry Smith #define LApotrf_ DPOTRF
142a1e12872SBarry Smith #define LApotrs_ DPOTRS
143a1e12872SBarry Smith #define LAgemv_  DGEMV
144a1e12872SBarry Smith #define LAgetrs_ DGETRS
145a1e12872SBarry Smith #define LAtrmv_  DTRMV
146a1e12872SBarry Smith #define LAtrsl_  DTRSL
147af6b99e9SBarry Smith #define LAgesvd_ DGESVD
148d4fbbf0eSBarry Smith #define LAgeev_  DGEEV
1494eeb42bcSBarry Smith #define BLgemm_  DGEMM
15025fce39dSBarry Smith #else
151c0534c1cSBarry Smith #define LAormqr_ dormqr
152c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs
153a1e12872SBarry Smith #define LApotrf_ dpotrf
154a1e12872SBarry Smith #define LApotrs_ dpotrs
155a1e12872SBarry Smith #define LAgemv_  dgemv
156a1e12872SBarry Smith #define LAgetrs_ dgetrs
157a1e12872SBarry Smith #define LAtrmv_  dtrmv
158a1e12872SBarry Smith #define LAtrsl_  dtrsl
1594eeb42bcSBarry Smith #define BLgemm_  dgemm
160af6b99e9SBarry Smith #define LAgesvd_ dgesvd
161d4fbbf0eSBarry Smith #define LAgeev_  dgeev
162a1e12872SBarry Smith #endif
163a1e12872SBarry Smith 
164a1e12872SBarry Smith #else
1654eeb42bcSBarry Smith /*
1664eeb42bcSBarry Smith    Complex with no character string arguments
1674eeb42bcSBarry Smith */
168f1af5d2fSBarry Smith #if defined(PETSC_USES_FORTRAN_SINGLE)
1698f4c8dbaSBarry Smith #define ZGEQRF  CGEQRF
1708f4c8dbaSBarry Smith #define ZDOTC   CDOTC
1718f4c8dbaSBarry Smith #define DZNRM2  SCNRM2
1728f4c8dbaSBarry Smith #define ZSCAL   CSCAL
1738f4c8dbaSBarry Smith #define ZCOPY   CCOPY
1748f4c8dbaSBarry Smith #define ZSWAP   CSWAP
1758f4c8dbaSBarry Smith #define ZAXPY   CAXPY
1768f4c8dbaSBarry Smith #define DZASUM  SCASUM
1778f4c8dbaSBarry Smith #define ZGETRF  CGETRF
1788f4c8dbaSBarry Smith #define ZTRTRS  CTRTRS
1798f4c8dbaSBarry Smith #define ZPOTRF  CPOTRF
1808f4c8dbaSBarry Smith #define ZPOTRS  CPOTRS
1818f4c8dbaSBarry Smith #define ZGEMV   CGEMV
1828f4c8dbaSBarry Smith #define ZGETRS  CGETRS
1838f4c8dbaSBarry Smith #define ZGEMM   SGEMM
1848f4c8dbaSBarry Smith #define ZTRMV   CTRMV
185160814fdSSatish Balay #define ZTRSL   CTRSL
186633a50d3SSatish Balay #define ZGEEV   CGEEV
1878f4c8dbaSBarry Smith #endif
1888f4c8dbaSBarry Smith 
189aa482453SBarry Smith #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK)
190c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_
1915392566eSBarry Smith #define LAgetrf_ zgetrf_
19208d0dac7SLois Curfman McInnes #define LAgetf2_ zgetf2_
193a1e12872SBarry Smith #define BLdot_   zdotc_
194a1e12872SBarry Smith #define BLnrm2_  dznrm2_
195a1e12872SBarry Smith #define BLscal_  zscal_
196a1e12872SBarry Smith #define BLcopy_  zcopy_
197a1e12872SBarry Smith #define BLswap_  zswap_
198a1e12872SBarry Smith #define BLaxpy_  zaxpy_
199a1e12872SBarry Smith #define BLasum_  dzasum_
200aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
20125fce39dSBarry Smith #define LAgeqrf_ ZGEQRF
20225fce39dSBarry Smith #define BLdot_   ZDOTC
20325fce39dSBarry Smith #define BLnrm2_  DZNRM2
20425fce39dSBarry Smith #define BLscal_  ZSCAL
20525fce39dSBarry Smith #define BLcopy_  ZCOPY
20625fce39dSBarry Smith #define BLswap_  ZSWAP
20725fce39dSBarry Smith #define BLaxpy_  ZAXPY
20825fce39dSBarry Smith #define BLasum_  DZASUM
20925fce39dSBarry Smith #define LAgetrf_ ZGETRF
21025fce39dSBarry Smith #else
21125fce39dSBarry Smith #define LAgeqrf_ zgeqrf
21225fce39dSBarry Smith #define LAgetrf_ zgetrf
21325fce39dSBarry Smith #define LAgetf2_ zgetf2
21425fce39dSBarry Smith #define BLdot_   zdotc
21525fce39dSBarry Smith #define BLnrm2_  dznrm2
21625fce39dSBarry Smith #define BLscal_  zscal
21725fce39dSBarry Smith #define BLcopy_  zcopy
21825fce39dSBarry Smith #define BLswap_  zswap
21925fce39dSBarry Smith #define BLaxpy_  zaxpy
22025fce39dSBarry Smith #define BLasum_  dzasum
221a1e12872SBarry Smith #endif
222a1e12872SBarry Smith 
223f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
2248f4c8dbaSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) ZTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
225c0534c1cSBarry Smith                               _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
2268f4c8dbaSBarry Smith #define LApotrf_(a,b,c,d,e)       ZPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
2278f4c8dbaSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) ZPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
2285392566eSBarry Smith                                          (f),(g),(h))
2298f4c8dbaSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) ZGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
2305392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
2318f4c8dbaSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) ZGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
2325392566eSBarry Smith                                         (f),(g),(h),(i))
2338f4c8dbaSBarry Smith #define BLgemm_(a,b,c,d,e,f,g,h,i,j,k,l,m) ZGEMM(_cptofcd((a),1), \
2344eeb42bcSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
2354eeb42bcSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m))
236d4fbbf0eSBarry Smith #define LAgesvd_(a,b,c,d,e,f,g,h,i,j,k,l,m,n,p) ZGESVD(_cptofcd((a),1), \
237d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
238d4fbbf0eSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n),(p))
239639f9d9dSBarry Smith #define LAgeev_(a,b,c,d,e,f,g,h,i,j,k,l,m,n) ZGEEV(_cptofcd((a),1), \
240d4fbbf0eSBarry Smith                                             _cptofcd((a),1),(c),(d),(e),\
241639f9d9dSBarry Smith                                         (f),(g),(h),(i),(j),(k),(l),(m),(n))
2428f4c8dbaSBarry Smith #define LAtrmv_  ZTRMV
2438f4c8dbaSBarry Smith #define LAtrsl_  ZTRSL
244aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_UNDERSCORE) || defined(PETSC_USE_CBLASLAPACK)
24525fce39dSBarry Smith #define LAtrtrs_ ztrtrs_
24625fce39dSBarry Smith #define LApotrf_ zpotrf_
24725fce39dSBarry Smith #define LApotrs_ zpotrs_
24825fce39dSBarry Smith #define LAgemv_  zgemv_
24925fce39dSBarry Smith #define LAgetrs_ zgetrs_
25025fce39dSBarry Smith #define LAtrmv_  ztrmv_
25125fce39dSBarry Smith #define LAtrsl_  ztrsl_
25225fce39dSBarry Smith #define BLgemm_  zgemm_
25325fce39dSBarry Smith #define LAgesvd_ zgesvd_
25425fce39dSBarry Smith #define LAgeev_  zgeev_
255aa482453SBarry Smith #elif defined(PETSC_HAVE_FORTRAN_CAPS)
256c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS
257a1e12872SBarry Smith #define LApotrf_ ZPOTRF
258a1e12872SBarry Smith #define LApotrs_ ZPOTRS
259a1e12872SBarry Smith #define LAgemv_  ZGEMV
260a1e12872SBarry Smith #define LAgetrf_ ZGETRF
26108d0dac7SLois Curfman McInnes #define LAgetf2_ ZGETF2
262a1e12872SBarry Smith #define LAgetrs_ ZGETRS
263a1e12872SBarry Smith #define LAtrmv_  ZTRMV
264a1e12872SBarry Smith #define LAtrsl_  ZTRSL
2655a778de9SBarry Smith #define BLgemm_  ZGEMM
266d4fbbf0eSBarry Smith #define LAgesvd_ ZGESVD
267d4fbbf0eSBarry Smith #define LAgeev_  ZGEEV
26825fce39dSBarry Smith #else
269c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs
270a1e12872SBarry Smith #define LApotrf_ zpotrf
271a1e12872SBarry Smith #define LApotrs_ zpotrs
272a1e12872SBarry Smith #define LAgemv_  zgemv
273a1e12872SBarry Smith #define LAgetrs_ zgetrs
274a1e12872SBarry Smith #define LAtrmv_  ztrmv
275a1e12872SBarry Smith #define LAtrsl_  ztrsl
2765a778de9SBarry Smith #define BLgemm_  zgemm
277d4fbbf0eSBarry Smith #define LAgesvd_ zgesvd
278d4fbbf0eSBarry Smith #define LAgeev_  zgeev
279a1e12872SBarry Smith #endif
280a1e12872SBarry Smith 
281a1e12872SBarry Smith #endif
282a1e12872SBarry Smith 
283aa482453SBarry Smith #if !defined(PETSC_USE_CBLASLAPACK)
284fb2e594dSBarry Smith EXTERN_C_BEGIN
28530d4a072SBarry Smith #endif
286a1e12872SBarry Smith 
2878f4c8dbaSBarry Smith /*
2888f4c8dbaSBarry Smith    BLdot cannot be used with COMPLEX because it cannot
2898f4c8dbaSBarry Smith    handle returing a double complex to C++.
290126c565eSBarry Smith */
291*ca44d042SBarry Smith EXTERN double BLdot_(int*,Scalar*,int*,Scalar*,int*);
292*ca44d042SBarry Smith EXTERN double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
293*ca44d042SBarry Smith EXTERN void   BLscal_(int*,Scalar*,Scalar*,int*);
294*ca44d042SBarry Smith EXTERN void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
295*ca44d042SBarry Smith EXTERN void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
296*ca44d042SBarry Smith EXTERN void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
297*ca44d042SBarry Smith EXTERN void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
298*ca44d042SBarry Smith EXTERN void   LAgetf2_(int*,int*,Scalar*,int*,int*,int*);
299*ca44d042SBarry Smith EXTERN void   LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*);
3005392566eSBarry Smith 
301f1af5d2fSBarry Smith #if defined(PETSC_USES_CPTOFCD)
302112a2221SBarry Smith 
303aa482453SBarry Smith #if defined(PETSC_USE_COMPLEX)
304*ca44d042SBarry Smith EXTERN void   ZPOTRF(_fcd,int*,Scalar*,int*,int*);
305*ca44d042SBarry Smith EXTERN void   ZGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
3065392566eSBarry Smith                         Scalar*,Scalar*,int*);
307*ca44d042SBarry Smith EXTERN void   ZPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
308*ca44d042SBarry Smith EXTERN void   ZGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
309*ca44d042SBarry Smith EXTERN void   ZGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*,
3104eeb42bcSBarry Smith                       Scalar*,int*,Scalar*,Scalar*,int*);
311*ca44d042SBarry Smith EXTERN void   ZGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,double*,Scalar*,
312d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
313*ca44d042SBarry Smith EXTERN void   ZGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,
314d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
3155392566eSBarry Smith #else
316*ca44d042SBarry Smith EXTERN void   DPOTRF(_fcd,int*,Scalar*,int*,int*);
317*ca44d042SBarry Smith EXTERN void   DGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
318112a2221SBarry Smith                         Scalar*,Scalar*,int*);
319*ca44d042SBarry Smith EXTERN void   DPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
320*ca44d042SBarry Smith EXTERN void   DGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
321*ca44d042SBarry Smith EXTERN void   DGEMM(_fcd,_fcd,int*,int*,int*,Scalar*,Scalar*,int*,
3224eeb42bcSBarry Smith                       Scalar*,int*,Scalar*,Scalar*,int*);
323*ca44d042SBarry Smith EXTERN void   DGESVD(_fcd,_fcd,int *,int*,Scalar *,int*,Scalar*,Scalar*,
324af6b99e9SBarry Smith                       int*,Scalar*,int*,Scalar*,int*,int*);
325*ca44d042SBarry Smith EXTERN void   DGEEV(_fcd,_fcd,int *,Scalar *,int*,Scalar*,Scalar*,Scalar*,
326d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,int*);
327112a2221SBarry Smith #endif
328112a2221SBarry Smith 
329112a2221SBarry Smith #else
330*ca44d042SBarry Smith EXTERN void   LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*,
331c0534c1cSBarry Smith                        int*,Scalar*,int*,int*);
332*ca44d042SBarry Smith EXTERN void   LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*,
333c0534c1cSBarry Smith                        int*);
334*ca44d042SBarry Smith EXTERN void   LApotrf_(char*,int*,Scalar*,int*,int*);
335*ca44d042SBarry Smith EXTERN void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
336a1e12872SBarry Smith                        Scalar*,Scalar*,int*);
337*ca44d042SBarry Smith EXTERN void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
338*ca44d042SBarry Smith EXTERN void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
339*ca44d042SBarry Smith EXTERN void   BLgemm_(char *,char*,int*,int*,int*,Scalar*,Scalar*,int*,
3404eeb42bcSBarry Smith                       Scalar*,int*,Scalar*,Scalar*,int*);
341e38aa075SLois Curfman McInnes 
342e38aa075SLois Curfman McInnes /* ESSL uses a different calling sequence for dgeev(), zgeev() than LAPACK; */
343aa482453SBarry Smith #if defined(PETSC_HAVE_ESSL) && defined(PETSC_USE_COMPLEX)
344*ca44d042SBarry Smith EXTERN void   LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*);
345*ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
346e38aa075SLois Curfman McInnes                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
347aa482453SBarry Smith #elif defined(PETSC_HAVE_ESSL)
348*ca44d042SBarry Smith EXTERN void   LAgeev_(int*,Scalar*,int*,Scalar*,Scalar*,int*,int*,int*,double*,int*);
349*ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
350e38aa075SLois Curfman McInnes                       int*,Scalar*,int*,Scalar*,int*,int*);
351aa482453SBarry Smith #elif !defined(PETSC_USE_COMPLEX)
352*ca44d042SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,Scalar *,int*,double*,double*,Scalar*,
353af6b99e9SBarry Smith                       int*,Scalar*,int*,Scalar*,int*,int*);
354*ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
355d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,int*);
356d4fbbf0eSBarry Smith #else
357*ca44d042SBarry Smith EXTERN void   LAgeev_(char *,char *,int *,Scalar *,int*,Scalar*,Scalar*,
358d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
359*ca44d042SBarry Smith EXTERN void   LAgesvd_(char *,char *,int *,int*,Scalar *,int*,double*,Scalar*,
360d4fbbf0eSBarry Smith                       int*,Scalar*,int*,Scalar*,int*,double*,int*);
361d4fbbf0eSBarry Smith #endif
3625392566eSBarry Smith #endif
363a1e12872SBarry Smith 
364aa482453SBarry Smith #if !defined(PETSC_USE_CBLASLAPACK)
365fb2e594dSBarry Smith EXTERN_C_END
36630d4a072SBarry Smith #endif
367a1e12872SBarry Smith 
368a1e12872SBarry Smith #endif
3695a778de9SBarry Smith 
3705a778de9SBarry Smith 
3715a778de9SBarry Smith 
372