17 #ifndef dealii_lapack_templates_h 18 #define dealii_lapack_templates_h 20 #include <deal.II/base/config.h> 21 #include <deal.II/lac/lapack_support.h> 23 #ifdef DEAL_II_HAVE_FP_EXCEPTIONS 30 void daxpy_ (const ::types::blas_int *n,
const double *alpha,
const double *x,
31 const ::types::blas_int *incx,
double *y, const ::types::blas_int *incy);
32 void saxpy_ (const ::types::blas_int *n,
const float *alpha,
const float *x,
33 const ::types::blas_int *incx,
float *y, const ::types::blas_int *incy);
36 void dgemv_ (
const char *trans, const ::types::blas_int *m, const ::types::blas_int *n,
37 const double *alpha,
const double *A, const ::types::blas_int *lda,
38 const double *x, const ::types::blas_int *incx,
39 const double *b,
double *y, const ::types::blas_int *incy);
40 void sgemv_ (
const char *trans, const ::types::blas_int *m, const ::types::blas_int *n,
41 const float *alpha,
const float *A, const ::types::blas_int *lda,
42 const float *x, const ::types::blas_int *incx,
43 const float *b,
float *y, const ::types::blas_int *incy);
44 void dtrmv_ (
const char *uplo,
const char *trans,
const char *diag,
45 const ::types::blas_int *N,
const double *A, const ::types::blas_int *lda,
46 double *x, const ::types::blas_int *incx);
47 void strmv_ (
const char *uplo,
const char *trans,
const char *diag,
48 const ::types::blas_int *N,
const float *A, const ::types::blas_int *lda,
49 float *x, const ::types::blas_int *incx);
51 void dgemm_ (
const char *transa,
const char *transb,
52 const ::types::blas_int *m, const ::types::blas_int *n, const ::types::blas_int *k,
53 const double *alpha,
const double *A, const ::types::blas_int *lda,
54 const double *B, const ::types::blas_int *ldb,
55 const double *beta,
double *C, const ::types::blas_int *ldc);
56 void sgemm_ (
const char *transa,
const char *transb,
57 const ::types::blas_int *m, const ::types::blas_int *n, const ::types::blas_int *k,
58 const float *alpha,
const float *A, const ::types::blas_int *lda,
59 const float *B, const ::types::blas_int *ldb,
60 const float *beta,
float *C, const ::types::blas_int *ldc);
62 void dsyrk_ (
const char *uplo,
const char *trans,
63 const ::types::blas_int *n, const ::types::blas_int *k,
64 const double *alpha,
const double *A, const ::types::blas_int *lda,
65 const double *beta,
double *C, const ::types::blas_int *ldc);
66 void ssyrk_ (
const char *uplo,
const char *trans,
67 const ::types::blas_int *n, const ::types::blas_int *k,
68 const float *alpha,
const float *A, const ::types::blas_int *lda,
69 const float *beta,
float *C, const ::types::blas_int *ldc);
71 void dgetrf_ (const ::types::blas_int *m, const ::types::blas_int *n,
double *A,
73 void sgetrf_ (const ::types::blas_int *m, const ::types::blas_int *n,
float *A,
76 void dgetrs_ (
const char *trans, const ::types::blas_int *n, const ::types::blas_int *nrhs,
77 const double *A, const ::types::blas_int *lda, const ::types::blas_int *ipiv,
79 void sgetrs_ (
const char *trans, const ::types::blas_int *n, const ::types::blas_int *nrhs,
80 const float *A, const ::types::blas_int *lda, const ::types::blas_int *ipiv,
83 void dgetri_ (const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
85 void sgetri_ (const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
88 void dpotrf_ (
const char *uplo, const ::types::blas_int *n,
double *A,
90 void spotrf_ (
const char *uplo, const ::types::blas_int *n,
float *A,
93 void dpotrs_ (
const char *uplo, const ::types::blas_int *n, const ::types::blas_int *nrhs,
94 const double *A, const ::types::blas_int *lda,
95 double *B, const ::types::blas_int *ldb,
97 void spotrs_ (
const char *uplo, const ::types::blas_int *n, const ::types::blas_int *nrhs,
98 const float *A, const ::types::blas_int *lda,
99 float *B, const ::types::blas_int *ldb,
102 void dpocon_ (
const char *uplo, const ::types::blas_int *n,
const double *A,
103 const ::types::blas_int *lda,
const double *anorm,
double *rcond,
105 void spocon_ (
const char *uplo, const ::types::blas_int *n,
const float *A,
106 const ::types::blas_int *lda,
const float *anorm,
float *rcond,
110 void dtrcon_ (
const char *norm,
const char *uplo,
const char *diag,
111 const ::types::blas_int *n,
const double *A, const ::types::blas_int *lda,
114 void strcon_ (
const char *norm,
const char *uplo,
const char *diag,
115 const ::types::blas_int *n,
const float *A, const ::types::blas_int *lda,
119 void dpotri_ (
const char *uplo, const ::types::blas_int *n,
double *A,
121 void spotri_ (
const char *uplo, const ::types::blas_int *n,
float *A,
124 double dlansy_ (
const char *norm,
const char *uplo, const ::types::blas_int *n,
const double *A,
125 const ::types::blas_int *lda,
double *work);
126 float slansy_ (
const char *norm,
const char *uplo, const ::types::blas_int *n,
const float *A,
127 const ::types::blas_int *lda,
float *work);
128 double dlange_ (
const char *norm, const ::types::blas_int *m, const ::types::blas_int *n,
const double *A,
129 const ::types::blas_int *lda,
double *work);
130 float slange_ (
const char *norm, const ::types::blas_int *m, const ::types::blas_int *n,
const float *A,
131 const ::types::blas_int *lda,
float *work);
134 void dgeqrf_ (const ::types::blas_int *m, const ::types::blas_int *n,
double *A,
135 const ::types::blas_int *lda,
double *tau,
double *work,
137 void sgeqrf_ (const ::types::blas_int *m, const ::types::blas_int *n,
float *A,
138 const ::types::blas_int *lda,
float *tau,
float *work,
141 void dormqr_ (
const char *side,
const char *trans, const ::types::blas_int *m,
142 const ::types::blas_int *n, const ::types::blas_int *k,
const double *A, const ::types::blas_int *lda,
143 const double *tau,
double *B, const ::types::blas_int *ldb,
144 double *work, const ::types::blas_int *lwork, ::
types::blas_int *info);
145 void sormqr_ (
const char *side,
const char *trans, const ::types::blas_int *m,
146 const ::types::blas_int *n, const ::types::blas_int *k,
const float *A, const ::types::blas_int *lda,
147 const float *tau,
float *B, const ::types::blas_int *ldb,
150 void dorgqr_ (const ::types::blas_int *m, const ::types::blas_int *n, const ::types::blas_int *k,
const double *A,
151 const ::types::blas_int *lda,
const double *tau,
double *work, const ::types::blas_int *lwork,
153 void sorgqr_ (const ::types::blas_int *m, const ::types::blas_int *n, const ::types::blas_int *k,
const float *A,
154 const ::types::blas_int *lda,
const float *tau,
float *work, const ::types::blas_int *lwork,
157 void dtrtrs_ (
const char *uplo,
const char *trans,
158 const char *diag, const ::types::blas_int *n, const ::types::blas_int *n_rhs,
159 const double *A, const ::types::blas_int *lda,
double *B, const ::types::blas_int *ldb,
161 void strtrs_ (
const char *uplo,
const char *trans,
162 const char *diag, const ::types::blas_int *n, const ::types::blas_int *n_rhs,
163 const float *A, const ::types::blas_int *lda,
float *B, const ::types::blas_int *ldb,
166 void dgeev_ (
const char *jobvl,
const char *jobvr,
167 const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
168 double *lambda_re,
double *lambda_im,
169 double *vl, const ::types::blas_int *ldvl,
170 double *vr, const ::types::blas_int *ldva,
171 double *work, const ::types::blas_int *lwork,
173 void sgeev_ (
const char *jobvl,
const char *jobvr,
174 const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
175 float *lambda_re,
float *lambda_im,
176 float *vl, const ::types::blas_int *ldvl,
177 float *vr, const ::types::blas_int *ldva,
178 float *work, const ::types::blas_int *lwork,
181 void dgeevx_ (
const char *balanc,
const char *jobvl,
const char *jobvr,
183 const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
184 double *lambda_re,
double *lambda_im,
185 double *vl, const ::types::blas_int *ldvl,
186 double *vr, const ::types::blas_int *ldvr,
188 double *scale,
double *abnrm,
189 double *rconde,
double *rcondv,
190 double *work, const ::types::blas_int *lwork,
192 void sgeevx_ (
const char *balanc,
const char *jobvl,
const char *jobvr,
194 const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
195 float *lambda_re,
float *lambda_im,
196 float *vl, const ::types::blas_int *ldvl,
197 float *vr, const ::types::blas_int *ldvr,
199 float *scale,
float *abnrm,
200 float *rconde,
float *rcondv,
201 float *work, const ::types::blas_int *lwork,
204 void dsyev_ (
const char *jobz,
const char *uplo, const ::types::blas_int *n,
205 double *A, const ::types::blas_int *lda,
double *w,
206 double *work, const ::types::blas_int *lwork, ::
types::blas_int *info);
207 void ssyev_ (
const char *jobz,
const char *uplo, const ::types::blas_int *n,
208 float *A, const ::types::blas_int *lda,
float *w,
214 void dsyevx_ (
const char *jobz,
const char *range,
215 const char *uplo, const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
216 const double *vl,
const double *vu,
217 const ::types::blas_int *il, const ::types::blas_int *iu,
const double *abstol,
219 const ::types::blas_int *ldz,
double *work, const ::types::blas_int *lwork, ::
types::blas_int *iwork,
221 void ssyevx_ (
const char *jobz,
const char *range,
222 const char *uplo, const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
223 const float *vl,
const float *vu,
224 const ::types::blas_int *il, const ::types::blas_int *iu,
const float *abstol,
226 const ::types::blas_int *ldz,
float *work, const ::types::blas_int *lwork, ::
types::blas_int *iwork,
231 void dsyevr_(
const char *jobz,
const char *range,
232 const char *uplo, const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
233 const double *vl,
const double *vu,
234 const ::types::blas_int *il, const ::types::blas_int *iu,
const double *abstol,
239 void ssyevr_(
const char *jobz,
const char *range,
240 const char *uplo, const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
241 const float *vl,
const float *vu,
242 const ::types::blas_int *il, const ::types::blas_int *iu,
const float *abstol,
250 void dsygv_ (const ::types::blas_int *itype,
const char *jobz,
const char *uplo,
251 const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
double *B,
252 const ::types::blas_int *ldb,
double *w,
double *work,
254 void ssygv_ (const ::types::blas_int *itype,
const char *jobz,
const char *uplo,
255 const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
float *B,
256 const ::types::blas_int *ldb,
float *w,
float *work,
262 void dsygvx_ (const ::types::blas_int *itype,
const char *jobz,
const char *range,
263 const char *uplo, const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
264 double *B, const ::types::blas_int *ldb,
const double *vl,
const double *vu,
265 const ::types::blas_int *il, const ::types::blas_int *iu,
const double *abstol,
267 const ::types::blas_int *ldz,
double *work, const ::types::blas_int *lwork, ::
types::blas_int *iwork,
269 void ssygvx_ (const ::types::blas_int *itype,
const char *jobz,
const char *range,
270 const char *uplo, const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
271 float *B, const ::types::blas_int *ldb,
const float *vl,
const float *vu,
272 const ::types::blas_int *il, const ::types::blas_int *iu,
const float *abstol,
274 const ::types::blas_int *ldz,
float *work, const ::types::blas_int *lwork, ::
types::blas_int *iwork,
277 void dgesdd_ (
const char *jobz,
278 const ::types::blas_int *m, const ::types::blas_int *n,
double *A, const ::types::blas_int *lda,
280 double *u, const ::types::blas_int *ldu,
281 double *vt, const ::types::blas_int *ldvt,
282 double *work, const ::types::blas_int *lwork,
285 void sgesdd_ (
const char *jobz,
286 const ::types::blas_int *m, const ::types::blas_int *n,
float *A, const ::types::blas_int *lda,
288 float *u, const ::types::blas_int *ldu,
289 float *vt, const ::types::blas_int *ldvt,
290 float *work, const ::types::blas_int *lwork,
295 const ::types::blas_int *n, const ::types::blas_int *m,
double *A, const ::types::blas_int *lda,
297 double *u, const ::types::blas_int *ldu,
298 double *vt, const ::types::blas_int *ldvt,
299 double *work, const ::types::blas_int *lwork,
302 const ::types::blas_int *n, const ::types::blas_int *m,
float *A, const ::types::blas_int *lda,
304 float *u, const ::types::blas_int *ldu,
305 float *vt, const ::types::blas_int *ldvt,
306 float *work, const ::types::blas_int *lwork,
309 void dgelsd_ (const ::types::blas_int *m, const ::types::blas_int *n, const ::types::blas_int *nrhs,
310 const double *A, const ::types::blas_int *lda,
311 double *B, const ::types::blas_int *ldb,
312 double *s,
const double *rcond,
314 double *work, const ::types::blas_int *lwork, ::
types::blas_int *iwork,
316 void sgelsd_ (const ::types::blas_int *m, const ::types::blas_int *n, const ::types::blas_int *nrhs,
317 const float *A, const ::types::blas_int *lda,
318 float *B, const ::types::blas_int *ldb,
319 float *s,
const float *rcond,
324 void dstev_ (
const char *jobz, const ::types::blas_int *n,
325 double *d,
double *e,
double *z,
326 const ::types::blas_int *ldz,
double *work,
328 void sstev_ (
const char *jobz, const ::types::blas_int *n,
329 float *d,
float *e,
float *z,
330 const ::types::blas_int *ldz,
float *work,
333 void dsyr_ (
const char *uplo, const ::types::blas_int *n,
334 const double *alpha,
const double *x,
335 const ::types::blas_int *incx,
336 double *A, const ::types::blas_int *lda);
337 void ssyr_ (
const char *uplo, const ::types::blas_int *n,
338 const float *alpha,
const float *x,
339 const ::types::blas_int *incx,
340 float *A, const ::types::blas_int *lda);
342 void dlascl_(
const char *type,
343 const ::types::blas_int *kl,
344 const ::types::blas_int *ku,
347 const ::types::blas_int *m,
348 const ::types::blas_int *n,
350 const ::types::blas_int *lda,
352 void slascl_(
const char *type,
353 const ::types::blas_int *kl,
354 const ::types::blas_int *ku,
357 const ::types::blas_int *m,
358 const ::types::blas_int *n,
360 const ::types::blas_int *lda,
363 double dlamch_(
const char *chmach);
364 float slamch_(
const char *chmach);
367 DEAL_II_NAMESPACE_OPEN
371 template <
typename number>
373 syrk(
const char *,
const char *,
381 #ifdef DEAL_II_WITH_LAPACK 383 syrk(
const char *uplo,
const char *trans,
388 dsyrk_(uplo,trans,n,k,alpha,A,lda,beta,C,ldc);
392 syrk(
const char *uplo,
const char *trans,
397 ssyrk_(uplo,trans,n,k,alpha,A,lda,beta,C,ldc);
404 template <
typename number>
407 const number *,
const number *,
414 #ifdef DEAL_II_WITH_LAPACK 417 const double *alpha,
const double *x,
421 dsyr_(uplo,n,alpha,x,incx,A,lda);
425 const float *alpha,
const float *x,
429 ssyr_(uplo,n,alpha,x,incx,A,lda);
436 template <
typename number1,
typename number2,
typename number3>
443 #ifdef DEAL_II_WITH_LAPACK 447 daxpy_ (n,alpha,x,incx,y,incy);
458 #ifdef DEAL_II_WITH_LAPACK 462 saxpy_ (n,alpha,x,incx,y,incy);
474 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5>
476 gemv (
const char *,
const types::blas_int *,
const types::blas_int *,
const number1 *,
const number2 *,
const types::blas_int *,
const number3 *,
const types::blas_int *,
const number4 *, number5 *,
const types::blas_int *)
481 #ifdef DEAL_II_WITH_LAPACK 483 gemv (
const char *trans,
const types::blas_int *m,
const types::blas_int *n,
const double *alpha,
const double *A,
const types::blas_int *lda,
const double *x,
const types::blas_int *incx,
const double *b,
double *y,
const types::blas_int *incy)
485 dgemv_ (trans,m,n,alpha,A,lda,x,incx,b,y,incy);
489 gemv (
const char *,
const types::blas_int *,
const types::blas_int *,
const double *,
const double *,
const types::blas_int *,
const double *,
const types::blas_int *,
const double *,
double *,
const types::blas_int *)
496 #ifdef DEAL_II_WITH_LAPACK 498 gemv (
const char *trans,
const types::blas_int *m,
const types::blas_int *n,
const float *alpha,
const float *A,
const types::blas_int *lda,
const float *x,
const types::blas_int *incx,
const float *b,
float *y,
const types::blas_int *incy)
500 sgemv_ (trans,m,n,alpha,A,lda,x,incx,b,y,incy);
504 gemv (
const char *,
const types::blas_int *,
const types::blas_int *,
const float *,
const float *,
const types::blas_int *,
const float *,
const types::blas_int *,
const float *,
float *,
const types::blas_int *)
513 template <
typename number>
515 trmv (
const char * ,
const char * ,
const char * ,
522 #ifdef DEAL_II_WITH_LAPACK 524 trmv (
const char *uplo,
const char *trans,
const char *diag,
528 dtrmv_ (uplo, trans, diag, N, A, lda, x, incx);
532 trmv (
const char * ,
const char * ,
const char * ,
542 #ifdef DEAL_II_WITH_LAPACK 544 trmv (
const char *uplo,
const char *trans,
const char *diag,
548 strmv_ (uplo, trans, diag, N, A, lda, x, incx);
552 trmv (
const char * ,
const char * ,
const char * ,
564 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5>
566 gemm (
const char *,
const char *,
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const number1 *,
const number2 *,
const types::blas_int *,
const number3 *,
const types::blas_int *,
const number4 *, number5 *,
const types::blas_int *)
571 #ifdef DEAL_II_WITH_LAPACK 573 gemm (
const char *transa,
const char *transb,
const types::blas_int *m,
const types::blas_int *n,
const types::blas_int *k,
const double *alpha,
const double *A,
const types::blas_int *lda,
const double *B,
const types::blas_int *ldb,
const double *beta,
double *C,
const types::blas_int *ldc)
575 dgemm_ (transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc);
579 gemm (
const char *,
const char *,
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const double *,
const double *,
const types::blas_int *,
const double *,
const types::blas_int *,
const double *,
double *,
const types::blas_int *)
586 #ifdef DEAL_II_WITH_LAPACK 588 gemm (
const char *transa,
const char *transb,
const types::blas_int *m,
const types::blas_int *n,
const types::blas_int *k,
const float *alpha,
const float *A,
const types::blas_int *lda,
const float *B,
const types::blas_int *ldb,
const float *beta,
float *C,
const types::blas_int *ldc)
590 sgemm_ (transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc);
594 gemm (
const char *,
const char *,
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const float *,
const float *,
const types::blas_int *,
const float *,
const types::blas_int *,
const float *,
float *,
const types::blas_int *)
603 template <
typename number1>
613 #ifdef DEAL_II_WITH_LAPACK 614 dpotrf_ (uplo,n,A,lda,info);
629 #ifdef DEAL_II_WITH_LAPACK 630 spotrf_ (uplo,n,A,lda,info);
645 template <
typename number>
647 trcon(
const char * ,
const char * ,
const char * ,
656 trcon (
const char *norm,
const char *uplo,
const char *diag,
661 #ifdef DEAL_II_WITH_LAPACK 662 dtrcon_ (norm, uplo, diag, n, A, lda, rcond, work, iwork, info);
680 trcon (
const char *norm,
const char *uplo,
const char *diag,
685 #ifdef DEAL_II_WITH_LAPACK 686 strcon_ (norm, uplo, diag, n, A, lda, rcond, work, iwork, info);
706 template <
typename number1>
716 #ifdef DEAL_II_WITH_LAPACK 717 dpocon_ (uplo,n,A,lda,anorm,rcond,work,iwork,info);
736 #ifdef DEAL_II_WITH_LAPACK 737 spocon_ (uplo,n,A,lda,anorm,rcond,work,iwork,info);
754 template <
typename number1>
764 #ifdef DEAL_II_WITH_LAPACK 765 dpotri_(uplo,n,A,lda,info);
780 #ifdef DEAL_II_WITH_LAPACK 781 spotri_(uplo,n,A,lda,info);
795 template <
typename number>
806 #ifdef DEAL_II_WITH_LAPACK 807 return dlansy_(norm,uplo,n,A,lda,work);
824 #ifdef DEAL_II_WITH_LAPACK 825 return slansy_(norm,uplo,n,A,lda,work);
842 template <
typename number>
853 #ifdef DEAL_II_WITH_LAPACK 854 return dlange_(norm,m,n,A,lda,work);
871 #ifdef DEAL_II_WITH_LAPACK 872 return slange_(norm,m,n,A,lda,work);
887 template <
typename number1>
894 #ifdef DEAL_II_WITH_LAPACK 898 dgetrf_ (m,n,A,lda,ipiv,info);
909 #ifdef DEAL_II_WITH_LAPACK 913 sgetrf_ (m,n,A,lda,ipiv,info);
925 template <
typename number1,
typename number2>
932 #ifdef DEAL_II_WITH_LAPACK 936 dgetrs_ (trans,n,nrhs,A,lda,ipiv,b,ldb,info);
947 #ifdef DEAL_II_WITH_LAPACK 951 sgetrs_ (trans,n,nrhs,A,lda,ipiv,b,ldb,info);
964 template <
typename number>
974 #ifdef DEAL_II_WITH_LAPACK 981 dpotrs_(uplo,n,nrhs,A,lda,B,ldb,info);
989 spotrs_(uplo,n,nrhs,A,lda,B,ldb,info);
1014 template <
typename number1,
typename number2>
1021 #ifdef DEAL_II_WITH_LAPACK 1025 dgetri_ (n,A,lda,ipiv,inv_work,lwork,info);
1036 #ifdef DEAL_II_WITH_LAPACK 1040 sgetri_ (n,A,lda,ipiv,inv_work,lwork,info);
1052 template <
typename number1,
typename number2,
typename number3>
1059 #ifdef DEAL_II_WITH_LAPACK 1063 dgeqrf_ (m,n,A,lda,tau,work,lwork,info);
1074 #ifdef DEAL_II_WITH_LAPACK 1078 sgeqrf_ (m,n,A,lda,tau,work,lwork,info);
1090 template <
typename number1,
typename number2,
typename number3,
typename number4>
1092 ormqr (
const char *,
const char *,
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const number1 *,
const types::blas_int *,
const number2 *, number3 *,
const types::blas_int *, number4 *,
const types::blas_int *,
types::blas_int *)
1097 #ifdef DEAL_II_WITH_LAPACK 1099 ormqr (
const char *side,
const char *trans,
const types::blas_int *m,
const types::blas_int *n,
const types::blas_int *k,
const double *A,
const types::blas_int *lda,
const double *tau,
double *B,
const types::blas_int *ldb,
double *work,
const types::blas_int *lwork,
types::blas_int *info)
1101 dormqr_ (side,trans,m,n,k,A,lda,tau,B,ldb,work,lwork,info);
1105 ormqr (
const char *,
const char *,
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const double *,
const types::blas_int *,
const double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *)
1112 #ifdef DEAL_II_WITH_LAPACK 1114 ormqr (
const char *side,
const char *trans,
const types::blas_int *m,
const types::blas_int *n,
const types::blas_int *k,
const float *A,
const types::blas_int *lda,
const float *tau,
float *B,
const types::blas_int *ldb,
float *work,
const types::blas_int *lwork,
types::blas_int *info)
1116 sormqr_ (side,trans,m,n,k,A,lda,tau,B,ldb,work,lwork,info);
1120 ormqr (
const char *,
const char *,
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const float *,
const types::blas_int *,
const float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *)
1128 template <
typename number1,
typename number2,
typename number3>
1135 #ifdef DEAL_II_WITH_LAPACK 1139 dorgqr_ (m,n,k,A,lda,tau,work,lwork,info);
1150 #ifdef DEAL_II_WITH_LAPACK 1154 sorgqr_ (m,n,k,A,lda,tau,work,lwork,info);
1166 template <
typename number1,
typename number2>
1173 #ifdef DEAL_II_WITH_LAPACK 1177 dtrtrs_ (uplo,trans,diag,n,n_rhs,A,lda,B,ldb,info);
1188 #ifdef DEAL_II_WITH_LAPACK 1192 strtrs_ (uplo,trans,diag,n,n_rhs,A,lda,B,ldb,info);
1204 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5,
typename number6>
1206 geev (
const char *,
const char *,
const types::blas_int *, number1 *,
const types::blas_int *, number2 *, number3 *, number4 *,
const types::blas_int *, number5 *,
const types::blas_int *, number6 *,
const types::blas_int *,
types::blas_int *)
1211 #ifdef DEAL_II_WITH_LAPACK 1213 geev (
const char *jobvl,
const char *jobvr,
const types::blas_int *n,
double *A,
const types::blas_int *lda,
double *lambda_re,
double *lambda_im,
double *vl,
const types::blas_int *ldvl,
double *vr,
const types::blas_int *ldva,
double *work,
const types::blas_int *lwork,
types::blas_int *info)
1215 dgeev_ (jobvl,jobvr,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldva,work,lwork,info);
1219 geev (
const char *,
const char *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *)
1226 #ifdef DEAL_II_WITH_LAPACK 1228 geev (
const char *jobvl,
const char *jobvr,
const types::blas_int *n,
float *A,
const types::blas_int *lda,
float *lambda_re,
float *lambda_im,
float *vl,
const types::blas_int *ldvl,
float *vr,
const types::blas_int *ldva,
float *work,
const types::blas_int *lwork,
types::blas_int *info)
1230 sgeev_ (jobvl,jobvr,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldva,work,lwork,info);
1234 geev (
const char *,
const char *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *)
1242 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5,
typename number6,
typename number7,
typename number8,
typename number9,
typename number10>
1244 geevx (
const char *,
const char *,
const char *,
const char *,
const types::blas_int *, number1 *,
const types::blas_int *, number2 *, number3 *, number4 *,
const types::blas_int *, number5 *,
const types::blas_int *,
types::blas_int *,
types::blas_int *, number6 *, number7 *, number8 *, number9 *, number10 *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1249 #ifdef DEAL_II_WITH_LAPACK 1251 geevx (
const char *balanc,
const char *jobvl,
const char *jobvr,
const char *sense,
const types::blas_int *n,
double *A,
const types::blas_int *lda,
double *lambda_re,
double *lambda_im,
double *vl,
const types::blas_int *ldvl,
double *vr,
const types::blas_int *ldvr,
types::blas_int *ilo,
types::blas_int *ihi,
double *scale,
double *abnrm,
double *rconde,
double *rcondv,
double *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *info)
1253 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);
1257 geevx (
const char *,
const char *,
const char *,
const char *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
double *,
double *,
double *,
double *,
double *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1264 #ifdef DEAL_II_WITH_LAPACK 1266 geevx (
const char *balanc,
const char *jobvl,
const char *jobvr,
const char *sense,
const types::blas_int *n,
float *A,
const types::blas_int *lda,
float *lambda_re,
float *lambda_im,
float *vl,
const types::blas_int *ldvl,
float *vr,
const types::blas_int *ldvr,
types::blas_int *ilo,
types::blas_int *ihi,
float *scale,
float *abnrm,
float *rconde,
float *rcondv,
float *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *info)
1268 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);
1272 geevx (
const char *,
const char *,
const char *,
const char *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
float *,
float *,
float *,
float *,
float *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1280 template <
typename number1,
typename number2,
typename number3>
1287 #ifdef DEAL_II_WITH_LAPACK 1291 dsyev_ (jobz,uplo,n,A,lda,w,work,lwork,info);
1302 #ifdef DEAL_II_WITH_LAPACK 1306 ssyev_ (jobz,uplo,n,A,lda,w,work,lwork,info);
1318 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5,
typename number6,
typename number7>
1320 syevx (
const char *,
const char *,
const char *,
const types::blas_int *, number1 *,
const types::blas_int *,
const number2 *,
const number3 *,
const types::blas_int *,
const types::blas_int *,
const number4 *,
types::blas_int *, number5 *, number6 *,
const types::blas_int *, number7 *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
types::blas_int *)
1325 #ifdef DEAL_II_WITH_LAPACK 1327 syevx (
const char *jobz,
const char *range,
const char *uplo,
const types::blas_int *n,
double *A,
const types::blas_int *lda,
const double *vl,
const double *vu,
const types::blas_int *il,
const types::blas_int *iu,
const double *abstol,
types::blas_int *m,
double *w,
double *z,
const types::blas_int *ldz,
double *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *ifail,
types::blas_int *info)
1329 dsyevx_ (jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
1333 syevx (
const char *,
const char *,
const char *,
const types::blas_int *,
double *,
const types::blas_int *,
const double *,
const double *,
const types::blas_int *,
const types::blas_int *,
const double *,
types::blas_int *,
double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
types::blas_int *)
1340 #ifdef DEAL_II_WITH_LAPACK 1342 syevx (
const char *jobz,
const char *range,
const char *uplo,
const types::blas_int *n,
float *A,
const types::blas_int *lda,
const float *vl,
const float *vu,
const types::blas_int *il,
const types::blas_int *iu,
const float *abstol,
types::blas_int *m,
float *w,
float *z,
const types::blas_int *ldz,
float *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *ifail,
types::blas_int *info)
1344 ssyevx_ (jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
1348 syevx (
const char *,
const char *,
const char *,
const types::blas_int *,
float *,
const types::blas_int *,
const float *,
const float *,
const types::blas_int *,
const types::blas_int *,
const float *,
types::blas_int *,
float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
types::blas_int *)
1356 template <
typename number>
1358 syevr(
const char * ,
1384 #ifdef DEAL_II_WITH_LAPACK 1386 syevr(
const char *jobz,
1396 const double *abstol,
1413 #ifdef DEAL_II_HAVE_FP_EXCEPTIONS 1414 fenv_t fp_exceptions;
1415 feholdexcept(&fp_exceptions);
1418 dsyevr_(jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,isuppz,work,lwork,iwork,liwork,info);
1420 #ifdef DEAL_II_HAVE_FP_EXCEPTIONS 1421 fesetenv(&fp_exceptions);
1426 syevr(
const char *jobz,
1436 const float *abstol,
1453 #ifdef DEAL_II_HAVE_FP_EXCEPTIONS 1454 fenv_t fp_exceptions;
1455 feholdexcept(&fp_exceptions);
1458 ssyevr_(jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,isuppz,work,lwork,iwork,liwork,info);
1460 #ifdef DEAL_II_HAVE_FP_EXCEPTIONS 1461 fesetenv(&fp_exceptions);
1468 template <
typename number1,
typename number2,
typename number3,
typename number4>
1470 sygv (
const types::blas_int *,
const char *,
const char *,
const types::blas_int *, number1 *,
const types::blas_int *, number2 *,
const types::blas_int *, number3 *, number4 *,
const types::blas_int *,
types::blas_int *)
1475 #ifdef DEAL_II_WITH_LAPACK 1477 sygv (
const types::blas_int *itype,
const char *jobz,
const char *uplo,
const types::blas_int *n,
double *A,
const types::blas_int *lda,
double *B,
const types::blas_int *ldb,
double *w,
double *work,
const types::blas_int *lwork,
types::blas_int *info)
1479 dsygv_ (itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
1483 sygv (
const types::blas_int *,
const char *,
const char *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
double *,
const types::blas_int *,
types::blas_int *)
1490 #ifdef DEAL_II_WITH_LAPACK 1492 sygv (
const types::blas_int *itype,
const char *jobz,
const char *uplo,
const types::blas_int *n,
float *A,
const types::blas_int *lda,
float *B,
const types::blas_int *ldb,
float *w,
float *work,
const types::blas_int *lwork,
types::blas_int *info)
1494 ssygv_ (itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info);
1498 sygv (
const types::blas_int *,
const char *,
const char *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
float *,
const types::blas_int *,
types::blas_int *)
1506 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5,
typename number6,
typename number7,
typename number8>
1508 sygvx (
const types::blas_int *,
const char *,
const char *,
const char *,
const types::blas_int *, number1 *,
const types::blas_int *, number2 *,
const types::blas_int *,
const number3 *,
const number4 *,
const types::blas_int *,
const types::blas_int *,
const number5 *,
types::blas_int *, number6 *, number7 *,
const types::blas_int *, number8 *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
types::blas_int *)
1513 #ifdef DEAL_II_WITH_LAPACK 1515 sygvx (
const types::blas_int *itype,
const char *jobz,
const char *range,
const char *uplo,
const types::blas_int *n,
double *A,
const types::blas_int *lda,
double *B,
const types::blas_int *ldb,
const double *vl,
const double *vu,
const types::blas_int *il,
const types::blas_int *iu,
const double *abstol,
types::blas_int *m,
double *w,
double *z,
const types::blas_int *ldz,
double *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *ifail,
types::blas_int *info)
1517 dsygvx_ (itype,jobz,range,uplo,n,A,lda,B,ldb,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
1521 sygvx (
const types::blas_int *,
const char *,
const char *,
const char *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
const double *,
const double *,
const types::blas_int *,
const types::blas_int *,
const double *,
types::blas_int *,
double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
types::blas_int *)
1528 #ifdef DEAL_II_WITH_LAPACK 1530 sygvx (
const types::blas_int *itype,
const char *jobz,
const char *range,
const char *uplo,
const types::blas_int *n,
float *A,
const types::blas_int *lda,
float *B,
const types::blas_int *ldb,
const float *vl,
const float *vu,
const types::blas_int *il,
const types::blas_int *iu,
const float *abstol,
types::blas_int *m,
float *w,
float *z,
const types::blas_int *ldz,
float *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *ifail,
types::blas_int *info)
1532 ssygvx_ (itype,jobz,range,uplo,n,A,lda,B,ldb,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info);
1536 sygvx (
const types::blas_int *,
const char *,
const char *,
const char *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
const float *,
const float *,
const types::blas_int *,
const types::blas_int *,
const float *,
types::blas_int *,
float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *,
types::blas_int *,
types::blas_int *)
1544 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5>
1546 gesdd (
const char *,
const types::blas_int *,
const types::blas_int *, number1 *,
const types::blas_int *, number2 *, number3 *,
const types::blas_int *, number4 *,
const types::blas_int *, number5 *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1551 #ifdef DEAL_II_WITH_LAPACK 1553 gesdd (
const char *jobz,
const types::blas_int *m,
const types::blas_int *n,
double *A,
const types::blas_int *lda,
double *s,
double *u,
const types::blas_int *ldu,
double *vt,
const types::blas_int *ldvt,
double *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *info)
1555 dgesdd_ (jobz,m,n,A,lda,s,u,ldu,vt,ldvt,work,lwork,iwork,info);
1559 gesdd (
const char *,
const types::blas_int *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1566 #ifdef DEAL_II_WITH_LAPACK 1568 gesdd (
const char *jobz,
const types::blas_int *m,
const types::blas_int *n,
float *A,
const types::blas_int *lda,
float *s,
float *u,
const types::blas_int *ldu,
float *vt,
const types::blas_int *ldvt,
float *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *info)
1570 sgesdd_ (jobz,m,n,A,lda,s,u,ldu,vt,ldvt,work,lwork,iwork,info);
1574 gesdd (
const char *,
const types::blas_int *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1582 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5>
1584 gesvd (
types::blas_int *,
types::blas_int *,
const types::blas_int *,
const types::blas_int *, number1 *,
const types::blas_int *, number2 *, number3 *,
const types::blas_int *, number4 *,
const types::blas_int *, number5 *,
const types::blas_int *,
types::blas_int *)
1589 #ifdef DEAL_II_WITH_LAPACK 1591 gesvd (
types::blas_int *jobu,
types::blas_int *jobvt,
const types::blas_int *n,
const types::blas_int *m,
double *A,
const types::blas_int *lda,
double *s,
double *u,
const types::blas_int *ldu,
double *vt,
const types::blas_int *ldvt,
double *work,
const types::blas_int *lwork,
types::blas_int *info)
1593 dgesvd_ (jobu,jobvt,n,m,A,lda,s,u,ldu,vt,ldvt,work,lwork,info);
1597 gesvd (
types::blas_int *,
types::blas_int *,
const types::blas_int *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *)
1604 #ifdef DEAL_II_WITH_LAPACK 1606 gesvd (
types::blas_int *jobu,
types::blas_int *jobvt,
const types::blas_int *n,
const types::blas_int *m,
float *A,
const types::blas_int *lda,
float *s,
float *u,
const types::blas_int *ldu,
float *vt,
const types::blas_int *ldvt,
float *work,
const types::blas_int *lwork,
types::blas_int *info)
1608 sgesvd_ (jobu,jobvt,n,m,A,lda,s,u,ldu,vt,ldvt,work,lwork,info);
1612 gesvd (
types::blas_int *,
types::blas_int *,
const types::blas_int *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *)
1620 template <
typename number1,
typename number2,
typename number3,
typename number4,
typename number5>
1622 gelsd (
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const number1 *,
const types::blas_int *, number2 *,
const types::blas_int *, number3 *,
const number4 *,
types::blas_int *, number5 *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1627 #ifdef DEAL_II_WITH_LAPACK 1629 gelsd (
const types::blas_int *m,
const types::blas_int *n,
const types::blas_int *nrhs,
const double *A,
const types::blas_int *lda,
double *B,
const types::blas_int *ldb,
double *s,
const double *rcond,
types::blas_int *rank,
double *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *info)
1631 dgelsd_ (m,n,nrhs,A,lda,B,ldb,s,rcond,rank,work,lwork,iwork,info);
1635 gelsd (
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const double *,
const types::blas_int *,
double *,
const types::blas_int *,
double *,
const double *,
types::blas_int *,
double *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1642 #ifdef DEAL_II_WITH_LAPACK 1644 gelsd (
const types::blas_int *m,
const types::blas_int *n,
const types::blas_int *nrhs,
const float *A,
const types::blas_int *lda,
float *B,
const types::blas_int *ldb,
float *s,
const float *rcond,
types::blas_int *rank,
float *work,
const types::blas_int *lwork,
types::blas_int *iwork,
types::blas_int *info)
1646 sgelsd_ (m,n,nrhs,A,lda,B,ldb,s,rcond,rank,work,lwork,iwork,info);
1650 gelsd (
const types::blas_int *,
const types::blas_int *,
const types::blas_int *,
const float *,
const types::blas_int *,
float *,
const types::blas_int *,
float *,
const float *,
types::blas_int *,
float *,
const types::blas_int *,
types::blas_int *,
types::blas_int *)
1658 template <
typename number1,
typename number2,
typename number3,
typename number4>
1665 #ifdef DEAL_II_WITH_LAPACK 1669 dstev_ (jobz,n,d,e,z,ldz,work,info);
1680 #ifdef DEAL_II_WITH_LAPACK 1684 sstev_ (jobz,n,d,e,z,ldz,work,info);
1696 template <
typename number>
1712 #ifdef DEAL_II_WITH_LAPACK 1714 lascl(
const char *type,
1717 const double *cfrom,
1725 dlascl_(type,kl,ku,cfrom,cto,m,n,A,lda,info);
1736 #ifdef DEAL_II_WITH_LAPACK 1738 lascl(
const char *type,
1749 slascl_(type,kl,ku,cfrom,cto,m,n,A,lda,info);
1762 template <
typename number>
1764 lamch(
const char * , number & )
1769 #ifdef DEAL_II_WITH_LAPACK 1771 lamch(
const char *chmach,
double &precision)
1773 precision = dlamch_(chmach);
1777 lamch(
const char *chmach,
float &precision)
1779 precision = slamch_(chmach);
1783 DEAL_II_NAMESPACE_CLOSE
#define Assert(cond, exc)
static ::ExceptionBase & ExcMissing(char *arg1)
static ::ExceptionBase & ExcNotImplemented()