| 
    BLAS++ 2024.05.31
    
   BLAS C++ API 
   | 
 
\(C = op(A)^{-1} B \) or \(C = B \;op(A)^{-1}\) where \(A\) is triangular More...
Functions | |
| template<typename TA , typename TB > | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, blas::scalar_type< TA, TB > alpha, TA const *A, int64_t lda, TB *B, int64_t ldb) | 
| Solve the triangular matrix-vector equation.   | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< float > const &alpha, std::vector< float * > const &Aarray, std::vector< int64_t > const &lda, std::vector< float * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info) | 
| CPU, variable-size batched, float version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< double > const &alpha, std::vector< double * > const &Aarray, std::vector< int64_t > const &lda, std::vector< double * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info) | 
| CPU, variable-size batched, double version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< std::complex< float > > const &alpha, std::vector< std::complex< float > * > const &Aarray, std::vector< int64_t > const &lda, std::vector< std::complex< float > * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info) | 
| CPU, variable-size batched, complex<float> version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< std::complex< double > > const &alpha, std::vector< std::complex< double > * > const &Aarray, std::vector< int64_t > const &lda, std::vector< std::complex< double > * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info) | 
| CPU, variable-size batched, complex<double> version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< float > const &alpha, std::vector< float * > const &Aarray, std::vector< int64_t > const &lda, std::vector< float * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info, blas::Queue &queue) | 
| GPU device, variable-size batched, float version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< double > const &alpha, std::vector< double * > const &Aarray, std::vector< int64_t > const &lda, std::vector< double * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info, blas::Queue &queue) | 
| GPU device, variable-size batched, double version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< std::complex< float > > const &alpha, std::vector< std::complex< float > * > const &Aarray, std::vector< int64_t > const &lda, std::vector< std::complex< float > * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info, blas::Queue &queue) | 
| GPU device, variable-size batched, complex<float> version.  | |
| void | blas::batch::trsm (blas::Layout layout, std::vector< blas::Side > const &side, std::vector< blas::Uplo > const &uplo, std::vector< blas::Op > const &trans, std::vector< blas::Diag > const &diag, std::vector< int64_t > const &m, std::vector< int64_t > const &n, std::vector< std::complex< double > > const &alpha, std::vector< std::complex< double > * > const &Aarray, std::vector< int64_t > const &lda, std::vector< std::complex< double > * > const &Barray, std::vector< int64_t > const &ldb, size_t batch_size, std::vector< int64_t > &info, blas::Queue &queue) | 
| GPU device, variable-size batched, complex<double> version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, float alpha, float const *A, int64_t lda, float *B, int64_t ldb, blas::Queue &queue) | 
| GPU device, float version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, double alpha, double const *A, int64_t lda, double *B, int64_t ldb, blas::Queue &queue) | 
| GPU device, double version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, std::complex< float > alpha, std::complex< float > const *A, int64_t lda, std::complex< float > *B, int64_t ldb, blas::Queue &queue) | 
| GPU device, complex<float> version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, std::complex< double > alpha, std::complex< double > const *A, int64_t lda, std::complex< double > *B, int64_t ldb, blas::Queue &queue) | 
| GPU device, complex<double> version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, float alpha, float const *A, int64_t lda, float *B, int64_t ldb) | 
| CPU, float version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, double alpha, double const *A, int64_t lda, double *B, int64_t ldb) | 
| CPU, double version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, std::complex< float > alpha, std::complex< float > const *A, int64_t lda, std::complex< float > *B, int64_t ldb) | 
| CPU, complex<float> version.  | |
| void | blas::trsm (blas::Layout layout, blas::Side side, blas::Uplo uplo, blas::Op trans, blas::Diag diag, int64_t m, int64_t n, std::complex< double > alpha, std::complex< double > const *A, int64_t lda, std::complex< double > *B, int64_t ldb) | 
| CPU, complex<double> version.  | |
\(C = op(A)^{-1} B \) or \(C = B \;op(A)^{-1}\) where \(A\) is triangular
| void blas::trsm | ( | blas::Layout | layout, | 
| blas::Side | side, | ||
| blas::Uplo | uplo, | ||
| blas::Op | trans, | ||
| blas::Diag | diag, | ||
| int64_t | m, | ||
| int64_t | n, | ||
| blas::scalar_type< TA, TB > | alpha, | ||
| TA const * | A, | ||
| int64_t | lda, | ||
| TB * | B, | ||
| int64_t | ldb | ||
| ) | 
Solve the triangular matrix-vector equation.
\[ op(A) X = \alpha B, \]
or
\[ X op(A) = \alpha B, \]
where \(op(A)\) is one of \(op(A) = A\), \(op(A) = A^T\), or \(op(A) = A^H\), X and B are m-by-n matrices, and A is an m-by-m or n-by-n, unit or non-unit, upper or lower triangular matrix.
No test for singularity or near-singularity is included in this routine. Such tests must be performed before calling this routine.
Generic implementation for arbitrary data types.
| [in] | layout | Matrix storage, Layout::ColMajor or Layout::RowMajor. | 
| [in] | side | Whether \(op(A)\) is on the left or right of X:
  | 
| [in] | uplo | What part of the matrix A is referenced, the opposite triangle being assumed to be zero:
  | 
| [in] | trans | The form of \(op(A)\):
  | 
| [in] | diag | Whether A has a unit or non-unit diagonal:
  | 
| [in] | m | Number of rows of matrices B and X. m >= 0. | 
| [in] | n | Number of columns of matrices B and X. n >= 0. | 
| [in] | alpha | Scalar alpha. If alpha is zero, A is not accessed. | 
| [in] | A | 
  | 
| [in] | lda | Leading dimension of A.
  | 
| [in,out] | B | On entry, the m-by-n matrix B, stored in an ldb-by-n array [RowMajor: m-by-ldb]. On exit, overwritten by the solution matrix X. | 
| [in] | ldb | Leading dimension of B. ldb >= max(1, m) [RowMajor: ldb >= max(1, n)]. |