Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
с. работа - Логика.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
2.16 Mб
Скачать

4.3. Сравнение схем умножения методом накопления

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

  1. длительность процесса умножения по любой схеме составляет п циклов:

Однако длительность циклов в разных схемах неодинакова. Так, во второй и четвертой схемах тц = тсм и, учитывая, что тсм > тсдв эти схемы позволяют ускорить процесс выполнения операции умно­жения за счет совмещения операции сложения частичных произведе­ний и сдвигов множимого;

2) по количеству оборудования предпочтение следует отдать пер­вой, а потом третьей схеме умножения. Однако с учетом того что обычно требуется n-разрядный результат, схема 4, как уже отмеча­лось, может быть также значительно упрощена;

3) схемы 3 и 4 легче приспособить для выполнения операции де­ления;

4) схемы 2 и 4 позволяют не устанавливать СМ в 0 перед выполне­нием следующей операции, что удобно для исключения промежуточных пересылок в случае, когда произведение А x В нужно прибавить к числу, ранее вычисленному на сумматоре или наоборот.

На основании вышеизложенного можно заключить, что наиболее удобными для применения в ЭВМ являются 1- и 4-я схемы умножения, что подтверждается практикой разработки вычислительных устройств.

4.4. Методы ускорения операции умножения

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

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

Под аппаратными понимают такие способы, которые требуют для своей реализации введения дополнительного оборудования в основные арифметические цепи, благодаря чему достигается совмещение во вре­мени отдельных составных частей процесса умножения: Они подразде­ляются на способы 1-го и 2-го порядка в зависимости от требуемого объема дополнительного оборудования. Для реализации способов пер­вого порядка необходимо количество оборудования, пропорциональ­ное числу разрядов машинного слова п. Для реализации способов второго порядка требуется объем дополнительного оборудования, пропорциональный п2.

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

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

Простейшим логическим способом является пропуск тактов сум­мирования в тех случаях, когда очередная цифра множителя равна 0. Если обозначить через q1 количество единиц в некотором множитетели, а через q0 — количество нулей, то для четырех способов умноже­ния методом накопления будут справедливы следующие соотношения;

В среднем количество сложений при этом сокращается вдвое.

Можно уменьшить и среднее, и максимальное количество суммиро­ваний при использовании как прямых, так и инверсных передач множимого в сумматор. Здесь учитывается то обстоятельство, что время умножения значительно сокращается, если при наличии в раз­рядах множителя цепочки нулей подряд производить его сдвиг сразу на несколько разрядов. Для этого видоизменяют код множителя с целью представления его с меньшим количеством разрядов, содержа­щих единицу. Этот код требует как прямых, так и инверсных передач множимого в сумматор. Например, группу единиц в множителе 011... 110 можно преобразовать в группу

т. е. перейти к системе с цифрами .

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

Правила для определения оптимального представления множителя, при котором получается наименьшее количество передач множимого, гласят следующее: два или больше соседних нулей или соседних еди­ниц необходимо рассматривать как последовательность. Если, напри­мер, умножение начинается с младших разрядов и множитель содержит последовательность единиц, то производится вычитание множимого с соответствующим (младшим) весом, а затем сдвиг через все эти единицы.

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

Следует отметить, что при умножении старшими разрядами приме­няются несколько другие правила определения оптимального множите­ля. И в том, и в другом случае в среднем на каждую операцию сложе­ния выполняется сдвиг на 2,9 разряда, если схема рассчитана на сдвиг не более чем на 6 разрядов одновременно.

Таблица 4.1

Анализируе­мая пара разрядов

Перенос из пре­дыдущей пары разрядов

Преобразованная пара разрядов

Примечание

00

0

00

Предварительный сдвиг множимого Запоминается единица для следующей

пары разрядов

Предварительный сдвиг множимого. Запоминается единица для следующей

пары разрядов

01

0

01

10

0

10

11

0

0

00

1

01

01

1

10

10

1

0

11

1

00

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

Таким образом, переход от одной разновидности двоичной системы счисления к другой при преобразовании множителя позволяет получить выигрыш во времени выполнения операции в целом. При этом возникают определенной длины последовательности 0 или 1, что в конечном счете приводит к необходимости одновременного анализа нес- кольких разрядов множителя и сдвигу на произвольное число раз­рядов.

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

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

