Lines Matching full:complex
979 namespace Complex {
981 class complex {
984 constexpr complex(int re = 0, int im = 0) : re(re), im(im) {}
985 constexpr complex(const complex &o) : re(o.re), im(o.im) {}
986 constexpr complex operator-() const { return complex(-re, -im); }
987 friend constexpr complex operator+(const complex &l, const complex &r) {
988 return complex(l.re + r.re, l.im + r.im);
990 friend constexpr complex operator-(const complex &l, const complex &r) {
993 friend constexpr complex operator*(const complex &l, const complex &r) {
994 return complex(l.re * r.re - l.im * r.im, l.re * r.im + l.im * r.re);
996 friend constexpr bool operator==(const complex &l, const complex &r) {
999 constexpr bool operator!=(const complex &r) const {
1006 constexpr complex i = complex(0, 1);
1007 constexpr complex k = (3 + 4*i) * (6 - 4*i);
1008 static_assert(complex(1,0).real() == 1, "");
1009 static_assert(complex(1,0).imag() == 0, "");
1010 static_assert(((complex)1).imag() == 0, "");
1014 static_assert((complex)1 == complex(1), "");
1015 static_assert((complex)1 != complex(0, 1), "");
1016 static_assert(complex(1) == complex(1), "");
1017 static_assert(complex(1) != complex(0, 1), "");
1018 constexpr complex makeComplex(int re, int im) { return complex(re, im); }
1019 static_assert(makeComplex(1,0) == complex(1), "");
1020 static_assert(makeComplex(1,0) != complex(0, 1), "");
1022 class complex_wrap : public complex {
1024 constexpr complex_wrap(int re, int im = 0) : complex(re, im) {}
1025 constexpr complex_wrap(const complex_wrap &o) : complex(o) {}
1028 static_assert((complex_wrap)1 == complex(1), "");
1029 static_assert((complex)1 != complex_wrap(0, 1), "");
1030 static_assert(complex(1) == complex_wrap(1), "");
1031 static_assert(complex_wrap(1) != complex(0, 1), "");
1035 static_assert(makeComplexWrap(1,0) == complex(1), "");
1036 static_assert(makeComplexWrap(1,0) != complex(0, 1), "");