IPCC  1.0
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
KNComplex.cpp
Go to the documentation of this file.
1 
7 #include "stdafx.h"
8 #include "KNComplex.h"
9 #include "CKNGlobal.h"
10 
12 {
13  m_fRealNumber = 0.;
14  m_fImaginaryNumber = 0.;
15 }
16 
18 {
19 }
20 
25 {
26  double fRealNumber = GetRealNumber();
27  double fImginaryNumber = GetImaginaryNumber();
28 
29  return sqrt( fRealNumber*fRealNumber + fImginaryNumber*fImginaryNumber );
30 }
31 
36 {
37  CKNComplex rtnNumber;
38 
39  rtnNumber.SetRealNumber(GetRealNumber());
40  rtnNumber.SetImaginaryNumber(GetImaginaryNumber() * -1);
41 
42  return rtnNumber;
43 }
44 
49 void CKNComplex::GetComplexNumber(double *fReal, double *fImaginary)
50 {
51  *fReal = m_fRealNumber;
52  *fImaginary = m_fImaginaryNumber;
53 }
54 
59 void CKNComplex::SetComplexNumber(double fReal, double fImaginaray)
60 {
61  SetRealNumber(fReal);
62  SetImaginaryNumber(fImaginaray);
63 }
64 
69 {
70  double fReal, fImaginary;
71 
72  fReal = complex.GetRealNumber();
73  m_fRealNumber += fReal;
74  fImaginary = complex.GetImaginaryNumber();
75  m_fImaginaryNumber += fImaginary;
76 }
77 
82 {
83  m_fRealNumber -= complex.GetRealNumber();
85 }
86 
87 void CKNComplex::Division(double fScalar)
88 {
89  m_fRealNumber /= fScalar;
90  m_fImaginaryNumber /= fScalar;
91 }
92 
93 
100 {
101  CKNComplex rtnNumber;
102 
103  rtnNumber.SetComplexNumber(complex1.GetRealNumber() + complex2.GetRealNumber(),
104  complex1.GetImaginaryNumber() + complex2.GetImaginaryNumber());
105  return rtnNumber;
106 }
107 
114 {
115  CKNComplex rtnNumber;
116 
117  rtnNumber.SetComplexNumber(complex1.GetRealNumber() - complex2.GetRealNumber(),
118  complex1.GetImaginaryNumber() - complex2.GetImaginaryNumber());
119  return rtnNumber;
120 }
121 
128 {
129  CKNComplex rtnNumber;
130 
131  double realNumber, imaginaryNumber;
132 
133  realNumber = complex1.GetRealNumber() * complex2.GetRealNumber() - complex1.GetImaginaryNumber() * complex2.GetImaginaryNumber();
134  imaginaryNumber = complex1.GetRealNumber() * complex2.GetImaginaryNumber() + complex1.GetImaginaryNumber() * complex2.GetRealNumber();
135  rtnNumber.SetComplexNumber(realNumber, imaginaryNumber);
136  return rtnNumber;
137 }
138 
145 {
146  CKNComplex rtnNumber;
147 
148  double realNumber, imaginaryNumber, d;
149 
150  d = complex2.GetRealNumber() * complex2.GetRealNumber() + complex2.GetImaginaryNumber() * complex2.GetImaginaryNumber();
151 
152  realNumber = complex1.GetRealNumber() * complex2.GetRealNumber() + complex1.GetImaginaryNumber() * complex2.GetImaginaryNumber();
153  realNumber /= d;
154 
155  imaginaryNumber = complex1.GetImaginaryNumber() * complex2.GetRealNumber() - complex1.GetRealNumber() * complex2.GetImaginaryNumber();
156  imaginaryNumber /= d;
157 
158  rtnNumber.SetComplexNumber(realNumber, imaginaryNumber);
159  return rtnNumber;
160 }
161 
165 void CKNComplex::operator=(const CKNComplex &complexSrc)
166 {
167  SetComplexNumber(complexSrc.GetRealNumber(), complexSrc.GetImaginaryNumber());
168 }
169 
175 {
176  return AddComplex((*this), complexSrc);
177 }
178 
184 {
185  return AddComplex((*this), complexSrc);
186 }
187 
193 {
194  return MinusComplex((*this), complexSrc);
195 }
196 
202 {
203  return MinusComplex((*this), complexSrc);
204 }
205 
211 {
212  CKNComplex rtnValue;
213 
214  return MulltiplyComplex((*this), complexSrc);
215 }
216 
222 {
223  CKNComplex rtnValue;
224 
225  rtnValue.SetComplexNumber(this->GetRealNumber() * fScalar, this->GetImaginaryNumber() * fScalar);
226  return rtnValue;
227 }
228 
234 {
235  CKNComplex rtnValue;
236 
237  return MulltiplyComplex((*this), complexSrc);
238 }
239 
245 {
246  CKNComplex rtnValue;
247 
248  rtnValue.SetComplexNumber(this->GetRealNumber() * fScalar, this->GetImaginaryNumber() * fScalar);
249  return rtnValue;
250 }
251 
257 {
258  CKNComplex rtnValue;
259 
260  return DivideComplex((*this), complexSrc);
261 }
262 
268 {
269  CKNComplex rtnValue;
270 
271  rtnValue.SetComplexNumber(this->GetRealNumber() / fScalar, this->GetImaginaryNumber() / fScalar);
272  return rtnValue;
273 }
274 
280 {
281  CKNComplex rtnValue;
282 
283  return DivideComplex((*this), complexSrc);
284 }
285 
291 {
292  CKNComplex rtnValue;
293 
294  rtnValue.SetComplexNumber(this->GetRealNumber() / fScalar, this->GetImaginaryNumber() / fScalar);
295  return rtnValue;
296 }
297 
302 bool CKNComplex::operator==(double fScalar)
303 {
304  CKNComplex complex;
305 
306  complex.SetComplexNumber(fScalar, 0);
307  return IsSame(*this, complex);
308 }
309 
315 {
316  return IsSame(*this, complexSrc);
317 }
318 
324 bool CKNComplex::IsSame(CKNComplex complex1, CKNComplex complex2)
325 {
326  bool bRtn = false;
327 
328  if (fabs(complex1.GetRealNumber()- complex2.GetRealNumber()) > GENERAL_TOLERANCE)
329  return bRtn;
330 
331  if (fabs(complex1.GetImaginaryNumber()- complex2.GetImaginaryNumber()) < GENERAL_TOLERANCE)
332  bRtn = true;
333 
334  return bRtn;
335 }
void Minus(CKNComplex complex)
Minus operation to this class.
Definition: KNComplex.cpp:81
CKNComplex operator-(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:192
static CKNComplex AddComplex(CKNComplex complex1, CKNComplex complex2)
Adding operation between complex numbers.
Definition: KNComplex.cpp:99
Complex number implementation class.
double GetImaginaryNumber() const
Get imaginary part.
Definition: KNComplex.h:27
CKNComplex operator*=(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:233
void Division(double fScalar)
Scalar division operation.
Definition: KNComplex.cpp:87
double GetRealNumber() const
Get real part.
Definition: KNComplex.h:26
static CKNComplex DivideComplex(CKNComplex complex1, CKNComplex complex2)
Divide operation between complex numbers.
Definition: KNComplex.cpp:144
#define GENERAL_TOLERANCE
General tolerance definition.
Definition: CKNGlobal.h:48
bool operator==(double fScalar)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:302
CKNComplex operator/=(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:279
void GetComplexNumber(double *fReal, double *fImaginary)
Get Complex number real part and imaginary part concurrently.
Definition: KNComplex.cpp:49
CKNComplex operator/(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:256
Common definition for Solver.
static CKNComplex MinusComplex(CKNComplex complex1, CKNComplex complex2)
Minus operation between complex numbers.
Definition: KNComplex.cpp:113
CKNComplex operator-=(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:201
double m_fRealNumber
Real part of complex number.
Definition: KNComplex.h:71
static bool IsSame(CKNComplex complex1, CKNComplex complex2)
Definition: KNComplex.cpp:324
double GetAbsolute()
Get Absolute value of complex number.
Definition: KNComplex.cpp:24
CKNComplex operator+=(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:183
void Add(CKNComplex complex)
Adding operation to this class.
Definition: KNComplex.cpp:68
CKNComplex operator+(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:174
void SetRealNumber(double fRealNumber)
Set real part.
Definition: KNComplex.h:31
This class for complex operation and saving value.
Definition: KNComplex.h:18
static CKNComplex MulltiplyComplex(CKNComplex complex1, CKNComplex complex2)
Multiple operation between complex numbers.
Definition: KNComplex.cpp:127
CKNComplex GetConjugate()
Get conjugate complex number.
Definition: KNComplex.cpp:35
void operator=(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:165
void SetComplexNumber(double fReal, double fImaginaray)
Set Complex number using real part and imaginary part.
Definition: KNComplex.cpp:59
void SetImaginaryNumber(double fImaginaryNumber)
Set imagenary part.
Definition: KNComplex.h:32
double m_fImaginaryNumber
Imaginary part of complex number.
Definition: KNComplex.h:72
CKNComplex operator*(const CKNComplex &complexSrc)
operation overload for subsitution with reference parameter
Definition: KNComplex.cpp:210