Blaze 3.9
geqp3.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_LAPACK_CLAPACK_GEQP3_H_
36#define _BLAZE_MATH_LAPACK_CLAPACK_GEQP3_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
45
46
47//=================================================================================================
48//
49// LAPACK FORWARD DECLARATIONS
50//
51//=================================================================================================
52
53//*************************************************************************************************
55#if !defined(INTEL_MKL_VERSION)
56extern "C" {
57
58void sgeqp3_( blaze::blas_int_t* m, blaze::blas_int_t* n, float* A, blaze::blas_int_t* lda,
59 blaze::blas_int_t* jpvt, float* tau, float* work, blaze::blas_int_t* lwork,
60 blaze::blas_int_t* info );
61void dgeqp3_( blaze::blas_int_t* m, blaze::blas_int_t* n, double* A, blaze::blas_int_t* lda,
62 blaze::blas_int_t* jpvt, double* tau, double* work, blaze::blas_int_t* lwork,
63 blaze::blas_int_t* info );
64
65}
66#endif
68//*************************************************************************************************
69
70
71
72
73namespace blaze {
74
75//=================================================================================================
76//
77// LAPACK QR DECOMPOSITION FUNCTIONS (GEQP3)
78//
79//=================================================================================================
80
81//*************************************************************************************************
84void geqp3( blas_int_t m, blas_int_t n, float* A, blas_int_t lda, blas_int_t* jpvt,
85 float* tau, float* work, blas_int_t lwork, blas_int_t* info );
86
87void geqp3( blas_int_t m, blas_int_t n, double* A, blas_int_t lda, blas_int_t* jpvt,
88 double* tau, double* work, blas_int_t lwork, blas_int_t* info );
90//*************************************************************************************************
91
92
93//*************************************************************************************************
143inline void geqp3( blas_int_t m, blas_int_t n, float* A, blas_int_t lda, blas_int_t* jpvt,
144 float* tau, float* work, blas_int_t lwork, blas_int_t* info )
145{
146#if defined(INTEL_MKL_VERSION)
147 BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( blas_int_t ) );
148#endif
149
150 sgeqp3_( &m, &n, A, &lda, jpvt, tau, work, &lwork, info );
151}
152//*************************************************************************************************
153
154
155//*************************************************************************************************
205inline void geqp3( blas_int_t m, blas_int_t n, double* A, blas_int_t lda, blas_int_t* jpvt,
206 double* tau, double* work, blas_int_t lwork, blas_int_t* info )
207{
208#if defined(INTEL_MKL_VERSION)
209 BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( blas_int_t ) );
210#endif
211
212 dgeqp3_( &m, &n, A, &lda, jpvt, tau, work, &lwork, info );
213}
214//*************************************************************************************************
215
216} // namespace blaze
217
218#endif
Compile time assertion.
void geqp3(blas_int_t m, blas_int_t n, double *A, blas_int_t lda, blas_int_t *jpvt, double *tau, double *work, blas_int_t lwork, blas_int_t *info)
LAPACK kernel for the QR decomposition of the given dense double precision column-major matrix.
Definition: geqp3.h:205
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
Header file for basic BLAS type definitions.