почему мнимая часть сложных переменных в лапаке не работает? - PullRequest
0 голосов
/ 09 июля 2019

Я использую 64-битный компилятор TDM GCC в Windows

Мои заголовки

#include "lapacke.h"
#include "lapacke_config.h"

У меня есть простой код, подобный этому

lapack_complex_double x = {8.0, 6.0};
printf( "x =  (%6.2f,%6.2f)\n", x.real, x.imag);

Прежде всего, это дает мне следующую ошибку и предупреждение

warning: excess elements in scalar initializer
lapack_complex_double x = {8.0, 6.0};
&
error: request for member 'real' in something, not a structure or union
printf( "x =  (%6.2f,%6.2f)\n", x.real, x.imag);

Я изменил код следующим образом

lapack_complex_double x = {8.0, 6.0};
printf( "x =  (%6.2f,%6.2f)\n", lapack_complex_double_real(x),
lapack_complex_double_imag(x) );

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

x =  (  8.00,  0.00)

Похоже, что предупреждение является важной ошибкой.

1 Ответ

0 голосов
/ 09 июля 2019

Вы правы, что предупреждение является важной ошибкой, оно говорит вам, что вы не инициализируете сложные типы с использованием библиотеки lapacke. Вам необходимо использовать:

x = lapack_make_complex_float(8.0, 6.0);

см. Пример в этом вопросе. Это должно заставить вас работать.

Пример компиляции кода lapacke?

...