Преобразование типов 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)
Другие вопросы по тегам