1 #ifndef SimTK_SimTKCOMMON_TEMPLATIZED_LAPACK_H_     2 #define SimTK_SimTKCOMMON_TEMPLATIZED_LAPACK_H_    34 #include "SimTKlapack.h"    45         template <
class P> 
static void    47    (
char transa, 
char transb,
    49     const P& alpha, 
const P a[], 
int lda,
    51     const P& beta, P c[], 
int ldc) {assert(
false);}
    53         template <
class P> 
static void    61     int         &info ) {assert(
false);}
    63         template <
class P> 
static void    70     int         &info ) {assert(
false);}
    76 template <> 
inline void Lapack::gemm<float>
    77    (
char transa, 
char transb,
    79     const float& alpha, 
const float a[], 
int lda,
    80     const float b[], 
int ldb,
    81     const float& beta, 
float c[], 
int ldc)
    85         m,n,k,alpha,a,lda,b,ldb,beta,c,ldc
    88 template <> 
inline void Lapack::gemm<double>
    89    (
char transa, 
char transb,
    91     const double& alpha, 
const double a[], 
int lda,
    92     const double b[], 
int ldb,
    93     const double& beta, 
double c[], 
int ldc)
    97         m,n,k,alpha,a,lda,b,ldb,beta,c,ldc
   100 template <> 
inline void Lapack::gemm< complex<float> >
   101    (
char transa, 
char transb,
   103     const complex<float>& alpha, 
const complex<float> a[], 
int lda,
   104     const complex<float> b[], 
int ldb,
   105     const complex<float>& beta, complex<float> c[], 
int ldc)
   109         m,n,k,alpha,a,lda,b,ldb,beta,c,ldc
   112 template <> 
inline void Lapack::gemm< complex<double> >
   113    (
char transa, 
char transb,
   115     const complex<double>& alpha, 
const complex<double> a[], 
int lda,
   116     const complex<double> b[], 
int ldb,
   117     const complex<double>& beta, complex<double> c[], 
int ldc)
   121         m,n,k,alpha,a,lda,b,ldb,beta,c,ldc
   127 template <> 
inline void Lapack::getri<float>
   136     sgetri_(n,a,lda,ipiv,work,lwork,info);
   139 template <> 
inline void Lapack::getri<double>
   148     dgetri_(n,a,lda,ipiv,work,lwork,info);
   151 template <> 
inline void Lapack::getri< complex<float> >
   156     complex<float>  work[], 
   160     cgetri_(n,a,lda,ipiv,work,lwork,info);
   163 template <> 
inline void Lapack::getri< complex<double> >
   168     complex<double> work[], 
   172     zgetri_(n,a,lda,ipiv,work,lwork,info);
   176 template <> 
inline void Lapack::getrf<float>
   184     sgetrf_(m,n,a,lda,ipiv,info);
   187 template <> 
inline void Lapack::getrf<double>
   195     dgetrf_(m,n,a,lda,ipiv,info);
   198 template <> 
inline void Lapack::getrf< complex<float> >
   206     cgetrf_(m,n,a,lda,ipiv,info);
   209 template <> 
inline void Lapack::getrf< complex<double> >
   217     zgetrf_(m,n,a,lda,ipiv,info);
   361 #endif // SimTK_SimTKCOMMON_TEMPLATIZED_LAPACK_H_ This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
static void getri(int n, P a[], int lda, const int ipiv[], P work[], int lwork, int &info)
Definition: TemplatizedLapack.h:55
 
static void getrf(int m, int n, P a[], int lda, int ipiv[], int &info)
Definition: TemplatizedLapack.h:65
 
Definition: TemplatizedLapack.h:41
 
static void gemm(char transa, char transb, int m, int n, int k, const P &alpha, const P a[], int lda, const P b[], int ldb, const P &beta, P c[], int ldc)
Definition: TemplatizedLapack.h:47
 
Mandatory first inclusion for any Simbody source or header file.