У меня есть программа C99 среднего размера, которая использует long double
тип (80 бит) для вычисления с плавающей запятой.Я хочу повысить точность с новым расширением GCC 4.6 __float128
.Насколько я понимаю, это математическая программа с 128-битной точностью.
Как мне преобразовать мою программу из классического длинного двойного 80-битного в четырехплавающее 128-битное с программной эмуляцией полной точности?Что мне нужно изменить?Флаги компилятора, источники?
Моя программа считывает значения полной точности с помощью strtod
, выполняя множество различных операций над ними (например, + - * / sin, cos, exp и другие из <math.h>
)и printf
-из них.
PS: несмотря на то, что float128 объявлен только для Fortran (REAL * 16), libquadmath написан на C и использует float128.Я не уверен, что GCC преобразует операции на float128 в библиотеку времени выполнения или нет, и я не уверен, как перейти с long double на __float128 в моих источниках.
PPS: есть документация по языку "C" gccрежим: http://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html
"Компилятор GNU C поддерживает ... 128-битные (TFmode) плавающие типы. Поддержка дополнительных типов включает арифметические операторы: сложение, вычитание, умножение, делим ; унарные арифметические операторы; реляционные операторы; операторы равенства ... __float128 типы поддерживаются на i386, x86_64 "