From: maier Date: Sat, 6 Oct 2012 14:36:52 +0000 (+0000) Subject: Remove lapackt_templates.pl from the build system X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79439f98a02ab6a5444b816c1104d6b7c97aca43;p=dealii-svn.git Remove lapackt_templates.pl from the build system git-svn-id: https://svn.dealii.org/branches/branch_cmake@26978 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/contrib/lapack_templates/example_custom_target.cmake b/deal.II/contrib/lapack_templates/example_custom_target.cmake new file mode 100644 index 0000000000..fa77d9ed1b --- /dev/null +++ b/deal.II/contrib/lapack_templates/example_custom_target.cmake @@ -0,0 +1,12 @@ +ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/ + COMMAND perl + ARGS ${CMAKE_SOURCE_DIR}/scripts/lapack_templates.pl + ${CMAKE_CURRENT_SOURCE_DIR}/deal.II/lac/lapack_templates.h.in + > ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h + ) + +ADD_CUSTOM_TARGET(lapack_templates ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h + ) diff --git a/deal.II/scripts/lapack_templates.pl b/deal.II/contrib/lapack_templates/lapack_templates.pl similarity index 100% rename from deal.II/scripts/lapack_templates.pl rename to deal.II/contrib/lapack_templates/lapack_templates.pl diff --git a/deal.II/include/CMakeLists.txt b/deal.II/include/CMakeLists.txt index 83622e8900..a68acbfc08 100644 --- a/deal.II/include/CMakeLists.txt +++ b/deal.II/include/CMakeLists.txt @@ -21,22 +21,6 @@ CONFIGURE_FILE( ) -# -#TODO: This perl script has to die...: -# -ADD_CUSTOM_COMMAND( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/ - COMMAND perl - ARGS ${CMAKE_SOURCE_DIR}/scripts/lapack_templates.pl - ${CMAKE_CURRENT_SOURCE_DIR}/deal.II/lac/lapack_templates.h.in - > ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h - ) - -ADD_CUSTOM_TARGET(lapack_templates ALL - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/deal.II/lac/lapack_templates.h - ) - # # Add a rule on how to install the header files: # @@ -48,6 +32,7 @@ INSTALL(DIRECTORY deal.II PATTERN ".svn" EXCLUDE ) + # # and don't forget to install all generated header files, too: # @@ -57,3 +42,4 @@ INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/deal.II FILES_MATCHING PATTERN "*.h" PATTERN ".svn" EXCLUDE ) + diff --git a/deal.II/include/deal.II/lac/lapack_templates.h b/deal.II/include/deal.II/lac/lapack_templates.h new file mode 100644 index 0000000000..c93e30b257 --- /dev/null +++ b/deal.II/include/deal.II/lac/lapack_templates.h @@ -0,0 +1,1014 @@ +//--------------------------------------------------------------------------- +// +// This file was automatically generated from lapack_templates.h.in +// See blastemplates in the deal.II contrib directory +// +// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 by the deal authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//--------------------------------------------------------------------------- + +#ifndef __LAPACK_TEMPLATES_H +#define __LAPACK_TEMPLATES_H + +#include +#include + +extern "C" +{ +// vector update of the form y += alpha*x with a scalar, x,y vectors +void daxpy_ (const int* n, const double* alpha, const double* x, + const int* incx, double* y, const int* incy); +void saxpy_ (const int* n, const float* alpha, const float* x, + const int* incx, float* y, const int* incy); +// General Matrix +// Matrix vector product +void dgemv_ (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); +void sgemv_ (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); +// Matrix matrix product +void dgemm_ (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); +void sgemm_ (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); +// Compute LU factorization +void dgetrf_ (const int* m, const int* n, double* A, + const int* lda, int* ipiv, int* info); +void sgetrf_ (const int* m, const int* n, float* A, + const int* lda, int* ipiv, int* info); +// Apply forward/backward substitution to LU factorization +void dgetrs_ (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); +void sgetrs_ (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); +// Invert matrix from LU factorization +void dgetri_ (const int* n, double* A, const int* lda, + int* ipiv, double* inv_work, const int* lwork, int* info); +void sgetri_ (const int* n, float* A, const int* lda, + int* ipiv, float* inv_work, const int* lwork, int* info); +// Compute QR factorization (Householder) +void dgeqrf_ (const int* m, const int* n, double* A, + const int* lda, double* tau, double* work, + const int* lwork, int* info); +void sgeqrf_ (const int* m, const int* n, float* A, + const int* lda, float* tau, float* work, + const int* lwork, int* info); +// Compute vector Q^T B, where Q is the result from dgeqrf_ +void dormqr_ (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); +void sormqr_ (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); +// Compute matrix Q from the result of dgeqrf_ +void dorgqr_ (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); +void sorgqr_ (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); +// Compute Rx = b +void dtrtrs_ (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); +void strtrs_ (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); +// Compute eigenvalues and vectors +void dgeev_ (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); +void sgeev_ (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); +// Compute eigenvalues and vectors (expert) +void dgeevx_ (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); +void sgeevx_ (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); +// Eigenvalues for a symmetric matrix +void dsyev_ (const char *jobz, const char *uplo, const int *n, + double *A, const int *lda, double *w, + double *work, const int *lwork, int *info); +void ssyev_ (const char *jobz, const char *uplo, const int *n, + float *A, const int *lda, float *w, + float *work, const int *lwork, int *info); +// Same functionality as dsyev_ but with more options: E.g. +// Compute only eigenvalues in a specific interval, +// Compute only eigenvalues with a specific index, +// Set tolerance for eigenvalue computation +void dsyevx_ (const char* jobz, const char* range, + const char* uplo, const int* n, double* A, const int* lda, + const double* vl, const double* vu, + const int* il, const int* iu, const double* abstol, + int* m, double* w, double* z, + const int* ldz, double* work, const int* lwork, int* iwork, + int* ifail, int* info); +void ssyevx_ (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); +// Generalized eigenvalues and eigenvectors of +// 1: A*x = lambda*B*x; 2: A*B*x = lambda*x; 3: B*A*x = lambda*x +// A and B are symmetric and B is definite +void dsygv_ (const int* itype, const char* jobz, const char* uplo, + const int* n, double* A, const int* lda, double* B, + const int* ldb, double* w, double* work, + const int* lwork, int* info); +void ssygv_ (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); +// Same functionality as dsygv_ but with more options: E.g. +// Compute only eigenvalues in a specific interval, +// Compute only eigenvalues with a specific index, +// Set tolerance for eigenvalue computation +void dsygvx_ (const int* itype, const char* jobz, const char* range, + const char* uplo, const int* n, double* A, const int* lda, + double* B, const int* ldb, const double* vl, const double* vu, + const int* il, const int* iu, const double* abstol, + int* m, double* w, double* z, + const int* ldz, double* work, const int* lwork, int* iwork, + int* ifail, int* info); +void ssygvx_ (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); +// Compute singular value decomposition using divide and conquer +void dgesdd_ (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); +void sgesdd_ (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); +// Compute singular value decomposition +void dgesvd_ (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); +void sgesvd_ (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); +// Solve a least squares problem using SVD +void dgelsd_ (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); +void sgelsd_ (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); +// Symmetric tridiagonal matrix +void dstev_ (const char* jobz, const int* n, + double* d, double* e, double* z, + const int* ldz, double* work, + int* info); +void sstev_ (const char* jobz, const int* n, + float* d, float* e, float* z, + const int* ldz, float* work, + int* info); + +} + +DEAL_II_NAMESPACE_OPEN + + +/// Template wrapper for LAPACK functions daxpy and saxpy +template +inline void +axpy (const int*, const number1*, const number2*, const int*, number3*, const int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DAXPY_ +inline void +axpy (const int* n, const double* alpha, const double* x, const int* incx, double* y, const int* incy) +{ + daxpy_ (n,alpha,x,incx,y,incy); +} +#else +inline void +axpy (const int*, const double*, const double*, const int*, double*, const int*) +{ + Assert (false, LAPACKSupport::ExcMissing("daxpy")); +} +#endif + + +#ifdef HAVE_SAXPY_ +inline void +axpy (const int* n, const float* alpha, const float* x, const int* incx, float* y, const int* incy) +{ + saxpy_ (n,alpha,x,incx,y,incy); +} +#else +inline void +axpy (const int*, const float*, const float*, const int*, float*, const int*) +{ + Assert (false, LAPACKSupport::ExcMissing("saxpy")); +} +#endif + + +/// Template wrapper for LAPACK functions dgemv and sgemv +template +inline void +gemv (const char*, const int*, const int*, const number1*, const number2*, const int*, const number3*, const int*, const number4*, number5*, const int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGEMV_ +inline void +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) +{ + dgemv_ (trans,m,n,alpha,A,lda,x,incx,b,y,incy); +} +#else +inline void +gemv (const char*, const int*, const int*, const double*, const double*, const int*, const double*, const int*, const double*, double*, const int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgemv")); +} +#endif + + +#ifdef HAVE_SGEMV_ +inline void +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) +{ + sgemv_ (trans,m,n,alpha,A,lda,x,incx,b,y,incy); +} +#else +inline void +gemv (const char*, const int*, const int*, const float*, const float*, const int*, const float*, const int*, const float*, float*, const int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgemv")); +} +#endif + + +/// Template wrapper for LAPACK functions dgemm and sgemm +template +inline void +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*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGEMM_ +inline void +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) +{ + dgemm_ (transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgemm")); +} +#endif + + +#ifdef HAVE_SGEMM_ +inline void +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) +{ + sgemm_ (transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgemm")); +} +#endif + + +/// Template wrapper for LAPACK functions dgetrf and sgetrf +template +inline void +getrf (const int*, const int*, number1*, const int*, int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGETRF_ +inline void +getrf (const int* m, const int* n, double* A, const int* lda, int* ipiv, int* info) +{ + dgetrf_ (m,n,A,lda,ipiv,info); +} +#else +inline void +getrf (const int*, const int*, double*, const int*, int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgetrf")); +} +#endif + + +#ifdef HAVE_SGETRF_ +inline void +getrf (const int* m, const int* n, float* A, const int* lda, int* ipiv, int* info) +{ + sgetrf_ (m,n,A,lda,ipiv,info); +} +#else +inline void +getrf (const int*, const int*, float*, const int*, int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgetrf")); +} +#endif + + +/// Template wrapper for LAPACK functions dgetrs and sgetrs +template +inline void +getrs (const char*, const int*, const int*, const number1*, const int*, const int*, number2*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGETRS_ +inline void +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) +{ + dgetrs_ (trans,n,nrhs,A,lda,ipiv,b,ldb,info); +} +#else +inline void +getrs (const char*, const int*, const int*, const double*, const int*, const int*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgetrs")); +} +#endif + + +#ifdef HAVE_SGETRS_ +inline void +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) +{ + sgetrs_ (trans,n,nrhs,A,lda,ipiv,b,ldb,info); +} +#else +inline void +getrs (const char*, const int*, const int*, const float*, const int*, const int*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgetrs")); +} +#endif + + +/// Template wrapper for LAPACK functions dgetri and sgetri +template +inline void +getri (const int*, number1*, const int*, int*, number2*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGETRI_ +inline void +getri (const int* n, double* A, const int* lda, int* ipiv, double* inv_work, const int* lwork, int* info) +{ + dgetri_ (n,A,lda,ipiv,inv_work,lwork,info); +} +#else +inline void +getri (const int*, double*, const int*, int*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgetri")); +} +#endif + + +#ifdef HAVE_SGETRI_ +inline void +getri (const int* n, float* A, const int* lda, int* ipiv, float* inv_work, const int* lwork, int* info) +{ + sgetri_ (n,A,lda,ipiv,inv_work,lwork,info); +} +#else +inline void +getri (const int*, float*, const int*, int*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgetri")); +} +#endif + + +/// Template wrapper for LAPACK functions dgeqrf and sgeqrf +template +inline void +geqrf (const int*, const int*, number1*, const int*, number2*, number3*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGEQRF_ +inline void +geqrf (const int* m, const int* n, double* A, const int* lda, double* tau, double* work, const int* lwork, int* info) +{ + dgeqrf_ (m,n,A,lda,tau,work,lwork,info); +} +#else +inline void +geqrf (const int*, const int*, double*, const int*, double*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgeqrf")); +} +#endif + + +#ifdef HAVE_SGEQRF_ +inline void +geqrf (const int* m, const int* n, float* A, const int* lda, float* tau, float* work, const int* lwork, int* info) +{ + sgeqrf_ (m,n,A,lda,tau,work,lwork,info); +} +#else +inline void +geqrf (const int*, const int*, float*, const int*, float*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgeqrf")); +} +#endif + + +/// Template wrapper for LAPACK functions dormqr and sormqr +template +inline void +ormqr (const char*, const char*, const int*, const int*, const int*, const number1*, const int*, const number2*, number3*, const int*, number4*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DORMQR_ +inline void +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) +{ + dormqr_ (side,trans,m,n,k,A,lda,tau,B,ldb,work,lwork,info); +} +#else +inline void +ormqr (const char*, const char*, const int*, const int*, const int*, const double*, const int*, const double*, double*, const int*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dormqr")); +} +#endif + + +#ifdef HAVE_SORMQR_ +inline void +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) +{ + sormqr_ (side,trans,m,n,k,A,lda,tau,B,ldb,work,lwork,info); +} +#else +inline void +ormqr (const char*, const char*, const int*, const int*, const int*, const float*, const int*, const float*, float*, const int*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sormqr")); +} +#endif + + +/// Template wrapper for LAPACK functions dorgqr and sorgqr +template +inline void +orgqr (const int*, const int*, const int*, const number1*, const int*, const number2*, number3*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DORGQR_ +inline void +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) +{ + dorgqr_ (m,n,k,A,lda,tau,work,lwork,info); +} +#else +inline void +orgqr (const int*, const int*, const int*, const double*, const int*, const double*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dorgqr")); +} +#endif + + +#ifdef HAVE_SORGQR_ +inline void +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) +{ + sorgqr_ (m,n,k,A,lda,tau,work,lwork,info); +} +#else +inline void +orgqr (const int*, const int*, const int*, const float*, const int*, const float*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sorgqr")); +} +#endif + + +/// Template wrapper for LAPACK functions dtrtrs and strtrs +template +inline void +trtrs (const char*, const char*, const char*, const int*, const int*, const number1*, const int*, number2*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DTRTRS_ +inline void +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) +{ + dtrtrs_ (uplo,trans,diag,n,n_rhs,A,lda,B,ldb,info); +} +#else +inline void +trtrs (const char*, const char*, const char*, const int*, const int*, const double*, const int*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dtrtrs")); +} +#endif + + +#ifdef HAVE_STRTRS_ +inline void +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) +{ + strtrs_ (uplo,trans,diag,n,n_rhs,A,lda,B,ldb,info); +} +#else +inline void +trtrs (const char*, const char*, const char*, const int*, const int*, const float*, const int*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("strtrs")); +} +#endif + + +/// Template wrapper for LAPACK functions dgeev and sgeev +template +inline void +geev (const char*, const char*, const int*, number1*, const int*, number2*, number3*, number4*, const int*, number5*, const int*, number6*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGEEV_ +inline void +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) +{ + dgeev_ (jobvl,jobvr,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldva,work,lwork,info); +} +#else +inline void +geev (const char*, const char*, const int*, double*, const int*, double*, double*, double*, const int*, double*, const int*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgeev")); +} +#endif + + +#ifdef HAVE_SGEEV_ +inline void +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) +{ + sgeev_ (jobvl,jobvr,n,A,lda,lambda_re,lambda_im,vl,ldvl,vr,ldva,work,lwork,info); +} +#else +inline void +geev (const char*, const char*, const int*, float*, const int*, float*, float*, float*, const int*, float*, const int*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgeev")); +} +#endif + + +/// Template wrapper for LAPACK functions dgeevx and sgeevx +template +inline void +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*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGEEVX_ +inline void +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) +{ + 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); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgeevx")); +} +#endif + + +#ifdef HAVE_SGEEVX_ +inline void +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) +{ + 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); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgeevx")); +} +#endif + + +/// Template wrapper for LAPACK functions dsyev and ssyev +template +inline void +syev (const char *, const char *, const int *, number1 *, const int *, number2 *, number3 *, const int *, int *) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DSYEV_ +inline void +syev (const char *jobz, const char *uplo, const int *n, double *A, const int *lda, double *w, double *work, const int *lwork, int *info) +{ + dsyev_ (char*jobz,char*uplo,int*n,double*A,int*lda,double*w,double*work,int*lwork,int*info); +} +#else +inline void +syev (const char *, const char *, const int *, double *, const int *, double *, double *, const int *, int *) +{ + Assert (false, LAPACKSupport::ExcMissing("dsyev")); +} +#endif + + +#ifdef HAVE_SSYEV_ +inline void +syev (const char *jobz, const char *uplo, const int *n, float *A, const int *lda, float *w, float *work, const int *lwork, int *info) +{ + ssyev_ (char*jobz,char*uplo,int*n,double*A,int*lda,double*w,double*work,int*lwork,int*info); +} +#else +inline void +syev (const char *, const char *, const int *, float *, const int *, float *, float *, const int *, int *) +{ + Assert (false, LAPACKSupport::ExcMissing("ssyev")); +} +#endif + + +/// Template wrapper for LAPACK functions dsyevx and ssyevx +template +inline void +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*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DSYEVX_ +inline void +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) +{ + dsyevx_ (jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("dsyevx")); +} +#endif + + +#ifdef HAVE_SSYEVX_ +inline void +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) +{ + ssyevx_ (jobz,range,uplo,n,A,lda,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("ssyevx")); +} +#endif + + +/// Template wrapper for LAPACK functions dsygv and ssygv +template +inline void +sygv (const int*, const char*, const char*, const int*, number1*, const int*, number2*, const int*, number3*, number4*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DSYGV_ +inline void +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) +{ + dsygv_ (itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info); +} +#else +inline void +sygv (const int*, const char*, const char*, const int*, double*, const int*, double*, const int*, double*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dsygv")); +} +#endif + + +#ifdef HAVE_SSYGV_ +inline void +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) +{ + ssygv_ (itype,jobz,uplo,n,A,lda,B,ldb,w,work,lwork,info); +} +#else +inline void +sygv (const int*, const char*, const char*, const int*, float*, const int*, float*, const int*, float*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("ssygv")); +} +#endif + + +/// Template wrapper for LAPACK functions dsygvx and ssygvx +template +inline void +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*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DSYGVX_ +inline void +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) +{ + dsygvx_ (itype,jobz,range,uplo,n,A,lda,B,ldb,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("dsygvx")); +} +#endif + + +#ifdef HAVE_SSYGVX_ +inline void +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) +{ + ssygvx_ (itype,jobz,range,uplo,n,A,lda,B,ldb,vl,vu,il,iu,abstol,m,w,z,ldz,work,lwork,iwork,ifail,info); +} +#else +inline void +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*) +{ + Assert (false, LAPACKSupport::ExcMissing("ssygvx")); +} +#endif + + +/// Template wrapper for LAPACK functions dgesdd and sgesdd +template +inline void +gesdd (const char*, const int*, const int*, number1*, const int*, number2*, number3*, const int*, number4*, const int*, number5*, const int*, int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGESDD_ +inline void +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) +{ + dgesdd_ (jobz,m,n,A,lda,s,u,ldu,vt,ldvt,work,lwork,iwork,info); +} +#else +inline void +gesdd (const char*, const int*, const int*, double*, const int*, double*, double*, const int*, double*, const int*, double*, const int*, int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgesdd")); +} +#endif + + +#ifdef HAVE_SGESDD_ +inline void +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) +{ + sgesdd_ (jobz,m,n,A,lda,s,u,ldu,vt,ldvt,work,lwork,iwork,info); +} +#else +inline void +gesdd (const char*, const int*, const int*, float*, const int*, float*, float*, const int*, float*, const int*, float*, const int*, int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgesdd")); +} +#endif + + +/// Template wrapper for LAPACK functions dgesvd and sgesvd +template +inline void +gesvd (int*, int*, const int*, const int*, number1*, const int*, number2*, number3*, const int*, number4*, const int*, number5*, const int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGESVD_ +inline void +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) +{ + dgesvd_ (jobu,jobvt,n,m,A,lda,s,u,ldu,vt,ldvt,work,lwork,info); +} +#else +inline void +gesvd (int*, int*, const int*, const int*, double*, const int*, double*, double*, const int*, double*, const int*, double*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgesvd")); +} +#endif + + +#ifdef HAVE_SGESVD_ +inline void +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) +{ + sgesvd_ (jobu,jobvt,n,m,A,lda,s,u,ldu,vt,ldvt,work,lwork,info); +} +#else +inline void +gesvd (int*, int*, const int*, const int*, float*, const int*, float*, float*, const int*, float*, const int*, float*, const int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgesvd")); +} +#endif + + +/// Template wrapper for LAPACK functions dgelsd and sgelsd +template +inline void +gelsd (const int*, const int*, const int*, const number1*, const int*, number2*, const int*, number3*, const number4*, int*, number5*, const int*, int*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DGELSD_ +inline void +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) +{ + dgelsd_ (m,n,nrhs,A,lda,B,ldb,s,rcond,rank,work,lwork,iwork,info); +} +#else +inline void +gelsd (const int*, const int*, const int*, const double*, const int*, double*, const int*, double*, const double*, int*, double*, const int*, int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dgelsd")); +} +#endif + + +#ifdef HAVE_SGELSD_ +inline void +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) +{ + sgelsd_ (m,n,nrhs,A,lda,B,ldb,s,rcond,rank,work,lwork,iwork,info); +} +#else +inline void +gelsd (const int*, const int*, const int*, const float*, const int*, float*, const int*, float*, const float*, int*, float*, const int*, int*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sgelsd")); +} +#endif + + +/// Template wrapper for LAPACK functions dstev and sstev +template +inline void +stev (const char*, const int*, number1*, number2*, number3*, const int*, number4*, int*) +{ + Assert (false, ExcNotImplemented()); +} + +#ifdef HAVE_DSTEV_ +inline void +stev (const char* jobz, const int* n, double* d, double* e, double* z, const int* ldz, double* work, int* info) +{ + dstev_ (jobz,n,d,e,z,ldz,work,info); +} +#else +inline void +stev (const char*, const int*, double*, double*, double*, const int*, double*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("dstev")); +} +#endif + + +#ifdef HAVE_SSTEV_ +inline void +stev (const char* jobz, const int* n, float* d, float* e, float* z, const int* ldz, float* work, int* info) +{ + sstev_ (jobz,n,d,e,z,ldz,work,info); +} +#else +inline void +stev (const char*, const int*, float*, float*, float*, const int*, float*, int*) +{ + Assert (false, LAPACKSupport::ExcMissing("sstev")); +} +#endif + + +DEAL_II_NAMESPACE_CLOSE + +#endif