imag
return os << '(' << real (x) << ',' << imag (x) << ')';
FLOAT ai = abs (imag (y));
t = real (y) / imag (y);
d = imag (y) * (1 + t*t);
nr = (real (x) * t + imag (x)) / d;
ni = (imag (x) * t - real (x)) / d;
t = imag (y) / real (y);
nr = (real (x) + imag (x) * t) / d;
ni = (imag (x) - real (x) * t) / d;
FLOAT ai = abs (imag (y));
t = real (y) / imag (y);
d = imag (y) * (1 + t*t);
t = imag (y) / real (y);
ni = imag (x) / nr / 2;
if (imag (x) < 0)
nr = imag (x) / ni / 2;
return complex<FLOAT> (cos (real (x)) * cosh (imag (x)),
- sin (real (x)) * sinh (imag (x)));
return complex<FLOAT> (cosh (real (x)) * cos (imag (x)),
sinh (real (x)) * sin (imag (x)));
return polar (FLOAT (exp (real (x))), imag (x));
return polar (FLOAT (exp (logr * real (y) - imag (y) * t)),
FLOAT (imag (y) * logr + real (y) * t));
return complex<FLOAT> (sin (real (x)) * cosh (imag (x)),
cos (real (x)) * sinh (imag (x)));
return complex<FLOAT> (sinh (real (x)) * cos (imag (x)),
cosh (real (x)) * sin (imag (x)));
imag (const complex<_FLT>& x) __attribute__ ((const));
return x.imag ();
return complex<_FLT> (real (x) + real (y), imag (x) + imag (y));
return complex<_FLT> (real (x) + y, imag (x));
return complex<_FLT> (x + real (y), imag (y));
return complex<_FLT> (real (x) - real (y), imag (x) - imag (y));
return complex<_FLT> (real (x) - y, imag (x));
return complex<_FLT> (x - real (y), - imag (y));
return complex<_FLT> (real (x) * real (y) - imag (x) * imag (y),
real (x) * imag (y) + imag (x) * real (y));
return complex<_FLT> (real (x) * y, imag (x) * y);
return complex<_FLT> (x * real (y), x * imag (y));
return complex<_FLT> (real (x) / y, imag (x) / y);
return complex<_FLT> (-real (x), -imag (x));
return real (x) == real (y) && imag (x) == imag (y);
return real (x) == y && imag (x) == 0;
return x == real (y) && imag (y) == 0;
return real (x) != real (y) || imag (x) != imag (y);
return real (x) != y || imag (x) != 0;
return x != real (y) || imag (y) != 0;
return hypot (real (x), imag (x));
return atan2 (imag (x), real (x));
return complex<_FLT> (real (x), -imag (x));
return real (x) * real (x) + imag (x) * imag (x);
_FLT imag () const { return im; }
complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { }
double imag () const { return im; }
: re (r.real ()), im (r.imag ())
float imag () const { return im; }
complex (const complex<float>& r): re (r.real ()), im (r.imag ()) { }
complex (const complex<double>& r): re (r.real ()), im (r.imag ()) { }
long double imag () const { return im; }
: re (r.real ()), im (r.imag ())
: re (r.real ()), im (r.imag ())