Умножение вещественной матрицы на комплексный вектор с использованием BLAS - PullRequest
4 голосов
/ 01 октября 2011

Как я могу использовать Blas для умножения реальной матрицы на сложный вектор? Когда я использую такие функции, как ccsrgemv (), я получаю ошибки несоответствия типов?

error: argument of type "float *" is incompatible with parameter of type "std::complex<float> *"

1 Ответ

4 голосов
/ 01 октября 2011

Используйте два умножения матрицы на вектор (A * (x + iy) = A * x + i A * y).Точнее, рассматривайте ваш сложный вектор как два запутанных действительных вектора с шагом 2. BLAS позволяет вам это делать.

ОБНОВЛЕНИЕ : на самом деле, я не заметил, что вы делали Sparse BLAS.Для dgemv мой трюк работает, а для csrgemv - нет.Боюсь, вы должны поддерживать реальную и мнимую части отдельно.

...