3 #include "../common/monolish_common.hpp"
34 void matvec(
const matrix::Dense<double> &A,
const vector<double> &x,
36 void matvec(
const matrix::Dense<double> &A,
const vector<double> &x,
37 view1D<vector<double>,
double> &y);
38 void matvec(
const matrix::Dense<double> &A,
const vector<double> &x,
39 view1D<matrix::Dense<double>,
double> &y);
40 void matvec(
const matrix::Dense<double> &A,
41 const view1D<vector<double>,
double> &x, vector<double> &y);
42 void matvec(
const matrix::Dense<double> &A,
43 const view1D<vector<double>,
double> &x,
44 view1D<vector<double>,
double> &y);
45 void matvec(
const matrix::Dense<double> &A,
46 const view1D<vector<double>,
double> &x,
47 view1D<matrix::Dense<double>,
double> &y);
48 void matvec(
const matrix::Dense<double> &A,
49 const view1D<matrix::Dense<double>,
double> &x, vector<double> &y);
50 void matvec(
const matrix::Dense<double> &A,
51 const view1D<matrix::Dense<double>,
double> &x,
52 view1D<vector<double>,
double> &y);
53 void matvec(
const matrix::Dense<double> &A,
54 const view1D<matrix::Dense<double>,
double> &x,
55 view1D<matrix::Dense<double>,
double> &y);
56 void matvec(
const matrix::Dense<float> &A,
const vector<float> &x,
58 void matvec(
const matrix::Dense<float> &A,
const vector<float> &x,
59 view1D<vector<float>,
float> &y);
60 void matvec(
const matrix::Dense<float> &A,
const vector<float> &x,
61 view1D<matrix::Dense<float>,
float> &y);
62 void matvec(
const matrix::Dense<float> &A,
63 const view1D<vector<float>,
float> &x, vector<float> &y);
64 void matvec(
const matrix::Dense<float> &A,
65 const view1D<vector<float>,
float> &x,
66 view1D<vector<float>,
float> &y);
67 void matvec(
const matrix::Dense<float> &A,
68 const view1D<vector<float>,
float> &x,
69 view1D<matrix::Dense<float>,
float> &y);
70 void matvec(
const matrix::Dense<float> &A,
71 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
72 void matvec(
const matrix::Dense<float> &A,
73 const view1D<matrix::Dense<float>,
float> &x,
74 view1D<vector<float>,
float> &y);
75 void matvec(
const matrix::Dense<float> &A,
76 const view1D<matrix::Dense<float>,
float> &x,
77 view1D<matrix::Dense<float>,
float> &y);
96 void matvec_N(
const matrix::Dense<double> &A,
const vector<double> &x,
98 void matvec_N(
const matrix::Dense<double> &A,
const vector<double> &x,
99 view1D<vector<double>,
double> &y);
100 void matvec_N(
const matrix::Dense<double> &A,
const vector<double> &x,
101 view1D<matrix::Dense<double>,
double> &y);
102 void matvec_N(
const matrix::Dense<double> &A,
103 const view1D<vector<double>,
double> &x, vector<double> &y);
104 void matvec_N(
const matrix::Dense<double> &A,
105 const view1D<vector<double>,
double> &x,
106 view1D<vector<double>,
double> &y);
107 void matvec_N(
const matrix::Dense<double> &A,
108 const view1D<vector<double>,
double> &x,
109 view1D<matrix::Dense<double>,
double> &y);
110 void matvec_N(
const matrix::Dense<double> &A,
111 const view1D<matrix::Dense<double>,
double> &x,
113 void matvec_N(
const matrix::Dense<double> &A,
114 const view1D<matrix::Dense<double>,
double> &x,
115 view1D<vector<double>,
double> &y);
116 void matvec_N(
const matrix::Dense<double> &A,
117 const view1D<matrix::Dense<double>,
double> &x,
118 view1D<matrix::Dense<double>,
double> &y);
119 void matvec_N(
const matrix::Dense<float> &A,
const vector<float> &x,
121 void matvec_N(
const matrix::Dense<float> &A,
const vector<float> &x,
122 view1D<vector<float>,
float> &y);
123 void matvec_N(
const matrix::Dense<float> &A,
const vector<float> &x,
124 view1D<matrix::Dense<float>,
float> &y);
125 void matvec_N(
const matrix::Dense<float> &A,
126 const view1D<vector<float>,
float> &x, vector<float> &y);
127 void matvec_N(
const matrix::Dense<float> &A,
128 const view1D<vector<float>,
float> &x,
129 view1D<vector<float>,
float> &y);
130 void matvec_N(
const matrix::Dense<float> &A,
131 const view1D<vector<float>,
float> &x,
132 view1D<matrix::Dense<float>,
float> &y);
133 void matvec_N(
const matrix::Dense<float> &A,
134 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
135 void matvec_N(
const matrix::Dense<float> &A,
136 const view1D<matrix::Dense<float>,
float> &x,
137 view1D<vector<float>,
float> &y);
138 void matvec_N(
const matrix::Dense<float> &A,
139 const view1D<matrix::Dense<float>,
float> &x,
140 view1D<matrix::Dense<float>,
float> &y);
159 void matvec_T(
const matrix::Dense<double> &A,
const vector<double> &x,
161 void matvec_T(
const matrix::Dense<double> &A,
const vector<double> &x,
162 view1D<vector<double>,
double> &y);
163 void matvec_T(
const matrix::Dense<double> &A,
const vector<double> &x,
164 view1D<matrix::Dense<double>,
double> &y);
165 void matvec_T(
const matrix::Dense<double> &A,
166 const view1D<vector<double>,
double> &x, vector<double> &y);
167 void matvec_T(
const matrix::Dense<double> &A,
168 const view1D<vector<double>,
double> &x,
169 view1D<vector<double>,
double> &y);
170 void matvec_T(
const matrix::Dense<double> &A,
171 const view1D<vector<double>,
double> &x,
172 view1D<matrix::Dense<double>,
double> &y);
173 void matvec_T(
const matrix::Dense<double> &A,
174 const view1D<matrix::Dense<double>,
double> &x,
176 void matvec_T(
const matrix::Dense<double> &A,
177 const view1D<matrix::Dense<double>,
double> &x,
178 view1D<vector<double>,
double> &y);
179 void matvec_T(
const matrix::Dense<double> &A,
180 const view1D<matrix::Dense<double>,
double> &x,
181 view1D<matrix::Dense<double>,
double> &y);
182 void matvec_T(
const matrix::Dense<float> &A,
const vector<float> &x,
184 void matvec_T(
const matrix::Dense<float> &A,
const vector<float> &x,
185 view1D<vector<float>,
float> &y);
186 void matvec_T(
const matrix::Dense<float> &A,
const vector<float> &x,
187 view1D<matrix::Dense<float>,
float> &y);
188 void matvec_T(
const matrix::Dense<float> &A,
189 const view1D<vector<float>,
float> &x, vector<float> &y);
190 void matvec_T(
const matrix::Dense<float> &A,
191 const view1D<vector<float>,
float> &x,
192 view1D<vector<float>,
float> &y);
193 void matvec_T(
const matrix::Dense<float> &A,
194 const view1D<vector<float>,
float> &x,
195 view1D<matrix::Dense<float>,
float> &y);
196 void matvec_T(
const matrix::Dense<float> &A,
197 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
198 void matvec_T(
const matrix::Dense<float> &A,
199 const view1D<matrix::Dense<float>,
float> &x,
200 view1D<vector<float>,
float> &y);
201 void matvec_T(
const matrix::Dense<float> &A,
202 const view1D<matrix::Dense<float>,
float> &x,
203 view1D<matrix::Dense<float>,
float> &y);
222 void matvec(
const matrix::CRS<double> &A,
const vector<double> &x,
224 void matvec(
const matrix::CRS<double> &A,
const vector<double> &x,
225 view1D<vector<double>,
double> &y);
226 void matvec(
const matrix::CRS<double> &A,
const vector<double> &x,
227 view1D<matrix::Dense<double>,
double> &y);
228 void matvec(
const matrix::CRS<double> &A,
229 const view1D<vector<double>,
double> &x, vector<double> &y);
230 void matvec(
const matrix::CRS<double> &A,
231 const view1D<vector<double>,
double> &x,
232 view1D<vector<double>,
double> &y);
233 void matvec(
const matrix::CRS<double> &A,
234 const view1D<vector<double>,
double> &x,
235 view1D<matrix::Dense<double>,
double> &y);
236 void matvec(
const matrix::CRS<double> &A,
237 const view1D<matrix::Dense<double>,
double> &x, vector<double> &y);
238 void matvec(
const matrix::CRS<double> &A,
239 const view1D<matrix::Dense<double>,
double> &x,
240 view1D<vector<double>,
double> &y);
241 void matvec(
const matrix::CRS<double> &A,
242 const view1D<matrix::Dense<double>,
double> &x,
243 view1D<matrix::Dense<double>,
double> &y);
244 void matvec(
const matrix::CRS<float> &A,
const vector<float> &x,
246 void matvec(
const matrix::CRS<float> &A,
const vector<float> &x,
247 view1D<vector<float>,
float> &y);
248 void matvec(
const matrix::CRS<float> &A,
const vector<float> &x,
249 view1D<matrix::Dense<float>,
float> &y);
250 void matvec(
const matrix::CRS<float> &A,
const view1D<vector<float>,
float> &x,
252 void matvec(
const matrix::CRS<float> &A,
const view1D<vector<float>,
float> &x,
253 view1D<vector<float>,
float> &y);
254 void matvec(
const matrix::CRS<float> &A,
const view1D<vector<float>,
float> &x,
255 view1D<matrix::Dense<float>,
float> &y);
256 void matvec(
const matrix::CRS<float> &A,
257 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
258 void matvec(
const matrix::CRS<float> &A,
259 const view1D<matrix::Dense<float>,
float> &x,
260 view1D<vector<float>,
float> &y);
261 void matvec(
const matrix::CRS<float> &A,
262 const view1D<matrix::Dense<float>,
float> &x,
263 view1D<matrix::Dense<float>,
float> &y);
282 void matvec_N(
const matrix::CRS<double> &A,
const vector<double> &x,
284 void matvec_N(
const matrix::CRS<double> &A,
const vector<double> &x,
285 view1D<vector<double>,
double> &y);
286 void matvec_N(
const matrix::CRS<double> &A,
const vector<double> &x,
287 view1D<matrix::Dense<double>,
double> &y);
288 void matvec_N(
const matrix::CRS<double> &A,
289 const view1D<vector<double>,
double> &x, vector<double> &y);
290 void matvec_N(
const matrix::CRS<double> &A,
291 const view1D<vector<double>,
double> &x,
292 view1D<vector<double>,
double> &y);
293 void matvec_N(
const matrix::CRS<double> &A,
294 const view1D<vector<double>,
double> &x,
295 view1D<matrix::Dense<double>,
double> &y);
296 void matvec_N(
const matrix::CRS<double> &A,
297 const view1D<matrix::Dense<double>,
double> &x,
299 void matvec_N(
const matrix::CRS<double> &A,
300 const view1D<matrix::Dense<double>,
double> &x,
301 view1D<vector<double>,
double> &y);
302 void matvec_N(
const matrix::CRS<double> &A,
303 const view1D<matrix::Dense<double>,
double> &x,
304 view1D<matrix::Dense<double>,
double> &y);
305 void matvec_N(
const matrix::CRS<float> &A,
const vector<float> &x,
307 void matvec_N(
const matrix::CRS<float> &A,
const vector<float> &x,
308 view1D<vector<float>,
float> &y);
309 void matvec_N(
const matrix::CRS<float> &A,
const vector<float> &x,
310 view1D<matrix::Dense<float>,
float> &y);
311 void matvec_N(
const matrix::CRS<float> &A,
312 const view1D<vector<float>,
float> &x, vector<float> &y);
313 void matvec_N(
const matrix::CRS<float> &A,
314 const view1D<vector<float>,
float> &x,
315 view1D<vector<float>,
float> &y);
316 void matvec_N(
const matrix::CRS<float> &A,
317 const view1D<vector<float>,
float> &x,
318 view1D<matrix::Dense<float>,
float> &y);
319 void matvec_N(
const matrix::CRS<float> &A,
320 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
321 void matvec_N(
const matrix::CRS<float> &A,
322 const view1D<matrix::Dense<float>,
float> &x,
323 view1D<vector<float>,
float> &y);
324 void matvec_N(
const matrix::CRS<float> &A,
325 const view1D<matrix::Dense<float>,
float> &x,
326 view1D<matrix::Dense<float>,
float> &y);
345 void matvec_T(
const matrix::CRS<double> &A,
const vector<double> &x,
347 void matvec_T(
const matrix::CRS<double> &A,
const vector<double> &x,
348 view1D<vector<double>,
double> &y);
349 void matvec_T(
const matrix::CRS<double> &A,
const vector<double> &x,
350 view1D<matrix::Dense<double>,
double> &y);
351 void matvec_T(
const matrix::CRS<double> &A,
352 const view1D<vector<double>,
double> &x, vector<double> &y);
353 void matvec_T(
const matrix::CRS<double> &A,
354 const view1D<vector<double>,
double> &x,
355 view1D<vector<double>,
double> &y);
356 void matvec_T(
const matrix::CRS<double> &A,
357 const view1D<vector<double>,
double> &x,
358 view1D<matrix::Dense<double>,
double> &y);
359 void matvec_T(
const matrix::CRS<double> &A,
360 const view1D<matrix::Dense<double>,
double> &x,
362 void matvec_T(
const matrix::CRS<double> &A,
363 const view1D<matrix::Dense<double>,
double> &x,
364 view1D<vector<double>,
double> &y);
365 void matvec_T(
const matrix::CRS<double> &A,
366 const view1D<matrix::Dense<double>,
double> &x,
367 view1D<matrix::Dense<double>,
double> &y);
368 void matvec_T(
const matrix::CRS<float> &A,
const vector<float> &x,
370 void matvec_T(
const matrix::CRS<float> &A,
const vector<float> &x,
371 view1D<vector<float>,
float> &y);
372 void matvec_T(
const matrix::CRS<float> &A,
const vector<float> &x,
373 view1D<matrix::Dense<float>,
float> &y);
374 void matvec_T(
const matrix::CRS<float> &A,
375 const view1D<vector<float>,
float> &x, vector<float> &y);
376 void matvec_T(
const matrix::CRS<float> &A,
377 const view1D<vector<float>,
float> &x,
378 view1D<vector<float>,
float> &y);
379 void matvec_T(
const matrix::CRS<float> &A,
380 const view1D<vector<float>,
float> &x,
381 view1D<matrix::Dense<float>,
float> &y);
382 void matvec_T(
const matrix::CRS<float> &A,
383 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
384 void matvec_T(
const matrix::CRS<float> &A,
385 const view1D<matrix::Dense<float>,
float> &x,
386 view1D<vector<float>,
float> &y);
387 void matvec_T(
const matrix::CRS<float> &A,
388 const view1D<matrix::Dense<float>,
float> &x,
389 view1D<matrix::Dense<float>,
float> &y);
407 void matvec(
const matrix::LinearOperator<double> &A,
const vector<double> &x,
409 void matvec(
const matrix::LinearOperator<double> &A,
const vector<double> &x,
410 view1D<vector<double>,
double> &y);
411 void matvec(
const matrix::LinearOperator<double> &A,
const vector<double> &x,
412 view1D<matrix::Dense<double>,
double> &y);
413 void matvec(
const matrix::LinearOperator<double> &A,
414 const view1D<vector<double>,
double> &x, vector<double> &y);
415 void matvec(
const matrix::LinearOperator<double> &A,
416 const view1D<vector<double>,
double> &x,
417 view1D<vector<double>,
double> &y);
418 void matvec(
const matrix::LinearOperator<double> &A,
419 const view1D<vector<double>,
double> &x,
420 view1D<matrix::Dense<double>,
double> &y);
421 void matvec(
const matrix::LinearOperator<double> &A,
422 const view1D<matrix::Dense<double>,
double> &x, vector<double> &y);
423 void matvec(
const matrix::LinearOperator<double> &A,
424 const view1D<matrix::Dense<double>,
double> &x,
425 view1D<vector<double>,
double> &y);
426 void matvec(
const matrix::LinearOperator<double> &A,
427 const view1D<matrix::Dense<double>,
double> &x,
428 view1D<matrix::Dense<double>,
double> &y);
429 void matvec(
const matrix::LinearOperator<float> &A,
const vector<float> &x,
431 void matvec(
const matrix::LinearOperator<float> &A,
const vector<float> &x,
432 view1D<vector<float>,
float> &y);
433 void matvec(
const matrix::LinearOperator<float> &A,
const vector<float> &x,
434 view1D<matrix::Dense<float>,
float> &y);
435 void matvec(
const matrix::LinearOperator<float> &A,
436 const view1D<vector<float>,
float> &x, vector<float> &y);
437 void matvec(
const matrix::LinearOperator<float> &A,
438 const view1D<vector<float>,
float> &x,
439 view1D<vector<float>,
float> &y);
440 void matvec(
const matrix::LinearOperator<float> &A,
441 const view1D<vector<float>,
float> &x,
442 view1D<matrix::Dense<float>,
float> &y);
443 void matvec(
const matrix::LinearOperator<float> &A,
444 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
445 void matvec(
const matrix::LinearOperator<float> &A,
446 const view1D<matrix::Dense<float>,
float> &x,
447 view1D<vector<float>,
float> &y);
448 void matvec(
const matrix::LinearOperator<float> &A,
449 const view1D<matrix::Dense<float>,
float> &x,
450 view1D<matrix::Dense<float>,
float> &y);
468 void rmatvec(
const matrix::LinearOperator<double> &A,
const vector<double> &x,
470 void rmatvec(
const matrix::LinearOperator<double> &A,
const vector<double> &x,
471 view1D<vector<double>,
double> &y);
472 void rmatvec(
const matrix::LinearOperator<double> &A,
const vector<double> &x,
473 view1D<matrix::Dense<double>,
double> &y);
474 void rmatvec(
const matrix::LinearOperator<double> &A,
475 const view1D<vector<double>,
double> &x, vector<double> &y);
476 void rmatvec(
const matrix::LinearOperator<double> &A,
477 const view1D<vector<double>,
double> &x,
478 view1D<vector<double>,
double> &y);
479 void rmatvec(
const matrix::LinearOperator<double> &A,
480 const view1D<vector<double>,
double> &x,
481 view1D<matrix::Dense<double>,
double> &y);
482 void rmatvec(
const matrix::LinearOperator<double> &A,
483 const view1D<matrix::Dense<double>,
double> &x, vector<double> &y);
484 void rmatvec(
const matrix::LinearOperator<double> &A,
485 const view1D<matrix::Dense<double>,
double> &x,
486 view1D<vector<double>,
double> &y);
487 void rmatvec(
const matrix::LinearOperator<double> &A,
488 const view1D<matrix::Dense<double>,
double> &x,
489 view1D<matrix::Dense<double>,
double> &y);
490 void rmatvec(
const matrix::LinearOperator<float> &A,
const vector<float> &x,
492 void rmatvec(
const matrix::LinearOperator<float> &A,
const vector<float> &x,
493 view1D<vector<float>,
float> &y);
494 void rmatvec(
const matrix::LinearOperator<float> &A,
const vector<float> &x,
495 view1D<matrix::Dense<float>,
float> &y);
496 void rmatvec(
const matrix::LinearOperator<float> &A,
497 const view1D<vector<float>,
float> &x, vector<float> &y);
498 void rmatvec(
const matrix::LinearOperator<float> &A,
499 const view1D<vector<float>,
float> &x,
500 view1D<vector<float>,
float> &y);
501 void rmatvec(
const matrix::LinearOperator<float> &A,
502 const view1D<vector<float>,
float> &x,
503 view1D<matrix::Dense<float>,
float> &y);
504 void rmatvec(
const matrix::LinearOperator<float> &A,
505 const view1D<matrix::Dense<float>,
float> &x, vector<float> &y);
506 void rmatvec(
const matrix::LinearOperator<float> &A,
507 const view1D<matrix::Dense<float>,
float> &x,
508 view1D<vector<float>,
float> &y);
509 void rmatvec(
const matrix::LinearOperator<float> &A,
510 const view1D<matrix::Dense<float>,
float> &x,
511 view1D<matrix::Dense<float>,
float> &y);