xref: /petsc/include/petscblaslapack.h (revision 126c565ed6b9c27331ea92b68538315d65adfeed)
1*126c565eSBarry Smith /* $Id: plapack.h,v 1.4 1995/06/14 17:25:19 bsmith Exp bsmith $ */
2a1e12872SBarry Smith /*
3a1e12872SBarry Smith    This is to provide some name space protection from Lapack and Blas
4a1e12872SBarry Smith allow the appropriate single or double precision version to be used.
5a1e12872SBarry Smith 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
95392566eSBarry Smith Cray T3D. Yet another reason to hate ...
105392566eSBarry Smith 
11a1e12872SBarry Smith */
12a1e12872SBarry Smith #if !defined(_PLAPACK_H)
13a1e12872SBarry Smith #define _PLAPACK_H
14a1e12872SBarry Smith 
15a1e12872SBarry Smith #include "ptscimpl.h"
16a1e12872SBarry Smith 
175392566eSBarry Smith #if defined(PARCH_t3d)
185392566eSBarry Smith #include "fortran.h"
195392566eSBarry Smith #endif
205392566eSBarry Smith 
215392566eSBarry Smith 
22a1e12872SBarry Smith #if !defined(PETSC_COMPLEX)
235392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d)
245392566eSBarry Smith #define LAgetrf_ SGETRF
25a1e12872SBarry Smith #define BLdot_   SDOT
26a1e12872SBarry Smith #define BLnrm2_  SNRM2
27a1e12872SBarry Smith #define BLscal_  SSCAL
28a1e12872SBarry Smith #define BLcopy_  SCOPY
29a1e12872SBarry Smith #define BLswap_  SSWAP
30a1e12872SBarry Smith #define BLaxpy_  SAXPY
31a1e12872SBarry Smith #define BLasum_  SASUM
32a1e12872SBarry Smith #elif defined(FORTRANCAPS)
335392566eSBarry Smith #define LAgetrf_ DGETRF
34a1e12872SBarry Smith #define BLdot_   DDOT
35a1e12872SBarry Smith #define BLnrm2_  DNRM2
36a1e12872SBarry Smith #define BLscal_  DSCAL
37a1e12872SBarry Smith #define BLcopy_  DCOPY
38a1e12872SBarry Smith #define BLswap_  DSWAP
39a1e12872SBarry Smith #define BLaxpy_  DAXPY
40a1e12872SBarry Smith #define BLasum_  DASUM
41a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
425392566eSBarry Smith #define LAgetrf_ dgetrf
43a1e12872SBarry Smith #define BLdot_   ddot
44a1e12872SBarry Smith #define BLnrm2_  dnrm2
45a1e12872SBarry Smith #define BLscal_  dscal
46a1e12872SBarry Smith #define BLcopy_  dcopy
47a1e12872SBarry Smith #define BLswap_  dswap
48a1e12872SBarry Smith #define BLaxpy_  daxpy
49a1e12872SBarry Smith #define BLasum_  dasum
50a1e12872SBarry Smith #else
515392566eSBarry Smith #define LAgetrf_ dgetrf_
52a1e12872SBarry Smith #define BLdot_   ddot_
53a1e12872SBarry Smith #define BLnrm2_  dnrm2_
54a1e12872SBarry Smith #define BLscal_  dscal_
55a1e12872SBarry Smith #define BLcopy_  dcopy_
56a1e12872SBarry Smith #define BLswap_  dswap_
57a1e12872SBarry Smith #define BLaxpy_  daxpy_
58a1e12872SBarry Smith #define BLasum_  dasum_
59a1e12872SBarry Smith #endif
60a1e12872SBarry Smith 
615392566eSBarry Smith #if defined(PARCH_t3d)
625392566eSBarry Smith #define LApotrf_(a,b,c,d,e) SPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
635392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) SPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
645392566eSBarry Smith                                          (f),(g),(h))
655392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) SGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
665392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
675392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) SGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
685392566eSBarry Smith                                         (f),(g),(h),(i))
695392566eSBarry Smith #define LAtrmv_  STRMV
705392566eSBarry Smith #define LAtrsl_  STRSL
715392566eSBarry Smith #elif defined(PARCH_cray)
72a1e12872SBarry Smith #define LApotrf_ SPOTRF
73a1e12872SBarry Smith #define LApotrs_ SPOTRS
74a1e12872SBarry Smith #define LAgemv_  SGEMV
75a1e12872SBarry Smith #define LAgetrs_ SGETRS
76a1e12872SBarry Smith #define LAgemv_  SGEMV
77a1e12872SBarry Smith #define LAtrmv_  STRMV
78a1e12872SBarry Smith #define LAtrsl_  STRSL
79a1e12872SBarry Smith #elif defined(FORTRANCAPS)
80a1e12872SBarry Smith #define LApotrf_ DPOTRF
81a1e12872SBarry Smith #define LApotrs_ DPOTRS
82a1e12872SBarry Smith #define LAgemv_  DGEMV
83a1e12872SBarry Smith #define LAgetrs_ DGETRS
84a1e12872SBarry Smith #define LAtrmv_  DTRMV
85a1e12872SBarry Smith #define LAtrsl_  DTRSL
86a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
87a1e12872SBarry Smith #define LApotrf_ dpotrf
88a1e12872SBarry Smith #define LApotrs_ dpotrs
89a1e12872SBarry Smith #define LAgemv_  dgemv
90a1e12872SBarry Smith #define LAgetrs_ dgetrs
91a1e12872SBarry Smith #define LAtrmv_  dtrmv
92a1e12872SBarry Smith #define LAtrsl_  dtrsl
93a1e12872SBarry Smith #else
94a1e12872SBarry Smith #define LApotrf_ dpotrf_
95a1e12872SBarry Smith #define LApotrs_ dpotrs_
96a1e12872SBarry Smith #define LAgemv_  dgemv_
97a1e12872SBarry Smith #define LAgetrs_ dgetrs_
98a1e12872SBarry Smith #define LAtrmv_  dtrmv_
99a1e12872SBarry Smith #define LAtrsl_  dtrsl_
100a1e12872SBarry Smith #endif
101a1e12872SBarry Smith 
102a1e12872SBarry Smith #else
103a1e12872SBarry Smith 
1045392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d)
105a1e12872SBarry Smith #define BLdot_   CDOTC
106a1e12872SBarry Smith #define BLnrm2_  SCNRM2
107a1e12872SBarry Smith #define BLscal_  CSCAL
108a1e12872SBarry Smith #define BLcopy_  CCOPY
109a1e12872SBarry Smith #define BLswap_  CSWAP
110a1e12872SBarry Smith #define BLaxpy_  CAXPY
111a1e12872SBarry Smith #define BLasum_  SCASUM
1125392566eSBarry Smith #define LAgetrf_ CGETRF
113a1e12872SBarry Smith #elif defined(FORTRANCAPS)
114a1e12872SBarry Smith #define BLdot_   ZDOTC
115a1e12872SBarry Smith #define BLnrm2_  DZNRM2
116a1e12872SBarry Smith #define BLscal_  ZSCAL
117a1e12872SBarry Smith #define BLcopy_  ZCOPY
118a1e12872SBarry Smith #define BLswap_  ZSWAP
119a1e12872SBarry Smith #define BLaxpy_  ZAXPY
120a1e12872SBarry Smith #define BLasum_  DZASUM
121a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
1225392566eSBarry Smith #define LAgetrf_ zgetrf
123a1e12872SBarry Smith #define BLdot_   zdotc
124a1e12872SBarry Smith #define BLnrm2_  dznrm2
125a1e12872SBarry Smith #define BLscal_  zscal
126a1e12872SBarry Smith #define BLcopy_  zcopy
127a1e12872SBarry Smith #define BLswap_  zswap
128a1e12872SBarry Smith #define BLaxpy_  zaxpy
129a1e12872SBarry Smith #define BLasum_  dzasum
130a1e12872SBarry Smith #else
1315392566eSBarry Smith #define LAgetrf_ zgetrf_
132a1e12872SBarry Smith #define BLdot_   zdotc_
133a1e12872SBarry Smith #define BLnrm2_  dznrm2_
134a1e12872SBarry Smith #define BLscal_  zscal_
135a1e12872SBarry Smith #define BLcopy_  zcopy_
136a1e12872SBarry Smith #define BLswap_  zswap_
137a1e12872SBarry Smith #define BLaxpy_  zaxpy_
138a1e12872SBarry Smith #define BLasum_  dzasum_
139a1e12872SBarry Smith #endif
140a1e12872SBarry Smith 
1415392566eSBarry Smith #if defined(PARCH_t3d)
1425392566eSBarry Smith #define LApotrf_(a,b,c,d,e)       CPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
1435392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
1445392566eSBarry Smith                                          (f),(g),(h))
1455392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
1465392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
1475392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1485392566eSBarry Smith                                         (f),(g),(h),(i))
1495392566eSBarry Smith #define LAtrmv_  CTRMV
1505392566eSBarry Smith #define LAtrsl_  CTRSL
1515392566eSBarry Smith #elif defined(PARCH_cray)
152a1e12872SBarry Smith #define LApotrf_ CPOTRF
153a1e12872SBarry Smith #define LApotrs_ CPOTRS
154a1e12872SBarry Smith #define LAgetrs_ CGETRS
155a1e12872SBarry Smith #define LAgemv_  CGEMV
156a1e12872SBarry Smith #define LAtrmv_  CTRMV
157a1e12872SBarry Smith #define LAtrsl_  CTRSL
158a1e12872SBarry Smith #elif defined(FORTRANCAPS)
159a1e12872SBarry Smith #define LApotrf_ ZPOTRF
160a1e12872SBarry Smith #define LApotrs_ ZPOTRS
161a1e12872SBarry Smith #define LAgemv_  ZGEMV
162a1e12872SBarry Smith #define LAgetrf_ ZGETRF
163a1e12872SBarry Smith #define LAgetrs_ ZGETRS
164a1e12872SBarry Smith #define LAtrmv_  ZTRMV
165a1e12872SBarry Smith #define LAtrsl_  ZTRSL
166a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
167a1e12872SBarry Smith #define LApotrf_ zpotrf
168a1e12872SBarry Smith #define LApotrs_ zpotrs
169a1e12872SBarry Smith #define LAgemv_  zgemv
170a1e12872SBarry Smith #define LAgetrs_ zgetrs
171a1e12872SBarry Smith #define LAtrmv_  ztrmv
172a1e12872SBarry Smith #define LAtrsl_  ztrsl
173a1e12872SBarry Smith #else
174a1e12872SBarry Smith #define LApotrf_ zpotrf_
175a1e12872SBarry Smith #define LApotrs_ zpotrs_
176a1e12872SBarry Smith #define LAgemv_  zgemv_
177a1e12872SBarry Smith #define LAgetrs_ zgetrs_
178a1e12872SBarry Smith #define LAtrmv_  ztrmv_
179a1e12872SBarry Smith #define LAtrsl_  ztrsl_
180a1e12872SBarry Smith #endif
181a1e12872SBarry Smith 
182a1e12872SBarry Smith #endif
183a1e12872SBarry Smith 
184a1e12872SBarry Smith #if defined(__cplusplus)
185a1e12872SBarry Smith extern "C" {
186a1e12872SBarry Smith #endif
187a1e12872SBarry Smith 
188*126c565eSBarry Smith /* note that BLdot cannot be used with COMPLEX because it cannot
189*126c565eSBarry Smith    handle returing a double complex!!
190*126c565eSBarry Smith */
191*126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*);
1921eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
1931eb62cbbSBarry Smith extern void   BLscal_(int*,Scalar*,Scalar*,int*);
1941eb62cbbSBarry Smith extern void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
1951eb62cbbSBarry Smith extern void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
1961eb62cbbSBarry Smith extern void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
1971eb62cbbSBarry Smith extern void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
1985392566eSBarry Smith 
1995392566eSBarry Smith #if defined(PARCH_t3d)
2005392566eSBarry Smith extern void   CPOTRF(_fcd,int*,Scalar*,int*,int*);
2015392566eSBarry Smith extern void   CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
2025392566eSBarry Smith                         Scalar*,Scalar*,int*);
2035392566eSBarry Smith extern void   CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
2045392566eSBarry Smith extern void   CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
2055392566eSBarry Smith #else
2061eb62cbbSBarry Smith extern void   LApotrf_(char*,int*,Scalar*,int*,int*);
2071eb62cbbSBarry Smith extern void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
208a1e12872SBarry Smith                        Scalar*,Scalar*,int*);
2091eb62cbbSBarry Smith extern void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
2101eb62cbbSBarry Smith extern void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
2115392566eSBarry Smith #endif
212a1e12872SBarry Smith 
213a1e12872SBarry Smith #if defined(__cplusplus)
214a1e12872SBarry Smith };
215a1e12872SBarry Smith #endif
216a1e12872SBarry Smith 
217a1e12872SBarry Smith #endif
218