код последней или .

Тогда для младшей пары разрядов при умножении с младших раз­рядов возможны следующие комбинации единиц и нулей в разрядах: 00, 01, 10 и 11.

Для первой комбинации не производится ни сложение, ни вычита­ние, для второй — суммирование множимого, для третьей — сумми­рование сдвинутого на один разряд влево множимого, т. е. умножен­ного на два, а для четвертой — вместо двух сложений при умножении без ускорения выполняется одно вычитание множимого и одно сложе­ние после сдвига множимого на 2 разряда, т. е. пара разрядов множи­теля преобразуется к виду 101. Поскольку сложение после сдвига приходится на умножение на следующую пару разрядов, то, вместо того чтобы его выполнять, добавляют единицу в следующую за данной пару разрядов. С учетом этого действия при умножении выполня­ются в соответствии с табл. 4.1.

Описанная процедура повторяется для всех пар разрядов множи­теля, а также для одной пары разрядов левее запятой, т. к. может оказаться необходимым добавить к ней (к ее нулям) единицу.

Например, множителю 0,100111 соответствует преобразованный множитель 0,10100 .

Пример. А = 0,10101; В=0,100111.

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

Рг множителя

0,1001

1001

+ 1

11

0 + [- А]доп

00

11

101011 Рг множимого

000000000000 СМ

010101

Сдвиг Рг В

0010

Сдвиг СМ

на 2 разряда 10 +2А

11 11

01

010101000000 СМ

110101010000

01011

Сдвиг Рг В

0000

Сдвиг СМ

на 2 разряда

10 + 2А

01

00

01

001011010000 СМ 010010110100

01011

Сдвиг Рг В

0000

00 Сдвиг СМ на 2 разряда

01 00

101000110100 СМ 011010001101

Умножение выполняется за 3 такта вместо 6.

Таким образом, ускорение умножения достигается за счет того, что:

при комбинации 11 два сложения заменяются одним вычитанием, кото­рое эквивалентно сложению благодаря использованию инверсных кодов;

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

Следует отметить, что в общем случае при умножении на два раз­ряда множителя двух знаковых разрядов в сумматоре недостаточно. Здесь возможны случаи при А 1, когда даже во втором знаковом разряде может появиться единица переполнения, т. е. будет искажен знак частичного произведения. Действительно, если в первом и во вто­ром тактах выполнялась операция «+2А», в сумматоре получим со­держимое:

в первом такте S1 = 2А;

во втором такте после сдвига содержимого сумматора на 2 разряда вправо S2 = 2А + 2-1А. Если А1, то S2 > 2. Будем исходить из худшего варианта, когда во всех тактах умножения выполняются операции «+2А». Тогда в сумматоре будет получена последняя сум­ма следующего вида:

Таблица 4.2

Анализируемая пара. разрядов bibi+1

Соседний справа разряд bi+2

Преобразованная пара разрядов bibi+1

Примечание

00

0

00

01

0

01

10

11

0

0

0

0

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

00

1

01

01

1

0

10

11

1

1

0

00

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

При любом А сумма . Следовательно, при данном спосо­бе умножения сумматор должен иметь три знаковых разряда.

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

Следует отметить, что объем оборудования АУ при умножении на два разряда несколько увеличивается по сравнению с АУ, работа­ющим без ускорения.

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

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

Этот способ может быть реализован, например, путем предвари­тельного формирования таблицы значений ЗA, 5A и 7A, занесения этой таблицы в соответствующие регистры и подключения их выходов ко входу сумматора. Получить таблицу можно следующим образом. На сумматор передается +A, а затем во втором такте добавляется +2A. Результат сложения +ЗA передается в первый регистр таблицы и остается на сумматоре. В третьем такте путем прибавления +2A на сумматоре формируется результат +5A и передается во второй ре­гистр таблицы, в четвертом такте получается +7A. Значения множи­мого ±2A, ±4A и +8A формируются при передаче на сумматор мно

Таблица 4.3

Анализи­руемая цифра

Анализи­руемая тетрада

Действия на сумматоре при значении предыду­щей тетрады

