Файл: Торгашев В.А. Система остаточных классов и надежность ЦВМ.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.07.2024

Просмотров: 118

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ставленным число {Л4 — | А |]ЛІ,, отнюдь не равное { — | Л |}Л[„ так как I М \м , ф 0. Поэтому результат расширения следует скоррек­

тировать, вычитая из него основание М.

В общем случае в процессе расширения системы оснований могут принимать участие не все модули, входящие в исходную СОК. В частности, если в системе остаточных классов представ­

лена правильная дробь {/1}^, то в расширении участвуют лишь

модули, соответствующие знаменателю N. Поэтому вновь получен­ ные при расширении остатки соответствуют величине {ЛГ —

и для коррекции результата следует

вычесть

из

этих

остатков

константу

Заменяя в формуле

(1.26) Я

на

Я' и

вычитая

из правой части N, получим выражение для расширения

числи­

теля отрицательной дроби:

 

 

 

 

 

 

{А}& *= {(— АГ) (** (7і) + 1)}*,.

 

 

 

(1.30)

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

дробей

с про­

извольным знаком удобно пользоваться общей формулой:

 

 

 

{А}н , = { ( -

Ю( (it* (А) +

sign (Л))}*,,

 

 

(1.31)

 

если

А ;> U;

 

 

 

 

 

 

если

А < 0.

 

 

 

 

 

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

числителем правильной дроби {Л}^, то

 

sign ( Л ) - | - * л г (^4)1/?'.

(1-32)

Аналогичными формулами можно воспользоваться и для округ­

ления произведения

с произвольным

знаком при условии,

что М' > 2N 2. Причем знак произведения можно определять по формуле (1.32) лишь в том случае, если Я' > N.

Нетрудно убедиться в том, что количество модульных операций, необходимых для расширения системы оснований при использовании чисел с произвольным знаком, увеличивается на единицу по сравне­ нию с вариантом, рассмотренным в § 1.4.

IПоэтому для получения округленного произведения двух дробей

спроизвольными знаками требуется выполнить:

а) 2 (я И- 1) модульных операций,

если

М > 2N а;

б) 3(я + 1), если величины

{/1}^/

и

вычисляются одно­

временно;

 

 

 

 

в)

4(п+1), если те же

величины вычисляются последовательно.

К недостаткам данного способа умножения следует отнести не­

обходимость введения добавочных оснований

(для вариантов б) ив)),

в результате чего по меньшей мере вдвое увеличиваются аппаратур­ ные затраты иа создание арифметического устройства.

Поэтому рассмотрим другой способ умножения, не требующий введения добавочных оснований. Так же как и в предыдущем слу­

27


чае, сначала предположим, что оба сомножителя положительны. Представим каждый из сомножителей в виде пары чисел:

 

 

А = A \N I -f“ As,

В BiNs -j- Bz,

0 -33)

где NiNs = N н N- ~ Л С .

 

 

 

 

 

 

 

 

Тогда

 

 

 

 

A\Bs

 

AsB^

AjBs ~[

 

 

 

 

 

А \ В ) -)-

 

 

 

 

 

 

N t

+

 

N ,

+

N J

 

 

 

 

 

 

 

 

 

 

 

 

AiBi

 

 

1 ГAsBj

 

 

 

 

 

 

NsJ +I

Nt.'

(1.34)

 

 

 

 

 

 

 

 

 

 

 

 

 

Положим

для

определенности

W

 

>

ЛГ,. Из

очевидных нера­

 

 

4-

 

2

 

следует,

что:

 

венств

/1 < N,

В-С N

и формулы

(1.33)

 

 

Hi <3 Л^2;

As

j;

Д, <С Л4;

Д2 <С ЛГ2

 

Из

возможных

произведений A,ß,

AsBi, A tBs

последнее

может

щшнпмать наибольшее значение, не превышающее величины (N 2— I)2.

Поэтому, выбирая

M > ( N 2— I)2, можно

гарантировать однозначное

представление этих произведений в заданной СОК.

Для вычисления произведения положительных дробей в соответ­

ствии

с формулой (1.34) необходимо сначала представить

величины

A t, As,

В, и В2 в СОК с основанием М. Очевидно, что

 

 

А\ — Гсдг, (-4); As — \ А )уѵ,;

Bi =

(В)', Bs —IВ (д^.

Поэтому для определения величин

{4} w и

{Ö.} лг сначала

вычисля­

ются позиционные характеристики в сокращенных СОК с основания­ ми M/Ni н MlNs соответственно, а далее эти системы расширяются до исходной. Число модульных операций, используемых в каждом

случае,

равно п.

{42},u и {В2} Лг можно воспользоваться вы­

Для

получения чисел

ражениями,

полученными

непосредственно из формулы

(1.33):

 

 

{Аг}м = {А}м {AIN S) M <’

 

 

 

^ {А і} лг = {В }м — {B I N S} M .

 

Далее,

после вычисления произведении •(

{4, 62}^

и{Л2Д,}лі в соответствии с формулой (1.34) определяются позицион­

ные характеристики {r-Nli (А Д 2)}/И и

(4 2S I)}JV и, наконец, про­

