Число восьмерной точности
Число́ восьмерно́й то́чности (англ. Octuple precision) — компьютерный формат представления чисел с плавающей запятой, занимающий в памяти восемь последовательных двойных слов, т.е. 32 байта. Данное название обусловлено сложившейся терминологией, в которой число одинарной точности имеет размер двойного слова. Как правило, обозначает формат числа с плавающей запятой binary256 стандарта IEEE 754.
Формат числа восьмерной точности
Знак: 1 бит.
Порядок: 19 бит[1].
Мантисса: 237 бит (236 явно хранятся).
Эквивалентное количество значащих десятичных цифр (при одинаковой средней относительной погрешности представления): 71,7[2].
Примеры чисел восьмерной точности
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] Можно использовать общие арифметические библиотеки с произвольной точностью для получения восьмерной (или более высокой) точности, но ещё не существует известной аппаратной реализации таковой.
См. также
Примечания
- IEEE Arithmetic
- Гаврилов К. В. Об аппроксимации некоторых трансцендентных функций в компьютерной арифметике. // Автоматика и программная инженерия. — 2020. — Т. 3. — С. 51–59.
- R. Crandall, J. Papadopoulos. Octuple-precision floating point on Apple G4 (archived copy on web.archive.org). — 2002.