diff options
author | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2021-02-28 17:25:57 +0700 |
---|---|---|
committer | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2021-02-28 17:25:57 +0700 |
commit | 67bb27e9f5beec4d8ca0a6c29f045d5f23d6f40f (patch) | |
tree | b677228d71b638dd6e423b037311ef0913ba66e7 /lang/cpptour/mycomplex.cc | |
parent | ee9b8fc921f48dc893808e1c9dbfbef321aa362c (diff) | |
download | cp-67bb27e9f5beec4d8ca0a6c29f045d5f23d6f40f.tar.gz |
[lang] Reorganize language learning archive
Diffstat (limited to 'lang/cpptour/mycomplex.cc')
-rw-r--r-- | lang/cpptour/mycomplex.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lang/cpptour/mycomplex.cc b/lang/cpptour/mycomplex.cc new file mode 100644 index 0000000..fade98f --- /dev/null +++ b/lang/cpptour/mycomplex.cc @@ -0,0 +1,67 @@ +#include "mycomplex.h" + +constexpr double +square (double x) +{ + return x * x; +} + +complex& +operator*= (complex& a, complex b) +{ + double r = a.real() * b.real() - a.imag() * b.imag(); + double i = a.real() * b.imag() + a.imag() * b.real(); + a.real(r); + a.imag(i); + return a; +} + +complex& +operator/= (complex& a, complex b) +{ + double d = square(b.real()) + square(b.imag()); + complex c {b.real() / d, -b.imag() / d}; + return a *= c; +} + +complex +operator+ (complex a, complex b) +{ + return a += b; +} + +complex +operator- (complex a, complex b) +{ + return a -= b; +} + +complex +operator- (complex a) +{ + return {-a.real(), -a.imag()}; +} + +complex +operator* (complex a, complex b) +{ + return a *= b; +} + +complex +operator/ (complex a, complex b) +{ + return a /= b; +} + +bool +operator== (complex a, complex b) +{ + return a.real() == b.real() && a.imag() == b.imag(); +} + +bool +operator!= (complex a, complex b) +{ + return !(a == b); +} |