Имеется ли в C++ литера для мнимой еденицы?

Пишу программу для генератора сигналов на Qt C++. Нужно создать сигнал по средствам exp, т.е привести к виду y = A * exp^(i(phi)), но я не знаю как записать мнимую единицу. Y в комплексном виде объявил std::complex y ;. На нынешнем этапе разработки записываю сигнал через косинус. Пример генерации сигнала :

void MainWindow::on_pushButton_clicked() //ЛЧМ импульс
{
    Vector_clear();
         for(X = xBegin_2 ; X<= xEnd_2; X += h)
         {
             x_rab = A*cos((X*0)+(2*pi*d_f*(X*X))/(2*xEnd_2));
             Vector_push_back(x_rab);
         }
         draw_graph();
         for(X = xEnd_2 ; X<= new_T; X += h)
         {
             x_rab = 0;
             Vector_push_back(x_rab);
         }
        draw_graph();
}
void MainWindow::Vector_clear()
{
    ui->widget->clearGraphs();
    x.clear();
    y.clear();
}

double MainWindow::Vector_push_back(double x_rab)
{
    x.append(X);
    y.append(x_rab);
    return 0;
}

Ответы (2 шт):

Автор решения: Harry

Начните с #include<complex>.

А работая с комплексными числами, вы можете использовать соответствующие литералы и писать что-то типа

std::complex<double> c = 1.0 + 1i;

Впрочем, и без литералов можно записать что-то типа

std::complex<double> uno{0.0,1.0};
→ Ссылка
Автор решения: Chorkov

Если есть поддержка C++14, то можно использовать суффикс i

#include <complex>
using namespace std::complex_literals;
auto value = std::exp( 1. + 2.i  );

Для более ранних версий, можно ввести глобальную константу:

constexpr std::complex<double> _i = { 0, 1 }; // или const для c++ < 11
auto value2 = std::exp( 1. + 2.*_i  );

Или, вводить комплексные числа непосредственно через конструктор std::complex с двумя аргументами. Тогда отдельная константа не понадобится.

auto value3= std::exp( std::complex<double>(1., 2.) );
→ Ссылка