?

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^{-3} быстро приведет к накоплению ошибок.

На самом деле такая идея не нова. Лет 15 назад на ее основе даже соорудили специализированную архитектуру (GRAPE), использовавшуюся для решения задач, которые на нее "ложились". Результаты оказались так себе - после первой эйфории достаточно быстро выяснилось, что в конечном счете обычные универсальные компьютеры оказываются выгоднее. Затем все бросились на расчеты на видеокартах, и о GRAPE забыли.

  • 1