Комментарии 17
Замечательная тема перевода!
Но читать тяжело, описание местами непонятное. Например, нигде не даётся определение числу es, и поэтому что такое useed (useed = 2^(2^es)), тоже не сразу понятно.
Наверно, описание нужно было начать с кратких определений unum Type I / unum Type II / posit / valid, и сразу привести ту формулу "sign(p) * useed^k * 2^e * f".
А из этой формулы сразу видно, что формат, в принципе, похож на "обычные" форматы чисел с плавающей точкой, но имеет как бы 2 экспоненты, тем самым значительно расширяя диапазон.
И тут возникает вопрос, почему автор формата выбрал для записи расширения экспоненты фактически унарную запись (00..01, 1111...10), а не более компактный и удобный железу бинарный код. Неужели унарная запись компактнее?
Я согласен с вами, что в статье не хватает последовательных определений. Но я перевёл как есть, не переделывая текст.
По поводу унарной записи: да, здесь это необходимо, потому что мы не знаем заранее, сколько разрядов у нас будет занимать режим. Поэтому он кодируется таким способом, который позволяет однозначно идентифицировать его конец.
Все равно этот режим будет находиться в каких-то границах, определяемых общей разрядностью числа.
Безусловно.
Нет, нельзя.
Ужать так просто нельзя, нужно же как-то понять, где кончается порядок и начинается мантисса.
Можно записывать порядок кодированием Элиаса, но для порядков из IEEE floats он оказывается короче записи с фиксированным числом битов только когда порядок очень близок к 0. Правда, с некоторой потерей точности относительно IEEE можно записывать экстремально большие и экстремально маленькие порядки (http://helper.ipam.ucla.edu/publications/bdcws2/bdcws2_15049.pdf, слайды 16-17).
Нет, здесь экспонента имеет переменный размер, который и задаётся режимом.
Интересно, давно отменили? :sarcasm:
В версии 2008 требуется (пункт 9.1), а более новых пока не выпускали.
(Не надо вспоминать промежуточное более длинное хранение в x87 и аналогах: во-первых, оно, наоборот, точнее, во-вторых — не стандарт.)
Вот такие вот «хитрые» диверсии убивают всё доверие к авторам.
Из этой статьи всё равно наполовину ничерта не понятно!!!
Что за бред написан вот в этой фразе
"режим означает масштабирующий фактор, равный useed^k, где useed = 2^2^es"
При том, что величина es не определена!
Вот вам некая таблица, вот и делайте с ней, что хотите.
Можно же было СРАЗУ сказать, что формат позит определяется ДВУМЯ величинами
- общее количество разрядов
- количество разрядов экспоненты
Итого, 1 разряд на знак, es на экспоненту, а (разрядность-1-es) — на убер-множитель "режим" и дробную часть?
Какой вообще смысл в 3-битных или 5-битных позитах?
Авторы что-то гениальное знают, тащатся с этого, а остальные трахайтесь как хотите.
Posit-арифметика: победа над floating point на его собственном поле. Часть 1