blob: 1be2aa8962a887ebde4e639514d9825e89721924 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
|
/** \file opennl/superlu/Cnames.h
* \ingroup opennl
*/
/*
* -- SuperLU routine (version 2.0) --
* Univ. of California Berkeley, Xerox Palo Alto Research Center,
* and Lawrence Berkeley National Lab.
* November 1, 1997
*
*/
#ifndef __SUPERLU_CNAMES /* allow multiple inclusions */
#define __SUPERLU_CNAMES
/* We want this flag, safer than putting in build system */
#define Add_
/*
* These macros define how C routines will be called. ADD_ assumes that
* they will be called by fortran, which expects C routines to have an
* underscore postfixed to the name (Suns, and the Intel expect this).
* NOCHANGE indicates that fortran will be calling, and that it expects
* the name called by fortran to be identical to that compiled by the C
* (RS6K's do this). UPCASE says it expects C routines called by fortran
* to be in all upcase (CRAY wants this).
*/
#define ADD_ 0
#define ADD__ 1
#define NOCHANGE 2
#define UPCASE 3
#define C_CALL 4
#ifdef UpCase
#define F77_CALL_C UPCASE
#endif
#ifdef NoChange
#define F77_CALL_C NOCHANGE
#endif
#ifdef Add_
#define F77_CALL_C ADD_
#endif
#ifdef Add__
#define F77_CALL_C ADD__
#endif
/* Default */
#ifndef F77_CALL_C
#define F77_CALL_C ADD_
#endif
#if (F77_CALL_C == ADD_)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* No redefinition necessary to have following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void dgemm_(...)
*
* This is the default.
*/
#endif
#if (F77_CALL_C == ADD__)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* for following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void dgemm__(...)
*/
#define sasum_ sasum__
#define isamax_ isamax__
#define scopy_ scopy__
#define sscal_ sscal__
#define sger_ sger__
#define snrm2_ snrm2__
#define ssymv_ ssymv__
#define sdot_ sdot__
#define saxpy_ saxpy__
#define ssyr2_ ssyr2__
#define srot_ srot__
#define sgemv_ sgemv__
#define strsv_ strsv__
#define sgemm_ sgemm__
#define strsm_ strsm__
#define dasum_ dasum__
#define idamax_ idamax__
#define dcopy_ dcopy__
#define dscal_ dscal__
#define dger_ dger__
#define dnrm2_ dnrm2__
#define dsymv_ dsymv__
#define ddot_ ddot__
#define daxpy_ daxpy__
#define dsyr2_ dsyr2__
#define drot_ drot__
#define dgemv_ dgemv__
#define dtrsv_ dtrsv__
#define dgemm_ dgemm__
#define dtrsm_ dtrsm__
#define scasum_ scasum__
#define icamax_ icamax__
#define ccopy_ ccopy__
#define cscal_ cscal__
#define scnrm2_ scnrm2__
#define caxpy_ caxpy__
#define cgemv_ cgemv__
#define ctrsv_ ctrsv__
#define cgemm_ cgemm__
#define ctrsm_ ctrsm__
#define cgerc_ cgerc__
#define chemv_ chemv__
#define cher2_ cher2__
#define dzasum_ dzasum__
#define izamax_ izamax__
#define zcopy_ zcopy__
#define zscal_ zscal__
#define dznrm2_ dznrm2__
#define zaxpy_ zaxpy__
#define zgemv_ zgemv__
#define ztrsv_ ztrsv__
#define zgemm_ zgemm__
#define ztrsm_ ztrsm__
#define zgerc_ zgerc__
#define zhemv_ zhemv__
#define zher2_ zher2__
#define c_bridge_dgssv_ c_bridge_dgssv__
#define c_fortran_dgssv_ c_fortran_dgssv__
#endif
#if (F77_CALL_C == UPCASE)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void DGEMM(...)
*/
#define sasum_ SASUM
#define isamax_ ISAMAX
#define scopy_ SCOPY
#define sscal_ SSCAL
#define sger_ SGER
#define snrm2_ SNRM2
#define ssymv_ SSYMV
#define sdot_ SDOT
#define saxpy_ SAXPY
#define ssyr2_ SSYR2
#define srot_ SROT
#define sgemv_ SGEMV
#define strsv_ STRSV
#define sgemm_ SGEMM
#define strsm_ STRSM
#define dasum_ SASUM
#define idamax_ ISAMAX
#define dcopy_ SCOPY
#define dscal_ SSCAL
#define dger_ SGER
#define dnrm2_ SNRM2
#define dsymv_ SSYMV
#define ddot_ SDOT
#define daxpy_ SAXPY
#define dsyr2_ SSYR2
#define drot_ SROT
#define dgemv_ SGEMV
#define dtrsv_ STRSV
#define dgemm_ SGEMM
#define dtrsm_ STRSM
#define scasum_ SCASUM
#define icamax_ ICAMAX
#define ccopy_ CCOPY
#define cscal_ CSCAL
#define scnrm2_ SCNRM2
#define caxpy_ CAXPY
#define cgemv_ CGEMV
#define ctrsv_ CTRSV
#define cgemm_ CGEMM
#define ctrsm_ CTRSM
#define cgerc_ CGERC
#define chemv_ CHEMV
#define cher2_ CHER2
#define dzasum_ SCASUM
#define izamax_ ICAMAX
#define zcopy_ CCOPY
#define zscal_ CSCAL
#define dznrm2_ SCNRM2
#define zaxpy_ CAXPY
#define zgemv_ CGEMV
#define ztrsv_ CTRSV
#define zgemm_ CGEMM
#define ztrsm_ CTRSM
#define zgerc_ CGERC
#define zhemv_ CHEMV
#define zher2_ CHER2
#define c_bridge_dgssv_ C_BRIDGE_DGSSV
#define c_fortran_dgssv_ C_FORTRAN_DGSSV
#endif
#if (F77_CALL_C == NOCHANGE)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* for following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void dgemm(...)
*/
#define sasum_ sasum
#define isamax_ isamax
#define scopy_ scopy
#define sscal_ sscal
#define sger_ sger
#define snrm2_ snrm2
#define ssymv_ ssymv
#define sdot_ sdot
#define saxpy_ saxpy
#define ssyr2_ ssyr2
#define srot_ srot
#define sgemv_ sgemv
#define strsv_ strsv
#define sgemm_ sgemm
#define strsm_ strsm
#define dasum_ dasum
#define idamax_ idamax
#define dcopy_ dcopy
#define dscal_ dscal
#define dger_ dger
#define dnrm2_ dnrm2
#define dsymv_ dsymv
#define ddot_ ddot
#define daxpy_ daxpy
#define dsyr2_ dsyr2
#define drot_ drot
#define dgemv_ dgemv
#define dtrsv_ dtrsv
#define dgemm_ dgemm
#define dtrsm_ dtrsm
#define scasum_ scasum
#define icamax_ icamax
#define ccopy_ ccopy
#define cscal_ cscal
#define scnrm2_ scnrm2
#define caxpy_ caxpy
#define cgemv_ cgemv
#define ctrsv_ ctrsv
#define cgemm_ cgemm
#define ctrsm_ ctrsm
#define cgerc_ cgerc
#define chemv_ chemv
#define cher2_ cher2
#define dzasum_ dzasum
#define izamax_ izamax
#define zcopy_ zcopy
#define zscal_ zscal
#define dznrm2_ dznrm2
#define zaxpy_ zaxpy
#define zgemv_ zgemv
#define ztrsv_ ztrsv
#define zgemm_ zgemm
#define ztrsm_ ztrsm
#define zgerc_ zgerc
#define zhemv_ zhemv
#define zher2_ zher2
#define c_bridge_dgssv_ c_bridge_dgssv
#define c_fortran_dgssv_ c_fortran_dgssv
#endif
#endif /* __SUPERLU_CNAMES */
|