DFT-EFE
 
Loading...
Searching...
No Matches
BlasLapackTemplates.h
Go to the documentation of this file.
1/******************************************************************************
2 * Copyright (c) 2021. *
3 * The Regents of the University of Michigan and DFT-EFE developers. *
4 * *
5 * This file is part of the DFT-EFE code. *
6 * *
7 * DFT-EFE is free software: you can redistribute it and/or modify *
8 * it under the terms of the Lesser GNU General Public License as *
9 * published by the Free Software Foundation, either version 3 of *
10 * the License, or (at your option) any later version. *
11 * *
12 * DFT-EFE is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
15 * See the Lesser GNU General Public License for more details. *
16 * *
17 * You should have received a copy of the GNU Lesser General Public *
18 * License at the top level of DFT-EFE distribution. If not, see *
19 * <https://www.gnu.org/licenses/>. *
20 ******************************************************************************/
21
22/*
23 * @author Avirup Sircar
24 */
25
26#ifndef BlasLapackTemplates_h
27#define BlasLapackTemplates_h
28
29#include <complex>
30
31// This file's callers (LapackAPIWrapperHost.cpp, BlasAPIWrapperDevice.cpp,
32// etc.) pass unsigned int*/std::complex<T>* arguments matching the
33// extern "C" prototypes declared below. MKL's own mkl_lapack.h (pulled in
34// transitively via oneMKL headers once SYCL is the GPU backend) declares
35// the same LAPACK symbols but with incompatible MKL_INT*/MKL_Complex16*
36// parameter types, which the call sites don't match. Rather than let MKL's
37// declarations replace ours (breaking every call site), pre-empt its own
38// include guard so its conflicting declarations are never parsed in any
39// translation unit that includes this header first.
40#ifdef DFTEFE_WITH_DEVICE_MKL
41# define _MKL_LAPACK_H_
42#endif
43
44namespace dftefe
45{
46 namespace linearAlgebra
47 {
48 //
49 // extern declarations for blas-lapack routines
50 //
51 extern "C"
52 {
53 //
54 // BLAS routines
55 //
56 void
57 dgemv_(const char * TRANS,
58 const unsigned int *M,
59 const unsigned int *N,
60 const double * alpha,
61 const double * A,
62 const unsigned int *LDA,
63 const double * X,
64 const unsigned int *INCX,
65 const double * beta,
66 double * C,
67 const unsigned int *INCY);
68
69 void
70 sgemv_(const char * TRANS,
71 const unsigned int *M,
72 const unsigned int *N,
73 const float * alpha,
74 const float * A,
75 const unsigned int *LDA,
76 const float * X,
77 const unsigned int *INCX,
78 const float * beta,
79 float * C,
80 const unsigned int *INCY);
81
82 void
83 zgemv_(const char * TRANS,
84 const unsigned int * M,
85 const unsigned int * N,
86 const std::complex<double> *alpha,
87 const std::complex<double> *A,
88 const unsigned int * LDA,
89 const std::complex<double> *X,
90 const unsigned int * INCX,
91 const std::complex<double> *beta,
92 std::complex<double> * C,
93 const unsigned int * INCY);
94
95 void
96 cgemv_(const char * TRANS,
97 const unsigned int * M,
98 const unsigned int * N,
99 const std::complex<float> *alpha,
100 const std::complex<float> *A,
101 const unsigned int * LDA,
102 const std::complex<float> *X,
103 const unsigned int * INCX,
104 const std::complex<float> *beta,
105 std::complex<float> * C,
106 const unsigned int * INCY);
107 void
108 dsymv_(const char * UPLO,
109 const unsigned int *N,
110 const double * alpha,
111 const double * A,
112 const unsigned int *LDA,
113 const double * X,
114 const unsigned int *INCX,
115 const double * beta,
116 double * C,
117 const unsigned int *INCY);
118 void
119 dscal_(const unsigned int *n,
120 const double * alpha,
121 double * x,
122 const unsigned int *inc);
123 void
124 sscal_(const unsigned int *n,
125 const float * alpha,
126 float * x,
127 const unsigned int *inc);
128 void
129 zscal_(const unsigned int * n,
130 const std::complex<double> *alpha,
131 std::complex<double> * x,
132 const unsigned int * inc);
133 void
134 zdscal_(const unsigned int * n,
135 const double * alpha,
136 std::complex<double> *x,
137 const unsigned int * inc);
138 void
139 daxpy_(const unsigned int *n,
140 const double * alpha,
141 const double * x,
142 const unsigned int *incx,
143 double * y,
144 const unsigned int *incy);
145 void
146 saxpy_(const unsigned int *n,
147 const float * alpha,
148 const float * x,
149 const unsigned int *incx,
150 float * y,
151 const unsigned int *incy);
152 void
153 dgemm_(const char * transA,
154 const char * transB,
155 const unsigned int *m,
156 const unsigned int *n,
157 const unsigned int *k,
158 const double * alpha,
159 const double * A,
160 const unsigned int *lda,
161 const double * B,
162 const unsigned int *ldb,
163 const double * beta,
164 double * C,
165 const unsigned int *ldc);
166 void
167 sgemm_(const char * transA,
168 const char * transB,
169 const unsigned int *m,
170 const unsigned int *n,
171 const unsigned int *k,
172 const float * alpha,
173 const float * A,
174 const unsigned int *lda,
175 const float * B,
176 const unsigned int *ldb,
177 const float * beta,
178 float * C,
179 const unsigned int *ldc);
180 double
181 dlamch_(const char *cmach);
182 void
183 dsyrk_(const char * uplo,
184 const char * trans,
185 const unsigned int *n,
186 const unsigned int *k,
187 const double * alpha,
188 const double * A,
189 const unsigned int *lda,
190 const double * beta,
191 double * C,
192 const unsigned int *ldc);
193 void
194 dsyr_(const char * uplo,
195 const unsigned int *n,
196 const double * alpha,
197 const double * X,
198 const unsigned int *incx,
199 double * A,
200 const unsigned int *lda);
201 void
202 dsyr2_(const char * uplo,
203 const unsigned int *n,
204 const double * alpha,
205 const double * x,
206 const unsigned int *incx,
207 const double * y,
208 const unsigned int *incy,
209 double * a,
210 const unsigned int *lda);
211 void
212 dcopy_(const unsigned int *n,
213 const double * x,
214 const unsigned int *incx,
215 double * y,
216 const unsigned int *incy);
217 void
218 scopy_(const unsigned int *n,
219 const float * x,
220 const unsigned int *incx,
221 float * y,
222 const unsigned int *incy);
223 void
224 zgemm_(const char * transA,
225 const char * transB,
226 const unsigned int * m,
227 const unsigned int * n,
228 const unsigned int * k,
229 const std::complex<double> *alpha,
230 const std::complex<double> *A,
231 const unsigned int * lda,
232 const std::complex<double> *B,
233 const unsigned int * ldb,
234 const std::complex<double> *beta,
235 std::complex<double> * C,
236 const unsigned int * ldc);
237 void
238 cgemm_(const char * transA,
239 const char * transB,
240 const unsigned int * m,
241 const unsigned int * n,
242 const unsigned int * k,
243 const std::complex<float> *alpha,
244 const std::complex<float> *A,
245 const unsigned int * lda,
246 const std::complex<float> *B,
247 const unsigned int * ldb,
248 const std::complex<float> *beta,
249 std::complex<float> * C,
250 const unsigned int * ldc);
251 void
252 zherk_(const char * uplo,
253 const char * trans,
254 const unsigned int * n,
255 const unsigned int * k,
256 const double * alpha,
257 const std::complex<double> *A,
258 const unsigned int * lda,
259 const double * beta,
260 std::complex<double> * C,
261 const unsigned int * ldc);
262 void
263 zcopy_(const unsigned int * n,
264 const std::complex<double> *x,
265 const unsigned int * incx,
266 std::complex<double> * y,
267 const unsigned int * incy);
268
269 void
270 ccopy_(const unsigned int * n,
271 const std::complex<float> *x,
272 const unsigned int * incx,
273 std::complex<float> * y,
274 const unsigned int * incy);
275
276 std::complex<double>
277 zdotc_(const unsigned int * N,
278 const std::complex<double> *X,
279 const unsigned int * INCX,
280 const std::complex<double> *Y,
281 const unsigned int * INCY);
282 double
283 ddot_(const unsigned int *N,
284 const double * X,
285 const unsigned int *INCX,
286 const double * Y,
287 const unsigned int *INCY);
288
289 std::complex<float>
290 cdotc_(const unsigned int * N,
291 const std::complex<float> *X,
292 const unsigned int * INCX,
293 const std::complex<float> *Y,
294 const unsigned int * INCY);
295 float
296 sdot_(const unsigned int *N,
297 const float * X,
298 const unsigned int *INCX,
299 const float * Y,
300 const unsigned int *INCY);
301
302 double
303 dnrm2_(const unsigned int *n, const double *x, const unsigned int *incx);
304
305 double
306 dznrm2_(const unsigned int * n,
307 const std::complex<double> *x,
308 const unsigned int * incx);
309
310 double
311 sasum_(const unsigned int *n, const float *x, const unsigned int *incx);
312
313 double
314 dasum_(const unsigned int *n, const double *x, const unsigned int *incx);
315
316 double
317 scasum_(const unsigned int * n,
318 const std::complex<float> *x,
319 const unsigned int * incx);
320
321 double
322 dzasum_(const unsigned int * n,
323 const std::complex<double> *x,
324 const unsigned int * incx);
325
326 unsigned int
327 isamax_(const unsigned int *n, const float *x, const unsigned int *incx);
328
329 unsigned int
330 idamax_(const unsigned int *n, const double *x, const unsigned int *incx);
331
332 unsigned int
333 icamax_(const unsigned int * n,
334 const std::complex<float> *x,
335 const unsigned int * incx);
336
337 unsigned int
338 izamax_(const unsigned int * n,
339 const std::complex<double> *x,
340 const unsigned int * incx);
341
342 void
343 zaxpy_(const unsigned int * n,
344 const std::complex<double> *alpha,
345 const std::complex<double> *x,
346 const unsigned int * incx,
347 std::complex<double> * y,
348 const unsigned int * incy);
349 void
350 caxpy_(const unsigned int * n,
351 const std::complex<float> *alpha,
352 const std::complex<float> *x,
353 const unsigned int * incx,
354 std::complex<float> * y,
355 const unsigned int * incy);
356
357 //
358 // LAPACK routines.
359 //
360 // mkl_lapack.h declares the same symbols with
361 // incompatible MKL_INT*/MKL_Complex16* parameter types; the #define
362 // _MKL_LAPACK_H_ above pre-empts its include guard so that header's
363 // conflicting declarations never get parsed here, leaving these
364 // (call-site-compatible) prototypes as the only ones in effect.
365 //
366 void
367 dgesv_(int * n,
368 int * nrhs,
369 double *a,
370 int * lda,
371 int * ipiv,
372 double *b,
373 int * ldb,
374 int * info);
375
376 void
377 zgesv_(int * n,
378 int * nrhs,
379 std::complex<double> *a,
380 int * lda,
381 int * ipiv,
382 std::complex<double> *b,
383 int * ldb,
384 int * info);
385
386 void
387 dsysv_(const char *UPLO,
388 const int * n,
389 const int * nrhs,
390 double * a,
391 const int * lda,
392 int * ipiv,
393 double * b,
394 const int * ldb,
395 double * work,
396 const int * lwork,
397 int * info);
398
399 void
400 dsteqr_(const char *jobz,
401 const int * n,
402 double * D,
403 double * E,
404 double * Z,
405 const int * lda,
406 double * work,
407 int * info);
408
409 void
410 zsteqr_(const char * jobz,
411 const int * n,
412 double * D,
413 double * E,
414 std::complex<double> *Z,
415 const int * lda,
416 std::complex<double> *work,
417 int * info);
418
419 void
420 dsyevd_(const char * jobz,
421 const char * uplo,
422 const unsigned int *n,
423 double * A,
424 const unsigned int *lda,
425 double * w,
426 double * work,
427 const unsigned int *lwork,
428 int * iwork,
429 const unsigned int *liwork,
430 int * info);
431 void
432 dsygvx_(const int * itype,
433 const char * jobz,
434 const char * range,
435 const char * uplo,
436 const int * n,
437 double * a,
438 const int * lda,
439 double * b,
440 const int * ldb,
441 const double *vl,
442 const double *vu,
443 const int * il,
444 const int * iu,
445 const double *abstol,
446 int * m,
447 double * w,
448 double * z,
449 const int * ldz,
450 double * work,
451 const int * lwork,
452 int * iwork,
453 int * ifail,
454 int * info);
455
456 void
457 dsygv_(const int * itype,
458 const char *jobz,
459 const char *uplo,
460 const int * n,
461 double * a,
462 const int * lda,
463 double * b,
464 const int * ldb,
465 double * w,
466 double * work,
467 const int * lwork,
468 int * info);
469
470 void
471 zhegv_(const int * itype,
472 const char * jobz,
473 const char * uplo,
474 const int * n,
475 std::complex<double> *a,
476 const int * lda,
477 std::complex<double> *b,
478 const int * ldb,
479 double * w,
480 std::complex<double> *work,
481 const int * lwork,
482 int * info);
483
484 void
485 dsyevx_(const char * jobz,
486 const char * range,
487 const char * uplo,
488 const int * n,
489 double * a,
490 const int * lda,
491 const double *vl,
492 const double *vu,
493 const int * il,
494 const int * iu,
495 const double *abstol,
496 int * m,
497 double * w,
498 double * z,
499 const int * ldz,
500 double * work,
501 const int * lwork,
502 int * iwork,
503 int * ifail,
504 int * info);
505
506 void
507 dsyevr_(const char * jobz,
508 const char * range,
509 const char * uplo,
510 const unsigned int *n,
511 double * A,
512 const unsigned int *lda,
513 const double * vl,
514 const double * vu,
515 const unsigned int *il,
516 const unsigned int *iu,
517 const double * abstol,
518 const unsigned int *m,
519 double * w,
520 double * Z,
521 const unsigned int *ldz,
522 unsigned int * isuppz,
523 double * work,
524 const int * lwork,
525 int * iwork,
526 const int * liwork,
527 int * info);
528
529 void
530 zheevd_(const char * jobz,
531 const char * uplo,
532 const unsigned int * n,
533 std::complex<double> *A,
534 const unsigned int * lda,
535 double * w,
536 std::complex<double> *work,
537 const unsigned int * lwork,
538 double * rwork,
539 const unsigned int * lrwork,
540 int * iwork,
541 const unsigned int * liwork,
542 int * info);
543 void
544 zheevr_(const char * jobz,
545 const char * range,
546 const char * uplo,
547 const unsigned int * n,
548 std::complex<double> *A,
549 const unsigned int * lda,
550 const double * vl,
551 const double * vu,
552 const unsigned int * il,
553 const unsigned int * iu,
554 const double * abstol,
555 const unsigned int * m,
556 double * w,
557 std::complex<double> *Z,
558 const unsigned int * ldz,
559 unsigned int * isuppz,
560 std::complex<double> *work,
561 const int * lwork,
562 double * rwork,
563 const int * lrwork,
564 int * iwork,
565 const int * liwork,
566 int * info);
567
568 void
569 dpotrf_(const char * uplo,
570 const unsigned int *n,
571 double * a,
572 const unsigned int *lda,
573 int * info);
574 void
575 dpotri_(const char * uplo,
576 const unsigned int *n,
577 double * A,
578 const unsigned int *lda,
579 int * info);
580
581 void
582 zpotrf_(const char * uplo,
583 const unsigned int * n,
584 std::complex<double> *a,
585 const unsigned int * lda,
586 int * info);
587 void
588 dtrtri_(const char * uplo,
589 const char * diag,
590 const unsigned int *n,
591 double * a,
592 const unsigned int *lda,
593 int * info);
594 void
595 ztrtri_(const char * uplo,
596 const char * diag,
597 const unsigned int * n,
598 std::complex<double> *a,
599 const unsigned int * lda,
600 int * info);
601
602 // LU decomoposition of a general matrix
603 void
604 dgetrf_(int *M, int *N, double *A, int *lda, int *IPIV, int *INFO);
605
606 // generate inverse of a matrix given its LU decomposition
607 void
608 dgetri_(int * N,
609 double *A,
610 int * lda,
611 int * IPIV,
612 double *WORK,
613 int * lwork,
614 int * INFO);
615 // LU decomoposition of a general matrix
616 void
617 zgetrf_(int * M,
618 int * N,
619 std::complex<double> *A,
620 int * lda,
621 int * IPIV,
622 int * INFO);
623
624 // generate inverse of a matrix given its LU decomposition
625 void
626 zgetri_(int * N,
627 std::complex<double> *A,
628 int * lda,
629 int * IPIV,
630 std::complex<double> *WORK,
631 int * lwork,
632 int * INFO);
633 }
634 } // namespace linearAlgebra
635} // namespace dftefe
636#endif
void zdscal_(const unsigned int *n, const double *alpha, std::complex< double > *x, const unsigned int *inc)
unsigned int izamax_(const unsigned int *n, const std::complex< double > *x, const unsigned int *incx)
double dasum_(const unsigned int *n, const double *x, const unsigned int *incx)
void dgetri_(int *N, double *A, int *lda, int *IPIV, double *WORK, int *lwork, int *INFO)
void zgemm_(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int *lda, const std::complex< double > *B, const unsigned int *ldb, const std::complex< double > *beta, std::complex< double > *C, const unsigned int *ldc)
void zcopy_(const unsigned int *n, const std::complex< double > *x, const unsigned int *incx, std::complex< double > *y, const unsigned int *incy)
void dsygvx_(const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, double *a, const int *lda, double *b, const int *ldb, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, const int *lwork, int *iwork, int *ifail, int *info)
void zscal_(const unsigned int *n, const std::complex< double > *alpha, std::complex< double > *x, const unsigned int *inc)
void dtrtri_(const char *uplo, const char *diag, const unsigned int *n, double *a, const unsigned int *lda, int *info)
double dlamch_(const char *cmach)
void dgemv_(const char *TRANS, const unsigned int *M, const unsigned int *N, const double *alpha, const double *A, const unsigned int *LDA, const double *X, const unsigned int *INCX, const double *beta, double *C, const unsigned int *INCY)
void dsyr_(const char *uplo, const unsigned int *n, const double *alpha, const double *X, const unsigned int *incx, double *A, const unsigned int *lda)
void zaxpy_(const unsigned int *n, const std::complex< double > *alpha, const std::complex< double > *x, const unsigned int *incx, std::complex< double > *y, const unsigned int *incy)
void saxpy_(const unsigned int *n, const float *alpha, const float *x, const unsigned int *incx, float *y, const unsigned int *incy)
double ddot_(const unsigned int *N, const double *X, const unsigned int *INCX, const double *Y, const unsigned int *INCY)
void zherk_(const char *uplo, const char *trans, const unsigned int *n, const unsigned int *k, const double *alpha, const std::complex< double > *A, const unsigned int *lda, const double *beta, std::complex< double > *C, const unsigned int *ldc)
double dzasum_(const unsigned int *n, const std::complex< double > *x, const unsigned int *incx)
void dsygv_(const int *itype, const char *jobz, const char *uplo, const int *n, double *a, const int *lda, double *b, const int *ldb, double *w, double *work, const int *lwork, int *info)
void scopy_(const unsigned int *n, const float *x, const unsigned int *incx, float *y, const unsigned int *incy)
unsigned int isamax_(const unsigned int *n, const float *x, const unsigned int *incx)
std::complex< float > cdotc_(const unsigned int *N, const std::complex< float > *X, const unsigned int *INCX, const std::complex< float > *Y, const unsigned int *INCY)
void cgemv_(const char *TRANS, const unsigned int *M, const unsigned int *N, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int *LDA, const std::complex< float > *X, const unsigned int *INCX, const std::complex< float > *beta, std::complex< float > *C, const unsigned int *INCY)
void dcopy_(const unsigned int *n, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
void dpotrf_(const char *uplo, const unsigned int *n, double *a, const unsigned int *lda, int *info)
float sdot_(const unsigned int *N, const float *X, const unsigned int *INCX, const float *Y, const unsigned int *INCY)
void dsysv_(const char *UPLO, const int *n, const int *nrhs, double *a, const int *lda, int *ipiv, double *b, const int *ldb, double *work, const int *lwork, int *info)
void zgemv_(const char *TRANS, const unsigned int *M, const unsigned int *N, const std::complex< double > *alpha, const std::complex< double > *A, const unsigned int *LDA, const std::complex< double > *X, const unsigned int *INCX, const std::complex< double > *beta, std::complex< double > *C, const unsigned int *INCY)
void dsyevr_(const char *jobz, const char *range, const char *uplo, const unsigned int *n, double *A, const unsigned int *lda, const double *vl, const double *vu, const unsigned int *il, const unsigned int *iu, const double *abstol, const unsigned int *m, double *w, double *Z, const unsigned int *ldz, unsigned int *isuppz, double *work, const int *lwork, int *iwork, const int *liwork, int *info)
unsigned int idamax_(const unsigned int *n, const double *x, const unsigned int *incx)
void zheevd_(const char *jobz, const char *uplo, const unsigned int *n, std::complex< double > *A, const unsigned int *lda, double *w, std::complex< double > *work, const unsigned int *lwork, double *rwork, const unsigned int *lrwork, int *iwork, const unsigned int *liwork, int *info)
void dsyrk_(const char *uplo, const char *trans, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *beta, double *C, const unsigned int *ldc)
void dsteqr_(const char *jobz, const int *n, double *D, double *E, double *Z, const int *lda, double *work, int *info)
void dsymv_(const char *UPLO, const unsigned int *N, const double *alpha, const double *A, const unsigned int *LDA, const double *X, const unsigned int *INCX, const double *beta, double *C, const unsigned int *INCY)
void dsyevx_(const char *jobz, const char *range, const char *uplo, const int *n, double *a, const int *lda, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, const int *lwork, int *iwork, int *ifail, int *info)
double scasum_(const unsigned int *n, const std::complex< float > *x, const unsigned int *incx)
void dscal_(const unsigned int *n, const double *alpha, double *x, const unsigned int *inc)
void dgetrf_(int *M, int *N, double *A, int *lda, int *IPIV, int *INFO)
void caxpy_(const unsigned int *n, const std::complex< float > *alpha, const std::complex< float > *x, const unsigned int *incx, std::complex< float > *y, const unsigned int *incy)
void sgemv_(const char *TRANS, const unsigned int *M, const unsigned int *N, const float *alpha, const float *A, const unsigned int *LDA, const float *X, const unsigned int *INCX, const float *beta, float *C, const unsigned int *INCY)
void ccopy_(const unsigned int *n, const std::complex< float > *x, const unsigned int *incx, std::complex< float > *y, const unsigned int *incy)
std::complex< double > zdotc_(const unsigned int *N, const std::complex< double > *X, const unsigned int *INCX, const std::complex< double > *Y, const unsigned int *INCY)
void zgetrf_(int *M, int *N, std::complex< double > *A, int *lda, int *IPIV, int *INFO)
void sgemm_(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const float *alpha, const float *A, const unsigned int *lda, const float *B, const unsigned int *ldb, const float *beta, float *C, const unsigned int *ldc)
void cgemm_(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const std::complex< float > *alpha, const std::complex< float > *A, const unsigned int *lda, const std::complex< float > *B, const unsigned int *ldb, const std::complex< float > *beta, std::complex< float > *C, const unsigned int *ldc)
void zheevr_(const char *jobz, const char *range, const char *uplo, const unsigned int *n, std::complex< double > *A, const unsigned int *lda, const double *vl, const double *vu, const unsigned int *il, const unsigned int *iu, const double *abstol, const unsigned int *m, double *w, std::complex< double > *Z, const unsigned int *ldz, unsigned int *isuppz, std::complex< double > *work, const int *lwork, double *rwork, const int *lrwork, int *iwork, const int *liwork, int *info)
double dnrm2_(const unsigned int *n, const double *x, const unsigned int *incx)
void dgesv_(int *n, int *nrhs, double *a, int *lda, int *ipiv, double *b, int *ldb, int *info)
void dsyevd_(const char *jobz, const char *uplo, const unsigned int *n, double *A, const unsigned int *lda, double *w, double *work, const unsigned int *lwork, int *iwork, const unsigned int *liwork, int *info)
void dpotri_(const char *uplo, const unsigned int *n, double *A, const unsigned int *lda, int *info)
void ztrtri_(const char *uplo, const char *diag, const unsigned int *n, std::complex< double > *a, const unsigned int *lda, int *info)
double sasum_(const unsigned int *n, const float *x, const unsigned int *incx)
unsigned int icamax_(const unsigned int *n, const std::complex< float > *x, const unsigned int *incx)
void zsteqr_(const char *jobz, const int *n, double *D, double *E, std::complex< double > *Z, const int *lda, std::complex< double > *work, int *info)
void dsyr2_(const char *uplo, const unsigned int *n, const double *alpha, const double *x, const unsigned int *incx, const double *y, const unsigned int *incy, double *a, const unsigned int *lda)
void zgetri_(int *N, std::complex< double > *A, int *lda, int *IPIV, std::complex< double > *WORK, int *lwork, int *INFO)
void zgesv_(int *n, int *nrhs, std::complex< double > *a, int *lda, int *ipiv, std::complex< double > *b, int *ldb, int *info)
void zhegv_(const int *itype, const char *jobz, const char *uplo, const int *n, std::complex< double > *a, const int *lda, std::complex< double > *b, const int *ldb, double *w, std::complex< double > *work, const int *lwork, int *info)
void zpotrf_(const char *uplo, const unsigned int *n, std::complex< double > *a, const unsigned int *lda, int *info)
void daxpy_(const unsigned int *n, const double *alpha, const double *x, const unsigned int *incx, double *y, const unsigned int *incy)
double dznrm2_(const unsigned int *n, const std::complex< double > *x, const unsigned int *incx)
void sscal_(const unsigned int *n, const float *alpha, float *x, const unsigned int *inc)
void dgemm_(const char *transA, const char *transB, const unsigned int *m, const unsigned int *n, const unsigned int *k, const double *alpha, const double *A, const unsigned int *lda, const double *B, const unsigned int *ldb, const double *beta, double *C, const unsigned int *ldc)
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
@ LDA
Definition: MatrixFreeDevice.h:36