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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Число́ восьмерно́й то́чности (англ. Octuple precision) — компьютерный формат представления чисел с плавающей запятой, занимающий в памяти восемь последовательных двойных слов, т.е. 32 байта. Данное название обусловлено сложившейся терминологией, в которой число одинарной точности имеет размер двойного слова. Как правило, обозначает формат числа с плавающей запятой binary256 стандарта IEEE 754.

Формат числа восьмерной точности[править | править код]

Знак: 1 бит.
Порядок: 19 бит[1]; смещение порядка: +262143 (3FFFFh).
Мантисса: 237 бит (236 явно хранятся).

Эквивалентное количество значащих десятичных цифр (при одинаковой средней относительной погрешности представления): 71,7[2].

Примеры чисел восьмерной точности[править | править код]

Некоторые константы:[1]

0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = +0
8000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = −0
7fff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = +
ffff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = −∞
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000116
= 2−262142 × 2−236 = 2−262378
≈ 2.24800708647703657297018614776265182597360918266100276294348974547709294462 × 10−78984
  (наименьшее положительное субнормальное число)
0000 0fff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 2−262142 × (1 − 2−236)
≈ 2.4824279514643497882993282229138717236776877060796468692709532979137875392 × 10-78913
  (наибольшее субнормальное число)
0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016
= 2−262142
≈ 2.48242795146434978829932822291387172367768770607964686927095329791378756168 × 10−78913
  (наименьшее положительное нормальное число)
7fff efff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 2262143 × (2 − 2−236)
≈ 1.61132571748576047361957211845200501064402387454966951747637125049607182699 × 1078913
  (наибольшее нормальное число)
3fff efff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 1 − 2−237
≈ 0.999999999999999999999999999999999999999999999999999999999999999999999995472
  (наибольшее число меньше единицы)
3fff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016
= 1 (единица)
3fff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000116
= 1 + 2−236
≈ 1.00000000000000000000000000000000000000000000000000000000000000000000000906
  (наименьшее число больше единицы)

Поддержка[править | править код]

Использование восьмерной точности на данный момент весьма редкое. В компании Apple реализовали сложение, вычитание и умножение чисел с восьмерной точностью в отличном от IEEE 754 формате: он имеет 224-битную мантиссу в дополнительном коде и 32-битный показатель степени.[3] Можно использовать общие арифметические библиотеки с произвольной точностью для получения восьмерной (или более высокой) точности, но ещё не существует известной аппаратной реализации таковой.

См. также[править | править код]

Примечания[править | править код]

  1. 1 2 IEEE Arithmetic. Дата обращения: 17 марта 2020. Архивировано 19 июня 2020 года.
  2. Гаврилов К. В. Об аппроксимации некоторых трансцендентных функций в компьютерной арифметике. // Автоматика и программная инженерия. — 2020. — Т. 3. — С. 51–59. Архивировано 8 июня 2021 года.
  3. R. Crandall, J. Papadopoulos. Octuple-precision floating point on Apple G4 (archived copy on web.archive.org). — 2002. Архивировано 28 июля 2006 года.