xref: /petsc/include/petscblaslapack.h (revision 028343607802a628ec4a043823d08aee29655c7e)
1*02834360SBarry Smith /* $Id: plapack.h,v 1.8 1995/08/07 22:02:01 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 
1519b02663SBarry Smith #include "petsc.h"
16a1e12872SBarry Smith 
175392566eSBarry Smith #if defined(PARCH_t3d)
185392566eSBarry Smith #include "fortran.h"
195392566eSBarry Smith #endif
205392566eSBarry Smith 
21a1e12872SBarry Smith #if !defined(PETSC_COMPLEX)
225392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d)
23c0534c1cSBarry Smith #define LAgeqrf_ SGEQRF
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)
33c0534c1cSBarry Smith #define LAgeqrf_ DGEQRF
345392566eSBarry Smith #define LAgetrf_ DGETRF
35a1e12872SBarry Smith #define BLdot_   DDOT
36a1e12872SBarry Smith #define BLnrm2_  DNRM2
37a1e12872SBarry Smith #define BLscal_  DSCAL
38a1e12872SBarry Smith #define BLcopy_  DCOPY
39a1e12872SBarry Smith #define BLswap_  DSWAP
40a1e12872SBarry Smith #define BLaxpy_  DAXPY
41a1e12872SBarry Smith #define BLasum_  DASUM
42a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
43c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf
445392566eSBarry Smith #define LAgetrf_ dgetrf
45a1e12872SBarry Smith #define BLdot_   ddot
46a1e12872SBarry Smith #define BLnrm2_  dnrm2
47a1e12872SBarry Smith #define BLscal_  dscal
48a1e12872SBarry Smith #define BLcopy_  dcopy
49a1e12872SBarry Smith #define BLswap_  dswap
50a1e12872SBarry Smith #define BLaxpy_  daxpy
51a1e12872SBarry Smith #define BLasum_  dasum
52a1e12872SBarry Smith #else
53c0534c1cSBarry Smith #define LAgeqrf_ dgeqrf_
545392566eSBarry Smith #define LAgetrf_ dgetrf_
55a1e12872SBarry Smith #define BLdot_   ddot_
56a1e12872SBarry Smith #define BLnrm2_  dnrm2_
57a1e12872SBarry Smith #define BLscal_  dscal_
58a1e12872SBarry Smith #define BLcopy_  dcopy_
59a1e12872SBarry Smith #define BLswap_  dswap_
60a1e12872SBarry Smith #define BLaxpy_  daxpy_
61a1e12872SBarry Smith #define BLasum_  dasum_
62a1e12872SBarry Smith #endif
63a1e12872SBarry Smith 
645392566eSBarry Smith #if defined(PARCH_t3d)
65bbb6d6a8SBarry Smith #define LAormqr_(a,b,c,d,e,f,g,h,i,j,k,l,m)  SORMQR(_cptofcd((a),1),\
66bbb6d6a8SBarry Smith              _cptofcd((b),1),(c),(d),(e),(f),(g),(h),(i),(j),(k),(l),(m))
67bbb6d6a8SBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) STRTRS(_cptofcd((a),1),_cptofcd((b),1),\
68c0534c1cSBarry Smith                              _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
695392566eSBarry Smith #define LApotrf_(a,b,c,d,e) SPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
705392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) SPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
715392566eSBarry Smith                                          (f),(g),(h))
725392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) SGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
735392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
745392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) SGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
755392566eSBarry Smith                                         (f),(g),(h),(i))
765392566eSBarry Smith #define LAtrmv_  STRMV
775392566eSBarry Smith #define LAtrsl_  STRSL
785392566eSBarry Smith #elif defined(PARCH_cray)
79c0534c1cSBarry Smith #define LAormqr_ SORMQR
80c0534c1cSBarry Smith #define LAtrtrs_ STRTRS
81a1e12872SBarry Smith #define LApotrf_ SPOTRF
82a1e12872SBarry Smith #define LApotrs_ SPOTRS
83a1e12872SBarry Smith #define LAgemv_  SGEMV
84a1e12872SBarry Smith #define LAgetrs_ SGETRS
85a1e12872SBarry Smith #define LAgemv_  SGEMV
86a1e12872SBarry Smith #define LAtrmv_  STRMV
87a1e12872SBarry Smith #define LAtrsl_  STRSL
88a1e12872SBarry Smith #elif defined(FORTRANCAPS)
89c0534c1cSBarry Smith #define LAormqr_ DORMQR
90c0534c1cSBarry Smith #define LAtrtrs_ DTRTRS
91a1e12872SBarry Smith #define LApotrf_ DPOTRF
92a1e12872SBarry Smith #define LApotrs_ DPOTRS
93a1e12872SBarry Smith #define LAgemv_  DGEMV
94a1e12872SBarry Smith #define LAgetrs_ DGETRS
95a1e12872SBarry Smith #define LAtrmv_  DTRMV
96a1e12872SBarry Smith #define LAtrsl_  DTRSL
97a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
98c0534c1cSBarry Smith #define LAormqr_ dormqr
99c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs
100a1e12872SBarry Smith #define LApotrf_ dpotrf
101a1e12872SBarry Smith #define LApotrs_ dpotrs
102a1e12872SBarry Smith #define LAgemv_  dgemv
103a1e12872SBarry Smith #define LAgetrs_ dgetrs
104a1e12872SBarry Smith #define LAtrmv_  dtrmv
105a1e12872SBarry Smith #define LAtrsl_  dtrsl
106a1e12872SBarry Smith #else
107c0534c1cSBarry Smith #define LAormqr_ dormqr_
108c0534c1cSBarry Smith #define LAtrtrs_ dtrtrs_
109a1e12872SBarry Smith #define LApotrf_ dpotrf_
110a1e12872SBarry Smith #define LApotrs_ dpotrs_
111a1e12872SBarry Smith #define LAgemv_  dgemv_
112a1e12872SBarry Smith #define LAgetrs_ dgetrs_
113a1e12872SBarry Smith #define LAtrmv_  dtrmv_
114a1e12872SBarry Smith #define LAtrsl_  dtrsl_
115a1e12872SBarry Smith #endif
116a1e12872SBarry Smith 
117a1e12872SBarry Smith #else
118a1e12872SBarry Smith 
1195392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d)
120c0534c1cSBarry Smith #define LAgeqrf_ CGEQRF
121a1e12872SBarry Smith #define BLdot_   CDOTC
122a1e12872SBarry Smith #define BLnrm2_  SCNRM2
123a1e12872SBarry Smith #define BLscal_  CSCAL
124a1e12872SBarry Smith #define BLcopy_  CCOPY
125a1e12872SBarry Smith #define BLswap_  CSWAP
126a1e12872SBarry Smith #define BLaxpy_  CAXPY
127a1e12872SBarry Smith #define BLasum_  SCASUM
1285392566eSBarry Smith #define LAgetrf_ CGETRF
129a1e12872SBarry Smith #elif defined(FORTRANCAPS)
130c0534c1cSBarry Smith #define LAgeqrf_ ZGEQRF
131a1e12872SBarry Smith #define BLdot_   ZDOTC
132a1e12872SBarry Smith #define BLnrm2_  DZNRM2
133a1e12872SBarry Smith #define BLscal_  ZSCAL
134a1e12872SBarry Smith #define BLcopy_  ZCOPY
135a1e12872SBarry Smith #define BLswap_  ZSWAP
136a1e12872SBarry Smith #define BLaxpy_  ZAXPY
137a1e12872SBarry Smith #define BLasum_  DZASUM
138a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
139c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf
1405392566eSBarry Smith #define LAgetrf_ zgetrf
141a1e12872SBarry Smith #define BLdot_   zdotc
142a1e12872SBarry Smith #define BLnrm2_  dznrm2
143a1e12872SBarry Smith #define BLscal_  zscal
144a1e12872SBarry Smith #define BLcopy_  zcopy
145a1e12872SBarry Smith #define BLswap_  zswap
146a1e12872SBarry Smith #define BLaxpy_  zaxpy
147a1e12872SBarry Smith #define BLasum_  dzasum
148a1e12872SBarry Smith #else
149c0534c1cSBarry Smith #define LAgeqrf_ zgeqrf_
1505392566eSBarry Smith #define LAgetrf_ zgetrf_
151a1e12872SBarry Smith #define BLdot_   zdotc_
152a1e12872SBarry Smith #define BLnrm2_  dznrm2_
153a1e12872SBarry Smith #define BLscal_  zscal_
154a1e12872SBarry Smith #define BLcopy_  zcopy_
155a1e12872SBarry Smith #define BLswap_  zswap_
156a1e12872SBarry Smith #define BLaxpy_  zaxpy_
157a1e12872SBarry Smith #define BLasum_  dzasum_
158a1e12872SBarry Smith #endif
159a1e12872SBarry Smith 
1605392566eSBarry Smith #if defined(PARCH_t3d)
161c0534c1cSBarry Smith #define LAtrtrs_(a,b,c,d,e,f,g,h,i,j) CTRTRS(_cptofcd((a),1),_cptofcd((b),1),\
162c0534c1cSBarry Smith                               _cptofcd((c),1),(d),(e),(f),(g),(h),(i),(j))
1635392566eSBarry Smith #define LApotrf_(a,b,c,d,e)       CPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
1645392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
1655392566eSBarry Smith                                          (f),(g),(h))
1665392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
1675392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
1685392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
1695392566eSBarry Smith                                         (f),(g),(h),(i))
1705392566eSBarry Smith #define LAtrmv_  CTRMV
1715392566eSBarry Smith #define LAtrsl_  CTRSL
1725392566eSBarry Smith #elif defined(PARCH_cray)
173c0534c1cSBarry Smith #define LAormqr_ CORMQR
174c0534c1cSBarry Smith #define LAtrtrs_ CTRTRS
175a1e12872SBarry Smith #define LApotrf_ CPOTRF
176a1e12872SBarry Smith #define LApotrs_ CPOTRS
177a1e12872SBarry Smith #define LAgetrs_ CGETRS
178a1e12872SBarry Smith #define LAgemv_  CGEMV
179a1e12872SBarry Smith #define LAtrmv_  CTRMV
180a1e12872SBarry Smith #define LAtrsl_  CTRSL
181a1e12872SBarry Smith #elif defined(FORTRANCAPS)
182c0534c1cSBarry Smith #define LAtrtrs_ ZTRTRS
183a1e12872SBarry Smith #define LApotrf_ ZPOTRF
184a1e12872SBarry Smith #define LApotrs_ ZPOTRS
185a1e12872SBarry Smith #define LAgemv_  ZGEMV
186a1e12872SBarry Smith #define LAgetrf_ ZGETRF
187a1e12872SBarry Smith #define LAgetrs_ ZGETRS
188a1e12872SBarry Smith #define LAtrmv_  ZTRMV
189a1e12872SBarry Smith #define LAtrsl_  ZTRSL
190a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
191c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs
192a1e12872SBarry Smith #define LApotrf_ zpotrf
193a1e12872SBarry Smith #define LApotrs_ zpotrs
194a1e12872SBarry Smith #define LAgemv_  zgemv
195a1e12872SBarry Smith #define LAgetrs_ zgetrs
196a1e12872SBarry Smith #define LAtrmv_  ztrmv
197a1e12872SBarry Smith #define LAtrsl_  ztrsl
198a1e12872SBarry Smith #else
199c0534c1cSBarry Smith #define LAtrtrs_ ztrtrs_
200a1e12872SBarry Smith #define LApotrf_ zpotrf_
201a1e12872SBarry Smith #define LApotrs_ zpotrs_
202a1e12872SBarry Smith #define LAgemv_  zgemv_
203a1e12872SBarry Smith #define LAgetrs_ zgetrs_
204a1e12872SBarry Smith #define LAtrmv_  ztrmv_
205a1e12872SBarry Smith #define LAtrsl_  ztrsl_
206a1e12872SBarry Smith #endif
207a1e12872SBarry Smith 
208a1e12872SBarry Smith #endif
209a1e12872SBarry Smith 
210a1e12872SBarry Smith #if defined(__cplusplus)
211a1e12872SBarry Smith extern "C" {
212a1e12872SBarry Smith #endif
213a1e12872SBarry Smith 
214126c565eSBarry Smith /* note that BLdot cannot be used with COMPLEX because it cannot
215126c565eSBarry Smith    handle returing a double complex!!
216126c565eSBarry Smith */
217126c565eSBarry Smith extern double BLdot_(int*,Scalar*,int*,Scalar*,int*);
2181eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
2191eb62cbbSBarry Smith extern void   BLscal_(int*,Scalar*,Scalar*,int*);
2201eb62cbbSBarry Smith extern void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
2211eb62cbbSBarry Smith extern void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
2221eb62cbbSBarry Smith extern void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
2231eb62cbbSBarry Smith extern void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
224c0534c1cSBarry Smith extern void   LAgeqrf_(int*,int*,Scalar*,int*,Scalar*,Scalar*,int*,int*);
2255392566eSBarry Smith 
2265392566eSBarry Smith #if defined(PARCH_t3d)
2275392566eSBarry Smith extern void   CPOTRF(_fcd,int*,Scalar*,int*,int*);
2285392566eSBarry Smith extern void   CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
2295392566eSBarry Smith                         Scalar*,Scalar*,int*);
2305392566eSBarry Smith extern void   CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
2315392566eSBarry Smith extern void   CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
2325392566eSBarry Smith #else
233c0534c1cSBarry Smith extern void   LAormqr_(char*,char*,int*,int*,int*,Scalar*,int*,Scalar*,Scalar*,
234c0534c1cSBarry Smith                        int*,Scalar*,int*,int*);
235c0534c1cSBarry Smith extern void   LAtrtrs_(char*,char*,char*,int*,int*,Scalar*,int*,Scalar*,int*,
236c0534c1cSBarry Smith                        int*);
2371eb62cbbSBarry Smith extern void   LApotrf_(char*,int*,Scalar*,int*,int*);
2381eb62cbbSBarry Smith extern void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
239a1e12872SBarry Smith                        Scalar*,Scalar*,int*);
2401eb62cbbSBarry Smith extern void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
2411eb62cbbSBarry Smith extern void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
2425392566eSBarry Smith #endif
243a1e12872SBarry Smith 
244a1e12872SBarry Smith #if defined(__cplusplus)
245*02834360SBarry Smith }
246a1e12872SBarry Smith #endif
247a1e12872SBarry Smith 
248a1e12872SBarry Smith #endif
249