Blaze 3.9
trsm.h
Go to the documentation of this file.
1//=================================================================================================
33//=================================================================================================
34
35#ifndef _BLAZE_MATH_BLAS_CBLAS_TRSM_H_
36#define _BLAZE_MATH_BLAS_CBLAS_TRSM_H_
37
38
39//*************************************************************************************************
40// Includes
41//*************************************************************************************************
42
44#include <blaze/system/BLAS.h>
45#include <blaze/util/Complex.h>
47
48
49namespace blaze {
50
51//=================================================================================================
52//
53// BLAS TRIANGULAR LSE SOLVER FUNCTIONS (TRSM)
54//
55//=================================================================================================
56
57//*************************************************************************************************
60#if BLAZE_BLAS_MODE
61
62void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
63 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, float alpha, const float* A,
64 blas_int_t lda, float* B, blas_int_t ldb );
65
66void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
67 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, double alpha, const double* A,
68 blas_int_t lda, double* B, blas_int_t ldb );
69
70void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
71 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, complex<float> alpha,
72 const complex<float>* A, blas_int_t lda, complex<float>* B, blas_int_t ldb );
73
74void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
75 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, complex<double> alpha,
77
78#endif
80//*************************************************************************************************
81
82
83//*************************************************************************************************
84#if BLAZE_BLAS_MODE
111inline void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
112 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, float alpha, const float* A,
113 blas_int_t lda, float* B, blas_int_t ldb )
114{
115 cblas_strsm( order, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb );
116}
117#endif
118//*************************************************************************************************
119
120
121//*************************************************************************************************
122#if BLAZE_BLAS_MODE
149inline void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
150 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, double alpha, const double* A,
151 blas_int_t lda, double* B, blas_int_t ldb )
152{
153 cblas_dtrsm( order, side, uplo, transA, diag, m, n, alpha, A, lda, B, ldb );
154}
155#endif
156//*************************************************************************************************
157
158
159//*************************************************************************************************
160#if BLAZE_BLAS_MODE
187inline void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
188 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, complex<float> alpha,
189 const complex<float>* A, blas_int_t lda, complex<float>* B, blas_int_t ldb )
190{
191 BLAZE_STATIC_ASSERT( sizeof( complex<float> ) == 2UL*sizeof( float ) );
192
193 cblas_ctrsm( order, side, uplo, transA, diag, m, n, reinterpret_cast<const float*>( &alpha ),
194 reinterpret_cast<const float*>( A ), lda, reinterpret_cast<float*>( B ), ldb );
195}
196#endif
197//*************************************************************************************************
198
199
200//*************************************************************************************************
201#if BLAZE_BLAS_MODE
228inline void trsm( CBLAS_ORDER order, CBLAS_SIDE side, CBLAS_UPLO uplo, CBLAS_TRANSPOSE transA,
229 CBLAS_DIAG diag, blas_int_t m, blas_int_t n, complex<double> alpha,
231{
232 BLAZE_STATIC_ASSERT( sizeof( complex<double> ) == 2UL*sizeof( double ) );
233
234 cblas_ztrsm( order, side, uplo, transA, diag, m, n, reinterpret_cast<const double*>( &alpha ),
235 reinterpret_cast<const double*>( A ), lda, reinterpret_cast<double*>( B ), ldb );
236}
237#endif
238//*************************************************************************************************
239
240} // namespace blaze
241
242#endif
Header file for the complex data type.
Compile time assertion.
Complex data type of the Blaze library.
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.
System settings for the BLAS mode.