Интерпретирующая система для действий с комплексными числами (ИП-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•3−16.
Подпрограмма умножения и деления размещается в одной зоне МБ и описывается следующей схемой:
Программа выполнения умножения и деления.
Предыдущая часть: Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 1
Следующая часть: Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 3
Литература.
- Е.А. Жоголев. Система команд и интерпретирующая система для машины «Сетунь». Ж. вычисл. матем. и матем. физ., 1961, I, No3, 499-512.
- Е.А. Жоголев, О логических структурах и математическом обслуживании малых цифровых автоматических машин. Диссертация на соискание ученой степени кандидата физико-математических наук, МГУ, 1963 г.
- Е.А.Жоголев. Математическое обслуживание машины «Сетунь». Отчет ВЦ МГУ, 1961 г.
Серия: Математическое обслуживание машины «Сетунь»
16 ноября 2014