The C++ standard library can handle complex numbers. Complex numbers may be used by including
<complex>. The
class std::complex is defined as a template, allowing complex numbers to use different value types, such as
float and
double.
You can construe complex numbers using the real and imaginary components; you can also construe them using the polar() function. For example:
std::complex<float> cf(1); // 1 + 0i
std::complex<double> cd(2, 3); // 2 + 3i
std::complex<long double> cld =
std::polar<long double>(4, 5); // 4 e^(5i)
Obtain the magnitude, argument, and square of the magnitude using the
abs(), arg(), and
norm() member functions. For example:
std::cout << cd.abs() << ' '
<< cd.arg() << ' '
<< cd.norm() << std::endl;
Read complex numbers from
std::cin and write them to
std::cout. For example:
std::cin >> cd;
std::cout << cd << std::endl;
Complex numbers may be in the following three formats for
std::cin:
- 1 (meaning 1 + 0i)
- (2) (meaning 2 + 0i)
- (3,4) (meaning 3 + 4i)
Ignore any whitespace during input. Complex numbers are always output in the third format by
std::cout.
Arithmetic operators such as +, -, *=, and /= work as expected for complex numbers. So do transcendental functions such as sin, cosh, exp, log, pow, and sqrt.