Facebook
From Fiona, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 126
  1. #include "complex.h"
  2.  
  3. std::ostream& operator<< (std::ostream& cout, Complex c){
  4.   return cout << "[" << c.re << "," << c.im << "]";
  5. }
  6.  
  7. std::istream& operator>> (std::istream& cin, Complex c){
  8.   char x = '[';
  9.   char y = ',';
  10.   char z = ']';
  11.   return cin >> x >> c.re  >> y >> c.im >> z;
  12. }
  13.  
  14. Complex operator+ (Complex& a, Complex& b){
  15.   double re;
  16.   double im;
  17.   re = a.re + b.re;
  18.   im = a.im + b.im;
  19.   Complex result;
  20.   result.re = re;
  21.   result.im = im;
  22.   return result;
  23. }
  24.  
  25. Complex operator- (Complex& a, Complex& b){
  26.   double re;
  27.   double im;
  28.   re = a.re - b.re;
  29.   im = a.im - b.im;
  30.   Complex result;
  31.   result.re = re;
  32.   result.im = im;
  33.   return result;
  34. }
  35.  
  36. Complex operator* (Complex& a, Complex& b){
  37.   double re;
  38.   double im;
  39.   re = a.re*b.re - a.im*b.im;
  40.   im = a.re*b.im + a.im*b.re;
  41.   Complex result;
  42.   result.re = re;
  43.   result.im = im;
  44.   return result;
  45. }
  46.  
  47. Complex operator-(Complex a){
  48.   a.re = -a.re;
  49.   a.im = -a.im;
  50.   return a;
  51. }
  52.  
  53. Complex& conjugation(Complex& a){
  54.   a.im = -a.im;
  55.   return a;
  56. }
  57.  
  58. Complex operator/ (Complex& a, Complex& b){
  59.   Complex nu1;
  60.   Complex nu2;
  61.   nu2.re = b.re*b.re + b.im*b.im;
  62.   nu2.im = 0;
  63.   nu1.re = a.re*b.re + a.im*b.im;
  64.   nu1.im = a.im*b.re - a.re*b.im;
  65.   double devide1 = 1/(nu2.re);
  66.   Complex devide2;
  67.   devide2.re = devide1;
  68.   devide2.im = 0;
  69.   return nu1*devide2;
  70. }
  71.  
  72. bool operator== (Complex& a, Complex& b){
  73.   if(a.re == b.re && a.im == b.im)
  74.     return true;
  75.   else
  76.     return false;
  77. }
  78.  
  79. bool operator!= (Complex& a, Complex& b){
  80.   if(a.re == b.re && a.im == b.im)
  81.     return false;
  82.   else
  83.     return true;
  84. }