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