Функция cblas_zgemm из библиотеки mkl

Перемножаю одномерные массивы типа complex double. Но не пойму, что ставить на место alpha и beta. Если не при комплексных числах передаются 1.0 и 0.0, то тут не врублюсь. Какие значения передать в функцию? введите сюда описание изображения


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

Автор решения: ivanuchka 007dunduk

Решил методом тыка, оказалось, что нужно было взять указатель на complex<double>alpha и beta и передать их в функцию. Скрины прилагаю 1 метод - стандартный из линейной алгебры, а второй с помощью функции cblas_zgemm(): Код:

complex<double>* method(const complex<double>* A, const complex<double>* B)
{
    complex<double>* C = new complex<double>[size * size];
    complex<double>a(1.0, 0.0);
    complex<double>alpha = &a;
    complex<double>b(0.0, 0.0);
    complex<double>beta = &b;
    cblas_zgemm(CblasRowMajor, CblasNoTrans, CblasTrans, size, size, size, alpha, A, size, B, size, beta, C, size);
    return C;
}

Результат перемножения 2 матриц 10х10

→ Ссылка