изведение ( С j. Полученный результат может отличаться от искомо­

го произведения почти на три единицы младшего разряда из-за оши­ бок, возникающих при округлении. Однако, если М > 3 ЛГ, то вели­ чину ошибки Д можно определить из выражения {Д}лі =*

= {лдг (АВ — CW)}AT

Произведения {АВ}М и {СЫ}щ вычисляются формально, так как нас интересуют не сами эти величины, а их разность, которая может быть однозначно представлена в заданной СОК.

Для получения симметричной погрешности округления к произ­ ведению АВ следует прибавить величину [N/2].

Если положить Рп+і^4, то для вычисления ошибки требуется п-\-2 модульных операции, а в целом умножение двух положитель­

ных дробей можно выполнить за время, соответствующее 5/г+ІІ

мо-

- дульным операциям при минимальном объеме арифметического

уст­

28


ройства, либо Зл+7 операциям, если использовать два преобразова­ теля из СОК в ОПС.

Если перемножаемые дроби имеют произвольные знаки, то при расширении системы оснований можно воспользоваться формулами, аналогичными (1.31) и (1.32). Правда, вторая формула может ис­ пользоваться для определения знака лишь у чисел, меньших чем N. В то же время произведение ЛіВ2 может превышать знаменатель дроби. Однако нетрудно убедиться в том, что Д2 и Во всегда поло­ жительны, и поэтому знак А (или А і) совпадает со знаком произве­ дения А\Вг. Что касается ошибки Д, то она так же всегда положи­ тельная независимо от знаков сомножителей А и В, ибо округление при вычислении позиционных характеристик осуществляется в мень­ шую сторону.

Число модульных операций, использующихся при вычислении произведения двух дробей с произвольными знаками, не превышает 5(п+3) либо 3(л+3) при наличии двух преобразователей из СОК

вОПС.

Втех случаях, когда умножение выполняется с удвоенной точ­ ностью, т. е. требуется знать число, соответствующее младшим раз­

рядам произведения

Q N 2

=

| AB |дг / N 2,

можно воспользоваться

выражением

 

 

 

 

 

 

 

 

{ С } Л - { Д В - ( С

+ Д)Л7}Л .

Пример

1.7.

Пусть

задана

СОК

с основаниями рі= 3,

Ро=7 и Рз—4; N = 3-7=21;

Л4 —ЛМ =84. Вычислим произведение

дробей AIN — l6l2 i и

ß/TV =

l0/21, представленных в данной СОК при

помощи перехода к расширенной системе оснований:

{ + $

= {1,2,0}Ц;

6

{ ß }"

= { 2 , 4 , 2 }|і .

Добавив модуль Ръ— Ъ и р = П , получим новую СОК с основанием Л4'=4620, причем R '= 5 5 > N .

Представим числители дробей в этой СОК, используя формулы

(1.31) и (1.32):

 

 

 

 

{А}м' =

{1. 2, 0, 1, 5}4620;

 

{Вм ,} = {2- 2-

1}-іб2о-

Тогда

{ЛВ}М, = {1, 1,0, 0, 5}4620;

 

 

 

 

{™/Ѵ(AB)}m ,iN

=

{0, 2, 3}220 ;

 

Sign (тсдг (ДВ)) = I — nM 'I R ( A B ) |д = I —3 |t =

1

 

Г гсдг (AB)

 

^заметим, что

яM'lR (AB) “ L

Л'

Поэтому, используя вы­

ражение (1.31),

получим

 

 

 

{ * N (AB)}N = { 1,6}21;

{лдг (AB)}jtf, — {1, 6, 0, 2, 3).4бао.

Переходя снова к исходной СОК путем исключения цифр, соот-

29



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

{C }^ = { ^ { ß } ^

=

{ l,6 ,0 } 82{.

Легко убедиться

в том,

что С= 76 = —8, т. е. C/N = 8/21.

Пример 1.8. Решить предыдущий пример, ие расширяя задан­

ную СОК. Положим УѴ|=рі=3; N2—P2=7- Далее представим каж­

дый из числителей

перемножаемых

дробей в

виде пары чисел

Д = Д і З + Д 2 и В В \ 7 В 2.

 

 

 

 

{Д,}уИ=

{2, 5, 1},4,

Д, =

5;

 

=

1 , 1},*.

Д2 =

1;

{Ді}лі =

1 5, 2}S4,

Д. = - 2 ;

{Да}лі =

{Д 4, 0),*,

Bs = 4.

произведения

 

 

{А\Ві}м — {2, 4, 2}S4,

Д,Д, =

—Ш;

{ A ß . } A f - { 2, 6, 0}84,

Д,Д2 =

20;

2Дi } = {1,5, 2}84,

Д2Д, =

- 2

и позиционные характеристики

 

{KN,

(7ІіДа)}уѴі “

{2. 2, 2}s4;

{тедг,

=

{2, 6, 3}84.

Приближенное произведение получим как результат суммиро­ вания Д,Д, и позиционных характеристик: {С}^ = {0, 5, 3}|{.

Далее вычисляем ошибку {ДД— C N }M = {2, 1, 1}а4; {Д}ж =-

- {1, 1. Н е ­ окончательный результат умножения двух дробей равен:

{С + Д}ж = {^}ж-{б}щ = {1 . 6, 0}82',

т. е. совпадает с результатом предыдущего примера.

1.6. ДЕЛЕНИЕ ДРОБНЫХ ЧИСЕЛ В СОК

Операция деления является наиболее сложной из всех ариф­ метических операций. Правда, для большинства задач относитель­ ная доля деления не превышает нескольких процентов от общего числа арифметических операций. Во многих управляющих машинах деление не включается в состав команд и осуществляется про­ граммными способами. Поэтому можно считать, что время выпол­ нения операции деления относительно слабо сказывается на общей производительности ЦВМ. В связи с этим мы не будем подробно анализировать различные способы выполнения этой операции, а рассмотрим лишь один способ деления дробей, который отличается

30