9 std::cerr <<
"# [MARK] zhematrix::zhesv(zgematrix&)"
15 std::cerr <<
"[ERROR] zhematrix::zhesv(zgematrix&) " << std::endl
16 <<
"These two matrices cannot be solved." << std::endl
17 <<
"Your input was (" << N <<
"x" << N <<
") and ("
18 << mat.N <<
"x" << mat.N <<
")." << std::endl;
24 long NRHS(mat.N), LDA(N), *IPIV(
new long[N]), LDB(mat.N), LWORK(-1), INFO(1);
25 std::complex<double> *WORK(
new std::complex<double>[1]);
26 zhesv_(UPLO, N, NRHS,
Array, LDA, IPIV, mat.Array, LDB, WORK, LWORK, INFO);
29 LWORK = long(std::real(WORK[0]));
30 delete [] WORK; WORK =
new std::complex<double>[LWORK];
31 zhesv_(UPLO, N, NRHS,
Array, LDA, IPIV, mat.Array, LDB, WORK, LWORK, INFO);
32 delete [] WORK;
delete [] IPIV;
35 std::cerr <<
"[WARNING] zhematrix::zhesv(zhematrix&) "
36 <<
"Serious trouble happend. INFO = " << INFO <<
"."
50 std::cerr <<
"# [MARK] zhematrix::zhesv(zcovector&)"
56 std::cerr <<
"[ERROR] zhematrix::zhesv(zcovector&) " << std::endl
57 <<
"These matrix and vector cannot be solved." << std::endl
58 <<
"Your input was (" << N <<
"x" << N <<
") and ("
59 << vec.L <<
")." << std::endl;
65 long NRHS(1), LDA(N), *IPIV(
new long[N]), LDB(vec.L), LWORK(-1), INFO(1);
66 std::complex<double> *WORK(
new std::complex<double>[1] );
67 zhesv_(UPLO, N, NRHS,
Array, LDA, IPIV, vec.Array, LDB, WORK, LWORK, INFO);
70 LWORK = long(std::real(WORK[0]));
71 delete WORK; WORK =
new std::complex<double>[LWORK];
72 zhesv_(UPLO, N, NRHS,
Array, LDA, IPIV, vec.Array, LDB, WORK, LWORK, INFO);
73 delete [] WORK;
delete [] IPIV;
76 std::cerr <<
"[WARNING] zhematrix::zhesv(zcovector&) "
77 <<
"Serious trouble happend. INFO = " << INFO <<
"."
98 std::cerr <<
"# [MARK] zhematrix::zheev(std::vector<double>&, const bool&)"
103 char JOBZ, UPLO(
'L');
104 if(jobz==0){ JOBZ=
'N'; }
else{ JOBZ=
'V'; }
105 long LDA(N), INFO(1), LWORK(-1);
106 double *RWORK(
new double[
max(1, 3*N-2)]);
107 std::complex<double> *WORK(
new std::complex<double>[1]);
108 zheev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, RWORK, INFO);
111 LWORK = long(std::real(WORK[0]));
112 delete [] WORK; WORK =
new std::complex<double>[LWORK];
113 zheev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, RWORK, INFO);
114 delete [] RWORK;
delete [] WORK;
117 std::cerr <<
"[WARNING] zhematrix::zheev"
118 <<
"(vector<std::complex<double>>&, const bool&) "
119 <<
"Serious trouble happend. INFO = " << INFO <<
"."
133 std::vector<zcovector>& v)
136 std::cerr <<
"# [MARK] zhematrix::zheev(std::vector<double>&, std::vector<zcovector>&)"
140 w.resize(N); v.resize(N);
141 for(
long i=0;
i<N;
i++){ v[
i].resize(N); }
142 char JOBZ(
'V'), UPLO(
'L');
143 long LDA(N), INFO(1), LWORK(-1);
144 double *RWORK(
new double[
max(1, 3*N-2)]);
145 std::complex<double> *WORK(
new std::complex<double>[1]);
146 zheev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, RWORK, INFO);
149 LWORK = long(std::real(WORK[0]));
150 delete [] WORK; WORK =
new std::complex<double>[LWORK];
151 zheev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, RWORK, INFO);
152 delete [] RWORK;
delete [] WORK;
155 for(
long i=0;
i<N;
i++){
for(
long j=0; j<N; j++){
160 std::cerr <<
"[WARNING] zhematrix::zheev"
161 <<
"(vector<std::complex<double>>&, vector<zcovector>&) "
162 <<
"Serious trouble happend. INFO = " << INFO <<
"."
176 std::vector<zrovector>& v)
179 std::cerr <<
"# [MARK] zhematrix::zheev(std::vector<double>&, std::vector<zrovector>&)"
183 w.resize(N); v.resize(N);
184 for(
long i=0;
i<N;
i++){ v[
i].resize(N); }
185 char JOBZ(
'V'), UPLO(
'L');
186 long LDA(N), INFO(1), LWORK(-1);
187 double *RWORK(
new double[
max(1, 3*N-2)]);
188 std::complex<double> *WORK(
new std::complex<double>[1]);
189 zheev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, RWORK, INFO);
192 LWORK = long(std::real(WORK[0]));
193 delete [] WORK; WORK =
new std::complex<double>[LWORK];
194 zheev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, RWORK, INFO);
195 delete [] RWORK;
delete [] WORK;
198 for(
long i=0;
i<N;
i++){
for(
long j=0; j<N; j++){
203 std::cerr <<
"[WARNING] zhematrix::zheev"
204 <<
"(vector<std::complex<double>>&, vector<zcovector>&)"
205 <<
"Serious trouble happend. INFO = " << INFO <<
"."
double max(double v1, double v2)
Return maximum.
Definition: variousFunctions.cpp:355
long zheev(std::vector< double > &, const bool &)
Definition: zhematrix-lapack.hpp:94
Complex Double-precision General Dence Matrix Class.
Definition: zgematrix.hpp:3
friend _zgematrix i(const zhematrix &)
Definition: zhematrix-calc.hpp:20
std::complex< double > * Array
1D Array to store vector data
Definition: _zrovector.hpp:8
Complex Double-precision Column Vector Class.
Definition: zcovector.hpp:3
long zhesv(zgematrix &)
Definition: zhematrix-lapack.hpp:6