Blaze 3.9
ormlq.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_LAPACK_CLAPACK_ORMLQ_H_
36#define _BLAZE_MATH_LAPACK_CLAPACK_ORMLQ_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
45#include <blaze/util/Types.h>
46
47
48//=================================================================================================
49//
50// LAPACK FORWARD DECLARATIONS
51//
52//=================================================================================================
53
54//*************************************************************************************************
56#if !defined(INTEL_MKL_VERSION)
57extern "C" {
58
59void sormlq_( char* side, char* trans, blaze::blas_int_t* m, blaze::blas_int_t* n,
60 blaze::blas_int_t* k, float* A, blaze::blas_int_t* lda, float* tau, float* C,
61 blaze::blas_int_t* ldc, float* work, blaze::blas_int_t* lwork, blaze::blas_int_t* info,
63void dormlq_( char* side, char* trans, blaze::blas_int_t* m, blaze::blas_int_t* n,
64 blaze::blas_int_t* k, double* A, blaze::blas_int_t* lda, double* tau, double* C,
65 blaze::blas_int_t* ldc, double* work, blaze::blas_int_t* lwork, blaze::blas_int_t* info,
67
68}
69#endif
71//*************************************************************************************************
72
73
74
75
76namespace blaze {
77
78//=================================================================================================
79//
80// LAPACK FUNCTIONS TO MULTIPLY Q FROM A LQ DECOMPOSITION WITH A MATRIX (ORMLQ)
81//
82//=================================================================================================
83
84//*************************************************************************************************
87void ormlq( char side, char trans, blas_int_t m, blas_int_t n, blas_int_t k,
88 const float* A, blas_int_t lda, const float* tau, float* C, blas_int_t ldc,
89 float* work, blas_int_t lwork, blas_int_t* info );
90
91void ormlq( char side, char trans, blas_int_t m, blas_int_t n, blas_int_t k,
92 const double* A, blas_int_t lda, const double* tau, double* C, blas_int_t ldc,
93 double* work, blas_int_t lwork, blas_int_t* info );
95//*************************************************************************************************
96
97
98//*************************************************************************************************
145inline void ormlq( char side, char trans, blas_int_t m, blas_int_t n, blas_int_t k,
146 const float* A, blas_int_t lda, const float* tau, float* C, blas_int_t ldc,
147 float* work, blas_int_t lwork, blas_int_t* info )
148{
149#if defined(INTEL_MKL_VERSION)
150 BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( blas_int_t ) );
151#endif
152
153 sormlq_( &side, &trans, &m, &n, &k, const_cast<float*>( A ), &lda,
154 const_cast<float*>( tau ), C, &ldc, work, &lwork, info
155#if !defined(INTEL_MKL_VERSION)
157#endif
158 );
159}
160//*************************************************************************************************
161
162
163//*************************************************************************************************
210inline void ormlq( char side, char trans, blas_int_t m, blas_int_t n, blas_int_t k,
211 const double* A, blas_int_t lda, const double* tau, double* C, blas_int_t ldc,
212 double* work, blas_int_t lwork, blas_int_t* info )
213{
214#if defined(INTEL_MKL_VERSION)
215 BLAZE_STATIC_ASSERT( sizeof( MKL_INT ) == sizeof( blas_int_t ) );
216#endif
217
218 dormlq_( &side, &trans, &m, &n, &k, const_cast<double*>( A ), &lda,
219 const_cast<double*>( tau ), C, &ldc, work, &lwork, info
220#if !defined(INTEL_MKL_VERSION)
222#endif
223 );
224}
225//*************************************************************************************************
226
227} // namespace blaze
228
229#endif
Compile time assertion.
decltype(auto) trans(const DenseMatrix< MT, SO > &dm)
Calculation of the transpose of the given dense matrix.
Definition: DMatTransExpr.h:766
void ormlq(DenseMatrix< MT1, SO1 > &C, const DenseMatrix< MT2, SO2 > &A, char side, char trans, const ElementType_t< MT2 > *tau)
LAPACK kernel for the multiplication of the double precision Q from a LQ decomposition with another m...
Definition: ormlq.h:145
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.