Справочник по C/C++
Комплексные числа в языке C++

Заголовок <complex> определяет класс complex, который представляет комплексные числа. Он также определяет ряд функций и операторов, которые работают с объектами типа complex.

Спецификация шаблона для класса complex имеет следующий вид.

template <class T> class complex

Здесь элемент Т задает тип, используемый для хранения компонентов комплексного числа. Существуют три встроенные специализации класса complex.

class complex<float>
class complex<double>
class complex<long double>

Класс complex имеет следующие конструкторы.

complex(const Т &real = T(), const Т = &imaginary = T());
complex(const complex &ob);
template <class T1> complex(const complex<T1> &ob);

Первая форма конструктора создает объект класса complex с вещественной составляющей(real) и мнимой частью(imaginary). По умолчанию эти значения, если они не заданы, устанавливаются равными нулю. Вторая форма создает копию комплексного числа ob. Третья создает комплексный объект из объекта ob.

Для комплексных объектов определены следующие операции.

+ - * /
+=  -=  *=  /=
= == !=

Операторы, не выполняющие операцию присваивания, перегружаются для следующих трех видов операций: для операций, в которых объект класса complex участвует слева, а скалярный объект справа; затем для операций, в которых скалярный объект участвует слева, а объект класса complex справа, и наконец, для операций с двумя объектами класса complex. Например, разрешены следующие типы операций.

complex_ob + скаляр
скаляр + complex_ob
complex_ob + complex_ob

Операции, включающие скалярные величины, оказывают воздействие только на вещественную составляющую.

В классе complex определены две функции-члена: real() и imag().

Т real() const;
Т imag() const;

Функция real() возвращает вещественную составляющую вызывающего объекта, а функция imag() - мнимую. Для объектов класса complex также определены следующие функции.

Функция-член Назначение
template <class T> Т abs(const complex<T> &ob); Возвращает абсолютное значение объекта ob
template <class T> Т arg(const complex<T> &ob); Возвращает аргумент комплексного объекта ob
template <class T> complex<T> conj(const complex<T> &ob); Возвращает сопряженную величину объекта ob
template <class T> complex<T> cos(const complex<T> &ob); Возвращает значение косинуса объекта ob
template <class T> complex<T> cosh(const complex<T> &ob); Возвращает значение гиперболического косинуса объекта ob
template <class T> complex<T> exp(const complex<T> &ob); Возвращает значение eob
template <class T> Т imag(const complex<T> &ob); Возвращает мнимую составляющую объекта ob
template <class T> complex<T> log(const complex<T> bob); Возвращает значение натурального логарифма объекта ob
template <class T> complex<T> logl0(const complex<T> &ob); Возвращает значение логарифма по основанию 10 объекта ob
template <class T> Т norm(const complex<T> &ob); Возвращает значение модуля объекта ob
template <class T> complex<T> polar(const Т &v, const Т &theta=0); Возвращает комплексное число, которое задано модулем v и аргументом theta
template <class T> complex<T> pow(const complex<T> &b, int e); Возвращает значение be
template <class T> complex<T> pow(const complex<T> &b, const Т &е); Возвращает значение be
template <class T> complex<T> pow(const complex<T> &b, const complex<T> &e); Возвращает значение be
template <class T> complex<T> pow(const Т &b, const complex<T> &e); Возвращает значение be
template <class T> Т real(const complex<T> &ob); Возвращает вещественную составляющую объекта ob
template <class T> complex<T> sin(const complex<T> &ob); Возвращает значение синуса объекта ob
template <class T> complex<T> sinh(const complex<T> &ob); Возвращает значение гиперболического синуса объекта ob квадратного корня из объекта оЬ
template <class T> complex<T> sqrt(const complex<T> &ob); Возвращает значение квадратного корня из объекта оЬ
template <class T> complex<T> tan(const complex<T> &ob); Возвращает значение тангенса объекта оЬ
template <class T> complex<T> tanh(const complex<T> &ob); Возвращает значение гиперболического тангенса объекта оЬ