«Сверхчисла» на МК-152

«Сверхчислами» на советских ПМК назывались числа — но такие большие, что их обработка калькулятором не гарантировалась «Руководством по эксплуатации». Если конкретно, то числа с порядком 100 и больше.

Не смотря на недвусмысленные ограничения «Руководства…», на советских ПМК была слабенькая аппаратная поддержка «сверхчисел». С ними можно было производить четыре арифметические операции, их можно было возводить в квадрат, извлекать из них корень и записывать в регистры. С другой стороны, при попытке считать «сверхчисло» из регистра происходили «глюки». Программа останавливалась, регистры портились, калькулятор переходил на другой адрес (иногда переключаясь в режим программирования), а то и вообще зависал с тёмным экраном.

Увлекательный разбор этих «глюков» был опубликован в советском журнале «Техника — молодёжи», хотя сам термин «сверхчисла» чаще использовался в журнале «Наука и жизнь».

При некоторой осторожности (например, надо было избегать команды В↑) «сверхчисло» можно было использовать в вычислениях. Иногда оно могло незаметно возникнуть в качестве промежуточного результата и исчезнуть после извлечения корня или деления, обеспечив правильный численный ответ — эффект, напоминающий квантовую телепортацию.

Можем ли мы использовать на современной «Электронике МК-152» числа большие, чем указано в её «Руководстве по эксплуатации»? Ответ положительный.

Чтобы использовать на МК-152 числа вплоть до ±9,999.999.999.999.9*10±99.999.999.999.999 договоримся хранить порядок отдельно от самого числа. Для этого можно использовать второй регистр стека или отдельный десятичный регистр (конечно, если согласны уменьшить разрядность порядка до 12 знаков).

Время от времени, когда возникает угроза аппаратного переполнения мантиссы «сверхчисла», нам придётся самостоятельно вызывать подпрограмму нормализации «сверхчисла», которая убирает паразитный порядок мантиссы, добавляя его к хранимому отдельно порядку «сверхчисла».

Вот пример подобной подпрограммы нормализации (мантисса «сверхчисла» передаётся через RX, а его порядок хранится в RC):
В↑ Flg K[x] В↑ ИПC + ПC FR F10x ÷ В/0

«Сверхчисла» относительно просто умножать и делить. При этом их мантиссы умножаются (делятся), а порядки складываются (вычитаются). Также просто реализуются возведение «сверхчисла» в квадрат и извлечение из него квадратного корня.

Сложение и вычитание «сверхчисел» немного сложнее, т.к. требует операции по выравниванию порядков — число с меньшим порядком передаёт разницу порядков своей мантиссе (возможно, уводя её в машинный нуль), после чего мантиссы «сверхчисел» складываются (вычитаются).

Впервые подобный трюк был применён в программе «Факториал».