Blaze 3.9
syevx.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_LAPACK_CLAPACK_SYEVX_H_
36#define _BLAZE_MATH_LAPACK_CLAPACK_SYEVX_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
44#include <blaze/util/Complex.h>
46#include <blaze/util/Types.h>
47
48
49//=================================================================================================
50//
51// LAPACK FORWARD DECLARATIONS
52//
53//=================================================================================================
54
55//*************************************************************************************************
57#if !defined(INTEL_MKL_VERSION)
58extern "C" {
59
60void ssyevx_( char* jobz, char* range, char* uplo, blaze::blas_int_t* n, float* A,
61 blaze::blas_int_t* lda, float* vl, float* vu, blaze::blas_int_t* il,
62 blaze::blas_int_t* iu, float* abstol, blaze::blas_int_t* m, float* w, float* Z,
63 blaze::blas_int_t* ldz, float* work, blaze::blas_int_t* lwork,
67void dsyevx_( char* jobz, char* range, char* uplo, blaze::blas_int_t* n, double* A,
68 blaze::blas_int_t* lda, double* vl, double* vu, blaze::blas_int_t* il,
69 blaze::blas_int_t* iu, double* abstol, blaze::blas_int_t* m, double* w, double* Z,
70 blaze::blas_int_t* ldz, double* work, blaze::blas_int_t* lwork,
74
75}
76#endif
78//*************************************************************************************************
79
80
81
82
83namespace blaze {
84
85//=================================================================================================
86//
87// LAPACK SYMMETRIC MATRIX EIGENVALUE FUNCTIONS (SYEVX)
88//
89//=================================================================================================
90
91//*************************************************************************************************
94void syevx( char jobz, char range, char uplo, blas_int_t n, float* A,
95 blas_int_t lda, float vl, float vu, blas_int_t il,
96 blas_int_t iu, float abstol, blas_int_t* m, float* w,
97 float* Z, blas_int_t ldz, float* work, blas_int_t lwork,
98 blas_int_t* iwork, blas_int_t* ifail, blas_int_t* info );
99
100void syevx( char jobz, char range, char uplo, blas_int_t n, double* A,
101 blas_int_t lda, double vl, double vu, blas_int_t il,
102 blas_int_t iu, double abstol, blas_int_t* m, double* w,
103 double* Z, blas_int_t ldz, double* work, blas_int_t lwork,
104 blas_int_t* iwork, blas_int_t* ifail, blas_int_t* info );
106//*************************************************************************************************
107
108
109//*************************************************************************************************
166inline void syevx( char jobz, char range, char uplo, blas_int_t n, float* A,
167 blas_int_t lda, float vl, float vu, blas_int_t il,
168 blas_int_t iu, float abstol, blas_int_t* m, float* w,
169 float* Z, blas_int_t ldz, float* work, blas_int_t lwork,
170 blas_int_t* iwork, blas_int_t* ifail, blas_int_t* info )
171{
172#if defined(INTEL_MKL_VERSION)
173 BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( blas_int_t ) );
174#endif
175
176 ++il;
177 ++iu;
178
179 ssyevx_( &jobz, &range, &uplo, &n, A, &lda, &vl, &vu, &il, &iu,
180 &abstol, m, w, Z, &ldz, work, &lwork, iwork, ifail, info
181#if !defined(INTEL_MKL_VERSION)
183#endif
184 );
185}
186//*************************************************************************************************
187
188
189//*************************************************************************************************
246inline void syevx( char jobz, char range, char uplo, blas_int_t n, double* A,
247 blas_int_t lda, double vl, double vu, blas_int_t il,
248 blas_int_t iu, double abstol, blas_int_t* m, double* w,
249 double* Z, blas_int_t ldz, double* work, blas_int_t lwork,
250 blas_int_t* iwork, blas_int_t* ifail, blas_int_t* info )
251{
252#if defined(INTEL_MKL_VERSION)
253 BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( blas_int_t ) );
254#endif
255
256 ++il;
257 ++iu;
258
259 dsyevx_( &jobz, &range, &uplo, &n, A, &lda, &vl, &vu, &il, &iu,
260 &abstol, m, w, Z, &ldz, work, &lwork, iwork, ifail, info
261#if !defined(INTEL_MKL_VERSION)
263#endif
264 );
265}
266//*************************************************************************************************
267
268} // namespace blaze
269
270#endif
Header file for the complex data type.
Compile time assertion.
size_t syevx(DenseMatrix< MT1, SO1 > &A, DenseVector< VT, TF > &w, DenseMatrix< MT2, SO2 > &Z, char uplo, ST low, ST upp)
LAPACK kernel for computing the eigenvalues of the given dense symmetric matrix.
Definition: syevx.h:699
int32_t blas_int_t
Signed integer type used in the BLAS/LAPACK wrapper functions.
Definition: Types.h:64
#define BLAZE_STATIC_ASSERT(expr)
Compile time assertion macro.
Definition: StaticAssert.h:112
size_t fortran_charlen_t
Type of the hidden arguments of character type within a Fortran forward declaration.
Definition: Types.h:186
Header file for basic BLAS type definitions.
Header file for basic type definitions.