23 #ifndef DIAGONALIZATION_H_INCLUDED 24 #define DIAGONALIZATION_H_INCLUDED 29 #include <gsl/gsl_matrix.h> 30 #include <gsl/gsl_vector.h> 40 using real = __float128;
41 using complex = __complex128;
44 using complex = std::complex<real>;
47 static real precision;
49 static void applyDiagonalization(
50 std::initializer_list<complex> massMatrix,
51 std::initializer_list<complex*> transfer,
52 std::initializer_list<real*> masses
55 static void applyBiDiagonalization(
56 std::initializer_list<complex> massMatrix,
57 std::initializer_list<complex*> transfer,
58 std::initializer_list<complex*> transfer2,
59 std::initializer_list<real*> masses
63 std::initializer_list<complex> massMatrix,
69 std::vector<complex>
const &transfer();
71 std::vector<complex>
const &transfer2();
73 std::vector<real>
const &mass();
77 void updateDiagonalization();
80 std::vector<complex> massMatrix,
81 std::vector<complex> &transfer,
82 std::vector<real> &mass,
83 bool bidiagonalization =
false 89 std::vector<complex> &transfer,
90 std::vector<real> &mass
94 std::vector<complex> &transfer,
95 std::vector<real> &mass
99 std::vector<complex> &transfer,
100 std::vector<complex> &transfer2,
101 std::vector<real> &mass
106 void bidiagonalize();
117 gsl_matrix_complex *getGSLMassMatrix(
118 std::vector<complex>
const &massMatrix
122 gsl_matrix_complex
const *matrix,
123 std::vector<complex> &target
127 gsl_vector
const *vect,
128 std::vector<real> &target
131 void positiveDiagonal(
132 std::vector<complex> &transfer
135 std::vector<complex> hermitian(
136 std::vector<complex>
const &init
139 std::vector<complex> dot(
140 std::vector<complex>
const &A,
141 std::vector<complex>
const &B
145 void print(std::vector<T>
const &v)
const 148 for (
const auto &e : v)
149 std::cout << (double)crealq(e) <<
" ";
150 std::cout <<
" )" << std::endl;
155 std::vector<complex> m_data;
160 std::vector<complex> m_transfer;
161 std::vector<complex> m_transfer2;
162 std::vector<real> m_mass;
Definition: libdiagonalization.h:35