monolish  0.15.1
MONOlithic LInear equation Solvers for Highly-parallel architecture
monolish_vector_blas.hpp
Go to the documentation of this file.
1 // this code is generated by gen_vector_blas.sh
2 #pragma once
3 #include "../common/monolish_common.hpp"
4 
10 namespace monolish::blas {
11 
23 void vecadd(const vector<double> &a, const vector<double> &b,
24  vector<double> &y);
25 void vecadd(const vector<double> &a, const vector<double> &b,
26  view1D<vector<double>, double> &y);
27 void vecadd(const vector<double> &a, const vector<double> &b,
28  view1D<matrix::Dense<double>, double> &y);
29 void vecadd(const vector<double> &a, const view1D<vector<double>, double> &b,
30  vector<double> &y);
31 void vecadd(const vector<double> &a, const view1D<vector<double>, double> &b,
32  view1D<vector<double>, double> &y);
33 void vecadd(const vector<double> &a, const view1D<vector<double>, double> &b,
34  view1D<matrix::Dense<double>, double> &y);
35 void vecadd(const vector<double> &a,
36  const view1D<matrix::Dense<double>, double> &b, vector<double> &y);
37 void vecadd(const vector<double> &a,
38  const view1D<matrix::Dense<double>, double> &b,
39  view1D<vector<double>, double> &y);
40 void vecadd(const vector<double> &a,
41  const view1D<matrix::Dense<double>, double> &b,
42  view1D<matrix::Dense<double>, double> &y);
43 void vecadd(const view1D<vector<double>, double> &a, const vector<double> &b,
44  vector<double> &y);
45 void vecadd(const view1D<vector<double>, double> &a, const vector<double> &b,
46  view1D<vector<double>, double> &y);
47 void vecadd(const view1D<vector<double>, double> &a, const vector<double> &b,
48  view1D<matrix::Dense<double>, double> &y);
49 void vecadd(const view1D<vector<double>, double> &a,
50  const view1D<vector<double>, double> &b, vector<double> &y);
51 void vecadd(const view1D<vector<double>, double> &a,
52  const view1D<vector<double>, double> &b,
53  view1D<vector<double>, double> &y);
54 void vecadd(const view1D<vector<double>, double> &a,
55  const view1D<vector<double>, double> &b,
56  view1D<matrix::Dense<double>, double> &y);
57 void vecadd(const view1D<vector<double>, double> &a,
58  const view1D<matrix::Dense<double>, double> &b, vector<double> &y);
59 void vecadd(const view1D<vector<double>, double> &a,
60  const view1D<matrix::Dense<double>, double> &b,
61  view1D<vector<double>, double> &y);
62 void vecadd(const view1D<vector<double>, double> &a,
63  const view1D<matrix::Dense<double>, double> &b,
64  view1D<matrix::Dense<double>, double> &y);
65 void vecadd(const view1D<matrix::Dense<double>, double> &a,
66  const vector<double> &b, vector<double> &y);
67 void vecadd(const view1D<matrix::Dense<double>, double> &a,
68  const vector<double> &b, view1D<vector<double>, double> &y);
69 void vecadd(const view1D<matrix::Dense<double>, double> &a,
70  const vector<double> &b, view1D<matrix::Dense<double>, double> &y);
71 void vecadd(const view1D<matrix::Dense<double>, double> &a,
72  const view1D<vector<double>, double> &b, vector<double> &y);
73 void vecadd(const view1D<matrix::Dense<double>, double> &a,
74  const view1D<vector<double>, double> &b,
75  view1D<vector<double>, double> &y);
76 void vecadd(const view1D<matrix::Dense<double>, double> &a,
77  const view1D<vector<double>, double> &b,
78  view1D<matrix::Dense<double>, double> &y);
79 void vecadd(const view1D<matrix::Dense<double>, double> &a,
80  const view1D<matrix::Dense<double>, double> &b, vector<double> &y);
81 void vecadd(const view1D<matrix::Dense<double>, double> &a,
82  const view1D<matrix::Dense<double>, double> &b,
83  view1D<vector<double>, double> &y);
84 void vecadd(const view1D<matrix::Dense<double>, double> &a,
85  const view1D<matrix::Dense<double>, double> &b,
86  view1D<matrix::Dense<double>, double> &y);
87 void vecadd(const vector<float> &a, const vector<float> &b, vector<float> &y);
88 void vecadd(const vector<float> &a, const vector<float> &b,
89  view1D<vector<float>, float> &y);
90 void vecadd(const vector<float> &a, const vector<float> &b,
91  view1D<matrix::Dense<float>, float> &y);
92 void vecadd(const vector<float> &a, const view1D<vector<float>, float> &b,
93  vector<float> &y);
94 void vecadd(const vector<float> &a, const view1D<vector<float>, float> &b,
95  view1D<vector<float>, float> &y);
96 void vecadd(const vector<float> &a, const view1D<vector<float>, float> &b,
97  view1D<matrix::Dense<float>, float> &y);
98 void vecadd(const vector<float> &a,
99  const view1D<matrix::Dense<float>, float> &b, vector<float> &y);
100 void vecadd(const vector<float> &a,
101  const view1D<matrix::Dense<float>, float> &b,
102  view1D<vector<float>, float> &y);
103 void vecadd(const vector<float> &a,
104  const view1D<matrix::Dense<float>, float> &b,
105  view1D<matrix::Dense<float>, float> &y);
106 void vecadd(const view1D<vector<float>, float> &a, const vector<float> &b,
107  vector<float> &y);
108 void vecadd(const view1D<vector<float>, float> &a, const vector<float> &b,
109  view1D<vector<float>, float> &y);
110 void vecadd(const view1D<vector<float>, float> &a, const vector<float> &b,
111  view1D<matrix::Dense<float>, float> &y);
112 void vecadd(const view1D<vector<float>, float> &a,
113  const view1D<vector<float>, float> &b, vector<float> &y);
114 void vecadd(const view1D<vector<float>, float> &a,
115  const view1D<vector<float>, float> &b,
116  view1D<vector<float>, float> &y);
117 void vecadd(const view1D<vector<float>, float> &a,
118  const view1D<vector<float>, float> &b,
119  view1D<matrix::Dense<float>, float> &y);
120 void vecadd(const view1D<vector<float>, float> &a,
121  const view1D<matrix::Dense<float>, float> &b, vector<float> &y);
122 void vecadd(const view1D<vector<float>, float> &a,
123  const view1D<matrix::Dense<float>, float> &b,
124  view1D<vector<float>, float> &y);
125 void vecadd(const view1D<vector<float>, float> &a,
126  const view1D<matrix::Dense<float>, float> &b,
127  view1D<matrix::Dense<float>, float> &y);
128 void vecadd(const view1D<matrix::Dense<float>, float> &a,
129  const vector<float> &b, vector<float> &y);
130 void vecadd(const view1D<matrix::Dense<float>, float> &a,
131  const vector<float> &b, view1D<vector<float>, float> &y);
132 void vecadd(const view1D<matrix::Dense<float>, float> &a,
133  const vector<float> &b, view1D<matrix::Dense<float>, float> &y);
134 void vecadd(const view1D<matrix::Dense<float>, float> &a,
135  const view1D<vector<float>, float> &b, vector<float> &y);
136 void vecadd(const view1D<matrix::Dense<float>, float> &a,
137  const view1D<vector<float>, float> &b,
138  view1D<vector<float>, float> &y);
139 void vecadd(const view1D<matrix::Dense<float>, float> &a,
140  const view1D<vector<float>, float> &b,
141  view1D<matrix::Dense<float>, float> &y);
142 void vecadd(const view1D<matrix::Dense<float>, float> &a,
143  const view1D<matrix::Dense<float>, float> &b, vector<float> &y);
144 void vecadd(const view1D<matrix::Dense<float>, float> &a,
145  const view1D<matrix::Dense<float>, float> &b,
146  view1D<vector<float>, float> &y);
147 void vecadd(const view1D<matrix::Dense<float>, float> &a,
148  const view1D<matrix::Dense<float>, float> &b,
149  view1D<matrix::Dense<float>, float> &y);
150 
162 void vecsub(const vector<double> &a, const vector<double> &b,
163  vector<double> &y);
164 void vecsub(const vector<double> &a, const vector<double> &b,
165  view1D<vector<double>, double> &y);
166 void vecsub(const vector<double> &a, const vector<double> &b,
167  view1D<matrix::Dense<double>, double> &y);
168 void vecsub(const vector<double> &a, const view1D<vector<double>, double> &b,
169  vector<double> &y);
170 void vecsub(const vector<double> &a, const view1D<vector<double>, double> &b,
171  view1D<vector<double>, double> &y);
172 void vecsub(const vector<double> &a, const view1D<vector<double>, double> &b,
173  view1D<matrix::Dense<double>, double> &y);
174 void vecsub(const vector<double> &a,
175  const view1D<matrix::Dense<double>, double> &b, vector<double> &y);
176 void vecsub(const vector<double> &a,
177  const view1D<matrix::Dense<double>, double> &b,
178  view1D<vector<double>, double> &y);
179 void vecsub(const vector<double> &a,
180  const view1D<matrix::Dense<double>, double> &b,
181  view1D<matrix::Dense<double>, double> &y);
182 void vecsub(const view1D<vector<double>, double> &a, const vector<double> &b,
183  vector<double> &y);
184 void vecsub(const view1D<vector<double>, double> &a, const vector<double> &b,
185  view1D<vector<double>, double> &y);
186 void vecsub(const view1D<vector<double>, double> &a, const vector<double> &b,
187  view1D<matrix::Dense<double>, double> &y);
188 void vecsub(const view1D<vector<double>, double> &a,
189  const view1D<vector<double>, double> &b, vector<double> &y);
190 void vecsub(const view1D<vector<double>, double> &a,
191  const view1D<vector<double>, double> &b,
192  view1D<vector<double>, double> &y);
193 void vecsub(const view1D<vector<double>, double> &a,
194  const view1D<vector<double>, double> &b,
195  view1D<matrix::Dense<double>, double> &y);
196 void vecsub(const view1D<vector<double>, double> &a,
197  const view1D<matrix::Dense<double>, double> &b, vector<double> &y);
198 void vecsub(const view1D<vector<double>, double> &a,
199  const view1D<matrix::Dense<double>, double> &b,
200  view1D<vector<double>, double> &y);
201 void vecsub(const view1D<vector<double>, double> &a,
202  const view1D<matrix::Dense<double>, double> &b,
203  view1D<matrix::Dense<double>, double> &y);
204 void vecsub(const view1D<matrix::Dense<double>, double> &a,
205  const vector<double> &b, vector<double> &y);
206 void vecsub(const view1D<matrix::Dense<double>, double> &a,
207  const vector<double> &b, view1D<vector<double>, double> &y);
208 void vecsub(const view1D<matrix::Dense<double>, double> &a,
209  const vector<double> &b, view1D<matrix::Dense<double>, double> &y);
210 void vecsub(const view1D<matrix::Dense<double>, double> &a,
211  const view1D<vector<double>, double> &b, vector<double> &y);
212 void vecsub(const view1D<matrix::Dense<double>, double> &a,
213  const view1D<vector<double>, double> &b,
214  view1D<vector<double>, double> &y);
215 void vecsub(const view1D<matrix::Dense<double>, double> &a,
216  const view1D<vector<double>, double> &b,
217  view1D<matrix::Dense<double>, double> &y);
218 void vecsub(const view1D<matrix::Dense<double>, double> &a,
219  const view1D<matrix::Dense<double>, double> &b, vector<double> &y);
220 void vecsub(const view1D<matrix::Dense<double>, double> &a,
221  const view1D<matrix::Dense<double>, double> &b,
222  view1D<vector<double>, double> &y);
223 void vecsub(const view1D<matrix::Dense<double>, double> &a,
224  const view1D<matrix::Dense<double>, double> &b,
225  view1D<matrix::Dense<double>, double> &y);
226 void vecsub(const vector<float> &a, const vector<float> &b, vector<float> &y);
227 void vecsub(const vector<float> &a, const vector<float> &b,
228  view1D<vector<float>, float> &y);
229 void vecsub(const vector<float> &a, const vector<float> &b,
230  view1D<matrix::Dense<float>, float> &y);
231 void vecsub(const vector<float> &a, const view1D<vector<float>, float> &b,
232  vector<float> &y);
233 void vecsub(const vector<float> &a, const view1D<vector<float>, float> &b,
234  view1D<vector<float>, float> &y);
235 void vecsub(const vector<float> &a, const view1D<vector<float>, float> &b,
236  view1D<matrix::Dense<float>, float> &y);
237 void vecsub(const vector<float> &a,
238  const view1D<matrix::Dense<float>, float> &b, vector<float> &y);
239 void vecsub(const vector<float> &a,
240  const view1D<matrix::Dense<float>, float> &b,
241  view1D<vector<float>, float> &y);
242 void vecsub(const vector<float> &a,
243  const view1D<matrix::Dense<float>, float> &b,
244  view1D<matrix::Dense<float>, float> &y);
245 void vecsub(const view1D<vector<float>, float> &a, const vector<float> &b,
246  vector<float> &y);
247 void vecsub(const view1D<vector<float>, float> &a, const vector<float> &b,
248  view1D<vector<float>, float> &y);
249 void vecsub(const view1D<vector<float>, float> &a, const vector<float> &b,
250  view1D<matrix::Dense<float>, float> &y);
251 void vecsub(const view1D<vector<float>, float> &a,
252  const view1D<vector<float>, float> &b, vector<float> &y);
253 void vecsub(const view1D<vector<float>, float> &a,
254  const view1D<vector<float>, float> &b,
255  view1D<vector<float>, float> &y);
256 void vecsub(const view1D<vector<float>, float> &a,
257  const view1D<vector<float>, float> &b,
258  view1D<matrix::Dense<float>, float> &y);
259 void vecsub(const view1D<vector<float>, float> &a,
260  const view1D<matrix::Dense<float>, float> &b, vector<float> &y);
261 void vecsub(const view1D<vector<float>, float> &a,
262  const view1D<matrix::Dense<float>, float> &b,
263  view1D<vector<float>, float> &y);
264 void vecsub(const view1D<vector<float>, float> &a,
265  const view1D<matrix::Dense<float>, float> &b,
266  view1D<matrix::Dense<float>, float> &y);
267 void vecsub(const view1D<matrix::Dense<float>, float> &a,
268  const vector<float> &b, vector<float> &y);
269 void vecsub(const view1D<matrix::Dense<float>, float> &a,
270  const vector<float> &b, view1D<vector<float>, float> &y);
271 void vecsub(const view1D<matrix::Dense<float>, float> &a,
272  const vector<float> &b, view1D<matrix::Dense<float>, float> &y);
273 void vecsub(const view1D<matrix::Dense<float>, float> &a,
274  const view1D<vector<float>, float> &b, vector<float> &y);
275 void vecsub(const view1D<matrix::Dense<float>, float> &a,
276  const view1D<vector<float>, float> &b,
277  view1D<vector<float>, float> &y);
278 void vecsub(const view1D<matrix::Dense<float>, float> &a,
279  const view1D<vector<float>, float> &b,
280  view1D<matrix::Dense<float>, float> &y);
281 void vecsub(const view1D<matrix::Dense<float>, float> &a,
282  const view1D<matrix::Dense<float>, float> &b, vector<float> &y);
283 void vecsub(const view1D<matrix::Dense<float>, float> &a,
284  const view1D<matrix::Dense<float>, float> &b,
285  view1D<vector<float>, float> &y);
286 void vecsub(const view1D<matrix::Dense<float>, float> &a,
287  const view1D<matrix::Dense<float>, float> &b,
288  view1D<matrix::Dense<float>, float> &y);
289 
300 void copy(const vector<double> &x, vector<double> &y);
301 void copy(const vector<double> &x, view1D<vector<double>, double> &y);
302 void copy(const vector<double> &x, view1D<matrix::Dense<double>, double> &y);
303 void copy(const view1D<vector<double>, double> &x, vector<double> &y);
304 void copy(const view1D<vector<double>, double> &x,
305  view1D<vector<double>, double> &y);
306 void copy(const view1D<vector<double>, double> &x,
307  view1D<matrix::Dense<double>, double> &y);
308 void copy(const view1D<matrix::Dense<double>, double> &x, vector<double> &y);
309 void copy(const view1D<matrix::Dense<double>, double> &x,
310  view1D<vector<double>, double> &y);
311 void copy(const view1D<matrix::Dense<double>, double> &x,
312  view1D<matrix::Dense<double>, double> &y);
313 void copy(const vector<float> &x, vector<float> &y);
314 void copy(const vector<float> &x, view1D<vector<float>, float> &y);
315 void copy(const vector<float> &x, view1D<matrix::Dense<float>, float> &y);
316 void copy(const view1D<vector<float>, float> &x, vector<float> &y);
317 void copy(const view1D<vector<float>, float> &x,
318  view1D<vector<float>, float> &y);
319 void copy(const view1D<vector<float>, float> &x,
320  view1D<matrix::Dense<float>, float> &y);
321 void copy(const view1D<matrix::Dense<float>, float> &x, vector<float> &y);
322 void copy(const view1D<matrix::Dense<float>, float> &x,
323  view1D<vector<float>, float> &y);
324 void copy(const view1D<matrix::Dense<float>, float> &x,
325  view1D<matrix::Dense<float>, float> &y);
326 
337 void asum(const vector<double> &x, double &ans);
338 void asum(const view1D<vector<double>, double> &x, double &ans);
339 void asum(const view1D<matrix::Dense<double>, double> &x, double &ans);
340 void asum(const vector<float> &x, float &ans);
341 void asum(const view1D<vector<float>, float> &x, float &ans);
342 void asum(const view1D<matrix::Dense<float>, float> &x, float &ans);
343 
354 [[nodiscard]] double asum(const vector<double> &x);
355 [[nodiscard]] double asum(const view1D<vector<double>, double> &x);
356 [[nodiscard]] double asum(const view1D<matrix::Dense<double>, double> &x);
357 [[nodiscard]] float asum(const vector<float> &x);
358 [[nodiscard]] float asum(const view1D<vector<float>, float> &x);
359 [[nodiscard]] float asum(const view1D<matrix::Dense<float>, float> &x);
360 
371 void sum(const vector<double> &x, double &ans);
372 void sum(const view1D<vector<double>, double> &x, double &ans);
373 void sum(const view1D<matrix::Dense<double>, double> &x, double &ans);
374 void sum(const vector<float> &x, float &ans);
375 void sum(const view1D<vector<float>, float> &x, float &ans);
376 void sum(const view1D<matrix::Dense<float>, float> &x, float &ans);
377 
388 [[nodiscard]] double sum(const vector<double> &x);
389 [[nodiscard]] double sum(const view1D<vector<double>, double> &x);
390 [[nodiscard]] double sum(const view1D<matrix::Dense<double>, double> &x);
391 [[nodiscard]] float sum(const vector<float> &x);
392 [[nodiscard]] float sum(const view1D<vector<float>, float> &x);
393 [[nodiscard]] float sum(const view1D<matrix::Dense<float>, float> &x);
394 
406 void axpy(const double alpha, const vector<double> &x, vector<double> &y);
407 void axpy(const double alpha, const vector<double> &x,
408  view1D<vector<double>, double> &y);
409 void axpy(const double alpha, const vector<double> &x,
410  view1D<matrix::Dense<double>, double> &y);
411 void axpy(const double alpha, const view1D<vector<double>, double> &x,
412  vector<double> &y);
413 void axpy(const double alpha, const view1D<vector<double>, double> &x,
414  view1D<vector<double>, double> &y);
415 void axpy(const double alpha, const view1D<vector<double>, double> &x,
416  view1D<matrix::Dense<double>, double> &y);
417 void axpy(const double alpha, const view1D<matrix::Dense<double>, double> &x,
418  vector<double> &y);
419 void axpy(const double alpha, const view1D<matrix::Dense<double>, double> &x,
420  view1D<vector<double>, double> &y);
421 void axpy(const double alpha, const view1D<matrix::Dense<double>, double> &x,
422  view1D<matrix::Dense<double>, double> &y);
423 void axpy(const float alpha, const vector<float> &x, vector<float> &y);
424 void axpy(const float alpha, const vector<float> &x,
425  view1D<vector<float>, float> &y);
426 void axpy(const float alpha, const vector<float> &x,
427  view1D<matrix::Dense<float>, float> &y);
428 void axpy(const float alpha, const view1D<vector<float>, float> &x,
429  vector<float> &y);
430 void axpy(const float alpha, const view1D<vector<float>, float> &x,
431  view1D<vector<float>, float> &y);
432 void axpy(const float alpha, const view1D<vector<float>, float> &x,
433  view1D<matrix::Dense<float>, float> &y);
434 void axpy(const float alpha, const view1D<matrix::Dense<float>, float> &x,
435  vector<float> &y);
436 void axpy(const float alpha, const view1D<matrix::Dense<float>, float> &x,
437  view1D<vector<float>, float> &y);
438 void axpy(const float alpha, const view1D<matrix::Dense<float>, float> &x,
439  view1D<matrix::Dense<float>, float> &y);
440 
453 void axpyz(const double alpha, const vector<double> &x, const vector<double> &y,
454  vector<double> &z);
455 void axpyz(const double alpha, const vector<double> &x, const vector<double> &y,
456  view1D<vector<double>, double> &z);
457 void axpyz(const double alpha, const vector<double> &x, const vector<double> &y,
458  view1D<matrix::Dense<double>, double> &z);
459 void axpyz(const double alpha, const vector<double> &x,
460  const view1D<vector<double>, double> &y, vector<double> &z);
461 void axpyz(const double alpha, const vector<double> &x,
462  const view1D<vector<double>, double> &y,
463  view1D<vector<double>, double> &z);
464 void axpyz(const double alpha, const vector<double> &x,
465  const view1D<vector<double>, double> &y,
466  view1D<matrix::Dense<double>, double> &z);
467 void axpyz(const double alpha, const vector<double> &x,
468  const view1D<matrix::Dense<double>, double> &y, vector<double> &z);
469 void axpyz(const double alpha, const vector<double> &x,
470  const view1D<matrix::Dense<double>, double> &y,
471  view1D<vector<double>, double> &z);
472 void axpyz(const double alpha, const vector<double> &x,
473  const view1D<matrix::Dense<double>, double> &y,
474  view1D<matrix::Dense<double>, double> &z);
475 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
476  const vector<double> &y, vector<double> &z);
477 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
478  const vector<double> &y, view1D<vector<double>, double> &z);
479 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
480  const vector<double> &y, view1D<matrix::Dense<double>, double> &z);
481 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
482  const view1D<vector<double>, double> &y, vector<double> &z);
483 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
484  const view1D<vector<double>, double> &y,
485  view1D<vector<double>, double> &z);
486 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
487  const view1D<vector<double>, double> &y,
488  view1D<matrix::Dense<double>, double> &z);
489 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
490  const view1D<matrix::Dense<double>, double> &y, vector<double> &z);
491 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
492  const view1D<matrix::Dense<double>, double> &y,
493  view1D<vector<double>, double> &z);
494 void axpyz(const double alpha, const view1D<vector<double>, double> &x,
495  const view1D<matrix::Dense<double>, double> &y,
496  view1D<matrix::Dense<double>, double> &z);
497 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
498  const vector<double> &y, vector<double> &z);
499 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
500  const vector<double> &y, view1D<vector<double>, double> &z);
501 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
502  const vector<double> &y, view1D<matrix::Dense<double>, double> &z);
503 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
504  const view1D<vector<double>, double> &y, vector<double> &z);
505 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
506  const view1D<vector<double>, double> &y,
507  view1D<vector<double>, double> &z);
508 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
509  const view1D<vector<double>, double> &y,
510  view1D<matrix::Dense<double>, double> &z);
511 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
512  const view1D<matrix::Dense<double>, double> &y, vector<double> &z);
513 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
514  const view1D<matrix::Dense<double>, double> &y,
515  view1D<vector<double>, double> &z);
516 void axpyz(const double alpha, const view1D<matrix::Dense<double>, double> &x,
517  const view1D<matrix::Dense<double>, double> &y,
518  view1D<matrix::Dense<double>, double> &z);
519 void axpyz(const float alpha, const vector<float> &x, const vector<float> &y,
520  vector<float> &z);
521 void axpyz(const float alpha, const vector<float> &x, const vector<float> &y,
522  view1D<vector<float>, float> &z);
523 void axpyz(const float alpha, const vector<float> &x, const vector<float> &y,
524  view1D<matrix::Dense<float>, float> &z);
525 void axpyz(const float alpha, const vector<float> &x,
526  const view1D<vector<float>, float> &y, vector<float> &z);
527 void axpyz(const float alpha, const vector<float> &x,
528  const view1D<vector<float>, float> &y,
529  view1D<vector<float>, float> &z);
530 void axpyz(const float alpha, const vector<float> &x,
531  const view1D<vector<float>, float> &y,
532  view1D<matrix::Dense<float>, float> &z);
533 void axpyz(const float alpha, const vector<float> &x,
534  const view1D<matrix::Dense<float>, float> &y, vector<float> &z);
535 void axpyz(const float alpha, const vector<float> &x,
536  const view1D<matrix::Dense<float>, float> &y,
537  view1D<vector<float>, float> &z);
538 void axpyz(const float alpha, const vector<float> &x,
539  const view1D<matrix::Dense<float>, float> &y,
540  view1D<matrix::Dense<float>, float> &z);
541 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
542  const vector<float> &y, vector<float> &z);
543 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
544  const vector<float> &y, view1D<vector<float>, float> &z);
545 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
546  const vector<float> &y, view1D<matrix::Dense<float>, float> &z);
547 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
548  const view1D<vector<float>, float> &y, vector<float> &z);
549 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
550  const view1D<vector<float>, float> &y,
551  view1D<vector<float>, float> &z);
552 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
553  const view1D<vector<float>, float> &y,
554  view1D<matrix::Dense<float>, float> &z);
555 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
556  const view1D<matrix::Dense<float>, float> &y, vector<float> &z);
557 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
558  const view1D<matrix::Dense<float>, float> &y,
559  view1D<vector<float>, float> &z);
560 void axpyz(const float alpha, const view1D<vector<float>, float> &x,
561  const view1D<matrix::Dense<float>, float> &y,
562  view1D<matrix::Dense<float>, float> &z);
563 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
564  const vector<float> &y, vector<float> &z);
565 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
566  const vector<float> &y, view1D<vector<float>, float> &z);
567 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
568  const vector<float> &y, view1D<matrix::Dense<float>, float> &z);
569 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
570  const view1D<vector<float>, float> &y, vector<float> &z);
571 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
572  const view1D<vector<float>, float> &y,
573  view1D<vector<float>, float> &z);
574 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
575  const view1D<vector<float>, float> &y,
576  view1D<matrix::Dense<float>, float> &z);
577 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
578  const view1D<matrix::Dense<float>, float> &y, vector<float> &z);
579 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
580  const view1D<matrix::Dense<float>, float> &y,
581  view1D<vector<float>, float> &z);
582 void axpyz(const float alpha, const view1D<matrix::Dense<float>, float> &x,
583  const view1D<matrix::Dense<float>, float> &y,
584  view1D<matrix::Dense<float>, float> &z);
585 
597 void dot(const vector<double> &x, const vector<double> &y, double &ans);
598 void dot(const vector<double> &x, const view1D<vector<double>, double> &y,
599  double &ans);
600 void dot(const vector<double> &x,
601  const view1D<matrix::Dense<double>, double> &y, double &ans);
602 void dot(const view1D<vector<double>, double> &x, const vector<double> &y,
603  double &ans);
604 void dot(const view1D<vector<double>, double> &x,
605  const view1D<vector<double>, double> &y, double &ans);
606 void dot(const view1D<vector<double>, double> &x,
607  const view1D<matrix::Dense<double>, double> &y, double &ans);
608 void dot(const view1D<matrix::Dense<double>, double> &x,
609  const vector<double> &y, double &ans);
610 void dot(const view1D<matrix::Dense<double>, double> &x,
611  const view1D<vector<double>, double> &y, double &ans);
612 void dot(const view1D<matrix::Dense<double>, double> &x,
613  const view1D<matrix::Dense<double>, double> &y, double &ans);
614 void dot(const vector<float> &x, const vector<float> &y, float &ans);
615 void dot(const vector<float> &x, const view1D<vector<float>, float> &y,
616  float &ans);
617 void dot(const vector<float> &x, const view1D<matrix::Dense<float>, float> &y,
618  float &ans);
619 void dot(const view1D<vector<float>, float> &x, const vector<float> &y,
620  float &ans);
621 void dot(const view1D<vector<float>, float> &x,
622  const view1D<vector<float>, float> &y, float &ans);
623 void dot(const view1D<vector<float>, float> &x,
624  const view1D<matrix::Dense<float>, float> &y, float &ans);
625 void dot(const view1D<matrix::Dense<float>, float> &x, const vector<float> &y,
626  float &ans);
627 void dot(const view1D<matrix::Dense<float>, float> &x,
628  const view1D<vector<float>, float> &y, float &ans);
629 void dot(const view1D<matrix::Dense<float>, float> &x,
630  const view1D<matrix::Dense<float>, float> &y, float &ans);
631 
643 [[nodiscard]] double dot(const vector<double> &x, const vector<double> &y);
644 [[nodiscard]] double dot(const vector<double> &x,
645  const view1D<vector<double>, double> &y);
646 [[nodiscard]] double dot(const vector<double> &x,
647  const view1D<matrix::Dense<double>, double> &y);
648 [[nodiscard]] double dot(const view1D<vector<double>, double> &x,
649  const vector<double> &y);
650 [[nodiscard]] double dot(const view1D<vector<double>, double> &x,
651  const view1D<vector<double>, double> &y);
652 [[nodiscard]] double dot(const view1D<vector<double>, double> &x,
653  const view1D<matrix::Dense<double>, double> &y);
654 [[nodiscard]] double dot(const view1D<matrix::Dense<double>, double> &x,
655  const vector<double> &y);
656 [[nodiscard]] double dot(const view1D<matrix::Dense<double>, double> &x,
657  const view1D<vector<double>, double> &y);
658 [[nodiscard]] double dot(const view1D<matrix::Dense<double>, double> &x,
659  const view1D<matrix::Dense<double>, double> &y);
660 [[nodiscard]] float dot(const vector<float> &x, const vector<float> &y);
661 [[nodiscard]] float dot(const vector<float> &x,
662  const view1D<vector<float>, float> &y);
663 [[nodiscard]] float dot(const vector<float> &x,
664  const view1D<matrix::Dense<float>, float> &y);
665 [[nodiscard]] float dot(const view1D<vector<float>, float> &x,
666  const vector<float> &y);
667 [[nodiscard]] float dot(const view1D<vector<float>, float> &x,
668  const view1D<vector<float>, float> &y);
669 [[nodiscard]] float dot(const view1D<vector<float>, float> &x,
670  const view1D<matrix::Dense<float>, float> &y);
671 [[nodiscard]] float dot(const view1D<matrix::Dense<float>, float> &x,
672  const vector<float> &y);
673 [[nodiscard]] float dot(const view1D<matrix::Dense<float>, float> &x,
674  const view1D<vector<float>, float> &y);
675 [[nodiscard]] float dot(const view1D<matrix::Dense<float>, float> &x,
676  const view1D<matrix::Dense<float>, float> &y);
677 
688 void nrm1(const vector<double> &x, double &ans);
689 void nrm1(const view1D<vector<double>, double> &x, double &ans);
690 void nrm1(const view1D<matrix::Dense<double>, double> &x, double &ans);
691 void nrm1(const vector<float> &x, float &ans);
692 void nrm1(const view1D<vector<float>, float> &x, float &ans);
693 void nrm1(const view1D<matrix::Dense<float>, float> &x, float &ans);
694 
705 [[nodiscard]] double nrm1(const vector<double> &x);
706 [[nodiscard]] double nrm1(const view1D<vector<double>, double> &x);
707 [[nodiscard]] double nrm1(const view1D<matrix::Dense<double>, double> &x);
708 [[nodiscard]] float nrm1(const vector<float> &x);
709 [[nodiscard]] float nrm1(const view1D<vector<float>, float> &x);
710 [[nodiscard]] float nrm1(const view1D<matrix::Dense<float>, float> &x);
711 
722 void nrm2(const vector<double> &x, double &ans);
723 void nrm2(const view1D<vector<double>, double> &x, double &ans);
724 void nrm2(const view1D<matrix::Dense<double>, double> &x, double &ans);
725 void nrm2(const vector<float> &x, float &ans);
726 void nrm2(const view1D<vector<float>, float> &x, float &ans);
727 void nrm2(const view1D<matrix::Dense<float>, float> &x, float &ans);
728 
739 [[nodiscard]] double nrm2(const vector<double> &x);
740 [[nodiscard]] double nrm2(const view1D<vector<double>, double> &x);
741 [[nodiscard]] double nrm2(const view1D<matrix::Dense<double>, double> &x);
742 [[nodiscard]] float nrm2(const vector<float> &x);
743 [[nodiscard]] float nrm2(const view1D<vector<float>, float> &x);
744 [[nodiscard]] float nrm2(const view1D<matrix::Dense<float>, float> &x);
745 
756 void scal(const double alpha, vector<double> &x);
757 void scal(const double alpha, view1D<vector<double>, double> &x);
758 void scal(const double alpha, view1D<matrix::Dense<double>, double> &x);
759 void scal(const float alpha, vector<float> &x);
760 void scal(const float alpha, view1D<vector<float>, float> &x);
761 void scal(const float alpha, view1D<matrix::Dense<float>, float> &x);
762 
774 void xpay(const double alpha, const vector<double> &x, vector<double> &y);
775 void xpay(const double alpha, const vector<double> &x,
776  view1D<vector<double>, double> &y);
777 void xpay(const double alpha, const vector<double> &x,
778  view1D<matrix::Dense<double>, double> &y);
779 void xpay(const double alpha, const view1D<vector<double>, double> &x,
780  vector<double> &y);
781 void xpay(const double alpha, const view1D<vector<double>, double> &x,
782  view1D<vector<double>, double> &y);
783 void xpay(const double alpha, const view1D<vector<double>, double> &x,
784  view1D<matrix::Dense<double>, double> &y);
785 void xpay(const double alpha, const view1D<matrix::Dense<double>, double> &x,
786  vector<double> &y);
787 void xpay(const double alpha, const view1D<matrix::Dense<double>, double> &x,
788  view1D<vector<double>, double> &y);
789 void xpay(const double alpha, const view1D<matrix::Dense<double>, double> &x,
790  view1D<matrix::Dense<double>, double> &y);
791 void xpay(const float alpha, const vector<float> &x, vector<float> &y);
792 void xpay(const float alpha, const vector<float> &x,
793  view1D<vector<float>, float> &y);
794 void xpay(const float alpha, const vector<float> &x,
795  view1D<matrix::Dense<float>, float> &y);
796 void xpay(const float alpha, const view1D<vector<float>, float> &x,
797  vector<float> &y);
798 void xpay(const float alpha, const view1D<vector<float>, float> &x,
799  view1D<vector<float>, float> &y);
800 void xpay(const float alpha, const view1D<vector<float>, float> &x,
801  view1D<matrix::Dense<float>, float> &y);
802 void xpay(const float alpha, const view1D<matrix::Dense<float>, float> &x,
803  vector<float> &y);
804 void xpay(const float alpha, const view1D<matrix::Dense<float>, float> &x,
805  view1D<vector<float>, float> &y);
806 void xpay(const float alpha, const view1D<matrix::Dense<float>, float> &x,
807  view1D<matrix::Dense<float>, float> &y);
808 } // namespace monolish::blas
monolish::blas::vecadd
void vecadd(const vector< double > &a, const vector< double > &b, vector< double > &y)
element by element addition of vector a and vector b.
monolish::blas::nrm1
void nrm1(const vector< double > &x, double &ans)
nrm1: sum(abs(x[0:N]))
monolish::blas::nrm2
void nrm2(const vector< double > &x, double &ans)
nrm2: ||x||_2
monolish::blas::axpy
void axpy(const double alpha, const vector< double > &x, vector< double > &y)
axpy: y = ax + y
monolish::blas::sum
void sum(const vector< double > &x, double &ans)
vector<float> sum
monolish::blas::copy
void copy(const matrix::Dense< double > &A, matrix::Dense< double > &C)
Dense matrix copy (C=A)
monolish::blas::asum
void asum(const vector< double > &x, double &ans)
vector<float> asum (absolute sum)
monolish::blas::dot
void dot(const vector< double > &x, const vector< double > &y, double &ans)
inner product (dot)
monolish::blas::xpay
void xpay(const double alpha, const vector< double > &x, vector< double > &y)
xpay: y = x + ay
monolish::blas::scal
void scal(const double alpha, vector< double > &x)
scal: x = alpha * x
monolish::blas::axpyz
void axpyz(const double alpha, const vector< double > &x, const vector< double > &y, vector< double > &z)
axpyz: z = ax + y
monolish::blas::vecsub
void vecsub(const vector< double > &a, const vector< double > &b, vector< double > &y)
element by element subtract of vector a and vector b.
monolish::blas
Basic Linear Algebra Subprograms for Dense Matrix, Sparse Matrix, Vector and Scalar.
Definition: monolish_matrix_blas.hpp:10