As an extension, GNU C supports additional floating types, __float80
and __float128
to support 80-bit (XFmode
) and 128-bit (TFmode
) floating types. Support for additional types includes the arithmetic operators: add, subtract, multiply, divide; unary arithmetic operators; relational operators; equality operators; and conversions to and from integer and other floating types. Use a suffix ‘w
’ or ‘W
’ in a literal constant of type __float80
or type __ibm128
. Use a suffix ‘q
’ or ‘Q
’ for _float128
.
On the i386, x86_64, IA-64, and HP-UX targets, you can declare complex types using the corresponding internal complex type, XCmode
for __float80
type and TCmode
for __float128
type:
typedef _Complex float __attribute__((mode(TC))) _Complex128; typedef _Complex float __attribute__((mode(XC))) _Complex80;
In order to use __float128
and __ibm128
on PowerPC Linux systems, you must use the -mfloat128
. It is expected in future versions of GCC that __float128
will be enabled automatically. In addition, there are currently problems in using the complex __float128
type. When these problems are fixed, you would use the following syntax to declare _Complex128
to be a complex __float128
type:
On the PowerPC Linux VSX targets, you can declare complex types using the corresponding internal complex type, KCmode
for __float128
type and ICmode
for __ibm128
type:
typedef _Complex float __attribute__((mode(KC))) _Complex_float128; typedef _Complex float __attribute__((mode(IC))) _Complex_ibm128;
Not all targets support additional floating-point types. __float80
and __float128
types are supported on x86 and IA-64 targets. The __float128
type is supported on hppa HP-UX. The __float128
type is supported on PowerPC 64-bit Linux systems by default if the vector scalar instruction set (VSX) is enabled.
On the PowerPC, __ibm128
provides access to the IBM extended double format, and it is intended to be used by the library functions that handle conversions if/when long double is changed to be IEEE 128-bit floating point.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/Floating-Types.html