Loading [MathJax]/extensions/TeX/AMSsymbols.js
 Reference documentation for deal.II version 8.5.1
All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
lapack_templates.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2005 - 2015 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 at
12 // the top level of the deal.II distribution.
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 #include <deal.II/lac/lapack_support.h>
22 
23 extern "C"
24 {
25 // vector update of the form y += alpha*x with a scalar, x,y vectors
26  void daxpy_ (const int *n, const double *alpha, const double *x,
27  const int *incx, double *y, const int *incy);
28  void saxpy_ (const int *n, const float *alpha, const float *x,
29  const int *incx, float *y, const int *incy);
30 // General Matrix
31 // Matrix vector product
32  void dgemv_ (const char *trans, const int *m, const int *n,
33  const double *alpha, const double *A, const int *lda,
34  const double *x, const int *incx,
35  const double *b, double *y, const int *incy);
36  void sgemv_ (const char *trans, const int *m, const int *n,
37  const float *alpha, const float *A, const int *lda,
38  const float *x, const int *incx,
39  const float *b, float *y, const int *incy);
40 // Matrix matrix product
41  void dgemm_ (const char *transa, const char *transb,
42  const int *m, const int *n, const int *k,
43  const double *alpha, const double *A, const int *lda,
44  const double *B, const int *ldb,
45  const double *beta, double *C, const int *ldc);
46  void sgemm_ (const char *transa, const char *transb,
47  const int *m, const int *n, const int *k,
48  const float *alpha, const float *A, const int *lda,
49  const float *B, const int *ldb,
50  const float *beta, float *C, const int *ldc);
51 // Compute LU factorization
52  void dgetrf_ (const int *m, const int *n, double *A,
53  const int *lda, int *ipiv, int *info);
54  void sgetrf_ (const int *m, const int *n, float *A,
55  const int *lda, int *ipiv, int *info);
56 // Apply forward/backward substitution to LU factorization
57  void dgetrs_ (const char *trans, const int *n, const int *nrhs,
58  const double *A, const int *lda, const int *ipiv,
59  double *b, const int *ldb, int *info);
60  void sgetrs_ (const char *trans, const int *n, const int *nrhs,
61  const float *A, const int *lda, const int *ipiv,
62  float *b, const int *ldb, int *info);
63 // Invert matrix from LU factorization
64  void dgetri_ (const int *n, double *A, const int *lda,
65  int *ipiv, double *inv_work, const int *lwork, int *info);
66  void sgetri_ (const int *n, float *A, const int *lda,
67  int *ipiv, float *inv_work, const int *lwork, int *info);
68 // Compute QR factorization (Householder)
69  void dgeqrf_ (const int *m, const int *n, double *A,
70  const int *lda, double *tau, double *work,
71  const int *lwork, int *info);
72  void sgeqrf_ (const int *m, const int *n, float *A,
73  const int *lda, float *tau, float *work,
74  const int *lwork, int *info);
75 // Compute vector Q^T B, where Q is the result from dgeqrf_
76  void dormqr_ (const char *side, const char *trans, const int *m,
77  const int *n, const int *k, const double *A, const int *lda,
78  const double *tau, double *B, const int *ldb,
79  double *work, const int *lwork, int *info);
80  void sormqr_ (const char *side, const char *trans, const int *m,
81  const int *n, const int *k, const float *A, const int *lda,
82  const float *tau, float *B, const int *ldb,
83  float *work, const int *lwork, int *info);
84 // Compute matrix Q from the result of dgeqrf_
85  void dorgqr_ (const int *m, const int *n, const int *k, const double *A,
86  const int *lda, const double *tau, double *work, const int *lwork,
87  int *info);
88  void sorgqr_ (const int *m, const int *n, const int *k, const float *A,
89  const int *lda, const float *tau, float *work, const int *lwork,
90  int *info);
91 // Compute Rx = b
92  void dtrtrs_ (const char *uplo, const char *trans,
93  const char *diag, const int *n, const int *n_rhs,
94  const double *A, const int *lda, double *B, const int *ldb,
95  int *info);
96  void strtrs_ (const char *uplo, const char *trans,
97  const char *diag, const int *n, const int *n_rhs,
98  const float *A, const int *lda, float *B, const int *ldb,
99  int *info);
100 // Compute eigenvalues and vectors
101  void dgeev_ (const char *jobvl, const char *jobvr,
102  const int *n, double *A, const int *lda,
103  double *lambda_re, double *lambda_im,
104  double *vl, const int *ldvl,
105  double *vr, const int *ldva,
106  double *work, const int *lwork,
107  int *info);
108  void sgeev_ (const char *jobvl, const char *jobvr,
109  const int *n, float *A, const int *lda,
110  float *lambda_re, float *lambda_im,
111  float *vl, const int *ldvl,
112  float *vr, const int *ldva,
113  float *work, const int *lwork,
114  int *info);
115 // Compute eigenvalues and vectors (expert)
116  void dgeevx_ (const char *balanc, const char *jobvl, const char *jobvr,
117  const char *sense,
118  const int *n, double *A, const int *lda,
119  double *lambda_re, double *lambda_im,
120  double *vl, const int *ldvl,
121  double *vr, const int *ldvr,
122  int *ilo, int *ihi,
123  double *scale, double *abnrm,
124  double *rconde, double *rcondv,
125  double *work, const int *lwork,
126  int *iwork, int *info);
127  void sgeevx_ (const char *balanc, const char *jobvl, const char *jobvr,
128  const char *sense,
129  const int *n, float *A, const int *lda,
130  float *lambda_re, float *lambda_im,
131  float *vl, const int *ldvl,
132  float *vr, const int *ldvr,
133  int *ilo, int *ihi,
134  float *scale, float *abnrm,
135  float *rconde, float *rcondv,
136  float *work, const int *lwork,
137  int *iwork, int *info);
138 // Eigenvalues for a symmetric matrix
139  void dsyev_ (const char *jobz, const char *uplo, const int *n,
140  double *A, const int *lda, double *w,
141  double *work, const int *lwork, int *info);
142  void ssyev_ (const char *jobz, const char *uplo, const int *n,
143  float *A, const int *lda, float *w,
144  float *work, const int *lwork, int *info);
145 // Same functionality as dsyev_ but with more options: E.g.
146 // Compute only eigenvalues in a specific interval,
147 // Compute only eigenvalues with a specific index,
148 // Set tolerance for eigenvalue computation
149  void dsyevx_ (const char *jobz, const char *range,
150  const char *uplo, const int *n, double *A, const int *lda,
151  const double *vl, const double *vu,
152  const int *il, const int *iu, const double *abstol,
153  int *m, double *w, double *z,
154  const int *ldz, double *work, const int *lwork, int *iwork,
155  int *ifail, int *info);
156  void ssyevx_ (const char *jobz, const char *range,
157  const char *uplo, const int *n, float *A, const int *lda,
158  const float *vl, const float *vu,
159  const int *il, const int *iu, const float *abstol,
160  int *m, float *w, float *z,
161  const int *ldz, float *work, const int *lwork, int *iwork,
162  int *ifail, int *info);
163 // Generalized eigenvalues and eigenvectors of
164 // 1: A*x = lambda*B*x; 2: A*B*x = lambda*x; 3: B*A*x = lambda*x
165 // A and B are symmetric and B is definite
166  void dsygv_ (const int *itype, const char *jobz, const char *uplo,
167  const int *n, double *A, const int *lda, double *B,
168  const int *ldb, double *w, double *work,
169  const int *lwork, int *info);
170  void ssygv_ (const int *itype, const char *jobz, const char *uplo,
171  const int *n, float *A, const int *lda, float *B,
172  const int *ldb, float *w, float *work,
173  const int *lwork, int *info);
174 // Same functionality as dsygv_ but with more options: E.g.
175 // Compute only eigenvalues in a specific interval,
176 // Compute only eigenvalues with a specific index,
177 // Set tolerance for eigenvalue computation
178  void dsygvx_ (const int *itype, const char *jobz, const char *range,
179  const char *uplo, const int *n, double *A, const int *lda,
180  double *B, const int *ldb, const double *vl, const double *vu,
181  const int *il, const int *iu, const double *abstol,
182  int *m, double *w, double *z,
183  const int *ldz, double *work, const int *lwork, int *iwork,
184  int *ifail, int *info);
185  void ssygvx_ (const int *itype, const char *jobz, const char *range,
186  const char *uplo, const int *n, float *A, const int *lda,
187  float *B, const int *ldb, const float *vl, const float *vu,
188  const int *il, const int *iu, const float *abstol,
189  int *m, float *w, float *z,
190  const int *ldz, float *work, const int *lwork, int *iwork,
191  int *ifail, int *info);
192 // Compute singular value decomposition using divide and conquer
193  void dgesdd_ (const char *jobz,
194  const int *m, const int *n, double *A, const int *lda,
195  double *s,
196  double *u, const int *ldu,
197  double *vt, const int *ldvt,
198  double *work, const int *lwork,
199  int *iwork,
200  int *info);
201  void sgesdd_ (const char *jobz,
202  const int *m, const int *n, float *A, const int *lda,
203  float *s,
204  float *u, const int *ldu,
205  float *vt, const int *ldvt,
206  float *work, const int *lwork,
207  int *iwork,
208  int *info);
209 // Compute singular value decomposition
210  void dgesvd_ (int *jobu, int *jobvt,
211  const int *n, const int *m, double *A, const int *lda,
212  double *s,
213  double *u, const int *ldu,
214  double *vt, const int *ldvt,
215  double *work, const int *lwork,
216  int *info);
217  void sgesvd_ (int *jobu, int *jobvt,
218  const int *n, const int *m, float *A, const int *lda,
219  float *s,
220  float *u, const int *ldu,
221  float *vt, const int *ldvt,
222  float *work, const int *lwork,
223  int *info);
224 // Solve a least squares problem using SVD
225  void dgelsd_ (const int *m, const int *n, const int *nrhs,
226  const double *A, const int *lda,
227  double *B, const int *ldb,
228  double *s, const double *rcond,
229  int *rank,
230  double *work, const int *lwork, int *iwork,
231  int *info);
232  void sgelsd_ (const int *m, const int *n, const int *nrhs,
233  const float *A, const int *lda,
234  float *B, const int *ldb,
235  float *s, const float *rcond,
236  int *rank,
237  float *work, const int *lwork, int *iwork,
238  int *info);
239 // Symmetric tridiagonal matrix
240  void dstev_ (const char *jobz, const int *n,
241  double *d, double *e, double *z,
242  const int *ldz, double *work,
243  int *info);
244  void sstev_ (const char *jobz, const int *n,
245  float *d, float *e, float *z,
246  const int *ldz, float *work,
247  int *info);
248 
249 }
250 
251 DEAL_II_NAMESPACE_OPEN
252 
253 
255 template<typename number1, typename number2, typename number3>
256 inline void
257 axpy (const int *, const number1 *, const number2 *, const int *, number3 *, const int *)
258 {
259  Assert (false, ExcNotImplemented());
260 }
261 
262 #ifdef DEAL_II_WITH_LAPACK
263 inline void
264 axpy (const int *n, const double *alpha, const double *x, const int *incx, double *y, const int *incy)
265 {
266  daxpy_ (n,alpha,x,incx,y,incy);
267 }
268 #else
269 inline void
270 axpy (const int *, const double *, const double *, const int *, double *, const int *)
271 {
272  Assert (false, LAPACKSupport::ExcMissing("daxpy"));
273 }
274 #endif
275 
276 
277 #ifdef DEAL_II_WITH_LAPACK
278 inline void
279 axpy (const int *n, const float *alpha, const float *x, const int *incx, float *y, const int *incy)
280 {
281  saxpy_ (n,alpha,x,incx,y,incy);
282 }
283 #else
284 inline void
285 axpy (const int *, const float *, const float *, const int *, float *, const int *)
286 {
287  Assert (false, LAPACKSupport::ExcMissing("saxpy"));
288 }
289 #endif
290 
291 
293 template<typename number1, typename number2, typename number3, typename number4, typename number5>
294 inline void
295 gemv (const char *, const int *, const int *, const number1 *, const number2 *, const int *, const number3 *, const int *, const number4 *, number5 *, const int *)
296 {
297  Assert (false, ExcNotImplemented());
298 }
299 
300 #ifdef DEAL_II_WITH_LAPACK
301 inline void
302 gemv (const char *trans, const int *m, const int *n, const double *alpha, const double *A, const int *lda, const double *x, const int *incx, const double *b, double *y, const int *incy)
303 {
304  dgemv_ (trans,m,n,alpha,A,lda,x,incx,b,y,incy);
305 }
306 #else
307 inline void
308 gemv (const char *, const int *, const int *, const double *, const double *, const int *, const double *, const int *, const double *, double *, const int *)
309 {
310  Assert (false, LAPACKSupport::ExcMissing("dgemv"));
311 }
312 #endif
313 
314 
315 #ifdef DEAL_II_WITH_LAPACK
316 inline void
317 gemv (const char *trans, const int *m, const int *n, const float *alpha, const float *A, const int *lda, const float *x, const int *incx, const float *b, float *y, const int *incy)
318 {
319  sgemv_ (trans,m,n,alpha,A,lda,x,incx,b,y,incy);
320 }
321 #else
322 inline void
323 gemv (const char *, const int *, const int *, const float *, const float *, const int *, const float *, const int *, const float *, float *, const int *)
324 {
325  Assert (false, LAPACKSupport::ExcMissing("sgemv"));
326 }
327 #endif
328 
329 
331 template<typename number1, typename number2, typename number3, typename number4, typename number5>
332 inline void
333 gemm (const char *, const char *, const int *, const int *, const int *, const number1 *, const number2 *, const int *, const number3 *, const int *, const number4 *, number5 *, const int *)
334 {
335  Assert (false, ExcNotImplemented());
336 }
337 
338 #ifdef DEAL_II_WITH_LAPACK
339 inline void
340 gemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const double *alpha, const double *A, const int *lda, const double *B, const int *ldb, const double *beta, double *C, const int *ldc)
341 {
342  dgemm_ (transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc);
343 }
344 #else
345 inline void
346 gemm (const char *, const char *, const int *, const int *, const int *, const double *, const double *, const int *, const double *, const int *, const double *, double *, const int *)
347 {
348  Assert (false, LAPACKSupport::ExcMissing("dgemm"));
349 }
350 #endif
351 
352 
353 #ifdef DEAL_II_WITH_LAPACK
354 inline void
355 gemm (const char *transa, const char *transb, const int *m, const int *n, const int *k, const float *alpha, const float *A, const int *lda, const float *B, const int *ldb, const float *beta, float *C, const int *ldc)
356 {
357  sgemm_ (transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc);
358 }
359 #else
360 inline void
361 gemm (const char *, const char *, const int *, const int *, const int *, const float *, const float *, const int *, const float *, const int *, const float *, float *, const int *)
362 {
363  Assert (false, LAPACKSupport::ExcMissing("sgemm"));
364 }
365 #endif
366 
367 
369 template<typename number1>
370 inline void
371 getrf (const int *, const int *, number1 *, const int *, int *, int *)
372 {
373  Assert (false, ExcNotImplemented());
374 }
375 
376 #ifdef DEAL_II_WITH_LAPACK
377 inline void
378 getrf (const int *m, const int *n, double *A, const int *lda, int *ipiv, int *info)
379 {
380  dgetrf_ (m,n,A,lda,ipiv,info);
381 }
382 #else
383 inline void
384 getrf (const int *, const int *, double *, const int *, int *, int *)
385 {
386  Assert (false, LAPACKSupport::ExcMissing("dgetrf"));
387 }
388 #endif
389 
390 
391 #ifdef DEAL_II_WITH_LAPACK
392 inline void
393 getrf (const int *m, const int *n, float *A, const int *lda, int *ipiv, int *info)
394 {
395  sgetrf_ (m,n,A,lda,ipiv,info);
396 }
397 #else
398 inline void
399 getrf (const int *, const int *, float *, const int *, int *, int *)
400 {
401  Assert (false, LAPACKSupport::ExcMissing("sgetrf"));
402 }
403 #endif
404 
405 
407 template<typename number1, typename number2>
408 inline void
409 getrs (const char *, const int *, const int *, const number1 *, const int *, const int *, number2 *, const int *, int *)
410 {
411  Assert (false, ExcNotImplemented());
412 }
413 
414 #ifdef DEAL_II_WITH_LAPACK
415 inline void
416 getrs (const char *trans, const int *n, const int *nrhs, const double *A, const int *lda, const int *ipiv, double *b, const int *ldb, int *info)
417 {
418  dgetrs_ (trans,n,nrhs,A,lda,ipiv,b,ldb,info);
419 }
420 #else
421 inline void
422 getrs (const char *, const int *, const int *, const double *, const int *, const int *, double *, const int *, int *)
423 {
424  Assert (false, LAPACKSupport::ExcMissing("dgetrs"));
425 }
426 #endif
427 
428 
429 #ifdef DEAL_II_WITH_LAPACK
430 inline void
431 getrs (const char *trans, const int *n, const int *nrhs, const float *A, const int *lda, const int *ipiv, float *b, const int *ldb, int *info)
432 {
433  sgetrs_ (trans,n,nrhs,A,lda,ipiv,b,ldb,info);
434 }
435 #else
436 inline void
437 getrs (const char *, const int *, const int *, const float *, const int *, const int *, float *, const int *, int *)
438 {
439  Assert (false, LAPACKSupport::ExcMissing("sgetrs"));
440 }
441 #endif
442 
443 
445 template<typename number1, typename number2>
446 inline void
447 getri (const int *, number1 *, const int *, int *, number2 *, const int *, int *)
448 {
449  Assert (false, ExcNotImplemented());
450 }
451 
452 #ifdef DEAL_II_WITH_LAPACK
453 inline void
454 getri (const int *n, double *A, const int *lda, int *ipiv, double *inv_work, const int *lwork, int *info)
455 {
456  dgetri_ (n,A,lda,ipiv,inv_work,lwork,info);
457 }
458 #else
459 inline void
460 getri (const int *, double *, const int *, int *, double *, const int *, int *)
461 {
462  Assert (false, LAPACKSupport::ExcMissing("dgetri"));
463 }
464 #endif
465 
466 
467 #ifdef DEAL_II_WITH_LAPACK
468 inline void
469 getri (const int *n, float *A, const int *lda, int *ipiv, float *inv_work, const int *lwork, int *info)
470 {
471  sgetri_ (n,A,lda,ipiv,inv_work,lwork,info);
472 }
473 #else
474 inline void
475 getri (const int *, float *, const int *, int *, float *, const int *, int *)
476 {
477  Assert (false, LAPACKSupport::ExcMissing("sgetri"));
478 }
479 #endif
480 
481 
483 template<typename number1, typename number2, typename number3>
484 inline void
485 geqrf (const int *, const int *, number1 *, const int *, number2 *, number3 *, const int *, int *)
486 {
487  Assert (false, ExcNotImplemented());
488 }
489 
490 #ifdef DEAL_II_WITH_LAPACK
491 inline void
492 geqrf (const int *m, const int *n, double *A, const int *lda, double *tau, double *work, const int *lwork, int *info)
493 {
494  dgeqrf_ (m,n,A,lda,tau,work,lwork,info);
495 }
496 #else
497 inline void
498 geqrf (const int *, const int *, double *, const int *, double *, double *, const int *, int *)
499 {
500  Assert (false, LAPACKSupport::ExcMissing("dgeqrf"));
501 }
502 #endif
503 
504 
505 #ifdef DEAL_II_WITH_LAPACK
506 inline void
507 geqrf (const int *m, const int *n, float *A, const int *lda, float *tau, float *work, const int *lwork, int *info)
508 {
509  sgeqrf_ (m,n,A,lda,tau,work,lwork,info);
510 }
511 #else
512 inline void
513 geqrf (const int *, const int *, float *, const int *, float *, float *, const int *, int *)
514 {
515  Assert (false, LAPACKSupport::ExcMissing("sgeqrf"));
516 }
517 #endif
518 
519 
521 template<typename number1, typename number2, typename number3, typename number4>
522 inline void
523 ormqr (const char *, const char *, const int *, const int *, const int *, const number1 *, const int *, const number2 *, number3 *, const int *, number4 *, const int *, int *)
524 {
525  Assert (false, ExcNotImplemented());
526 }
527 
528 #ifdef DEAL_II_WITH_LAPACK
529 inline void
530 ormqr (const char *side, const char *trans, const int *m, const int *n, const int *k, const double *A, const int *lda, const double *tau, double *B, const int *ldb, double *work, const int *lwork, int *info)
531 {
532  dormqr_ (side,trans,m,n,k,A,lda,tau,B,ldb,work,lwork,info);
533 }
534 #else
535 inline void
536 ormqr (const char *, const char *, const int *, const int *, const int *, const double *, const int *, const double *, double *, const int *, double *, const int *, int *)
537 {
538  Assert (false, LAPACKSupport::ExcMissing("dormqr"));
539 }
540 #endif
541 
542 
543 #ifdef DEAL_II_WITH_LAPACK
544 inline void
545 ormqr (const char *side, const char *trans, const int *m, const int *n, const int *k, const float *A, const int *lda, const float *tau, float *B, const int *ldb, float *work, const int *lwork, int *info)
546 {
547  sormqr_ (side,trans,m,n,k,A,lda,tau,B,ldb,work,lwork,info);
548 }
549 #else
550 inline void
551 ormqr (const char *, const char *, const int *, const int *, const int *, const float *, const int *, const float *, float *, const int *, float *, const int *, int *)
552 {
553  Assert (false, LAPACKSupport::ExcMissing("sormqr"));
554 }
555 #endif
556 
557 
559 template<typename number1, typename number2, typename number3>
560 inline void
561 orgqr (const int *, const int *, const int *, const number1 *, const int *, const number2 *, number3 *, const int *, int *)
562 {
563  Assert (false, ExcNotImplemented());
564 }
565 
566 #ifdef DEAL_II_WITH_LAPACK
567 inline void
568 orgqr (const int *m, const int *n, const int *k, const double *A, const int *lda, const double *tau, double *work, const int *lwork, int *info)
569 {
570  dorgqr_ (m,n,k,A,lda,tau,work,lwork,info);
571 }
572 #else
573 inline void
574 orgqr (const int *, const int *, const int *, const double *, const int *, const double *, double *, const int *, int *)
575 {
576  Assert (false, LAPACKSupport::ExcMissing("dorgqr"));
577 }
578 #endif
579 
580 
581 #ifdef DEAL_II_WITH_LAPACK
582 inline void
583 orgqr (const int *m, const int *n, const int *k, const float *A, const int *lda, const float *tau, float *work, const int *lwork, int *info)
584 {
585  sorgqr_ (m,n,k,A,lda,tau,work,lwork,info);
586 }
587 #else
588 inline void
589 orgqr (const int *, const int *, const int *, const float *, const int *, const float *, float *, const int *, int *)
590 {
591  Assert (false, LAPACKSupport::ExcMissing("sorgqr"));
592 }
593 #endif
594 
595 
597 template<typename number1, typename number2>
598 inline void
599 trtrs (const char *, const char *, const char *, const int *, const int *, const number1 *, const int *, number2 *, const int *, int *)
600 {
601  Assert (false, ExcNotImplemented());
602 }
603 
604 #ifdef DEAL_II_WITH_LAPACK
605 inline void
606 trtrs (const char *uplo, const char *trans, const char *diag, const int *n, const int *n_rhs, const double *A, const int *lda, double *B, const int *ldb, int *info)
607 {
608  dtrtrs_ (uplo,trans,diag,n,n_rhs,A,lda,B,ldb,info);
609 }
610 #else
611 inline void
612 trtrs (const char *, const char *, const char *, const int *, const int *, const double *, const int *, double *, const int *, int *)
613 {
614  Assert (false, LAPACKSupport::ExcMissing("dtrtrs"));
615 }
616 #endif
617 
618 
619 #ifdef DEAL_II_WITH_LAPACK
620 inline void
621 trtrs (const char *uplo, const char *trans, const char *diag, const int *n, const int *n_rhs, const float *A, const int *lda, float *B, const int *ldb, int *info)
622 {
623  strtrs_ (uplo,trans,diag,n,n_rhs,A,lda,B,ldb,info);
624 }
625 #else
626 inline void
627 trtrs (const char *, const char *, const char *, const int *, const int *, const float *, const int *, float *, const int *, int *)
628 {
629  Assert (false, LAPACKSupport::ExcMissing("strtrs"));
630 }
631 #endif
632 
633 
635 template<typename number1, typename number2, typename number3, typename number4, typename number5, typename number6>
636 inline void
637 geev (const char *, const char *, const int *, number1 *, const int *, number2 *, number3 *, number4 *, const int *, number5 *, const int *, number6 *, const int *, int *)
638 {
639  Assert (false, ExcNotImplemented());
640 }
641 
642 #ifdef DEAL_II_WITH_LAPACK
643 inline void
644 geev (const char *jobvl, const char *jobvr, const int *n, double *A, const int *lda, double *lambda_re, double *lambda_im, double *vl, const int *ldvl, double *vr, const int *ldva, double *work, const int *lwork, int *info)
645 {
646  dgeev_ (jobvl,jobvr,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldva,work,lwork,info);
647 }
648 #else
649 inline void
650 geev (const char *, const char *, const int *, double *, const int *, double *, double *, double *, const int *, double *, const int *, double *, const int *, int *)
651 {
652  Assert (false, LAPACKSupport::ExcMissing("dgeev"));
653 }
654 #endif
655 
656 
657 #ifdef DEAL_II_WITH_LAPACK
658 inline void
659 geev (const char *jobvl, const char *jobvr, const int *n, float *A, const int *lda, float *lambda_re, float *lambda_im, float *vl, const int *ldvl, float *vr, const int *ldva, float *work, const int *lwork, int *info)
660 {
661  sgeev_ (jobvl,jobvr,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldva,work,lwork,info);
662 }
663 #else
664 inline void
665 geev (const char *, const char *, const int *, float *, const int *, float *, float *, float *, const int *, float *, const int *, float *, const int *, int *)
666 {
667  Assert (false, LAPACKSupport::ExcMissing("sgeev"));
668 }
669 #endif
670 
671 
673 template<typename number1, typename number2, typename number3, typename number4, typename number5, typename number6, typename number7, typename number8, typename number9, typename number10>
674 inline void
675 geevx (const char *, const char *, const char *, const char *, const int *, number1 *, const int *, number2 *, number3 *, number4 *, const int *, number5 *, const int *, int *, int *, number6 *, number7 *, number8 *, number9 *, number10 *, const int *, int *, int *)
676 {
677  Assert (false, ExcNotImplemented());
678 }
679 
680 #ifdef DEAL_II_WITH_LAPACK
681 inline void
682 geevx (const char *balanc, const char *jobvl, const char *jobvr, const char *sense, const int *n, double *A, const int *lda, double *lambda_re, double *lambda_im, double *vl, const int *ldvl, double *vr, const int *ldvr, int *ilo, int *ihi, double *scale, double *abnrm, double *rconde, double *rcondv, double *work, const int *lwork, int *iwork, int *info)
683 {
684  dgeevx_ (balanc,jobvl,jobvr,sense,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldvr,ilo,ihi,scale,abnrm,rconde,rcondv,work,lwork,iwork,info);
685 }
686 #else
687 inline void
688 geevx (const char *, const char *, const char *, const char *, const int *, double *, const int *, double *, double *, double *, const int *, double *, const int *, int *, int *, double *, double *, double *, double *, double *, const int *, int *, int *)
689 {
690  Assert (false, LAPACKSupport::ExcMissing("dgeevx"));
691 }
692 #endif
693 
694 
695 #ifdef DEAL_II_WITH_LAPACK
696 inline void
697 geevx (const char *balanc, const char *jobvl, const char *jobvr, const char *sense, const int *n, float *A, const int *lda, float *lambda_re, float *lambda_im, float *vl, const int *ldvl, float *vr, const int *ldvr, int *ilo, int *ihi, float *scale, float *abnrm, float *rconde, float *rcondv, float *work, const int *lwork, int *iwork, int *info)
698 {
699  sgeevx_ (balanc,jobvl,jobvr,sense,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldvr,ilo,ihi,scale,abnrm,rconde,rcondv,work,lwork,iwork,info);
700 }
701 #else
702 inline void
703 geevx (const char *, const char *, const char *, const char *, const int *, float *, const int *, float *, float *, float *, const int *, float *, const int *, int *, int *, float *, float *, float *, float *, float *, const int *, int *, int *)
704 {
705  Assert (false, LAPACKSupport::ExcMissing("sgeevx"));
706 }
707 #endif
708 
709 
711 template<typename number1, typename number2, typename number3>
712 inline void
713 syev (const char *, const char *, const int *, number1 *, const int *, number2 *, number3 *, const int *, int *)
714 {
715  Assert (false, ExcNotImplemented());
716 }
717 
718 #ifdef DEAL_II_WITH_LAPACK
719 inline void
720 syev (const char *jobz, const char *uplo, const int *n, double *A, const int *lda, double *w, double *work, const int *lwork, int *info)
721 {
722  dsyev_ (jobz,uplo,n,A,lda,w,work,lwork,info);
723 }
724 #else
725 inline void
726 syev (const char *, const char *, const int *, double *, const int *, double *, double *, const int *, int *)
727 {
728  Assert (false, LAPACKSupport::ExcMissing("dsyev"));
729 }
730 #endif
731 
732 
733 #ifdef DEAL_II_WITH_LAPACK
734 inline void
735 syev (const char *jobz, const char *uplo, const int *n, float *A, const int *lda, float *w, float *work, const int *lwork, int *info)
736 {
737  ssyev_ (jobz,uplo,n,A,lda,w,work,lwork,info);
738 }
739 #else
740 inline void
741 syev (const char *, const char *, const int *, float *, const int *, float *, float *, const int *, int *)
742 {
743  Assert (false, LAPACKSupport::ExcMissing("ssyev"));
744 }
745 #endif
746 
747 
749 template<typename number1, typename number2, typename number3, typename number4, typename number5, typename number6, typename number7>
750 inline void
751 syevx (const char *, const char *, const char *, const int *, number1 *, const int *, const number2 *, const number3 *, const int *, const int *, const number4 *, int *, number5 *, number6 *, const int *, number7 *, const int *, int *, int *, int *)
752 {
753  Assert (false, ExcNotImplemented());
754 }
755 
756 #ifdef DEAL_II_WITH_LAPACK
757 inline void
758 syevx (const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *lda, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, const int *lwork, int *iwork, int *ifail, int *info)
759 {
760  dsyevx_ (jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
761 }
762 #else
763 inline void
764 syevx (const char *, const char *, const char *, const int *, double *, const int *, const double *, const double *, const int *, const int *, const double *, int *, double *, double *, const int *, double *, const int *, int *, int *, int *)
765 {
766  Assert (false, LAPACKSupport::ExcMissing("dsyevx"));
767 }
768 #endif
769 
770 
771 #ifdef DEAL_II_WITH_LAPACK
772 inline void
773 syevx (const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *lda, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, float *work, const int *lwork, int *iwork, int *ifail, int *info)
774 {
775  ssyevx_ (jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
776 }
777 #else
778 inline void
779 syevx (const char *, const char *, const char *, const int *, float *, const int *, const float *, const float *, const int *, const int *, const float *, int *, float *, float *, const int *, float *, const int *, int *, int *, int *)
780 {
781  Assert (false, LAPACKSupport::ExcMissing("ssyevx"));
782 }
783 #endif
784 
785 
787 template<typename number1, typename number2, typename number3, typename number4>
788 inline void
789 sygv (const int *, const char *, const char *, const int *, number1 *, const int *, number2 *, const int *, number3 *, number4 *, const int *, int *)
790 {
791  Assert (false, ExcNotImplemented());
792 }
793 
794 #ifdef DEAL_II_WITH_LAPACK
795 inline void
796 sygv (const int *itype, const char *jobz, const char *uplo, const int *n, double *A, const int *lda, double *B, const int *ldb, double *w, double *work, const int *lwork, int *info)
797 {
798  dsygv_ (itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
799 }
800 #else
801 inline void
802 sygv (const int *, const char *, const char *, const int *, double *, const int *, double *, const int *, double *, double *, const int *, int *)
803 {
804  Assert (false, LAPACKSupport::ExcMissing("dsygv"));
805 }
806 #endif
807 
808 
809 #ifdef DEAL_II_WITH_LAPACK
810 inline void
811 sygv (const int *itype, const char *jobz, const char *uplo, const int *n, float *A, const int *lda, float *B, const int *ldb, float *w, float *work, const int *lwork, int *info)
812 {
813  ssygv_ (itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
814 }
815 #else
816 inline void
817 sygv (const int *, const char *, const char *, const int *, float *, const int *, float *, const int *, float *, float *, const int *, int *)
818 {
819  Assert (false, LAPACKSupport::ExcMissing("ssygv"));
820 }
821 #endif
822 
823 
825 template<typename number1, typename number2, typename number3, typename number4, typename number5, typename number6, typename number7, typename number8>
826 inline void
827 sygvx (const int *, const char *, const char *, const char *, const int *, number1 *, const int *, number2 *, const int *, const number3 *, const number4 *, const int *, const int *, const number5 *, int *, number6 *, number7 *, const int *, number8 *, const int *, int *, int *, int *)
828 {
829  Assert (false, ExcNotImplemented());
830 }
831 
832 #ifdef DEAL_II_WITH_LAPACK
833 inline void
834 sygvx (const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, double *A, const int *lda, double *B, const int *ldb, const double *vl, const double *vu, const int *il, const int *iu, const double *abstol, int *m, double *w, double *z, const int *ldz, double *work, const int *lwork, int *iwork, int *ifail, int *info)
835 {
836  dsygvx_ (itype,jobz,range,uplo,n,A,lda,B,ldb,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
837 }
838 #else
839 inline void
840 sygvx (const int *, const char *, const char *, const char *, const int *, double *, const int *, double *, const int *, const double *, const double *, const int *, const int *, const double *, int *, double *, double *, const int *, double *, const int *, int *, int *, int *)
841 {
842  Assert (false, LAPACKSupport::ExcMissing("dsygvx"));
843 }
844 #endif
845 
846 
847 #ifdef DEAL_II_WITH_LAPACK
848 inline void
849 sygvx (const int *itype, const char *jobz, const char *range, const char *uplo, const int *n, float *A, const int *lda, float *B, const int *ldb, const float *vl, const float *vu, const int *il, const int *iu, const float *abstol, int *m, float *w, float *z, const int *ldz, float *work, const int *lwork, int *iwork, int *ifail, int *info)
850 {
851  ssygvx_ (itype,jobz,range,uplo,n,A,lda,B,ldb,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
852 }
853 #else
854 inline void
855 sygvx (const int *, const char *, const char *, const char *, const int *, float *, const int *, float *, const int *, const float *, const float *, const int *, const int *, const float *, int *, float *, float *, const int *, float *, const int *, int *, int *, int *)
856 {
857  Assert (false, LAPACKSupport::ExcMissing("ssygvx"));
858 }
859 #endif
860 
861 
863 template<typename number1, typename number2, typename number3, typename number4, typename number5>
864 inline void
865 gesdd (const char *, const int *, const int *, number1 *, const int *, number2 *, number3 *, const int *, number4 *, const int *, number5 *, const int *, int *, int *)
866 {
867  Assert (false, ExcNotImplemented());
868 }
869 
870 #ifdef DEAL_II_WITH_LAPACK
871 inline void
872 gesdd (const char *jobz, const int *m, const int *n, double *A, const int *lda, double *s, double *u, const int *ldu, double *vt, const int *ldvt, double *work, const int *lwork, int *iwork, int *info)
873 {
874  dgesdd_ (jobz,m,n,A,lda,s,u,ldu,vt,ldvt,work,lwork,iwork,info);
875 }
876 #else
877 inline void
878 gesdd (const char *, const int *, const int *, double *, const int *, double *, double *, const int *, double *, const int *, double *, const int *, int *, int *)
879 {
880  Assert (false, LAPACKSupport::ExcMissing("dgesdd"));
881 }
882 #endif
883 
884 
885 #ifdef DEAL_II_WITH_LAPACK
886 inline void
887 gesdd (const char *jobz, const int *m, const int *n, float *A, const int *lda, float *s, float *u, const int *ldu, float *vt, const int *ldvt, float *work, const int *lwork, int *iwork, int *info)
888 {
889  sgesdd_ (jobz,m,n,A,lda,s,u,ldu,vt,ldvt,work,lwork,iwork,info);
890 }
891 #else
892 inline void
893 gesdd (const char *, const int *, const int *, float *, const int *, float *, float *, const int *, float *, const int *, float *, const int *, int *, int *)
894 {
895  Assert (false, LAPACKSupport::ExcMissing("sgesdd"));
896 }
897 #endif
898 
899 
901 template<typename number1, typename number2, typename number3, typename number4, typename number5>
902 inline void
903 gesvd (int *, int *, const int *, const int *, number1 *, const int *, number2 *, number3 *, const int *, number4 *, const int *, number5 *, const int *, int *)
904 {
905  Assert (false, ExcNotImplemented());
906 }
907 
908 #ifdef DEAL_II_WITH_LAPACK
909 inline void
910 gesvd (int *jobu, int *jobvt, const int *n, const int *m, double *A, const int *lda, double *s, double *u, const int *ldu, double *vt, const int *ldvt, double *work, const int *lwork, int *info)
911 {
912  dgesvd_ (jobu,jobvt,n,m,A,lda,s,u,ldu,vt,ldvt,work,lwork,info);
913 }
914 #else
915 inline void
916 gesvd (int *, int *, const int *, const int *, double *, const int *, double *, double *, const int *, double *, const int *, double *, const int *, int *)
917 {
918  Assert (false, LAPACKSupport::ExcMissing("dgesvd"));
919 }
920 #endif
921 
922 
923 #ifdef DEAL_II_WITH_LAPACK
924 inline void
925 gesvd (int *jobu, int *jobvt, const int *n, const int *m, float *A, const int *lda, float *s, float *u, const int *ldu, float *vt, const int *ldvt, float *work, const int *lwork, int *info)
926 {
927  sgesvd_ (jobu,jobvt,n,m,A,lda,s,u,ldu,vt,ldvt,work,lwork,info);
928 }
929 #else
930 inline void
931 gesvd (int *, int *, const int *, const int *, float *, const int *, float *, float *, const int *, float *, const int *, float *, const int *, int *)
932 {
933  Assert (false, LAPACKSupport::ExcMissing("sgesvd"));
934 }
935 #endif
936 
937 
939 template<typename number1, typename number2, typename number3, typename number4, typename number5>
940 inline void
941 gelsd (const int *, const int *, const int *, const number1 *, const int *, number2 *, const int *, number3 *, const number4 *, int *, number5 *, const int *, int *, int *)
942 {
943  Assert (false, ExcNotImplemented());
944 }
945 
946 #ifdef DEAL_II_WITH_LAPACK
947 inline void
948 gelsd (const int *m, const int *n, const int *nrhs, const double *A, const int *lda, double *B, const int *ldb, double *s, const double *rcond, int *rank, double *work, const int *lwork, int *iwork, int *info)
949 {
950  dgelsd_ (m,n,nrhs,A,lda,B,ldb,s,rcond,rank,work,lwork,iwork,info);
951 }
952 #else
953 inline void
954 gelsd (const int *, const int *, const int *, const double *, const int *, double *, const int *, double *, const double *, int *, double *, const int *, int *, int *)
955 {
956  Assert (false, LAPACKSupport::ExcMissing("dgelsd"));
957 }
958 #endif
959 
960 
961 #ifdef DEAL_II_WITH_LAPACK
962 inline void
963 gelsd (const int *m, const int *n, const int *nrhs, const float *A, const int *lda, float *B, const int *ldb, float *s, const float *rcond, int *rank, float *work, const int *lwork, int *iwork, int *info)
964 {
965  sgelsd_ (m,n,nrhs,A,lda,B,ldb,s,rcond,rank,work,lwork,iwork,info);
966 }
967 #else
968 inline void
969 gelsd (const int *, const int *, const int *, const float *, const int *, float *, const int *, float *, const float *, int *, float *, const int *, int *, int *)
970 {
971  Assert (false, LAPACKSupport::ExcMissing("sgelsd"));
972 }
973 #endif
974 
975 
977 template<typename number1, typename number2, typename number3, typename number4>
978 inline void
979 stev (const char *, const int *, number1 *, number2 *, number3 *, const int *, number4 *, int *)
980 {
981  Assert (false, ExcNotImplemented());
982 }
983 
984 #ifdef DEAL_II_WITH_LAPACK
985 inline void
986 stev (const char *jobz, const int *n, double *d, double *e, double *z, const int *ldz, double *work, int *info)
987 {
988  dstev_ (jobz,n,d,e,z,ldz,work,info);
989 }
990 #else
991 inline void
992 stev (const char *, const int *, double *, double *, double *, const int *, double *, int *)
993 {
994  Assert (false, LAPACKSupport::ExcMissing("dstev"));
995 }
996 #endif
997 
998 
999 #ifdef DEAL_II_WITH_LAPACK
1000 inline void
1001 stev (const char *jobz, const int *n, float *d, float *e, float *z, const int *ldz, float *work, int *info)
1002 {
1003  sstev_ (jobz,n,d,e,z,ldz,work,info);
1004 }
1005 #else
1006 inline void
1007 stev (const char *, const int *, float *, float *, float *, const int *, float *, int *)
1008 {
1009  Assert (false, LAPACKSupport::ExcMissing("sstev"));
1010 }
1011 #endif
1012 
1013 
1014 DEAL_II_NAMESPACE_CLOSE
1015 
1016 #endif
#define Assert(cond, exc)
Definition: exceptions.h:313
static ::ExceptionBase & ExcMissing(char *arg1)
static ::ExceptionBase & ExcNotImplemented()