heevd.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_LAPACK_CLAPACK_HEEVD_H_
36 #define _BLAZE_MATH_LAPACK_CLAPACK_HEEVD_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <blaze/util/Complex.h>
45 
46 
47 //=================================================================================================
48 //
49 // LAPACK FORWARD DECLARATIONS
50 //
51 //=================================================================================================
52 
53 //*************************************************************************************************
55 extern "C" {
56 
57 void cheevd_( char* jobz, char* uplo, int* n, float* A, int* lda, float* w, float* work, int* lwork, float* rwork, int* lrwork, int* iwork, int* liwork, int* info );
58 void zheevd_( char* jobz, char* uplo, int* n, double* A, int* lda, double* w, double* work, int* lwork, double* rwork, int* lrwork, int* iwork, int* liwork, int* info );
59 
60 }
62 //*************************************************************************************************
63 
64 
65 
66 
67 namespace blaze {
68 
69 //=================================================================================================
70 //
71 // LAPACK HERMITIAN MATRIX EIGENVALUE FUNCTIONS (HEEVD)
72 //
73 //=================================================================================================
74 
75 //*************************************************************************************************
78 inline void heevd( char jobz, char uplo, int n, complex<float>* A, int lda, float* w,
79  complex<float>* work, int lwork, float* rwork, int* lrwork,
80  int* iwork, int* liwork, int* info );
81 
82 inline void heevd( char jobz, char uplo, int n, complex<double>* A, int lda, double* w,
83  complex<double>* work, int lwork, double* rwork, int lrwork,
84  int* iwork, int* liwork, int* info );
86 //*************************************************************************************************
87 
88 
89 //*************************************************************************************************
133 inline void heevd( char jobz, char uplo, int n, complex<float>* A, int lda, float* w,
134  complex<float>* work, int lwork, float* rwork, int lrwork,
135  int* iwork, int liwork, int* info )
136 {
137  cheevd_( &jobz, &uplo, &n, reinterpret_cast<float*>( A ), &lda, w,
138  reinterpret_cast<float*>( work ), &lwork, rwork, &lrwork, iwork, &liwork, info );
139 }
140 //*************************************************************************************************
141 
142 
143 //*************************************************************************************************
187 inline void heevd( char jobz, char uplo, int n, complex<double>* A, int lda,
188  double* w, complex<double>* work, int lwork, double* rwork, int lrwork,
189  int* iwork, int liwork, int* info )
190 {
191  zheevd_( &jobz, &uplo, &n, reinterpret_cast<double*>( A ), &lda, w,
192  reinterpret_cast<double*>( work ), &lwork, rwork, &lrwork, iwork, &liwork, info );
193 }
194 //*************************************************************************************************
195 
196 } // namespace blaze
197 
198 #endif
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Compile time assertion.
Header file for the complex data type.