Число четверной точности

Число́ четверно́й то́чности (англ. Quadruple precision) — компьютерный формат представления чисел с плавающей запятой, занимающий в памяти четыре последовательных ячейки (компьютерных слова; в случае 32-битного компьютера — 128 бит или 16 байт). Как правило, обозначает формат числа с плавающей запятой binary128 стандарта IEEE 754.

Формат числа четверной точностиПравить

Знак: 1 бит.
Порядок: 15 бит[1][2].
Мантисса: 112 бит (112[1][2] явно хранятся).

Эквивалентное количество значащих десятичных цифр (при одинаковой средней относительной погрешности представления): 34 (log10(2113) ≈ 34.016).

Знак
(15 бит)
Порядок
(112 бит)
Мантисса
127 120 119 112 111 104 103 96 95 88 87 80 79 72 71 64 63 56 55 48 47 40 39 32 31 24 23 16 15 8 7 0

Примеры чисел четверной точностиПравить

Небольшие константы:[2]

0x 3fff 0000 0000 0000 0000 0000 0000 0000  = 1
0x c000 0000 0000 0000 0000 0000 0000 0000  = −2

Максимальное и минимальное (нормальное) число четверной точности:[3][4][2]

0x 7ffe ffff ffff ffff ffff ffff ffff ffff  ≈  1.18973149535723176508575932662800702 × 104932 
0x 0001 0000 0000 0000 0000 0000 0000 0000 ≈ 3.36210314311209350626267781732175260 * 10 -4932 

Денормализованные числа четверной точности: максимальное и минимальное положительное:[2]

0x 0000 ffff ffff ffff ffff ffff ffff ffff	≈ 3.3621031431120935062626778173217520 * 10 ^-4932
0x 0000 0000 0000 0000 0000 0000 0000 0001	≈ 6.4751751194380251109244389582276466 * 10 ^-4966

Нули четверной точности:[2]

0x 0000 0000 0000 0000 0000 0000 0000 0000  = 0
0x 8000 0000 0000 0000 0000 0000 0000 0000  = −0

Бесконечности четверной точности:[2]

0x 7fff 0000 0000 0000 0000 0000 0000 0000  = ∞
0x ffff 0000 0000 0000 0000 0000 0000 0000  = −∞
0x 3ffd 5555 5555 5555 5555 5555 5555 5555  ≈  1/3

ПоддержкаПравить

Ряд компиляторов, в том числе GCC (с версии 4.0, 2010[5]), IBM XL (10.1[5]), Intel, позволяет использовать числа точности "Quadruple" в программах на языках C/C++ и Fortran (например как тип __float128[6], long double, REAL*16), реализуя вычисления над ними программно, на 1-2 порядка более медленно, чем с точностью, поддерживаемой аппаратно[7]. Несмотря на то, что подобные вычисления можно реализовать в системах обработки чисел произвольной точности (например, GMP), существует несколько специализированных библиотек с программной реализацией "Quadruple" точности[8][9][10]. Также разрабатываются способы аппаратной реализации[11][12], но по состоянию на 2005 год в массовых процессорах четверная точность аппаратно не реализовывалась[13].

Для некоторых методов решения четверная точность позволяет ускорить сходимость (количество итераций метода) по сравнению с двойной точностью, при этом каждая итерация становится более долгой из-за использования программной реализации операций над числами[14].

Существует подход "double-double" к реализации чисел с точностью, приближенной к четверной, но использующих более короткий формат экспоненты (иногда реализуется в компиляторах Fortran для типа REAL*16). При таком подходе, например, для сложения двух чисел типа "double-double" требуется 8 операций сложения и вычитания и одно сравнение над числами двойной точности[13].

См. такжеПравить

ПримечанияПравить

  1. 1,0 1,1 "Real, Double, and Quadruple Precision (FORTRAN 77 Language Reference)". Архивировано 6 апреля 2012. Дата обращения: 30 ноября 2016.
  2. 2,0 2,1 2,2 2,3 2,4 2,5 2,6 "IEEE Arithmetic". Архивировано 19 июня 2020. Дата обращения: 30 ноября 2016.
  3. https://github.com/gcc-mirror/gcc/blob/03cb8c1ee6db41ed646eb37f164ba972abc6a87a/libquadmath/quadmath.h#L145 FLT128_MAX
  4. https://github.com/gcc-mirror/gcc/blob/03cb8c1ee6db41ed646eb37f164ba972abc6a87a/libquadmath/quadmath.h#L146 FLT128_MIN
  5. 5,0 5,1 "IBM Use GCC's long double representation for 128-bit quad precision floating point values - United States". Архивировано 30 ноября 2016. Дата обращения: 30 ноября 2016.
  6. "Floating Types - Using the GNU Compiler Collection (GCC)". Архивировано 30 ноября 2016. Дата обращения: 30 ноября 2016.
  7. "Источник" (PDF). Архивировано (PDF) 28 ноября 2016. Дата обращения: 30 ноября 2016.
  8. Exploring quadruple precision floating point numbers in GCC and ICC - Peter Larsson
  9. "Архивированная копия" (PDF). Архивировано (PDF) 30 ноября 2016. Дата обращения: 30 ноября 2016.
  10. "Berkeley SoftFloat". Архивировано 17 ноября 2016. Дата обращения: 30 ноября 2016.
  11. "Архивированная копия" (PDF). Архивировано (PDF) 20 августа 2016. Дата обращения: 30 ноября 2016.
  12. "Источник". Архивировано 6 июля 2017. Дата обращения: 30 ноября 2016.
  13. 13,0 13,1 "Источник" (PDF). Архивировано (PDF) 9 июля 2020. Дата обращения: 30 ноября 2016.
  14. "Источник" (PDF). Архивировано (PDF) 29 августа 2017. Дата обращения: 30 ноября 2016.