Size: a a a

Compiler Development

2020 April 23

KR

K R in Compiler Development
источник

KR

K R in Compiler Development
То есть, для плавающей точки любая операция с большой вероятностью ведёт к потере точности. И дальше возникает вопрос - допустима ли эта потеря или нет.

Как правило, используемые везде double сильно избыточны. Но не всегда.

Ещё есть риск включённого SIGFPE и денормализованных чисел. Но это вряд ли выстрелит.
источник

M

MaxGraey in Compiler Development
K R
То есть, для плавающей точки любая операция с большой вероятностью ведёт к потере точности. И дальше возникает вопрос - допустима ли эта потеря или нет.

Как правило, используемые везде double сильно избыточны. Но не всегда.

Ещё есть риск включённого SIGFPE и денормализованных чисел. Но это вряд ли выстрелит.
Что значит сильно избыточны? Дабл разве что для нейронных сетей избыточны и то не для всех, а так их применяют даже для UX/UI. Ну и все операции приводят к ошибке округления, а некоторые еще и могут порождать сайд эффекты в виде NaN который вообще ведет себя обособленно и это нужно учитывать если только не включен режим а-ля ffast-math
источник

KR

K R in Compiler Development
MaxGraey
Что значит сильно избыточны? Дабл разве что для нейронных сетей избыточны и то не для всех, а так их применяют даже для UX/UI. Ну и все операции приводят к ошибке округления, а некоторые еще и могут порождать сайд эффекты в виде NaN который вообще ведет себя обособленно и это нужно учитывать если только не включен режим а-ля ffast-math
Почти везде, где я работал, достаточно было float (32 бита). Это физика, финансы, теплоэнергетика.
источник

M

MaxGraey in Compiler Development
K R
Почти везде, где я работал, достаточно было float (32 бита). Это физика, финансы, теплоэнергетика.
Финансы?
источник

KR

K R in Compiler Development
MaxGraey
Финансы?
Да. Это многих поражает, но для расчёта цен на биржах используется плавающая точка.
источник

p

polunin.ai in Compiler Development
K R
То есть, для плавающей точки любая операция с большой вероятностью ведёт к потере точности. И дальше возникает вопрос - допустима ли эта потеря или нет.

Как правило, используемые везде double сильно избыточны. Но не всегда.

Ещё есть риск включённого SIGFPE и денормализованных чисел. Но это вряд ли выстрелит.
ну на точность пофиг в принципе, это литералы double 64 бита. то есть в общем случае можно переставлять.
источник

M

MaxGraey in Compiler Development
В финансах только decimal и bigdecimal. Статистика всякая да, там можно и f32 обойтись
источник

А

Алексей ayaye :) in Compiler Development
вы не забывайте, что при вычислениях погрешность накапливается. иногда проще взять избыточно точное значение в начале, чтобы не вылезти в конце
источник

M

MaxGraey in Compiler Development
K R
Да. Это многих поражает, но для расчёта цен на биржах используется плавающая точка.
Это не финансы, это мониторинг
источник

KR

K R in Compiler Development
MaxGraey
Это не финансы, это мониторинг
Ок. Вы любите спорить.
источник

KR

K R in Compiler Development
polunin.ai
ну на точность пофиг в принципе, это литералы double 64 бита. то есть в общем случае можно переставлять.
Если вы знаете, что это за литералы, то почему бы и нет.
источник

A

Alex in Compiler Development
polunin.ai
хм, насколько правильно будет переставлять в данном случае:
x + 2 > 1
на
x > -1
?
Для целочисленных по идеи допустимо такое поведение. А для флоатов? Где можно почитать про то в каких случаях допустимо выполнять такие перестановки а в каких нет?
Боюсь что даже для целых чисел такое допустимо не всегда. В случае если x+2 переполняет значение, то результат будет отличаться от сравнения с -1. Например, у нас будет большое отрицательное, которое всегда будет меньше 1', а при сравнении x с -1' x всегда будет больше
источник

M

MaxGraey in Compiler Development
Alex
Боюсь что даже для целых чисел такое допустимо не всегда. В случае если x+2 переполняет значение, то результат будет отличаться от сравнения с -1. Например, у нас будет большое отрицательное, которое всегда будет меньше 1', а при сравнении x с -1' x всегда будет больше
Только для unsigned
источник

p

polunin.ai in Compiler Development
Alex
Боюсь что даже для целых чисел такое допустимо не всегда. В случае если x+2 переполняет значение, то результат будет отличаться от сравнения с -1. Например, у нас будет большое отрицательное, которое всегда будет меньше 1', а при сравнении x с -1' x всегда будет больше
у меня числа biginteger)
источник

A

Alex in Compiler Development
polunin.ai
у меня числа biginteger)
:) тогда норм )
источник

AN

Alexander Nasonov in Compiler Development
K R
Да. Это многих поражает, но для расчёта цен на биржах используется плавающая точка.
В трейдинге тоже плавающая точка. Просто иногда надо округлять до ближайшего тика (tick), чтобы сравнение цен не дало неправильный результат.
источник

KR

K R in Compiler Development
Alexander Nasonov
В трейдинге тоже плавающая точка. Просто иногда надо округлять до ближайшего тика (tick), чтобы сравнение цен не дало неправильный результат.
Это к MaxGaraey.
источник

AG

Alex Gryzlov in Compiler Development
не знаю что у вас там за финансы, но в адтехе для финансовых расчетов у нас был только и исключительно децимал
источник

KR

K R in Compiler Development
polunin.ai
ну на точность пофиг в принципе, это литералы double 64 бита. то есть в общем случае можно переставлять.
Тогда вроде нужно только проверить на переполнение и всё.
источник