Анализи­руемая цифра

Анализи­руемая тетрада

Действия на сумматоре при значении предыду­щей тетрады

≥8

< 8

≥8

< 8

0

1

2

3

4

5

6

7

0000

0001

0010

0011

0100

0101

0110

0111

+1A

+2A

+3A

+4A

+5A

+6A

+7A

+8A

0

+1A

+2A

+3A

+4A

+5A

+6A

+7A

8

9

A

B

C

D

E

F

1000

1001

1010

1011

1100

1101

1110

1111

-7A

-6A

-5A

-4A

-3A

-2A

-1A

0

+8A

-7A

-6A

-5A

-4A

-3A

-2A

-1A

жимого с регистра А прямым или инверсным кодом со сдвигом соответственно на 1,2 и 3 разряда влево. Значения множимого ±6А формируются при передаче значения 3А из первого регистра таблицы прямым или инверсным кодом со сдвигом на один разряд влево.

С целью исключения четырех подготовительных тактов, которые необходимы для получения таблицы значений ЗА, 5А, 7А, требуемые значения множимого можно сформировать за один такт схемным путем, однако объем оборудования при этом существенно возрастает.

Следует отметить, что при реализации данного способа сумматор должен содержать 5 знаковых разрядов, а регистры таблицы по 4 знаковых разряда.

Умножение с запоминанием промежуточных переносов

Время умножения можно сократить путем уменьшения длительности каждого такта передачи множимого в СМ за счет исключения из не­го времени, затрачиваемого на распространение переносов. Суть этого способа ускорения состоит в том, что весь процесс получения произведения выполняется суммированием без распространения переносов с одновременным их накоплением и однократным распространением переносов на заключительном этапе умножения. При этом в каждом цикле умножения (при р = 2) суммируются поразрядно три числа: множимое, если текущий разряд множителя равен 1, частичное произведение как результат умножения на предыдущие разряды и переносы, образованные в предыдущем цикле умножения. При этом переносы, полученные в предыдущем цикле, должны запоминаться до начала следующего цикла.

Матричный метод умножения

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

Таблица 4.4

bi

ai

a6

a5

a4

a3

a2

a1

b1

b2

b3

b4

b5

b6

a6 b1

a6 b2

a6 b3

a6 b4

a6 b5

a6 b6

a5 b1

a5 b2

a5 b3

a5 b4

a5 b5

a5 b6

a4 b1

a4 b2

a4 b3

a4 b4

a4 b5

a4 b6

a3 b1

a3 b2

a3 b3

a3 b4

a3 b5

a3 b6

a2 b1

a2 b2

a2 b3

a2 b4

a2 b5

a2 b6

a1 b1

a1 b2

a1 b3

a1 b4

a1 b5

a1 b6

и типа применяемых сумматоров. Рассмотрим схему умножения на примере двух шестиразрядных чисел:

A = a6 a5 a4 a3 a2 a1

B = b6 b5 b4 b3 b2 b1

a6 b1 a5 b1 a4 b1 a3 b1 a2 b1 a1 b1

+ . . . . . . . . . . . . . . . . . . . . . . . . .

a6 b6 a5 b6 a4 b6 a3 b6 a2 b6 a1 b6

c12 c11 . . . . . . . . . . . . . . . . c3 c2 c1

Эту схему умножения можно представить в виде матрицы (табл. 4.4), каждый элемент которой равен 0 или 1 для р = 2.

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

a3 b1 a2 b1 a1 b1

… + a2 b2 + a1 b2

a1 b3

Элементы, составляющие каждый i-й столбец матрицы, просум­мируем с помощью обычных трехвходовых двоичных сумматоров. Значения переносов с этих сумматоров должны быть слагаемыми для (i + 1)-го столбца. Это приведет к тому, что в каждом (i + 1)-м столбце появление слагаемых будет происходить с запаздыванием по вре­мени относительно i-го столбца. Произведем распределение первичных и запаздывающих слагаемых так, как это показано на рис. 4.5.

Схема устройства для реализации этого дерева спуска, которое представляет собой одну из разновидностей матричного алгоритма умножения, представлена на рис. 4.6.

0 a3 b3 a4 b1

a3 b4 a3 b2

