Я пытаюсь использовать библиотеку quadmath в GCC. У меня есть сложное двойное значение, которое я хотел бы привести к соответствующему квадратичному комплексному числу, __complex128
. Ниже приводится минимальный (не) -рабочая пример:Typecasting std :: complex <double> to __complex128
#include <quadmath.h>
#include <complex>
#include <stdio.h>
using namespace std::complex_literals;
int main(){
std::complex<double> x = 1 + 2i;
std::printf("x = %5.5g + %5.5g\n", x.real(), x.imag());
__complex128 y = 2+2i;
y = x;
return 0;
}
При попытке компиляции этого кода
g++ test.cpp -lquadmath -o test
я получаю следующее сообщение об ошибке:
test.cpp:10:6: error: cannot convert 'std::complex<double>' to '__complex128 {aka __complex__ __float128}' in assignment
y = x;
Если я пытаюсь заменить линия назначения с явным литым типом,
y = (__complex128) x;
я получаю подобную ошибку
test.cpp:10:21: error: invalid cast from type 'std::complex<double>' to type '__complex128 {aka __complex__ __float128}'
y = (__complex128) x;
Как один новообращенный между этими двумя типами?
Спасибо! Это сделал трюк. Я не знал о расширениях __real__ и __imag__. Острота. – Jeff