Pull to refresh

Comments 9

В процессе работы я наткнулся на этот пост на StackOverflow, из которого узнал об изящном алгоритме точного вычисления .

Читаю статью и вспоминаю курс прикладной математики и вычислительных методов (что то как то так называлось) на котором все это давали в институте. И лабы на которых эти методы проверялись. Давно… очень давно (С++ еще не было).


Однако базовые знания. Почему они становятся "я узнал об изящном алгоритме точного вычисления".


Насколько актуально использование float в вычисления (не хранении) в эпоху 64 бит и широких шин к памяти — отдельный вопрос.

«Насколько актуально использование float в вычисления (не хранении) в эпоху 64 бит и широких шин к памяти — отдельный вопрос.»
Если говорить о GPU, то в геймерских картах производительность операций над числами с плавающей запятой одинарной точности намного выше производительности с числами двойной точности.
В статье же речь идет о движке для рендеринга, где производительность явно не на последнем месте.

Точно. Как то упустил этот момент.
Спасибо что обратили внимание (под GPU не приходилось писать)

В статье же написано, что уже давно как есть.

Инструкция FMA доступна в GPU уже больше десятка лет, а в большинстве ЦП — не менее пяти лет. На ЦП может потребоваться добавить флаги компилятора для их непосредственной генерации при использовании std::fma(); в gcc и clang работает -march=native.

Судя по сказанному в статье, в первую очередь именно там и есть:


Инструкция FMA доступна в GPU уже больше десятка лет, а в большинстве ЦП — не менее пяти лет.

upd: опоздал :)

Хоть бы кто-нибудь потрудился изучить вопрос — арифметические операции с переменными с плавающей точкой в общем случае не дают точных значений

А если "точную" понимать как "с точностью порядка точности представления float" (а не на порядки хуже, как это было бы при применении наивного метода), т.е. "максимально точно для данного представления"?

Sign up to leave a comment.

Articles