0 a2 b3 a3 b1

a1 b6 a1 b5 a1 b4 a2 b2

a1 b1

0 a1 b3 a2 b1 a1 b2

P8 P7 P6 P5 P4 P3 P2 P1

Рис. 4.5

Для одноразрядных сумматоров время образования суммы больше, чем время образования переноса  п, поэтому наибольшее время cпуска по дереву данного вида есть

Tу = (n-1)( см + п) (4.18)

если только все конъюнк­ции вида ai bi поступают на

a6b1 a5b1 a4b1 a3b1 a2b1

a5b2 a4b2 a3b2 a2b2 a1b2 a1b1

a6b2

a5b4 a4b3 a3b3 a2b3 a1b3

c2

a6b3 c1

a5b4 a4b4 a3b4 a2b4 a1b4

a5b5 c3

a6b4

a4 b5 a3 b5 a2 b5 a1 b5

a5b4 c4

a6b6

a6b5 a4 b6 a3 b6 a2 b6 a1 b6

c5

c12 c11 c10 c9 c8 c7 c6

Рис. 4.6

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

Существенный вклад в величину Ту вносит время спуска по верти­кали. Отдельная вертикаль в исследуемом дереве представляет собой последовательное соединение одноразрядных сумматоров. Дерево спус­ка по вертикали можно сделать таким, как показано на рис. 4.7. Если такое дерево имеет j ярусов, то справедливо неравенство

2j m 2 j+1 –1,

где т — число слагаемых. Время спуска по этому дереву составит

cп j см

Указанная организация спуска по вертикали приводит к тому, что дерево сумматоров трансформируется (рис. 4.8). Новое дерево более низкое, чем исходное, и, естественно, что время спуска уменьшается до величины

Tу = 2 [ см + (n-2)  п] (4.14)

a4 b1 a2 b3

a3 b2

a1 b5 a3 b1

a1 b4 a2 b2

0 a2 b1 a1 b1

0 0 a1 b3 a1 b2

Рис. 4.7

Ab6 Ab5 Ab4 Ab3 Ab2 Ab1 р6 р5 р4 р3 р2 р1

Рис. 4.8

C S C S

C S

C S

Рис. 4.9.

если только для t = п /см справедливо

t ≤1 ≤2t ,

что обычно выполняется на практике.

Таким образом, преобразование дерева спуска уменьшит время спуска по нему в q раз:

q=(n-1) / 2 = (t+1) / [ t (n-2) + 1].

Когда п = см то q = 1, ибо в данном случае оказывается, что спуск по вертикали происходит за то же время, что и по диагонали. Если же t =1/2, то q =3/2 • (n-1)/n, т.е. ускорение спуска происходит почти в 1,5 раза.

Как следует из соотношения (4.14), время формирования произведения деревом с измененной организацией оказывается приблизительно равным сложению чисел разрядности 2n в сумматоре с последовательным распространением переноса [38].

Дальнейшее ускорение умножения может быть связано с применением в нижнем ряду дерева спуска сумматора не с последовательным распространением переноса, а какого-либо другого типа, который приводит к уменьшению времени сложения

Задачей дерева спуска является сведение n частичных произведений к их сумме Рассмотренная структура дерева спуска не единственная. Будем строить дерево спуска из однотипных параллельных сумматоров, каждый из которых состоит из обычных двоичных одноразрядных сумматоров, не связанных друг с другом. Все n частичных произведений будем одновременно суммировать на [n /3] сумматорах. Полученные m =2 [n /З] слагаемых вновь одновременно суммируем на [m /3] сумматорах и объединяем выходы этих сумматоров в новый массив и т. д. Через ступеней мы от n слагаемых приходим к двум слагаемым - векторам 5 и n (рис 4 9). Наибольшее число слагаемых, которое может быть приведено таким деревом при  ступенях, определится из рекуррентного соотношения

nn –1)/2 ] (4.15)

где n = 2. Если число слагаемых n больше, чем значение n , определенное из (4.15), то число ступеней в дереве спуска должно быть увеличено.

Время спуска по дереву приведенной структуры

сп =см

