Число восьмерной точности (англ. 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
= 2262142 2236 = 2262378
2.24800708647703657297018614776265182597360918266100276294348974547709294462 1078984
(наименьшее положительное субнормальное число)
0000 0fff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 2262142 (1 2236)
2.4824279514643497882993282229138717236776877060796468692709532979137875392 10-78913
(наибольшее субнормальное число)
0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016
= 2262142
2.48242795146434978829932822291387172367768770607964686927095329791378756168 1078913
(наименьшее положительное нормальное число)
7fff efff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 2262143 (2 2236)
1.61132571748576047361957211845200501064402387454966951747637125049607182699 1078913
(наибольшее нормальное число)
3fff efff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 1 2237
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 + 2236
1.00000000000000000000000000000000000000000000000000000000000000000000000906
(наименьшее число больше единицы)
Поддержка
Использование восьмерной точности на данный момент весьма редкое. В компании Apple реализовали сложение, вычитание и умножение чисел с восьмерной точностью в отличном от IEEE 754 формате: он имеет 224-битную мантиссу в дополнительном коде и 32-битный показатель степени.[3] Можно использовать общие арифметические библиотеки с произвольной точностью для получения восьмерной (или более высокой) точности, но ещё не существует известной аппаратной реализации таковой.
См. также
Примечания
- 1 2 IEEE Arithmetic (неопр.). Дата обращения: 17 марта 2020. Архивировано 19 июня 2020 года.
- Гаврилов К. В. Об аппроксимации некоторых трансцендентных функций в компьютерной арифметике. // Автоматика и программная инженерия. — 2020. — Т. 3. — С. 51–59. Архивировано 8 июня 2021 года.
- R. Crandall, J. Papadopoulos. Octuple-precision floating point on Apple G4 (archived copy on web.archive.org). — 2002. Архивировано 28 июля 2006 года.