6.11 Дополнительные типы с плавающей точкой
В качестве расширения, GNU C поддерживает дополнительные типы с плавающей точкой, __float80 и __float128 для поддержки 80-битных (XFmode) и 128-битных (TFmode) типов с плавающей точкой. Поддержка дополнительных типов включает арифметические операторы: сложение, вычитание, умножение, деление; унарные арифметические операторы; реляционные операторы; операторы равенства; и преобразования в целые и другие типы с плавающей точкой. Используйте суффикс ‘w’ или ‘W’ в литеральной константе типа __float80 или типа __ibm128. Используйте суффикс ‘q’ или ‘Q’ для _float128.
На целевых платформах i386, x86_64, IA-64 и HP-UX вы можете объявлять комплексные типы, используя соответствующие внутренние комплексные типы, XCmode для типа __float80 и TCmode для типа __float128:
typedef _Complex float __attribute__((mode(TC))) _Complex128; typedef _Complex float __attribute__((mode(XC))) _Complex80;
Для использования __float128 и __ibm128 на системах PowerPC Linux необходимо использовать -mfloat128. В будущих версиях GCC ожидается, что __float128 будет включено автоматически. Кроме того, в настоящее время существуют проблемы с использованием комплексного типа __float128. После решения этих проблем, вы можете использовать следующий синтаксис для объявления _Complex128 как комплексного типа __float128:
На целевых платформах PowerPC Linux VSX вы можете объявлять комплексные типы, используя соответствующие внутренние комплексные типы, KCmode для типа __float128 и ICmode для типа __ibm128:
typedef _Complex float __attribute__((mode(KC))) _Complex_float128; typedef _Complex float __attribute__((mode(IC))) _Complex_ibm128;
Не все целевые платформы поддерживают дополнительные типы с плавающей точкой. Типы __float80 и __float128 поддерживаются на целевых платформах x86 и IA-64. Тип __float128 поддерживается на hppa HP-UX. Тип __float128 поддерживается на системах PowerPC 64-битного Linux по умолчанию, если включен набор инструкций вектор-скаляр (VSX).
На платформе PowerPC, __ibm128 предоставляет доступ к расширенному двойному формату IBM, и он предназначен для использования библиотечными функциями, которые обрабатывают преобразования, если/когда long double будет изменен на 128-битный тип с плавающей точкой IEEE.
Далее: Полуточная точность, Предыдущее: Комплексные числа, Вверх: Расширения C [Оглавление][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-6.5.0/gcc/Floating-Types.html