9 std::cerr <<
"# [MARK] dsymatrix::dsysv(dgematrix&)"
15 std::cerr <<
"[ERROR] dsymatrix::dsysv(dgematrix&) " << 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 double *WORK(
new double[1] );
26 dsysv_(UPLO, N, NRHS,
Array, LDA, IPIV, mat.Array, LDB, WORK, LWORK, INFO);
29 LWORK = long(WORK[0]);
30 delete [] WORK; WORK =
new double[LWORK];
31 dsysv_(UPLO, N, NRHS,
Array, LDA, IPIV, mat.Array, LDB, WORK, LWORK, INFO);
32 delete [] WORK;
delete [] IPIV;
35 std::cerr <<
"[WARNING] dsymatrix::dsysv(dsymatrix&) "
36 <<
"Serious trouble happend. INFO = " << INFO <<
"."
50 std::cerr <<
"# [MARK] dsymatrix::dsysv(dcovector&)"
56 std::cerr <<
"[ERROR] dsymatrix::dsysv(dcovector&) " << 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 double *WORK(
new double[1] );
67 dsysv_(UPLO, N, NRHS,
Array, LDA, IPIV, vec.Array, LDB, WORK, LWORK, INFO);
70 LWORK = long(WORK[0]);
71 delete WORK; WORK =
new double[LWORK];
72 dsysv_(UPLO, N, NRHS,
Array, LDA, IPIV, vec.Array, LDB, WORK, LWORK, INFO);
73 delete [] WORK;
delete [] IPIV;
76 std::cerr <<
"[WARNING] dsymatrix::dsysv(dcovector&) "
77 <<
"Serious trouble happend. INFO = " << INFO <<
"."
97 std::cerr <<
"# [MARK] dsymatrix::dsyev(std::vector<double>&, const bool&)"
102 char JOBZ, UPLO(
'L');
103 if(jobz==0){ JOBZ=
'N'; }
else{ JOBZ=
'V'; }
104 long LDA(N), INFO(1), LWORK(-1);
105 double *WORK(
new double[1]);
106 dsyev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, INFO);
109 LWORK = long(WORK[0]);
110 delete [] WORK; WORK =
new double[LWORK];
111 dsyev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, INFO);
115 std::cerr <<
"[WARNING] dsymatrix::dsyev(vector<double>&, const bool&)"
117 <<
"Serious trouble happend. INFO = " << INFO <<
"."
133 std::cerr <<
"# [MARK] dsymatrix::dsyev(std::vector<double>&, std::vector<dcovector>&)"
137 w.resize(N); v.resize(N);
138 for(
long i=0;
i<N;
i++){ v[
i].resize(N); }
139 char JOBZ(
'V'), UPLO(
'L');
140 long LDA(N), INFO(1), LWORK(-1);
141 double *WORK(
new double[1]);
142 dsyev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, INFO);
145 LWORK = long(WORK[0]);
146 delete [] WORK; WORK =
new double[LWORK];
147 dsyev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, INFO);
151 for(
long i=0;
i<N;
i++){
for(
long j=0; j<N; j++){
156 std::cerr <<
"[WARNING] dsymatrix::dsyev"
157 <<
"(vector<double>&, vector<dcovector>&)" << std::endl
158 <<
"Serious trouble happend. INFO = " << INFO <<
"."
174 std::cerr <<
"# [MARK] dsymatrix::dsyev(std::vector<double>&, std::vector<drovector>&)"
178 w.resize(N); v.resize(N);
179 for(
long i=0;
i<N;
i++){ v[
i].resize(N); }
180 char JOBZ(
'V'), UPLO(
'L');
181 long LDA(N), INFO(1), LWORK(-1);
182 double *WORK(
new double[1]);
183 dsyev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, INFO);
186 LWORK = long(WORK[0]);
187 delete [] WORK; WORK =
new double[LWORK];
188 dsyev_(JOBZ, UPLO, N,
Array, LDA, &w[0], WORK, LWORK, INFO);
192 for(
long i=0;
i<N;
i++){
for(
long j=0; j<N; j++){
197 std::cerr <<
"[WARNING] dsymatrix::dsyev"
198 <<
"(vector<double>&, vector<dcovector>&)" << std::endl
199 <<
"Serious trouble happend. INFO = " << INFO <<
"."
217 std::cerr <<
"# [MARK] dsymatrix::dsygv(dsymatrix&, std::vector<double>&)"
223 std::cerr <<
"[ERROR] dsymatrix::dsygv"
224 <<
"(dsymatrix&, vector<double>&) " << std::endl
225 <<
"The matrix B is not a matrix "
226 <<
"having the same size as \"this\" matrix." << std::endl
227 <<
"The B matrix is (" << matB.N <<
"x" << matB.N <<
")."
234 char JOBZ(
'N'), UPLO(
'L');
235 long ITYPE(1), LDA(N), LDB(N), LWORK(-1), INFO(1);
236 double *WORK(
new double[1]);
237 dsygv_(ITYPE, JOBZ, UPLO, N,
Array, LDA, matB.Array, LDB, &w[0],
240 LWORK = long(WORK[0]);
241 delete [] WORK; WORK =
new double[LWORK];
242 dsygv_(ITYPE, JOBZ, UPLO, N,
Array, LDA, matB.Array, LDB, &w[0],
247 std::cerr <<
"[WARNING] dsymatrix::dsygv"
248 <<
"(dsymatrix&, vector<double>&)"
250 <<
"Serious trouble happend. INFO = " << INFO <<
"."
252 <<
"Make sure that B matrix is a symmetric-definite."
264 std::vector<dcovector>& v)
267 std::cerr <<
"# [MARK] dsymatrix::dsygv(dsymatrix&, std::vector<double>&, std::vector<dcovector>&)"
273 std::cerr <<
"[ERROR] dsymatrix::dsygv"
274 <<
"(dsymatrix&, vector<double>&) " << std::endl
275 <<
"The matrix B is not a matrix "
276 <<
"having the same size as \"this\" matrix." << std::endl
277 <<
"The B matrix is (" << matB.N <<
"x" << matB.N <<
")."
285 char JOBZ(
'V'), UPLO(
'L');
286 long ITYPE(1), LDA(N), LDB(N), LWORK(-1), INFO(1);
287 double *WORK(
new double[1]);
288 dsygv_(ITYPE, JOBZ, UPLO, N,
Array, LDA, matB.Array, LDB, &w[0],
291 LWORK = long(WORK[0]);
292 std::cout <<
" LWORK = " << LWORK <<std::endl;
293 delete [] WORK; WORK =
new double[LWORK];
294 dsygv_(ITYPE, JOBZ, UPLO, N,
Array, LDA, matB.Array, LDB, &w[0],
299 for(
int i=0;
i<N;
i++){
301 for(
int j=0; j<N; j++){
302 v[
i](j) =Darray[
i][j];
307 std::cerr <<
"[WARNING] dsymatrix::dsygv"
308 <<
"(dsymatrix&, vector<double>&)"
310 <<
"Serious trouble happend. INFO = " << INFO <<
"."
312 <<
"Make sure that B matrix is a symmetric-definite."
long dsysv(dgematrix &)
Definition: dsymatrix-lapack.hpp:6
friend _dgematrix i(const dsymatrix &)
Definition: dsymatrix-calc.hpp:22
long dsyev(std::vector< double > &, const bool &)
Definition: dsymatrix-lapack.hpp:94
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
Real Double-precision Symmetric Matrix Class [L-type (UPLO=L) Strage].
Definition: dsymatrix.hpp:3
long dsygv(dsymatrix &, std::vector< double > &)
Definition: dsymatrix-lapack.hpp:214
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
double * Array
1D Array to store vector data
Definition: _drovector.hpp:8