Преобразование типов C++, quadmath
В библиотеке quadmath не так много документации, и я хотел бы выполнить два простых действия, используя __complex128
тип.
- Есть ли способ легко напечатать значение внутри переменной этого типа?
- Как я могу преобразовать обратно переменную из
__complex128
вcomplex<double>
или даже сингл__float128
реальные и мнимые части удваиваются?
Второй вопрос более важен, потому что, если я могу преобразовать его, я могу просто использовать cout
!
РЕДАКТИРОВАТЬ: Все сводится к следующему вопросу. Как мне конвертировать __float128
в double
?
2 ответа
Решение
Преобразование __float128
к double
не требует ничего особенного:
const __float128 x{};
const double y = x;
Вы могли бы хотеть static_cast
для ясности (и меньше предупреждений).
Построение std::complex<T>
от __complex128
тоже не сложно
auto bar(__complex128 y)
{
return std::complex<double>{
static_cast<double>(__real__ y),
static_cast<double>(__imag__ y)
};
}
Попробуй это:
std::complex<double> x;
__complex128 y;
x.real(__real__ y)
x.imag(__imag__ y)