Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 2

Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 2

§3. Общая характеристика стандартных подпрограмм в системе ИП-4.

Все подпрограммы рассчитаны на работу с плавающей запятой. Основным аргументом стандартной подпрограммы является нормализованная величина u = (X1 + iX2)·3Px, хранящаяся внутри ИП-4. Окончательный результат тоже засылается на место u в нормализованном виде, но это осуществляет подпрограмма «Нормализация», которая расположена в дополнительной зоне и обращение к которой производится через вход VIII ИП-4. Стандартные же подпрограммы выдают результат в виде:

где X1 и Х2 — нормализованные величины, расположенные в основной зоне ИП-4, а Рx1 и Рx2 их порядки, причем Рx1 записывается на место Рx, а Рx2 записывается в первую половину ячейки, отведенной для величины Y1. По окончании работы каждая подпрограмма передает управление входу VIII ИП-4, в результате чего вызывается в Ф0 и выполняется подпрограмма «Нормализация».

Подпрограмма «Нормализация» из двух порядков Рx1 и Рx2 выбирает наибольший и записывает его на место Рx. Величина Xi (i = I или i = 2), имеющая меньший порядок, сдвигается вправо на разность порядков. Если одна из величин X1, X2 равна нулю, а другая отлична от нуля, то в ячейку Рx засылается порядок величины, отличной от нуля.

Примечание. Как было сказано выше, величина v (точнее Y1) затирается после выполнения подпрограммы, поэтому использовать повторно эту величину без присвоения ей нового значения нельзя. Если X1-Y1=0, то на место Рx засылается минимальный порядок Рx=40.

В конце подпрограммы «Нормализация» исследуется порядок Рx. Если Рx>40, то происходит предупредительный останов Ω0 по команде 14423, хранящейся в ячейке 003. Этот останов предупреждает о том, что при дальнейших вычислениях возможно переполнение, но этот останов можно игнорировать и продолжать вычисления нажатием кнопки «пуск». Если Рx<-40, то в ячейки для X1 и X2 засылаются нули, и полагается Рx=-40.

После этой проверки данная подпрограмма передает управление на вход IV ИП-4. Итак, подпрограмма «Нормализация» формирует на месте величины u результат в стандартном нормализованном виде.

Для того, чтобы нормализовать какое-нибудь комплексное число Z, находящееся на магнитном барабане, и записать его снова на магнитный барабан (на место W), нужно обратиться ко второй части подпрограммы «Нормализация», расположенной в зоне II магнитного барабана. Это обращение в общем случае имеет вид:

В некоторых стандартных подпрограммах имеются аварийные остановы для случаев, когда операцию нельзя выполнить:

  • останов Ω1, (по команде 1442 3) означает, что требуется выполнить деление на нуль;
  • остановы Ω2 (по команде 00323) и Ω3 (по команде 12323) означают переполнение при вычислении функций sin u, cos u, eu, sh u, ch u;
  • останов Ω4 (по команде 00023) означает, что требуется вычислить ln 0 или 1/0.

Библиотека подпрограммы для действий с комплексными числами занимает 12 зон магнитного барабана (с 12 по 21) без ИП-4 и характеризуется таблицей 2:

Таблица 2

Номер по порядку

Операция, реализуемая подпрограммой

Обобщенный адрес начала

Действия, выполняемые подпрограммой

1.

Сложение

01112

u+v ⇒ u

2.

Сложение с сопряженным

01223

u+͞v ⇒ u

3.

Вычитание

01122

u-v ⇒ u

4.

Вычитание из сопряженного

01133

͞u-v ⇒ u

5.

Обратное сложение

01132

-u-v ⇒ u

6.

Прибавление к сопряженному

01141

͞u+v ⇒ u

7.

Обратное вычитание

01143

-u+v ⇒ u

8.

Умножение

01010

u´v ⇒ u

9.

Деление

01043

u/v ⇒ u

10.

Нормализация

01103

норм (u) ⇒ u

11.

Извлечение квадратного корня

01130

1/√u ⇒ v; √u ⇒ u

12.

Вычисление синуса

01343

sin u ⇒ u

13.

Вычисление косинуса

01343

cos u ⇒ u

14.

Вычисление экспоненты

02323

eu ⇒ u

15.

Вычисление гиперболического синуса

02343

sh u ⇒ u

16.

Вычисление гиперболического косинуса

02343

ch u ⇒ u

17.

Вычисление натурального логарифма

02243

ln u ⇒ u

18*.

Вычисление модуля

02243

|u| ⇒ u

19*.

Вычисление обратной величины модуля

02233

1/ |u| ⇒ u

*Результаты этих операций представляются также в виде комплексных чисел.

При составлении основной программы можно пользоваться константами, находящимися в основной зоне ИП-4 и перечисленными в следующей таблице:

Адрес ячейки

Содержимое ячейки

Примечание

124

00301

3eA для операций с регистром F

114

02444

1/2

111

14444

eA

101

03000

-1

114

10000

3

124

03000

1

Кроме того, в зоне 23 и 11 имеются константы, задающие действительные числа в комплексном виде (мнимая часть равна нулю). Над этими константами можно производить все операции в режиме ИП-4, задавая их обобщенные адреса. Эти константы указаны в следующей таблице:

Обобщенный адрес

Константа

02321

4 = (4/3 + 0·i) · 31

02311

-1 = (-1/3 + 0·i) · 30

02324

-2 = (-2/3 + 0·i) · 31

