xref: /petsc/include/petscblaslapack.h (revision 1eb62cbb64d64b61ce4c1a3ec8cb7777b3ff11c2)
1a1e12872SBarry Smith /*
2a1e12872SBarry Smith    This is to provide some name space protection from Lapack and Blas
3a1e12872SBarry Smith allow the appropriate single or double precision version to be used.
4a1e12872SBarry Smith Also deals with different Fortran 77 naming conventions on machines.
5a1e12872SBarry Smith */
6a1e12872SBarry Smith #if !defined(_PLAPACK_H)
7a1e12872SBarry Smith #define _PLAPACK_H
8a1e12872SBarry Smith 
9a1e12872SBarry Smith #include "ptscimpl.h"
10a1e12872SBarry Smith 
11a1e12872SBarry Smith #if !defined(PETSC_COMPLEX)
12*1eb62cbbSBarry Smith #if defined(PARCH_cray)
13a1e12872SBarry Smith #define BLdot_   SDOT
14a1e12872SBarry Smith #define BLnrm2_  SNRM2
15a1e12872SBarry Smith #define BLscal_  SSCAL
16a1e12872SBarry Smith #define BLcopy_  SCOPY
17a1e12872SBarry Smith #define BLswap_  SSWAP
18a1e12872SBarry Smith #define BLaxpy_  SAXPY
19a1e12872SBarry Smith #define BLasum_  SASUM
20a1e12872SBarry Smith #elif defined(FORTRANCAPS)
21a1e12872SBarry Smith #define BLdot_   DDOT
22a1e12872SBarry Smith #define BLnrm2_  DNRM2
23a1e12872SBarry Smith #define BLscal_  DSCAL
24a1e12872SBarry Smith #define BLcopy_  DCOPY
25a1e12872SBarry Smith #define BLswap_  DSWAP
26a1e12872SBarry Smith #define BLaxpy_  DAXPY
27a1e12872SBarry Smith #define BLasum_  DASUM
28a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
29a1e12872SBarry Smith #define BLdot_   ddot
30a1e12872SBarry Smith #define BLnrm2_  dnrm2
31a1e12872SBarry Smith #define BLscal_  dscal
32a1e12872SBarry Smith #define BLcopy_  dcopy
33a1e12872SBarry Smith #define BLswap_  dswap
34a1e12872SBarry Smith #define BLaxpy_  daxpy
35a1e12872SBarry Smith #define BLasum_  dasum
36a1e12872SBarry Smith #else
37a1e12872SBarry Smith #define BLdot_   ddot_
38a1e12872SBarry Smith #define BLnrm2_  dnrm2_
39a1e12872SBarry Smith #define BLscal_  dscal_
40a1e12872SBarry Smith #define BLcopy_  dcopy_
41a1e12872SBarry Smith #define BLswap_  dswap_
42a1e12872SBarry Smith #define BLaxpy_  daxpy_
43a1e12872SBarry Smith #define BLasum_  dasum_
44a1e12872SBarry Smith #endif
45a1e12872SBarry Smith 
46*1eb62cbbSBarry Smith #if defined(PARCH_cray)
47a1e12872SBarry Smith #define LApotrf_ SPOTRF
48a1e12872SBarry Smith #define LApotrs_ SPOTRS
49a1e12872SBarry Smith #define LAgemv_  SGEMV
50a1e12872SBarry Smith #define LAgetrf_ SGETRF
51a1e12872SBarry Smith #define LAgetrs_ SGETRS
52a1e12872SBarry Smith #define LAgemv_  SGEMV
53a1e12872SBarry Smith #define LAtrmv_  STRMV
54a1e12872SBarry Smith #define LAtrsl_  STRSL
55a1e12872SBarry Smith #define LAger_   SGER
56a1e12872SBarry Smith #elif defined(FORTRANCAPS)
57a1e12872SBarry Smith #define LApotrf_ DPOTRF
58a1e12872SBarry Smith #define LApotrs_ DPOTRS
59a1e12872SBarry Smith #define LAgemv_  DGEMV
60a1e12872SBarry Smith #define LAgetrf_ DGETRF
61a1e12872SBarry Smith #define LAgetrs_ DGETRS
62a1e12872SBarry Smith #define LAger_   DGER
63a1e12872SBarry Smith #define LAtrmv_  DTRMV
64a1e12872SBarry Smith #define LAtrsl_  DTRSL
65a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
66a1e12872SBarry Smith #define LApotrf_ dpotrf
67a1e12872SBarry Smith #define LApotrs_ dpotrs
68a1e12872SBarry Smith #define LAgemv_  dgemv
69a1e12872SBarry Smith #define LAgetrf_ dgetrf
70a1e12872SBarry Smith #define LAgetrs_ dgetrs
71a1e12872SBarry Smith #define LAger_   dger
72a1e12872SBarry Smith #define LAtrmv_  dtrmv
73a1e12872SBarry Smith #define LAtrsl_  dtrsl
74a1e12872SBarry Smith #else
75a1e12872SBarry Smith #define LApotrf_ dpotrf_
76a1e12872SBarry Smith #define LApotrs_ dpotrs_
77a1e12872SBarry Smith #define LAgemv_  dgemv_
78a1e12872SBarry Smith #define LAgetrf_ dgetrf_
79a1e12872SBarry Smith #define LAgetrs_ dgetrs_
80a1e12872SBarry Smith #define LAger_   dger_
81a1e12872SBarry Smith #define LAtrmv_  dtrmv_
82a1e12872SBarry Smith #define LAtrsl_  dtrsl_
83a1e12872SBarry Smith #endif
84a1e12872SBarry Smith 
85a1e12872SBarry Smith #else
86a1e12872SBarry Smith 
87*1eb62cbbSBarry Smith #if defined(PARCH_cray)
88a1e12872SBarry Smith #define BLdot_   CDOTC
89a1e12872SBarry Smith #define BLnrm2_  SCNRM2
90a1e12872SBarry Smith #define BLscal_  CSCAL
91a1e12872SBarry Smith #define BLcopy_  CCOPY
92a1e12872SBarry Smith #define BLswap_  CSWAP
93a1e12872SBarry Smith #define BLaxpy_  CAXPY
94a1e12872SBarry Smith #define BLasum_  SCASUM
95a1e12872SBarry Smith #elif defined(FORTRANCAPS)
96a1e12872SBarry Smith #define BLdot_   ZDOTC
97a1e12872SBarry Smith #define BLnrm2_  DZNRM2
98a1e12872SBarry Smith #define BLscal_  ZSCAL
99a1e12872SBarry Smith #define BLcopy_  ZCOPY
100a1e12872SBarry Smith #define BLswap_  ZSWAP
101a1e12872SBarry Smith #define BLaxpy_  ZAXPY
102a1e12872SBarry Smith #define BLasum_  DZASUM
103a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
104a1e12872SBarry Smith #define BLdot_   zdotc
105a1e12872SBarry Smith #define BLnrm2_  dznrm2
106a1e12872SBarry Smith #define BLscal_  zscal
107a1e12872SBarry Smith #define BLcopy_  zcopy
108a1e12872SBarry Smith #define BLswap_  zswap
109a1e12872SBarry Smith #define BLaxpy_  zaxpy
110a1e12872SBarry Smith #define BLasum_  dzasum
111a1e12872SBarry Smith #else
112a1e12872SBarry Smith #define BLdot_   zdotc_
113a1e12872SBarry Smith #define BLnrm2_  dznrm2_
114a1e12872SBarry Smith #define BLscal_  zscal_
115a1e12872SBarry Smith #define BLcopy_  zcopy_
116a1e12872SBarry Smith #define BLswap_  zswap_
117a1e12872SBarry Smith #define BLaxpy_  zaxpy_
118a1e12872SBarry Smith #define BLasum_  dzasum_
119a1e12872SBarry Smith #endif
120a1e12872SBarry Smith 
121*1eb62cbbSBarry Smith #if defined(PARCH_cray)
122a1e12872SBarry Smith #define LApotrf_ CPOTRF
123a1e12872SBarry Smith #define LApotrs_ CPOTRS
124a1e12872SBarry Smith #define LAgemv_  CGEMV
125a1e12872SBarry Smith #define LAgetrf_ CGETRF
126a1e12872SBarry Smith #define LAgetrs_ CGETRS
127a1e12872SBarry Smith #define LAgemv_  CGEMV
128a1e12872SBarry Smith #define LAtrmv_  CTRMV
129a1e12872SBarry Smith #define LAtrsl_  CTRSL
130a1e12872SBarry Smith #define LAger_   CGER
131a1e12872SBarry Smith #elif defined(FORTRANCAPS)
132a1e12872SBarry Smith #define LApotrf_ ZPOTRF
133a1e12872SBarry Smith #define LApotrs_ ZPOTRS
134a1e12872SBarry Smith #define LAgemv_  ZGEMV
135a1e12872SBarry Smith #define LAgetrf_ ZGETRF
136a1e12872SBarry Smith #define LAgetrs_ ZGETRS
137a1e12872SBarry Smith #define LAger_   ZGER
138a1e12872SBarry Smith #define LAtrmv_  ZTRMV
139a1e12872SBarry Smith #define LAtrsl_  ZTRSL
140a1e12872SBarry Smith #elif !defined(FORTRANUNDERSCORE)
141a1e12872SBarry Smith #define LApotrf_ zpotrf
142a1e12872SBarry Smith #define LApotrs_ zpotrs
143a1e12872SBarry Smith #define LAgemv_  zgemv
144a1e12872SBarry Smith #define LAgetrf_ zgetrf
145a1e12872SBarry Smith #define LAgetrs_ zgetrs
146a1e12872SBarry Smith #define LAger_   zger
147a1e12872SBarry Smith #define LAtrmv_  ztrmv
148a1e12872SBarry Smith #define LAtrsl_  ztrsl
149a1e12872SBarry Smith #else
150a1e12872SBarry Smith #define LApotrf_ zpotrf_
151a1e12872SBarry Smith #define LApotrs_ zpotrs_
152a1e12872SBarry Smith #define LAgemv_  zgemv_
153a1e12872SBarry Smith #define LAgetrf_ zgetrf_
154a1e12872SBarry Smith #define LAgetrs_ zgetrs_
155a1e12872SBarry Smith #define LAger_   zger_
156a1e12872SBarry Smith #define LAtrmv_  ztrmv_
157a1e12872SBarry Smith #define LAtrsl_  ztrsl_
158a1e12872SBarry Smith #endif
159a1e12872SBarry Smith 
160a1e12872SBarry Smith #endif
161a1e12872SBarry Smith 
162a1e12872SBarry Smith #if defined(__cplusplus)
163a1e12872SBarry Smith extern "C" {
164a1e12872SBarry Smith #endif
165a1e12872SBarry Smith 
166*1eb62cbbSBarry Smith extern Scalar BLdot_(int*,Scalar*,int*,Scalar*,int*);
167*1eb62cbbSBarry Smith extern double BLnrm2_(int*,Scalar*,int*),BLasum_(int*,Scalar*,int*);
168*1eb62cbbSBarry Smith extern void   BLscal_(int*,Scalar*,Scalar*,int*);
169*1eb62cbbSBarry Smith extern void   BLcopy_(int*,Scalar*,int*,Scalar*,int*);
170*1eb62cbbSBarry Smith extern void   BLswap_(int*,Scalar*,int*,Scalar*,int*);
171*1eb62cbbSBarry Smith extern void   BLaxpy_(int*,Scalar*,Scalar*,int*,Scalar*,int*);
172a1e12872SBarry Smith 
173*1eb62cbbSBarry Smith extern void   LAgetrf_(int*,int*,Scalar*,int*,int*,int*);
174*1eb62cbbSBarry Smith extern void   LApotrf_(char*,int*,Scalar*,int*,int*);
175*1eb62cbbSBarry Smith extern void   LAgemv_(char*,int*,int*,Scalar*,Scalar*,int*,Scalar *,int*,
176a1e12872SBarry Smith                Scalar*,Scalar*,int*);
177*1eb62cbbSBarry Smith extern void   LApotrs_(char*,int*,int*,Scalar*,int*,Scalar*,int*,int*);
178*1eb62cbbSBarry Smith extern void   LAgetrs_(char*,int*,int*,Scalar*,int*,int*,Scalar*,int*,int*);
179a1e12872SBarry Smith 
180a1e12872SBarry Smith #if defined(__cplusplus)
181a1e12872SBarry Smith };
182a1e12872SBarry Smith #endif
183a1e12872SBarry Smith 
184a1e12872SBarry Smith #endif
185