1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2005 - 2018 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 
17 #ifndef dealii_lapack_templates_h
18 #define dealii_lapack_templates_h
19 
20 #include <deal.II/base/config.h>
21 
22 #include <deal.II/lac/lapack_support.h>
23 
24 #ifdef DEAL_II_HAVE_FP_EXCEPTIONS
25 #  include <cfenv>
26 #endif
27 
28 extern "C"
29 {
30   void
31   saxpy_(const dealii::types::blas_int *n,
32          const float *                  sa,
33          const float *                  sx,
34          const dealii::types::blas_int *incx,
35          float *                        sy,
36          const dealii::types::blas_int *incy);
37 
38   void
39   daxpy_(const dealii::types::blas_int *n,
40          const double *                 da,
41          const double *                 dx,
42          const dealii::types::blas_int *incx,
43          double *                       dy,
44          const dealii::types::blas_int *incy);
45 
46   void
47   caxpy_(const dealii::types::blas_int *n,
48          const std::complex<float> *    ca,
49          const std::complex<float> *    cx,
50          const dealii::types::blas_int *incx,
51          std::complex<float> *          cy,
52          const dealii::types::blas_int *incy);
53 
54   void
55   zaxpy_(const dealii::types::blas_int *n,
56          const std::complex<double> *   za,
57          const std::complex<double> *   zx,
58          const dealii::types::blas_int *incx,
59          std::complex<double> *         zy,
60          const dealii::types::blas_int *incy);
61 
62   void
63   sgeev_(const char *                   jobvl,
64          const char *                   jobvr,
65          const dealii::types::blas_int *n,
66          float *                        a,
67          const dealii::types::blas_int *lda,
68          float *                        wr,
69          float *                        wi,
70          float *                        vl,
71          const dealii::types::blas_int *ldvl,
72          float *                        vr,
73          const dealii::types::blas_int *ldvr,
74          float *                        work,
75          const dealii::types::blas_int *lwork,
76          dealii::types::blas_int *      info);
77 
78   void
79   dgeev_(const char *                   jobvl,
80          const char *                   jobvr,
81          const dealii::types::blas_int *n,
82          double *                       a,
83          const dealii::types::blas_int *lda,
84          double *                       wr,
85          double *                       wi,
86          double *                       vl,
87          const dealii::types::blas_int *ldvl,
88          double *                       vr,
89          const dealii::types::blas_int *ldvr,
90          double *                       work,
91          const dealii::types::blas_int *lwork,
92          dealii::types::blas_int *      info);
93 
94   void
95   cgeev_(const char *                   jobvl,
96          const char *                   jobvr,
97          const dealii::types::blas_int *n,
98          std::complex<float> *          a,
99          const dealii::types::blas_int *lda,
100          std::complex<float> *          w,
101          std::complex<float> *          vl,
102          const dealii::types::blas_int *ldvl,
103          std::complex<float> *          vr,
104          const dealii::types::blas_int *ldvr,
105          std::complex<float> *          work,
106          const dealii::types::blas_int *lwork,
107          float *                        rwork,
108          dealii::types::blas_int *      info);
109 
110   void
111   zgeev_(const char *                   jobvl,
112          const char *                   jobvr,
113          const dealii::types::blas_int *n,
114          std::complex<double> *         a,
115          const dealii::types::blas_int *lda,
116          std::complex<double> *         w,
117          std::complex<double> *         vl,
118          const dealii::types::blas_int *ldvl,
119          std::complex<double> *         vr,
120          const dealii::types::blas_int *ldvr,
121          std::complex<double> *         work,
122          const dealii::types::blas_int *lwork,
123          double *                       rwork,
124          dealii::types::blas_int *      info);
125 
126   void
127   sgeevx_(const char *                   balanc,
128           const char *                   jobvl,
129           const char *                   jobvr,
130           const char *                   sense,
131           const dealii::types::blas_int *n,
132           float *                        a,
133           const dealii::types::blas_int *lda,
134           float *                        wr,
135           float *                        wi,
136           float *                        vl,
137           const dealii::types::blas_int *ldvl,
138           float *                        vr,
139           const dealii::types::blas_int *ldvr,
140           dealii::types::blas_int *      ilo,
141           dealii::types::blas_int *      ihi,
142           float *                        scale,
143           float *                        abnrm,
144           float *                        rconde,
145           float *                        rcondv,
146           float *                        work,
147           const dealii::types::blas_int *lwork,
148           dealii::types::blas_int *      iwork,
149           dealii::types::blas_int *      info);
150 
151   void
152   dgeevx_(const char *                   balanc,
153           const char *                   jobvl,
154           const char *                   jobvr,
155           const char *                   sense,
156           const dealii::types::blas_int *n,
157           double *                       a,
158           const dealii::types::blas_int *lda,
159           double *                       wr,
160           double *                       wi,
161           double *                       vl,
162           const dealii::types::blas_int *ldvl,
163           double *                       vr,
164           const dealii::types::blas_int *ldvr,
165           dealii::types::blas_int *      ilo,
166           dealii::types::blas_int *      ihi,
167           double *                       scale,
168           double *                       abnrm,
169           double *                       rconde,
170           double *                       rcondv,
171           double *                       work,
172           const dealii::types::blas_int *lwork,
173           dealii::types::blas_int *      iwork,
174           dealii::types::blas_int *      info);
175 
176   void
177   cgeevx_(const char *                   balanc,
178           const char *                   jobvl,
179           const char *                   jobvr,
180           const char *                   sense,
181           const dealii::types::blas_int *n,
182           std::complex<float> *          a,
183           const dealii::types::blas_int *lda,
184           std::complex<float> *          w,
185           std::complex<float> *          vl,
186           const dealii::types::blas_int *ldvl,
187           std::complex<float> *          vr,
188           const dealii::types::blas_int *ldvr,
189           dealii::types::blas_int *      ilo,
190           dealii::types::blas_int *      ihi,
191           float *                        scale,
192           float *                        abnrm,
193           float *                        rconde,
194           float *                        rcondv,
195           std::complex<float> *          work,
196           const dealii::types::blas_int *lwork,
197           float *                        rwork,
198           dealii::types::blas_int *      info);
199 
200   void
201   zgeevx_(const char *                   balanc,
202           const char *                   jobvl,
203           const char *                   jobvr,
204           const char *                   sense,
205           const dealii::types::blas_int *n,
206           std::complex<double> *         a,
207           const dealii::types::blas_int *lda,
208           std::complex<double> *         w,
209           std::complex<double> *         vl,
210           const dealii::types::blas_int *ldvl,
211           std::complex<double> *         vr,
212           const dealii::types::blas_int *ldvr,
213           dealii::types::blas_int *      ilo,
214           dealii::types::blas_int *      ihi,
215           double *                       scale,
216           double *                       abnrm,
217           double *                       rconde,
218           double *                       rcondv,
219           std::complex<double> *         work,
220           const dealii::types::blas_int *lwork,
221           double *                       rwork,
222           dealii::types::blas_int *      info);
223 
224   void
225   sgelsd_(const dealii::types::blas_int *m,
226           const dealii::types::blas_int *n,
227           const dealii::types::blas_int *nrhs,
228           float *                        a,
229           const dealii::types::blas_int *lda,
230           float *                        b,
231           const dealii::types::blas_int *ldb,
232           float *                        s,
233           const float *                  rcond,
234           dealii::types::blas_int *      rank,
235           float *                        work,
236           const dealii::types::blas_int *lwork,
237           dealii::types::blas_int *      iwork,
238           dealii::types::blas_int *      info);
239 
240   void
241   dgelsd_(const dealii::types::blas_int *m,
242           const dealii::types::blas_int *n,
243           const dealii::types::blas_int *nrhs,
244           double *                       a,
245           const dealii::types::blas_int *lda,
246           double *                       b,
247           const dealii::types::blas_int *ldb,
248           double *                       s,
249           const double *                 rcond,
250           dealii::types::blas_int *      rank,
251           double *                       work,
252           const dealii::types::blas_int *lwork,
253           dealii::types::blas_int *      iwork,
254           dealii::types::blas_int *      info);
255 
256   void
257   cgelsd_(const dealii::types::blas_int *m,
258           const dealii::types::blas_int *n,
259           const dealii::types::blas_int *nrhs,
260           std::complex<float> *          a,
261           const dealii::types::blas_int *lda,
262           std::complex<float> *          b,
263           const dealii::types::blas_int *ldb,
264           float *                        s,
265           const float *                  rcond,
266           dealii::types::blas_int *      rank,
267           std::complex<float> *          work,
268           const dealii::types::blas_int *lwork,
269           float *                        rwork,
270           dealii::types::blas_int *      iwork,
271           dealii::types::blas_int *      info);
272 
273   void
274   zgelsd_(const dealii::types::blas_int *m,
275           const dealii::types::blas_int *n,
276           const dealii::types::blas_int *nrhs,
277           std::complex<double> *         a,
278           const dealii::types::blas_int *lda,
279           std::complex<double> *         b,
280           const dealii::types::blas_int *ldb,
281           double *                       s,
282           const double *                 rcond,
283           dealii::types::blas_int *      rank,
284           std::complex<double> *         work,
285           const dealii::types::blas_int *lwork,
286           double *                       rwork,
287           dealii::types::blas_int *      iwork,
288           dealii::types::blas_int *      info);
289 
290   void
291   sgemm_(const char *                   transa,
292          const char *                   transb,
293          const dealii::types::blas_int *m,
294          const dealii::types::blas_int *n,
295          const dealii::types::blas_int *k,
296          const float *                  alpha,
297          const float *                  a,
298          const dealii::types::blas_int *lda,
299          const float *                  b,
300          const dealii::types::blas_int *ldb,
301          const float *                  beta,
302          float *                        c,
303          const dealii::types::blas_int *ldc);
304 
305   void
306   dgemm_(const char *                   transa,
307          const char *                   transb,
308          const dealii::types::blas_int *m,
309          const dealii::types::blas_int *n,
310          const dealii::types::blas_int *k,
311          const double *                 alpha,
312          const double *                 a,
313          const dealii::types::blas_int *lda,
314          const double *                 b,
315          const dealii::types::blas_int *ldb,
316          const double *                 beta,
317          double *                       c,
318          const dealii::types::blas_int *ldc);
319 
320   void
321   cgemm_(const char *                   transa,
322          const char *                   transb,
323          const dealii::types::blas_int *m,
324          const dealii::types::blas_int *n,
325          const dealii::types::blas_int *k,
326          const std::complex<float> *    alpha,
327          const std::complex<float> *    a,
328          const dealii::types::blas_int *lda,
329          const std::complex<float> *    b,
330          const dealii::types::blas_int *ldb,
331          const std::complex<float> *    beta,
332          std::complex<float> *          c,
333          const dealii::types::blas_int *ldc);
334 
335   void
336   zgemm_(const char *                   transa,
337          const char *                   transb,
338          const dealii::types::blas_int *m,
339          const dealii::types::blas_int *n,
340          const dealii::types::blas_int *k,
341          const std::complex<double> *   alpha,
342          const std::complex<double> *   a,
343          const dealii::types::blas_int *lda,
344          const std::complex<double> *   b,
345          const dealii::types::blas_int *ldb,
346          const std::complex<double> *   beta,
347          std::complex<double> *         c,
348          const dealii::types::blas_int *ldc);
349 
350   void
351   sgemv_(const char *                   trans,
352          const dealii::types::blas_int *m,
353          const dealii::types::blas_int *n,
354          const float *                  alpha,
355          const float *                  a,
356          const dealii::types::blas_int *lda,
357          const float *                  x,
358          const dealii::types::blas_int *incx,
359          const float *                  beta,
360          float *                        y,
361          const dealii::types::blas_int *incy);
362 
363   void
364   dgemv_(const char *                   trans,
365          const dealii::types::blas_int *m,
366          const dealii::types::blas_int *n,
367          const double *                 alpha,
368          const double *                 a,
369          const dealii::types::blas_int *lda,
370          const double *                 x,
371          const dealii::types::blas_int *incx,
372          const double *                 beta,
373          double *                       y,
374          const dealii::types::blas_int *incy);
375 
376   void
377   cgemv_(const char *                   trans,
378          const dealii::types::blas_int *m,
379          const dealii::types::blas_int *n,
380          const std::complex<float> *    alpha,
381          const std::complex<float> *    a,
382          const dealii::types::blas_int *lda,
383          const std::complex<float> *    x,
384          const dealii::types::blas_int *incx,
385          const std::complex<float> *    beta,
386          std::complex<float> *          y,
387          const dealii::types::blas_int *incy);
388 
389   void
390   zgemv_(const char *                   trans,
391          const dealii::types::blas_int *m,
392          const dealii::types::blas_int *n,
393          const std::complex<double> *   alpha,
394          const std::complex<double> *   a,
395          const dealii::types::blas_int *lda,
396          const std::complex<double> *   x,
397          const dealii::types::blas_int *incx,
398          const std::complex<double> *   beta,
399          std::complex<double> *         y,
400          const dealii::types::blas_int *incy);
401 
402   void
403   sgeqrf_(const dealii::types::blas_int *m,
404           const dealii::types::blas_int *n,
405           float *                        a,
406           const dealii::types::blas_int *lda,
407           float *                        tau,
408           float *                        work,
409           const dealii::types::blas_int *lwork,
410           dealii::types::blas_int *      info);
411 
412   void
413   dgeqrf_(const dealii::types::blas_int *m,
414           const dealii::types::blas_int *n,
415           double *                       a,
416           const dealii::types::blas_int *lda,
417           double *                       tau,
418           double *                       work,
419           const dealii::types::blas_int *lwork,
420           dealii::types::blas_int *      info);
421 
422   void
423   cgeqrf_(const dealii::types::blas_int *m,
424           const dealii::types::blas_int *n,
425           std::complex<float> *          a,
426           const dealii::types::blas_int *lda,
427           std::complex<float> *          tau,
428           std::complex<float> *          work,
429           const dealii::types::blas_int *lwork,
430           dealii::types::blas_int *      info);
431 
432   void
433   zgeqrf_(const dealii::types::blas_int *m,
434           const dealii::types::blas_int *n,
435           std::complex<double> *         a,
436           const dealii::types::blas_int *lda,
437           std::complex<double> *         tau,
438           std::complex<double> *         work,
439           const dealii::types::blas_int *lwork,
440           dealii::types::blas_int *      info);
441 
442   void
443   sgesdd_(const char *                   jobz,
444           const dealii::types::blas_int *m,
445           const dealii::types::blas_int *n,
446           float *                        a,
447           const dealii::types::blas_int *lda,
448           float *                        s,
449           float *                        u,
450           const dealii::types::blas_int *ldu,
451           float *                        vt,
452           const dealii::types::blas_int *ldvt,
453           float *                        work,
454           const dealii::types::blas_int *lwork,
455           dealii::types::blas_int *      iwork,
456           dealii::types::blas_int *      info);
457 
458   void
459   dgesdd_(const char *                   jobz,
460           const dealii::types::blas_int *m,
461           const dealii::types::blas_int *n,
462           double *                       a,
463           const dealii::types::blas_int *lda,
464           double *                       s,
465           double *                       u,
466           const dealii::types::blas_int *ldu,
467           double *                       vt,
468           const dealii::types::blas_int *ldvt,
469           double *                       work,
470           const dealii::types::blas_int *lwork,
471           dealii::types::blas_int *      iwork,
472           dealii::types::blas_int *      info);
473 
474   void
475   cgesdd_(const char *                   jobz,
476           const dealii::types::blas_int *m,
477           const dealii::types::blas_int *n,
478           std::complex<float> *          a,
479           const dealii::types::blas_int *lda,
480           float *                        s,
481           std::complex<float> *          u,
482           const dealii::types::blas_int *ldu,
483           std::complex<float> *          vt,
484           const dealii::types::blas_int *ldvt,
485           std::complex<float> *          work,
486           const dealii::types::blas_int *lwork,
487           float *                        rwork,
488           dealii::types::blas_int *      iwork,
489           dealii::types::blas_int *      info);
490 
491   void
492   zgesdd_(const char *                   jobz,
493           const dealii::types::blas_int *m,
494           const dealii::types::blas_int *n,
495           std::complex<double> *         a,
496           const dealii::types::blas_int *lda,
497           double *                       s,
498           std::complex<double> *         u,
499           const dealii::types::blas_int *ldu,
500           std::complex<double> *         vt,
501           const dealii::types::blas_int *ldvt,
502           std::complex<double> *         work,
503           const dealii::types::blas_int *lwork,
504           double *                       rwork,
505           dealii::types::blas_int *      iwork,
506           dealii::types::blas_int *      info);
507 
508   void
509   sgesvd_(const char *                   jobu,
510           const char *                   jobvt,
511           const dealii::types::blas_int *m,
512           const dealii::types::blas_int *n,
513           float *                        a,
514           const dealii::types::blas_int *lda,
515           float *                        s,
516           float *                        u,
517           const dealii::types::blas_int *ldu,
518           float *                        vt,
519           const dealii::types::blas_int *ldvt,
520           float *                        work,
521           const dealii::types::blas_int *lwork,
522           dealii::types::blas_int *      info);
523 
524   void
525   dgesvd_(const char *                   jobu,
526           const char *                   jobvt,
527           const dealii::types::blas_int *m,
528           const dealii::types::blas_int *n,
529           double *                       a,
530           const dealii::types::blas_int *lda,
531           double *                       s,
532           double *                       u,
533           const dealii::types::blas_int *ldu,
534           double *                       vt,
535           const dealii::types::blas_int *ldvt,
536           double *                       work,
537           const dealii::types::blas_int *lwork,
538           dealii::types::blas_int *      info);
539 
540   void
541   cgesvd_(const char *                   jobu,
542           const char *                   jobvt,
543           const dealii::types::blas_int *m,
544           const dealii::types::blas_int *n,
545           std::complex<float> *          a,
546           const dealii::types::blas_int *lda,
547           float *                        s,
548           std::complex<float> *          u,
549           const dealii::types::blas_int *ldu,
550           std::complex<float> *          vt,
551           const dealii::types::blas_int *ldvt,
552           std::complex<float> *          work,
553           const dealii::types::blas_int *lwork,
554           float *                        rwork,
555           dealii::types::blas_int *      info);
556 
557   void
558   zgesvd_(const char *                   jobu,
559           const char *                   jobvt,
560           const dealii::types::blas_int *m,
561           const dealii::types::blas_int *n,
562           std::complex<double> *         a,
563           const dealii::types::blas_int *lda,
564           double *                       s,
565           std::complex<double> *         u,
566           const dealii::types::blas_int *ldu,
567           std::complex<double> *         vt,
568           const dealii::types::blas_int *ldvt,
569           std::complex<double> *         work,
570           const dealii::types::blas_int *lwork,
571           double *                       rwork,
572           dealii::types::blas_int *      info);
573 
574   void
575   sgetrf_(const dealii::types::blas_int *m,
576           const dealii::types::blas_int *n,
577           float *                        a,
578           const dealii::types::blas_int *lda,
579           dealii::types::blas_int *      ipiv,
580           dealii::types::blas_int *      info);
581 
582   void
583   dgetrf_(const dealii::types::blas_int *m,
584           const dealii::types::blas_int *n,
585           double *                       a,
586           const dealii::types::blas_int *lda,
587           dealii::types::blas_int *      ipiv,
588           dealii::types::blas_int *      info);
589 
590   void
591   cgetrf_(const dealii::types::blas_int *m,
592           const dealii::types::blas_int *n,
593           std::complex<float> *          a,
594           const dealii::types::blas_int *lda,
595           dealii::types::blas_int *      ipiv,
596           dealii::types::blas_int *      info);
597 
598   void
599   zgetrf_(const dealii::types::blas_int *m,
600           const dealii::types::blas_int *n,
601           std::complex<double> *         a,
602           const dealii::types::blas_int *lda,
603           dealii::types::blas_int *      ipiv,
604           dealii::types::blas_int *      info);
605 
606   void
607   sgetri_(const dealii::types::blas_int *n,
608           float *                        a,
609           const dealii::types::blas_int *lda,
610           const dealii::types::blas_int *ipiv,
611           float *                        work,
612           const dealii::types::blas_int *lwork,
613           dealii::types::blas_int *      info);
614 
615   void
616   dgetri_(const dealii::types::blas_int *n,
617           double *                       a,
618           const dealii::types::blas_int *lda,
619           const dealii::types::blas_int *ipiv,
620           double *                       work,
621           const dealii::types::blas_int *lwork,
622           dealii::types::blas_int *      info);
623 
624   void
625   cgetri_(const dealii::types::blas_int *n,
626           std::complex<float> *          a,
627           const dealii::types::blas_int *lda,
628           const dealii::types::blas_int *ipiv,
629           std::complex<float> *          work,
630           const dealii::types::blas_int *lwork,
631           dealii::types::blas_int *      info);
632 
633   void
634   zgetri_(const dealii::types::blas_int *n,
635           std::complex<double> *         a,
636           const dealii::types::blas_int *lda,
637           const dealii::types::blas_int *ipiv,
638           std::complex<double> *         work,
639           const dealii::types::blas_int *lwork,
640           dealii::types::blas_int *      info);
641 
642   void
643   sgetrs_(const char *                   trans,
644           const dealii::types::blas_int *n,
645           const dealii::types::blas_int *nrhs,
646           const float *                  a,
647           const dealii::types::blas_int *lda,
648           const dealii::types::blas_int *ipiv,
649           float *                        b,
650           const dealii::types::blas_int *ldb,
651           dealii::types::blas_int *      info);
652 
653   void
654   dgetrs_(const char *                   trans,
655           const dealii::types::blas_int *n,
656           const dealii::types::blas_int *nrhs,
657           const double *                 a,
658           const dealii::types::blas_int *lda,
659           const dealii::types::blas_int *ipiv,
660           double *                       b,
661           const dealii::types::blas_int *ldb,
662           dealii::types::blas_int *      info);
663 
664   void
665   cgetrs_(const char *                   trans,
666           const dealii::types::blas_int *n,
667           const dealii::types::blas_int *nrhs,
668           const std::complex<float> *    a,
669           const dealii::types::blas_int *lda,
670           const dealii::types::blas_int *ipiv,
671           std::complex<float> *          b,
672           const dealii::types::blas_int *ldb,
673           dealii::types::blas_int *      info);
674 
675   void
676   zgetrs_(const char *                   trans,
677           const dealii::types::blas_int *n,
678           const dealii::types::blas_int *nrhs,
679           const std::complex<double> *   a,
680           const dealii::types::blas_int *lda,
681           const dealii::types::blas_int *ipiv,
682           std::complex<double> *         b,
683           const dealii::types::blas_int *ldb,
684           dealii::types::blas_int *      info);
685 
686   float
687   slamch_(const char *cmach);
688 
689   double
690   dlamch_(const char *cmach);
691 
692   float
693   slange_(const char *                   norm,
694           const dealii::types::blas_int *m,
695           const dealii::types::blas_int *n,
696           const float *                  a,
697           const dealii::types::blas_int *lda,
698           float *                        work);
699 
700   double
701   dlange_(const char *                   norm,
702           const dealii::types::blas_int *m,
703           const dealii::types::blas_int *n,
704           const double *                 a,
705           const dealii::types::blas_int *lda,
706           double *                       work);
707 
708   float
709   clange_(const char *                   norm,
710           const dealii::types::blas_int *m,
711           const dealii::types::blas_int *n,
712           const std::complex<float> *    a,
713           const dealii::types::blas_int *lda,
714           float *                        work);
715 
716   double
717   zlange_(const char *                   norm,
718           const dealii::types::blas_int *m,
719           const dealii::types::blas_int *n,
720           const std::complex<double> *   a,
721           const dealii::types::blas_int *lda,
722           double *                       work);
723 
724   float
725   slansy_(const char *                   norm,
726           const char *                   uplo,
727           const dealii::types::blas_int *n,
728           const float *                  a,
729           const dealii::types::blas_int *lda,
730           float *                        work);
731 
732   double
733   dlansy_(const char *                   norm,
734           const char *                   uplo,
735           const dealii::types::blas_int *n,
736           const double *                 a,
737           const dealii::types::blas_int *lda,
738           double *                       work);
739 
740   float
741   clansy_(const char *                   norm,
742           const char *                   uplo,
743           const dealii::types::blas_int *n,
744           const std::complex<float> *    a,
745           const dealii::types::blas_int *lda,
746           float *                        work);
747 
748   double
749   zlansy_(const char *                   norm,
750           const char *                   uplo,
751           const dealii::types::blas_int *n,
752           const std::complex<double> *   a,
753           const dealii::types::blas_int *lda,
754           double *                       work);
755 
756   void
757   slascl_(const char *                   type,
758           const dealii::types::blas_int *kl,
759           const dealii::types::blas_int *ku,
760           const float *                  cfrom,
761           const float *                  cto,
762           const dealii::types::blas_int *m,
763           const dealii::types::blas_int *n,
764           float *                        a,
765           const dealii::types::blas_int *lda,
766           dealii::types::blas_int *      info);
767 
768   void
769   dlascl_(const char *                   type,
770           const dealii::types::blas_int *kl,
771           const dealii::types::blas_int *ku,
772           const double *                 cfrom,
773           const double *                 cto,
774           const dealii::types::blas_int *m,
775           const dealii::types::blas_int *n,
776           double *                       a,
777           const dealii::types::blas_int *lda,
778           dealii::types::blas_int *      info);
779 
780   void
781   clascl_(const char *                   type,
782           const dealii::types::blas_int *kl,
783           const dealii::types::blas_int *ku,
784           const float *                  cfrom,
785           const float *                  cto,
786           const dealii::types::blas_int *m,
787           const dealii::types::blas_int *n,
788           std::complex<float> *          a,
789           const dealii::types::blas_int *lda,
790           dealii::types::blas_int *      info);
791 
792   void
793   zlascl_(const char *                   type,
794           const dealii::types::blas_int *kl,
795           const dealii::types::blas_int *ku,
796           const double *                 cfrom,
797           const double *                 cto,
798           const dealii::types::blas_int *m,
799           const dealii::types::blas_int *n,
800           std::complex<double> *         a,
801           const dealii::types::blas_int *lda,
802           dealii::types::blas_int *      info);
803 
804   void
805   sorgqr_(const dealii::types::blas_int *m,
806           const dealii::types::blas_int *n,
807           const dealii::types::blas_int *k,
808           float *                        a,
809           const dealii::types::blas_int *lda,
810           const float *                  tau,
811           float *                        work,
812           const dealii::types::blas_int *lwork,
813           dealii::types::blas_int *      info);
814 
815   void
816   dorgqr_(const dealii::types::blas_int *m,
817           const dealii::types::blas_int *n,
818           const dealii::types::blas_int *k,
819           double *                       a,
820           const dealii::types::blas_int *lda,
821           const double *                 tau,
822           double *                       work,
823           const dealii::types::blas_int *lwork,
824           dealii::types::blas_int *      info);
825 
826   void
827   sormqr_(const char *                   side,
828           const char *                   trans,
829           const dealii::types::blas_int *m,
830           const dealii::types::blas_int *n,
831           const dealii::types::blas_int *k,
832           const float *                  a,
833           const dealii::types::blas_int *lda,
834           const float *                  tau,
835           float *                        c,
836           const dealii::types::blas_int *ldc,
837           float *                        work,
838           const dealii::types::blas_int *lwork,
839           dealii::types::blas_int *      info);
840 
841   void
842   dormqr_(const char *                   side,
843           const char *                   trans,
844           const dealii::types::blas_int *m,
845           const dealii::types::blas_int *n,
846           const dealii::types::blas_int *k,
847           const double *                 a,
848           const dealii::types::blas_int *lda,
849           const double *                 tau,
850           double *                       c,
851           const dealii::types::blas_int *ldc,
852           double *                       work,
853           const dealii::types::blas_int *lwork,
854           dealii::types::blas_int *      info);
855 
856   void
857   spocon_(const char *                   uplo,
858           const dealii::types::blas_int *n,
859           const float *                  a,
860           const dealii::types::blas_int *lda,
861           const float *                  anorm,
862           float *                        rcond,
863           float *                        work,
864           dealii::types::blas_int *      iwork,
865           dealii::types::blas_int *      info);
866 
867   void
868   dpocon_(const char *                   uplo,
869           const dealii::types::blas_int *n,
870           const double *                 a,
871           const dealii::types::blas_int *lda,
872           const double *                 anorm,
873           double *                       rcond,
874           double *                       work,
875           dealii::types::blas_int *      iwork,
876           dealii::types::blas_int *      info);
877 
878   void
879   cpocon_(const char *                   uplo,
880           const dealii::types::blas_int *n,
881           const std::complex<float> *    a,
882           const dealii::types::blas_int *lda,
883           const float *                  anorm,
884           float *                        rcond,
885           std::complex<float> *          work,
886           float *                        rwork,
887           dealii::types::blas_int *      info);
888 
889   void
890   zpocon_(const char *                   uplo,
891           const dealii::types::blas_int *n,
892           const std::complex<double> *   a,
893           const dealii::types::blas_int *lda,
894           const double *                 anorm,
895           double *                       rcond,
896           std::complex<double> *         work,
897           double *                       rwork,
898           dealii::types::blas_int *      info);
899 
900   void
901   spotrf_(const char *                   uplo,
902           const dealii::types::blas_int *n,
903           float *                        a,
904           const dealii::types::blas_int *lda,
905           dealii::types::blas_int *      info);
906 
907   void
908   dpotrf_(const char *                   uplo,
909           const dealii::types::blas_int *n,
910           double *                       a,
911           const dealii::types::blas_int *lda,
912           dealii::types::blas_int *      info);
913 
914   void
915   cpotrf_(const char *                   uplo,
916           const dealii::types::blas_int *n,
917           std::complex<float> *          a,
918           const dealii::types::blas_int *lda,
919           dealii::types::blas_int *      info);
920 
921   void
922   zpotrf_(const char *                   uplo,
923           const dealii::types::blas_int *n,
924           std::complex<double> *         a,
925           const dealii::types::blas_int *lda,
926           dealii::types::blas_int *      info);
927 
928   void
929   spotri_(const char *                   uplo,
930           const dealii::types::blas_int *n,
931           float *                        a,
932           const dealii::types::blas_int *lda,
933           dealii::types::blas_int *      info);
934 
935   void
936   dpotri_(const char *                   uplo,
937           const dealii::types::blas_int *n,
938           double *                       a,
939           const dealii::types::blas_int *lda,
940           dealii::types::blas_int *      info);
941 
942   void
943   cpotri_(const char *                   uplo,
944           const dealii::types::blas_int *n,
945           std::complex<float> *          a,
946           const dealii::types::blas_int *lda,
947           dealii::types::blas_int *      info);
948 
949   void
950   zpotri_(const char *                   uplo,
951           const dealii::types::blas_int *n,
952           std::complex<double> *         a,
953           const dealii::types::blas_int *lda,
954           dealii::types::blas_int *      info);
955 
956   void
957   spotrs_(const char *                   uplo,
958           const dealii::types::blas_int *n,
959           const dealii::types::blas_int *nrhs,
960           const float *                  a,
961           const dealii::types::blas_int *lda,
962           float *                        b,
963           const dealii::types::blas_int *ldb,
964           dealii::types::blas_int *      info);
965 
966   void
967   dpotrs_(const char *                   uplo,
968           const dealii::types::blas_int *n,
969           const dealii::types::blas_int *nrhs,
970           const double *                 a,
971           const dealii::types::blas_int *lda,
972           double *                       b,
973           const dealii::types::blas_int *ldb,
974           dealii::types::blas_int *      info);
975 
976   void
977   cpotrs_(const char *                   uplo,
978           const dealii::types::blas_int *n,
979           const dealii::types::blas_int *nrhs,
980           const std::complex<float> *    a,
981           const dealii::types::blas_int *lda,
982           std::complex<float> *          b,
983           const dealii::types::blas_int *ldb,
984           dealii::types::blas_int *      info);
985 
986   void
987   zpotrs_(const char *                   uplo,
988           const dealii::types::blas_int *n,
989           const dealii::types::blas_int *nrhs,
990           const std::complex<double> *   a,
991           const dealii::types::blas_int *lda,
992           std::complex<double> *         b,
993           const dealii::types::blas_int *ldb,
994           dealii::types::blas_int *      info);
995 
996   void
997   sstev_(const char *                   jobz,
998          const dealii::types::blas_int *n,
999          float *                        d,
1000          float *                        e,
1001          float *                        z,
1002          const dealii::types::blas_int *ldz,
1003          float *                        work,
1004          dealii::types::blas_int *      info);
1005 
1006   void
1007   dstev_(const char *                   jobz,
1008          const dealii::types::blas_int *n,
1009          double *                       d,
1010          double *                       e,
1011          double *                       z,
1012          const dealii::types::blas_int *ldz,
1013          double *                       work,
1014          dealii::types::blas_int *      info);
1015 
1016   void
1017   ssyev_(const char *                   jobz,
1018          const char *                   uplo,
1019          const dealii::types::blas_int *n,
1020          float *                        a,
1021          const dealii::types::blas_int *lda,
1022          float *                        w,
1023          float *                        work,
1024          const dealii::types::blas_int *lwork,
1025          dealii::types::blas_int *      info);
1026 
1027   void
1028   dsyev_(const char *                   jobz,
1029          const char *                   uplo,
1030          const dealii::types::blas_int *n,
1031          double *                       a,
1032          const dealii::types::blas_int *lda,
1033          double *                       w,
1034          double *                       work,
1035          const dealii::types::blas_int *lwork,
1036          dealii::types::blas_int *      info);
1037 
1038   void
1039   ssyevr_(const char *                   jobz,
1040           const char *                   range,
1041           const char *                   uplo,
1042           const dealii::types::blas_int *n,
1043           float *                        a,
1044           const dealii::types::blas_int *lda,
1045           const float *                  vl,
1046           const float *                  vu,
1047           const dealii::types::blas_int *il,
1048           const dealii::types::blas_int *iu,
1049           const float *                  abstol,
1050           dealii::types::blas_int *      m,
1051           float *                        w,
1052           float *                        z,
1053           const dealii::types::blas_int *ldz,
1054           dealii::types::blas_int *      isuppz,
1055           float *                        work,
1056           const dealii::types::blas_int *lwork,
1057           dealii::types::blas_int *      iwork,
1058           const dealii::types::blas_int *liwork,
1059           dealii::types::blas_int *      info);
1060 
1061   void
1062   dsyevr_(const char *                   jobz,
1063           const char *                   range,
1064           const char *                   uplo,
1065           const dealii::types::blas_int *n,
1066           double *                       a,
1067           const dealii::types::blas_int *lda,
1068           const double *                 vl,
1069           const double *                 vu,
1070           const dealii::types::blas_int *il,
1071           const dealii::types::blas_int *iu,
1072           const double *                 abstol,
1073           dealii::types::blas_int *      m,
1074           double *                       w,
1075           double *                       z,
1076           const dealii::types::blas_int *ldz,
1077           dealii::types::blas_int *      isuppz,
1078           double *                       work,
1079           const dealii::types::blas_int *lwork,
1080           dealii::types::blas_int *      iwork,
1081           const dealii::types::blas_int *liwork,
1082           dealii::types::blas_int *      info);
1083 
1084   void
1085   ssyevx_(const char *                   jobz,
1086           const char *                   range,
1087           const char *                   uplo,
1088           const dealii::types::blas_int *n,
1089           float *                        a,
1090           const dealii::types::blas_int *lda,
1091           const float *                  vl,
1092           const float *                  vu,
1093           const dealii::types::blas_int *il,
1094           const dealii::types::blas_int *iu,
1095           const float *                  abstol,
1096           dealii::types::blas_int *      m,
1097           float *                        w,
1098           float *                        z,
1099           const dealii::types::blas_int *ldz,
1100           float *                        work,
1101           const dealii::types::blas_int *lwork,
1102           dealii::types::blas_int *      iwork,
1103           dealii::types::blas_int *      ifail,
1104           dealii::types::blas_int *      info);
1105 
1106   void
1107   dsyevx_(const char *                   jobz,
1108           const char *                   range,
1109           const char *                   uplo,
1110           const dealii::types::blas_int *n,
1111           double *                       a,
1112           const dealii::types::blas_int *lda,
1113           const double *                 vl,
1114           const double *                 vu,
1115           const dealii::types::blas_int *il,
1116           const dealii::types::blas_int *iu,
1117           const double *                 abstol,
1118           dealii::types::blas_int *      m,
1119           double *                       w,
1120           double *                       z,
1121           const dealii::types::blas_int *ldz,
1122           double *                       work,
1123           const dealii::types::blas_int *lwork,
1124           dealii::types::blas_int *      iwork,
1125           dealii::types::blas_int *      ifail,
1126           dealii::types::blas_int *      info);
1127 
1128   void
1129   ssygv_(const dealii::types::blas_int *itype,
1130          const char *                   jobz,
1131          const char *                   uplo,
1132          const dealii::types::blas_int *n,
1133          float *                        a,
1134          const dealii::types::blas_int *lda,
1135          float *                        b,
1136          const dealii::types::blas_int *ldb,
1137          float *                        w,
1138          float *                        work,
1139          const dealii::types::blas_int *lwork,
1140          dealii::types::blas_int *      info);
1141 
1142   void
1143   dsygv_(const dealii::types::blas_int *itype,
1144          const char *                   jobz,
1145          const char *                   uplo,
1146          const dealii::types::blas_int *n,
1147          double *                       a,
1148          const dealii::types::blas_int *lda,
1149          double *                       b,
1150          const dealii::types::blas_int *ldb,
1151          double *                       w,
1152          double *                       work,
1153          const dealii::types::blas_int *lwork,
1154          dealii::types::blas_int *      info);
1155 
1156   void
1157   ssygvx_(const dealii::types::blas_int *itype,
1158           const char *                   jobz,
1159           const char *                   range,
1160           const char *                   uplo,
1161           const dealii::types::blas_int *n,
1162           float *                        a,
1163           const dealii::types::blas_int *lda,
1164           float *                        b,
1165           const dealii::types::blas_int *ldb,
1166           const float *                  vl,
1167           const float *                  vu,
1168           const dealii::types::blas_int *il,
1169           const dealii::types::blas_int *iu,
1170           const float *                  abstol,
1171           dealii::types::blas_int *      m,
1172           float *                        w,
1173           float *                        z,
1174           const dealii::types::blas_int *ldz,
1175           float *                        work,
1176           const dealii::types::blas_int *lwork,
1177           dealii::types::blas_int *      iwork,
1178           dealii::types::blas_int *      ifail,
1179           dealii::types::blas_int *      info);
1180 
1181   void
1182   dsygvx_(const dealii::types::blas_int *itype,
1183           const char *                   jobz,
1184           const char *                   range,
1185           const char *                   uplo,
1186           const dealii::types::blas_int *n,
1187           double *                       a,
1188           const dealii::types::blas_int *lda,
1189           double *                       b,
1190           const dealii::types::blas_int *ldb,
1191           const double *                 vl,
1192           const double *                 vu,
1193           const dealii::types::blas_int *il,
1194           const dealii::types::blas_int *iu,
1195           const double *                 abstol,
1196           dealii::types::blas_int *      m,
1197           double *                       w,
1198           double *                       z,
1199           const dealii::types::blas_int *ldz,
1200           double *                       work,
1201           const dealii::types::blas_int *lwork,
1202           dealii::types::blas_int *      iwork,
1203           dealii::types::blas_int *      ifail,
1204           dealii::types::blas_int *      info);
1205 
1206   void
1207   ssyr_(const char *                   uplo,
1208         const dealii::types::blas_int *n,
1209         const float *                  alpha,
1210         const float *                  x,
1211         const dealii::types::blas_int *incx,
1212         float *                        a,
1213         const dealii::types::blas_int *lda);
1214 
1215   void
1216   dsyr_(const char *                   uplo,
1217         const dealii::types::blas_int *n,
1218         const double *                 alpha,
1219         const double *                 x,
1220         const dealii::types::blas_int *incx,
1221         double *                       a,
1222         const dealii::types::blas_int *lda);
1223 
1224   void
1225   ssyrk_(const char *                   uplo,
1226          const char *                   trans,
1227          const dealii::types::blas_int *n,
1228          const dealii::types::blas_int *k,
1229          const float *                  alpha,
1230          const float *                  a,
1231          const dealii::types::blas_int *lda,
1232          const float *                  beta,
1233          float *                        c,
1234          const dealii::types::blas_int *ldc);
1235 
1236   void
1237   dsyrk_(const char *                   uplo,
1238          const char *                   trans,
1239          const dealii::types::blas_int *n,
1240          const dealii::types::blas_int *k,
1241          const double *                 alpha,
1242          const double *                 a,
1243          const dealii::types::blas_int *lda,
1244          const double *                 beta,
1245          double *                       c,
1246          const dealii::types::blas_int *ldc);
1247 
1248   void
1249   csyrk_(const char *                   uplo,
1250          const char *                   trans,
1251          const dealii::types::blas_int *n,
1252          const dealii::types::blas_int *k,
1253          const std::complex<float> *    alpha,
1254          const std::complex<float> *    a,
1255          const dealii::types::blas_int *lda,
1256          const std::complex<float> *    beta,
1257          std::complex<float> *          c,
1258          const dealii::types::blas_int *ldc);
1259 
1260   void
1261   zsyrk_(const char *                   uplo,
1262          const char *                   trans,
1263          const dealii::types::blas_int *n,
1264          const dealii::types::blas_int *k,
1265          const std::complex<double> *   alpha,
1266          const std::complex<double> *   a,
1267          const dealii::types::blas_int *lda,
1268          const std::complex<double> *   beta,
1269          std::complex<double> *         c,
1270          const dealii::types::blas_int *ldc);
1271 
1272   void
1273   strcon_(const char *                   norm,
1274           const char *                   uplo,
1275           const char *                   diag,
1276           const dealii::types::blas_int *n,
1277           const float *                  a,
1278           const dealii::types::blas_int *lda,
1279           float *                        rcond,
1280           float *                        work,
1281           dealii::types::blas_int *      iwork,
1282           dealii::types::blas_int *      info);
1283 
1284   void
1285   dtrcon_(const char *                   norm,
1286           const char *                   uplo,
1287           const char *                   diag,
1288           const dealii::types::blas_int *n,
1289           const double *                 a,
1290           const dealii::types::blas_int *lda,
1291           double *                       rcond,
1292           double *                       work,
1293           dealii::types::blas_int *      iwork,
1294           dealii::types::blas_int *      info);
1295 
1296   void
1297   ctrcon_(const char *                   norm,
1298           const char *                   uplo,
1299           const char *                   diag,
1300           const dealii::types::blas_int *n,
1301           const std::complex<float> *    a,
1302           const dealii::types::blas_int *lda,
1303           float *                        rcond,
1304           std::complex<float> *          work,
1305           float *                        rwork,
1306           dealii::types::blas_int *      info);
1307 
1308   void
1309   ztrcon_(const char *                   norm,
1310           const char *                   uplo,
1311           const char *                   diag,
1312           const dealii::types::blas_int *n,
1313           const std::complex<double> *   a,
1314           const dealii::types::blas_int *lda,
1315           double *                       rcond,
1316           std::complex<double> *         work,
1317           double *                       rwork,
1318           dealii::types::blas_int *      info);
1319 
1320   void
1321   strmv_(const char *                   uplo,
1322          const char *                   trans,
1323          const char *                   diag,
1324          const dealii::types::blas_int *n,
1325          const float *                  a,
1326          const dealii::types::blas_int *lda,
1327          float *                        x,
1328          const dealii::types::blas_int *incx);
1329 
1330   void
1331   dtrmv_(const char *                   uplo,
1332          const char *                   trans,
1333          const char *                   diag,
1334          const dealii::types::blas_int *n,
1335          const double *                 a,
1336          const dealii::types::blas_int *lda,
1337          double *                       x,
1338          const dealii::types::blas_int *incx);
1339 
1340   void
1341   ctrmv_(const char *                   uplo,
1342          const char *                   trans,
1343          const char *                   diag,
1344          const dealii::types::blas_int *n,
1345          const std::complex<float> *    a,
1346          const dealii::types::blas_int *lda,
1347          std::complex<float> *          x,
1348          const dealii::types::blas_int *incx);
1349 
1350   void
1351   ztrmv_(const char *                   uplo,
1352          const char *                   trans,
1353          const char *                   diag,
1354          const dealii::types::blas_int *n,
1355          const std::complex<double> *   a,
1356          const dealii::types::blas_int *lda,
1357          std::complex<double> *         x,
1358          const dealii::types::blas_int *incx);
1359 
1360   void
1361   strtrs_(const char *                   uplo,
1362           const char *                   trans,
1363           const char *                   diag,
1364           const dealii::types::blas_int *n,
1365           const dealii::types::blas_int *nrhs,
1366           const float *                  a,
1367           const dealii::types::blas_int *lda,
1368           float *                        b,
1369           const dealii::types::blas_int *ldb,
1370           dealii::types::blas_int *      info);
1371 
1372   void
1373   dtrtrs_(const char *                   uplo,
1374           const char *                   trans,
1375           const char *                   diag,
1376           const dealii::types::blas_int *n,
1377           const dealii::types::blas_int *nrhs,
1378           const double *                 a,
1379           const dealii::types::blas_int *lda,
1380           double *                       b,
1381           const dealii::types::blas_int *ldb,
1382           dealii::types::blas_int *      info);
1383 
1384   void
1385   ctrtrs_(const char *                   uplo,
1386           const char *                   trans,
1387           const char *                   diag,
1388           const dealii::types::blas_int *n,
1389           const dealii::types::blas_int *nrhs,
1390           const std::complex<float> *    a,
1391           const dealii::types::blas_int *lda,
1392           std::complex<float> *          b,
1393           const dealii::types::blas_int *ldb,
1394           dealii::types::blas_int *      info);
1395 
1396   void
1397   ztrtrs_(const char *                   uplo,
1398           const char *                   trans,
1399           const char *                   diag,
1400           const dealii::types::blas_int *n,
1401           const dealii::types::blas_int *nrhs,
1402           const std::complex<double> *   a,
1403           const dealii::types::blas_int *lda,
1404           std::complex<double> *         b,
1405           const dealii::types::blas_int *ldb,
1406           dealii::types::blas_int *      info);
1407 }
1408 
1409 DEAL_II_NAMESPACE_OPEN
1410 
1411 
1412 
1413 template <typename number1, typename number2, typename number3>
1414 inline void
axpy(const dealii::types::blas_int *,const number1 *,const number2 *,const dealii::types::blas_int *,number3 *,const dealii::types::blas_int *)1415 axpy(const dealii::types::blas_int *,
1416      const number1 *,
1417      const number2 *,
1418      const dealii::types::blas_int *,
1419      number3 *,
1420      const dealii::types::blas_int *)
1421 {
1422   Assert(false, ExcNotImplemented());
1423 }
1424 
1425 
1426 
1427 inline void
axpy(const dealii::types::blas_int * n,const float * sa,const float * sx,const dealii::types::blas_int * incx,float * sy,const dealii::types::blas_int * incy)1428 axpy(const dealii::types::blas_int *n,
1429      const float *                  sa,
1430      const float *                  sx,
1431      const dealii::types::blas_int *incx,
1432      float *                        sy,
1433      const dealii::types::blas_int *incy)
1434 {
1435 #ifdef DEAL_II_WITH_LAPACK
1436   saxpy_(n, sa, sx, incx, sy, incy);
1437 #else
1438   (void)n;
1439   (void)sa;
1440   (void)sx;
1441   (void)incx;
1442   (void)sy;
1443   (void)incy;
1444   Assert(false, LAPACKSupport::ExcMissing("saxpy"));
1445 #endif // DEAL_II_WITH_LAPACK
1446 }
1447 
1448 
1449 
1450 inline void
axpy(const dealii::types::blas_int * n,const double * da,const double * dx,const dealii::types::blas_int * incx,double * dy,const dealii::types::blas_int * incy)1451 axpy(const dealii::types::blas_int *n,
1452      const double *                 da,
1453      const double *                 dx,
1454      const dealii::types::blas_int *incx,
1455      double *                       dy,
1456      const dealii::types::blas_int *incy)
1457 {
1458 #ifdef DEAL_II_WITH_LAPACK
1459   daxpy_(n, da, dx, incx, dy, incy);
1460 #else
1461   (void)n;
1462   (void)da;
1463   (void)dx;
1464   (void)incx;
1465   (void)dy;
1466   (void)incy;
1467   Assert(false, LAPACKSupport::ExcMissing("daxpy"));
1468 #endif // DEAL_II_WITH_LAPACK
1469 }
1470 
1471 
1472 
1473 inline void
axpy(const dealii::types::blas_int * n,const std::complex<float> * ca,const std::complex<float> * cx,const dealii::types::blas_int * incx,std::complex<float> * cy,const dealii::types::blas_int * incy)1474 axpy(const dealii::types::blas_int *n,
1475      const std::complex<float> *    ca,
1476      const std::complex<float> *    cx,
1477      const dealii::types::blas_int *incx,
1478      std::complex<float> *          cy,
1479      const dealii::types::blas_int *incy)
1480 {
1481 #ifdef DEAL_II_WITH_LAPACK
1482   caxpy_(n, ca, cx, incx, cy, incy);
1483 #else
1484   (void)n;
1485   (void)ca;
1486   (void)cx;
1487   (void)incx;
1488   (void)cy;
1489   (void)incy;
1490   Assert(false, LAPACKSupport::ExcMissing("caxpy"));
1491 #endif // DEAL_II_WITH_LAPACK
1492 }
1493 
1494 
1495 
1496 inline void
axpy(const dealii::types::blas_int * n,const std::complex<double> * za,const std::complex<double> * zx,const dealii::types::blas_int * incx,std::complex<double> * zy,const dealii::types::blas_int * incy)1497 axpy(const dealii::types::blas_int *n,
1498      const std::complex<double> *   za,
1499      const std::complex<double> *   zx,
1500      const dealii::types::blas_int *incx,
1501      std::complex<double> *         zy,
1502      const dealii::types::blas_int *incy)
1503 {
1504 #ifdef DEAL_II_WITH_LAPACK
1505   zaxpy_(n, za, zx, incx, zy, incy);
1506 #else
1507   (void)n;
1508   (void)za;
1509   (void)zx;
1510   (void)incx;
1511   (void)zy;
1512   (void)incy;
1513   Assert(false, LAPACKSupport::ExcMissing("zaxpy"));
1514 #endif // DEAL_II_WITH_LAPACK
1515 }
1516 
1517 
1518 
1519 template <typename number1,
1520           typename number2,
1521           typename number3,
1522           typename number4,
1523           typename number5,
1524           typename number6>
1525 inline void
geev(const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,number3 *,number4 *,const dealii::types::blas_int *,number5 *,const dealii::types::blas_int *,number6 *,const dealii::types::blas_int *,dealii::types::blas_int *)1526 geev(const char *,
1527      const char *,
1528      const dealii::types::blas_int *,
1529      number1 *,
1530      const dealii::types::blas_int *,
1531      number2 *,
1532      number3 *,
1533      number4 *,
1534      const dealii::types::blas_int *,
1535      number5 *,
1536      const dealii::types::blas_int *,
1537      number6 *,
1538      const dealii::types::blas_int *,
1539      dealii::types::blas_int *)
1540 {
1541   Assert(false, ExcNotImplemented());
1542 }
1543 
1544 
1545 
1546 inline void
geev(const char * jobvl,const char * jobvr,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * wr,float * wi,float * vl,const dealii::types::blas_int * ldvl,float * vr,const dealii::types::blas_int * ldvr,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)1547 geev(const char *                   jobvl,
1548      const char *                   jobvr,
1549      const dealii::types::blas_int *n,
1550      float *                        a,
1551      const dealii::types::blas_int *lda,
1552      float *                        wr,
1553      float *                        wi,
1554      float *                        vl,
1555      const dealii::types::blas_int *ldvl,
1556      float *                        vr,
1557      const dealii::types::blas_int *ldvr,
1558      float *                        work,
1559      const dealii::types::blas_int *lwork,
1560      dealii::types::blas_int *      info)
1561 {
1562 #ifdef DEAL_II_WITH_LAPACK
1563   sgeev_(
1564     jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info);
1565 #else
1566   (void)jobvl;
1567   (void)jobvr;
1568   (void)n;
1569   (void)a;
1570   (void)lda;
1571   (void)wr;
1572   (void)wi;
1573   (void)vl;
1574   (void)ldvl;
1575   (void)vr;
1576   (void)ldvr;
1577   (void)work;
1578   (void)lwork;
1579   (void)info;
1580   Assert(false, LAPACKSupport::ExcMissing("sgeev"));
1581 #endif // DEAL_II_WITH_LAPACK
1582 }
1583 
1584 
1585 
1586 inline void
geev(const char * jobvl,const char * jobvr,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * wr,double * wi,double * vl,const dealii::types::blas_int * ldvl,double * vr,const dealii::types::blas_int * ldvr,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)1587 geev(const char *                   jobvl,
1588      const char *                   jobvr,
1589      const dealii::types::blas_int *n,
1590      double *                       a,
1591      const dealii::types::blas_int *lda,
1592      double *                       wr,
1593      double *                       wi,
1594      double *                       vl,
1595      const dealii::types::blas_int *ldvl,
1596      double *                       vr,
1597      const dealii::types::blas_int *ldvr,
1598      double *                       work,
1599      const dealii::types::blas_int *lwork,
1600      dealii::types::blas_int *      info)
1601 {
1602 #ifdef DEAL_II_WITH_LAPACK
1603   dgeev_(
1604     jobvl, jobvr, n, a, lda, wr, wi, vl, ldvl, vr, ldvr, work, lwork, info);
1605 #else
1606   (void)jobvl;
1607   (void)jobvr;
1608   (void)n;
1609   (void)a;
1610   (void)lda;
1611   (void)wr;
1612   (void)wi;
1613   (void)vl;
1614   (void)ldvl;
1615   (void)vr;
1616   (void)ldvr;
1617   (void)work;
1618   (void)lwork;
1619   (void)info;
1620   Assert(false, LAPACKSupport::ExcMissing("dgeev"));
1621 #endif // DEAL_II_WITH_LAPACK
1622 }
1623 
1624 
1625 
1626 inline void
geev(const char * jobvl,const char * jobvr,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * w,std::complex<float> * vl,const dealii::types::blas_int * ldvl,std::complex<float> * vr,const dealii::types::blas_int * ldvr,std::complex<float> * work,const dealii::types::blas_int * lwork,float * rwork,dealii::types::blas_int * info)1627 geev(const char *                   jobvl,
1628      const char *                   jobvr,
1629      const dealii::types::blas_int *n,
1630      std::complex<float> *          a,
1631      const dealii::types::blas_int *lda,
1632      std::complex<float> *          w,
1633      std::complex<float> *          vl,
1634      const dealii::types::blas_int *ldvl,
1635      std::complex<float> *          vr,
1636      const dealii::types::blas_int *ldvr,
1637      std::complex<float> *          work,
1638      const dealii::types::blas_int *lwork,
1639      float *                        rwork,
1640      dealii::types::blas_int *      info)
1641 {
1642 #ifdef DEAL_II_WITH_LAPACK
1643   cgeev_(
1644     jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info);
1645 #else
1646   (void)jobvl;
1647   (void)jobvr;
1648   (void)n;
1649   (void)a;
1650   (void)lda;
1651   (void)w;
1652   (void)vl;
1653   (void)ldvl;
1654   (void)vr;
1655   (void)ldvr;
1656   (void)work;
1657   (void)lwork;
1658   (void)rwork;
1659   (void)info;
1660   Assert(false, LAPACKSupport::ExcMissing("cgeev"));
1661 #endif // DEAL_II_WITH_LAPACK
1662 }
1663 
1664 
1665 
1666 inline void
geev(const char * jobvl,const char * jobvr,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * w,std::complex<double> * vl,const dealii::types::blas_int * ldvl,std::complex<double> * vr,const dealii::types::blas_int * ldvr,std::complex<double> * work,const dealii::types::blas_int * lwork,double * rwork,dealii::types::blas_int * info)1667 geev(const char *                   jobvl,
1668      const char *                   jobvr,
1669      const dealii::types::blas_int *n,
1670      std::complex<double> *         a,
1671      const dealii::types::blas_int *lda,
1672      std::complex<double> *         w,
1673      std::complex<double> *         vl,
1674      const dealii::types::blas_int *ldvl,
1675      std::complex<double> *         vr,
1676      const dealii::types::blas_int *ldvr,
1677      std::complex<double> *         work,
1678      const dealii::types::blas_int *lwork,
1679      double *                       rwork,
1680      dealii::types::blas_int *      info)
1681 {
1682 #ifdef DEAL_II_WITH_LAPACK
1683   zgeev_(
1684     jobvl, jobvr, n, a, lda, w, vl, ldvl, vr, ldvr, work, lwork, rwork, info);
1685 #else
1686   (void)jobvl;
1687   (void)jobvr;
1688   (void)n;
1689   (void)a;
1690   (void)lda;
1691   (void)w;
1692   (void)vl;
1693   (void)ldvl;
1694   (void)vr;
1695   (void)ldvr;
1696   (void)work;
1697   (void)lwork;
1698   (void)rwork;
1699   (void)info;
1700   Assert(false, LAPACKSupport::ExcMissing("zgeev"));
1701 #endif // DEAL_II_WITH_LAPACK
1702 }
1703 
1704 
1705 
1706 template <typename number1,
1707           typename number2,
1708           typename number3,
1709           typename number4,
1710           typename number5,
1711           typename number6,
1712           typename number7,
1713           typename number8,
1714           typename number9,
1715           typename number10>
1716 inline void
geevx(const char *,const char *,const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,number3 *,number4 *,const dealii::types::blas_int *,number5 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *,number6 *,number7 *,number8 *,number9 *,number10 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *)1717 geevx(const char *,
1718       const char *,
1719       const char *,
1720       const char *,
1721       const dealii::types::blas_int *,
1722       number1 *,
1723       const dealii::types::blas_int *,
1724       number2 *,
1725       number3 *,
1726       number4 *,
1727       const dealii::types::blas_int *,
1728       number5 *,
1729       const dealii::types::blas_int *,
1730       dealii::types::blas_int *,
1731       dealii::types::blas_int *,
1732       number6 *,
1733       number7 *,
1734       number8 *,
1735       number9 *,
1736       number10 *,
1737       const dealii::types::blas_int *,
1738       dealii::types::blas_int *,
1739       dealii::types::blas_int *)
1740 {
1741   Assert(false, ExcNotImplemented());
1742 }
1743 
1744 
1745 
1746 inline void
geevx(const char * balanc,const char * jobvl,const char * jobvr,const char * sense,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * wr,float * wi,float * vl,const dealii::types::blas_int * ldvl,float * vr,const dealii::types::blas_int * ldvr,dealii::types::blas_int * ilo,dealii::types::blas_int * ihi,float * scale,float * abnrm,float * rconde,float * rcondv,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)1747 geevx(const char *                   balanc,
1748       const char *                   jobvl,
1749       const char *                   jobvr,
1750       const char *                   sense,
1751       const dealii::types::blas_int *n,
1752       float *                        a,
1753       const dealii::types::blas_int *lda,
1754       float *                        wr,
1755       float *                        wi,
1756       float *                        vl,
1757       const dealii::types::blas_int *ldvl,
1758       float *                        vr,
1759       const dealii::types::blas_int *ldvr,
1760       dealii::types::blas_int *      ilo,
1761       dealii::types::blas_int *      ihi,
1762       float *                        scale,
1763       float *                        abnrm,
1764       float *                        rconde,
1765       float *                        rcondv,
1766       float *                        work,
1767       const dealii::types::blas_int *lwork,
1768       dealii::types::blas_int *      iwork,
1769       dealii::types::blas_int *      info)
1770 {
1771 #ifdef DEAL_II_WITH_LAPACK
1772   sgeevx_(balanc,
1773           jobvl,
1774           jobvr,
1775           sense,
1776           n,
1777           a,
1778           lda,
1779           wr,
1780           wi,
1781           vl,
1782           ldvl,
1783           vr,
1784           ldvr,
1785           ilo,
1786           ihi,
1787           scale,
1788           abnrm,
1789           rconde,
1790           rcondv,
1791           work,
1792           lwork,
1793           iwork,
1794           info);
1795 #else
1796   (void)balanc;
1797   (void)jobvl;
1798   (void)jobvr;
1799   (void)sense;
1800   (void)n;
1801   (void)a;
1802   (void)lda;
1803   (void)wr;
1804   (void)wi;
1805   (void)vl;
1806   (void)ldvl;
1807   (void)vr;
1808   (void)ldvr;
1809   (void)ilo;
1810   (void)ihi;
1811   (void)scale;
1812   (void)abnrm;
1813   (void)rconde;
1814   (void)rcondv;
1815   (void)work;
1816   (void)lwork;
1817   (void)iwork;
1818   (void)info;
1819   Assert(false, LAPACKSupport::ExcMissing("sgeevx"));
1820 #endif // DEAL_II_WITH_LAPACK
1821 }
1822 
1823 
1824 
1825 inline void
geevx(const char * balanc,const char * jobvl,const char * jobvr,const char * sense,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * wr,double * wi,double * vl,const dealii::types::blas_int * ldvl,double * vr,const dealii::types::blas_int * ldvr,dealii::types::blas_int * ilo,dealii::types::blas_int * ihi,double * scale,double * abnrm,double * rconde,double * rcondv,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)1826 geevx(const char *                   balanc,
1827       const char *                   jobvl,
1828       const char *                   jobvr,
1829       const char *                   sense,
1830       const dealii::types::blas_int *n,
1831       double *                       a,
1832       const dealii::types::blas_int *lda,
1833       double *                       wr,
1834       double *                       wi,
1835       double *                       vl,
1836       const dealii::types::blas_int *ldvl,
1837       double *                       vr,
1838       const dealii::types::blas_int *ldvr,
1839       dealii::types::blas_int *      ilo,
1840       dealii::types::blas_int *      ihi,
1841       double *                       scale,
1842       double *                       abnrm,
1843       double *                       rconde,
1844       double *                       rcondv,
1845       double *                       work,
1846       const dealii::types::blas_int *lwork,
1847       dealii::types::blas_int *      iwork,
1848       dealii::types::blas_int *      info)
1849 {
1850 #ifdef DEAL_II_WITH_LAPACK
1851   dgeevx_(balanc,
1852           jobvl,
1853           jobvr,
1854           sense,
1855           n,
1856           a,
1857           lda,
1858           wr,
1859           wi,
1860           vl,
1861           ldvl,
1862           vr,
1863           ldvr,
1864           ilo,
1865           ihi,
1866           scale,
1867           abnrm,
1868           rconde,
1869           rcondv,
1870           work,
1871           lwork,
1872           iwork,
1873           info);
1874 #else
1875   (void)balanc;
1876   (void)jobvl;
1877   (void)jobvr;
1878   (void)sense;
1879   (void)n;
1880   (void)a;
1881   (void)lda;
1882   (void)wr;
1883   (void)wi;
1884   (void)vl;
1885   (void)ldvl;
1886   (void)vr;
1887   (void)ldvr;
1888   (void)ilo;
1889   (void)ihi;
1890   (void)scale;
1891   (void)abnrm;
1892   (void)rconde;
1893   (void)rcondv;
1894   (void)work;
1895   (void)lwork;
1896   (void)iwork;
1897   (void)info;
1898   Assert(false, LAPACKSupport::ExcMissing("dgeevx"));
1899 #endif // DEAL_II_WITH_LAPACK
1900 }
1901 
1902 
1903 
1904 inline void
geevx(const char * balanc,const char * jobvl,const char * jobvr,const char * sense,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * w,std::complex<float> * vl,const dealii::types::blas_int * ldvl,std::complex<float> * vr,const dealii::types::blas_int * ldvr,dealii::types::blas_int * ilo,dealii::types::blas_int * ihi,float * scale,float * abnrm,float * rconde,float * rcondv,std::complex<float> * work,const dealii::types::blas_int * lwork,float * rwork,dealii::types::blas_int * info)1905 geevx(const char *                   balanc,
1906       const char *                   jobvl,
1907       const char *                   jobvr,
1908       const char *                   sense,
1909       const dealii::types::blas_int *n,
1910       std::complex<float> *          a,
1911       const dealii::types::blas_int *lda,
1912       std::complex<float> *          w,
1913       std::complex<float> *          vl,
1914       const dealii::types::blas_int *ldvl,
1915       std::complex<float> *          vr,
1916       const dealii::types::blas_int *ldvr,
1917       dealii::types::blas_int *      ilo,
1918       dealii::types::blas_int *      ihi,
1919       float *                        scale,
1920       float *                        abnrm,
1921       float *                        rconde,
1922       float *                        rcondv,
1923       std::complex<float> *          work,
1924       const dealii::types::blas_int *lwork,
1925       float *                        rwork,
1926       dealii::types::blas_int *      info)
1927 {
1928 #ifdef DEAL_II_WITH_LAPACK
1929   cgeevx_(balanc,
1930           jobvl,
1931           jobvr,
1932           sense,
1933           n,
1934           a,
1935           lda,
1936           w,
1937           vl,
1938           ldvl,
1939           vr,
1940           ldvr,
1941           ilo,
1942           ihi,
1943           scale,
1944           abnrm,
1945           rconde,
1946           rcondv,
1947           work,
1948           lwork,
1949           rwork,
1950           info);
1951 #else
1952   (void)balanc;
1953   (void)jobvl;
1954   (void)jobvr;
1955   (void)sense;
1956   (void)n;
1957   (void)a;
1958   (void)lda;
1959   (void)w;
1960   (void)vl;
1961   (void)ldvl;
1962   (void)vr;
1963   (void)ldvr;
1964   (void)ilo;
1965   (void)ihi;
1966   (void)scale;
1967   (void)abnrm;
1968   (void)rconde;
1969   (void)rcondv;
1970   (void)work;
1971   (void)lwork;
1972   (void)rwork;
1973   (void)info;
1974   Assert(false, LAPACKSupport::ExcMissing("cgeevx"));
1975 #endif // DEAL_II_WITH_LAPACK
1976 }
1977 
1978 
1979 
1980 inline void
geevx(const char * balanc,const char * jobvl,const char * jobvr,const char * sense,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * w,std::complex<double> * vl,const dealii::types::blas_int * ldvl,std::complex<double> * vr,const dealii::types::blas_int * ldvr,dealii::types::blas_int * ilo,dealii::types::blas_int * ihi,double * scale,double * abnrm,double * rconde,double * rcondv,std::complex<double> * work,const dealii::types::blas_int * lwork,double * rwork,dealii::types::blas_int * info)1981 geevx(const char *                   balanc,
1982       const char *                   jobvl,
1983       const char *                   jobvr,
1984       const char *                   sense,
1985       const dealii::types::blas_int *n,
1986       std::complex<double> *         a,
1987       const dealii::types::blas_int *lda,
1988       std::complex<double> *         w,
1989       std::complex<double> *         vl,
1990       const dealii::types::blas_int *ldvl,
1991       std::complex<double> *         vr,
1992       const dealii::types::blas_int *ldvr,
1993       dealii::types::blas_int *      ilo,
1994       dealii::types::blas_int *      ihi,
1995       double *                       scale,
1996       double *                       abnrm,
1997       double *                       rconde,
1998       double *                       rcondv,
1999       std::complex<double> *         work,
2000       const dealii::types::blas_int *lwork,
2001       double *                       rwork,
2002       dealii::types::blas_int *      info)
2003 {
2004 #ifdef DEAL_II_WITH_LAPACK
2005   zgeevx_(balanc,
2006           jobvl,
2007           jobvr,
2008           sense,
2009           n,
2010           a,
2011           lda,
2012           w,
2013           vl,
2014           ldvl,
2015           vr,
2016           ldvr,
2017           ilo,
2018           ihi,
2019           scale,
2020           abnrm,
2021           rconde,
2022           rcondv,
2023           work,
2024           lwork,
2025           rwork,
2026           info);
2027 #else
2028   (void)balanc;
2029   (void)jobvl;
2030   (void)jobvr;
2031   (void)sense;
2032   (void)n;
2033   (void)a;
2034   (void)lda;
2035   (void)w;
2036   (void)vl;
2037   (void)ldvl;
2038   (void)vr;
2039   (void)ldvr;
2040   (void)ilo;
2041   (void)ihi;
2042   (void)scale;
2043   (void)abnrm;
2044   (void)rconde;
2045   (void)rcondv;
2046   (void)work;
2047   (void)lwork;
2048   (void)rwork;
2049   (void)info;
2050   Assert(false, LAPACKSupport::ExcMissing("zgeevx"));
2051 #endif // DEAL_II_WITH_LAPACK
2052 }
2053 
2054 
2055 
2056 template <typename number1,
2057           typename number2,
2058           typename number3,
2059           typename number4,
2060           typename number5>
2061 inline void
gelsd(const dealii::types::blas_int *,const dealii::types::blas_int *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,number3 *,const number4 *,dealii::types::blas_int *,number5 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *)2062 gelsd(const dealii::types::blas_int *,
2063       const dealii::types::blas_int *,
2064       const dealii::types::blas_int *,
2065       number1 *,
2066       const dealii::types::blas_int *,
2067       number2 *,
2068       const dealii::types::blas_int *,
2069       number3 *,
2070       const number4 *,
2071       dealii::types::blas_int *,
2072       number5 *,
2073       const dealii::types::blas_int *,
2074       dealii::types::blas_int *,
2075       dealii::types::blas_int *)
2076 {
2077   Assert(false, ExcNotImplemented());
2078 }
2079 
2080 
2081 
2082 inline void
gelsd(const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,float * a,const dealii::types::blas_int * lda,float * b,const dealii::types::blas_int * ldb,float * s,const float * rcond,dealii::types::blas_int * rank,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2083 gelsd(const dealii::types::blas_int *m,
2084       const dealii::types::blas_int *n,
2085       const dealii::types::blas_int *nrhs,
2086       float *                        a,
2087       const dealii::types::blas_int *lda,
2088       float *                        b,
2089       const dealii::types::blas_int *ldb,
2090       float *                        s,
2091       const float *                  rcond,
2092       dealii::types::blas_int *      rank,
2093       float *                        work,
2094       const dealii::types::blas_int *lwork,
2095       dealii::types::blas_int *      iwork,
2096       dealii::types::blas_int *      info)
2097 {
2098 #ifdef DEAL_II_WITH_LAPACK
2099   sgelsd_(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, iwork, info);
2100 #else
2101   (void)m;
2102   (void)n;
2103   (void)nrhs;
2104   (void)a;
2105   (void)lda;
2106   (void)b;
2107   (void)ldb;
2108   (void)s;
2109   (void)rcond;
2110   (void)rank;
2111   (void)work;
2112   (void)lwork;
2113   (void)iwork;
2114   (void)info;
2115   Assert(false, LAPACKSupport::ExcMissing("sgelsd"));
2116 #endif // DEAL_II_WITH_LAPACK
2117 }
2118 
2119 
2120 
2121 inline void
gelsd(const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,double * a,const dealii::types::blas_int * lda,double * b,const dealii::types::blas_int * ldb,double * s,const double * rcond,dealii::types::blas_int * rank,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2122 gelsd(const dealii::types::blas_int *m,
2123       const dealii::types::blas_int *n,
2124       const dealii::types::blas_int *nrhs,
2125       double *                       a,
2126       const dealii::types::blas_int *lda,
2127       double *                       b,
2128       const dealii::types::blas_int *ldb,
2129       double *                       s,
2130       const double *                 rcond,
2131       dealii::types::blas_int *      rank,
2132       double *                       work,
2133       const dealii::types::blas_int *lwork,
2134       dealii::types::blas_int *      iwork,
2135       dealii::types::blas_int *      info)
2136 {
2137 #ifdef DEAL_II_WITH_LAPACK
2138   dgelsd_(m, n, nrhs, a, lda, b, ldb, s, rcond, rank, work, lwork, iwork, info);
2139 #else
2140   (void)m;
2141   (void)n;
2142   (void)nrhs;
2143   (void)a;
2144   (void)lda;
2145   (void)b;
2146   (void)ldb;
2147   (void)s;
2148   (void)rcond;
2149   (void)rank;
2150   (void)work;
2151   (void)lwork;
2152   (void)iwork;
2153   (void)info;
2154   Assert(false, LAPACKSupport::ExcMissing("dgelsd"));
2155 #endif // DEAL_II_WITH_LAPACK
2156 }
2157 
2158 
2159 
2160 inline void
gelsd(const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * b,const dealii::types::blas_int * ldb,float * s,const float * rcond,dealii::types::blas_int * rank,std::complex<float> * work,const dealii::types::blas_int * lwork,float * rwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2161 gelsd(const dealii::types::blas_int *m,
2162       const dealii::types::blas_int *n,
2163       const dealii::types::blas_int *nrhs,
2164       std::complex<float> *          a,
2165       const dealii::types::blas_int *lda,
2166       std::complex<float> *          b,
2167       const dealii::types::blas_int *ldb,
2168       float *                        s,
2169       const float *                  rcond,
2170       dealii::types::blas_int *      rank,
2171       std::complex<float> *          work,
2172       const dealii::types::blas_int *lwork,
2173       float *                        rwork,
2174       dealii::types::blas_int *      iwork,
2175       dealii::types::blas_int *      info)
2176 {
2177 #ifdef DEAL_II_WITH_LAPACK
2178   cgelsd_(m,
2179           n,
2180           nrhs,
2181           a,
2182           lda,
2183           b,
2184           ldb,
2185           s,
2186           rcond,
2187           rank,
2188           work,
2189           lwork,
2190           rwork,
2191           iwork,
2192           info);
2193 #else
2194   (void)m;
2195   (void)n;
2196   (void)nrhs;
2197   (void)a;
2198   (void)lda;
2199   (void)b;
2200   (void)ldb;
2201   (void)s;
2202   (void)rcond;
2203   (void)rank;
2204   (void)work;
2205   (void)lwork;
2206   (void)rwork;
2207   (void)iwork;
2208   (void)info;
2209   Assert(false, LAPACKSupport::ExcMissing("cgelsd"));
2210 #endif // DEAL_II_WITH_LAPACK
2211 }
2212 
2213 
2214 
2215 inline void
gelsd(const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * b,const dealii::types::blas_int * ldb,double * s,const double * rcond,dealii::types::blas_int * rank,std::complex<double> * work,const dealii::types::blas_int * lwork,double * rwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2216 gelsd(const dealii::types::blas_int *m,
2217       const dealii::types::blas_int *n,
2218       const dealii::types::blas_int *nrhs,
2219       std::complex<double> *         a,
2220       const dealii::types::blas_int *lda,
2221       std::complex<double> *         b,
2222       const dealii::types::blas_int *ldb,
2223       double *                       s,
2224       const double *                 rcond,
2225       dealii::types::blas_int *      rank,
2226       std::complex<double> *         work,
2227       const dealii::types::blas_int *lwork,
2228       double *                       rwork,
2229       dealii::types::blas_int *      iwork,
2230       dealii::types::blas_int *      info)
2231 {
2232 #ifdef DEAL_II_WITH_LAPACK
2233   zgelsd_(m,
2234           n,
2235           nrhs,
2236           a,
2237           lda,
2238           b,
2239           ldb,
2240           s,
2241           rcond,
2242           rank,
2243           work,
2244           lwork,
2245           rwork,
2246           iwork,
2247           info);
2248 #else
2249   (void)m;
2250   (void)n;
2251   (void)nrhs;
2252   (void)a;
2253   (void)lda;
2254   (void)b;
2255   (void)ldb;
2256   (void)s;
2257   (void)rcond;
2258   (void)rank;
2259   (void)work;
2260   (void)lwork;
2261   (void)rwork;
2262   (void)iwork;
2263   (void)info;
2264   Assert(false, LAPACKSupport::ExcMissing("zgelsd"));
2265 #endif // DEAL_II_WITH_LAPACK
2266 }
2267 
2268 
2269 
2270 template <typename number1,
2271           typename number2,
2272           typename number3,
2273           typename number4,
2274           typename number5>
2275 inline void
gemm(const char *,const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const number2 *,const dealii::types::blas_int *,const number3 *,const dealii::types::blas_int *,const number4 *,number5 *,const dealii::types::blas_int *)2276 gemm(const char *,
2277      const char *,
2278      const dealii::types::blas_int *,
2279      const dealii::types::blas_int *,
2280      const dealii::types::blas_int *,
2281      const number1 *,
2282      const number2 *,
2283      const dealii::types::blas_int *,
2284      const number3 *,
2285      const dealii::types::blas_int *,
2286      const number4 *,
2287      number5 *,
2288      const dealii::types::blas_int *)
2289 {
2290   Assert(false, ExcNotImplemented());
2291 }
2292 
2293 
2294 
2295 inline void
gemm(const char * transa,const char * transb,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const float * alpha,const float * a,const dealii::types::blas_int * lda,const float * b,const dealii::types::blas_int * ldb,const float * beta,float * c,const dealii::types::blas_int * ldc)2296 gemm(const char *                   transa,
2297      const char *                   transb,
2298      const dealii::types::blas_int *m,
2299      const dealii::types::blas_int *n,
2300      const dealii::types::blas_int *k,
2301      const float *                  alpha,
2302      const float *                  a,
2303      const dealii::types::blas_int *lda,
2304      const float *                  b,
2305      const dealii::types::blas_int *ldb,
2306      const float *                  beta,
2307      float *                        c,
2308      const dealii::types::blas_int *ldc)
2309 {
2310 #ifdef DEAL_II_WITH_LAPACK
2311   sgemm_(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
2312 #else
2313   (void)transa;
2314   (void)transb;
2315   (void)m;
2316   (void)n;
2317   (void)k;
2318   (void)alpha;
2319   (void)a;
2320   (void)lda;
2321   (void)b;
2322   (void)ldb;
2323   (void)beta;
2324   (void)c;
2325   (void)ldc;
2326   Assert(false, LAPACKSupport::ExcMissing("sgemm"));
2327 #endif // DEAL_II_WITH_LAPACK
2328 }
2329 
2330 
2331 
2332 inline void
gemm(const char * transa,const char * transb,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const double * alpha,const double * a,const dealii::types::blas_int * lda,const double * b,const dealii::types::blas_int * ldb,const double * beta,double * c,const dealii::types::blas_int * ldc)2333 gemm(const char *                   transa,
2334      const char *                   transb,
2335      const dealii::types::blas_int *m,
2336      const dealii::types::blas_int *n,
2337      const dealii::types::blas_int *k,
2338      const double *                 alpha,
2339      const double *                 a,
2340      const dealii::types::blas_int *lda,
2341      const double *                 b,
2342      const dealii::types::blas_int *ldb,
2343      const double *                 beta,
2344      double *                       c,
2345      const dealii::types::blas_int *ldc)
2346 {
2347 #ifdef DEAL_II_WITH_LAPACK
2348   dgemm_(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
2349 #else
2350   (void)transa;
2351   (void)transb;
2352   (void)m;
2353   (void)n;
2354   (void)k;
2355   (void)alpha;
2356   (void)a;
2357   (void)lda;
2358   (void)b;
2359   (void)ldb;
2360   (void)beta;
2361   (void)c;
2362   (void)ldc;
2363   Assert(false, LAPACKSupport::ExcMissing("dgemm"));
2364 #endif // DEAL_II_WITH_LAPACK
2365 }
2366 
2367 
2368 
2369 inline void
gemm(const char * transa,const char * transb,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const std::complex<float> * alpha,const std::complex<float> * a,const dealii::types::blas_int * lda,const std::complex<float> * b,const dealii::types::blas_int * ldb,const std::complex<float> * beta,std::complex<float> * c,const dealii::types::blas_int * ldc)2370 gemm(const char *                   transa,
2371      const char *                   transb,
2372      const dealii::types::blas_int *m,
2373      const dealii::types::blas_int *n,
2374      const dealii::types::blas_int *k,
2375      const std::complex<float> *    alpha,
2376      const std::complex<float> *    a,
2377      const dealii::types::blas_int *lda,
2378      const std::complex<float> *    b,
2379      const dealii::types::blas_int *ldb,
2380      const std::complex<float> *    beta,
2381      std::complex<float> *          c,
2382      const dealii::types::blas_int *ldc)
2383 {
2384 #ifdef DEAL_II_WITH_LAPACK
2385   cgemm_(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
2386 #else
2387   (void)transa;
2388   (void)transb;
2389   (void)m;
2390   (void)n;
2391   (void)k;
2392   (void)alpha;
2393   (void)a;
2394   (void)lda;
2395   (void)b;
2396   (void)ldb;
2397   (void)beta;
2398   (void)c;
2399   (void)ldc;
2400   Assert(false, LAPACKSupport::ExcMissing("cgemm"));
2401 #endif // DEAL_II_WITH_LAPACK
2402 }
2403 
2404 
2405 
2406 inline void
gemm(const char * transa,const char * transb,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const std::complex<double> * alpha,const std::complex<double> * a,const dealii::types::blas_int * lda,const std::complex<double> * b,const dealii::types::blas_int * ldb,const std::complex<double> * beta,std::complex<double> * c,const dealii::types::blas_int * ldc)2407 gemm(const char *                   transa,
2408      const char *                   transb,
2409      const dealii::types::blas_int *m,
2410      const dealii::types::blas_int *n,
2411      const dealii::types::blas_int *k,
2412      const std::complex<double> *   alpha,
2413      const std::complex<double> *   a,
2414      const dealii::types::blas_int *lda,
2415      const std::complex<double> *   b,
2416      const dealii::types::blas_int *ldb,
2417      const std::complex<double> *   beta,
2418      std::complex<double> *         c,
2419      const dealii::types::blas_int *ldc)
2420 {
2421 #ifdef DEAL_II_WITH_LAPACK
2422   zgemm_(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
2423 #else
2424   (void)transa;
2425   (void)transb;
2426   (void)m;
2427   (void)n;
2428   (void)k;
2429   (void)alpha;
2430   (void)a;
2431   (void)lda;
2432   (void)b;
2433   (void)ldb;
2434   (void)beta;
2435   (void)c;
2436   (void)ldc;
2437   Assert(false, LAPACKSupport::ExcMissing("zgemm"));
2438 #endif // DEAL_II_WITH_LAPACK
2439 }
2440 
2441 
2442 
2443 template <typename number1,
2444           typename number2,
2445           typename number3,
2446           typename number4,
2447           typename number5>
2448 inline void
gemv(const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const number2 *,const dealii::types::blas_int *,const number3 *,const dealii::types::blas_int *,const number4 *,number5 *,const dealii::types::blas_int *)2449 gemv(const char *,
2450      const dealii::types::blas_int *,
2451      const dealii::types::blas_int *,
2452      const number1 *,
2453      const number2 *,
2454      const dealii::types::blas_int *,
2455      const number3 *,
2456      const dealii::types::blas_int *,
2457      const number4 *,
2458      number5 *,
2459      const dealii::types::blas_int *)
2460 {
2461   Assert(false, ExcNotImplemented());
2462 }
2463 
2464 
2465 
2466 inline void
gemv(const char * trans,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const float * alpha,const float * a,const dealii::types::blas_int * lda,const float * x,const dealii::types::blas_int * incx,const float * beta,float * y,const dealii::types::blas_int * incy)2467 gemv(const char *                   trans,
2468      const dealii::types::blas_int *m,
2469      const dealii::types::blas_int *n,
2470      const float *                  alpha,
2471      const float *                  a,
2472      const dealii::types::blas_int *lda,
2473      const float *                  x,
2474      const dealii::types::blas_int *incx,
2475      const float *                  beta,
2476      float *                        y,
2477      const dealii::types::blas_int *incy)
2478 {
2479 #ifdef DEAL_II_WITH_LAPACK
2480   sgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
2481 #else
2482   (void)trans;
2483   (void)m;
2484   (void)n;
2485   (void)alpha;
2486   (void)a;
2487   (void)lda;
2488   (void)x;
2489   (void)incx;
2490   (void)beta;
2491   (void)y;
2492   (void)incy;
2493   Assert(false, LAPACKSupport::ExcMissing("sgemv"));
2494 #endif // DEAL_II_WITH_LAPACK
2495 }
2496 
2497 
2498 
2499 inline void
gemv(const char * trans,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const double * alpha,const double * a,const dealii::types::blas_int * lda,const double * x,const dealii::types::blas_int * incx,const double * beta,double * y,const dealii::types::blas_int * incy)2500 gemv(const char *                   trans,
2501      const dealii::types::blas_int *m,
2502      const dealii::types::blas_int *n,
2503      const double *                 alpha,
2504      const double *                 a,
2505      const dealii::types::blas_int *lda,
2506      const double *                 x,
2507      const dealii::types::blas_int *incx,
2508      const double *                 beta,
2509      double *                       y,
2510      const dealii::types::blas_int *incy)
2511 {
2512 #ifdef DEAL_II_WITH_LAPACK
2513   dgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
2514 #else
2515   (void)trans;
2516   (void)m;
2517   (void)n;
2518   (void)alpha;
2519   (void)a;
2520   (void)lda;
2521   (void)x;
2522   (void)incx;
2523   (void)beta;
2524   (void)y;
2525   (void)incy;
2526   Assert(false, LAPACKSupport::ExcMissing("dgemv"));
2527 #endif // DEAL_II_WITH_LAPACK
2528 }
2529 
2530 
2531 
2532 inline void
gemv(const char * trans,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const std::complex<float> * alpha,const std::complex<float> * a,const dealii::types::blas_int * lda,const std::complex<float> * x,const dealii::types::blas_int * incx,const std::complex<float> * beta,std::complex<float> * y,const dealii::types::blas_int * incy)2533 gemv(const char *                   trans,
2534      const dealii::types::blas_int *m,
2535      const dealii::types::blas_int *n,
2536      const std::complex<float> *    alpha,
2537      const std::complex<float> *    a,
2538      const dealii::types::blas_int *lda,
2539      const std::complex<float> *    x,
2540      const dealii::types::blas_int *incx,
2541      const std::complex<float> *    beta,
2542      std::complex<float> *          y,
2543      const dealii::types::blas_int *incy)
2544 {
2545 #ifdef DEAL_II_WITH_LAPACK
2546   cgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
2547 #else
2548   (void)trans;
2549   (void)m;
2550   (void)n;
2551   (void)alpha;
2552   (void)a;
2553   (void)lda;
2554   (void)x;
2555   (void)incx;
2556   (void)beta;
2557   (void)y;
2558   (void)incy;
2559   Assert(false, LAPACKSupport::ExcMissing("cgemv"));
2560 #endif // DEAL_II_WITH_LAPACK
2561 }
2562 
2563 
2564 
2565 inline void
gemv(const char * trans,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const std::complex<double> * alpha,const std::complex<double> * a,const dealii::types::blas_int * lda,const std::complex<double> * x,const dealii::types::blas_int * incx,const std::complex<double> * beta,std::complex<double> * y,const dealii::types::blas_int * incy)2566 gemv(const char *                   trans,
2567      const dealii::types::blas_int *m,
2568      const dealii::types::blas_int *n,
2569      const std::complex<double> *   alpha,
2570      const std::complex<double> *   a,
2571      const dealii::types::blas_int *lda,
2572      const std::complex<double> *   x,
2573      const dealii::types::blas_int *incx,
2574      const std::complex<double> *   beta,
2575      std::complex<double> *         y,
2576      const dealii::types::blas_int *incy)
2577 {
2578 #ifdef DEAL_II_WITH_LAPACK
2579   zgemv_(trans, m, n, alpha, a, lda, x, incx, beta, y, incy);
2580 #else
2581   (void)trans;
2582   (void)m;
2583   (void)n;
2584   (void)alpha;
2585   (void)a;
2586   (void)lda;
2587   (void)x;
2588   (void)incx;
2589   (void)beta;
2590   (void)y;
2591   (void)incy;
2592   Assert(false, LAPACKSupport::ExcMissing("zgemv"));
2593 #endif // DEAL_II_WITH_LAPACK
2594 }
2595 
2596 
2597 
2598 template <typename number1, typename number2, typename number3>
2599 inline void
geqrf(const dealii::types::blas_int *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,number3 *,const dealii::types::blas_int *,dealii::types::blas_int *)2600 geqrf(const dealii::types::blas_int *,
2601       const dealii::types::blas_int *,
2602       number1 *,
2603       const dealii::types::blas_int *,
2604       number2 *,
2605       number3 *,
2606       const dealii::types::blas_int *,
2607       dealii::types::blas_int *)
2608 {
2609   Assert(false, ExcNotImplemented());
2610 }
2611 
2612 
2613 
2614 inline void
geqrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * tau,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)2615 geqrf(const dealii::types::blas_int *m,
2616       const dealii::types::blas_int *n,
2617       float *                        a,
2618       const dealii::types::blas_int *lda,
2619       float *                        tau,
2620       float *                        work,
2621       const dealii::types::blas_int *lwork,
2622       dealii::types::blas_int *      info)
2623 {
2624 #ifdef DEAL_II_WITH_LAPACK
2625   sgeqrf_(m, n, a, lda, tau, work, lwork, info);
2626 #else
2627   (void)m;
2628   (void)n;
2629   (void)a;
2630   (void)lda;
2631   (void)tau;
2632   (void)work;
2633   (void)lwork;
2634   (void)info;
2635   Assert(false, LAPACKSupport::ExcMissing("sgeqrf"));
2636 #endif // DEAL_II_WITH_LAPACK
2637 }
2638 
2639 
2640 
2641 inline void
geqrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * tau,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)2642 geqrf(const dealii::types::blas_int *m,
2643       const dealii::types::blas_int *n,
2644       double *                       a,
2645       const dealii::types::blas_int *lda,
2646       double *                       tau,
2647       double *                       work,
2648       const dealii::types::blas_int *lwork,
2649       dealii::types::blas_int *      info)
2650 {
2651 #ifdef DEAL_II_WITH_LAPACK
2652   dgeqrf_(m, n, a, lda, tau, work, lwork, info);
2653 #else
2654   (void)m;
2655   (void)n;
2656   (void)a;
2657   (void)lda;
2658   (void)tau;
2659   (void)work;
2660   (void)lwork;
2661   (void)info;
2662   Assert(false, LAPACKSupport::ExcMissing("dgeqrf"));
2663 #endif // DEAL_II_WITH_LAPACK
2664 }
2665 
2666 
2667 
2668 inline void
geqrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * tau,std::complex<float> * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)2669 geqrf(const dealii::types::blas_int *m,
2670       const dealii::types::blas_int *n,
2671       std::complex<float> *          a,
2672       const dealii::types::blas_int *lda,
2673       std::complex<float> *          tau,
2674       std::complex<float> *          work,
2675       const dealii::types::blas_int *lwork,
2676       dealii::types::blas_int *      info)
2677 {
2678 #ifdef DEAL_II_WITH_LAPACK
2679   cgeqrf_(m, n, a, lda, tau, work, lwork, info);
2680 #else
2681   (void)m;
2682   (void)n;
2683   (void)a;
2684   (void)lda;
2685   (void)tau;
2686   (void)work;
2687   (void)lwork;
2688   (void)info;
2689   Assert(false, LAPACKSupport::ExcMissing("cgeqrf"));
2690 #endif // DEAL_II_WITH_LAPACK
2691 }
2692 
2693 
2694 
2695 inline void
geqrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * tau,std::complex<double> * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)2696 geqrf(const dealii::types::blas_int *m,
2697       const dealii::types::blas_int *n,
2698       std::complex<double> *         a,
2699       const dealii::types::blas_int *lda,
2700       std::complex<double> *         tau,
2701       std::complex<double> *         work,
2702       const dealii::types::blas_int *lwork,
2703       dealii::types::blas_int *      info)
2704 {
2705 #ifdef DEAL_II_WITH_LAPACK
2706   zgeqrf_(m, n, a, lda, tau, work, lwork, info);
2707 #else
2708   (void)m;
2709   (void)n;
2710   (void)a;
2711   (void)lda;
2712   (void)tau;
2713   (void)work;
2714   (void)lwork;
2715   (void)info;
2716   Assert(false, LAPACKSupport::ExcMissing("zgeqrf"));
2717 #endif // DEAL_II_WITH_LAPACK
2718 }
2719 
2720 
2721 
2722 template <typename number1,
2723           typename number2,
2724           typename number3,
2725           typename number4,
2726           typename number5>
2727 inline void
gesdd(const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,number3 *,const dealii::types::blas_int *,number4 *,const dealii::types::blas_int *,number5 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *)2728 gesdd(const char *,
2729       const dealii::types::blas_int *,
2730       const dealii::types::blas_int *,
2731       number1 *,
2732       const dealii::types::blas_int *,
2733       number2 *,
2734       number3 *,
2735       const dealii::types::blas_int *,
2736       number4 *,
2737       const dealii::types::blas_int *,
2738       number5 *,
2739       const dealii::types::blas_int *,
2740       dealii::types::blas_int *,
2741       dealii::types::blas_int *)
2742 {
2743   Assert(false, ExcNotImplemented());
2744 }
2745 
2746 
2747 
2748 inline void
gesdd(const char * jobz,const dealii::types::blas_int * m,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * s,float * u,const dealii::types::blas_int * ldu,float * vt,const dealii::types::blas_int * ldvt,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2749 gesdd(const char *                   jobz,
2750       const dealii::types::blas_int *m,
2751       const dealii::types::blas_int *n,
2752       float *                        a,
2753       const dealii::types::blas_int *lda,
2754       float *                        s,
2755       float *                        u,
2756       const dealii::types::blas_int *ldu,
2757       float *                        vt,
2758       const dealii::types::blas_int *ldvt,
2759       float *                        work,
2760       const dealii::types::blas_int *lwork,
2761       dealii::types::blas_int *      iwork,
2762       dealii::types::blas_int *      info)
2763 {
2764 #ifdef DEAL_II_WITH_LAPACK
2765   sgesdd_(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork, info);
2766 #else
2767   (void)jobz;
2768   (void)m;
2769   (void)n;
2770   (void)a;
2771   (void)lda;
2772   (void)s;
2773   (void)u;
2774   (void)ldu;
2775   (void)vt;
2776   (void)ldvt;
2777   (void)work;
2778   (void)lwork;
2779   (void)iwork;
2780   (void)info;
2781   Assert(false, LAPACKSupport::ExcMissing("sgesdd"));
2782 #endif // DEAL_II_WITH_LAPACK
2783 }
2784 
2785 
2786 
2787 inline void
gesdd(const char * jobz,const dealii::types::blas_int * m,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * s,double * u,const dealii::types::blas_int * ldu,double * vt,const dealii::types::blas_int * ldvt,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2788 gesdd(const char *                   jobz,
2789       const dealii::types::blas_int *m,
2790       const dealii::types::blas_int *n,
2791       double *                       a,
2792       const dealii::types::blas_int *lda,
2793       double *                       s,
2794       double *                       u,
2795       const dealii::types::blas_int *ldu,
2796       double *                       vt,
2797       const dealii::types::blas_int *ldvt,
2798       double *                       work,
2799       const dealii::types::blas_int *lwork,
2800       dealii::types::blas_int *      iwork,
2801       dealii::types::blas_int *      info)
2802 {
2803 #ifdef DEAL_II_WITH_LAPACK
2804   dgesdd_(jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, iwork, info);
2805 #else
2806   (void)jobz;
2807   (void)m;
2808   (void)n;
2809   (void)a;
2810   (void)lda;
2811   (void)s;
2812   (void)u;
2813   (void)ldu;
2814   (void)vt;
2815   (void)ldvt;
2816   (void)work;
2817   (void)lwork;
2818   (void)iwork;
2819   (void)info;
2820   Assert(false, LAPACKSupport::ExcMissing("dgesdd"));
2821 #endif // DEAL_II_WITH_LAPACK
2822 }
2823 
2824 
2825 
2826 inline void
gesdd(const char * jobz,const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,float * s,std::complex<float> * u,const dealii::types::blas_int * ldu,std::complex<float> * vt,const dealii::types::blas_int * ldvt,std::complex<float> * work,const dealii::types::blas_int * lwork,float * rwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2827 gesdd(const char *                   jobz,
2828       const dealii::types::blas_int *m,
2829       const dealii::types::blas_int *n,
2830       std::complex<float> *          a,
2831       const dealii::types::blas_int *lda,
2832       float *                        s,
2833       std::complex<float> *          u,
2834       const dealii::types::blas_int *ldu,
2835       std::complex<float> *          vt,
2836       const dealii::types::blas_int *ldvt,
2837       std::complex<float> *          work,
2838       const dealii::types::blas_int *lwork,
2839       float *                        rwork,
2840       dealii::types::blas_int *      iwork,
2841       dealii::types::blas_int *      info)
2842 {
2843 #ifdef DEAL_II_WITH_LAPACK
2844   cgesdd_(
2845     jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info);
2846 #else
2847   (void)jobz;
2848   (void)m;
2849   (void)n;
2850   (void)a;
2851   (void)lda;
2852   (void)s;
2853   (void)u;
2854   (void)ldu;
2855   (void)vt;
2856   (void)ldvt;
2857   (void)work;
2858   (void)lwork;
2859   (void)rwork;
2860   (void)iwork;
2861   (void)info;
2862   Assert(false, LAPACKSupport::ExcMissing("cgesdd"));
2863 #endif // DEAL_II_WITH_LAPACK
2864 }
2865 
2866 
2867 
2868 inline void
gesdd(const char * jobz,const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,double * s,std::complex<double> * u,const dealii::types::blas_int * ldu,std::complex<double> * vt,const dealii::types::blas_int * ldvt,std::complex<double> * work,const dealii::types::blas_int * lwork,double * rwork,dealii::types::blas_int * iwork,dealii::types::blas_int * info)2869 gesdd(const char *                   jobz,
2870       const dealii::types::blas_int *m,
2871       const dealii::types::blas_int *n,
2872       std::complex<double> *         a,
2873       const dealii::types::blas_int *lda,
2874       double *                       s,
2875       std::complex<double> *         u,
2876       const dealii::types::blas_int *ldu,
2877       std::complex<double> *         vt,
2878       const dealii::types::blas_int *ldvt,
2879       std::complex<double> *         work,
2880       const dealii::types::blas_int *lwork,
2881       double *                       rwork,
2882       dealii::types::blas_int *      iwork,
2883       dealii::types::blas_int *      info)
2884 {
2885 #ifdef DEAL_II_WITH_LAPACK
2886   zgesdd_(
2887     jobz, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, iwork, info);
2888 #else
2889   (void)jobz;
2890   (void)m;
2891   (void)n;
2892   (void)a;
2893   (void)lda;
2894   (void)s;
2895   (void)u;
2896   (void)ldu;
2897   (void)vt;
2898   (void)ldvt;
2899   (void)work;
2900   (void)lwork;
2901   (void)rwork;
2902   (void)iwork;
2903   (void)info;
2904   Assert(false, LAPACKSupport::ExcMissing("zgesdd"));
2905 #endif // DEAL_II_WITH_LAPACK
2906 }
2907 
2908 
2909 
2910 template <typename number1,
2911           typename number2,
2912           typename number3,
2913           typename number4,
2914           typename number5>
2915 inline void
gesvd(const char *,const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,number3 *,const dealii::types::blas_int *,number4 *,const dealii::types::blas_int *,number5 *,const dealii::types::blas_int *,dealii::types::blas_int *)2916 gesvd(const char *,
2917       const char *,
2918       const dealii::types::blas_int *,
2919       const dealii::types::blas_int *,
2920       number1 *,
2921       const dealii::types::blas_int *,
2922       number2 *,
2923       number3 *,
2924       const dealii::types::blas_int *,
2925       number4 *,
2926       const dealii::types::blas_int *,
2927       number5 *,
2928       const dealii::types::blas_int *,
2929       dealii::types::blas_int *)
2930 {
2931   Assert(false, ExcNotImplemented());
2932 }
2933 
2934 
2935 
2936 inline void
gesvd(const char * jobu,const char * jobvt,const dealii::types::blas_int * m,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * s,float * u,const dealii::types::blas_int * ldu,float * vt,const dealii::types::blas_int * ldvt,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)2937 gesvd(const char *                   jobu,
2938       const char *                   jobvt,
2939       const dealii::types::blas_int *m,
2940       const dealii::types::blas_int *n,
2941       float *                        a,
2942       const dealii::types::blas_int *lda,
2943       float *                        s,
2944       float *                        u,
2945       const dealii::types::blas_int *ldu,
2946       float *                        vt,
2947       const dealii::types::blas_int *ldvt,
2948       float *                        work,
2949       const dealii::types::blas_int *lwork,
2950       dealii::types::blas_int *      info)
2951 {
2952 #ifdef DEAL_II_WITH_LAPACK
2953   sgesvd_(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info);
2954 #else
2955   (void)jobu;
2956   (void)jobvt;
2957   (void)m;
2958   (void)n;
2959   (void)a;
2960   (void)lda;
2961   (void)s;
2962   (void)u;
2963   (void)ldu;
2964   (void)vt;
2965   (void)ldvt;
2966   (void)work;
2967   (void)lwork;
2968   (void)info;
2969   Assert(false, LAPACKSupport::ExcMissing("sgesvd"));
2970 #endif // DEAL_II_WITH_LAPACK
2971 }
2972 
2973 
2974 
2975 inline void
gesvd(const char * jobu,const char * jobvt,const dealii::types::blas_int * m,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * s,double * u,const dealii::types::blas_int * ldu,double * vt,const dealii::types::blas_int * ldvt,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)2976 gesvd(const char *                   jobu,
2977       const char *                   jobvt,
2978       const dealii::types::blas_int *m,
2979       const dealii::types::blas_int *n,
2980       double *                       a,
2981       const dealii::types::blas_int *lda,
2982       double *                       s,
2983       double *                       u,
2984       const dealii::types::blas_int *ldu,
2985       double *                       vt,
2986       const dealii::types::blas_int *ldvt,
2987       double *                       work,
2988       const dealii::types::blas_int *lwork,
2989       dealii::types::blas_int *      info)
2990 {
2991 #ifdef DEAL_II_WITH_LAPACK
2992   dgesvd_(jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, info);
2993 #else
2994   (void)jobu;
2995   (void)jobvt;
2996   (void)m;
2997   (void)n;
2998   (void)a;
2999   (void)lda;
3000   (void)s;
3001   (void)u;
3002   (void)ldu;
3003   (void)vt;
3004   (void)ldvt;
3005   (void)work;
3006   (void)lwork;
3007   (void)info;
3008   Assert(false, LAPACKSupport::ExcMissing("dgesvd"));
3009 #endif // DEAL_II_WITH_LAPACK
3010 }
3011 
3012 
3013 
3014 inline void
gesvd(const char * jobu,const char * jobvt,const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,float * s,std::complex<float> * u,const dealii::types::blas_int * ldu,std::complex<float> * vt,const dealii::types::blas_int * ldvt,std::complex<float> * work,const dealii::types::blas_int * lwork,float * rwork,dealii::types::blas_int * info)3015 gesvd(const char *                   jobu,
3016       const char *                   jobvt,
3017       const dealii::types::blas_int *m,
3018       const dealii::types::blas_int *n,
3019       std::complex<float> *          a,
3020       const dealii::types::blas_int *lda,
3021       float *                        s,
3022       std::complex<float> *          u,
3023       const dealii::types::blas_int *ldu,
3024       std::complex<float> *          vt,
3025       const dealii::types::blas_int *ldvt,
3026       std::complex<float> *          work,
3027       const dealii::types::blas_int *lwork,
3028       float *                        rwork,
3029       dealii::types::blas_int *      info)
3030 {
3031 #ifdef DEAL_II_WITH_LAPACK
3032   cgesvd_(
3033     jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info);
3034 #else
3035   (void)jobu;
3036   (void)jobvt;
3037   (void)m;
3038   (void)n;
3039   (void)a;
3040   (void)lda;
3041   (void)s;
3042   (void)u;
3043   (void)ldu;
3044   (void)vt;
3045   (void)ldvt;
3046   (void)work;
3047   (void)lwork;
3048   (void)rwork;
3049   (void)info;
3050   Assert(false, LAPACKSupport::ExcMissing("cgesvd"));
3051 #endif // DEAL_II_WITH_LAPACK
3052 }
3053 
3054 
3055 
3056 inline void
gesvd(const char * jobu,const char * jobvt,const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,double * s,std::complex<double> * u,const dealii::types::blas_int * ldu,std::complex<double> * vt,const dealii::types::blas_int * ldvt,std::complex<double> * work,const dealii::types::blas_int * lwork,double * rwork,dealii::types::blas_int * info)3057 gesvd(const char *                   jobu,
3058       const char *                   jobvt,
3059       const dealii::types::blas_int *m,
3060       const dealii::types::blas_int *n,
3061       std::complex<double> *         a,
3062       const dealii::types::blas_int *lda,
3063       double *                       s,
3064       std::complex<double> *         u,
3065       const dealii::types::blas_int *ldu,
3066       std::complex<double> *         vt,
3067       const dealii::types::blas_int *ldvt,
3068       std::complex<double> *         work,
3069       const dealii::types::blas_int *lwork,
3070       double *                       rwork,
3071       dealii::types::blas_int *      info)
3072 {
3073 #ifdef DEAL_II_WITH_LAPACK
3074   zgesvd_(
3075     jobu, jobvt, m, n, a, lda, s, u, ldu, vt, ldvt, work, lwork, rwork, info);
3076 #else
3077   (void)jobu;
3078   (void)jobvt;
3079   (void)m;
3080   (void)n;
3081   (void)a;
3082   (void)lda;
3083   (void)s;
3084   (void)u;
3085   (void)ldu;
3086   (void)vt;
3087   (void)ldvt;
3088   (void)work;
3089   (void)lwork;
3090   (void)rwork;
3091   (void)info;
3092   Assert(false, LAPACKSupport::ExcMissing("zgesvd"));
3093 #endif // DEAL_II_WITH_LAPACK
3094 }
3095 
3096 
3097 
3098 template <typename number1>
3099 inline void
getrf(const dealii::types::blas_int *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *)3100 getrf(const dealii::types::blas_int *,
3101       const dealii::types::blas_int *,
3102       number1 *,
3103       const dealii::types::blas_int *,
3104       dealii::types::blas_int *,
3105       dealii::types::blas_int *)
3106 {
3107   Assert(false, ExcNotImplemented());
3108 }
3109 
3110 
3111 
3112 inline void
getrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,dealii::types::blas_int * ipiv,dealii::types::blas_int * info)3113 getrf(const dealii::types::blas_int *m,
3114       const dealii::types::blas_int *n,
3115       float *                        a,
3116       const dealii::types::blas_int *lda,
3117       dealii::types::blas_int *      ipiv,
3118       dealii::types::blas_int *      info)
3119 {
3120 #ifdef DEAL_II_WITH_LAPACK
3121   sgetrf_(m, n, a, lda, ipiv, info);
3122 #else
3123   (void)m;
3124   (void)n;
3125   (void)a;
3126   (void)lda;
3127   (void)ipiv;
3128   (void)info;
3129   Assert(false, LAPACKSupport::ExcMissing("sgetrf"));
3130 #endif // DEAL_II_WITH_LAPACK
3131 }
3132 
3133 
3134 
3135 inline void
getrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,dealii::types::blas_int * ipiv,dealii::types::blas_int * info)3136 getrf(const dealii::types::blas_int *m,
3137       const dealii::types::blas_int *n,
3138       double *                       a,
3139       const dealii::types::blas_int *lda,
3140       dealii::types::blas_int *      ipiv,
3141       dealii::types::blas_int *      info)
3142 {
3143 #ifdef DEAL_II_WITH_LAPACK
3144   dgetrf_(m, n, a, lda, ipiv, info);
3145 #else
3146   (void)m;
3147   (void)n;
3148   (void)a;
3149   (void)lda;
3150   (void)ipiv;
3151   (void)info;
3152   Assert(false, LAPACKSupport::ExcMissing("dgetrf"));
3153 #endif // DEAL_II_WITH_LAPACK
3154 }
3155 
3156 
3157 
3158 inline void
getrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * ipiv,dealii::types::blas_int * info)3159 getrf(const dealii::types::blas_int *m,
3160       const dealii::types::blas_int *n,
3161       std::complex<float> *          a,
3162       const dealii::types::blas_int *lda,
3163       dealii::types::blas_int *      ipiv,
3164       dealii::types::blas_int *      info)
3165 {
3166 #ifdef DEAL_II_WITH_LAPACK
3167   cgetrf_(m, n, a, lda, ipiv, info);
3168 #else
3169   (void)m;
3170   (void)n;
3171   (void)a;
3172   (void)lda;
3173   (void)ipiv;
3174   (void)info;
3175   Assert(false, LAPACKSupport::ExcMissing("cgetrf"));
3176 #endif // DEAL_II_WITH_LAPACK
3177 }
3178 
3179 
3180 
3181 inline void
getrf(const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * ipiv,dealii::types::blas_int * info)3182 getrf(const dealii::types::blas_int *m,
3183       const dealii::types::blas_int *n,
3184       std::complex<double> *         a,
3185       const dealii::types::blas_int *lda,
3186       dealii::types::blas_int *      ipiv,
3187       dealii::types::blas_int *      info)
3188 {
3189 #ifdef DEAL_II_WITH_LAPACK
3190   zgetrf_(m, n, a, lda, ipiv, info);
3191 #else
3192   (void)m;
3193   (void)n;
3194   (void)a;
3195   (void)lda;
3196   (void)ipiv;
3197   (void)info;
3198   Assert(false, LAPACKSupport::ExcMissing("zgetrf"));
3199 #endif // DEAL_II_WITH_LAPACK
3200 }
3201 
3202 
3203 
3204 template <typename number1, typename number2>
3205 inline void
getri(const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,dealii::types::blas_int *)3206 getri(const dealii::types::blas_int *,
3207       number1 *,
3208       const dealii::types::blas_int *,
3209       const dealii::types::blas_int *,
3210       number2 *,
3211       const dealii::types::blas_int *,
3212       dealii::types::blas_int *)
3213 {
3214   Assert(false, ExcNotImplemented());
3215 }
3216 
3217 
3218 
3219 inline void
getri(const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3220 getri(const dealii::types::blas_int *n,
3221       float *                        a,
3222       const dealii::types::blas_int *lda,
3223       const dealii::types::blas_int *ipiv,
3224       float *                        work,
3225       const dealii::types::blas_int *lwork,
3226       dealii::types::blas_int *      info)
3227 {
3228 #ifdef DEAL_II_WITH_LAPACK
3229   sgetri_(n, a, lda, ipiv, work, lwork, info);
3230 #else
3231   (void)n;
3232   (void)a;
3233   (void)lda;
3234   (void)ipiv;
3235   (void)work;
3236   (void)lwork;
3237   (void)info;
3238   Assert(false, LAPACKSupport::ExcMissing("sgetri"));
3239 #endif // DEAL_II_WITH_LAPACK
3240 }
3241 
3242 
3243 
3244 inline void
getri(const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3245 getri(const dealii::types::blas_int *n,
3246       double *                       a,
3247       const dealii::types::blas_int *lda,
3248       const dealii::types::blas_int *ipiv,
3249       double *                       work,
3250       const dealii::types::blas_int *lwork,
3251       dealii::types::blas_int *      info)
3252 {
3253 #ifdef DEAL_II_WITH_LAPACK
3254   dgetri_(n, a, lda, ipiv, work, lwork, info);
3255 #else
3256   (void)n;
3257   (void)a;
3258   (void)lda;
3259   (void)ipiv;
3260   (void)work;
3261   (void)lwork;
3262   (void)info;
3263   Assert(false, LAPACKSupport::ExcMissing("dgetri"));
3264 #endif // DEAL_II_WITH_LAPACK
3265 }
3266 
3267 
3268 
3269 inline void
getri(const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,std::complex<float> * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3270 getri(const dealii::types::blas_int *n,
3271       std::complex<float> *          a,
3272       const dealii::types::blas_int *lda,
3273       const dealii::types::blas_int *ipiv,
3274       std::complex<float> *          work,
3275       const dealii::types::blas_int *lwork,
3276       dealii::types::blas_int *      info)
3277 {
3278 #ifdef DEAL_II_WITH_LAPACK
3279   cgetri_(n, a, lda, ipiv, work, lwork, info);
3280 #else
3281   (void)n;
3282   (void)a;
3283   (void)lda;
3284   (void)ipiv;
3285   (void)work;
3286   (void)lwork;
3287   (void)info;
3288   Assert(false, LAPACKSupport::ExcMissing("cgetri"));
3289 #endif // DEAL_II_WITH_LAPACK
3290 }
3291 
3292 
3293 
3294 inline void
getri(const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,std::complex<double> * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3295 getri(const dealii::types::blas_int *n,
3296       std::complex<double> *         a,
3297       const dealii::types::blas_int *lda,
3298       const dealii::types::blas_int *ipiv,
3299       std::complex<double> *         work,
3300       const dealii::types::blas_int *lwork,
3301       dealii::types::blas_int *      info)
3302 {
3303 #ifdef DEAL_II_WITH_LAPACK
3304   zgetri_(n, a, lda, ipiv, work, lwork, info);
3305 #else
3306   (void)n;
3307   (void)a;
3308   (void)lda;
3309   (void)ipiv;
3310   (void)work;
3311   (void)lwork;
3312   (void)info;
3313   Assert(false, LAPACKSupport::ExcMissing("zgetri"));
3314 #endif // DEAL_II_WITH_LAPACK
3315 }
3316 
3317 
3318 
3319 template <typename number1, typename number2>
3320 inline void
getrs(const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,dealii::types::blas_int *)3321 getrs(const char *,
3322       const dealii::types::blas_int *,
3323       const dealii::types::blas_int *,
3324       const number1 *,
3325       const dealii::types::blas_int *,
3326       const dealii::types::blas_int *,
3327       number2 *,
3328       const dealii::types::blas_int *,
3329       dealii::types::blas_int *)
3330 {
3331   Assert(false, ExcNotImplemented());
3332 }
3333 
3334 
3335 
3336 inline void
getrs(const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const float * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,float * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)3337 getrs(const char *                   trans,
3338       const dealii::types::blas_int *n,
3339       const dealii::types::blas_int *nrhs,
3340       const float *                  a,
3341       const dealii::types::blas_int *lda,
3342       const dealii::types::blas_int *ipiv,
3343       float *                        b,
3344       const dealii::types::blas_int *ldb,
3345       dealii::types::blas_int *      info)
3346 {
3347 #ifdef DEAL_II_WITH_LAPACK
3348   sgetrs_(trans, n, nrhs, a, lda, ipiv, b, ldb, info);
3349 #else
3350   (void)trans;
3351   (void)n;
3352   (void)nrhs;
3353   (void)a;
3354   (void)lda;
3355   (void)ipiv;
3356   (void)b;
3357   (void)ldb;
3358   (void)info;
3359   Assert(false, LAPACKSupport::ExcMissing("sgetrs"));
3360 #endif // DEAL_II_WITH_LAPACK
3361 }
3362 
3363 
3364 
3365 inline void
getrs(const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const double * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,double * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)3366 getrs(const char *                   trans,
3367       const dealii::types::blas_int *n,
3368       const dealii::types::blas_int *nrhs,
3369       const double *                 a,
3370       const dealii::types::blas_int *lda,
3371       const dealii::types::blas_int *ipiv,
3372       double *                       b,
3373       const dealii::types::blas_int *ldb,
3374       dealii::types::blas_int *      info)
3375 {
3376 #ifdef DEAL_II_WITH_LAPACK
3377   dgetrs_(trans, n, nrhs, a, lda, ipiv, b, ldb, info);
3378 #else
3379   (void)trans;
3380   (void)n;
3381   (void)nrhs;
3382   (void)a;
3383   (void)lda;
3384   (void)ipiv;
3385   (void)b;
3386   (void)ldb;
3387   (void)info;
3388   Assert(false, LAPACKSupport::ExcMissing("dgetrs"));
3389 #endif // DEAL_II_WITH_LAPACK
3390 }
3391 
3392 
3393 
3394 inline void
getrs(const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const std::complex<float> * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,std::complex<float> * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)3395 getrs(const char *                   trans,
3396       const dealii::types::blas_int *n,
3397       const dealii::types::blas_int *nrhs,
3398       const std::complex<float> *    a,
3399       const dealii::types::blas_int *lda,
3400       const dealii::types::blas_int *ipiv,
3401       std::complex<float> *          b,
3402       const dealii::types::blas_int *ldb,
3403       dealii::types::blas_int *      info)
3404 {
3405 #ifdef DEAL_II_WITH_LAPACK
3406   cgetrs_(trans, n, nrhs, a, lda, ipiv, b, ldb, info);
3407 #else
3408   (void)trans;
3409   (void)n;
3410   (void)nrhs;
3411   (void)a;
3412   (void)lda;
3413   (void)ipiv;
3414   (void)b;
3415   (void)ldb;
3416   (void)info;
3417   Assert(false, LAPACKSupport::ExcMissing("cgetrs"));
3418 #endif // DEAL_II_WITH_LAPACK
3419 }
3420 
3421 
3422 
3423 inline void
getrs(const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const std::complex<double> * a,const dealii::types::blas_int * lda,const dealii::types::blas_int * ipiv,std::complex<double> * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)3424 getrs(const char *                   trans,
3425       const dealii::types::blas_int *n,
3426       const dealii::types::blas_int *nrhs,
3427       const std::complex<double> *   a,
3428       const dealii::types::blas_int *lda,
3429       const dealii::types::blas_int *ipiv,
3430       std::complex<double> *         b,
3431       const dealii::types::blas_int *ldb,
3432       dealii::types::blas_int *      info)
3433 {
3434 #ifdef DEAL_II_WITH_LAPACK
3435   zgetrs_(trans, n, nrhs, a, lda, ipiv, b, ldb, info);
3436 #else
3437   (void)trans;
3438   (void)n;
3439   (void)nrhs;
3440   (void)a;
3441   (void)lda;
3442   (void)ipiv;
3443   (void)b;
3444   (void)ldb;
3445   (void)info;
3446   Assert(false, LAPACKSupport::ExcMissing("zgetrs"));
3447 #endif // DEAL_II_WITH_LAPACK
3448 }
3449 
3450 
3451 
3452 template <typename number1>
3453 inline number1
lamch(const char *)3454 lamch(const char *)
3455 {
3456   Assert(false, ExcNotImplemented());
3457   return number1();
3458 }
3459 
3460 
3461 
3462 template <>
3463 inline float
lamch(const char * cmach)3464 lamch(const char *cmach)
3465 {
3466 #ifdef DEAL_II_WITH_LAPACK
3467   return slamch_(cmach);
3468 #else
3469   (void)cmach;
3470   Assert(false, LAPACKSupport::ExcMissing("slamch"));
3471   return float();
3472 #endif // DEAL_II_WITH_LAPACK
3473 }
3474 
3475 
3476 
3477 template <>
3478 inline double
lamch(const char * cmach)3479 lamch(const char *cmach)
3480 {
3481 #ifdef DEAL_II_WITH_LAPACK
3482   return dlamch_(cmach);
3483 #else
3484   (void)cmach;
3485   Assert(false, LAPACKSupport::ExcMissing("dlamch"));
3486   return double();
3487 #endif // DEAL_II_WITH_LAPACK
3488 }
3489 
3490 
3491 
3492 template <typename number1, typename number2>
3493 inline number1
lange(const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,number2 *)3494 lange(const char *,
3495       const dealii::types::blas_int *,
3496       const dealii::types::blas_int *,
3497       const number1 *,
3498       const dealii::types::blas_int *,
3499       number2 *)
3500 {
3501   Assert(false, ExcNotImplemented());
3502   return number1();
3503 }
3504 
3505 
3506 
3507 inline float
lange(const char * norm,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const float * a,const dealii::types::blas_int * lda,float * work)3508 lange(const char *                   norm,
3509       const dealii::types::blas_int *m,
3510       const dealii::types::blas_int *n,
3511       const float *                  a,
3512       const dealii::types::blas_int *lda,
3513       float *                        work)
3514 {
3515 #ifdef DEAL_II_WITH_LAPACK
3516   return slange_(norm, m, n, a, lda, work);
3517 #else
3518   (void)norm;
3519   (void)m;
3520   (void)n;
3521   (void)a;
3522   (void)lda;
3523   (void)work;
3524   Assert(false, LAPACKSupport::ExcMissing("slange"));
3525   return float();
3526 #endif // DEAL_II_WITH_LAPACK
3527 }
3528 
3529 
3530 
3531 inline double
lange(const char * norm,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const double * a,const dealii::types::blas_int * lda,double * work)3532 lange(const char *                   norm,
3533       const dealii::types::blas_int *m,
3534       const dealii::types::blas_int *n,
3535       const double *                 a,
3536       const dealii::types::blas_int *lda,
3537       double *                       work)
3538 {
3539 #ifdef DEAL_II_WITH_LAPACK
3540   return dlange_(norm, m, n, a, lda, work);
3541 #else
3542   (void)norm;
3543   (void)m;
3544   (void)n;
3545   (void)a;
3546   (void)lda;
3547   (void)work;
3548   Assert(false, LAPACKSupport::ExcMissing("dlange"));
3549   return double();
3550 #endif // DEAL_II_WITH_LAPACK
3551 }
3552 
3553 
3554 
3555 inline float
lange(const char * norm,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const std::complex<float> * a,const dealii::types::blas_int * lda,float * work)3556 lange(const char *                   norm,
3557       const dealii::types::blas_int *m,
3558       const dealii::types::blas_int *n,
3559       const std::complex<float> *    a,
3560       const dealii::types::blas_int *lda,
3561       float *                        work)
3562 {
3563 #ifdef DEAL_II_WITH_LAPACK
3564   return clange_(norm, m, n, a, lda, work);
3565 #else
3566   (void)norm;
3567   (void)m;
3568   (void)n;
3569   (void)a;
3570   (void)lda;
3571   (void)work;
3572   Assert(false, LAPACKSupport::ExcMissing("clange"));
3573   return float();
3574 #endif // DEAL_II_WITH_LAPACK
3575 }
3576 
3577 
3578 
3579 inline double
lange(const char * norm,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const std::complex<double> * a,const dealii::types::blas_int * lda,double * work)3580 lange(const char *                   norm,
3581       const dealii::types::blas_int *m,
3582       const dealii::types::blas_int *n,
3583       const std::complex<double> *   a,
3584       const dealii::types::blas_int *lda,
3585       double *                       work)
3586 {
3587 #ifdef DEAL_II_WITH_LAPACK
3588   return zlange_(norm, m, n, a, lda, work);
3589 #else
3590   (void)norm;
3591   (void)m;
3592   (void)n;
3593   (void)a;
3594   (void)lda;
3595   (void)work;
3596   Assert(false, LAPACKSupport::ExcMissing("zlange"));
3597   return double();
3598 #endif // DEAL_II_WITH_LAPACK
3599 }
3600 
3601 
3602 
3603 template <typename number1, typename number2>
3604 inline number1
lansy(const char *,const char *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,number2 *)3605 lansy(const char *,
3606       const char *,
3607       const dealii::types::blas_int *,
3608       const number1 *,
3609       const dealii::types::blas_int *,
3610       number2 *)
3611 {
3612   Assert(false, ExcNotImplemented());
3613   return number1();
3614 }
3615 
3616 
3617 
3618 inline float
lansy(const char * norm,const char * uplo,const dealii::types::blas_int * n,const float * a,const dealii::types::blas_int * lda,float * work)3619 lansy(const char *                   norm,
3620       const char *                   uplo,
3621       const dealii::types::blas_int *n,
3622       const float *                  a,
3623       const dealii::types::blas_int *lda,
3624       float *                        work)
3625 {
3626 #ifdef DEAL_II_WITH_LAPACK
3627   return slansy_(norm, uplo, n, a, lda, work);
3628 #else
3629   (void)norm;
3630   (void)uplo;
3631   (void)n;
3632   (void)a;
3633   (void)lda;
3634   (void)work;
3635   Assert(false, LAPACKSupport::ExcMissing("slansy"));
3636   return float();
3637 #endif // DEAL_II_WITH_LAPACK
3638 }
3639 
3640 
3641 
3642 inline double
lansy(const char * norm,const char * uplo,const dealii::types::blas_int * n,const double * a,const dealii::types::blas_int * lda,double * work)3643 lansy(const char *                   norm,
3644       const char *                   uplo,
3645       const dealii::types::blas_int *n,
3646       const double *                 a,
3647       const dealii::types::blas_int *lda,
3648       double *                       work)
3649 {
3650 #ifdef DEAL_II_WITH_LAPACK
3651   return dlansy_(norm, uplo, n, a, lda, work);
3652 #else
3653   (void)norm;
3654   (void)uplo;
3655   (void)n;
3656   (void)a;
3657   (void)lda;
3658   (void)work;
3659   Assert(false, LAPACKSupport::ExcMissing("dlansy"));
3660   return double();
3661 #endif // DEAL_II_WITH_LAPACK
3662 }
3663 
3664 
3665 
3666 inline float
lansy(const char * norm,const char * uplo,const dealii::types::blas_int * n,const std::complex<float> * a,const dealii::types::blas_int * lda,float * work)3667 lansy(const char *                   norm,
3668       const char *                   uplo,
3669       const dealii::types::blas_int *n,
3670       const std::complex<float> *    a,
3671       const dealii::types::blas_int *lda,
3672       float *                        work)
3673 {
3674 #ifdef DEAL_II_WITH_LAPACK
3675   return clansy_(norm, uplo, n, a, lda, work);
3676 #else
3677   (void)norm;
3678   (void)uplo;
3679   (void)n;
3680   (void)a;
3681   (void)lda;
3682   (void)work;
3683   Assert(false, LAPACKSupport::ExcMissing("clansy"));
3684   return float();
3685 #endif // DEAL_II_WITH_LAPACK
3686 }
3687 
3688 
3689 
3690 inline double
lansy(const char * norm,const char * uplo,const dealii::types::blas_int * n,const std::complex<double> * a,const dealii::types::blas_int * lda,double * work)3691 lansy(const char *                   norm,
3692       const char *                   uplo,
3693       const dealii::types::blas_int *n,
3694       const std::complex<double> *   a,
3695       const dealii::types::blas_int *lda,
3696       double *                       work)
3697 {
3698 #ifdef DEAL_II_WITH_LAPACK
3699   return zlansy_(norm, uplo, n, a, lda, work);
3700 #else
3701   (void)norm;
3702   (void)uplo;
3703   (void)n;
3704   (void)a;
3705   (void)lda;
3706   (void)work;
3707   Assert(false, LAPACKSupport::ExcMissing("zlansy"));
3708   return double();
3709 #endif // DEAL_II_WITH_LAPACK
3710 }
3711 
3712 
3713 
3714 template <typename number1, typename number2, typename number3>
3715 inline void
lascl(const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const number2 *,const dealii::types::blas_int *,const dealii::types::blas_int *,number3 *,const dealii::types::blas_int *,dealii::types::blas_int *)3716 lascl(const char *,
3717       const dealii::types::blas_int *,
3718       const dealii::types::blas_int *,
3719       const number1 *,
3720       const number2 *,
3721       const dealii::types::blas_int *,
3722       const dealii::types::blas_int *,
3723       number3 *,
3724       const dealii::types::blas_int *,
3725       dealii::types::blas_int *)
3726 {
3727   Assert(false, ExcNotImplemented());
3728 }
3729 
3730 
3731 
3732 inline void
lascl(const char * type,const dealii::types::blas_int * kl,const dealii::types::blas_int * ku,const float * cfrom,const float * cto,const dealii::types::blas_int * m,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)3733 lascl(const char *                   type,
3734       const dealii::types::blas_int *kl,
3735       const dealii::types::blas_int *ku,
3736       const float *                  cfrom,
3737       const float *                  cto,
3738       const dealii::types::blas_int *m,
3739       const dealii::types::blas_int *n,
3740       float *                        a,
3741       const dealii::types::blas_int *lda,
3742       dealii::types::blas_int *      info)
3743 {
3744 #ifdef DEAL_II_WITH_LAPACK
3745   slascl_(type, kl, ku, cfrom, cto, m, n, a, lda, info);
3746 #else
3747   (void)type;
3748   (void)kl;
3749   (void)ku;
3750   (void)cfrom;
3751   (void)cto;
3752   (void)m;
3753   (void)n;
3754   (void)a;
3755   (void)lda;
3756   (void)info;
3757   Assert(false, LAPACKSupport::ExcMissing("slascl"));
3758 #endif // DEAL_II_WITH_LAPACK
3759 }
3760 
3761 
3762 
3763 inline void
lascl(const char * type,const dealii::types::blas_int * kl,const dealii::types::blas_int * ku,const double * cfrom,const double * cto,const dealii::types::blas_int * m,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)3764 lascl(const char *                   type,
3765       const dealii::types::blas_int *kl,
3766       const dealii::types::blas_int *ku,
3767       const double *                 cfrom,
3768       const double *                 cto,
3769       const dealii::types::blas_int *m,
3770       const dealii::types::blas_int *n,
3771       double *                       a,
3772       const dealii::types::blas_int *lda,
3773       dealii::types::blas_int *      info)
3774 {
3775 #ifdef DEAL_II_WITH_LAPACK
3776   dlascl_(type, kl, ku, cfrom, cto, m, n, a, lda, info);
3777 #else
3778   (void)type;
3779   (void)kl;
3780   (void)ku;
3781   (void)cfrom;
3782   (void)cto;
3783   (void)m;
3784   (void)n;
3785   (void)a;
3786   (void)lda;
3787   (void)info;
3788   Assert(false, LAPACKSupport::ExcMissing("dlascl"));
3789 #endif // DEAL_II_WITH_LAPACK
3790 }
3791 
3792 
3793 
3794 inline void
lascl(const char * type,const dealii::types::blas_int * kl,const dealii::types::blas_int * ku,const float * cfrom,const float * cto,const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)3795 lascl(const char *                   type,
3796       const dealii::types::blas_int *kl,
3797       const dealii::types::blas_int *ku,
3798       const float *                  cfrom,
3799       const float *                  cto,
3800       const dealii::types::blas_int *m,
3801       const dealii::types::blas_int *n,
3802       std::complex<float> *          a,
3803       const dealii::types::blas_int *lda,
3804       dealii::types::blas_int *      info)
3805 {
3806 #ifdef DEAL_II_WITH_LAPACK
3807   clascl_(type, kl, ku, cfrom, cto, m, n, a, lda, info);
3808 #else
3809   (void)type;
3810   (void)kl;
3811   (void)ku;
3812   (void)cfrom;
3813   (void)cto;
3814   (void)m;
3815   (void)n;
3816   (void)a;
3817   (void)lda;
3818   (void)info;
3819   Assert(false, LAPACKSupport::ExcMissing("clascl"));
3820 #endif // DEAL_II_WITH_LAPACK
3821 }
3822 
3823 
3824 
3825 inline void
lascl(const char * type,const dealii::types::blas_int * kl,const dealii::types::blas_int * ku,const double * cfrom,const double * cto,const dealii::types::blas_int * m,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)3826 lascl(const char *                   type,
3827       const dealii::types::blas_int *kl,
3828       const dealii::types::blas_int *ku,
3829       const double *                 cfrom,
3830       const double *                 cto,
3831       const dealii::types::blas_int *m,
3832       const dealii::types::blas_int *n,
3833       std::complex<double> *         a,
3834       const dealii::types::blas_int *lda,
3835       dealii::types::blas_int *      info)
3836 {
3837 #ifdef DEAL_II_WITH_LAPACK
3838   zlascl_(type, kl, ku, cfrom, cto, m, n, a, lda, info);
3839 #else
3840   (void)type;
3841   (void)kl;
3842   (void)ku;
3843   (void)cfrom;
3844   (void)cto;
3845   (void)m;
3846   (void)n;
3847   (void)a;
3848   (void)lda;
3849   (void)info;
3850   Assert(false, LAPACKSupport::ExcMissing("zlascl"));
3851 #endif // DEAL_II_WITH_LAPACK
3852 }
3853 
3854 
3855 
3856 template <typename number1, typename number2, typename number3>
3857 inline void
orgqr(const dealii::types::blas_int *,const dealii::types::blas_int *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,const number2 *,number3 *,const dealii::types::blas_int *,dealii::types::blas_int *)3858 orgqr(const dealii::types::blas_int *,
3859       const dealii::types::blas_int *,
3860       const dealii::types::blas_int *,
3861       number1 *,
3862       const dealii::types::blas_int *,
3863       const number2 *,
3864       number3 *,
3865       const dealii::types::blas_int *,
3866       dealii::types::blas_int *)
3867 {
3868   Assert(false, ExcNotImplemented());
3869 }
3870 
3871 
3872 
3873 inline void
orgqr(const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,float * a,const dealii::types::blas_int * lda,const float * tau,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3874 orgqr(const dealii::types::blas_int *m,
3875       const dealii::types::blas_int *n,
3876       const dealii::types::blas_int *k,
3877       float *                        a,
3878       const dealii::types::blas_int *lda,
3879       const float *                  tau,
3880       float *                        work,
3881       const dealii::types::blas_int *lwork,
3882       dealii::types::blas_int *      info)
3883 {
3884 #ifdef DEAL_II_WITH_LAPACK
3885   sorgqr_(m, n, k, a, lda, tau, work, lwork, info);
3886 #else
3887   (void)m;
3888   (void)n;
3889   (void)k;
3890   (void)a;
3891   (void)lda;
3892   (void)tau;
3893   (void)work;
3894   (void)lwork;
3895   (void)info;
3896   Assert(false, LAPACKSupport::ExcMissing("sorgqr"));
3897 #endif // DEAL_II_WITH_LAPACK
3898 }
3899 
3900 
3901 
3902 inline void
orgqr(const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,double * a,const dealii::types::blas_int * lda,const double * tau,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3903 orgqr(const dealii::types::blas_int *m,
3904       const dealii::types::blas_int *n,
3905       const dealii::types::blas_int *k,
3906       double *                       a,
3907       const dealii::types::blas_int *lda,
3908       const double *                 tau,
3909       double *                       work,
3910       const dealii::types::blas_int *lwork,
3911       dealii::types::blas_int *      info)
3912 {
3913 #ifdef DEAL_II_WITH_LAPACK
3914   dorgqr_(m, n, k, a, lda, tau, work, lwork, info);
3915 #else
3916   (void)m;
3917   (void)n;
3918   (void)k;
3919   (void)a;
3920   (void)lda;
3921   (void)tau;
3922   (void)work;
3923   (void)lwork;
3924   (void)info;
3925   Assert(false, LAPACKSupport::ExcMissing("dorgqr"));
3926 #endif // DEAL_II_WITH_LAPACK
3927 }
3928 
3929 
3930 
3931 template <typename number1,
3932           typename number2,
3933           typename number3,
3934           typename number4>
3935 inline void
ormqr(const char *,const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,const number2 *,number3 *,const dealii::types::blas_int *,number4 *,const dealii::types::blas_int *,dealii::types::blas_int *)3936 ormqr(const char *,
3937       const char *,
3938       const dealii::types::blas_int *,
3939       const dealii::types::blas_int *,
3940       const dealii::types::blas_int *,
3941       const number1 *,
3942       const dealii::types::blas_int *,
3943       const number2 *,
3944       number3 *,
3945       const dealii::types::blas_int *,
3946       number4 *,
3947       const dealii::types::blas_int *,
3948       dealii::types::blas_int *)
3949 {
3950   Assert(false, ExcNotImplemented());
3951 }
3952 
3953 
3954 
3955 inline void
ormqr(const char * side,const char * trans,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const float * a,const dealii::types::blas_int * lda,const float * tau,float * c,const dealii::types::blas_int * ldc,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3956 ormqr(const char *                   side,
3957       const char *                   trans,
3958       const dealii::types::blas_int *m,
3959       const dealii::types::blas_int *n,
3960       const dealii::types::blas_int *k,
3961       const float *                  a,
3962       const dealii::types::blas_int *lda,
3963       const float *                  tau,
3964       float *                        c,
3965       const dealii::types::blas_int *ldc,
3966       float *                        work,
3967       const dealii::types::blas_int *lwork,
3968       dealii::types::blas_int *      info)
3969 {
3970 #ifdef DEAL_II_WITH_LAPACK
3971   sormqr_(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info);
3972 #else
3973   (void)side;
3974   (void)trans;
3975   (void)m;
3976   (void)n;
3977   (void)k;
3978   (void)a;
3979   (void)lda;
3980   (void)tau;
3981   (void)c;
3982   (void)ldc;
3983   (void)work;
3984   (void)lwork;
3985   (void)info;
3986   Assert(false, LAPACKSupport::ExcMissing("sormqr"));
3987 #endif // DEAL_II_WITH_LAPACK
3988 }
3989 
3990 
3991 
3992 inline void
ormqr(const char * side,const char * trans,const dealii::types::blas_int * m,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const double * a,const dealii::types::blas_int * lda,const double * tau,double * c,const dealii::types::blas_int * ldc,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)3993 ormqr(const char *                   side,
3994       const char *                   trans,
3995       const dealii::types::blas_int *m,
3996       const dealii::types::blas_int *n,
3997       const dealii::types::blas_int *k,
3998       const double *                 a,
3999       const dealii::types::blas_int *lda,
4000       const double *                 tau,
4001       double *                       c,
4002       const dealii::types::blas_int *ldc,
4003       double *                       work,
4004       const dealii::types::blas_int *lwork,
4005       dealii::types::blas_int *      info)
4006 {
4007 #ifdef DEAL_II_WITH_LAPACK
4008   dormqr_(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info);
4009 #else
4010   (void)side;
4011   (void)trans;
4012   (void)m;
4013   (void)n;
4014   (void)k;
4015   (void)a;
4016   (void)lda;
4017   (void)tau;
4018   (void)c;
4019   (void)ldc;
4020   (void)work;
4021   (void)lwork;
4022   (void)info;
4023   Assert(false, LAPACKSupport::ExcMissing("dormqr"));
4024 #endif // DEAL_II_WITH_LAPACK
4025 }
4026 
4027 
4028 
4029 template <typename number1,
4030           typename number2,
4031           typename number3,
4032           typename number4>
4033 inline void
pocon(const char *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,const number2 *,number3 *,number4 *,dealii::types::blas_int *,dealii::types::blas_int *)4034 pocon(const char *,
4035       const dealii::types::blas_int *,
4036       const number1 *,
4037       const dealii::types::blas_int *,
4038       const number2 *,
4039       number3 *,
4040       number4 *,
4041       dealii::types::blas_int *,
4042       dealii::types::blas_int *)
4043 {
4044   Assert(false, ExcNotImplemented());
4045 }
4046 
4047 
4048 
4049 inline void
pocon(const char * uplo,const dealii::types::blas_int * n,const float * a,const dealii::types::blas_int * lda,const float * anorm,float * rcond,float * work,dealii::types::blas_int * iwork,dealii::types::blas_int * info)4050 pocon(const char *                   uplo,
4051       const dealii::types::blas_int *n,
4052       const float *                  a,
4053       const dealii::types::blas_int *lda,
4054       const float *                  anorm,
4055       float *                        rcond,
4056       float *                        work,
4057       dealii::types::blas_int *      iwork,
4058       dealii::types::blas_int *      info)
4059 {
4060 #ifdef DEAL_II_WITH_LAPACK
4061   spocon_(uplo, n, a, lda, anorm, rcond, work, iwork, info);
4062 #else
4063   (void)uplo;
4064   (void)n;
4065   (void)a;
4066   (void)lda;
4067   (void)anorm;
4068   (void)rcond;
4069   (void)work;
4070   (void)iwork;
4071   (void)info;
4072   Assert(false, LAPACKSupport::ExcMissing("spocon"));
4073 #endif // DEAL_II_WITH_LAPACK
4074 }
4075 
4076 
4077 
4078 inline void
pocon(const char * uplo,const dealii::types::blas_int * n,const double * a,const dealii::types::blas_int * lda,const double * anorm,double * rcond,double * work,dealii::types::blas_int * iwork,dealii::types::blas_int * info)4079 pocon(const char *                   uplo,
4080       const dealii::types::blas_int *n,
4081       const double *                 a,
4082       const dealii::types::blas_int *lda,
4083       const double *                 anorm,
4084       double *                       rcond,
4085       double *                       work,
4086       dealii::types::blas_int *      iwork,
4087       dealii::types::blas_int *      info)
4088 {
4089 #ifdef DEAL_II_WITH_LAPACK
4090   dpocon_(uplo, n, a, lda, anorm, rcond, work, iwork, info);
4091 #else
4092   (void)uplo;
4093   (void)n;
4094   (void)a;
4095   (void)lda;
4096   (void)anorm;
4097   (void)rcond;
4098   (void)work;
4099   (void)iwork;
4100   (void)info;
4101   Assert(false, LAPACKSupport::ExcMissing("dpocon"));
4102 #endif // DEAL_II_WITH_LAPACK
4103 }
4104 
4105 
4106 
4107 inline void
pocon(const char * uplo,const dealii::types::blas_int * n,const std::complex<float> * a,const dealii::types::blas_int * lda,const float * anorm,float * rcond,std::complex<float> * work,float * rwork,dealii::types::blas_int * info)4108 pocon(const char *                   uplo,
4109       const dealii::types::blas_int *n,
4110       const std::complex<float> *    a,
4111       const dealii::types::blas_int *lda,
4112       const float *                  anorm,
4113       float *                        rcond,
4114       std::complex<float> *          work,
4115       float *                        rwork,
4116       dealii::types::blas_int *      info)
4117 {
4118 #ifdef DEAL_II_WITH_LAPACK
4119   cpocon_(uplo, n, a, lda, anorm, rcond, work, rwork, info);
4120 #else
4121   (void)uplo;
4122   (void)n;
4123   (void)a;
4124   (void)lda;
4125   (void)anorm;
4126   (void)rcond;
4127   (void)work;
4128   (void)rwork;
4129   (void)info;
4130   Assert(false, LAPACKSupport::ExcMissing("cpocon"));
4131 #endif // DEAL_II_WITH_LAPACK
4132 }
4133 
4134 
4135 
4136 inline void
pocon(const char * uplo,const dealii::types::blas_int * n,const std::complex<double> * a,const dealii::types::blas_int * lda,const double * anorm,double * rcond,std::complex<double> * work,double * rwork,dealii::types::blas_int * info)4137 pocon(const char *                   uplo,
4138       const dealii::types::blas_int *n,
4139       const std::complex<double> *   a,
4140       const dealii::types::blas_int *lda,
4141       const double *                 anorm,
4142       double *                       rcond,
4143       std::complex<double> *         work,
4144       double *                       rwork,
4145       dealii::types::blas_int *      info)
4146 {
4147 #ifdef DEAL_II_WITH_LAPACK
4148   zpocon_(uplo, n, a, lda, anorm, rcond, work, rwork, info);
4149 #else
4150   (void)uplo;
4151   (void)n;
4152   (void)a;
4153   (void)lda;
4154   (void)anorm;
4155   (void)rcond;
4156   (void)work;
4157   (void)rwork;
4158   (void)info;
4159   Assert(false, LAPACKSupport::ExcMissing("zpocon"));
4160 #endif // DEAL_II_WITH_LAPACK
4161 }
4162 
4163 
4164 
4165 template <typename number1>
4166 inline void
potrf(const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,dealii::types::blas_int *)4167 potrf(const char *,
4168       const dealii::types::blas_int *,
4169       number1 *,
4170       const dealii::types::blas_int *,
4171       dealii::types::blas_int *)
4172 {
4173   Assert(false, ExcNotImplemented());
4174 }
4175 
4176 
4177 
4178 inline void
potrf(const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4179 potrf(const char *                   uplo,
4180       const dealii::types::blas_int *n,
4181       float *                        a,
4182       const dealii::types::blas_int *lda,
4183       dealii::types::blas_int *      info)
4184 {
4185 #ifdef DEAL_II_WITH_LAPACK
4186   spotrf_(uplo, n, a, lda, info);
4187 #else
4188   (void)uplo;
4189   (void)n;
4190   (void)a;
4191   (void)lda;
4192   (void)info;
4193   Assert(false, LAPACKSupport::ExcMissing("spotrf"));
4194 #endif // DEAL_II_WITH_LAPACK
4195 }
4196 
4197 
4198 
4199 inline void
potrf(const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4200 potrf(const char *                   uplo,
4201       const dealii::types::blas_int *n,
4202       double *                       a,
4203       const dealii::types::blas_int *lda,
4204       dealii::types::blas_int *      info)
4205 {
4206 #ifdef DEAL_II_WITH_LAPACK
4207   dpotrf_(uplo, n, a, lda, info);
4208 #else
4209   (void)uplo;
4210   (void)n;
4211   (void)a;
4212   (void)lda;
4213   (void)info;
4214   Assert(false, LAPACKSupport::ExcMissing("dpotrf"));
4215 #endif // DEAL_II_WITH_LAPACK
4216 }
4217 
4218 
4219 
4220 inline void
potrf(const char * uplo,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4221 potrf(const char *                   uplo,
4222       const dealii::types::blas_int *n,
4223       std::complex<float> *          a,
4224       const dealii::types::blas_int *lda,
4225       dealii::types::blas_int *      info)
4226 {
4227 #ifdef DEAL_II_WITH_LAPACK
4228   cpotrf_(uplo, n, a, lda, info);
4229 #else
4230   (void)uplo;
4231   (void)n;
4232   (void)a;
4233   (void)lda;
4234   (void)info;
4235   Assert(false, LAPACKSupport::ExcMissing("cpotrf"));
4236 #endif // DEAL_II_WITH_LAPACK
4237 }
4238 
4239 
4240 
4241 inline void
potrf(const char * uplo,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4242 potrf(const char *                   uplo,
4243       const dealii::types::blas_int *n,
4244       std::complex<double> *         a,
4245       const dealii::types::blas_int *lda,
4246       dealii::types::blas_int *      info)
4247 {
4248 #ifdef DEAL_II_WITH_LAPACK
4249   zpotrf_(uplo, n, a, lda, info);
4250 #else
4251   (void)uplo;
4252   (void)n;
4253   (void)a;
4254   (void)lda;
4255   (void)info;
4256   Assert(false, LAPACKSupport::ExcMissing("zpotrf"));
4257 #endif // DEAL_II_WITH_LAPACK
4258 }
4259 
4260 
4261 
4262 template <typename number1>
4263 inline void
potri(const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,dealii::types::blas_int *)4264 potri(const char *,
4265       const dealii::types::blas_int *,
4266       number1 *,
4267       const dealii::types::blas_int *,
4268       dealii::types::blas_int *)
4269 {
4270   Assert(false, ExcNotImplemented());
4271 }
4272 
4273 
4274 
4275 inline void
potri(const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4276 potri(const char *                   uplo,
4277       const dealii::types::blas_int *n,
4278       float *                        a,
4279       const dealii::types::blas_int *lda,
4280       dealii::types::blas_int *      info)
4281 {
4282 #ifdef DEAL_II_WITH_LAPACK
4283   spotri_(uplo, n, a, lda, info);
4284 #else
4285   (void)uplo;
4286   (void)n;
4287   (void)a;
4288   (void)lda;
4289   (void)info;
4290   Assert(false, LAPACKSupport::ExcMissing("spotri"));
4291 #endif // DEAL_II_WITH_LAPACK
4292 }
4293 
4294 
4295 
4296 inline void
potri(const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4297 potri(const char *                   uplo,
4298       const dealii::types::blas_int *n,
4299       double *                       a,
4300       const dealii::types::blas_int *lda,
4301       dealii::types::blas_int *      info)
4302 {
4303 #ifdef DEAL_II_WITH_LAPACK
4304   dpotri_(uplo, n, a, lda, info);
4305 #else
4306   (void)uplo;
4307   (void)n;
4308   (void)a;
4309   (void)lda;
4310   (void)info;
4311   Assert(false, LAPACKSupport::ExcMissing("dpotri"));
4312 #endif // DEAL_II_WITH_LAPACK
4313 }
4314 
4315 
4316 
4317 inline void
potri(const char * uplo,const dealii::types::blas_int * n,std::complex<float> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4318 potri(const char *                   uplo,
4319       const dealii::types::blas_int *n,
4320       std::complex<float> *          a,
4321       const dealii::types::blas_int *lda,
4322       dealii::types::blas_int *      info)
4323 {
4324 #ifdef DEAL_II_WITH_LAPACK
4325   cpotri_(uplo, n, a, lda, info);
4326 #else
4327   (void)uplo;
4328   (void)n;
4329   (void)a;
4330   (void)lda;
4331   (void)info;
4332   Assert(false, LAPACKSupport::ExcMissing("cpotri"));
4333 #endif // DEAL_II_WITH_LAPACK
4334 }
4335 
4336 
4337 
4338 inline void
potri(const char * uplo,const dealii::types::blas_int * n,std::complex<double> * a,const dealii::types::blas_int * lda,dealii::types::blas_int * info)4339 potri(const char *                   uplo,
4340       const dealii::types::blas_int *n,
4341       std::complex<double> *         a,
4342       const dealii::types::blas_int *lda,
4343       dealii::types::blas_int *      info)
4344 {
4345 #ifdef DEAL_II_WITH_LAPACK
4346   zpotri_(uplo, n, a, lda, info);
4347 #else
4348   (void)uplo;
4349   (void)n;
4350   (void)a;
4351   (void)lda;
4352   (void)info;
4353   Assert(false, LAPACKSupport::ExcMissing("zpotri"));
4354 #endif // DEAL_II_WITH_LAPACK
4355 }
4356 
4357 
4358 
4359 template <typename number1, typename number2>
4360 inline void
potrs(const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,dealii::types::blas_int *)4361 potrs(const char *,
4362       const dealii::types::blas_int *,
4363       const dealii::types::blas_int *,
4364       const number1 *,
4365       const dealii::types::blas_int *,
4366       number2 *,
4367       const dealii::types::blas_int *,
4368       dealii::types::blas_int *)
4369 {
4370   Assert(false, ExcNotImplemented());
4371 }
4372 
4373 
4374 
4375 inline void
potrs(const char * uplo,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const float * a,const dealii::types::blas_int * lda,float * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)4376 potrs(const char *                   uplo,
4377       const dealii::types::blas_int *n,
4378       const dealii::types::blas_int *nrhs,
4379       const float *                  a,
4380       const dealii::types::blas_int *lda,
4381       float *                        b,
4382       const dealii::types::blas_int *ldb,
4383       dealii::types::blas_int *      info)
4384 {
4385 #ifdef DEAL_II_WITH_LAPACK
4386   spotrs_(uplo, n, nrhs, a, lda, b, ldb, info);
4387 #else
4388   (void)uplo;
4389   (void)n;
4390   (void)nrhs;
4391   (void)a;
4392   (void)lda;
4393   (void)b;
4394   (void)ldb;
4395   (void)info;
4396   Assert(false, LAPACKSupport::ExcMissing("spotrs"));
4397 #endif // DEAL_II_WITH_LAPACK
4398 }
4399 
4400 
4401 
4402 inline void
potrs(const char * uplo,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const double * a,const dealii::types::blas_int * lda,double * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)4403 potrs(const char *                   uplo,
4404       const dealii::types::blas_int *n,
4405       const dealii::types::blas_int *nrhs,
4406       const double *                 a,
4407       const dealii::types::blas_int *lda,
4408       double *                       b,
4409       const dealii::types::blas_int *ldb,
4410       dealii::types::blas_int *      info)
4411 {
4412 #ifdef DEAL_II_WITH_LAPACK
4413   dpotrs_(uplo, n, nrhs, a, lda, b, ldb, info);
4414 #else
4415   (void)uplo;
4416   (void)n;
4417   (void)nrhs;
4418   (void)a;
4419   (void)lda;
4420   (void)b;
4421   (void)ldb;
4422   (void)info;
4423   Assert(false, LAPACKSupport::ExcMissing("dpotrs"));
4424 #endif // DEAL_II_WITH_LAPACK
4425 }
4426 
4427 
4428 
4429 inline void
potrs(const char * uplo,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)4430 potrs(const char *                   uplo,
4431       const dealii::types::blas_int *n,
4432       const dealii::types::blas_int *nrhs,
4433       const std::complex<float> *    a,
4434       const dealii::types::blas_int *lda,
4435       std::complex<float> *          b,
4436       const dealii::types::blas_int *ldb,
4437       dealii::types::blas_int *      info)
4438 {
4439 #ifdef DEAL_II_WITH_LAPACK
4440   cpotrs_(uplo, n, nrhs, a, lda, b, ldb, info);
4441 #else
4442   (void)uplo;
4443   (void)n;
4444   (void)nrhs;
4445   (void)a;
4446   (void)lda;
4447   (void)b;
4448   (void)ldb;
4449   (void)info;
4450   Assert(false, LAPACKSupport::ExcMissing("cpotrs"));
4451 #endif // DEAL_II_WITH_LAPACK
4452 }
4453 
4454 
4455 
4456 inline void
potrs(const char * uplo,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)4457 potrs(const char *                   uplo,
4458       const dealii::types::blas_int *n,
4459       const dealii::types::blas_int *nrhs,
4460       const std::complex<double> *   a,
4461       const dealii::types::blas_int *lda,
4462       std::complex<double> *         b,
4463       const dealii::types::blas_int *ldb,
4464       dealii::types::blas_int *      info)
4465 {
4466 #ifdef DEAL_II_WITH_LAPACK
4467   zpotrs_(uplo, n, nrhs, a, lda, b, ldb, info);
4468 #else
4469   (void)uplo;
4470   (void)n;
4471   (void)nrhs;
4472   (void)a;
4473   (void)lda;
4474   (void)b;
4475   (void)ldb;
4476   (void)info;
4477   Assert(false, LAPACKSupport::ExcMissing("zpotrs"));
4478 #endif // DEAL_II_WITH_LAPACK
4479 }
4480 
4481 
4482 
4483 template <typename number1,
4484           typename number2,
4485           typename number3,
4486           typename number4>
4487 inline void
stev(const char *,const dealii::types::blas_int *,number1 *,number2 *,number3 *,const dealii::types::blas_int *,number4 *,dealii::types::blas_int *)4488 stev(const char *,
4489      const dealii::types::blas_int *,
4490      number1 *,
4491      number2 *,
4492      number3 *,
4493      const dealii::types::blas_int *,
4494      number4 *,
4495      dealii::types::blas_int *)
4496 {
4497   Assert(false, ExcNotImplemented());
4498 }
4499 
4500 
4501 
4502 inline void
stev(const char * jobz,const dealii::types::blas_int * n,float * d,float * e,float * z,const dealii::types::blas_int * ldz,float * work,dealii::types::blas_int * info)4503 stev(const char *                   jobz,
4504      const dealii::types::blas_int *n,
4505      float *                        d,
4506      float *                        e,
4507      float *                        z,
4508      const dealii::types::blas_int *ldz,
4509      float *                        work,
4510      dealii::types::blas_int *      info)
4511 {
4512 #ifdef DEAL_II_WITH_LAPACK
4513   sstev_(jobz, n, d, e, z, ldz, work, info);
4514 #else
4515   (void)jobz;
4516   (void)n;
4517   (void)d;
4518   (void)e;
4519   (void)z;
4520   (void)ldz;
4521   (void)work;
4522   (void)info;
4523   Assert(false, LAPACKSupport::ExcMissing("sstev"));
4524 #endif // DEAL_II_WITH_LAPACK
4525 }
4526 
4527 
4528 
4529 inline void
stev(const char * jobz,const dealii::types::blas_int * n,double * d,double * e,double * z,const dealii::types::blas_int * ldz,double * work,dealii::types::blas_int * info)4530 stev(const char *                   jobz,
4531      const dealii::types::blas_int *n,
4532      double *                       d,
4533      double *                       e,
4534      double *                       z,
4535      const dealii::types::blas_int *ldz,
4536      double *                       work,
4537      dealii::types::blas_int *      info)
4538 {
4539 #ifdef DEAL_II_WITH_LAPACK
4540   dstev_(jobz, n, d, e, z, ldz, work, info);
4541 #else
4542   (void)jobz;
4543   (void)n;
4544   (void)d;
4545   (void)e;
4546   (void)z;
4547   (void)ldz;
4548   (void)work;
4549   (void)info;
4550   Assert(false, LAPACKSupport::ExcMissing("dstev"));
4551 #endif // DEAL_II_WITH_LAPACK
4552 }
4553 
4554 
4555 
4556 template <typename number1, typename number2, typename number3>
4557 inline void
syev(const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,number3 *,const dealii::types::blas_int *,dealii::types::blas_int *)4558 syev(const char *,
4559      const char *,
4560      const dealii::types::blas_int *,
4561      number1 *,
4562      const dealii::types::blas_int *,
4563      number2 *,
4564      number3 *,
4565      const dealii::types::blas_int *,
4566      dealii::types::blas_int *)
4567 {
4568   Assert(false, ExcNotImplemented());
4569 }
4570 
4571 
4572 
4573 inline void
syev(const char * jobz,const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * w,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)4574 syev(const char *                   jobz,
4575      const char *                   uplo,
4576      const dealii::types::blas_int *n,
4577      float *                        a,
4578      const dealii::types::blas_int *lda,
4579      float *                        w,
4580      float *                        work,
4581      const dealii::types::blas_int *lwork,
4582      dealii::types::blas_int *      info)
4583 {
4584 #ifdef DEAL_II_WITH_LAPACK
4585   ssyev_(jobz, uplo, n, a, lda, w, work, lwork, info);
4586 #else
4587   (void)jobz;
4588   (void)uplo;
4589   (void)n;
4590   (void)a;
4591   (void)lda;
4592   (void)w;
4593   (void)work;
4594   (void)lwork;
4595   (void)info;
4596   Assert(false, LAPACKSupport::ExcMissing("ssyev"));
4597 #endif // DEAL_II_WITH_LAPACK
4598 }
4599 
4600 
4601 
4602 inline void
syev(const char * jobz,const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * w,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)4603 syev(const char *                   jobz,
4604      const char *                   uplo,
4605      const dealii::types::blas_int *n,
4606      double *                       a,
4607      const dealii::types::blas_int *lda,
4608      double *                       w,
4609      double *                       work,
4610      const dealii::types::blas_int *lwork,
4611      dealii::types::blas_int *      info)
4612 {
4613 #ifdef DEAL_II_WITH_LAPACK
4614   dsyev_(jobz, uplo, n, a, lda, w, work, lwork, info);
4615 #else
4616   (void)jobz;
4617   (void)uplo;
4618   (void)n;
4619   (void)a;
4620   (void)lda;
4621   (void)w;
4622   (void)work;
4623   (void)lwork;
4624   (void)info;
4625   Assert(false, LAPACKSupport::ExcMissing("dsyev"));
4626 #endif // DEAL_II_WITH_LAPACK
4627 }
4628 
4629 
4630 
4631 template <typename number1,
4632           typename number2,
4633           typename number3,
4634           typename number4,
4635           typename number5,
4636           typename number6,
4637           typename number7>
4638 inline void
syevr(const char *,const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,const number2 *,const number3 *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number4 *,dealii::types::blas_int *,number5 *,number6 *,const dealii::types::blas_int *,dealii::types::blas_int *,number7 *,const dealii::types::blas_int *,dealii::types::blas_int *,const dealii::types::blas_int *,dealii::types::blas_int *)4639 syevr(const char *,
4640       const char *,
4641       const char *,
4642       const dealii::types::blas_int *,
4643       number1 *,
4644       const dealii::types::blas_int *,
4645       const number2 *,
4646       const number3 *,
4647       const dealii::types::blas_int *,
4648       const dealii::types::blas_int *,
4649       const number4 *,
4650       dealii::types::blas_int *,
4651       number5 *,
4652       number6 *,
4653       const dealii::types::blas_int *,
4654       dealii::types::blas_int *,
4655       number7 *,
4656       const dealii::types::blas_int *,
4657       dealii::types::blas_int *,
4658       const dealii::types::blas_int *,
4659       dealii::types::blas_int *)
4660 {
4661   Assert(false, ExcNotImplemented());
4662 }
4663 
4664 
4665 
4666 inline void
syevr(const char * jobz,const char * range,const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,const float * vl,const float * vu,const dealii::types::blas_int * il,const dealii::types::blas_int * iu,const float * abstol,dealii::types::blas_int * m,float * w,float * z,const dealii::types::blas_int * ldz,dealii::types::blas_int * isuppz,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,const dealii::types::blas_int * liwork,dealii::types::blas_int * info)4667 syevr(const char *                   jobz,
4668       const char *                   range,
4669       const char *                   uplo,
4670       const dealii::types::blas_int *n,
4671       float *                        a,
4672       const dealii::types::blas_int *lda,
4673       const float *                  vl,
4674       const float *                  vu,
4675       const dealii::types::blas_int *il,
4676       const dealii::types::blas_int *iu,
4677       const float *                  abstol,
4678       dealii::types::blas_int *      m,
4679       float *                        w,
4680       float *                        z,
4681       const dealii::types::blas_int *ldz,
4682       dealii::types::blas_int *      isuppz,
4683       float *                        work,
4684       const dealii::types::blas_int *lwork,
4685       dealii::types::blas_int *      iwork,
4686       const dealii::types::blas_int *liwork,
4687       dealii::types::blas_int *      info)
4688 {
4689 #ifdef DEAL_II_WITH_LAPACK
4690   // Netlib and Atlas Lapack perform floating point tests (e.g. divide-by-zero)
4691   // within calls to some functions, which cause floating point exceptions to be
4692   // thrown (at least in debug mode). Therefore, we wrap the calls into the
4693   // following code to suppress the exception.
4694 #  ifdef DEAL_II_HAVE_FP_EXCEPTIONS
4695   fenv_t fp_exceptions;
4696   feholdexcept(&fp_exceptions);
4697 #  endif // DEAL_II_HAVE_FP_EXCEPTIONS
4698   ssyevr_(jobz,
4699           range,
4700           uplo,
4701           n,
4702           a,
4703           lda,
4704           vl,
4705           vu,
4706           il,
4707           iu,
4708           abstol,
4709           m,
4710           w,
4711           z,
4712           ldz,
4713           isuppz,
4714           work,
4715           lwork,
4716           iwork,
4717           liwork,
4718           info);
4719 #  ifdef DEAL_II_HAVE_FP_EXCEPTIONS
4720   fesetenv(&fp_exceptions);
4721 #  endif // DEAL_II_HAVE_FP_EXCEPTIONS
4722 #else
4723   (void)jobz;
4724   (void)range;
4725   (void)uplo;
4726   (void)n;
4727   (void)a;
4728   (void)lda;
4729   (void)vl;
4730   (void)vu;
4731   (void)il;
4732   (void)iu;
4733   (void)abstol;
4734   (void)m;
4735   (void)w;
4736   (void)z;
4737   (void)ldz;
4738   (void)isuppz;
4739   (void)work;
4740   (void)lwork;
4741   (void)iwork;
4742   (void)liwork;
4743   (void)info;
4744   Assert(false, LAPACKSupport::ExcMissing("ssyevr"));
4745 #endif // DEAL_II_WITH_LAPACK
4746 }
4747 
4748 
4749 
4750 inline void
syevr(const char * jobz,const char * range,const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,const double * vl,const double * vu,const dealii::types::blas_int * il,const dealii::types::blas_int * iu,const double * abstol,dealii::types::blas_int * m,double * w,double * z,const dealii::types::blas_int * ldz,dealii::types::blas_int * isuppz,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,const dealii::types::blas_int * liwork,dealii::types::blas_int * info)4751 syevr(const char *                   jobz,
4752       const char *                   range,
4753       const char *                   uplo,
4754       const dealii::types::blas_int *n,
4755       double *                       a,
4756       const dealii::types::blas_int *lda,
4757       const double *                 vl,
4758       const double *                 vu,
4759       const dealii::types::blas_int *il,
4760       const dealii::types::blas_int *iu,
4761       const double *                 abstol,
4762       dealii::types::blas_int *      m,
4763       double *                       w,
4764       double *                       z,
4765       const dealii::types::blas_int *ldz,
4766       dealii::types::blas_int *      isuppz,
4767       double *                       work,
4768       const dealii::types::blas_int *lwork,
4769       dealii::types::blas_int *      iwork,
4770       const dealii::types::blas_int *liwork,
4771       dealii::types::blas_int *      info)
4772 {
4773 #ifdef DEAL_II_WITH_LAPACK
4774   // Netlib and Atlas Lapack perform floating point tests (e.g. divide-by-zero)
4775   // within calls to some functions, which cause floating point exceptions to be
4776   // thrown (at least in debug mode). Therefore, we wrap the calls into the
4777   // following code to suppress the exception.
4778 #  ifdef DEAL_II_HAVE_FP_EXCEPTIONS
4779   fenv_t fp_exceptions;
4780   feholdexcept(&fp_exceptions);
4781 #  endif // DEAL_II_HAVE_FP_EXCEPTIONS
4782   dsyevr_(jobz,
4783           range,
4784           uplo,
4785           n,
4786           a,
4787           lda,
4788           vl,
4789           vu,
4790           il,
4791           iu,
4792           abstol,
4793           m,
4794           w,
4795           z,
4796           ldz,
4797           isuppz,
4798           work,
4799           lwork,
4800           iwork,
4801           liwork,
4802           info);
4803 #  ifdef DEAL_II_HAVE_FP_EXCEPTIONS
4804   fesetenv(&fp_exceptions);
4805 #  endif // DEAL_II_HAVE_FP_EXCEPTIONS
4806 #else
4807   (void)jobz;
4808   (void)range;
4809   (void)uplo;
4810   (void)n;
4811   (void)a;
4812   (void)lda;
4813   (void)vl;
4814   (void)vu;
4815   (void)il;
4816   (void)iu;
4817   (void)abstol;
4818   (void)m;
4819   (void)w;
4820   (void)z;
4821   (void)ldz;
4822   (void)isuppz;
4823   (void)work;
4824   (void)lwork;
4825   (void)iwork;
4826   (void)liwork;
4827   (void)info;
4828   Assert(false, LAPACKSupport::ExcMissing("dsyevr"));
4829 #endif // DEAL_II_WITH_LAPACK
4830 }
4831 
4832 
4833 
4834 template <typename number1,
4835           typename number2,
4836           typename number3,
4837           typename number4,
4838           typename number5,
4839           typename number6,
4840           typename number7>
4841 inline void
syevx(const char *,const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,const number2 *,const number3 *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number4 *,dealii::types::blas_int *,number5 *,number6 *,const dealii::types::blas_int *,number7 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *)4842 syevx(const char *,
4843       const char *,
4844       const char *,
4845       const dealii::types::blas_int *,
4846       number1 *,
4847       const dealii::types::blas_int *,
4848       const number2 *,
4849       const number3 *,
4850       const dealii::types::blas_int *,
4851       const dealii::types::blas_int *,
4852       const number4 *,
4853       dealii::types::blas_int *,
4854       number5 *,
4855       number6 *,
4856       const dealii::types::blas_int *,
4857       number7 *,
4858       const dealii::types::blas_int *,
4859       dealii::types::blas_int *,
4860       dealii::types::blas_int *,
4861       dealii::types::blas_int *)
4862 {
4863   Assert(false, ExcNotImplemented());
4864 }
4865 
4866 
4867 
4868 inline void
syevx(const char * jobz,const char * range,const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,const float * vl,const float * vu,const dealii::types::blas_int * il,const dealii::types::blas_int * iu,const float * abstol,dealii::types::blas_int * m,float * w,float * z,const dealii::types::blas_int * ldz,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * ifail,dealii::types::blas_int * info)4869 syevx(const char *                   jobz,
4870       const char *                   range,
4871       const char *                   uplo,
4872       const dealii::types::blas_int *n,
4873       float *                        a,
4874       const dealii::types::blas_int *lda,
4875       const float *                  vl,
4876       const float *                  vu,
4877       const dealii::types::blas_int *il,
4878       const dealii::types::blas_int *iu,
4879       const float *                  abstol,
4880       dealii::types::blas_int *      m,
4881       float *                        w,
4882       float *                        z,
4883       const dealii::types::blas_int *ldz,
4884       float *                        work,
4885       const dealii::types::blas_int *lwork,
4886       dealii::types::blas_int *      iwork,
4887       dealii::types::blas_int *      ifail,
4888       dealii::types::blas_int *      info)
4889 {
4890 #ifdef DEAL_II_WITH_LAPACK
4891   ssyevx_(jobz,
4892           range,
4893           uplo,
4894           n,
4895           a,
4896           lda,
4897           vl,
4898           vu,
4899           il,
4900           iu,
4901           abstol,
4902           m,
4903           w,
4904           z,
4905           ldz,
4906           work,
4907           lwork,
4908           iwork,
4909           ifail,
4910           info);
4911 #else
4912   (void)jobz;
4913   (void)range;
4914   (void)uplo;
4915   (void)n;
4916   (void)a;
4917   (void)lda;
4918   (void)vl;
4919   (void)vu;
4920   (void)il;
4921   (void)iu;
4922   (void)abstol;
4923   (void)m;
4924   (void)w;
4925   (void)z;
4926   (void)ldz;
4927   (void)work;
4928   (void)lwork;
4929   (void)iwork;
4930   (void)ifail;
4931   (void)info;
4932   Assert(false, LAPACKSupport::ExcMissing("ssyevx"));
4933 #endif // DEAL_II_WITH_LAPACK
4934 }
4935 
4936 
4937 
4938 inline void
syevx(const char * jobz,const char * range,const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,const double * vl,const double * vu,const dealii::types::blas_int * il,const dealii::types::blas_int * iu,const double * abstol,dealii::types::blas_int * m,double * w,double * z,const dealii::types::blas_int * ldz,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * ifail,dealii::types::blas_int * info)4939 syevx(const char *                   jobz,
4940       const char *                   range,
4941       const char *                   uplo,
4942       const dealii::types::blas_int *n,
4943       double *                       a,
4944       const dealii::types::blas_int *lda,
4945       const double *                 vl,
4946       const double *                 vu,
4947       const dealii::types::blas_int *il,
4948       const dealii::types::blas_int *iu,
4949       const double *                 abstol,
4950       dealii::types::blas_int *      m,
4951       double *                       w,
4952       double *                       z,
4953       const dealii::types::blas_int *ldz,
4954       double *                       work,
4955       const dealii::types::blas_int *lwork,
4956       dealii::types::blas_int *      iwork,
4957       dealii::types::blas_int *      ifail,
4958       dealii::types::blas_int *      info)
4959 {
4960 #ifdef DEAL_II_WITH_LAPACK
4961   dsyevx_(jobz,
4962           range,
4963           uplo,
4964           n,
4965           a,
4966           lda,
4967           vl,
4968           vu,
4969           il,
4970           iu,
4971           abstol,
4972           m,
4973           w,
4974           z,
4975           ldz,
4976           work,
4977           lwork,
4978           iwork,
4979           ifail,
4980           info);
4981 #else
4982   (void)jobz;
4983   (void)range;
4984   (void)uplo;
4985   (void)n;
4986   (void)a;
4987   (void)lda;
4988   (void)vl;
4989   (void)vu;
4990   (void)il;
4991   (void)iu;
4992   (void)abstol;
4993   (void)m;
4994   (void)w;
4995   (void)z;
4996   (void)ldz;
4997   (void)work;
4998   (void)lwork;
4999   (void)iwork;
5000   (void)ifail;
5001   (void)info;
5002   Assert(false, LAPACKSupport::ExcMissing("dsyevx"));
5003 #endif // DEAL_II_WITH_LAPACK
5004 }
5005 
5006 
5007 
5008 template <typename number1,
5009           typename number2,
5010           typename number3,
5011           typename number4>
5012 inline void
sygv(const dealii::types::blas_int *,const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,number3 *,number4 *,const dealii::types::blas_int *,dealii::types::blas_int *)5013 sygv(const dealii::types::blas_int *,
5014      const char *,
5015      const char *,
5016      const dealii::types::blas_int *,
5017      number1 *,
5018      const dealii::types::blas_int *,
5019      number2 *,
5020      const dealii::types::blas_int *,
5021      number3 *,
5022      number4 *,
5023      const dealii::types::blas_int *,
5024      dealii::types::blas_int *)
5025 {
5026   Assert(false, ExcNotImplemented());
5027 }
5028 
5029 
5030 
5031 inline void
sygv(const dealii::types::blas_int * itype,const char * jobz,const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * b,const dealii::types::blas_int * ldb,float * w,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)5032 sygv(const dealii::types::blas_int *itype,
5033      const char *                   jobz,
5034      const char *                   uplo,
5035      const dealii::types::blas_int *n,
5036      float *                        a,
5037      const dealii::types::blas_int *lda,
5038      float *                        b,
5039      const dealii::types::blas_int *ldb,
5040      float *                        w,
5041      float *                        work,
5042      const dealii::types::blas_int *lwork,
5043      dealii::types::blas_int *      info)
5044 {
5045 #ifdef DEAL_II_WITH_LAPACK
5046   ssygv_(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, info);
5047 #else
5048   (void)itype;
5049   (void)jobz;
5050   (void)uplo;
5051   (void)n;
5052   (void)a;
5053   (void)lda;
5054   (void)b;
5055   (void)ldb;
5056   (void)w;
5057   (void)work;
5058   (void)lwork;
5059   (void)info;
5060   Assert(false, LAPACKSupport::ExcMissing("ssygv"));
5061 #endif // DEAL_II_WITH_LAPACK
5062 }
5063 
5064 
5065 
5066 inline void
sygv(const dealii::types::blas_int * itype,const char * jobz,const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * b,const dealii::types::blas_int * ldb,double * w,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * info)5067 sygv(const dealii::types::blas_int *itype,
5068      const char *                   jobz,
5069      const char *                   uplo,
5070      const dealii::types::blas_int *n,
5071      double *                       a,
5072      const dealii::types::blas_int *lda,
5073      double *                       b,
5074      const dealii::types::blas_int *ldb,
5075      double *                       w,
5076      double *                       work,
5077      const dealii::types::blas_int *lwork,
5078      dealii::types::blas_int *      info)
5079 {
5080 #ifdef DEAL_II_WITH_LAPACK
5081   dsygv_(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, info);
5082 #else
5083   (void)itype;
5084   (void)jobz;
5085   (void)uplo;
5086   (void)n;
5087   (void)a;
5088   (void)lda;
5089   (void)b;
5090   (void)ldb;
5091   (void)w;
5092   (void)work;
5093   (void)lwork;
5094   (void)info;
5095   Assert(false, LAPACKSupport::ExcMissing("dsygv"));
5096 #endif // DEAL_II_WITH_LAPACK
5097 }
5098 
5099 
5100 
5101 template <typename number1,
5102           typename number2,
5103           typename number3,
5104           typename number4,
5105           typename number5,
5106           typename number6,
5107           typename number7,
5108           typename number8>
5109 inline void
sygvx(const dealii::types::blas_int *,const char *,const char *,const char *,const dealii::types::blas_int *,number1 *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,const number3 *,const number4 *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number5 *,dealii::types::blas_int *,number6 *,number7 *,const dealii::types::blas_int *,number8 *,const dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *,dealii::types::blas_int *)5110 sygvx(const dealii::types::blas_int *,
5111       const char *,
5112       const char *,
5113       const char *,
5114       const dealii::types::blas_int *,
5115       number1 *,
5116       const dealii::types::blas_int *,
5117       number2 *,
5118       const dealii::types::blas_int *,
5119       const number3 *,
5120       const number4 *,
5121       const dealii::types::blas_int *,
5122       const dealii::types::blas_int *,
5123       const number5 *,
5124       dealii::types::blas_int *,
5125       number6 *,
5126       number7 *,
5127       const dealii::types::blas_int *,
5128       number8 *,
5129       const dealii::types::blas_int *,
5130       dealii::types::blas_int *,
5131       dealii::types::blas_int *,
5132       dealii::types::blas_int *)
5133 {
5134   Assert(false, ExcNotImplemented());
5135 }
5136 
5137 
5138 
5139 inline void
sygvx(const dealii::types::blas_int * itype,const char * jobz,const char * range,const char * uplo,const dealii::types::blas_int * n,float * a,const dealii::types::blas_int * lda,float * b,const dealii::types::blas_int * ldb,const float * vl,const float * vu,const dealii::types::blas_int * il,const dealii::types::blas_int * iu,const float * abstol,dealii::types::blas_int * m,float * w,float * z,const dealii::types::blas_int * ldz,float * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * ifail,dealii::types::blas_int * info)5140 sygvx(const dealii::types::blas_int *itype,
5141       const char *                   jobz,
5142       const char *                   range,
5143       const char *                   uplo,
5144       const dealii::types::blas_int *n,
5145       float *                        a,
5146       const dealii::types::blas_int *lda,
5147       float *                        b,
5148       const dealii::types::blas_int *ldb,
5149       const float *                  vl,
5150       const float *                  vu,
5151       const dealii::types::blas_int *il,
5152       const dealii::types::blas_int *iu,
5153       const float *                  abstol,
5154       dealii::types::blas_int *      m,
5155       float *                        w,
5156       float *                        z,
5157       const dealii::types::blas_int *ldz,
5158       float *                        work,
5159       const dealii::types::blas_int *lwork,
5160       dealii::types::blas_int *      iwork,
5161       dealii::types::blas_int *      ifail,
5162       dealii::types::blas_int *      info)
5163 {
5164 #ifdef DEAL_II_WITH_LAPACK
5165   ssygvx_(itype,
5166           jobz,
5167           range,
5168           uplo,
5169           n,
5170           a,
5171           lda,
5172           b,
5173           ldb,
5174           vl,
5175           vu,
5176           il,
5177           iu,
5178           abstol,
5179           m,
5180           w,
5181           z,
5182           ldz,
5183           work,
5184           lwork,
5185           iwork,
5186           ifail,
5187           info);
5188 #else
5189   (void)itype;
5190   (void)jobz;
5191   (void)range;
5192   (void)uplo;
5193   (void)n;
5194   (void)a;
5195   (void)lda;
5196   (void)b;
5197   (void)ldb;
5198   (void)vl;
5199   (void)vu;
5200   (void)il;
5201   (void)iu;
5202   (void)abstol;
5203   (void)m;
5204   (void)w;
5205   (void)z;
5206   (void)ldz;
5207   (void)work;
5208   (void)lwork;
5209   (void)iwork;
5210   (void)ifail;
5211   (void)info;
5212   Assert(false, LAPACKSupport::ExcMissing("ssygvx"));
5213 #endif // DEAL_II_WITH_LAPACK
5214 }
5215 
5216 
5217 
5218 inline void
sygvx(const dealii::types::blas_int * itype,const char * jobz,const char * range,const char * uplo,const dealii::types::blas_int * n,double * a,const dealii::types::blas_int * lda,double * b,const dealii::types::blas_int * ldb,const double * vl,const double * vu,const dealii::types::blas_int * il,const dealii::types::blas_int * iu,const double * abstol,dealii::types::blas_int * m,double * w,double * z,const dealii::types::blas_int * ldz,double * work,const dealii::types::blas_int * lwork,dealii::types::blas_int * iwork,dealii::types::blas_int * ifail,dealii::types::blas_int * info)5219 sygvx(const dealii::types::blas_int *itype,
5220       const char *                   jobz,
5221       const char *                   range,
5222       const char *                   uplo,
5223       const dealii::types::blas_int *n,
5224       double *                       a,
5225       const dealii::types::blas_int *lda,
5226       double *                       b,
5227       const dealii::types::blas_int *ldb,
5228       const double *                 vl,
5229       const double *                 vu,
5230       const dealii::types::blas_int *il,
5231       const dealii::types::blas_int *iu,
5232       const double *                 abstol,
5233       dealii::types::blas_int *      m,
5234       double *                       w,
5235       double *                       z,
5236       const dealii::types::blas_int *ldz,
5237       double *                       work,
5238       const dealii::types::blas_int *lwork,
5239       dealii::types::blas_int *      iwork,
5240       dealii::types::blas_int *      ifail,
5241       dealii::types::blas_int *      info)
5242 {
5243 #ifdef DEAL_II_WITH_LAPACK
5244   dsygvx_(itype,
5245           jobz,
5246           range,
5247           uplo,
5248           n,
5249           a,
5250           lda,
5251           b,
5252           ldb,
5253           vl,
5254           vu,
5255           il,
5256           iu,
5257           abstol,
5258           m,
5259           w,
5260           z,
5261           ldz,
5262           work,
5263           lwork,
5264           iwork,
5265           ifail,
5266           info);
5267 #else
5268   (void)itype;
5269   (void)jobz;
5270   (void)range;
5271   (void)uplo;
5272   (void)n;
5273   (void)a;
5274   (void)lda;
5275   (void)b;
5276   (void)ldb;
5277   (void)vl;
5278   (void)vu;
5279   (void)il;
5280   (void)iu;
5281   (void)abstol;
5282   (void)m;
5283   (void)w;
5284   (void)z;
5285   (void)ldz;
5286   (void)work;
5287   (void)lwork;
5288   (void)iwork;
5289   (void)ifail;
5290   (void)info;
5291   Assert(false, LAPACKSupport::ExcMissing("dsygvx"));
5292 #endif // DEAL_II_WITH_LAPACK
5293 }
5294 
5295 
5296 
5297 template <typename number1, typename number2, typename number3>
5298 inline void
syr(const char *,const dealii::types::blas_int *,const number1 *,const number2 *,const dealii::types::blas_int *,number3 *,const dealii::types::blas_int *)5299 syr(const char *,
5300     const dealii::types::blas_int *,
5301     const number1 *,
5302     const number2 *,
5303     const dealii::types::blas_int *,
5304     number3 *,
5305     const dealii::types::blas_int *)
5306 {
5307   Assert(false, ExcNotImplemented());
5308 }
5309 
5310 
5311 
5312 inline void
syr(const char * uplo,const dealii::types::blas_int * n,const float * alpha,const float * x,const dealii::types::blas_int * incx,float * a,const dealii::types::blas_int * lda)5313 syr(const char *                   uplo,
5314     const dealii::types::blas_int *n,
5315     const float *                  alpha,
5316     const float *                  x,
5317     const dealii::types::blas_int *incx,
5318     float *                        a,
5319     const dealii::types::blas_int *lda)
5320 {
5321 #ifdef DEAL_II_WITH_LAPACK
5322   ssyr_(uplo, n, alpha, x, incx, a, lda);
5323 #else
5324   (void)uplo;
5325   (void)n;
5326   (void)alpha;
5327   (void)x;
5328   (void)incx;
5329   (void)a;
5330   (void)lda;
5331   Assert(false, LAPACKSupport::ExcMissing("ssyr"));
5332 #endif // DEAL_II_WITH_LAPACK
5333 }
5334 
5335 
5336 
5337 inline void
syr(const char * uplo,const dealii::types::blas_int * n,const double * alpha,const double * x,const dealii::types::blas_int * incx,double * a,const dealii::types::blas_int * lda)5338 syr(const char *                   uplo,
5339     const dealii::types::blas_int *n,
5340     const double *                 alpha,
5341     const double *                 x,
5342     const dealii::types::blas_int *incx,
5343     double *                       a,
5344     const dealii::types::blas_int *lda)
5345 {
5346 #ifdef DEAL_II_WITH_LAPACK
5347   dsyr_(uplo, n, alpha, x, incx, a, lda);
5348 #else
5349   (void)uplo;
5350   (void)n;
5351   (void)alpha;
5352   (void)x;
5353   (void)incx;
5354   (void)a;
5355   (void)lda;
5356   Assert(false, LAPACKSupport::ExcMissing("dsyr"));
5357 #endif // DEAL_II_WITH_LAPACK
5358 }
5359 
5360 
5361 
5362 template <typename number1,
5363           typename number2,
5364           typename number3,
5365           typename number4>
5366 inline void
syrk(const char *,const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const number2 *,const dealii::types::blas_int *,const number3 *,number4 *,const dealii::types::blas_int *)5367 syrk(const char *,
5368      const char *,
5369      const dealii::types::blas_int *,
5370      const dealii::types::blas_int *,
5371      const number1 *,
5372      const number2 *,
5373      const dealii::types::blas_int *,
5374      const number3 *,
5375      number4 *,
5376      const dealii::types::blas_int *)
5377 {
5378   Assert(false, ExcNotImplemented());
5379 }
5380 
5381 
5382 
5383 inline void
syrk(const char * uplo,const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const float * alpha,const float * a,const dealii::types::blas_int * lda,const float * beta,float * c,const dealii::types::blas_int * ldc)5384 syrk(const char *                   uplo,
5385      const char *                   trans,
5386      const dealii::types::blas_int *n,
5387      const dealii::types::blas_int *k,
5388      const float *                  alpha,
5389      const float *                  a,
5390      const dealii::types::blas_int *lda,
5391      const float *                  beta,
5392      float *                        c,
5393      const dealii::types::blas_int *ldc)
5394 {
5395 #ifdef DEAL_II_WITH_LAPACK
5396   ssyrk_(uplo, trans, n, k, alpha, a, lda, beta, c, ldc);
5397 #else
5398   (void)uplo;
5399   (void)trans;
5400   (void)n;
5401   (void)k;
5402   (void)alpha;
5403   (void)a;
5404   (void)lda;
5405   (void)beta;
5406   (void)c;
5407   (void)ldc;
5408   Assert(false, LAPACKSupport::ExcMissing("ssyrk"));
5409 #endif // DEAL_II_WITH_LAPACK
5410 }
5411 
5412 
5413 
5414 inline void
syrk(const char * uplo,const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const double * alpha,const double * a,const dealii::types::blas_int * lda,const double * beta,double * c,const dealii::types::blas_int * ldc)5415 syrk(const char *                   uplo,
5416      const char *                   trans,
5417      const dealii::types::blas_int *n,
5418      const dealii::types::blas_int *k,
5419      const double *                 alpha,
5420      const double *                 a,
5421      const dealii::types::blas_int *lda,
5422      const double *                 beta,
5423      double *                       c,
5424      const dealii::types::blas_int *ldc)
5425 {
5426 #ifdef DEAL_II_WITH_LAPACK
5427   dsyrk_(uplo, trans, n, k, alpha, a, lda, beta, c, ldc);
5428 #else
5429   (void)uplo;
5430   (void)trans;
5431   (void)n;
5432   (void)k;
5433   (void)alpha;
5434   (void)a;
5435   (void)lda;
5436   (void)beta;
5437   (void)c;
5438   (void)ldc;
5439   Assert(false, LAPACKSupport::ExcMissing("dsyrk"));
5440 #endif // DEAL_II_WITH_LAPACK
5441 }
5442 
5443 
5444 
5445 inline void
syrk(const char * uplo,const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const std::complex<float> * alpha,const std::complex<float> * a,const dealii::types::blas_int * lda,const std::complex<float> * beta,std::complex<float> * c,const dealii::types::blas_int * ldc)5446 syrk(const char *                   uplo,
5447      const char *                   trans,
5448      const dealii::types::blas_int *n,
5449      const dealii::types::blas_int *k,
5450      const std::complex<float> *    alpha,
5451      const std::complex<float> *    a,
5452      const dealii::types::blas_int *lda,
5453      const std::complex<float> *    beta,
5454      std::complex<float> *          c,
5455      const dealii::types::blas_int *ldc)
5456 {
5457 #ifdef DEAL_II_WITH_LAPACK
5458   csyrk_(uplo, trans, n, k, alpha, a, lda, beta, c, ldc);
5459 #else
5460   (void)uplo;
5461   (void)trans;
5462   (void)n;
5463   (void)k;
5464   (void)alpha;
5465   (void)a;
5466   (void)lda;
5467   (void)beta;
5468   (void)c;
5469   (void)ldc;
5470   Assert(false, LAPACKSupport::ExcMissing("csyrk"));
5471 #endif // DEAL_II_WITH_LAPACK
5472 }
5473 
5474 
5475 
5476 inline void
syrk(const char * uplo,const char * trans,const dealii::types::blas_int * n,const dealii::types::blas_int * k,const std::complex<double> * alpha,const std::complex<double> * a,const dealii::types::blas_int * lda,const std::complex<double> * beta,std::complex<double> * c,const dealii::types::blas_int * ldc)5477 syrk(const char *                   uplo,
5478      const char *                   trans,
5479      const dealii::types::blas_int *n,
5480      const dealii::types::blas_int *k,
5481      const std::complex<double> *   alpha,
5482      const std::complex<double> *   a,
5483      const dealii::types::blas_int *lda,
5484      const std::complex<double> *   beta,
5485      std::complex<double> *         c,
5486      const dealii::types::blas_int *ldc)
5487 {
5488 #ifdef DEAL_II_WITH_LAPACK
5489   zsyrk_(uplo, trans, n, k, alpha, a, lda, beta, c, ldc);
5490 #else
5491   (void)uplo;
5492   (void)trans;
5493   (void)n;
5494   (void)k;
5495   (void)alpha;
5496   (void)a;
5497   (void)lda;
5498   (void)beta;
5499   (void)c;
5500   (void)ldc;
5501   Assert(false, LAPACKSupport::ExcMissing("zsyrk"));
5502 #endif // DEAL_II_WITH_LAPACK
5503 }
5504 
5505 
5506 
5507 template <typename number1, typename number2, typename number3>
5508 inline void
trcon(const char *,const char *,const char *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,number2 *,number3 *,dealii::types::blas_int *,dealii::types::blas_int *)5509 trcon(const char *,
5510       const char *,
5511       const char *,
5512       const dealii::types::blas_int *,
5513       const number1 *,
5514       const dealii::types::blas_int *,
5515       number2 *,
5516       number3 *,
5517       dealii::types::blas_int *,
5518       dealii::types::blas_int *)
5519 {
5520   Assert(false, ExcNotImplemented());
5521 }
5522 
5523 
5524 
5525 inline void
trcon(const char * norm,const char * uplo,const char * diag,const dealii::types::blas_int * n,const float * a,const dealii::types::blas_int * lda,float * rcond,float * work,dealii::types::blas_int * iwork,dealii::types::blas_int * info)5526 trcon(const char *                   norm,
5527       const char *                   uplo,
5528       const char *                   diag,
5529       const dealii::types::blas_int *n,
5530       const float *                  a,
5531       const dealii::types::blas_int *lda,
5532       float *                        rcond,
5533       float *                        work,
5534       dealii::types::blas_int *      iwork,
5535       dealii::types::blas_int *      info)
5536 {
5537 #ifdef DEAL_II_WITH_LAPACK
5538   strcon_(norm, uplo, diag, n, a, lda, rcond, work, iwork, info);
5539 #else
5540   (void)norm;
5541   (void)uplo;
5542   (void)diag;
5543   (void)n;
5544   (void)a;
5545   (void)lda;
5546   (void)rcond;
5547   (void)work;
5548   (void)iwork;
5549   (void)info;
5550   Assert(false, LAPACKSupport::ExcMissing("strcon"));
5551 #endif // DEAL_II_WITH_LAPACK
5552 }
5553 
5554 
5555 
5556 inline void
trcon(const char * norm,const char * uplo,const char * diag,const dealii::types::blas_int * n,const double * a,const dealii::types::blas_int * lda,double * rcond,double * work,dealii::types::blas_int * iwork,dealii::types::blas_int * info)5557 trcon(const char *                   norm,
5558       const char *                   uplo,
5559       const char *                   diag,
5560       const dealii::types::blas_int *n,
5561       const double *                 a,
5562       const dealii::types::blas_int *lda,
5563       double *                       rcond,
5564       double *                       work,
5565       dealii::types::blas_int *      iwork,
5566       dealii::types::blas_int *      info)
5567 {
5568 #ifdef DEAL_II_WITH_LAPACK
5569   dtrcon_(norm, uplo, diag, n, a, lda, rcond, work, iwork, info);
5570 #else
5571   (void)norm;
5572   (void)uplo;
5573   (void)diag;
5574   (void)n;
5575   (void)a;
5576   (void)lda;
5577   (void)rcond;
5578   (void)work;
5579   (void)iwork;
5580   (void)info;
5581   Assert(false, LAPACKSupport::ExcMissing("dtrcon"));
5582 #endif // DEAL_II_WITH_LAPACK
5583 }
5584 
5585 
5586 
5587 inline void
trcon(const char * norm,const char * uplo,const char * diag,const dealii::types::blas_int * n,const std::complex<float> * a,const dealii::types::blas_int * lda,float * rcond,std::complex<float> * work,float * rwork,dealii::types::blas_int * info)5588 trcon(const char *                   norm,
5589       const char *                   uplo,
5590       const char *                   diag,
5591       const dealii::types::blas_int *n,
5592       const std::complex<float> *    a,
5593       const dealii::types::blas_int *lda,
5594       float *                        rcond,
5595       std::complex<float> *          work,
5596       float *                        rwork,
5597       dealii::types::blas_int *      info)
5598 {
5599 #ifdef DEAL_II_WITH_LAPACK
5600   ctrcon_(norm, uplo, diag, n, a, lda, rcond, work, rwork, info);
5601 #else
5602   (void)norm;
5603   (void)uplo;
5604   (void)diag;
5605   (void)n;
5606   (void)a;
5607   (void)lda;
5608   (void)rcond;
5609   (void)work;
5610   (void)rwork;
5611   (void)info;
5612   Assert(false, LAPACKSupport::ExcMissing("ctrcon"));
5613 #endif // DEAL_II_WITH_LAPACK
5614 }
5615 
5616 
5617 
5618 inline void
trcon(const char * norm,const char * uplo,const char * diag,const dealii::types::blas_int * n,const std::complex<double> * a,const dealii::types::blas_int * lda,double * rcond,std::complex<double> * work,double * rwork,dealii::types::blas_int * info)5619 trcon(const char *                   norm,
5620       const char *                   uplo,
5621       const char *                   diag,
5622       const dealii::types::blas_int *n,
5623       const std::complex<double> *   a,
5624       const dealii::types::blas_int *lda,
5625       double *                       rcond,
5626       std::complex<double> *         work,
5627       double *                       rwork,
5628       dealii::types::blas_int *      info)
5629 {
5630 #ifdef DEAL_II_WITH_LAPACK
5631   ztrcon_(norm, uplo, diag, n, a, lda, rcond, work, rwork, info);
5632 #else
5633   (void)norm;
5634   (void)uplo;
5635   (void)diag;
5636   (void)n;
5637   (void)a;
5638   (void)lda;
5639   (void)rcond;
5640   (void)work;
5641   (void)rwork;
5642   (void)info;
5643   Assert(false, LAPACKSupport::ExcMissing("ztrcon"));
5644 #endif // DEAL_II_WITH_LAPACK
5645 }
5646 
5647 
5648 
5649 template <typename number1, typename number2>
5650 inline void
trmv(const char *,const char *,const char *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *)5651 trmv(const char *,
5652      const char *,
5653      const char *,
5654      const dealii::types::blas_int *,
5655      const number1 *,
5656      const dealii::types::blas_int *,
5657      number2 *,
5658      const dealii::types::blas_int *)
5659 {
5660   Assert(false, ExcNotImplemented());
5661 }
5662 
5663 
5664 
5665 inline void
trmv(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const float * a,const dealii::types::blas_int * lda,float * x,const dealii::types::blas_int * incx)5666 trmv(const char *                   uplo,
5667      const char *                   trans,
5668      const char *                   diag,
5669      const dealii::types::blas_int *n,
5670      const float *                  a,
5671      const dealii::types::blas_int *lda,
5672      float *                        x,
5673      const dealii::types::blas_int *incx)
5674 {
5675 #ifdef DEAL_II_WITH_LAPACK
5676   strmv_(uplo, trans, diag, n, a, lda, x, incx);
5677 #else
5678   (void)uplo;
5679   (void)trans;
5680   (void)diag;
5681   (void)n;
5682   (void)a;
5683   (void)lda;
5684   (void)x;
5685   (void)incx;
5686   Assert(false, LAPACKSupport::ExcMissing("strmv"));
5687 #endif // DEAL_II_WITH_LAPACK
5688 }
5689 
5690 
5691 
5692 inline void
trmv(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const double * a,const dealii::types::blas_int * lda,double * x,const dealii::types::blas_int * incx)5693 trmv(const char *                   uplo,
5694      const char *                   trans,
5695      const char *                   diag,
5696      const dealii::types::blas_int *n,
5697      const double *                 a,
5698      const dealii::types::blas_int *lda,
5699      double *                       x,
5700      const dealii::types::blas_int *incx)
5701 {
5702 #ifdef DEAL_II_WITH_LAPACK
5703   dtrmv_(uplo, trans, diag, n, a, lda, x, incx);
5704 #else
5705   (void)uplo;
5706   (void)trans;
5707   (void)diag;
5708   (void)n;
5709   (void)a;
5710   (void)lda;
5711   (void)x;
5712   (void)incx;
5713   Assert(false, LAPACKSupport::ExcMissing("dtrmv"));
5714 #endif // DEAL_II_WITH_LAPACK
5715 }
5716 
5717 
5718 
5719 inline void
trmv(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * x,const dealii::types::blas_int * incx)5720 trmv(const char *                   uplo,
5721      const char *                   trans,
5722      const char *                   diag,
5723      const dealii::types::blas_int *n,
5724      const std::complex<float> *    a,
5725      const dealii::types::blas_int *lda,
5726      std::complex<float> *          x,
5727      const dealii::types::blas_int *incx)
5728 {
5729 #ifdef DEAL_II_WITH_LAPACK
5730   ctrmv_(uplo, trans, diag, n, a, lda, x, incx);
5731 #else
5732   (void)uplo;
5733   (void)trans;
5734   (void)diag;
5735   (void)n;
5736   (void)a;
5737   (void)lda;
5738   (void)x;
5739   (void)incx;
5740   Assert(false, LAPACKSupport::ExcMissing("ctrmv"));
5741 #endif // DEAL_II_WITH_LAPACK
5742 }
5743 
5744 
5745 
5746 inline void
trmv(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * x,const dealii::types::blas_int * incx)5747 trmv(const char *                   uplo,
5748      const char *                   trans,
5749      const char *                   diag,
5750      const dealii::types::blas_int *n,
5751      const std::complex<double> *   a,
5752      const dealii::types::blas_int *lda,
5753      std::complex<double> *         x,
5754      const dealii::types::blas_int *incx)
5755 {
5756 #ifdef DEAL_II_WITH_LAPACK
5757   ztrmv_(uplo, trans, diag, n, a, lda, x, incx);
5758 #else
5759   (void)uplo;
5760   (void)trans;
5761   (void)diag;
5762   (void)n;
5763   (void)a;
5764   (void)lda;
5765   (void)x;
5766   (void)incx;
5767   Assert(false, LAPACKSupport::ExcMissing("ztrmv"));
5768 #endif // DEAL_II_WITH_LAPACK
5769 }
5770 
5771 
5772 
5773 template <typename number1, typename number2>
5774 inline void
trtrs(const char *,const char *,const char *,const dealii::types::blas_int *,const dealii::types::blas_int *,const number1 *,const dealii::types::blas_int *,number2 *,const dealii::types::blas_int *,dealii::types::blas_int *)5775 trtrs(const char *,
5776       const char *,
5777       const char *,
5778       const dealii::types::blas_int *,
5779       const dealii::types::blas_int *,
5780       const number1 *,
5781       const dealii::types::blas_int *,
5782       number2 *,
5783       const dealii::types::blas_int *,
5784       dealii::types::blas_int *)
5785 {
5786   Assert(false, ExcNotImplemented());
5787 }
5788 
5789 
5790 
5791 inline void
trtrs(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const float * a,const dealii::types::blas_int * lda,float * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)5792 trtrs(const char *                   uplo,
5793       const char *                   trans,
5794       const char *                   diag,
5795       const dealii::types::blas_int *n,
5796       const dealii::types::blas_int *nrhs,
5797       const float *                  a,
5798       const dealii::types::blas_int *lda,
5799       float *                        b,
5800       const dealii::types::blas_int *ldb,
5801       dealii::types::blas_int *      info)
5802 {
5803 #ifdef DEAL_II_WITH_LAPACK
5804   strtrs_(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info);
5805 #else
5806   (void)uplo;
5807   (void)trans;
5808   (void)diag;
5809   (void)n;
5810   (void)nrhs;
5811   (void)a;
5812   (void)lda;
5813   (void)b;
5814   (void)ldb;
5815   (void)info;
5816   Assert(false, LAPACKSupport::ExcMissing("strtrs"));
5817 #endif // DEAL_II_WITH_LAPACK
5818 }
5819 
5820 
5821 
5822 inline void
trtrs(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const double * a,const dealii::types::blas_int * lda,double * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)5823 trtrs(const char *                   uplo,
5824       const char *                   trans,
5825       const char *                   diag,
5826       const dealii::types::blas_int *n,
5827       const dealii::types::blas_int *nrhs,
5828       const double *                 a,
5829       const dealii::types::blas_int *lda,
5830       double *                       b,
5831       const dealii::types::blas_int *ldb,
5832       dealii::types::blas_int *      info)
5833 {
5834 #ifdef DEAL_II_WITH_LAPACK
5835   dtrtrs_(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info);
5836 #else
5837   (void)uplo;
5838   (void)trans;
5839   (void)diag;
5840   (void)n;
5841   (void)nrhs;
5842   (void)a;
5843   (void)lda;
5844   (void)b;
5845   (void)ldb;
5846   (void)info;
5847   Assert(false, LAPACKSupport::ExcMissing("dtrtrs"));
5848 #endif // DEAL_II_WITH_LAPACK
5849 }
5850 
5851 
5852 
5853 inline void
trtrs(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const std::complex<float> * a,const dealii::types::blas_int * lda,std::complex<float> * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)5854 trtrs(const char *                   uplo,
5855       const char *                   trans,
5856       const char *                   diag,
5857       const dealii::types::blas_int *n,
5858       const dealii::types::blas_int *nrhs,
5859       const std::complex<float> *    a,
5860       const dealii::types::blas_int *lda,
5861       std::complex<float> *          b,
5862       const dealii::types::blas_int *ldb,
5863       dealii::types::blas_int *      info)
5864 {
5865 #ifdef DEAL_II_WITH_LAPACK
5866   ctrtrs_(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info);
5867 #else
5868   (void)uplo;
5869   (void)trans;
5870   (void)diag;
5871   (void)n;
5872   (void)nrhs;
5873   (void)a;
5874   (void)lda;
5875   (void)b;
5876   (void)ldb;
5877   (void)info;
5878   Assert(false, LAPACKSupport::ExcMissing("ctrtrs"));
5879 #endif // DEAL_II_WITH_LAPACK
5880 }
5881 
5882 
5883 
5884 inline void
trtrs(const char * uplo,const char * trans,const char * diag,const dealii::types::blas_int * n,const dealii::types::blas_int * nrhs,const std::complex<double> * a,const dealii::types::blas_int * lda,std::complex<double> * b,const dealii::types::blas_int * ldb,dealii::types::blas_int * info)5885 trtrs(const char *                   uplo,
5886       const char *                   trans,
5887       const char *                   diag,
5888       const dealii::types::blas_int *n,
5889       const dealii::types::blas_int *nrhs,
5890       const std::complex<double> *   a,
5891       const dealii::types::blas_int *lda,
5892       std::complex<double> *         b,
5893       const dealii::types::blas_int *ldb,
5894       dealii::types::blas_int *      info)
5895 {
5896 #ifdef DEAL_II_WITH_LAPACK
5897   ztrtrs_(uplo, trans, diag, n, nrhs, a, lda, b, ldb, info);
5898 #else
5899   (void)uplo;
5900   (void)trans;
5901   (void)diag;
5902   (void)n;
5903   (void)nrhs;
5904   (void)a;
5905   (void)lda;
5906   (void)b;
5907   (void)ldb;
5908   (void)info;
5909   Assert(false, LAPACKSupport::ExcMissing("ztrtrs"));
5910 #endif // DEAL_II_WITH_LAPACK
5911 }
5912 
5913 DEAL_II_NAMESPACE_CLOSE
5914 
5915 #endif
5916