DenseMatrix.hpp File Reference

Contains the DenseMatrix and DenseMatrixWrapper classes, simple wrappers around BLAS/LAPACK style dense matrices. More...

#include <string>
#include <vector>
#include <functional>
#include "misc/RandomWrapper.hpp"
#include "BLASLAPACKWrapper.hpp"
Include dependency graph for DenseMatrix.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  strumpack::DenseMatrix< scalar_t >
 This class represents a matrix, stored in column major format, to allow direct use of BLAS/LAPACK routines. More...
 
class  strumpack::DenseMatrixWrapper< scalar_t >
 Like DenseMatrix, this class represents a matrix, stored in column major format, to allow direct use of BLAS/LAPACK routines. However, objects of the DenseMatrixWrapper class do not allocate, own or free any data. More...
 

Namespaces

 strumpack
 

Enumerations

enum class  strumpack::Trans : char { strumpack::N ='N' , strumpack::C ='C' , strumpack::T ='T' }
 
enum class  strumpack::Side : char { strumpack::L ='L' , strumpack::R ='R' }
 
enum class  strumpack::UpLo : char { strumpack::U ='U' , strumpack::L ='L' }
 
enum class  strumpack::Diag : char { strumpack::U ='U' , strumpack::N ='N' }
 
enum class  strumpack::Jobz : char { strumpack::N ='N' , strumpack::V ='V' }
 

Functions

Trans strumpack::c2T (char op)
 
template<typename scalar_t >
std::unique_ptr< const DenseMatrixWrapper< scalar_t > > strumpack::ConstDenseMatrixWrapperPtr (std::size_t m, std::size_t n, const scalar_t *D, std::size_t ld)
 
template<typename scalar_t >
std::unique_ptr< const DenseMatrixWrapper< scalar_t > > strumpack::ConstDenseMatrixWrapperPtr (std::size_t m, std::size_t n, const DenseMatrix< scalar_t > &D, std::size_t i, std::size_t j)
 
template<typename scalar_from_t , typename scalar_to_t >
void strumpack::copy (std::size_t m, std::size_t n, const DenseMatrix< scalar_from_t > &a, std::size_t ia, std::size_t ja, DenseMatrix< scalar_to_t > &b, std::size_t ib, std::size_t jb)
 
template<typename scalar_from_t , typename scalar_to_t >
void strumpack::copy (const DenseMatrix< scalar_from_t > &a, DenseMatrix< scalar_to_t > &b, std::size_t ib=0, std::size_t jb=0)
 
template<typename scalar_t >
void strumpack::copy (const DenseMatrix< scalar_t > &a, scalar_t *b, std::size_t ldb)
 
template<typename scalar_t >
DenseMatrix< scalar_t > strumpack::vconcat (const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &b)
 
template<typename scalar_t >
DenseMatrix< scalar_t > strumpack::hconcat (const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &b)
 
template<typename scalar_t >
DenseMatrix< scalar_t > strumpack::eye (std::size_t m, std::size_t n)
 
template<typename scalar_t >
void strumpack::gemm (Trans ta, Trans tb, scalar_t alpha, const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &b, scalar_t beta, DenseMatrix< scalar_t > &c, int depth=0)
 
template<typename scalar_t >
void strumpack::gemm (Trans ta, Trans tb, scalar_t alpha, const DenseMatrix< scalar_t > &a, const scalar_t *b, int ldb, scalar_t beta, DenseMatrix< scalar_t > &c, int depth=0)
 
template<typename scalar_t >
void strumpack::gemm (Trans ta, Trans tb, scalar_t alpha, const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &b, scalar_t beta, scalar_t *c, int ldc, int depth=0)
 
template<typename scalar_t >
void strumpack::trmm (Side s, UpLo ul, Trans ta, Diag d, scalar_t alpha, const DenseMatrix< scalar_t > &a, DenseMatrix< scalar_t > &b, int depth=0)
 
template<typename scalar_t >
void strumpack::trsm (Side s, UpLo ul, Trans ta, Diag d, scalar_t alpha, const DenseMatrix< scalar_t > &a, DenseMatrix< scalar_t > &b, int depth=0)
 
template<typename scalar_t >
void strumpack::trsv (UpLo ul, Trans ta, Diag d, const DenseMatrix< scalar_t > &a, DenseMatrix< scalar_t > &b, int depth=0)
 
template<typename scalar_t >
void strumpack::gemv (Trans ta, scalar_t alpha, const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &x, scalar_t beta, DenseMatrix< scalar_t > &y, int depth=0)
 
template<typename scalar_t >
void strumpack::gemv (Trans ta, scalar_t alpha, const DenseMatrix< scalar_t > &a, const scalar_t *x, int incx, scalar_t beta, DenseMatrix< scalar_t > &y, int depth=0)
 
template<typename scalar_t >
void strumpack::gemv (Trans ta, scalar_t alpha, const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &x, scalar_t beta, scalar_t *y, int incy, int depth=0)
 
template<typename scalar_t >
void strumpack::gemv (Trans ta, scalar_t alpha, const DenseMatrix< scalar_t > &a, const scalar_t *x, int incx, scalar_t beta, scalar_t *y, int incy, int depth=0)
 
template<typename scalar_t >
long long int strumpack::LU_flops (const DenseMatrix< scalar_t > &a)
 
template<typename scalar_t >
long long int strumpack::solve_flops (const DenseMatrix< scalar_t > &b)
 
template<typename scalar_t >
long long int strumpack::LQ_flops (const DenseMatrix< scalar_t > &a)
 
template<typename scalar_t >
long long int strumpack::ID_row_flops (const DenseMatrix< scalar_t > &a, int rank)
 
template<typename scalar_t >
long long int strumpack::trsm_flops (Side s, scalar_t alpha, const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &b)
 
template<typename scalar_t >
long long int strumpack::gemm_flops (Trans ta, Trans tb, scalar_t alpha, const DenseMatrix< scalar_t > &a, const DenseMatrix< scalar_t > &b, scalar_t beta)
 
template<typename scalar_t >
long long int strumpack::gemm_flops (Trans ta, Trans tb, scalar_t alpha, const DenseMatrix< scalar_t > &a, scalar_t beta, const DenseMatrix< scalar_t > &c)
 
template<typename scalar_t >
long long int strumpack::orthogonalize_flops (const DenseMatrix< scalar_t > &a)
 
template<typename scalar_t , typename cast_t >
DenseMatrix< cast_t > strumpack::cast_matrix (const DenseMatrix< scalar_t > &mat)
 

Detailed Description

Contains the DenseMatrix and DenseMatrixWrapper classes, simple wrappers around BLAS/LAPACK style dense matrices.