"Л.Ашкинази. Сколько будет?" - читать интересную книгу автора


Л.Ашкинази


Сколько будет?

Я - программист.
Приходит как-то ко мне клиент, написал, говорит, программку, хотелось
бы посчитать. Беру. Программа небольшая. Что, спрашиваю,- она должна
выдавать? Да немного, говорит, одно число. Смотрю в программку - каменный
век. Эпоха каменного рубила. Учились, спрашиваю, сами? Опустил глаза
клиент и говорит - по книжкам.
Засадил я этот бред на следующий день в машину, она помигала с минуту
и напечатала 0.40000023E01. В переводе на русский язык - это 4,0000023.
Странное, однако, число. Не ошибка ли счета набежала? Все ж машина,
смотрю, шестьдесят девять с хвостиком секунд трудилась, а она, между
прочим, у нас не на счетах косточки кидает. Семьдесят секунд времени
процессора - это почти сто миллионов операций. Посчитал с двойной
точностью. Выдала 0.40000022E01. Ну что же, вполне разумное уточнение.
Значит не ошибка вычисления.
Забавным мне это показалось, стал я в программе разбираться. Понятно
ведь, что у неизвестно какой задачи ответ может быть любой. Но если он от
целого числа на две миллионные отличается, то возникает естественное
подозрение, сто ответ и должен быть целым. А отличие - какая-то
погрешность.
В программе я, конечно, разобрался, особых хитростей в ней не нашел.
Двойные ряды товарищ суммировал, и чего там только не было - и
гиперболические функции и бесселевы. Подозрительным мне все это
показалось. Позвонил знакомому математику. Тот посмотрел в книжки и
говорит - нету твоих рядов в книжках, подожди часок, я их сам пообдумаю.
Через два часа звонит - ряды твои, говорит, можешь забирать. Но я уговорил
его приехать. Посмотрел он распечатки и сразу стал серьезным. До утра мы с
ним просидели. Все верно, а двадцать две десятимиллионные все же
возникают. В шесть утра он кофе допил, встал и говорит - домой поеду, мне
к десяти в институт надо. А это ошибки вычислений набегают, можешь быть
уверен. И уехал.
Через день ко мне заказчик зашел, ответ я ему сообщил. Он спасибо
сказал и отчалил. Больше я его не видел.
Задачки свои можете ко мне смело нести, я программист не из
последних. А ту программу я еще не раз пускал. И на машинах с большой
разрядной сеткой, и с двойной точностью, и ошибки в ней искал, и другим
показывал, программистам и математикам. Ответ уточнил - 4,00000223. Это уж
железно.
А вы думали - если двойку на двойку умножить, сколько будет?