My Project
zhematrix-constructor.hpp
1 //============================================================================
4  : n(N), array(Array), darray(Darray)
5 {
6 #ifdef CPPL_VERBOSE
7  std::cerr << "# [MARK] zhematrix::zhematrix()"
8  << std::endl;
9 #endif//CPPL_VERBOSE
10 
12  N = 0;
13  Array =NULL;
14  Darray =NULL;
15 
16 #ifdef CPPL_DEBUG
17  std::cerr << "# [NOTE] zhematrix::zhematrix() "
18  << "A new 0x0 matrix at " << Array
19  << " has been made." << std::endl;
20 #endif//CPPL_DEBUG
21 }
22 
23 //============================================================================
25 inline zhematrix::zhematrix(const zhematrix& mat)
26  : n(N), array(Array), darray(Darray)
27 {
28 #ifdef CPPL_VERBOSE
29  std::cerr << "# [MARK] zhematrix::zhematrix(const zhematrix&)"
30  << std::endl;
31 #endif//CPPL_VERBOSE
32 
34  N =mat.N;
35  Array =new std::complex<double>[N*N];
36  Darray =new std::complex<double>*[N];
37  for(int i=0; i<N; i++){ Darray[i] =&Array[i*N]; }
38 
40  zcopy_(N*N, mat.Array, 1, Array, 1);
41 
42 #ifdef CPPL_DEBUG
43  std::cerr << "# [NOTE] zhematrix::zhematrix(const zhematrix&) "
44  << "A new matrix at " << Array << " has been made." << std::endl;
45 #endif//CPPL_DEBUG
46 }
47 
48 //============================================================================
50 inline zhematrix::zhematrix(const _zhematrix& mat)
51  : n(N), array(Array), darray(Darray)
52 {
53 #ifdef CPPL_VERBOSE
54  std::cerr << "# [MARK] zhematrix::zhematrix(const _zhematrix&)"
55  << std::endl;
56 #endif//CPPL_VERBOSE
57 
58  N =mat.N;
59  Array =mat.Array;
60  Darray =mat.Darray;
61 
62 #ifdef CPPL_DEBUG
63  std::cerr << "# [NOTE] zhematrix::zhematrix(const _zhematrix&) "
64  << "A new matrix pointing at " << Array
65  << " has been made."
66  << std::endl;
67 #endif//CPPL_DEBUG
68 }
69 
70 //============================================================================
72 inline zhematrix::zhematrix(const long& _n)
73  : n(N), array(Array), darray(Darray)
74 {
75 #ifdef CPPL_VERBOSE
76  std::cerr << "# [MARK] zhematrix::zhematrix(const long&)"
77  << std::endl;
78 #endif//CPPL_VERBOSE
79 
80 #ifdef CPPL_DEBUG
81  if( _n<0 ){
82  std::cerr << "[ERROR] zhematrix::zhematrix(const long)"
83  << std::endl
84  << "Matrix sizes must be positive integers. " << std::endl
85  << "Your input was (" << _n << ")." << std::endl;
86  exit(1);
87  }
88 #endif//CPPL_DEBUG
89 
91  N =_n;
92  Array =new std::complex<double>[N*N];
93  Darray =new std::complex<double>*[N];
94  for(int i=0; i<N; i++){ Darray[i] =&Array[i*N]; }
95 
96 #ifdef CPPL_DEBUG
97  std::cerr << "# [NOTE] zhematrix(long) "
98  << "A new matrix at " << Array
99  << " has been made." << std::endl;
100 #endif//CPPL_DEBUG
101 }
102 
103 //============================================================================
105 inline zhematrix::zhematrix(const char* filename)
106  : n(N), array(Array), darray(Darray)
107 {
108 #ifdef CPPL_VERBOSE
109  std::cerr << "# [MARK] zhematrix::zhematrix(const char*)"
110  << std::endl;
111 #endif//CPPL_VERBOSE
112 
113  Array =NULL;
114  Darray =NULL;
115 
117  read(filename);
118 
119 #ifdef CPPL_DEBUG
120  std::cerr << "# [NOTE] zhematrix::zhematrix(const char*) "
121  << "A new matrix at " << Array << " has been made." << std::endl;
122 #endif//CPPL_DEBUG
123 }
124 
128 
129 //============================================================================
131 inline zhematrix::~zhematrix()
132 {
133 #ifdef CPPL_VERBOSE
134  std::cerr << "# [MARK] zhematrix::~zhematrix()"
135  << std::endl;
136 #endif//CPPL_VERBOSE
137 
138 #ifdef CPPL_DEBUG
139  std::cerr << "# [NOTE] zhematrix::~zhematrix() "
140  << "A matrix at " << Array << " is going to be deleted." << std::endl;
141 #endif//CPPL_DEBUG
142 
144  delete [] Array;
145  delete [] Darray;
146 }
std::complex< double > ** Darray
array of pointers of column head addresses
Definition: _zhematrix.hpp:9
(DO NOT USE) Smart-temporary Complex Double-precision Hermitian Matrix Class
Definition: _zhematrix.hpp:3
zhematrix()
Definition: zhematrix-constructor.hpp:3
~zhematrix()
Definition: zhematrix-constructor.hpp:131
friend _zgematrix i(const zhematrix &)
Definition: zhematrix-calc.hpp:20
std::complex< double > * Array
1D Array to store matrix data
Definition: _zhematrix.hpp:8
Complex Double-precision Hermitian Matrix Class [L-type (UPLO=L) Strage].
Definition: zhematrix.hpp:4
long N
matrix column or row size
Definition: _zhematrix.hpp:7
std::complex< double > * Array
1D Array to store vector data
Definition: _zrovector.hpp:8