From 67bb27e9f5beec4d8ca0a6c29f045d5f23d6f40f Mon Sep 17 00:00:00 2001 From: Nguyễn Gia Phong Date: Sun, 28 Feb 2021 17:25:57 +0700 Subject: [lang] Reorganize language learning archive --- lang/cpptour/mycomplex.cc | 67 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 lang/cpptour/mycomplex.cc (limited to 'lang/cpptour/mycomplex.cc') 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); +} -- cgit 1.4.1