Три — один — четыре — один — пять — девять…
Лёнька бормотал про себя знаки, пока терминал выводил результат навигационной поправки. Бормотание было необязательным: корабельный вычислитель считал без помощи младшего преподавателя математики, приписанного к научной группе «Эвклида». Но привычка осталась с университета, где Лёнька проверял чужие курсовые и обязательно шептал цифры — будто слово, произнесённое вслух, становилось честнее.
Терминал мигнул.
Лёнька посмотрел на экран, потом на свой блокнот, потом снова на экран.
— Ерунда какая-то.
Поправка к вектору торможения отличалась от расчётной на величину, которой не должно было существовать. Не на порядки — на крошечную, тонкую дрянь в четвёртом знаке. Само по себе это ничего не значило. Навигационный допуск позволял расхождение. Но Лёнька не проверял допуск — он проверял формулу. А формула была такой, что ошибки в ней не бывает, если ты не перепутал знак или не ввёл кривую константу.
Он ввёл π руками. Не из базы — из головы. 3,14159265358979…
Результат совпал с расчётным.
Лёнька вернул значение из корабельной базы. Терминал снова выдал расхождение.
Он откинулся на спинку кресла, посмотрел на потолок вычислительного отсека — низкий, обшитый серыми панелями, с одной мёртвой лампой в углу, которую никто не менял третий месяц — и сказал потолку:
— Ладно. Значит, я дурак.
Потолок промолчал. Мёртвая лампа не загорелась.
Лёнька открыл протокол проверки констант. На «Эвклиде» всё было задокументировано: каждая база данных, каждая библиотека, каждый набор постоянных. Корабль летел к Проксиме уже четвёртый год, и половина бортовых систем использовала π в том или ином виде — навигация, связь, моделирование, даже климат-контроль, потому что кто-то из инженеров зачем-то считал объём вентиляционных каналов через площадь сечения.
Он вывел значение π из корабельной базы и положил рядом с табличным.
Третий знак.
В базе стояло 3,14059…
Лёнька моргнул. Перечитал. Закрыл окно. Открыл снова.
3,14059.
Единица на пятом месте после запятой вместо единицы на третьем — нет, стоп. Он сбился. Он смотрел на экран и не мог прочитать число, которое знал с восьми лет. Руки сделали то, что голова отказывалась: он взял блокнот и выписал оба значения столбиком.
`` Табличное: 3,14159265... Корабельное: 3,14059265... ``
Один разряд. Единица пропала и заменилась нулём. Не ошибка округления — замена цифры.
— Бред, — сказал Лёнька.
Он проверил хэш-сумму базы. Совпала с эталонной. Это означало, что база не повреждена, не подменена, не модифицирована после последнего обновления. Либо хэш врал, либо значение π в корабельной базе всегда было таким.
Всегда было неправильным.
Четыре года. Четыре года корабль летел с кривым числом π в базе, и никто не заметил, потому что навигационный допуск покрывал разницу, климат-контроль справлялся, а моделирование… Лёнька задумался. Моделирование использовало π в расчётах гравитационного профиля. Если значение отличалось на одну десятитысячную, результат сдвигался. Не катастрофически. Но сдвигался.
Он открыл лог гравитационного моделирования за последние полгода и начал искать расхождения с наблюдаемыми данными.
На это ушло два часа. Лёнька забыл про ужин, про физкультурный час и про обещание Нике починить ей компилятор учебных задач.
Расхождений не было.
Точнее, наблюдаемые гравитационные данные совпадали не с правильным π, а с кривым. С тем, что сидел в базе. С 3,14059.
Лёнька выписал это в блокнот, посмотрел на запись, аккуратно положил ручку и встал. Прошёлся по отсеку. Сел. Снова встал. Подошёл к иллюминатору — узкой щели в обшивке с тройным стеклом, через которое было видно абсолютно ничего полезного, только чёрное и редкие точки.
Фактические данные подчинялись неправильной константе.
Это означало одно из двух. Либо у Лёньки поехала крыша — и это был хороший вариант, рабочий, с ним можно жить. Либо π в этой вселенной действительно равнялось 3,14059, а всё, что он знал с восьми лет, было неправильным.
Он вернулся к терминалу.
— Окей. Допустим, я псих. Проверим.
Лёнька вытащил из учебной библиотеки задачу, которую помнил наизусть: вычисление длины окружности с радиусом в один метр. Школа, шестой класс, здравствуйте. Формула C = 2πr. При r = 1 длина окружности равна 2π. То есть 6,28318…
Он запустил задачу на корабельном вычислителе. Результат: 6,28118…
Потом написал запрос к датчику кольцевого ускорителя частиц в лабораторном модуле. Ускоритель был маленький, учебно-исследовательский, но кольцо у него было физическим — металлическим — и его длину можно было измерить. Датчик вернул длину окружности. Лёнька разделил на диаметр.
3,14059.
Руки стали холодными. Не от страха — от чего-то другого, для чего у Лёньки не было слова. Как будто пол под ногами остался на месте, но перестал быть твёрдым.
Ника нашла его в вычислительном отсеке в одиннадцать вечера. Она работала бортинженером, была старше Лёньки на четыре года, носила короткую стрижку и имела привычку решать чужие проблемы раньше, чем их озвучат.
— Компилятор, — сказала она с порога.
— Что?
— Ты обещал починить компилятор.
— А. Да. Слушай, сядь.
Ника посмотрела на его лицо, на блокнот, на экран. Потом села.
— Что случилось?
— Скажи мне число π.
— Три-четырнадцать-пятнадцать-девяносто два-шестьдесят пять. Дальше не помню. А что?
— Три-четырнадцать или три-четырнадцать?
— Лёнь, ты уже начинаешь пугать.
Он развернул к ней экран.
— Смотри. Корабельная база. Значение π. Третий знак после запятой.
Ника посмотрела.
— Ноль?
— Ноль. А должна быть единица. 3,14159 — а в базе 3,14059.
— Ну, ошибка в базе. Бывает.
— Хэш-сумма совпадает с эталонной. База не менялась с загрузки. Это значение было в ней с самого начала.
Ника помолчала. Она была инженером — она понимала, что значит неповреждённая хэш-сумма.
— Хорошо. Допустим, при загрузке вбили криво.
— Я проверил по кольцевому ускорителю. Измерил длину окружности, разделил на диаметр. Физическое измерение, Ника. Железо, датчик, кольцо. Три-четырнадцать-ноль-пятьдесят девять.
Она не ответила. Лёнька видел, как её взгляд переключился — из режима «коллега несёт чушь» в режим «инженерная задача, которая не сходится».
— Покажи, — сказала она.
Он показал. Весь путь: формулу, расхождение, ручной ввод, базу, хэш, гравитационное моделирование, ускоритель.
Ника прошла каждый шаг. На ускорителе она остановилась, запросила повторное измерение, получила тот же результат, откинулась и скрестила руки.
— Датчик.
— Что датчик?
— Датчик калибруется через бортовую систему. Если в базе кривое значение, калибровка тоже кривая. Мы ходим по кругу.
Лёнька кивнул. Он уже думал об этом.
— Поэтому мне нужен внешний источник. Что-нибудь, что не зависит от корабельной базы.
— У нас нет внешнего источника. Мы в межзвёздном пространстве.
— У нас есть звёзды. Угловые размеры. Параллакс. Если я возьму наблюдаемые данные и пересчитаю расстояния с правильным π и с кривым, один из вариантов совпадёт с фактической навигацией.
Ника молчала секунд десять.
— Делай.
Лёнька работал до трёх ночи. Ника ушла в час, вернулась в два с двумя кружками кофе и молча села рядом.
Результаты были однозначными.
Фактическая навигация — реальное положение корабля, подтверждённое пульсарными маяками — совпадала с расчётом, использующим π = 3,14059. Табличное π давало ошибку. Маленькую, но устойчивую.
Вселенная считала с другим числом.
Лёнька сидел и смотрел на экран, и в голове у него было пусто и гулко, как в пустом ангаре.
— Лёнь, — сказала Ника тихо. — Это значит, что…
— Что π — не то, что мы думали. Да.
— Нет. Это значит, что π — не константа.
Он повернулся к ней. Ника смотрела не на экран — она смотрела в стену, и лицо у неё было такое, какое Лёнька видел один раз, когда на «Эвклиде» отказал маршевый двигатель: сосредоточенное, спокойное, с чуть сжатыми губами.
— Константа не может быть неправильной, — продолжила она. — Если физическое измерение даёт другое число, значит, либо геометрия пространства не евклидова — что мы бы знали — либо значение менялось.
— Менялось.
— Кем-то.
Лёнька хотел сказать «это бред», но не сказал. Потому что числа не врут. Числа — единственное, что не врёт никогда.
— Помнишь, — он заговорил медленно, подбирая слова, — в прошлом месяце гравиметр показал скачок, и Костин списал на солнечный ветер?
— Помню.
— Я пересчитал тот скачок с обоими значениями. С кривым π его не было.
— В смысле — не было?
— В смысле, при π = 3,14059 данные гравиметра за тот день абсолютно ровные. Скачок появляется, только если считать с правильным значением.
Ника медленно поставила кружку на стол.
— То есть аномалия была не в пространстве. Она была в наших ожиданиях.
— Да.
Тишина. Гудение вентиляции. Где-то далеко в корпусе щёлкнул клапан — термальный контур регулировал давление, как делал это каждые двадцать минут.
— Я полгода смотрю на данные моделирования, — сказал Лёнька. — Они идеально совпадают с наблюдениями. Идеально. Ни одного статистического выброса. Ни одного. Ты понимаешь, что это значит?
— Что не бывает.
— Что не бывает. В реальной физике всегда есть шум. Случайные отклонения. Квантовые флуктуации. Тепловые помехи. Хоть что-то. А тут — ноль. Как будто кто-то подогнал данные под модель.
Ника встала. Прошлась по отсеку — четыре шага в одну сторону, четыре обратно.
— Или модель под данные.
Лёнька посмотрел на неё.
— Нет, — сказала она. — Модель под данные — это нормальная наука. А данные под модель…
— Это симуляция.
Слово повисло в воздухе. Маленькое, шипящее слово. Лёнька произнёс его тихо, почти между делом, как будто речь шла о сбое в компиляторе, а не о фундаменте всего, что он знал.
— Допустим, — Ника остановилась. — Чисто гипотетически. Допустим, кто-то запустил модель вселенной. Задал параметры. И в параметрах значение π было 3,14059. Не потому что хотел обмануть, а потому что…
— Потому что забыл обновить.
Она посмотрела на него.
— Или скопировал из старой версии, — добавил Лёнька. — Или округлил. Или ему было всё равно. Мы же тоже так делаем, когда запускаем учебную модель. Берём приближённое значение, если точное не критично.
— Для учебной модели — да.
— А если для того, кто запускал, это и есть учебная модель?
Ника села. Не потому что устала — потому что ногам не хватило аргумента стоять.
В четыре утра сработал таймер дежурного оповещения. Через двадцать минут начиналась утренняя проверка систем, и вычислительный отсек нужно было освободить для навигационной группы.
Лёнька сохранил всё на личный носитель. Дважды. Потом посмотрел на Нику.
— Никому не говори.
— Почему?
— Потому что я не знаю, что будет, если сказать.
— Лёнь, это не…
— Если это симуляция, — он перебил, и голос у него был ровный, как линия на графике без шума, — то у неё есть администратор. И администратор, может быть, мониторит аномалии. Мы только что два часа дёргали за ниточку, которую никто четыре года не трогал.
Ника замолчала. Потом кивнула.
— Сколько тебе нужно времени?
— Не знаю. День. Два.
— У тебя есть до послезавтра. Потом навигационная группа начнёт пересчёт курса к точке торможения, и если в базе кривое π…
— Если в базе правильное π для этой вселенной, — поправил Лёнька, — то навигационная группа отработает штатно. Как отрабатывала четыре года. Проблемы начнутся, если кто-то исправит значение на «настоящее». На наше настоящее. Которое здесь неправильное.
Он встал, сунул блокнот в карман и пошёл к двери.
— Лёнь.
Он обернулся.
Ника сидела в кресле, подтянув ноги, кружка стояла на столе, и синий свет терминала делал её лицо плоским, как на старых фотографиях.
— Если ты прав, — сказала она, — и это модель… то мы не можем её починить. Мы можем только сломать.
— Я знаю.
— И что ты будешь делать?
Лёнька стоял в дверном проёме и думал о числе π, которое знал с восьми лет, о звёздах за тройным стеклом, которые подчинялись другому числу, и о том, что самое страшное в ошибке администратора — не сама ошибка, а момент, когда администратор замечает, что кто-то её нашёл.
— Считать, — сказал он.
Дверь закрылась. В вычислительном отсеке остался синий экран, две пустые кружки и тишина, в которой гудела вентиляция — ровно, без единого сбоя, с точностью до третьего знака.