-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcomplex.cpp
More file actions
42 lines (35 loc) · 2.15 KB
/
complex.cpp
File metadata and controls
42 lines (35 loc) · 2.15 KB
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
#include <cmath>
#include <cstdio>
#include "element.h"
using namespace std;
complex::complex():x(0.0), y(0.0){}
complex::complex(double _x, double _y):x(_x), y(_y){}
complex::complex(double _x):x(_x), y(0.0){}
complex::complex(int _x):x(_x), y(0.0){}
void complex::set(double _x, double _y){ x = _x; y = _y; }
void complex::setX(double _x){ x = _x; }
void complex::setY(double _y){ y = _y; }
double complex::getX()const{ return x; }
double complex::getY()const{ return y; }
complex complex::addtion(complex c){ return complex(x + c.x, y + c.y); }
complex complex::substraction(complex c){ return complex(x - c.x, y - c.y); }
complex complex::production(complex c){ return complex((x*c.x - y*c.y), (x*c.y + y*c.x)); }
complex complex::division(complex c){ double sqr = c.abs2(); return complex(((x*c.x + y*c.y)/sqr), ((y*c.x - x*c.y)/sqr)); }
complex complex::reciprocal(){ double sqr = x*x + y*y; return complex(x/sqr, -y/sqr); }
complex complex::negative(){ return complex(-x, -y); }
complex complex::normal(){ return complex(x/abs(), y/abs()); }
double complex::abs()const{ return sqrt(x*x + y*y); }
double complex::abs2()const{ return x*x + y*y; }
double complex::arg()const{ return atan2(y,x); }
complex complex::conj(){ return complex(x, -y); }
void complex::print(){ printf("(%f, %f)\n", x, y); }
complex complex::operator -(){ return complex(-x, -y); }
complex complex::operator +(const complex &c){ return complex(x + c.x, y + c.y); }
complex complex::operator -(const complex &c){ return complex(x - c.x, y - c.y); }
complex complex::operator *(const complex &c){ return complex((x*c.x - y*c.y), (x*c.y + y*c.x)); }
complex complex::operator /(const complex &c){ double sqr = c.abs2(); return complex(((x*c.x + y*c.y)/sqr), ((y*c.x - x*c.y)/sqr)); }
complex operator +(double a, const complex &b){ return complex(a + b.x, b.y); }
complex operator -(double a, const complex &b){ return complex(a - b.x, -b.y); }
complex operator *(double a, const complex &b){ return complex(a*b.x, a*b.y); }
complex operator /(double a, const complex &b){ double sqr = b.abs2(); return complex((a*b.x/sqr), (-a*b.y)/sqr); }
//bool complex::operator ==(const complex &c){ return (x == c.x) && (y == c.y); }