Л.Ашкинази

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

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

Беру. Программа небольшая. Что, спрашиваю,- она должна выдавать?
Да немного, говорит, одно число. Смотрю в программку - каменный век. Эпоха каменного рубила. Учились, спрашиваю, сами? Опустил глаза клиент и говорит - по книжкам.

Засадил я этот бред на следующий день в машину, она помигала с минуту и напечатала 0.40000023E01. В переводе на русский язык - это 4,0000023. Странное, однако, число. Не ошибка ли счета набежала? Все ж машина, смотрю, шестьдесят девять с хвостиком секунд трудилась, а она, между прочим, у нас не на счетах косточки кидает. Семьдесят секунд времени процессора - это почти сто миллионов операций. Посчитал с двойной точностью. Выдала 0.40000022E01. Ну что же, впол не разумное уточнение. Значит не ошибка вычисления.

Забавным мне это показалось, стал я в программе разбираться. Понятно ведь, что у неизвестно какой задачи ответ может быть любой. Но если он от целого числа на две миллионные отличается, то возникает естественное подозрение, сто ответ и должен быть целым. А отличие - какая-то погрешность.

В программе я, конечно, разобрался, особых хитростей в ней не нашел. Двойные ряды товарищ суммировал, и чего там только не было - и гиперболические функции и бесселевы. Подозрительным мне все это показалось. Позвонил знакомому математи ку. Тот посмотрел в книжки и говорит - нету твоих рядов в книжках, подожди часок, я их сам пообдумаю. Через два часа звонит - ряды твои, говорит, можешь забирать. Но я уговорил его приехать. Посмотрел он распечатки и сразу стал серьезным. До утра мы с ни м просидели. Все верно, а двадцать две десятимиллионные все же возникают. В шесть утра он кофе допил, встал и говорит - домой поеду, мне к десяти в институт надо. А это ошибки вычислений набегают, можешь быть уверен. И уехал.

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

Задачки свои можете ко мне смело нести, я программист не из последних. А ту программу я еще не раз пускал. И на машинах с большой разрядной сеткой, и с двойной точностью, и ошибки в ней искал, и другим показывал, программистам и матема тикам. Ответ уточнил - 4,00000223. Это уж железно.

А вы думали - если двойку на двойку умножить, сколько будет?
Back Home

https://dybkov.kiev.ua/M/index.html
All Questions and Comments to Mykhaylo Dybkov

Last Modified