Spec-Zone.ru › GCC 11

Следующая: Полуточная плавающая точка, Предыдущая: Комплексные числа, Вверх: Расширения семейства языков C [Оглавление][Индекс]

6.12 Дополнительные типы чисел с плавающей точкой ¶

ISO/IEC TS 18661-3:2015 определяет поддержку C для дополнительных типов чисел с плавающей точкой _Floatn и _Floatnx, и GCC поддерживает эти имена типов; набор поддерживаемых типов зависит от архитектуры целевой системы. Эти типы не поддерживаются при компиляции C++. Константы с этими типами используют суффиксы fn или Fn и fnx или Fnx. Эти имена типов могут использоваться вместе с _Complex для объявления комплексных типов.

В качестве расширения GNU C и GNU C++ поддерживают дополнительные типы чисел с плавающей точкой, которые не поддерживаются всеми целевыми системами.

  • __float128 доступен на i386, x86_64, IA-64 и hppa HP-UX, а также на целевых системах PowerPC GNU/Linux, которые поддерживают набор инструкций векторно-скалярного (VSX) типа. __float128 поддерживает 128-битный тип чисел с плавающей точкой. На i386, x86_64, PowerPC и IA-64, за исключением HP-UX, __float128 является псевдонимом для _Float128. На hppa и IA-64 HP-UX, __float128 является псевдонимом для long double.
  • __float80 доступен на целевых системах i386, x86_64 и IA-64 и поддерживает 80-битный (XFmode) тип чисел с плавающей точкой. Он является псевдонимом для имени типа _Float64x на этих целевых системах.
  • __ibm128 доступен на целевых системах PowerPC и обеспечивает доступ к расширенному формату двойной точности IBM, который является текущим форматом, используемым для long double. Когда long double перейдет на __float128 на PowerPC в будущем, __ibm128 останется для использования при преобразованиях между двумя типами.

Поддержка этих дополнительных типов включает арифметические операторы: сложение, вычитание, умножение, деление; унарные арифметические операторы; реляционные операторы; операторы равенства; и преобразования к целочисленным и другим типам чисел с плавающей точкой. Используйте суффикс ‘w’ или ‘W’ в литеральной константе типа __float80 или типа __ibm128. Используйте суффикс ‘q’ или ‘Q’ для _float128.

Для использования _Float128, __float128, и __ibm128 на PowerPC Linux системах необходимо использовать опцию -mfloat128. Ожидается, что в будущих версиях GCC _Float128 и __float128 будут включены автоматически.

Тип _Float128 поддерживается на всех системах, где поддерживается __float128 или где long double имеет формат IEEE binary128. Тип _Float64x поддерживается на всех системах, где поддерживается __float128. Тип _Float32 поддерживается на всех системах, поддерживающих IEEE binary32; типы _Float64 и _Float32x поддерживаются на всех системах, поддерживающих IEEE binary64. Тип _Float16 поддерживается на системах AArch64 по умолчанию и на ARM системах, когда формат IEEE для 16-битных типов чисел с плавающей точкой выбран с помощью -mfp16-format=ieee. GCC в настоящее время не поддерживает _Float128x ни на одной системе.

На целевых системах 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;

На целевых системах PowerPC Linux VSX вы можете объявлять комплексные типы, используя соответствующие внутренние комплексные типы, KCmode для типа __float128 и ICmode для типа __ibm128:

typedef _Complex float __attribute__((mode(KC))) _Complex_float128;
typedef _Complex float __attribute__((mode(IC))) _Complex_ibm128;

Следующая: Полуточная плавающая точка, Предыдущая: Комплексные числа, Вверх: Расширения семейства языков C [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-11.4.0/gcc/Floating-Types.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API