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

Леонид Александрович Ашкинази

Я - программист.


Приходит как-то ко мне клиент, написал, говорит, программку, хотелось

бы посчитать. Беру. Программа небольшая. "Что, - спрашиваю, - она должна

выдавать?" "Да немного, - говорит, - одно число". Смотрю в программку -

каменный век. Эпоха ручного рубила. Учились, спрашиваю, сами? Опустил

клиент глаза и говорит: по книжкам.


Засадил я этот бред на следующий день в машину, она помигала с минуту

и напечатала 0.40000023Е01. В переводе на русский язык - это

4,0000023. Странное, однако, число. Не ошибка ли счета набежала? Все ж

машина, смотрю, шестьдесят девять с хвостиком секунд трудилась, а она,

между прочим, у нас не на счетах косточки кидает. Семьдесят секунд

времени процессора - это почти сто миллионов операций. Посчитал с

двойной точностью. Выдала 0.40000022Е01. Ну что же, вполне разумное

уточнение. Значит, не ошибка вычисления.


Забавным мне это показалось, стал я в программе разбираться. Понятно

ведь, что у неизвестно какой задачи ответ может быть любым. Но если он

от целого числа на две миллионные отличается, то возникает

естественное подозрение, что ответ и должен быть целым. А отличие -

какая-то погрешность.


В программе я, конечно, разобрался, особых хитростей в ней не нашел.

Двойные ряды товарищ суммировал, и чего там только не было - и

гиперболические функции и бесселевы. Подозрительным мне все это

показалось. Позвонил знакомому математику. Тот посмотрел в книжки и

говорит: нету твоих рядов в книжках, подожди часок, я их сам

пообдумаю. Через два часа звонит - ряды твои, говорит, можешь

забирать. Но я уговорил его приехать. Посмотрел он распечатки и сразу

стал серьезным. До утра мы с ним просидели. Все верно, а двадцать две

десятимиллионные все же возникают. В шесть утра он кофе допил, встал и

говорит - домой поеду, мне к десяти в институт надо. А это ошибки

вычислений набегают, можешь быть уверен. И уехал.


Через день ко мне заказчик зашел, ответ я ему сообщил. Он спасибо

сказал и отчалил. Больше я его не видел.


Задачки свои можете ко мне смело нести, я программист не из последних.

А ту программу я еще не раз пускал. И на машинах с большой разрядной

сеткой, и с двойной точностью, и ошибки в ней искал, и другим

показывал, программистам да математикам. Ответ уточнил - 4,00000223.

Это уж железно. А вы думали - если двойку на двойку умножить, сколько

будет?