Blaze  3.6
trtri.h
Go to the documentation of this file.
1 //=================================================================================================
33 //=================================================================================================
34 
35 #ifndef _BLAZE_MATH_LAPACK_CLAPACK_TRTRI_H_
36 #define _BLAZE_MATH_LAPACK_CLAPACK_TRTRI_H_
37 
38 
39 //*************************************************************************************************
40 // Includes
41 //*************************************************************************************************
42 
43 #include <blaze/util/Complex.h>
45 #include <blaze/util/Types.h>
46 
47 
48 //=================================================================================================
49 //
50 // LAPACK FORWARD DECLARATIONS
51 //
52 //=================================================================================================
53 
54 //*************************************************************************************************
56 #if !defined(INTEL_MKL_VERSION)
57 extern "C" {
58 
59 void strtri_( char* uplo, char* diag, int* n, float* A, int* lda, int* info,
61 void dtrtri_( char* uplo, char* diag, int* n, double* A, int* lda, int* info,
63 void ctrtri_( char* uplo, char* diag, int* n, float* A, int* lda, int* info,
65 void ztrtri_( char* uplo, char* diag, int* n, double* A, int* lda, int* info,
67 
68 }
69 #endif
70 
71 //*************************************************************************************************
72 
73 
74 
75 
76 namespace blaze {
77 
78 //=================================================================================================
79 //
80 // LAPACK TRIANGULAR MATRIX INVERSION FUNCTIONS (TRTRI)
81 //
82 //=================================================================================================
83 
84 //*************************************************************************************************
87 void trtri( char uplo, char diag, int n, float* A, int lda, int* info );
88 
89 void trtri( char uplo, char diag, int n, double* A, int lda, int* info );
90 
91 void trtri( char uplo, char diag, int n, complex<float>* A, int lda, int* info );
92 
93 void trtri( char uplo, char diag, int n, complex<double>* A, int lda, int* info );
95 //*************************************************************************************************
96 
97 
98 //*************************************************************************************************
129 inline void trtri( char uplo, char diag, int n, float* A, int lda, int* info )
130 {
131 #if defined(INTEL_MKL_VERSION)
132  BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( int ) );
133 #endif
134 
135  strtri_( &uplo, &diag, &n, A, &lda, info,
137 }
138 //*************************************************************************************************
139 
140 
141 //*************************************************************************************************
172 inline void trtri( char uplo, char diag, int n, double* A, int lda, int* info )
173 {
174 #if defined(INTEL_MKL_VERSION)
175  BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( int ) );
176 #endif
177 
178  dtrtri_( &uplo, &diag, &n, A, &lda, info,
180 }
181 //*************************************************************************************************
182 
183 
184 //*************************************************************************************************
215 inline void trtri( char uplo, char diag, int n, complex<float>* A, int lda, int* info )
216 {
217  BLAZE_STATIC_ASSERT( sizeof( complex<float> ) == 2UL*sizeof( float ) );
218 
219 #if defined(INTEL_MKL_VERSION)
220  BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( int ) );
221  using ET = MKL_Complex8;
222 #else
223  using ET = float;
224 #endif
225 
226  ctrtri_( &uplo, &diag, &n, reinterpret_cast<ET*>( A ), &lda, info,
228 }
229 //*************************************************************************************************
230 
231 
232 //*************************************************************************************************
263 inline void trtri( char uplo, char diag, int n, complex<double>* A, int lda, int* info )
264 {
265  BLAZE_STATIC_ASSERT( sizeof( complex<double> ) == 2UL*sizeof( double ) );
266 
267 #if defined(INTEL_MKL_VERSION)
268  BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( int ) );
269  using ET = MKL_Complex16;
270 #else
271  using ET = double;
272 #endif
273 
274  ztrtri_( &uplo, &diag, &n, reinterpret_cast<ET*>( A ), &lda, info,
276 }
277 //*************************************************************************************************
278 
279 } // namespace blaze
280 
281 #endif
void trtri(char uplo, char diag, int n, float *A, int lda, int *info)
LAPACK kernel for the inversion of the given dense triangular single precision column-major matrix.
Definition: trtri.h:129
Header file for basic type definitions.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
Compile time assertion.
Header file for the complex data type.
#define BLAZE_STATIC_ASSERT(expr)
Compile time assertion macro.In case of an invalid compile time expression, a compilation error is cr...
Definition: StaticAssert.h:112
Size type of the Blaze library.