1#ifndef LAPACK_INVERSE_DEFINED
2#define LAPACK_INVERSE_DEFINED
14template <
typename F = real>
24 throw EXCEPTION(
"Inverse requries a square matrix");
27 std::vector<Complex64> work(rows * rows);
28 int workSize(work.size());
29 std::vector<int> rowPermutation(rows);
36 rowPermutation.data(),
41 rowPermutation.data(),
46 std::stringstream stream;
47 stream <<
"Argument " << -info <<
" of ZGETRI is illegal";
50 if (info > 0) {
throw EXCEPTION(
"Singular matrix cannot be inverted"); }
#define EXCEPTION(message)
Definition Exception.hpp:8
void zgetri_(const int *n, sisi4s::Complex64 *a, const int *lda, const int *rowPermutation, sisi4s::Complex64 *work, const int *workSize, int *info)
void zgetrf_(const int *m, const int *n, sisi4s::Complex64 *a, const int *lda, const int *rowPermutation, int *info)
~LapackInverse()
Definition LapackInverse.hpp:53
LapackMatrix< Complex64 > invA
Definition LapackInverse.hpp:58
const LapackMatrix< Complex64 > & get() const
Definition LapackInverse.hpp:55
LapackInverse(const LapackMatrix< Complex64 > &A_)
Definition LapackInverse.hpp:21
Definition LapackInverse.hpp:15
Definition LapackMatrix.hpp:11
int getColumns() const
Definition LapackMatrix.hpp:64
int getRows() const
Definition LapackMatrix.hpp:63
Definition Algorithm.hpp:10
Complex< Float64 > Complex64
Definition Complex.hpp:14