8 std::cerr <<
"# [MARK] zgematrix::zgesv(zgematrix&)"
14 std::cerr <<
"[ERROR] zgematrix::zgesv(zgematrix&) " << std::endl
15 <<
"These two matrices cannot be solved." << std::endl
16 <<
"Your input was (" << M <<
"x" << N <<
") and ("
17 << mat.M <<
"x" << mat.N <<
")." << std::endl;
22 long NRHS(mat.N), LDA(N), *IPIV(
new long[N]), LDB(mat.M), INFO(1);
23 zgesv_(N, NRHS,
Array, LDA, IPIV, mat.Array, LDB, INFO);
27 std::cerr <<
"[WARNING] zgematrix::zgesv(zgematrix&) "
28 <<
"Serious trouble happend. INFO = " << INFO <<
"."
41 std::cerr <<
"# [MARK] zgematrix::zgesv(zcovector&)"
47 std::cerr <<
"[ERROR] zgematrix::zgesv(zcovector&) " << std::endl
48 <<
"These matrix and vector cannot be solved." << std::endl
49 <<
"Your input was (" << M <<
"x" << N <<
") and ("
50 << vec.L <<
")." << std::endl;
54 long NRHS(1), LDA(N), *IPIV(
new long[N]), LDB(vec.L), INFO(1);
55 zgesv_(N, NRHS,
Array, LDA, IPIV, vec.Array, LDB, INFO);
59 std::cerr <<
"[WARNING] zgematrix::zgesv(zcovector&) "
60 <<
"Serious trouble happend. INFO = " << INFO <<
"."
75 std::cerr <<
"# [MARK] zgematrix::zgels(zgematrix&)"
81 std::cerr <<
"[ERROR] zgematrix::zgels(zgematrix&) " << std::endl
82 <<
"These two matrices cannot be solved." << std::endl
83 <<
"Your input was (" << M <<
"x" << N <<
") and ("
84 << mat.M <<
"x" << mat.N <<
")." << std::endl;
91 for(
long i=0;
i<mat.M;
i++){
for(
long j=0; j<mat.N; j++){
99 long NRHS(mat.N), LDA(M), LDB(mat.M),
100 LWORK(min(M,N)+max(min(M,N),NRHS)), INFO(1);
101 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
102 zgels_(TRANS, M, N, NRHS,
Array, LDA, mat.Array, LDB, WORK, LWORK, INFO);
107 for(
long i=0;
i<tmp.M;
i++){
for(
long j=0; j<tmp.N; j++){
115 std::cerr <<
"[WARNING] zgematrix::zgels(zgematrix&) "
116 <<
"Serious trouble happend. INFO = " << INFO <<
"."
127 std::cerr <<
"# [MARK] zgematrix::zgels(zcovector&)"
133 std::cerr <<
"[ERROR] zgematrix::zgels(zcovector&) " << std::endl
134 <<
"These matrix and vector cannot be solved." << std::endl
135 <<
"Your input was (" << M <<
"x" << N <<
") and ("
136 << vec.L <<
")." << std::endl;
143 for(
long i=0;
i<vec.L;
i++){ tmp(
i)=vec(
i); }
149 long NRHS(1), LDA(M), LDB(vec.L),
150 LWORK(min(M,N)+max(min(M,N),NRHS)), INFO(1);
151 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
152 zgels_(TRANS, M, N, NRHS,
Array, LDA, vec.Array, LDB, WORK, LWORK, INFO);
157 for(
long i=0;
i<tmp.L;
i++){ tmp(
i)=vec(
i); }
163 std::cerr <<
"[WARNING] zgematrix::zgels(zcovector&) "
164 <<
"Serious trouble happend. INFO = " << INFO <<
"."
180 std::cerr <<
"# [MARK] zgematrix::zgels(zgematrix&, drovector&)"
186 std::cerr <<
"[ERROR] zgematrix::zgels(zgematrix&, drovector&) "
188 <<
"These two matrices cannot be solved." << std::endl
189 <<
"Your input was (" << M <<
"x" << N <<
") and ("
190 << mat.M <<
"x" << mat.N <<
")." << std::endl;
199 for(
long i=0;
i<mat.M;
i++){
for(
long j=0; j<mat.N; j++){
207 long NRHS(mat.N), LDA(M), LDB(mat.M),
208 LWORK(min(M,N)+max(min(M,N),NRHS)), INFO(1);
209 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
210 zgels_(TRANS, M, N, NRHS,
Array, LDA, mat.Array, LDB, WORK, LWORK, INFO);
214 for(
long i=0;
i<residual.
l;
i++){
for(
long j=0; j<M-N; j++){
215 residual(
i) += std::norm(mat(N+j,
i));
219 for(
long i=0;
i<tmp.M;
i++){
for(
long j=0; j<tmp.N; j++){
227 std::cerr <<
"[WARNING] zgematrix::zgels(zgematrix&, drovector&) "
228 <<
"Serious trouble happend. INFO = " << INFO <<
"."
243 std::cerr <<
"# [MARK] zgematrix::zgels(zcovector&, double&)"
249 std::cerr <<
"[ERROR] zgematrix::zgels(zcovector&, double&) " << std::endl
250 <<
"These matrix and vector cannot be solved." << std::endl
251 <<
"Your input was (" << M <<
"x" << N <<
") and ("
252 << vec.L <<
")." << std::endl;
261 for(
long i=0;
i<vec.L;
i++){ tmp(
i)=vec(
i); }
267 long NRHS(1), LDA(
m), LDB(vec.L),
268 LWORK(min(M,N)+max(min(M,N),NRHS)), INFO(1);
269 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
270 zgels_(TRANS, M, N, NRHS,
Array, LDA, vec.Array, LDB, WORK, LWORK, INFO);
274 for(
long i=0;
i<M-N;
i++){ residual+=std::norm(vec(N+
i)); }
277 for(
long i=0;
i<tmp.L;
i++){ tmp(
i)=vec(
i); }
283 std::cerr <<
"[WARNING] zgematrix::zgels(zcovector&, double&) "
284 <<
"Serious trouble happend. INFO = " << INFO <<
"."
298 const double RCOND =-1. )
301 std::cerr <<
"# [MARK] zgematrix::zgelss(zcovector&, dcovector&, long&, const double)"
307 std::cerr <<
"[ERROR] zgematrix::zgelss"
308 <<
"(zcovector&, dcovector&, long&, const double) " << std::endl
309 <<
"These matrix and vector cannot be solved." << std::endl
310 <<
"Your input was (" << M <<
"x" << N <<
") and ("
311 << B.L <<
")." << std::endl;
318 for(
long i=0;
i<B.L;
i++){ tmp(
i)=B(
i); }
325 long NRHS(1), LDA(M), LDB(B.L),
326 LWORK(2*min(M,N) +max(max(M,N),NRHS)), INFO(1);
327 double *RWORK(
new double[5*min(M,N)]);
328 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
329 zgelss_(M, N, NRHS,
Array, LDA, B.Array, LDB, S.
array, RCOND, RANK,
330 WORK, LWORK, RWORK, INFO);
331 delete [] RWORK;
delete [] WORK;
334 std::cerr <<
"[WARNING] zgematrix::zgelss"
335 <<
"(zcovector&, dcovector&, long&, double) "
336 <<
"Serious trouble happend. INFO = " << INFO <<
"."
346 const double RCOND =-1. )
349 std::cerr <<
"# [MARK] zgematrix::zgelss(zgematrix&, dcovector&, long&, const double)"
355 std::cerr <<
"[ERROR] zgematrix::zgelss"
356 <<
"(zgematrix&, dcovector&, long&, const double) " << std::endl
357 <<
"These matrix and vector cannot be solved." << std::endl
358 <<
"Your input was (" << M <<
"x" << N <<
") and ("
359 << B.M <<
"x" << B.N <<
")." << std::endl;
366 for(
long i=0;
i<B.M;
i++){
367 for(
long j=0; j<B.N; j++){
377 long NRHS(B.N), LDA(M), LDB(B.M),
378 LWORK(2*min(M,N) +max(max(M,N),NRHS)), INFO(1);
379 double *RWORK(
new double[5*min(M,N)]);
380 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
381 zgelss_(M, N, NRHS,
Array, LDA, B.Array, LDB, S.
array, RCOND, RANK,
382 WORK, LWORK, RWORK, INFO);
383 delete [] RWORK;
delete [] WORK;
386 std::cerr <<
"[WARNING] zgematrix::zgelss"
387 <<
"(zgematrix&, dcovector&, long&, const double) "
388 <<
"Serious trouble happend. INFO = " << INFO <<
"."
406 std::cerr <<
"# [MARK] zgematrix::zgeev(std::vector< std::complex<double> >&)"
412 std::cerr <<
"[ERROR] zgematrix::zgeev"
413 <<
"(std::vector<std::complex<double>>&) "
415 <<
"This matrix cannot have eigenvalues." << std::endl
416 <<
"Your input was (" << M <<
"x" << N <<
")." << std::endl;
422 char JOBVL(
'N'), JOBVR(
'N');
423 long LDA(N), LDVL(1), LDVR(1), LWORK(4*
n), INFO(1);
424 double *RWORK(
new double[2*
n]);
425 std::complex<double> *VL(NULL), *VR(NULL),
426 *WORK(
new std::complex<double>[LWORK]);
427 zgeev_(JOBVL, JOBVR, N,
Array, LDA, &w[0],
428 VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO);
429 delete [] RWORK;
delete [] WORK;
delete [] VL;
delete [] VR;
432 std::cerr <<
"[WARNING] zgematrix::zgesv"
433 <<
"(std::vector<std::complex<double>&, std::vector<zcovector>&) "
434 <<
"Serious trouble happend. INFO = " << INFO <<
"."
447 std::vector<zcovector>& vr)
450 std::cerr <<
"# [MARK] zgematrix::zgeev(std::vector< std::complex<double> >&, std::vector<zcovector>&)"
456 std::cerr <<
"[ERROR] zgematrix::zgeev"
457 <<
"(std::vector<std::complex<double>>&, std::vector<zcovector>&)"
459 <<
"This matrix cannot have eigenvalues." << std::endl
460 <<
"Your input was (" << M <<
"x" << N <<
")." << std::endl;
465 w.resize(N); vr.resize(N);
466 for(
long i=0;
i<N;
i++){ vr[
i].resize(N); }
468 char JOBVL(
'N'), JOBVR(
'V');
469 long LDA(N), LDVL(1), LDVR(N), LWORK(4*
n), INFO(1);
470 double *RWORK(
new double[2*
n]);
471 std::complex<double> *VL(NULL), *WORK(
new std::complex<double>[LWORK]);
472 zgeev_(JOBVL, JOBVR, N,
Array, LDA, &w[0],
473 VL, LDVL, VR.Array, LDVR, WORK, LWORK, RWORK, INFO);
474 delete [] RWORK;
delete [] WORK;
delete [] VL;
477 for(
long j=0; j<N; j++){
for(
long i=0;
i<N;
i++){
482 std::cerr <<
"[WARNING] zgematrix::zgesv"
483 <<
"(std::vector<std::complex<double>&, std::vector<zcovector>&) "
484 <<
"Serious trouble happend. INFO = " << INFO <<
"."
497 std::vector<zrovector>& vl)
500 std::cerr <<
"# [MARK] zgematrix::zgeev(std::vector< std::complex<double> >&, std::vector<zrovector>&)"
506 std::cerr <<
"[ERROR] zgematrix::zgeev"
507 <<
"(std::vector<std::complex<double>>&, std::vector<zrovector>&)"
509 <<
"This matrix cannot have eigenvalues." << std::endl
510 <<
"Your input was (" << M <<
"x" << N <<
")." << std::endl;
515 w.resize(N); vl.resize(N);
516 for(
long i=0;
i<N;
i++){ vl[
i].resize(N); }
518 char JOBVL(
'V'), JOBVR(
'N');
519 long LDA(N), LDVL(N), LDVR(1), LWORK(4*
n), INFO(1);
520 double *RWORK(
new double[2*
n]);
521 std::complex<double> *VR(NULL), *WORK(
new std::complex<double>[LWORK]);
522 zgeev_(JOBVL, JOBVR, N,
Array, LDA, &w[0],
523 VL.Array, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO);
524 delete [] RWORK;
delete [] WORK;
delete [] VR;
527 for(
long j=0; j<N; j++){
for(
long i=0;
i<N;
i++){
528 vl[j](
i) = std::conj(VL(
i,j));
532 std::cerr <<
"[WARNING] zgematrix::zgesv"
533 <<
"(std::vector<std::complex<double>&, std::vector<zrovector>&) "
534 <<
"Serious trouble happend. INFO = " << INFO <<
"."
564 std::cerr <<
"# [MARK] zgematrix::zgesvd(dcovector&, zgematrix&, zgematrix&)"
568 char JOBU(
'A'), JOBVT(
'A');
569 long LDA(M), LDU(M), LDVT(N),
570 LWORK(max(3*min(
m,
n)+max(
m,
n),5*min(
m,
n))), INFO(1);
571 double *RWORK(
new double[5*min(
m,
n)]);
572 std::complex<double> *WORK(
new std::complex<double>[LWORK]);
575 zgesvd_(JOBU, JOBVT, M, N,
Array, LDA, S.
array, U.Array,
576 LDU, VT.Array, LDVT, WORK, LWORK, RWORK, INFO);
577 delete [] RWORK;
delete [] WORK;
580 std::cerr <<
"[WARNING] zgematrix::zgesvd"
581 <<
"(dceovector&, zgematrix&, zcovector&) "
582 <<
"Serious trouble happend. INFO = " << INFO <<
"."
long zgesvd(dcovector &, zgematrix &, zgematrix &)
Definition: zgematrix-lapack.hpp:561
void resize(const long &, const long &)
Definition: zgematrix-misc.hpp:126
void clear()
Definition: zcovector-misc.hpp:3
void resize(const long &)
Definition: dcovector-misc.hpp:93
double *const & array
1D array to store vector data (readable)
Definition: dcovector.hpp:13
long zgelss(zcovector &, dcovector &, long &, const double)
Definition: zgematrix-lapack.hpp:297
friend _zgematrix i(const zgematrix &)
Definition: zgematrix-calc.hpp:21
void zero()
Definition: drovector-misc.hpp:23
Complex Double-precision General Dence Matrix Class.
Definition: zgematrix.hpp:3
long const & l
vector size (readable)
Definition: drovector.hpp:12
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
long zgels(zgematrix &)
Definition: zgematrix-lapack.hpp:72
void clear()
Definition: zgematrix-misc.hpp:3
long zgesv(zgematrix &)
Definition: zgematrix-lapack.hpp:5
long const & m
matrix row size (readable)
Definition: zgematrix.hpp:14
friend void swap(zgematrix &, zgematrix &)
Definition: zgematrix-misc.hpp:154
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
long const & n
matrix column size (readable)
Definition: zgematrix.hpp:15
Complex Double-precision Column Vector Class.
Definition: zcovector.hpp:3
void resize(const long &)
Definition: drovector-misc.hpp:93
std::complex< double > * Array
1D Array to store vector data
Definition: _zrovector.hpp:8
long zgeev(std::vector< std::complex< double > > &)
Definition: zgematrix-lapack.hpp:403