Go to the documentation of this file. 1 #ifndef PARGEMSLR_DENSE_MATRIX_H
2 #define PARGEMSLR_DENSE_MATRIX_H
10 #include "../utils/utils.hpp"
11 #include "../vectors/sequential_vector.hpp"
105 int Setup(
int nrows,
int ncols);
116 int Setup(
int nrows,
int ncols,
bool setzero);
128 int Setup(
int nrows,
int ncols,
int location,
bool setzero);
140 int SetupPtr( T* data,
int nrows,
int ncols,
int ldim,
int location);
266 virtual int Fill(
const T &v);
274 virtual int MoveData(
const int &location);
282 virtual int Scale(
const T &alpha);
539 int Plot(
int conditiona,
int conditionb,
int width);
virtual int MoveData(const int &location)
Move the data to another memory location.
Definition: dense_matrix.cpp:536
int HessSchur(DenseMatrixClass< T > &Q, SequentialVectorClass< T > &wr, SequentialVectorClass< T > &wi)
Transform this Hess matrix A into the schur form matrix U = Q^HAQ.
Definition: dense_matrix.cpp:591
int Setup(int nrows, int ncols)
Free the current matrix, and malloc memory to create a new matrix on the host.
Definition: dense_matrix.cpp:231
Class of dense matrix.
Definition: dense_matrix.hpp:23
DenseMatrixClass< T > & operator=(const DenseMatrixClass< T > &mat)
The = operator of DenseMatrixClass.
Definition: dense_matrix.cpp:62
virtual ~DenseMatrixClass()
The destructor of DenseMatrixClass.
Definition: dense_matrix.cpp:97
int MatMat(const T &alpha, const DenseMatrixClass< T > &A, char transa, const DenseMatrixClass< T > &B, char transb, const T &beta)
Dense Matrix-Matrix multiplication, C = alpha*transa(A)*transb(B)+beta*C where C is this matrix.
Definition: dense_matrix.cpp:526
virtual long int GetNumNonzeros() const
Get the number of nonzeros in this matrix.
Definition: dense_matrix.cpp:201
int Rand()
Create an random matrix, real value in between (0, 1), complex value real and imag part in between (0...
Definition: dense_matrix.cpp:437
int OrdSchur(DenseMatrixClass< T > &Q, SequentialVectorClass< T > &wr, SequentialVectorClass< T > &wi, vector_int &select)
Reorder the this real schur decomposition, puch selected eigenvalues to the leading part.
Definition: dense_matrix.cpp:789
T & operator()(int row, int col)
Get the reference of a value in the matrix based on the index.
Definition: dense_matrix.cpp:107
int Hess(DenseMatrixClass< T > &Q)
Transform this matrix A into hessenberg matrix Q^HAQ = Hess.
Definition: dense_matrix.cpp:569
virtual int Scale(const T &alpha)
Scale the current .
Definition: dense_matrix.cpp:404
virtual int MatVec(char trans, const T &alpha, const VectorClass< T > &x, const T &beta, VectorClass< T > &y)
In place dense Matrix-Vector product ==> y := alpha*A*x + beta*y, or y := alpha*A'*x + beta*y.
Definition: dense_matrix.cpp:494
virtual int GetNumColsLocal() const
Get the local number of columns of the matrix.
Definition: dense_matrix.cpp:191
The virtual class of real/complex vector class.
Definition: vector.hpp:126
The class of sequential real/complex vector.
Definition: structs.hpp:12
virtual int Eye()
Create an indentity matrix.
Definition: dense_matrix.cpp:471
int SetupPtr(T *data, int nrows, int ncols, int ldim, int location)
Free the current matrix, and point the matrix to data.
Definition: dense_matrix.cpp:293
The virtual matrix classes.
int Eig(DenseMatrixClass< T > &QS, DenseMatrixClass< T > &QE, SequentialVectorClass< T > &wr, SequentialVectorClass< T > &wi)
Compute the Schur decomposition of real dense matrix A, U = QS^HAQS, and the Eigen decomposition UQE ...
Definition: dense_matrix.cpp:767
The template class complex.
Definition: complex.hpp:24
virtual int Fill(const T &v)
Fill the matrix with constant value.
Definition: dense_matrix.cpp:371
int GetLeadingDimension() const
Get the leading dimension of the matrix.
Definition: dense_matrix.cpp:211
SequentialVectorClass< T > & GetDataVector()
Get the reference to the data vector.
Definition: dense_matrix.cpp:151
int Invert()
Invert the matrix.
Definition: dense_matrix.cpp:547
T * GetData() const
Get the data pointer of the matrix.
Definition: dense_matrix.cpp:141
The virtual class of all matrix classes.
Definition: matrix.hpp:23
int Schur(DenseMatrixClass< T > &Q, SequentialVectorClass< T > &wr, SequentialVectorClass< T > &wi)
Transform this matrix A (real) into the schur form matrix U = Q^HAQ.
Definition: dense_matrix.cpp:627
virtual int GetDataLocation() const
Get the data location of the matrix.
Definition: dense_matrix.cpp:171
int HessEig(DenseMatrixClass< T > &Q, SequentialVectorClass< T > &wr, SequentialVectorClass< T > &wi)
Compute the Eigen decomposition of real dense hessenberg matrix A, AQ = QD. A is this matrix and is n...
Definition: dense_matrix.cpp:751
int InvertUpperTriangular()
Invert the matrix. Only works when current matrix is upper triangular.
Definition: dense_matrix.cpp:558
int Plot(int conditiona, int conditionb, int width)
Plot the dense matrix to the terminal output. Function for testing purpose.
Definition: dense_matrix.cpp:821
Tell if a value is a complex value.
Definition: complex.hpp:684
DenseMatrixClass()
The constructor of DenseMatrixClass.
Definition: dense_matrix.cpp:20
virtual int Clear()
Free the current matrix.
Definition: dense_matrix.cpp:122
virtual int GetNumRowsLocal() const
Get the local number of rows of the matrix.
Definition: dense_matrix.cpp:181
bool IsHoldingData() const
Check if the matrix holding its own data.
Definition: dense_matrix.cpp:221
int OrdSchurClusters(DenseMatrixClass< T > &Q, SequentialVectorClass< T > &wr, SequentialVectorClass< T > &wi, vector_int &clusters)
Reorder the this real schur decomposition, puch selected eigenvalues to the leading part.
Definition: dense_matrix.cpp:805
int SubMatrix(int row_start, int col_start, int num_rows, int num_cols, int location, DenseMatrixClass< T > &mat_out)
Copy data to extract a submatrix of the current matrix.
Definition: dense_matrix.cpp:332