Я обнаружил, что могу записать свой реальный массив значений типа double напрямую в действительные и мнимые части массива MKL_Complex16, используя cblas_dcopy.
double *real = (double*) mkl_malloc(N*sizeof(double), 64);
double *imag = (double*) mkl_malloc(N*sizeof(double), 64);
MKL_Complex16* z = (MKL_Complex16*) mkl_malloc(N*sizeof(MKL_Complex16), 64);
// Fill real and imag arrays with your data, then write them to the complex array
cblas_dcopy(N, real, 1, &(z[0].real), 2);
cblas_dcopy(N, imag, 1, &(z[0].imag), 2);
Это работает на Intel Xeon Phi.Если метод используется, то вы можете комбинировать двойные массивы и массивы MKL_Complex16 для использования с MKL.Это позволило мне вычислить формулу a = x * exp (iy), как я хотел.Я надеюсь, что это поможет кому-то еще в будущем.