Как использовать Gcc 4.6.0 libquadmath и __float128 на x86 и x86_64

У меня есть программа C99 среднего размера, которая использует тип long double (80 бит) для вычислений с плавающей запятой. Я хочу повысить точность с помощью нового расширения GCC 4.6 __ float128 . Как я понял, это математическая модель с 128-битной точностью, имитируемая программным обеспечением.

Как мне преобразовать мою программу из классического длинного двойного 80-битного числа в четырехмерное число с плавающей запятой 128 бит с программной эмуляцией полной точности? Что мне нужно изменить? Флаги компилятора, источники?

Моя программа считывает значения полной точности с помощью strtod , выполняя над ними множество различных операций (например, + - * / sin, cos, exp и другие из ) и printf -ing из них.

PS: несмотря на то, что float128 объявлен только для Fortran (REAL * 16), libquadmath написана на C и использует float128. Я не уверен, будет ли GCC преобразовывать операции с float128 в библиотеку времени выполнения или нет, и я не уверен, как перейти с long double на __float128 в моих источниках.

PPS: Есть документация по режиму gcc на языке "C": http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html

«Компилятор GNU C поддерживает ... 128-битные (TFmode) плавающие типы. Поддержка дополнительных типов включает арифметические операторы: сложить, вычесть, умножить,разделить ; унарные арифметические операторы; реляционные операторы; операторы равенства ... Типы __float128 поддерживаются на i386, x86_64 "

14
задан Nico Schlömer 12 November 2019 в 15:32
поделиться