-
Notifications
You must be signed in to change notification settings - Fork 6
/
wavecomplex.cc
82 lines (67 loc) · 2.34 KB
/
wavecomplex.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/*-------------------------------------------------------
* Package: Wavelet Analysis Tool
* complex class
* File name: wavecomplex.cc
*-------------------------------------------------------
*/
#include <time.h>
#include <iostream>
#include "wavecomplex.hh"
//: constructors
wavecomplex::wavecomplex()
{ re = im = 0.; }
wavecomplex::wavecomplex(double a, double b)
{ re = a; im = b; }
//: copy constructor
wavecomplex::wavecomplex(const wavecomplex& a)
{ *this = a; }
//: destructor
wavecomplex::~wavecomplex() {}
//: operators
wavecomplex& wavecomplex::operator=(const wavecomplex& a)
{ re=a.real(); im=a.imag(); return *this; }
wavecomplex& wavecomplex::operator+=(const wavecomplex &a)
{ re+=a.real(); im+=a.imag(); return *this; }
wavecomplex& wavecomplex::operator-=(const wavecomplex &a)
{ re-=a.real(); im-=a.imag(); return *this; }
wavecomplex& wavecomplex::operator*=(const wavecomplex &a)
{
double x = re*a.real()-im*a.imag();
im = re*a.imag()+im*a.real();
re = x;
return *this;
}
wavecomplex& wavecomplex::operator/=(const wavecomplex &a)
{
double x = a.abs();
double y = (re*a.real()+im*a.imag())/x;
im = (im*a.real()-re*a.imag())/x;
re = y;
return *this;
}
wavecomplex wavecomplex::operator+(const wavecomplex &a)
{ wavecomplex z = *this; z+=a; return z; }
wavecomplex wavecomplex::operator-(const wavecomplex &a)
{ wavecomplex z = *this; z-=a; return z; }
wavecomplex wavecomplex::operator*(const wavecomplex &a)
{ wavecomplex z = *this; z*=a; return z; }
wavecomplex wavecomplex::operator/(const wavecomplex &a)
{ wavecomplex z = *this; z/=a; return z; }
wavecomplex& wavecomplex::operator=(const double c)
{ re=c; im=0.; return *this; }
wavecomplex& wavecomplex::operator+=(const double c)
{ re+=c; return *this; }
wavecomplex& wavecomplex::operator-=(const double c)
{ re-=c; return *this;}
wavecomplex& wavecomplex::operator*=(const double c)
{ re*=c; im*=c; return *this;}
wavecomplex& wavecomplex::operator/=(const double c)
{ re/=c; im/=c; return *this;}
wavecomplex wavecomplex::operator+(const double c)
{ wavecomplex z = *this; z+=c; return z;}
wavecomplex wavecomplex::operator-(const double c)
{ wavecomplex z = *this; z-=c; return z;}
wavecomplex wavecomplex::operator*(const double c)
{ wavecomplex z = *this; z*=c; return z;}
wavecomplex wavecomplex::operator/(const double c)
{ wavecomplex z = *this; z/=c; return z;}