xref: /petsc/include/petscblaslapack.h (revision 5392566e307f4c743d2e3a1f9d4485cd364fbdad)
1*5392566eSBarry Smith /* $Id: plapack.h,v 1.3 1995/06/07 16:34:20 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.
6*5392566eSBarry Smith 
7*5392566eSBarry Smith    Another problem is charactor strings are represented differently on
8*5392566eSBarry Smith on some machines in C and Fortran 77. This problem comes up on the
9*5392566eSBarry Smith Cray T3D. Yet another reason to hate ...
10*5392566eSBarry Smith 
11a1e12872SBarry Smith */
12a1e12872SBarry Smith #if !defined(_PLAPACK_H)
13a1e12872SBarry Smith #define _PLAPACK_H
14a1e12872SBarry Smith 
15a1e12872SBarry Smith #include "ptscimpl.h"
16a1e12872SBarry Smith 
17*5392566eSBarry Smith #if defined(PARCH_t3d)
18*5392566eSBarry Smith #include "fortran.h"
19*5392566eSBarry Smith #endif
20*5392566eSBarry Smith 
21*5392566eSBarry Smith 
22a1e12872SBarry Smith #if !defined(PETSC_COMPLEX)
23*5392566eSBarry Smith #if defined(PARCH_cray) || defined(PARCH_t3d)
24*5392566eSBarry 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)
33*5392566eSBarry 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)
42*5392566eSBarry 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
51*5392566eSBarry 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 
61*5392566eSBarry Smith #if defined(PARCH_t3d)
62*5392566eSBarry Smith #define LApotrf_(a,b,c,d,e) SPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
63*5392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) SPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
64*5392566eSBarry Smith                                          (f),(g),(h))
65*5392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) SGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
66*5392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
67*5392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) SGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
68*5392566eSBarry Smith                                         (f),(g),(h),(i))
69*5392566eSBarry Smith #define LAtrmv_  STRMV
70*5392566eSBarry Smith #define LAtrsl_  STRSL
71*5392566eSBarry 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 
104*5392566eSBarry 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
112*5392566eSBarry 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)
122*5392566eSBarry 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
131*5392566eSBarry 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 
141*5392566eSBarry Smith #if defined(PARCH_t3d)
142*5392566eSBarry Smith #define LApotrf_(a,b,c,d,e)       CPOTRF(_cptofcd((a),1),(b),(c),(d),(e))
143*5392566eSBarry Smith #define LApotrs_(a,b,c,d,e,f,g,h) CPOTRS(_cptofcd((a),1),(b),(c),(d),(e),\
144*5392566eSBarry Smith                                          (f),(g),(h))
145*5392566eSBarry Smith #define LAgemv_(a,b,c,d,e,f,g,h,i,j,k) CGEMV(_cptofcd((a),1),(b),(c),(d),(e),\
146*5392566eSBarry Smith                                         (f),(g),(h),(i),(j),(k))
147*5392566eSBarry Smith #define LAgetrs_(a,b,c,d,e,f,g,h,i) CGETRS(_cptofcd((a),1),(b),(c),(d),(e),\
148*5392566eSBarry Smith                                         (f),(g),(h),(i))
149*5392566eSBarry Smith #define LAtrmv_  CTRMV
150*5392566eSBarry Smith #define LAtrsl_  CTRSL
151*5392566eSBarry 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 
1881eb62cbbSBarry Smith extern Scalar BLdot_(int*,Scalar*,int*,Scalar*,int*);
1891eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
1901eb62cbbSBarry Smith extern void   BLscal_(int*,Scalar*,Scalar*,int*);
1911eb62cbbSBarry Smith extern void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
1921eb62cbbSBarry Smith extern void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
1931eb62cbbSBarry Smith extern void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
1941eb62cbbSBarry Smith extern void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
195*5392566eSBarry Smith 
196*5392566eSBarry Smith #if defined(PARCH_t3d)
197*5392566eSBarry Smith extern void   CPOTRF(_fcd,int*,Scalar*,int*,int*);
198*5392566eSBarry Smith extern void   CGEMV(_fcd,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
199*5392566eSBarry Smith                         Scalar*,Scalar*,int*);
200*5392566eSBarry Smith extern void   CPOTRS(_fcd,int*,int*,Scalar*,int*,Scalar*,int*,int*);
201*5392566eSBarry Smith extern void   CGETRS(_fcd,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
202*5392566eSBarry Smith #else
2031eb62cbbSBarry Smith extern void   LApotrf_(char*,int*,Scalar*,int*,int*);
2041eb62cbbSBarry Smith extern void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
205a1e12872SBarry Smith                        Scalar*,Scalar*,int*);
2061eb62cbbSBarry Smith extern void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
2071eb62cbbSBarry Smith extern void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
208*5392566eSBarry Smith #endif
209a1e12872SBarry Smith 
210a1e12872SBarry Smith #if defined(__cplusplus)
211a1e12872SBarry Smith };
212a1e12872SBarry Smith #endif
213a1e12872SBarry Smith 
214a1e12872SBarry Smith #endif
215