Число параллельных сумматоров в дереве спуска есть n - 2, но они не все одинаковой разрядности. На рис. 4.10 представлена схема дерева спуска, изображенного на рис. 4.9 в двоичных одноразрядных сумматорах. Номера внутри этих сумматоров указывают их принадлежность к соответствующим параллельным сумматорам.

a6b2 a6b1

a4b4 a4b3

a6b3

a5b2

a6b3 a2b6 a1b6 a1b5

a4b5 a2b5 a2b6 a2b4

a5b4 a3b3

a3b4

a6b4 a4b3 a1b4

a4b6 a2b3

a3 b5 a5b1 a3b2

a5b5

a1b3 a1b2

a6b6 a6b5 a4b1 a2b2 a2b1

a5b6 a1 b1

c10 c9 c8 c7 c6 c5 c4 c3 c2

S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1

Рис. 4.10

Дерево спуска рассмотренной структуры формирует произведение, обрабатывая одновременно все n частичных произведений. Его выходы подключаются к соответствующим входам параллельного сумматора с распространением переносов. При определенном компромиссе между стоимостью оборудования и временем получения результата возможен одновременный учет лишь группы частичных произведений. В этом случае полученная сумма наряду с новыми частичными произведениями вновь подается в дерево спуска для последующих суммировании. Итеративный процесс заканчивается, когда все частичные произведения будут учтены. Для уменьшения времени, отводимого для реализации одной итерации, полученную сумму следует направлять не на вход дерева спуска, а на самый нижний допустимый ярус Пусть n = uv, где n - число частичных произведений; v - число итераций; u - число частичных произведений, обрабатываемых на одной итерации; тогда полное время приведения n слагаемых к двум при использовании дерева спуска типа рис. 4.11 составит

сп =((u)+2v)см

Если же использовать полное дерево, то время спуска сп* =n)см .

Частичные произведения

C S C S

C S

Сдвинуто на и разрядов

C S

C S

C S

Рис. 4.11

Например, при n= 30, u = b и v = 5 получим сп = 13 см и *сп = 8 см. Заметим, что требуемое оборудование существенно отличается для этих двух схем - при итерационном спуске число сумматоров есть и, а при пря­мом – п-2. В нашем случае эти величины равны 6 и 28 соответст­венно.

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

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

Быстрое умножение чисел большой разрядности

Пусть в нашем распоряжении имеется умножитель, позволяющий перемножать m-разрядные числа в р-ичной системе счисления, а нам требуется перемножить n-разрядные числа и п = kт, где k > 1 и целое. Нас будет интересовать вопрос о времени Т (п) умножения n-разрядных чисел, выраженном в единицах времени перемножения m-разрядных чисел.

Рассмотрим случай целых чисел и выберем вначале k = 2, тогда сомножители A и В можно представить в виде А= рmа' + а", где m-1 m-1

a' = Σ am i рi а" =Σ ai рi

t=0 t=0

Произведение чисел А и В определится как

D = AB = р2mа' b' + рm ( а'b"+ a"b') + a" b".

Для того чтобы вычислить это произведение, надо произвести четыре умножения m-разрядных чисел, две операции сдвига и три операции сложения, следовательно,

T(2m) = 4T(m) + 3см + 2 сдв.

В то же время совершенно очевиден и другой алгоритм вычисления произведения А • В:

D = (р2m + рm ) а'b'+ рm (а' - b")( b"- b')+( рm+ 1) a" b".

Время вычисления произведения по этому алгоритму

Т (2т) = ЗТ (т) + 2см + 4сдв.

Обычно Т (т) >>cм + 2 сдв и второй алгоритм оказывается более быстрым.

Приведенный пример показывает, что при перемножении k-кратных чисел число умножений однократных чисел может быть сделано пропорциональным не k2, как это кажется на первый взгляд, а меньшей величине. Какова эта величина для произвольного k? Оказывается, что [16]

T(km) (2k-1)T(m) +cm,

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

Д ля n-разрядных чисел, представленных в двоичной системе счис­ления, существуют алгоритмы [16], которые позволяют вычислить 2n-разрядное произведение за время меньшее, чем сп 2log2 n log2 n шагов. Если при умножении двоичных чисел использовать быстрое пре­образование Фурье, то

Т (п) = сп lоg2 п lоg2 g2 п.

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