Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Только что проверил с GCC - (a + b) / 2 транслируется в... 23.08.07 15:57 Число просмотров: 5559
Автор: crontab Статус: Незарегистрированный пользователь
|
> Я гляжу тут люди сидят абы языком ляпнуть. > Пргрешность при делении на 2? Вы в свеом уме? > А возвращение int вместо float это по-вашему не > погрешность? Да в моей функции погрешность просто нервно > курит в сторонке по сравнению с той, что статье, потому что > возникать будет только на граничных значениях.
Только что проверил с GCC - (a + b) / 2 транслируется в сложение и битовый сдвиг со знаком. Компиляторы "чувствуют" куда пойдет результат и могут произвести целочисленное деление вместо вещ. или же битовый сдвиг, где это возможно.
А floating point арифметика очень тяжелая в плане времени выполнения, поэтому для двоичного поиска она не годится.
А вот пример того, как двоичный поиск с (a + b) / 2 привел к ошибке:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5045582
Поразительно, что ошибку так и не исправили как следует. Массив интов с двумя миллиардами элементов - не такая уж и фантастика, и насколько мне известно, такие массивы реально существуют в Гугле.
|
|
|