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

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Число́ четверно́й то́чности (англ. 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].

См. также

Примечания