С оглядкой на хвост

« картинки и свежие анекдоты | чат

С оглядкой на хвост

Вздумалось кому-то (не мне) проверять, что матрица между вычислениями не поменялась. Проверять решил просто: считал определитель, сохранял значение и в нужный для проверки момент вычислял определитель опять. Если определитель не изменился, то можно спать спокойно.

На этом математика кончается и начинается песня. Код попадает ко мне — и начинаются глюки на самой свободной ОС, допиленной сумрачным нордическим гением аж до зелёного хамелеона, одиннадцатой версии и второго сервис-пака.

В результате отладки дохожу до такого кода:

double a = det(M);
assert(a == det(M));

Ассерт срабатывает. Ладно, добавляю строчку:

assert(det(M) == det(M));

Ассерт не срабатывает. Функция всегда возвращает одно и то же значение. Добавляю:

double diff = a - det(M);

Результат равен нулю. Причём строго нулю, посмотрел побайтово. Та-ак… Похоже, что имеем вещественное число, в общем случае не равное самому себе. Уже интересно…

double a = det(M);
double b = det(M);
assert(a == b);

Ассерт не срабатывает. Пора в дурку…

Ларчик открывался просто. В сопроцессоре все числа обрабатываются в 10-байтовом формате, а double, как известно, 8 байт. Разработчики самого безглючного компилятора возвращали значение в голове стека сопроцессора и забыли нормализовать его до 8 байт. Нормализация происходила только в случае сохранения значения в переменной. Хвост в 2 байта добавлял несколько знаков к мантиссе и вызывал все эти спецэффекты.

Комментарий:

Ваше имя:

Ещё интересное на этом сайте:

Он живой и светится
Восемь человек ранены в массовой драке между чеченцами и дагестанцами.
из жизни американских снайперов -- демонстрация задницы врагу
Пора на боковую
Почему лучше держаться подальше от взрослых видео (4 фото)
Симпатичная девушка и надоедливые коты
Цыгане обворовывают туристов в крупных городах Европы (4 фото)
Красивые самострелы (47 фото) НЮ
Как американцы издеваются над Путиным
Крупнейшие кораблекрушения в истории человечества (9 фото)
Прикольные картинки (130 фото)
Классные гифки (25 гифок)
Девушка застряла в кабинке туалета (3 фото)
Счастливчик дня (4 фото)
Призрак старинного замка (3 фото)
Необычная USB-флешка из дерева своими руками (18 фото)
Какие опасности могут ожидать человека на планете "Новая Земля" (21 гифка)
Временные тату могут стать шрамированием на всю жизнь (7 фото)
Бронеавтомобиль "Рысь", который выпускается в России по итальянской лицензии (15 фото)
Наталья Дворецкая в откровенной фотосессии для журнала Maxim (4 фото)
« все анекдоты и картинки
Рейтинг@Mail.ru