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