Advertisement
Dzham

Untitled

Feb 16th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. #include <cmath>
  2. using namespace std;
  3.  
  4. class Complex {
  5. private:
  6. double R;
  7. double I;
  8.  
  9. public:
  10. Complex(double Re, double Im) {
  11. this->R = Re;
  12. this->I = Im;
  13. }
  14.  
  15. Complex(double Re) {
  16. this->R = Re;
  17. this->I = 0;
  18. }
  19.  
  20. double Re() const {
  21. return R;
  22. }
  23.  
  24. double Im() const {
  25. return I;
  26. }
  27.  
  28. Complex operator + (const Complex& com) const {
  29. Complex result(R + com.Re(), I + com.Im());
  30. return result;
  31. }
  32.  
  33. template <typename num>
  34. Complex operator + (num com) const {
  35. Complex result(R + com, I);
  36. return result;
  37. }
  38.  
  39. Complex operator + () const {
  40. Complex result(R, I);
  41. return result;
  42. }
  43.  
  44. Complex operator - (const Complex& com) const {
  45. Complex result(R - com.Re(), I - com.Im());
  46. return result;
  47. }
  48.  
  49. template <typename num>
  50. Complex operator - (num com) const {
  51. Complex result(R - com, I);
  52. return result;
  53. }
  54.  
  55. Complex operator - () const {
  56. Complex result(-R, -I);
  57. return result;
  58. }
  59.  
  60. Complex operator * (const Complex& com) const {
  61. Complex result(R * com.Re() - I * com.Im(), R * com.Im() + I * com.Re());
  62. return result;
  63. }
  64.  
  65. template <typename num>
  66. Complex operator * (num com) const {
  67. Complex result(R * com, I * com);
  68. return result;
  69. }
  70.  
  71. Complex operator / (const Complex& com) const {
  72. Complex result((R * com.Re() + I * com.Im()) / (exp(2 * log(com.Re())) +
  73. exp(2 * log(com.Im()))), (I * com.Re() - R * com.Im()) / (exp(2 * log(com.Re())) +
  74. exp(2 * log(com.Im()))));
  75. return result;
  76. }
  77.  
  78. template <typename num>
  79. Complex operator / (num com) const {
  80. Complex result(R / com, I / com);
  81. return result;
  82. }
  83.  
  84. bool operator == (const Complex& com) const {
  85. return ((R == com.Re()) && (I == com.Im()));
  86. }
  87.  
  88. bool operator != (const Complex& com) const {
  89. return ((R != com.Re()) || (I != com.Im()));
  90. }
  91. };
  92.  
  93. double abs(const Complex& com) {
  94. return exp(0.5 * log(exp(2 * log(com.Re())) + exp(2 * log(com.Im()))));
  95. }
  96.  
  97. template <typename num>
  98. Complex operator + (num n, const Complex& com) {
  99. return com + n;
  100. }
  101.  
  102. template <typename num>
  103. Complex operator * (num n, const Complex& com) {
  104. return com * n;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement