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