Re[2]: std::sort и приближенный предикат
От: Константин Россия  
Дата: 28.01.16 10:58
Оценка:
Здравствуйте, T4r4sB, Вы писали:

W>>Есть некое множество каких-то структур, которые нужно отсортировать по значению некоторой функции. Казалось бы все просто — std::sort с предикатом. Но проблема в том, что результат вызова этого предиката приближенный (в силу погрешностей fast floating point model), и иногда начинается дребезг, приводящий к тому, что алгоритм сходит с ума и ругается ассертами (я так понимаю, нарушается транзитивность). Как решить данную проблему, не "городя огород" и не получая лишних накладных расходов?

W>>Какие варианты приходят на ум:
W>>1. Предрассчитать значение функции. Это хорошо, но его нужно где-то хранить? Еще один контейнер? Огород. Внести в саму структуру? Нарушение абстракции.
W>>2. Округлять результат. Не решение — аргумент округления может оказаться "на пике", и сваливаться то в одну, то в другую сторону, пускай и с меньшей вероятностью.
W>>3. Включить precise floating point model конкретно в этом месте? А получится ли? Ведь оно может вызывать уже готовый код, который был скомпилирован в быстрой модели.
W>>Что посоветуете?

TB>Я за огород.


Не сработает. Транзитивности не будет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.