我有中等大小的 C99 程序,它使用long double
类型(80 位)进行浮点计算。我想通过新的 GCC 4.6 扩展来提高精度__float128
。据我所知,它是一个软件模拟的 128 位精度数学。
我应该如何将我的程序从 80 位的经典长双精度浮点数转换为 128 位的四浮点数,并使用全精度的软件仿真?我需要改变什么?编译器标志,来源?
我的程序使用 读取全精度值strtod
,对它们执行许多不同的操作(如 +-*/ sin、cos、exp 和其他 from <math.h>
)并对printf
它们进行 -ing。
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"