Tôi đang cố gắng sử dụng thư viện quadmath trong GCC. Tôi có một giá trị gấp đôi phức tạp mà tôi muốn được nhập vào số phức phức hợp chính xác bốn, __complex128
. Sau đây là một tối thiểu (không) -working dụ:Tạo kiểu chữ 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;
}
Khi tôi cố gắng biên soạn mã này với
g++ test.cpp -lquadmath -o test
tôi nhận được lỗi sau:
test.cpp:10:6: error: cannot convert 'std::complex<double>' to '__complex128 {aka __complex__ __float128}' in assignment
y = x;
Nếu tôi cố gắng thay thế đường phân công có loại dàn diễn viên rõ ràng,
y = (__complex128) x;
Tôi gặp lỗi tương tự
test.cpp:10:21: error: invalid cast from type 'std::complex<double>' to type '__complex128 {aka __complex__ __float128}'
y = (__complex128) x;
Làm cách nào để chuyển đổi giữa hai loại này?
Cảm ơn! Điều đó đã làm các trick. Tôi không biết về các tiện ích mở rộng __real__ và __imag__. Tiện lợi. – Jeff