?

Log in

No account? Create an account
nyaload

Журнал Пушыстого

Журнал Пушыстого

Previous Entry Share Next Entry
packed float
nyaload
_winnie
Если допустимо округление float на ±0.1 процент, то можно хранить число как логарифм по основанию 2^(1/512). 2 байт хватит, что бы записать числа порядка 1.0e±18 (миллиард миллиардов). Деление и умножение - практически бесплатно, конверсию в double-float можно делать через таблицу с 512 элементами и битовые операции.

Сложение - дорогое и неточное. Это скорее для записи готового результата, а не для промежуточных вычислений.

Идея хранить логарифмы вместо чисел не нова. Но хочется обратить внимание на то, что логарифм можно хранить как небольшое целое число. В контексте записи звука или освещённости в пикселах - общее место, но в big data - не распространено.


  • 1
В графике прокатило бы, но тут, увы, закон сохранения сложности. В такой системе хорошо вращать, но очень скверно транслировать.
Некой оптимизации на логарифмической форме записи можно достичь и этим пользуются.

Ошибка в один процент на каждой операции это почти сразу смерть, в графике очень редко где прокатило бы. В графике бывает 10-битной мантиссы мало регулярно, начинает лезть banding и визуально заметный rounding при движении, то что в посте - совсем никак.

[edit] а, там 0.1 процент, менее страшно тогда - но уже есть half precision, для графики он более оптимальный с т.з точности.

Edited at 2013-03-11 04:39 am (UTC)

  • 1