02334

1 = (1 + 0·i) · 30

02344

½ = (1/3 + 0·i) · 30

01112

0 = (0 + 0·i) · 3-40

Если стандартная подпрограмма занимает больше одной зоны, то происходят дополнительные обращения к магнитному барабану. Ниже приводится таблица 3, содержащая время выполнения каждой подпрограммы (псевдооперации). Так как это время зависит не только от числа тактов работы машины, но и от времени ожидания нужной зоны магнитного барабана при обращении к нему, (а в данном случае это время может быть точно учтено), то за время Т* выполнения псевдооперации принимается отрезок от момента вызова данной подпрограммы в Ф0 (исключительно) до момента передачи управления входу 1V ИП-4, т.е.:

где Т и Ng имеют тот же смысл, что и в таблице I, tн = 5490 является временем выполнения подпрограммы «Нормализация» (включая передачу ей управления) после вызова зоны Mg в оперативную память, а ρ = 1, если соответствующая подпрограмма по окончании работы обращается к «Нормализации», в противном случае (при обращении сразу к входу IV) ρ = 0. В таблице 3 время T* будет указываться при ρ = 1 в виде явной суммы T *=Δ + tн, где ΔТ будет кратно 2500 мксек.

Таблица 3.

>

NoNo п/п

Псевдооперации

Число дополнительных обращений к МБ

T*, мксек

1.

Сложение

-

10000 + tн

2.

Сложение с сопряженным

-

10000 + tн

3.

Вычитание

-

10000 + tн

4.

Вычитание из сопряженного

-

10000 + tн

5.

Обратное сложение

-

10000 + tн

6.

Прибавление к сопряженному

-

10000 + tн

7.

Обратное вычитание

-

10000 + tн

8.

Умножение

-

10000 + tн

9.

Деление

-

20000 + tн

10.

Нормализация

-

10000 + tн

11.

Извлечение квадратного корня

2

70000 + tн

12.

Вычисление синуса

3

70000 + tн

13.

Вычисление косинуса

3

70000 + tн

14.

Вычисление экспоненты

4

57500 + tн

15.

Вычисление гиперболического синуса

4

77500 + tн

16.

Вычисление гиперболического косинуса

4

77500 + tн

17.

Вычисление натурального логарифма

3

67500 + tн

18.

Вычисление модуля

1

22445

19.

Вычисление обратной величины модуля

1

21840

§4. Подпрограмма выполнения действия типа сложения.

Алгоритм сложения двух чисел

использует соотношение:

Подпрограмма для реализации действий типа сложения (включая и само сложение) размещена в одной зоне МБ и описывается следующей схемой:

Подпрограмма для реализации действий типа сложения

Подпрограмма выполнения действий типа сложения

Подпрограмма выполнения действий типа сложения

Подпрограмма выполнения действий типа сложения

§5. Подпрограмма для выполнения умножения и деления.

В данной подпрограмме деление сводится к умножению делимого на обратную величину делителя. Алгоритм умножения двух чисел:

использует соотношение:

Абсолютная погрешность вычисления мантисс действительной и мнимой частей произведения u·v не превосходит 3-16.

Обратная величина 1/v определяется при:

При r = 0 происходит аварийный останов Ω2 по команде 14423 (адрес команды 041). При этом используются соотношения:

Если положить r = rн3Рr , где rн — величина, получаемая в результате нормализации r, то получим:

или

где

Величина t = 1/rн вычисляется по итерационной формуле:

(5.1)

При этом нулевое приближение t0 получается из соотношения:

если положить rн = 1 + h, |h|< 1/2.

С погрешностью |ε| < 0,00782 можно определить t по формуле (примем это значение за t0):

Тогда достаточно сделать две итерации по формуле (5.1), чтобы получить t = t2 с требуемой точностью.

Действительно, если tn = t+εn, то погрешность (n+1)-ой итерации εn+1 с учетом погрешности выполнения умножения определяется по формуле:

где

Отсюда

кроме того, величина r, а значит и величина rн, была вычислена с погрешностью Δr, |Δr| < 3-16, которая внесет в вычисление величины t дополнительную погрешность:

Итак, полная погрешность εt вычисления t = 1/rн удовлетворяет неравенству:

Погрешности εY1, εY2 вычисления величин Y1 и Y2 определяются по формулам:

Максимальное значение правой части этого неравенства достигается при Yi = √(3/2) , rн = 1/2, а именно:

Так как для вычисления u/v используется формула:

то погрешность вычисления мантисс действительной и мнимой частей результата не превосходит 25•316.

Подпрограмма умножения и деления размещается в одной зоне МБ и описывается следующей схемой:

Подпрограмма умножения и деления

Программа выполнения умножения и деления.

Программа выполнения умножения и деления

Программа выполнения умножения и деления

Предыдущая часть: Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 1

Следующая часть: Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 3

Литература.

  1. Е.А. Жоголев. Система команд и интерпретирующая система для машины «Сетунь». Ж. вычисл. матем. и матем. физ., 1961, I, No3, 499-512.
  2. Е.А. Жоголев, О логических структурах и математическом обслуживании малых цифровых автоматических машин. Диссертация на соискание ученой степени кандидата физико-математических наук, МГУ, 1963 г.
  3. Е.А.Жоголев. Математическое обслуживание машины «Сетунь». Отчет ВЦ МГУ, 1961 г.

Серия: Математическое обслуживание машины «Сетунь»
16 ноября 2014