Сабж. Нужно для того, что бы убрать влияние накопившейся машинной ошибки при сравнении чисел. Ключевое требование - должно работать быстро. Тупое решение в лоб
inline bool less(double x, double y){
*((long*)&x) &= 0xFFFFFFFFFFFF0000;
*((long*)&y) &= 0xFFFFFFFFFFFF0000;
return x<y;
}
warning: dereferencing type-punned pointer will break strict-aliasing rules