My Project
zcovector-_zcovector.hpp
1 //=============================================================================
4 {
5 #ifdef CPPL_VERBOSE
6  std::cerr << "# [MARK] zcovector::operator=(const _zcovector&)"
7  << std::endl;
8 #endif//CPPL_VERBOSE
9 
10  shallow_copy(vec);
11  return *this;
12 }
13 
17 
18 //=============================================================================
21 {
22 #ifdef CPPL_VERBOSE
23  std::cerr << "# [MARK] zcovector::operator+=(const _zcovector&)"
24  << std::endl;
25 #endif//CPPL_VERBOSE
26 
27 #ifdef CPPL_DEBUG
28  if( L!=vec.L ){
29  std::cerr << "[ERROR] zcovector::operator+=(const _zcovector&)" << std::endl
30  << "These two vectors can not make a sumation." << std::endl
31  << "Your input was (" << L << ") += (" << vec.L << ")."
32  << std::endl;
33  exit(1);
34  }
35 #endif//CPPL_DEBUG
36 
37  for(long i=0; i<L; i++){ Array[i]+=vec.Array[i]; }
38 
39  vec.destroy();
40  return *this;
41 }
42 
43 //=============================================================================
46 {
47 #ifdef CPPL_VERBOSE
48  std::cerr << "# [MARK] zcovector::operator-=(const _zcovector&)"
49  << std::endl;
50 #endif//CPPL_VERBOSE
51 
52 #ifdef CPPL_DEBUG
53  if( L!=vec.L ){
54  std::cerr << "[ERROR] zcovector::operator-=(const _zcovector&)" << std::endl
55  << "These two vectors can not make a subtraction." << std::endl
56  << "Your input was (" << L << ") -= (" << vec.L << ")."
57  << std::endl;
58  exit(1);
59  }
60 #endif//CPPL_DEBUG
61 
62  for(long i=0; i<L; i++){ Array[i]-=vec.Array[i]; }
63 
64  vec.destroy();
65  return *this;
66 }
67 
71 
72 //=============================================================================
74 inline _zcovector operator+(const zcovector& vecA, const _zcovector& vecB)
75 {
76 #ifdef CPPL_VERBOSE
77  std::cerr << "# [MARK] operator+(const zcovector&, const _zcovector&)"
78  << std::endl;
79 #endif//CPPL_VERBOSE
80 
81 #ifdef CPPL_DEBUG
82  if(vecA.L!=vecB.L){
83  std::cerr << "[ERROR] operator+(const zcovector&, const _zcovector&)"
84  << std::endl
85  << "These two vectors can not make a sumation." << std::endl
86  << "Your input was (" << vecA.L << ") + (" << vecB.L << ")."
87  << std::endl;
88  exit(1);
89  }
90 #endif//CPPL_DEBUG
91 
92  for(long i=0; i<vecA.L; i++){ vecB.Array[i]+=vecA.Array[i]; }
93 
94  return vecB;
95 }
96 
97 //=============================================================================
99 inline _zcovector operator-(const zcovector& vecA, const _zcovector& vecB)
100 {
101 #ifdef CPPL_VERBOSE
102  std::cerr << "# [MARK] operator-(const zcovector&, const _zcovector&)"
103  << std::endl;
104 #endif//CPPL_VERBOSE
105 
106 #ifdef CPPL_DEBUG
107  if(vecA.L!=vecB.L){
108  std::cerr << "[ERROR] operator-(const zcovector&, const _zcovector&)"
109  << std::endl
110  << "These two vectors can not make a subtraction." << std::endl
111  << "Your input was (" << vecA.L << ") - (" << vecB.L << ")."
112  << std::endl;
113  exit(1);
114  }
115 #endif//CPPL_DEBUG
116 
117  for(long i=0; i<vecA.L; i++){
118  vecB.Array[i] =vecA.Array[i]-vecB.Array[i];
119  }
120 
121  return vecB;
122 }
123 
124 //=============================================================================
126 inline std::complex<double> operator%(const zcovector& vecA, const _zcovector& vecB)
127 {
128 #ifdef CPPL_VERBOSE
129  std::cerr << "# [MARK] operator%(const zcovector&, const _zcovector&)"
130  << std::endl;
131 #endif//CPPL_VERBOSE
132 
133 #ifdef CPPL_DEBUG
134  if(vecA.L!=vecB.L){
135  std::cerr << "[ERROR] operator%(const zcovector&, const _zcovector&)"
136  << std::endl
137  << "These two vectors can not make a dot product." << std::endl
138  << "Your input was (" << vecA.L << ") % (" << vecB.L << ")."
139  << std::endl;
140  exit(1);
141  }
142 #endif//CPPL_DEBUG
143 
144  std::complex<double> val( zdotu_( vecA.L, vecA.Array, 1, vecB.Array, 1 ) );
145 
146  vecB.destroy();
147  return val;
148 }
friend double operator%(const drovector &, const _drovector &)
Definition: drovector-_drovector.hpp:132
zcovector & operator=(const zcovector &)
Definition: zcovector-zcovector.hpp:3
double * Array
1D Array to store vector data
Definition: _drovector.hpp:8
void destroy() const
Definition: _zcovector-misc.hpp:3
void shallow_copy(const _zcovector &)
Definition: zcovector-misc.hpp:73
zcovector & operator-=(const zcovector &)
Definition: zcovector-zcovector.hpp:46
friend _drovector operator-(const _drovector &)
Definition: _drovector-unary.hpp:15
std::complex< double > * Array
1D Array to store vector data
Definition: _zcovector.hpp:8
long L
vector size
Definition: _drovector.hpp:7
Complex Double-precision Column Vector Class.
Definition: zcovector.hpp:3
(DO NOT USE) Smart-temporary Complex Double-precision Column Vector Class
Definition: _zcovector.hpp:3
friend const _drovector & operator+(const _drovector &)
Definition: _drovector-unary.hpp:3
long L
vector size
Definition: _zcovector.hpp:7
zcovector & operator+=(const zcovector &)
Definition: zcovector-zcovector.hpp:22