Число четверной точности
Эту статью предлагается удалить. |
Число́ четверно́й то́чности (англ. 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].
См. также
[править | править код]- Числа с плавающей запятой
- Число половинной точности
- Число одинарной точности
- Число двойной точности
- Число восьмерной точности
- 128 бит
- Интервальная арифметика
Примечания
[править | править код]- ↑ 1 2 Real, Double, and Quadruple Precision (FORTRAN 77 Language Reference) . Дата обращения: 30 ноября 2016. Архивировано 6 апреля 2012 года.
- ↑ 1 2 3 4 5 6 7 IEEE Arithmetic . Дата обращения: 30 ноября 2016. Архивировано 19 июня 2020 года.
- ↑ https://github.com/gcc-mirror/gcc/blob/03cb8c1ee6db41ed646eb37f164ba972abc6a87a/libquadmath/quadmath.h#L145 FLT128_MAX
- ↑ https://github.com/gcc-mirror/gcc/blob/03cb8c1ee6db41ed646eb37f164ba972abc6a87a/libquadmath/quadmath.h#L146 FLT128_MIN
- ↑ 1 2 IBM Use GCC's long double representation for 128-bit quad precision floating point values - United States . Дата обращения: 30 ноября 2016. Архивировано 30 ноября 2016 года.
- ↑ Floating Types - Using the GNU Compiler Collection (GCC) . Дата обращения: 30 ноября 2016. Архивировано 30 ноября 2016 года.
- ↑ Источник . Дата обращения: 30 ноября 2016. Архивировано 28 ноября 2016 года.
- ↑ Exploring quadruple precision floating point numbers in GCC and ICC - Peter Larsson
- ↑ Архивированная копия . Дата обращения: 30 ноября 2016. Архивировано из оригинала 30 ноября 2016 года.
- ↑ Berkeley SoftFloat . Дата обращения: 30 ноября 2016. Архивировано 17 ноября 2016 года.
- ↑ Архивированная копия . Дата обращения: 30 ноября 2016. Архивировано из оригинала 20 августа 2016 года.
- ↑ Источник . Дата обращения: 30 ноября 2016. Архивировано 6 июля 2017 года.
- ↑ 1 2 Источник . Дата обращения: 30 ноября 2016. Архивировано 9 июля 2020 года.
- ↑ Источник . Дата обращения: 30 ноября 2016. Архивировано 29 августа 2017 года.
В другом языковом разделе есть более полная статья Quadruple precision (англ.). |