У меня есть программа 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 "