Template Class qmatrix#

Class Documentation#

template<class T = double>
class qmatrix#

Public Functions

inline qmatrix(const std::initializer_list<T> inputVec, size_t _row = 0, size_t _column = 0)#

Construct matrix from initializer list.

Parameters:
  • inputVec – Initializer list with matrix elements in row-major order

  • _row – Number of rows (default: 0, compute from size)

  • _column – Number of columns (default: 0, compute from size)

inline qmatrix(const std::vector<T> &inputVec, size_t _row = 0, size_t _column = 0)#
inline qmatrix(size_t _row, size_t _column, T populate)#
inline void resize(size_t _row = 0, size_t _column = 0, T populate = 0)#
inline void clear()#

Reset the matrix to empty state.

Empties internal storage and resets dimensions to 0.

inline qmatrix(size_t N, T populate)#

Square matrix constructor for fill initialization.

Parameters:
  • N – number of rows and columns

  • populate – value for all entries

inline qmatrix()#

Default constructor creates an empty matrix.

inline T &operator()(size_t i)#
inline T operator()(size_t i) const#
inline T &at(size_t i)#
inline T at(size_t i) const#
inline size_t size() const#

Return number of elements in matrix storage.

Returns:

total number of entries, i.e., row * column.

inline size_t getrow() const#

Return number of rows.

Returns:

row count.

inline size_t getcolumn() const#

Return number of columns.

Returns:

column count.

inline T &operator()(size_t i, size_t j)#

Element access by linear index in row-major order.

Parameters:

i – linear index (0-based)

Returns:

reference to element.

inline T operator()(size_t i, size_t j) const#
inline T &at(size_t i, size_t j)#
inline T at(size_t i, size_t j) const#
inline T sum() const#

Sum all elements in the matrix.

Returns:

sum of all entries.

inline T absSum() const#

Sum absolute values of all entries.

Returns:

absolute sum of matrix entries.

inline T trace() const#

Trace of the matrix (sum of diagonal elements).

Throws:

std::runtime_error – if matrix is not square.

Returns:

trace value.

inline auto getdiagonal()#
inline qmatrix<T> id(size_t _row = 0) const#
inline qmatrix<double> real() const#
inline qmatrix<double> imag() const#
inline qmatrix<T> cTranspose() const#
inline qmatrix operator*(const T &x) const#
inline qmatrix operator/(const T &x) const#
inline T *data()#
inline const T *data() const#
inline auto begin() const#
inline auto end() const#
inline void display()#
inline qmatrix operator+(const qmatrix<T> &rhs) const#
inline qmatrix operator-(const qmatrix<T> &rhs) const#
inline qmatrix<T> dot(const qmatrix<T> &rhs, double talpha = 1.0)#
inline std::vector<double> diag()#
inline std::tuple<qmatrix<T>, qmatrix<T>, cm_vec> nonsys_diag_complex()#
inline std::tuple<qmatrix<std::complex<T>>, qmatrix<std::complex<T>>, std::vector<std::complex<T>>> nonsys_diag_real()#
inline qmatrix<T> krDot(const qmatrix<T> &rhs, double alpha = 1)#
inline void unitary_transform(const qmatrix<T> &eigen_vector)#

Friends

inline friend std::ostream &operator<<(std::ostream &out, const qmatrix<T> &val)#