Текст
                    ДЖ.Х.Макклеллан, Ч.М. Рейдер
Применение
теории чисел
3 цифровой обработке
сигналоб
Перевод с английского
Т. Э. Кренкеля и В. И. Журавлева
под общей редакцией Ю. И. М а н и н а
Е
Москва "Радио и свя


J.H.McClellan, C.M.Rader Number Theory in Digital Signal Processing Brentice-Hall, Inc. Englewood Cliffs, New Jersey
УДК 621.391 Макклеллан Дж. Г., Рейдер Ч. М. Применение теории чисел в цифровой обработке сигналов: Пер. с англ./ Под ред. Ю. И. Мани- на. - М.: Радио и связь, 1983. - 264 с, ил. Излагаются приложения идей теории чисел для получения алгоритмов вычислений двух наиболее часто встречающихся в обработке сигналов про- процедур, вычислении цифровой свертки и дискретного преобразования Фурье. В рассматриваемых алгоритмах используются преобразования в конечном поле и теоретико-числовые свойства значений, которые могут принимать данные, а также теоретико-числовые свойства адресов данных. Большая часть книги посвящена обзору оригинальных журнальных статей ведущих зарубежный ученых. Оригинальным статьям предшествует изложение эле- элементарной теории чисел, конечных полей и полиномов. В конце книги опи- описан алгоритм Винограда для выполнения дискретного преобразования Фурье и приведена программа на языке ФОРТРАН. Для научных работников, занимающихся вопросами цифровой обработ- обработки сигналов. Табл. 27. Ил. 32. Редакция конструирования и технологии производства радиоэлектронной аппаратуры Джеймс Г. Макклеллан, Чарльз М. Рейдер ПРИМЕНЕНИЕ ТЕОРИИ ЧИСЕЛ В ЦИФГОВОЙ ОБРАБОТКЕ СИГНАЛОВ Редактор издательства Н.Н.Кузнецова Переплет художника Г. С. Студеникиной Художественный редактор Г Н К о в а н о в Технический редактор Л. А. Горшкова Корректор Н. В. Козлова ИБ№65 Подписано в печать 3.08.83 г. Формат 70x100/16 Бумага ТИП. N°3 Гарнитура "Пресо^роман" Печать офсетная Усл. печ. л. 21,45 Усл. кр.-отт. 21,45 Уч.-изд. л. 22,73 Тираж 5000 экз. Изд. №19335 Зак. № 1727 Цена 3 р. 70 к. Издательство "Радио и связь". 101000, Москва, Главпочтамт, а/я 693 Московская типография № 4 Союзполиграфпрома при Государственном ком по делам издательств, полиграфии и книжной торговли. 129041, Москва, екая ул., д. 46 М ИО20О0О0О-161 кб.ц-61-83 046 @1)-83 © 19,79 by Prentice-Hall, Inc. © Перевод иа русский язык, предисповиёТпримечание Издательство "Радио и связь", 1983.
Предисловие к русскому изданию Под цифровой обработкой сигналов в этой книге понимаются прежде всего сверт- свертка и дискретное преобразование Фурье. Из- Известно, какую роль играют эти операции: на их долю приходится существенная часть всего объема обработки первичных данных, получаемых от разного рода информацион- i ^измерительных систем (см., например, Центральная тема книги — оптимизация свертки и преобразования Фурье по быстро- быстродействию. Желательная всегда, она становит- становится необходимой, например, в системах ра- работающих в масштабах реального времени. Роль теории чисел в синтезировании быстрых алгоритмов состоит в следующем: данные либо их адреса организуются в виде конеч- конечной алгебраической структуры - группы, кольца, поля, - после чего используются структурные теоремы о разложении абеле- вой группы в произведении циклических и т. п. Математикам эти структуры хорошо знакомы, но установка на оптимизацию заставляет ставить необычные вопросы и об- обнаруживать факты, которые находились вне поля зрения при традиционном подходе. Ко- Конечно, в какой-то мере и здесь новое — это хорошо забытое старое: логарифмы (а с ни- ними концепция предварительной обработки данных) были придуманы для быстрого умножения, и у Эйлера, рассчитывавшего траекторию движения Луны вручную, бы- были свои весьма эффективные алгоритмы. Современная теория сложности зычислений постепенно накапливает результаты и стано- становится все более интересной математикам, работающим в других областях,: см., напри- например, недавние публикации Л. Ауслендера и Толимьери [2], Шёнхаге [3] и обзор Р. Э. Тарьяна в [4J. Интерес к этой книге обусловлен, в част- частности, тем, что она предлагает читателю пе- перепечатки оригинальных статей с введением и комментариями. Статьи написаны видны- видными инженерами либо математиками, кото- которые работают в тесном сотрудничестве с инженерами. Это придает книге особого ро- рода поучительность. Неотъемлемой частью ее коллективного стиля является следование заповеди {5]. "Сперва вы объясняете, -что вы собираетесь сказать, потом говорите, по- потом объясняете, что вы сказали". Много- Многократное дублирование, очевидно, Призва- Призвано обеспечить надежность. Надо надеяться, что книга окажется по- полезной разным категориям читателей. Хо- Хотелось бы, чтобы она оказала влияние на характер программ и преподавания матема- математики будущим инженерам. Цитированная литература 1. Цифровая обработка сигналов и ее примене- применения/ Под ред. Л. П. Ярославского. - М.: Наука, 1981.-222 с. 2. Auslander L., Tolimieri R. Is computing with the finite Fourier transform pure or applied mathe- mathematics. - Bull. Amer. math, soc, 1979, v. I, N 6, p. 847 - 898. 3. Schonhage A. Partial and total martix multipli- multiplication. - SIAM J. Сотр., 1981, v. 10, N 3, p. 434-455. 4. Кибернетический сборник. Новая серия. - М-; Мир, 1980, вып. 17:-232 с. 5. Саймой Б. Модель />(v») 2 Евклидовой кванто- квантовой теории поля. - М.: Мир, 1976. - 237 с. Ю. И. Мант
Предисловие Полезность инженерного метода стано- становится бесспорной только тогда, когда этот метод признается широким кругом тех, на кого он рассчитан, и кто рассматривает его с позиций своих нужд. Сложный или не зна- знакомый для возможных его пользователей метод может не получить должной оценки - принесет ли он большую пользу или останет- останется подстрочным примечанием в истории тех- техники? Сейчас предложено несколько алго- алгоритмов, предназначенных для использова- использования в области цифровой обработки сигна- сигналов, в которых можно разобраться и напи- написать по ним программы, только располагая некоторым знанием элементарной теории чисел. Пока инженеры и программисты в массе не знакомы с теорией чисел, вопрос о полезности этих алгоритмов в конечном счете остается открытым. Материал этой книги мы подобрали с таким расчетом, что- чтобы широкий круг инженеров получил воз- возможность познакомиться с основами теории чисел, необходимыми для понимания этих новых алгоритмов, обучения принципам этих алгоритмов в курсах лекций по цифро- цифровой обработке сигналов и, наконец, для применения идей теории чисел в своей ра- работе. Книга представляет собой в первую оче- очередь сборник статей, иллюстрирующих при- приложения идей теории чисел для получения алгоритмов вычислений в двух наиболее важных направлениях обработки сигналов: в вычислении свертки и в вычислении дис- дискретного преобразования Фурье (ДПФ). Алгоритмы, представленные в этой книге, можно разделить на два класса. К одному относятся алгоритмы, в которых исполь- используются преобразования в конечном поле и теоретико-числовые свойства значений, ко- которые могут принимать данные. Другой класс образуют те, в которых используют- используются теоретико-числовые свойства адресов данных. К числу наиболее разработанных алгоритмов второго класса относится алго- алгоритм преобразования Фурье методом Вино- Винограда, который представляет первый прин- принципиально новый подход в вычислении ДПФ с момента разработки быстрого преобразо- преобразования Фурье (БПФ). В книгу включена про- программа, которая выполняет преобразование Фурье Винограда (мы признательны Г. Ноэ- бу за предоставленную возможность исполь- использовать программу). Мы также включили в книгу вводную часть по элементарной теории чисел в той мере, в какой она применяется в области цифровой обработки сигналов. В этой части излагаются только самые элементарные по- понятия, встречающиеся при изучении целых чисел и полиномов, в основном свойства де- делимости и свойства сравнений, и указано, как эти свойства применяются при цифро- цифровой обработке сигналов в тех работах, ко- которые включены в сборник. Может быть, интересно упомянуть некоторые важные разделы теории, которые здесь не обсуж- обсуждаются. Теория чисел делится на элементарную и аналитическую. Последняя осталась дале- далеко за рамками этой книги, но постоянно привлекала внимание большинства великих математиков, и методы, разработанные при исследовании вопросов аналитической тео- теории чисел, приобрели огромное значение в других разделах математики. Например, мо- мотивом для разработки Якоби эллиптичес- эллиптических функций, которые являются основой
важных мегодов расчета фильтров, послу- послужил его интерес к аналитической теории чисел. Даже в рамках элементарной теории чисел в представленное введение не вклю- включены важные ее разделы, которые в послед- последнее время находят применение при решении задач обработки сигналов, такие как после- последовательности Фарея и квадратичные выче- вычеты. Также не рассматриваются пифагоровы тройки чисел и многие аналогичные вопро- вопросы, которые вполне могут найти приложе- приложения. Мы написали просто введение к сбор- сборнику и не претендуем на то, чтобы оно кон- конкурировало со многими превосходными учебниками по теории чисел. Напротив, мы надеемся, что для некоторых читателей оно послужит стимулом для дальнейшего изучения этой теории. В нашем изложении кое-где вкраплены простые задачи, цель которых — немедлен- немедленно подкрепить материал конкретными нри- мерами. Решение этих задачек должно по- помочь читателю прочувствовать теоретико- числовые закономерности, а не ограни- ограничиться заученными определениями и теоре- теоремами. Ни одна из этих задач не относится к числу очень трудных и требующих про- проявления особой смекалки. Мы долго мучались с системой обозна- обозначений и, наконец, приняли для себя два со- соглашения, которые по сравнению с более привычной системой записи упрощают по- понимание и улучшают внешний вид многих выражений. Одно соглашение относится к последовательностям, для которых обла- областью определения является множество це- целых чисел. В этом случае для представления и-го члена последовательности мы исполь- используем обозначения /[и]. Это позволяет из- избежать путаницы с непрерывной функцией f(t), из которой, возможно, {/[и]} полу- получилась временной дискретизацией в мо- моменты времени t = пТ. В то же время это избавляет нас от необходимости вводить запутанную систему нижних и верхних ин- индексов или как-нибудь иначе подгонять /, когда меняется не /, а ее область опреде- определения. Второе соглашение: для представления остатка х по модулю и или вычета исполь- используется обозначение < х >п. В большинстве книг по теории чисел рассматриваются срав~ нения, устанавливающие связь между клас- классами чисел. Однако при реализации алгорит- алгоритмов мы должны отыскивать данные по их адресам или запоминать числа в регистрах, и в таких приложениях неудовлетворитель- неудовлетворительно работать с классами чисел. Вычет пред- представляет собой число и может быть одно- однозначно использован в вычислительном пред- предписании. До принятия нами этих двух согла- соглашений ряд уравнений приходилось записы- записывать с семиэтажными верхними и нижними индексами. Мы выражаем признательность за по- помощь и поддержку, которые оказали нам большое число людей в нашей работе над сборником. Особенно нам хотелось бы по- поблагодарить доктора Алана В. Оппенгейма, который убедил нас, что эта книга действи- действительно необходима. Нам также хотелось бы выразить благодарность докторам Томасу Парксу, Рамешу Агарвалу, К. Сиднею Бар- расу, Джеймсу Кули, Шмулю Винограду, Харвею Силверману и Л. Роберту Моррису за сделанные ими критические замечания и оказанную помощь. Мы крайне признатель- признательны мисс Моник* Эдельман за ее помощь при подготовке рукописи. Эктон, Массачузетс. Чарльз М. Рейдер, Джеймс Г. Макклеллан
ГЛАВА ПЕРВАЯ 1. Дискретное преобразование Фурье и циклическая свертка В этой главе вводятся дискретное пре- преобразование Фурье (ДПФ) и циклическая свертка последовательностей. Мы предпола- предполагаем, что читатель хорошо знаком с этими вопросами, поэтому наше изложение будет кратким. Главная цель параграфа — зало- заложить основы системы используемых поня- понятий и обозначений. Более детально эти во- вопросы рассмотрены в работе Алана В. Оп- пенхейма и Рональда У. Шафера "Цифровая обработка сигналов". Обработка сигналов универсальными ци- цифровыми вычислительными машинами или специализированными цифровыми процес- процессорами осуществляется путем выполнения ряда вычислительных операций над после- последовательностями чисел. Таким образом, дискретный сигнал х [л] представляет собой последовательность, т.е. некоторую математическую функцию, ко- которая каждому целому числу ставит в со- соответствие одно единственное действитель- действительное или комплексное число. Если область значений последовательности ограничена ко- конечным множеством действительных или комплексных чисел, то такой сигнал носит название цифрового. Именно в таком ви- виде представляются числа в цифровой вычис- вычислительной машине. На практике невозможно обрабатывать всю последовательность, хотя общепринято анализировать многие системы данных, предполагая, что последовательность имеет бесконечную длину. При изучении алгорит- 8 мов обработки сигналов в основном мы будем рассматривать случай, когда после- последовательности имеют конечную длину, т. е. представляют собой такие дискретные сиг- сигналы, которые тождественно обращаются в нуль за пределами некоторого конечного ин- интервала целых чисел. Чаще всего под этим интервалом мы будем понимать первые N неотрицательных чисел {и:0<л<ЛГ- 1}. Класс линейных инвариантных к сдвигу (ЛИС) систем включает много полезных, широко используемых методов обработки сигналов. Соотношение вход - выход для ЛИС системы задается в виде свертки у[п] * h[n] x[k]h[n - к]цл) где х [и] — входной сигнал; у [и] — выход- выходной сигнал; А (и) — импульсный отклик ЛИС системы. Система ЛИС полностью определяется своим откликом я (и) на одно единствен- единственное входное воздействие, т. е. на входной сигнал в виде дельта-функции б (и). Таким образом, многие свойства ЛИС системы могут быть выражены через последователь- последовательность импульсного отклика я (и). Напри- Например, система является устойчивой тогда и только тогда, когда импульсный отклик является абсолютно суммируемым, и систе- система является каузальной тогда и только тог- тогда, когда я (и) = 0 при и < 0. Если импульсная реакция имеет конеч- конечную длительность, то бесконечная сумма в
A.1) сводится к конечной сумме ' A-2) Эффективная реализация алгоритма A.2) является центральным вопросом, рассма- рассматриваемым в данной монографии. Будут рассмотрены методы непосредственной реа- реализации алгоритма A.2) во временной об- области, а также методы, базирующиеся на специальных преобразованиях. Другой известной комбинацией сигналов х[п] и у [п] является их взаимная корре- корреляция R*JLn] = jb_Wy*[n + k]. A.3) Автокорреляционная последовательность Rxx [n] широко используется при оценке спектральной плотности случайных сигна- сигналов. Взаимно-корреляционная последова- последовательность может быть выражена через опе- оператор свертки1 Rx>[n] = x[-n]*y*[n]. A.4) При вычислении Rxy необходимо, чтобы перед операцией свертки с комплексно-со- комплексно-сопряженной последовательностью другого сигнала один из сигналов был инвертирован во времени. Таким образом, эффективные алгорит- алгоритмы вычисления свертки естественно рас- распространяются и на эффективные алгорит- алгоритмы вычисления корреляции. Вероятно, наиболее мощным аппаратом анализа сигналов и ЛИС систем являются ме- методы преобразования. Начнем с метода z-npe- ббразования. Последовательность {х[п]} = *={сЛ}, — °° < п < оо5 играет особую роль по отношению к ЛИС системам. Если {с"} 1 Напомним, что свертка является коммута- коммутативной операцией х[п) * Мл] = Мл] * 4л]. По- поводу других свойств свертки см. А. В. Оппенхейм и Р. У. Шафер. Цифровая обработка сигналов: Пер. с англ. - М.. Связь, 1979. - Прим ред. 1 Звездочка, стоящая в индексе, означает ком- комплексно-сопряженную величину. Звездочка как двучленный оператор означает свертку представляет входное воздействие ЛИС си- системы, то отклик легко вычисляется и ра- равен { Хсп } *, где X — постоянная, равная Н(с) =2 h[k]c~k.Ecjm произвольное вход- входное воздействие представить в виде линей- линейной комбинации таких функций, то свой- свойство линейности системы позволит легко найти ее отклик на это воздействие. Последовательность общего вида может быть представлена такой комбинацией с по- помощью обратного z-преобразования. [z}zn-ldz, A.5) где С - замкнутый контур интегрирования, обход которого осуществляется против ча- часовой стрелки и который охватывает на- начало координат и лежит в области сходимо- сходимости аналитической функции X(z), предста- представляющей z -преобразование последователь- последовательности х[п]: ВД= S 4n]z-. A.6) П = — оо То обстоятельство, что собственные фун- функции лежат в основе анализа с помощью z-преобразования, проявляется в поведе- поведении свертки относительного z -преобразо- -преобразований: если у[п] = х[п] * И[п], то Y(z) = X(z)H(z). Таким образом, операции свертки во вре- временной области соответствует операция ум- умножения в области z -преобразований. ЗАДАЧА. Показать, что операции вычисления взаимной корреляции х[п] и у[п] соответствуют A'(z)y*(z*) в области z-Преобразований. Важным классом ЛИС систем являются системы, имеющие z -преобразования в виде рациональных функций. В этом случае Я(г) = B(z)/A (z), где A (z) и B(z) - по- полиномы конечной степени. Так как Y(z) = * Последовательность, для которой отклик си- системы пропорционален входному воздействию, на- называется собственной функцией системы, а \ - соответствующим этой функции собственным зна- значением. Заметим, что Л. зависит от комплексного числа с, но не зависит от п. 9
= HB)X(z), то имеем A (z)Y(z) =B(z)x х X(z). Во временной области отклик та- такой системы и входное воздействие свя- связаны между собой разностным уравнением S aky[n -k\=i, bkx[n - к]. A.7) Можно предположить без потери об- общности, что д0 = 1- Тогда, разрешая урав- уравнение относительно у[п], получаем рекур- рекуррентное соотношение для нахождения от- отклика системы на заданное входное воз- воздействие при известных начальных услови- условиях над» [и] : Вычисление z-преобразования по единич- единичной окружности (z=e/m), лежащей в z-плос- z-плоскости, приводит к паре преобразований Фурье: 1 Г" Ф] = jiJ W")е*""dm; A.9а) X(eJa) = п 2м ф]е~""". A.96) Пара преобразований Фурье существует для всех последовательностей, имеющих ко- конечную энергию ? 1*[л]|2 < оо. Теорема Парсеваля утверждает, что энер- энергии, вычисленные в частотной и временной областях, равны. Теорема Парсеваля + ? ЪкХ[п - к] A-8) ? Ш{2 = Х_ Г , ^,)|2 d(o A ш) Вообще говоря, импульсный отклик си стемы с рациональной передаточной функ- функцией имеет бесконечную длительность, поэ- поэтому из A.8) вытекает реальный способ практической реализации системы. Интерес- Интересно отметить, в частности, что каждая сумма, фигурирующая в A.8), представляет собой сумму типа свертки. Этот факт дает воз- возможность реализовать систему непосред- непосредственно, используя специальные алгоритмы свертки. Важный подкласс множества рациональ- рациональных z-преобразований состоит из z-преобра- z-преобразований, у которых знаменатель A (z) = 1, т. е. H(z) есть полином от z. В этом случае разностное уравнение A.8) не содержит членов обратной связи, а отклик у [и] пред- представляет собой просто свертку входного воздействия х [и] с коэффициентами Ьк полинома B(z). Отклик этой системы на импульсное воздействие представляет собой последовательность {b0, biy . . . , Ьд] ко- конечной длины. Такие системы часто назы- называют системами с конечной импульсной ха- характеристикой (КИХ) или нерекурсивными системами. В общем случае рациональное z-преобра- z-преобразование будет иметь как полюса (значения z, при которых |#(z)| = °°), так и нули (значения z, при которых H(z) = 0). Для КИХ-системы #(z) не имеет полю- полюсов, за исключением разве z = 0 или z = °°. Так как A.9а) представляет разложе- разложение сигнала х [и] в виде линейной комбина- комбинации собственных функций е-""", то соотно- соотношение Парсеваля устанавливает, что А'(е-"") представляет собой плотность распределе- распределения энергии сигнала как функции частоты. Так как преобразование Фурье может рассматриваться как частный случай z-пре- z-преобразования, то для него также справедли- справедливо тождество свертки, а именно если^ [п] = = х [п] * h [п], то У(е*0 = А-(е/ш)Я(е^) при условии, что преобразования Фурье существуют. ЗАДАЧА. Найти преобразование Фурье авто- автокорреляционной функции Rxx[m] последователь- последовательности х[п]. Преобразование Фурье является удоб- удобным аналитическим аппаратом, поэтому хо- хотелось бы располагать эффективными вы- вычислительными методами для его выполне- выполнения. Определение Х(е<с°) согласно A 96) предполагает суммирование бесконечного числа слагаемых. Кроме того, АХе-"") явля- является непрерывной функцией частоты со Для того чтобы вычисления можно было выпол- выполнять, оперируя конечным числом слагае- слагаемых, необходимо соблюдать три условия. 1) х [п] должен быть сигналом конечной длительности; 2) следует ограничиться не- некоторыми значениями Аг(е/т); 3) вычис-
лить нужно только конечное число коэф- коэффициентов We**)} из *(е*0. Таким образом, мы приходим к рассмо- рассмотрению конечного преобразования Фурье x[k] =: где А; = 0,1,2, ...,L - 1. Здесь в основном будет рассматривать- рассматриваться частный случай L = N, который соответ- соответствует дискретному преобразованию Фурье JV-1 = ОA)ЛГ-1, A.12)* где WN = е-Л2*/ЛГ>. Относительно ДПФ, определяемого A.12), хотелось бы знать, существует ли обратное преобразование и как ведет себя свертка относительно этого преобразования. Обратное ДПФ (ОДПФ) можно Получить, если сначала доказать следующее тождество: if w# = Р =°'±N'±2N'"" *=о N }o в других случаях. A.13) Доказательство A.13) требует рассмо- рассмотрения двух случаев. Если к кратно N. то W"^ = 1, сумма принимает вид jt0 A) и равна N. Если к не кратно N, то A.13) есть сумма первыхЛГ членов геометрической прогрессии со зна- знаменателем W%. Поэтому N-1 1 Vl/Nk к Wn - i-wkN- Так как W%k = 1, то сумма равна нулю и, таким образом, A.13) доказано. Теперь предположим, что ОДПФ имеет следующий вид: x[n] = N-lgoX[k]W-N"k. A.14) Подставляя Х[к], определенное A.12), в A.14),получаем Изменяя порядок суммирования, имеем Внутренняя сумма определяется выраже- выражением (ЫЗ) и отлична от нуля только при 1 s п. Следовательно, правая часть выраже- выражения (Ы4) принимает следующий вид: N~lx[n]N = х[п]. Выражение A.12) и A.14) представля- представляют пару дискретных преобразований Фурье: A.15а) A.156) Одно из самых успешных приложений ДПФ - его использование для быстрого вычисления свертки. Чтобы объяснить это, необходимо изучить поведение свертки от- относительно ДПФ. Рассмотрим обратное ДПФ произведения двух ДПФ X ЩН[к) у[п] = ЛГ1 'J?H[k]X[k]WZ'\ Подставив сюда определение Х[к] и из- изменив порядок суммирования, получим N~l N-1 откуда следует JY-1 A.16) Для того чтобы сумма в A.16) имела смысл, необходимо периодически продол- продолжить сигнал h (и - /) с периодом N. Это оз- начает^что при (и - /), не лежащем в интер- интервале 0 <и - / <Л^-1, необходимо доба- добавить или вычесть некоторое число, кратное N, с тем, чтобы выполнялось неравенство 0<и- / +гЛГ<ЛГ-1,ав A.16) использо- использовать h[n — / + rN]. Таким образом можно переписать A-16) с учетом периодического продолжения h [n] у[п] = "Я х[!Ш" ~ I mod N]. A.17)* Суммы A.16) и A.17) обычно называ- называются ЛГ-точечными циклическими свертками и обозначают у[п] = х[п] <§) h[n]. Если циклическую свертку необходимо использовать для вычисления непериоди- * Обозначение k =r (s)t является сокращенной формой записи к =г , г + s, г и- 2s,.. ,t. * См. § 3 для справок по основным свойствам арифметики по модулю N. 11
ческой (или линейной) свертки A.2), то влияние периодичности циклической сверт- свертки следует некоторым образом компенси- компенсировать. Напомним, что линейная свертка L-точечной последовательности х [п] сМ-то- чечной последовательностью будет давать JV-точечную последовательность у [п], где N=L +M-1. Чтобы можно было вычислить всю \у [п]} с помощью циклической свертки, длина по- последней должна быть равной, по крайней мере, N точкам. Кроме того, х[п] и h [п] должны быть продолжены до JV-точечных последовательностей. Для этого достаточно к х[п] и А [и] добавить соответствующее число нулей и построить «Но * 0<n<L- ¦1.18) Далее можно показать, что если $[п] = = х[п] ® й[п], то у[п] = у[п] при 0 < <и <N— 1. Для значений индекса и, лежа- лежащих за пределами этого интервала, у [п] равна нулю. К числу часто встречающихся на практике ситуаций относится фильтра- фильтрация бесконечно длинной входной последо- последовательности КИХ-фильтром, характеристи- характеристика которого имеет сравнительно короткую длину. Во избежание вычисления очень длинной свертки бесконечно длинную вход- входную последовательность можно разбить на куски относительно короткой длины. При этом бесконечно длинную выходную после- последовательность удобно получить сшиванием результатов свертки небольших секций входной последовательности с импульсной характеристикой фильтра. Существует два хорошо известных мето- метода выполнения такой обработки секциями: метод перекрытия с накоплением и метод перекрытия с суммированием. В методе пе- перекрытия с суммированием входной сигнал х [п] разбивается на секции длиной L точек Каждая секция дополняется нулями соглас- согласно A.18), а затем для вычисления секции 12 выходной последовательности используется циклическая свертка (через быстрое пре- преобразование Фурье). Выходные секции на- накладываются одна на другую, и полная вы- выходная последовательность представляет со- собой сумму таких секций. В методе перекры- перекрытия с накоплением входной сигнал х [п] разбивается на секции длиной N, но эти сек- секции перекрываются в М — 1 точках. После вычисления отдельных коротких сверток выходная последовательность у [п] получается путем заполнения L точек каж- каждой циклической свертки и стыковки этих L точек секции в непрерывный поток дан- данных- 2. Многомерные сигналы и преобразования Многие из только что рассмотренных положений и методов обработки сигналов могут быть легко распространены на много- многомерные сигналы и системы. Очевидным при- приложением таких методов является обработ- обработка изображений и другой двумерной ин- информации. Менее очевидным приложением, играющим важную роль в получении и до- доказательстве алгоритмов быстрых преобра- преобразований, является переход от одномерной формулировки задачи A — D) к многомер- многомерной (и - D) и наоборот. Например, соответ- соответствующей переиндексацией A — D) после- последовательности часто можно вычислить ДПФ либо как A - D) -ДПФ последовательности, либо как многомерное ДПФ соответствую- соответствующего массива. Точные условия, при кото- которых подобный переход возможен, будут по- получены ниже как следствие китайской тео- теоремы об остатках. и-мерная последовательность представля- представляет собой функцию, возможно комплексно- значную, п независимых целочисленных пе- переменных kx, k2, ¦ . , кп. Например, ди- дискретное изображение представляет собой двумерный сигнал, так как интенсивность света изменяется по двум пространствен- пространственным координатам изображения, и-мерная комплексно-значная экспоненциальная по- последовательность х[ки к2,. . . , к„) = z?1 z5'. . . zj-
является примером сигнала специального типа, известного как разделимый сигнал, поскольку может быть записана как произ- произведение и одномерных последовательностей: Xi[Ki] ДздКг] ^з[^з] • • • -KnlAnJ , где Xi[ki] = z*'. Наконец,л-мерный аналог единичного сиг- сигнала дискретизации представляет собой *..*. „_{'*¦*• ¦*.-•••¦•»¦* 10 в других случаях. B.2) Заметим, что 8 [к1гк2, . . . ,кп] являет- является разделимым сигналом, поскольку может быть представлен как произведение л од- одномерных единичных сигналов дискретиза- дискретизации. Следует отметить различие между мно- многомерным сигналом, введенным здесь, и векторным сигналом, являющимся функ- функцией одной независимой переменной, кото- который обычно используется в теории много- многомерных систем управления. Многомерная система также определяет- определяется просто, п-мерная система представляет собой преобразование, при котором воздей- воздействие на входе л-мерных сигналов вызы- вызывает на выходе также л-мерные сигналы. л-мерная система линейна, если T{alXl\k] + а2х2\к]} = = a,T{Xl\k]} + a2T{x2\k]}, B.3) где Т — преобразование системы; к - и-мерный вектор индексов [к1у к2, . . . ...,*„]; система является инвариантной к сдвигу, если T[x[ki ег,... ,кл е„] B.4) при у\к] = Т{х\к]}. Как и в одномерном случае, класс ЛИС систем играет центральную роль и эти сис- системы легко анализируются методами пре- преобразований. Линейная инвариантная к сдвигу система полностью характеризуется своей импульс- импульсной характеристикой, т. е. откликом на сиг- сигнал 8[ki, к2, к3, . . . , к„]. Если А [ки к2, ¦ • • , кп] представляет импульсную ха- характеристику ЛИС системы, то связь между входом и выходом системы определяется в виде суммы сверток - /„ . . „к, — Цх[11г. ..,/„] B.5) и обозначается как у\к] = А[к]*д:[к]. По аналогии с одномерным случаем лег- легко показать, что комплексные экспоненци- экспоненциальные последовательности при обработке ЛИС системой просто изменяют свой мас- масштаб в постоянное число раз. Таким обра- образом, мотивировано применение z-преобра- z-преобразования, z -преобразование последовательно- последовательности x[klt k2, • ¦ ¦ ,кп] представляет собой функцию л комплексных переменных z l, B-6) где суммы берутся по всем значениям к{. Обратное z-преобразование вычисляется как л-кратный контурный интеграл от функ- функции комплексных переменных: * где контуры интегрирования должны ле- лежать внутри области сходимости X(z,,... . .. ,zn). Важным свойством z-преобразова- ния является свойство свертки. Если у\к] = - x\k]*h\k], то Y(zt z.) = X{zx zn\ Если z-преобразование вычисляется на л-мерной единичной сфере (т. е. \zx\ = 1, |z2l =1 \zn\ =1),то получится л-мер- ное преобразование Фурье стационарной последовательности х\к] X(eJ°",..., е**) = = Е .. • Е х[ки ..., ^Je-'«-*-+-*-*>. ~ *" B.8) и-мерное ДПФ сигнала конечной длины Nl х N2 x . . . х Nn представляет собой дис- 13
кретный вариант и-мерного преобразования Фурье ЛГг-1 JV.-1 1 in] = Е • • • Т. хх lIi/Ari>+ •+№*/"->i. B.9) Так как комплексная показательная функция является разделимой, то правая часть B.9) может быть переписана в гораз- гораздо более удобной для вычислений форме: « 0 X ¦ B.10) Из B.10) следует, что для вычисления и-мерного ДПФ требуется только много- многократно произвести вычисление одномерно- одномерного ДПФ. Внутренняя сумма представляет собой ^-точечное ДПФ, которое должно быть найдено для всех возможных комби- комбинаций к\, к2, ¦ ¦ ¦ >кп_1- Таким образом, потребуется найти N/Nn JVn-точечных ДПФ. Аналогичным образом N/Nj ^-точечных ДПФ потребуется найти по i'-му измерению. Допустим, что С (г) представляет количе- количественную меру вычислительных усилий, за- затрачиваемых на вычисление r-точечного од- одномерного ДПФ. Тогда на вычисление (Ni x х N2 х . . . х Nn)-точечного и-мерного ДПФ потребуется следующее количество вычис- вычислений: В частном случае, когда все Nj равны Nt nN= N1, стоимость вычислений оценивает- оценивается следующей величиной: С(ЛГ„ Nlt ...,#,) = nNrlC{NJ. B.12) Вывод алгоритма БПФ может быть сде- сделан в рамках многомерного представления. Рассмотрим первый этап получения алгорит- алгоритма с прореживанием во времени. В частно- частности, предположим, что /^раскладывается на сомножители как L х М: X[lt + Щ = **? 14 Если ввести два массива Х[ки к2] и X[h, /2] размерами L х М в виде ti, A:2] = х[МА:, + кг] и тогда вычисление одномерного ДПФ может быть выполнено в три этапа. 1. Вычисляется М L -точечных ДПФ по первому измерению. 2. Умножается результат выполнения первого этапа на fci К , / ! — U, 1, . . .,!-, I , кг = 0, . . .,М — I (это так называемые множители вращения БПФ). 3. Вычисляется L М-точечных ДПФ по второму измерению. В результате получаем X[lt, l2]- Если бы на этапе 2 множители вращения отсутствовали, то вычисление одномерного ДПФ было бы тождественно вычислению не- некоторого двумерного ДПФ. Вычислитель- Вычислительные усилия, затрачиваемые на выполнение JV-точечного ДПФ, где N разлагается на сом- сомножители как ^ х N2 x . . . х Nn, опреде- определяются как C(N) = ± (? t 1 \iv (и - l)N. B.14) e-jn''M)ktU c-Jli"mhl" x В случае ДПФ с основанием, равным 2,B.14) сводится к следующему: СB") = и2-'СB) + (и - 1J". Если вычислительные усилия оценивать через количество умножений комплекс- комплексных чисел, то СB) = 0 и получается, что БПФ с основанием 2 требует N log2 JV ум- умножений. В предыдущем рассмотрении предполага- предполагалось, что выбрана некоторая конкретная схема переиндексации, позволяющая сфор- сформировать массивы X[/,, 12] их [ki ,k2] из одномерных последовательностей Х[к] и Интересно выяснить, существует ли ка- какая-либо иная схема индексации, которая не исключала бы этап 2 и позволяла бы свести вычисление одномерного ДПФ в точности
к вычислению двумерных ДПФ размерами L х М. Ответ на этот вопрос дан в §6, где показано, что множители вращения могут быть исключены, когда L и М не имеют об- общих множителей. Необходимая схема пе- переиндексации основана на китайской теоре- теореме об остатках и была впервые опублико- опубликована И. Дж. Гудом в 1958 г. 3. Основы теории чисел и ДПФ Ниже излагаются основные свойства це- целых чисел, связанные с факторизацией, вво- вводятся понятия сравнения, приведения выче- вычетов и показывается, как приведение выче- вычетов может быть выполнено в результате простой бперации. Представляются понятия наибольшего общего делителя и взаимно простых целых чисел. Вводится ^-функция Эйлера. Показывается, как алгоритм Евкли- Евклида может быть использован для нахождения решений некоторых уравнений в целых чис- числах. Формулируется китайская теорема об остатках, показывается ее связь с одним из любопытных способов представления чисел, которое имеет важное приложение в обла- области обработки сигналов. Наконец, показы- показывается, как теория чисел может быть исполь- использована для обнаружения одного свойства ДПФ переставленной последовательности. Теория чисел применительно к обработ- обработке сигналов начинается с элементарной идеи деления. Пусть а и Ъ - два произволь- произвольных целых числа, причем Ъ — положитель- положительное число. Тогда в результате деления числа а на число Ъ получаются частное и остаток, т. е. можно найти числа г us, удовлетворяющие одновременно равенству a = br + s C.1) и неравенству 0<*<Ь, C.2) где г носит название частного, s - остатка. У большинства вычислительных машин имеется команда "разделить", при выполне- выполнении которой для заданных а и Ъ находятся г us*. Если остаток равен нулю, то говорят, что Ъ делит а, и пишут Ь\а C.3) или Ъ является делителем а. Не считая от- отрицательные делители, можно сказать, что каждое целое число имеет, по крайней ме- мере, два делителя: \\а,а\а. C.4) Это не исключает существования других делителей. Если а > 1 делится только на 1 и на себя, то такое число называется прос- простым. Число 1 не считается простым, а 2 яв- является единственным четным простым чис- числом. Другие целые числа, имеющие несколь- несколько делителей, называются составными. На- Например, первыми в натуральном ряду сос- составными числами являются 4, 6, 8, 9, 10 ... Предположим, что а — составное число, а Ъ — его делитель. Тогда а=Ъ\г, C.5) где г ~ другой делитель а. Возможны два случая: либо Ъ и г явля- являются простыми числами, либо хотя бы одно из них раскладывается на множители. Во втором случае, продолжая процесс разло- разложения на множители, можно, в конце кон- концов, получить представление а в виде произ- произведения только простых чисел. Например, 24 = 2- 2- 2- 3; 52 = 2-2-13 или в общем случае C.6) * Если а или Ъ отрицательное, то результат выполнения DIVIDE может зависеть от машины. где pj — i-e простое число; а,- — целочис- целочисленный показатель степени. Основная теорема арифметики утвержда- утверждает, что любое число может быть представле- представлено в виде произведения C.6), причем такое представление является единственным. Если в C.1) и C.2) число Ъ фиксирова- фиксировано, то оно называется модулем. Тогда для бесконечного числа вариантов выбора а можно получить один и тот же остаток s. В таких случаях говорят, что все эги числа а сравнимы по модулю Ъ. Остаток называ- называется также вычетом по модулю Ъ, или просто вычетом. Например, если Ъ = 6, то 15
a = 16, a =, 28, a = - 2, все дают один и тот же остаток, так что 16, 28 и -2 сравнимы по модулю 6. Любая величина сравнима с ее собствен- собственным вычетом, и все попарно сравнимые ве- величины принадлежат некоторому классу, который характеризуется общим вычетом. Для заданного модуля Ъ имеется точно Ъ таких классов, по одному на каждое воз- возможное значение остатка, которыми могут быть 0, 1, 2,..., Ъ - 1. Например, дни неде- недели могут рассматриваться как классы выче- вычетов по модулю 7. Если 5 октября была сре- среда, тогда 12, 19 и 26 октября будут принад- принадлежать классу вычетов, носящему название "среда". Два числа, имеющие один и тот же вычет по модулю Ь, должны отличаться между со- собой на величину, кратную Ъ. Символ = при- принято использовать для обозначения сравне- сравнения. Таким образом, формула ai = a2 mod ft C.7) означает то же самое, что b\{ai-ai). C.8) Само собой разумеется, что если a = 0modb, C.9) то Ь\а, (ЗЛО) Соотношение сравнения во многом сходно с равенством. Но менее сильное в том смыс- смысле, что равные величины сравнимы, но срав- сравнимые не обязательно равны. Если удает- удается показать, что сравнимые величины рав- равны друг другу приближенно, то отсюда мо- может следовать их совпадение, так как из- известно, что их разность должна быть крат- кратной модулю. Тесно связана со сравнением идея выде- выделения остатка. Если при заданном а требу- требуется найти вычет а по модулю Ь, то необ- необходимо определить значение остатка s, не обращая внимания на значение частного г в C.1). Нахождение вычета есть функци- функциональное преобразование а в s. Поскольку эта операция достаточно часто встречается в дальнейшем, то для ее обозначения вве- введем специальный символ < • У : 16 <a>b = s. C.11) Индекс Ъ может быть опущен, если его значение ясно из контекста. При выполне- выполнении вычислений всегда можно сравнение, которое устанавливает связь между целы- целыми классами чисел с одним и тем же выче- вычетом, заменить равенством, включающим этот вычет. Например, если х+ .у = zmod6, C.12) то вместо этого можно записать <х + у\ = фь. C.13) Вычисления с вычетом обычно доста- достаточно просты, поскольку никогда не имеют дела с числами, большими,чем модуль (ес- (если только не оказьюается более удобным поступить иначе). Можно убедиться, что <х — .у>тожесамое,что«*> — <ху> то же самое, что «х Поэтому при любых вычислениях со знака- знаками +, -, х можно, по нашему усмотрению, результат вычислений на каждом шаге за- заменять его вычетом ЗАДАЧА. Найти вычет числа 6250 по модулю Ь=5. Отметим важный момент, касающийся вычисления, необходимого для решения этой задачи. Если требуется найти 6250, то большинство из нас воспользовались бы ло- логарифмами, чтобы получить число 4,16 х х 1089. В этом случае получается прибли- приблизительный ответ, которому соответствует некоторая область неопределенности на дей- действительной оси чисел. Но вычет определя- определяется совершенно точно, и ответ на задачу указывает нам положение 62SO на действи- действительной оси чисел с неопределенностью, ве- величина которой кратна модулю Существу- Существуют ситуации, когда можно комбинировать "размытый" результат одного вида вычис- вычислений с точным результатом другого вида вычислений и получить точный результат, несмотря на наличие трудных в вычисли-
тельном отношении форм. Имеется также много случаев, когда важен только вычет. Поэтому рассмотрим процедуру нахожде- нахождения вычетов. Нам уже известен один из способов вы- вычисления (аУь, а именно деление а на Ъ и сохранение остатка. Использование этого способа в имеющихся в настоящее время вы- вычислительных машин может оказаться до- довольно неэффективным. Часто для упроще- упрощения процедуры нахождения вычета можно воспользоваться некоторыми специальными приемами. Всем известен простейший при- прием — вычет десятичного числа по модулю 10 есть последняя десятичная цифра этого чис- числа, так как C.15) и <а,Ю'>10 равен нулю, за исключением слагаемого при i - 0. Можно обобщить этот результат на любую систему счисления. Ес- Если Ъ является степенью двух, ад — двоич- двоичным числом, то получается тривиальный спо- способ нахождения (а)ь <а>2, = <2 а,О.У> = %at2l. C.16) Эта операция выполняется путем отбра- отбрасывания всех, за исключением к, последних двоичных цифр. Другой простой случай имеет место, ког- когда модуль имеет вид 2*-1. Предположим, что а = а0 + 2а, + 4а2 + . . . + + 2как + 2к+1ак+1 + ... C.17) Пусть первые к двоичных цифр а0> а,, а2, . . . , ак_1 представляют двоичное число А; следующие к двоичных цифр ак, ак+1, ак*г' • • ' ' a2k-i ~ Двоичное число В = ак + + 2ак+ j + 4ак+ 2 + ... и т. д. Тогда d=A + 2"B + 22kC+... C-18) Так как <2*>2._1 = 1 и <2Л>2.-, = 1 , C-19) то <о>1._1 = <А + В + С + . . . >2._,. C.20) Таким образом, если модуль имеет вид 2* - h то на вычислительной машине с двоичной системой счисления вычет числа с очень большим числом двоичных разрядов может быть найден сложением ^-разрядных двоичных слов. Если число а получено в ре- результате сложения чисел, меньших модуля (что может иметь место, поскольку эти числа являются вычетами, вычисленными на предыдущем шаге), то значение переноса из к-то разряда в следующий равно 2* и сравнимо с единицей. Таким образом, если перенос добавляется к наименьшему знача- значащему разряду, то результат представляет требуемый вычет, за исключением специ- специального случая, когда он содержит к единиц, т. е. равен 2* - I. В этом случае вычет ра- равен нулю, но так как при этом не возника- возникает переноса в к-й разряд, то получается не- некорректный результат. Поскольку в цепи вычислений порядок редукции вычета, во- вообще говоря, довольно произвольный, за исключением последнего шага, то это не должно вызывать затруднений. Просто вычислить вычет без деления и в случае, когда модуль равен 2* + 1. Пусть а определяется выражением C.18), тогда вследствие того что 2* = —1, 2"* = -I",1 имеем <а>2.+ . = <А-В+С-... >».+,. C.21) В этом методе вычисления опасна едини- единица с к нулями: остаток числа 2* будет вы- вычисляться как 0-1, что приведет к циклу, но такую ситуацию легко предусмотреть. Таким образом, мы убедились, что для мо- модулей вида 2*, 2* ±1 вычет можно найти гораздо более простыми методами, чем де- деление. Отметим еще один случай. Если искомая величина вычисляется как сумма двух вы- вычетов, то частное при делении этой суммы на модуль можег быть равно только 0 или 1. Если мы вычтем модуль из суммы и ре- результат окажется положительным, то он и будет вычетом. Или если частное оказывает- оказывается равным нулю, вычег получается сразу до выполнения операции вычитания модуля. Таким образом, для произвольного модуля 17
можно найти вычет суммы (или разности) с помощью простой процедуры. Теперь введем понятие наибольшего об- общего делителя. Рассмотрим уравнение 6х + 4у= 2, C.22) где х и у - целые числа. Уравнения, реше- решения которых ищутся в целых числах, назы- называются диофантовыми уравнениями- Урав- Уравнение C.22) имеет очевидное решение х = 1, у = -1, а также несколько других решений, например х = 11, у = -16. С дру- другой стороны, уравнение 6х + 4у = 3 C.23) не имеет целочисленных решений вообще. Свойства уравнений, подобных C.22) и C.23), могут быть изучены с помощью по- понятия наибольшего общего делителя. В C.22) и C.23) коэффициенты при х и у делятся на 2 — наибольшее число, которое является общим множителем 6 и 4. Таким образом, левую часть любого из приведен- приведенных уравнений можно переписать как 2 (Зх + + 2у) и она делится на 2 независимо от того, какие целочисленные значения принимают х и у. Следовательно, есть надежда найти ре- решение C.22), но безнадежно искать реше- решение C.23). Наибольшее число, которое является де- делителем и а, и Ъ называется их наибольшим общим делителем (НОД). Обычно он обоз- обозначается как (а, Ь). Если числа а и Ъ не име- имеют общего делителя, т. е. если (а, Ъ) = 1, то они называются взаимно простыми. Теперь пусть а, Ъ и с являются коэффициентами в диофантовом уравнении ах ¦+- by = с C.24) Выделим делитель (а, Ь) в левой части и получим (a,b)[a'x + b'y] = с, C.25) где а' = aj(a, b);b'~ bj(a, b). Любой де- делитель левой части должен быть делителем и правой части. Если с не делится на {а, Ъ), то C.25) просто не имеет решения. Поэто- Поэтому предположим, что (а, Ь)\с, C.26) и пусть с'= с/(а, 6). Тогда приходим к исследованию решений уравнений вида ах + Ьу = с, C-27) где (а, Ь) = 1. Можно рассмотреть более простое урав- уравнение ах^ + byt = 1, C.-28) где (а, Ь) =1. Если нашлись значенияxt nylt удовлет- удовлетворяющие C.28), то решением уравнения C 27) будет х = cxi; у = сух. C.29) Поэтому рассмотрим более подробно C.28). Мы обнаружим, что можно всегда найти его решение, а значит решить уравне- уравнение C.27). Введем понятие непрерывной дроби, что сначала может показаться изменением объек- объекта исследования. Пусть а и Ъ — целью поло- положительные числа. Можно считать, что эти числа удовлетворяют неравенству а > Ь, поскольку в противном случае описыва- описываемый ниже процесс тут же поменяет их местами. Разделим а и Ъ и в результате по- получим b ° b b/so' O<so<b. C.30a) Теперь разделим b на s0 ив результате по- получим — — г + — = г So ^о 1 SolSi' 0<5, < So C.306) Можно продолжить этот процесс до тех пор, пока остаток s^, полученный при делении на некотором шаге, не окажется равным нулю. Тогда можно записать а _ b ~ Го 1 г, + 1 Гг (З.ЗОв) 18
Заметим, что каждый остаток по опреде- определению является неотрицательным и меньше, чем его предшественник. Поэтому процесс деления заканчивается. При вычислении разложения фактически получалась последовательность уравнений а = Ъ г0 + so\ ч Можно сразу заметить следующие соотно- соотношения: а„ = гвя„-, 4- а„-2 Ь„ = г„2>„-1 + Ь„-г п > 2 , C.33) b = sort + st; So = S,r2 + S2; + S3; 0. Непрерывная дробь позволяет построить интересную последовательность приближе- приближений к а/b, которые называются подходящи- подходящими дробями: которые легко доказываются методом ин- индукции. Аналогичным образом можно доказать, что (З.ЗОг) M.+ i - а„Ьп+1 =(-1)", «>0 C.34) Наиболее существенно, нто числитель и зна- знаменатель каждой подходящей дроби всегда несократимы. В этом можно сразу убедить- убедиться, обратившись к C.34). Действительно, если число а является делителем как ап, Т~ — го ~Н ' 9л Гг + 1 Каждая подходящая дробь является отно- отношением сложно устроенных числителя и знаменателя соответственно йг- и Ь( : г=г1(гог1 +1) +г0, Ъг = 4- 1) + г,. C.32) так и Ъп, то оно должно быть делителем числа (—1)", которое не имеет положитель- положительных делителей, за исключением единицы. Сформируем в итоге три теоремы о под- подходящих дробях. Теорема. Числитель и знаменатель удо- удовлетворяют следующим рекуррентным со- соотношениям- а„ = гяая-1 + а„-2 К = rnbn-! + Ь„-г C.31) п>2. Теорема. Ь„а„+, — а„Ь„+1 = (— 1)"л > 0. Теорема. ЗАДАЧА. Доказать эти теоремы методом ма- математической индукции. Когда процесс заканчивается, получаем bir.1aM-aM.1bt. = (-iy-\ C.35) но aMjbM — a/b. Если (а, Ь) = 1, то мы дол- должны иметь а„ — a; bM = b. C.36) Таким образом, C.35) дает нам способ решения C.28), если положить У = (-1)Х-.; х = (-1Г'Ь.->- C-37) ЗАДАЧА. Выражение C.37) дает одно из реше- решений C.28). Как можно иайти другие решения? 19
Этот же самый процесс позволяет найти (а, Ь), если он не известен, поскольку <L=b={atby C38) "л им Можно заметить, что последний не равный нулю остаток в C.30) sM есть как раз НОД. Применение метода непрерывной дроби для нахождения НОД известно как алгоритм Евклида. Вероятно, это самый знаменитый алгоритм. В алгоритме Евклида важны только зна- значения остатков, и процесс имеет следующий вид: C.39) (a, ft) = *„-,. Подводя итог, отметим, что представление а/b в виде непрерывной дроби позволяет найти (а, Ь), и если (а, Ъ) = 1, то найти це- целые числа х и у, которые удовлетворяют уравнению ах + by = 1. Следовательно, уравнение ах + by = с можно решить тогда и только тогда, когда (a, b) \ с. Это дает воз- возможность также решить уравнение (ахУь = 1 C.40а) или =1. C.406) если только (а, Ь) = 1. Кроме того, окажет- окажется, что для таких решений (у, а) = (х, Ь) = = 1. Почему? Совершенно понятен в связи с этим осо- особый интерес к множеству целых чисел, вза- взаимно простых с Ь. Если нас интересуют клас- классы вычетов по модулю Ь, то особый интерес вызывают классы вычетов, для которых вычет взаимно Прост с Ъ. Часто необходи- необходимо знать, сколько из Ъ различных классов вычетов имеют вычет, взаимно простой ей. Иначе говбря, сколько существует положи- положительных целых чисел, меньших Ъ и взаимно 2© простых с Ы Это число является функцией целочисленного переменного Ъ Эту функ- функцию принято называть функцией Эйлера и обозначать как <^(й). Будем считать, что i^(l) = 1. Простым подсчетом можно полу- получить ^B) = 1, *C) = 2, *D) = 2, ^E) =4, 1^F) = 2,1^G) = 6, . . . Оказывается, суще- существует достаточно простая формула для у(Ь), если только известно каноническое разложение Ъ на простые сомножители Это можно установить, рассмотрев сначала слу- случай, когда Ъ является степенью простого числа: Ь=ра. C.41) Числа, меньшие Ъ и не взаимно простые с Ъ, суть числа, кратные р, т. е. каждое р-е чис- число. Поэтому остается (i- )р* чисел, Р меньших о и взаимно простых с ним. Таким образом, f(p) — р — 1; } VF C.42) r-l(pl) 1 В общем случае выражение для <p(N) при дг = p'\pV . . . pi" представляет собой произведение = f(pV) Это утверждение равносильно следующей теореме. Теорема. Если (Plt Q) =1, то Теорема доказывается путем построения и рассмотрения величин вида (,aQ + bPyPQ, где а пробегает у(Р) чисел с (а, Р) = 1, а < < Р и Ъ пробегает $(Q) чисел с (b, Q) =1, Ъ < Q. Легко заметить, что aQ взаимно про- просто с Р, поскольку а и Q взаимно просто с Р. Значит, никакой делитель Р не может де- делить aQ + ЬР, поэтому число aQ + ЪР долж- должно быть взаимно простым с Р Аналогичным образом можно показать, что оно является взаимно простым с Q. Поэтому aQ + ЬР яв- является взаимно простым с PQ. Таким обра- образом, остаток (aQ + ЬР}Ра представляет
собой одну из величин, которая должна быть табулирована для подсчета ip(P, Q). Так как имеется $(Р)y(Q) чисел вида(aQ + ЬР}Ра, то для доказательства теоремы покажем, что, во-первых, все они различны и, во-вто- во-вторых, нет других остатков, которые следу- следует учесть. Чтобы показать, что все они различны, предположим, что axQ + ЬгР = a2Q + b2Pmod PQ. C.44) Тогда (а, - a2)Q v= (Ьг - bx)P + nPQ. C.45) Правую часть можно разделить на Р, но ле- левую нельзя, если только (а, - а2) не явля- является кратным Р. Но flj и а2 меньше Р. Так как имеется только одно число, кратное Р и меньшее Р, и оно есть нуль, то cti должно быть равно а2 ¦ Аналогичным образом мож- можно показать, что Ъх = Ъ2. Это означает, что все остатки (aQ + ЬРУрд различны. Тем самым мы показали, что y(PQ) > #(P)v(Q) ¦ Остается показать, что любая величина, меньшая PQ и взаимно простая с ней, может быть представлена в виде (aQ + bPyPQ. Пусть d - такая величина, причем (d, P) = = (d, 0) = 1 • Мы убедились, что существует решение уравнения Qx + Ру = 1, и поэтому при а = dx, Ъ = dy получаем Qa + Pb = d= (Qa + РЬУт. C.46) Формула C.46) представляет d в нуж- нужном виде, и теорема доказана. Доказательство предыдущей теоремы го- гораздо важнее самой теоремы. В конце кон- концов, мы могли бы вычислить <р(Ь) в любом случае, представляющем практический инте- интерес, простым подсчетом. Однако при дока- доказательстве теоремы были продемонстриро- продемонстрированы важные принципы и методы рассужде- рассуждений. Поэтому читатель должен особенно внимательно изучить доказательство. Теперь перейдем к рассмотрению более важной теоремы. Так как эта теорема бы- была известна еще в древнем Китае, то ее на- называют китайской теоремой об остатках. Проиллюстрируем теорему головоломкой, аналогичной тем, которые часто встреча- встречаются в воскресных газетных приложениях. Головоломка. Четыре мальчика имеют следующие размеры ступни. Джим - 7 дюй- дюймов ; Джон - 8 дюймов; Джо — 9 дюймов; Билл - 11 дюймов. Каждый мальчик попы- попытался измерить размеры некоторой комна- комнаты с помощью своей ступни. Однако при из- измерениях у Джима осталось 2 дюйма, У Джона - 5, у Джо - 5 и, наконец, у Билла - 6 лишних дюймов К сожалению, ни один из мальчиков не запомнил, сколько его ступ- ступней уложилось в комнате. Однако Билл заявляет, что он может восстановить резуль- результат измерений по величине остатков. Како- Какова длина комнаты9 Головоломка сводится к решению четы- четырех сравнений, в которые входит неизвест- неизвестная длина комнаты <?>7 = 2; <L>8 = 5; = 5; = 6. C.47) Читатель может проверить, что решением сравнений является 149 дюймов A2 футов1 и 5 дюймов). Другие решения могут быть получены путем сложения 149 с любым чис- числом, кратным произведению 7 х 8 х 9 х 11, т. е. числу 5544. Так как маловероятно, что- чтобы комната имела длину более 400 футов, то на головоломку можно дать однознач- однозначный ответ, хотя полное решение уравнений C.47) представляет собой класс вычетов по модулю 5544. Китайская теорема об остатках утвержда- утверждает, что это решение C.47) является един- единственным, а также показывает, как его пост- построить. Сравнения (х~)т1 = п обладают единст- единственным решением среди классов вычетов по модулю М = Л nti, если модули w;- по- попарно взаимно простые. Сначала построим составной модуль Ь. C-48) 1 1 фут =12 дюймов. - Прим перев 21
Затем выпишем величины mt Каждое Af,- является числом, взаимно прос- простым с соответствующим ему щ : (Л/„/и,)=1, 1=1,2,...,*. C.49) Поэтому в силу C.40а) можно найти чис- число Л^-, решая уравнения (N,M,ymi= 1. C.50) Теперь рассмотрим величину L = rtNiMi + ггМгМг + + ...+rkNkMk. C.51) Найдем вычет L по модулю т1. Так как каждое из чисел Мг,М3,.. . ,Мк делится на <L>mi = <r1N1M1>m. C.52) Но так KaK^ATjil/tX,! = liT0 имеем <?->„, = г,. C.53) Аналогично <ЬУт = г,. C.54) Поэтому Z, представляет решение задан- заданной системы сравнений. Легко убедиться, что если у является решением C.47), то у - L должно быть кратно М, поэтому ре- решение C.51) является единственным (как класс вычетов по модулю Af). Пример. Для задачи со ступнями мальчи- мальчиков имеем r»i = 7, тг = 8, /из = 9, #и«=11, М = 1 -8 -9 • 11 = 5544, Мг = 8 • 9 • 11 = 792, Мг = 1 -9 • И = 693, Мз = 7-8 • И = 616, Л/4 = 7 • 8 -9 = 504. Тогда Л^! является решением сравнения 792 Nt = I mod 7. Этому сравнению эквива- эквивалентно более простое сравнение <792>7 Nt = = 1 mod 7, решение которого естьМ, = 1; Л^2 есть решение сравнения < 693 >8Л^2 = = 1 mod 8, N2 = 5; N3 есть решение сравне- сравнения < 616 >9ЛГ3 = 1 mod 9,7V3 = 7; N4 есть ре- решение сравнения < 504 >11ЛГ4 = 1 mod 11, 22 N4 ~ 5. (Если бы модули mi были больше, то мы не могли бы найти Л^- простой про- проверкой и необходимо было бы воспользо- воспользоваться методом непрерывных дробей, рас- рассмотренным выше.) Поэтому получаем, что L = г,G92 X 1) + Ы693 X 5) + + г3F16 X 7) + /-4E04 х 5) mod 5544. C.55) Если бы нашим мальчикам понадобилось измерить другую комнату и остатки в ре- результате измерений оказались бы равными ?1 у Г2>гэ>г4> то по этим остаткам можно бы- было бы найти длину комнаты, воспользовав- воспользовавшись C.55). Хотя китайскую теорему об остатках можно использовать для нахождения реше- решений многочисленных головоломок, ее значе- значение состоит в том, что она позволяет опи- описать однозначное отображение одномерных величин в многомерные, отличающиеся от отображений, которые мы обычно исполь- используем. Чтобы построить такое отображение, до- допустим, что имеется последовательность дан- данных/ [i ] для / = 0, 1,. , М - 1. Теперь введем fc-мерный массив / = [^i, гг, . . , г^], полученный из /[/] следу- следующим образом /[/•ь гг,..., rk] =f[<r1N1M1 + r2N2M2 + -+-...+ rkNkMkyM]} C.56) где символы г,- могут принимать значения 0,1,...,/^ - 1; fc-мерный массив / имеет различное число точек в каждом измерении. Китайская теорема об остатках показыва- показывает, что это отображение однозначное. Как будет показано в § 6, это отображение име- имеет большое теоретическое и практическое значение. Китайская теорема об остатках служит основанием для замечательной системы счи- счисления, которая часто предлагалась для по- повышения быстродействия выполнения ариф- арифметических операций (но редко использова- использовалась) . Представим каждое из целых чисел 0, 1, 2,... ,М - 1 к цифрами.
a = a* C.57) где i -я цифра связана с представляемым числом через вычет по модулю mi: e, = <a>.,. C.58) Китайская теорема об остатках форму- формулирует правило восстановления значения числа по его цифрам. Подобное представле- представление чисел здесь называется китайским ко- домЯтобы убедиться в высоком быстродей- быстродействии выполнения арифметических опера- операций, рассмотрим сложение. Сумма получа- получается из цифрового представления с =а + Ь: с = Сг Ск где с, = (а, + Ь,Ут,, C.59) т. е. путем поразрядного модулярного сло- сложения чисел а и Ъ. Из выражения C.59) сле- следует, что сложение можно выполнить без переносов цифр, осуществляемых из разря- разряда в разряд. Аналогичная ситуация сохра- сохраняется и при умножении, которое осуще- осуществляется в соответствии с правилом с, = <аД>И1. C.60) В этой системе счисления путем выбора достаточно больших взаимно простых мно- множителей можно представить какие-угодно большие числа. ЗАДАЧА. Китайское соответствве иногда также предлагается как метод обнаружения ошибок. Рас- Рассмотрите, как можно его использовать для контро- контроля ошибок при умножении 8-битовых слов. ЗАДАЧА. Пусть для числа а в китайском пред- представлении использованы модули т, = />*', т2 = e= Pi и т. д. и М = JJ рк'. Как можно узнать, имеет ли место равенстио (а, Щ = 1? Теперь рассмотрим другое соотношение, которому удовлетворяет <p(N)- Это соотно- соотношение окажется полезным в дальнейшем. Предположим, что d является делителем N; J^j, - некоторая функция и. Под функцией будем понимать сумму членов вида f(d), соответствующих всем делителям N. Очевид- Очевидно, что так как UjA делитЛГвсякий раз, когдаd\N. Можно доказать неожиданное тождество *- C.62) Оно понадобится в дальнейшем при рас- рассмотрении* примитивных корней. Чтобы до- доказать его, рассмотрим множества {х: (х, N) = d и 1 < х < iV}*,C.63) где d является делителем N. Каждое целое число, лежащее в интервале от 1 до N, будет принадлежать одному и только одному тако- такому множеству. Чтобы определить, сколько элементов содержится в каждом множестве семейства C.63), рассмотрим эквивалентное множество ИМИ- *<$}•<"«> в котором содержится ровно \р (Щ\ элемен- тов. Суммируя количество элементов в мно- множествах вида C.64), получаем N, и соотно- соотношение C.62) доказано. Пример. Делителями N=p7 являются 1, 2 = 1; <р(р) =р =р(р- 1). Теперь обратимся к последовательно- последовательностям, состоящим из N членов вида (стУк, где п. - 0, 1, 2, . . . , N - 1. Следующая тео- теорема утверждает, что любая такая последо- последовательность представляет собой просто пе- перестановку чисел 0, 1, 2, . . ¦ ,N- 1, если (a,N) = 1. 1 В работах по арифметике вычислительных машин [57, 119, 120] подобное представление чи- чисел называется модулярным. * {jc: А) означает множество всех х, удовлет- удовлетворяющих условию А.
Теорема. Для и = 0,1,2,... ,N- 1 <аи>лг принимает значения всех N возможных вы- вычетов, если (a, N) = 1. Докажем теорему, показав, что N чисел множества {(m}N} являются различными, а поскольку все они лежат в интервале от О до (N — 1), то обязательно должны быть числами 0, 1, 2 N- 1. Чтобы убедить- убедиться, что все они различны, предположим, что два числа последовательности одинаковы: <OHi> = <аи2> • Тогда Ma(Hi -пг). C.65) Но так как (aN) = 1, то а не может быть од- одним из сомножителей N, поэтому М(и,-и2). C.66) Очевидно, что 0 < \пг - пг\ < N, поэтому N не может быть делителем («i — п2). Из этого следует, что в последовательности не может быть двух одинаковых членов, и тео- теорема доказана. Прямым следствием этой теоремы явля- является утверждение, что для каждого а, взаим- взаимно простого с N, из любой Л^-значной после- последовательности {/[л]} образуется ее пере- перестановка {/[<аи>лг]}. Теперь рассмотрим ДПФ двух таких пе- переставленных последовательностей. Пока- Покажем, что ири >лг] C.67) ДПФ F [к] и G [к] удовлетворяют соотно- соотношению . C.68) Выпишем выражение для ДПФ1 последо- последовательности [g[n]} fc = O, 1, ...,N- 1, C.69) Следовательно, при замене к на {ак) (что соответствует простой перенумерации выра- выражений) получаем 1 W здесь соответствует именно W = ехр {-у^\ fVN A 12), а G[<ak>] = Теперь заменим (аи) на и, что приведет только к изменению порядка суммирова- суммирования членов. В результате получим G[<ak>] = = F[k]. C.71) л0 Здесь использовался тот факт, что W* = — ц/<х>- соотношение, которое определяет фундаментальную связь между теорией чи- чисел и ДПФ. Нам более привычен частный случай а= =N — 1, которому соответствует соотноше- соотношение дискретных преобразований Фурье ис- исходной и инвертированной во времени по- последовательностей . ЗАДАЧА. Описать последовательность {(ari)} в случае (a, N) = d ф 1. Предположим, что имеется алгоритм, ко- который по заданной последовательности {/[и]} позволяет вычислить ДПФ в одной точке, например F [1]. Предположим далее, что не- необходимо вычислить F [Ь], где (b,N) = 1. Сначала найдем а, удовлетворяющее урав- уравнению <а6>*=1. C.72) Затем применим алгоритм к переставлен- переставленной последовательности {/[<аи>]}. чтобы вычислить F [Ь] ¦ Для каждого а, такого что (a, N) = 1, о < < N, получается своя, отличная от других перестановка, которая подставляется в ис- исходный алгоритм. При этом вычисляются различные значения ДПФ F [Ь]. Можно вы- вычислить, таким образом, y(N) различных значений ДПФ, аргументы которых взаим- взаимно просты с N. Предположим, что имеется второй алго- алгоритм, который позволяет вычислить F [с] вместо F [1], где (с, N) = с, т.е. с является некоторым делителем N. Когда а пробега- пробегает ipGV) чисел, взаимно простых с N, этот алгоритм, примененный для переставленной последовательности, позволит вычислить F[(bc)] при <be> = d для всех значений d, удовлетворяющих соотношению {d, N) =
= с, и, возможно, с повторениями. Этот вто- второй алгоритм, таким образом, позволит вы- вычислить ДПФ в некоторых точках, не дос- доступных для первого алгоритма. Сколько потребуется таких алгоритмов, чтобы вы- вычислить ДПФ во всех точках? Этот вопрос имеет другую эквивалентную формулиров- формулировку, сколько делителей имеет N1 Чтобы вы- вычислить ДПФ во всех точках, используя толь- только перестановки исходной последовательно- последовательности описанного вида, требуется один ал- алгоритм на каждый делитель N. Если N^pVpV р?... = Jj.pt, тб его делители суть числа, которые могут быть представлены в виде Pk<,ak, C.73) так что количество делителей N равно d(N) = (а, + 1)(а2 + 1)... = C.74) 4. Следствия теоремы Эйлера, используемые в цифровой обработке сигналов Ниже будут рассмотрены свойства дели- делимости целых степеней целых чисел. Будет представлена теорема Эйлера и введено по- понятие примитивных корней, которые ис- используются в математических выражениях, описывающих перестановки данных в пре- пределах некоторой последовательности, и поз- позволяют установить тот факт, что для неко- некоторых N TV-точечное ДПФ по существу экви- эквивалентно циклической свертке. Это утверждение является одним из фун- фундаментальных положений, на котором стро- строится алгоритм ДПФ Винограда. Основные понятия, введенные здесь, в дальнейшем Применяются в § 5, где вводятся в теорети- теоретико-числовые преобразования. Разобравшись с последовательностями Каи)>}, мы теперь рассмотрим последова- последовательности другого вида {<«")>}. Любая из них может рассматриваться как выходная последовательность некоторого конечного автомата, правило преобразования которо- которого задается как xn+i = <.axnyN. D.1) Первый элемент последовательности все- всегда будем полагать равным единице, т. е. х0 = 1. Любой другой элемент должен де- делиться на (a, N). Конечный автомат должен формировать периодическую с некоторого места выходную последовательность. Если в D.1) (a, N) Ф 1, то начальное условие обусловливает в периодической выход- выходной последовательности конечного автома- автомата наличие апериодического начала. Одна- Однако можно заметить, что если (a, N) = 1, то последовательность «а")"} является чисто периодической. Исследуем периодичность последовательности Ка")>} при (a, N) = 1. В этом случае любой член последователь- последовательности должен быть числом, взаимно прос- простым с N. Рассмотрим случай N= 1 и а - 3. Последо- Последовательность < 3" > 7 есть {l, 3, 2, 6, 4, 5, 1, 3, 2, . . . }, и ее период равен 6- Общее пра- правило состоит в том, что период последова- последовательности < ап > при (a, N) = 1 должен быть делителем >р (N) ¦ Этот примечательный факт вытекает из теоремы Эйлера. Теорема Эйлера. Если (a, N) = 1, то <>'<"% =1. D.2) Для доказательства теоремы рассмотрим две последовательности целых чисел {(п)} и {(art}}, причем лишь те п, для которых (п, N) = 1. Эти последовательности являют- являются перестановками, что легко доказать с помощью такого же рассуждения, как в § 3 при рассмотрении полных последовательно- последовательностей К и)} и Kan)}. Так как две последова- последовательности состоят из одинаковых элемен- элементов, то произведение всех элементов одной последовательности должно быть равно про- произведению всех, элементов другой последо- последовательности: С П «> = < П ап> = (а™ П «>. <л,ЛО- I (л,Л0--1 <»,/V)=l D.3) Второе произведение, очевидно, является числом, взаимно простым с N (почему?), 25
и поэтому обе части равенства можно раз- разделить на это число. В результате получим <в*">=1. D-4) Из этой теоремы вытекает еще один ме- метод решения уравнения <ах>* = 1» а имен- именно Возвращаясь к последовательности Ко"», обозначим неизвестный период последова- последовательности через d. Так как <а°> = 1, остат- остатки (а*), <ам>, • • • тоже равны 1. Оче- Очевидно, что <а"> Ф 1 для всех п, не кратных d, поскольку в противном случае период по- последовательности был бы меньше d. Поэто- Поэтому <р (W) является величиной, кратной пе- периоду d№(N). D.6) ЗАДАЧА. Найти вычет числа 62s0 по модулю 5. Другим следствием теоремы Эйлера яв- является равенство <а">* - <a"W% . D.7) Таким образом, при (a, N) = 1 показа- показатель степени числа а можно привести по модулю <р GV), не изменив величины вычета всей степени по модулю N. Частным случаем теоремы Эйлера для простых модулей является теорема Ферма. Теорема Ферма. Для простого р имеет место сравнение а' = a mod p. D.8) Можно заметить, что период последова- последовательности [(а*)//} равен наименьшему це- целому числу п, для которого выполняется равенство (if У я — 1- Назовем это число порядком а по модулю N. Можно ли выб- выбрать элемент а таким образом, чтобы полу- получался максимальный период ^(N)"! Такой элемент принято называть первообразным корнем для N. Ответ на этот достаточно сложный для исследования вопрос суще- существенно зависит от N. Простейший случай соответствует простому числу N. Начнем со следующей теоремы, которая не так оче- очевидна, как может показаться. 26 Теорема. Сравнение JT] апх" = 0 mod p имеет не больше ЛГнесовпадающих решений, если р — простое число. Чтобы убедиться в необходимости простоты модуля, рассмот- рассмотрим сравнение х2 — 1 — 0 mod 8, которое имеет четыре несовпадающие решения 1,3, 5, 7. Опустим доказательство этой теоремы и прямо приступим к доказательству дру- другой теоремы. Теорема. Если d \ р - 1, то существуют точно <f>(d) классов вычетов порядка d по модулю простого числа р. Доказательство. Предположим, что су- существует, по крайней мере, один элемент порядка d. Тогда а0, а1, а2, . . . , (fld'iy яв- являются d различными классами вычетов. Так как каждый из них удовлетворяет уравнению х^ — 1 = 0 mod p, то согласно предыдущей теореме не может быть других элементов порядка d. He все эти решения являются вычетами порядка d; некоторые из них имеют меньший порядок Но после- последовательность {(д"У] является периоди- периодической с периодом d и может быть приведе- приведена во взаимно-однозначное соответствие с по- последовательностью целых чисел {0,1,2,... . . . , d — 1}. Заметим, что последователь- последовательность К(яг)")} ПРИ (r> d) = 1 представляет собой перестановку исходной последова- последовательности, ибо в противном случае получа- получается последовательность с меньшим пери- периодом из-за повторений. Таким образом, ес- если р - простое число, то имеется точно y(d) несовпадающих элементов порядка d, если они вообще существуют. Чтобы завершить доказательство, необходимо показать, что имеется некоторый элемент порядка d для каждого делителя d целого числа р ~ 1 . По- Положим N = р — 1. Известно, что d\ N. Пусть число элементов порядка d равно a(d). Тогда a(d) =0 или ip(d). Общее число эле- элементов всех порядков d должно быть рав- равно N, поскольку каждый из N возможных элементов имеет некоторый порядок. Та- Таким образом, ?N«(d) = N. D.9) Вспомним теперь формулу C.62). Если бы какое-то из чисел a (d) оказалось равным ну-
лю, то D.9) противоречило бы C.62). По- Поэтому теорема доказана. В частности, имеется точно >р(р — 1) эле- элементов порядка (р — 1), и все они являют- являются первообразными корнями. Таким обра- образом, мы показали, что каждое простое чис- число р допускает первообразные корни. Ес- Если g представляет собой первообразный корень по модулю простого- числа р, после- последовательность fe0,^1,^2),^3),...} со- содержит по одному разу все вычеты по мо- модулю р, исключая 0. Получается следующая замечательная теорема. Теорема. Если р — простое число, то су- существует такое целое число g, для которо- которого Kg")y} представляет собой перестановку чисел {1,2, ...,/> — 1}. Решение вопроса о первообразных кор- корнях оказалось достаточно простым, если N - простое число. Более сложный для рас- рассмотрения случай соответствует N=pk, т. е. степени простого числа Можно показать, что если g является первообразным корнем для р, то g или (g -\- р) являются первооб- первообразными корнями для рк, за исключением случая р = 2. Заподозрив, что число а является перво- первообразным корнем, нетрудно быстро прове- проверить зто, возведя а в подходящие степени. Известно, что e*(JV) = 1, и если а перво- первообразный корень, то при d < ip(N) не долж- должно иметь место сравнение cfi = 1. Чтобы убе- убедиться в этом, следует проверять лишь те показатели степени, которые делят y{N)- Например, пусть необходимо найти перво- первообразный корень из 25 = 52. Нетрудно опре- определить, что 2 является первообразным кор- корнем по модулю 5. Так как <^B5) = 20 = = 22 • 5, то необходимо проверить только следующие показатели степени: 1, 2, 4, 5, 10. Число 2, возведенное в указанные сте- степени по модулю 25, есть 21 = 2; 22 = 4; 24 = 16; <2S > =7; <210> =24. Таким образом, 2 есть первообразный ко- корень из 25. Если бы значение 2 не подошло, то следовало бы взять 2 + 5 =7. В заключение отметим, что существуют Первообразные корни для N = рк, N = 2рк (р - нечетное число), а также для N = 2, N= 4. Для других значений ЛГих нет1. Располагая основными сведениями о при- примитивных корнях, можно доказать интерес- интересную теорему о ДПФ. Теорема. Для целого числа р р-точечное ДПФ по существу представляет собой ци- циклическую свертку. Пусть F[k] = I]/ИИ* и пусть F [0] л=0 вычисляется отдельно. Отделим члены/[0] от остальных членов суммы. =P?/[n]W*+f[0],(k,p) = 1.D.11) Существование первообразного корням поз- позволяет произвести в 4.11 замену перемен- переменных: Первая замена перенумерует уравнения, а вторая - изменяет порядок следования членов в сумме. В результате получаем ¦** +/[0]- D-13) Можно заметить, что сумма (в 4.13) пред- представляет собой (р - 1)-точечную цикли- циклическую корреляцию, поскольку {/['(g")>]} есть последовательность, зависящая от но- номера и, а {W*"} — последовательность, за- зависящая от номера (п + к). Корреляция яв- является циклической, так как согласно D.7) показатель степени g берется по модулю Чтобы представить ДПФ как цикличес- циклическую свертку, определим выражение <g~"> как <^У<"~"Х Это согласуется с общепри- общепринятыми правилами выполнения действий с показателями степеней. Например, опреде- определенный вычет (g~°y является обратной ве- величиной, так как <g-g'1> = <^<')>=1- D-14) сом. 1 Этот результат был впервые доказан Гауе-
Теперь если вместо D.12) сделать подста- подстановки fc-+<g*>; и— ><g~'>, DЛ5) то нетрудно установить, что F\\gk;] пре- превратится в циклическую свертку длины ЗАДАЧА. 7-точечное ДПФ может Оьпь запи- записано как произведение вектора на матрицу. Пред- Представить приведенную выше перестановку в век- торво-матрнчиой форме. ЗАДАЧА. Показав, как можно использовать программу 256-точечного БПФ для вычисления 257-точечвого ДПФ. Было показано, что для простого числа/? ДПФ по существу экЁивалснтно свертке. Это оказалось так, потому что вес, кроме одного, целые числа 0, 1, 2, ... р - 1 явля- являются взаимно простыми ери отображение к—* (gky осуществляет их перестановку. Подобную же конструкцию, но с меньшим успехом можно провести и в ел> час Л'-то- чечного ДПФ, когда N - не простое число, но имеет первообразный корень. Сначала разделим общее выражение для F \к \ на два при (k,N) = 1 и (к, N) > 1: %n] Wk, (к, N) > 1; D.16) = 2 f[n]W'k (W)>1 (n,N) f[n\Wk 1 (k,N)= 1. D.17) В D.17) заменим к на (gk\ , причем во второй сумме заменим п на \g'")N. В ре- результате получим (л,Л')>1 + Ё f[<g-">W<*">, D.18) Выражение D.18) состоит из двух слага- слагаемых, одно из которых является сверткой, а другое - поправочным членом. Мы счита- считаем этот результат менее удачным, чем в слу- случае простого р, но пригодным для последу- последующего преобразования. Предположим, что 7V - степень простого числа: N = pa. D.19) Сначала исследуем D.16), т. е. случай, когда к не взаимно просто с N. Это означа- означает, что в D.16) к делится на р. При этом ограничении имеем P°tf[n]W>"k. D.20) Сделаем подстановку п прит = 0,1,...,р-1и г =0,1,..., р*~1т + г, — 1: F[pk] = lm + r]W')'*. / D.21) Выражение D.21) показывает, что если в результате суммирования ра-точечной по- последовательности {/[л]} образовать после- последовательность {h[r]\ r = 0, l,...,p-1 - 1. D.22) то F[pk] представит р*~ '-точечное ДПФ по- последовательности {h[r]}. Напомним, что сначала мы хотели свести ра-точечное ДПФ к свертке. Нам удалось записать его в виде суммы свертки и поправочного члена. Теперь мы установили, что этот остаток ра-точечного ДПФ может быть вычислен как р"': -точечное ДПФ. В свою очередь, вычисление поправочного члена также мож- можно свести к свертке и ДПФ. В конце концов, остаток будет представлять собой /?-точеч- ное ДПФ , которое сводится к свертке и тривиальному поправочному члену. Теперь обратимся к выражению СМ=,?/М^ D-23) которое соответсвует поправочному члену в D.17). Выражение D.17) равносильно системе из трех равенств: одно из них — это D.23), а два других имеют вид Мы уже убедились, что В [к] может быть вычислено как у(ра)-точечная свертка, а С [к] есть ра~1 -точечное ДПФ. Отметим, что (и, р°) > 1 означает, что п кратно р. Таким образом, получаем ''?llV»k D.24) 28
Но это выражение представляет ДПФ ра~х -точечной последовательности [f[pn]}. Конечно, его можно затем свести к уф*'1 )- точечной свертке и ра~2 -точечному ДПФ и т.д. Сведение ДПФ ра-точечной последова- последовательности к совокупности циклических сверток является достаточно сложной и гро- громоздкой процедурой. Для этого требуется многократно выполнить разделение, пере- перестановку последовательностей, а также сложение некоторых промежуточных ре- результатов друг с другом. На рис. 4.1 приведена структурная схе- схема рассмотренного метода сведения 9-то- 9-точечного ДПФ к совокупности циклических сверток. Мы убедились, что не для каждого N су- существует первообразный корень. В наибо- наиболее важном случае N = 2а он отсутствует, за исключением N=2 или 4. Однако можно всегда построить некоторое экспоненциаль- экспоненциальное представление для множества взаимно простых вычетов по модулю N. Такое пред- представление может иметь, например^вид^^1^ или еще более сложный. В случае, когда N является степенью 2, взаимно простые с iV вычеты (т. е. нечетные числа, меньшие N) представим в следующем виде: <(-1)Я13"'>* при/^ =0,1; и2 =0, (N) 1 — 1. Убедитесь в этом при N = 8, 16, 32, 64, для экономии усилий за- заметив, что порядок 3 должен делить х[В]+х[3]+х[б] о- х12]+х[5]+х[8] о- г/77 с XfSJc Тректочечнле ДПФ 7 Свернуть с {w\ws} -oxW -ОЛШ Трехточечное ДПФ I 1 Свернуть с {W3,W} Сдернуть с fW, W\ W\ wsw7w5} «a to -oxm -oxm -OXM -oxm ¦oXfSJ Рис. 4. 1. Девятиточечное дискретное преобразование Фурье, которое сводится к вычислению сверток, перестановкам и сложению с поправочными членами 29
Если элементы взаимно простые с N мо- могут быть представлены как (gVgVy, то в результате сведения ДПФ к свертке полу- получим двумерную свертку. Рассмотрим случай N-2a более подробно. Выражение D.16), как и прежде, преоб- преобразуем в 2е*-точечное ДПФ. В D.17) сла- слагаемое С [к] из D.23) преобразуем, как вы- выше, и также превратим его в 2с*~1*-точечное ДПФ. Второе слагаемое В[к] = ? f[n]Wk = ? f[n]W*D.25) Если положить к —>¦ <(— 1)*'3*'Х п —* ~К(—1)"'3"'>, то получим ? 0 5. Группы, кольца и поля в цифровой обработке сигналов До сих пор мы занимались множеством целых чисел {0, 1, 2, . . . , N - 1} и опера- операциями сложения и умножения по модулю числа N. С точки зрения современной мате- математики, эти операции являются специаль- специальными случаями большого класса более общих отношений, и, вероятно, чтобы не доказывать аналогичные теоремы заново в каждом отдельном случае, эти общие от- отношения изучаются абстрактно. Рассмотрим три из указанных абстрактных отношений, известных как группы, кольца и поля. Многие свойства, которыми обладает множества чисел {0, 1,. . ,N— 1} при сло- сложении по модулю N могут быть обобще- обобщены следующим образом. Будем обозначать. а, Ь, с, ... — элементы некоторого множе- множества, которое может состоять из бесконеч- бесконечного числа элементов. Пусть точкой • обоз- обозначается некоторая операция, заданная на этом множестве. В одном из частных случа- случаев, представляющих интерес, элементами множества являются неотрицательные це- целые числа, меньшие N, а операция • явля- является сложением по модулю N. Для сложения по модулю N справедли- справедливы. 1) замкнутость относительно операции а • Ъ как элемент, принадлежащий множеству; 2) коммутативный закон а • b=b • а; 3) ассоциативный закон (а • Ь) • с-а • ф • с); 4) существование нулевого или единичного эле- элемента (существует некоторый элемент, обозна- обозначаемый как 0, такой, что для любого элемента а имеет место равенство 0 • а =а); 5) существование обратного элемента (каждо- (каждому элементу а соответствует другой элемента, та- такой что а • а = 0). Можно доказать, что обратный элемент является единственным. Пятое положение позволяет ввести другую операцию — вы- вычитание, - которая обратна операции сложе- сложения • Любое множество с определенной на нем операцией, обладающей всеми указанными свойствами, называется группой1. Имеется большое разнообразие множеств и операций, образующих группу. ЗАДАЧА. Пусть элементами множества явля- являются все возможные значения сопротивления, включая и отрицательные значения, и пусть опера- операция означает последовательное соединение. Обра- Образует ли указанное множество группу? Что поин- мать под нулевым (единичным) элементом? До- Допустим, что групповой операцией было бы парал- параллельное соединение. Что следовало бы понимать под нулевым элементом в этом случае1. Если множество конечно, то групповую операцию можно задать в форме таблицы, перечисляющей результат применения опе- операции к каждой возможной паре. Например, 1 Строго говоря, такое множество называется коммутативной (нли абелевой) группой Иногда также рассматриваются группы, которые не удов- удовлетворяют коммутативному закону Мы будем рассматривать только коммутативные группы и называть их просто группами 1 Операцию в коммутативной группе можно обозначать ло разному • ("мультипликативная запись"), + ("аддитивная запись") и пр Обычно обозначение '" применяется в соединении с ад- аддитивной записью операции, а " - в соединении с мультипликативной, соответствующий элемент называется тогда "нулем" или "единицей" Авто- Авторы принимают необычное соглашение " при мультипликативной записи операции в русском переводе приходится называть " единичным элементом". - Прим ред 30
для множества 0, 1, 2, 3 и сложения по модулю 4 имеем следующую таблицу сло- сложения: . • 0 1 2 3 0 0 1 2 3 1 1 2 3 0 2 2 3 0 1 3 3 0 1 2 ЗАДАЧА. Что говорят свойства 1, 2, 5 о структуре данной таблицы? Что означает свойство 3? Второй вопрос труднее. Теперь рассмотрим другое множество целых чисел {1, 2, 3, 4} и операцию умно- умножения по модулю 5. Мы убедимся, что они образуют группу. Рассмотрим по порядку каждое свойство группы: 1) замкнутость (а X b) mod 5 в принципе мо- может быть равно 0, 1, 2, 3 или 4 Но если а и Ъ при- принимают только значения 1, 2, 3, 4, т. е оба взаим- взаимно просты с 5, то их произведение не может де- делиться на 5. Таким образом, (а X b) mod 5 не мо- может принимать значение 0 и наше множество зам- замкнуто по умножению; 2) коммутативный закон (а X Ъ) mod 5 = (b X X a) mod 5, поскольку обычное умножение ком- коммутативно, 3) ассоциативный закон [см. C.14)]; 4) элемент 1 является единичным. Это может вызвать недоразумение, поскольку 1 в данном множестве играет ту же самую роль, что и элемент D, введенный при определении понятия группы. Но это только изменение обозначения; 5) элемент 1-обратный элемент для самого се- себя, так как A X 1 > 5= 1; 4 также обратен для самого себя, так как Dx4), = 1. Элементы 2 и 3 являются обратными элементами один для Другого, так как < 2 X 3 ) s = 1. Таблица умножения для такой группы имеет вид X 1 2 3 4 1 1 2 3 4 2 2 4 1 3 3 3 1 4 2 4 4 3 2 1 Переставив последние две строки и столбца, получим сюрприз: X 1 2 4 3 1 1 2 4 3 2 2 4 3 1 4 4 3 1 2 3 3 1 2 4 Сюририз состоит в том, что таблица ум- умножения по модулю 5 имеет ту же структу- структуру, что и таблица сложения по модулю 4. Существует следующее взаимно одно- однозначное соответствие между элементами этих групп. Группа сложения Група умножения по модулю 4 по модулю 5 О < > 1 > 2 1 2 3 4 3 На самом деле, есть обобщение этого ре- результата на случай произвольного простого числа р. Элементы 1,2,3, ... ,р — 1 явля- являются степенями некоторого первообразного корня g, и из правила возведения в степень по модулю р - 1 (см. с. 16) следует, что Поэтому наше соответствие имеет вид 0 < > <2°>5 1 < > <2]>5 2 < > <22>5 3 < > <23>5 Подводя итог, можно сформулировать следующие теоремы. Теорема. Полное множество вычетов по модулю N со сложением по модулю N об- образуют группу. Теорема. Для произвольного простого числа р ненулевые вычеты по модулю р с умножением по модулю р образует груп- группу. Эта мультипликативная группа изоморф- изоморфна аддитивной группе со сложением по мо- модулю <р(р)', т. е. имеет ту же структуру. ЗАДАЧА. Доказать, что целые числа, меньшие М и взаимно простые с М образуют группу с опе- 31
рацией умножения по модулю М. Эта группа име- имеет tp(M) элементов. В каких случаях эта группа изоморфна аддитивной группе со сложением по модулю <р (ДО ? Группа называется циклической, если все элементы группы могут быть получены из одного элемента группы следующим обра- образом: а, а • а, а • а • а, а • а • а • а,. . . . Например, аддитивная группа со сложе- сложением по mod N всеща является цикличес- циклической, так как все элементы группы порожда- порождаются числом 1. Для конечной циклической группы стро- строки таблицы групповой операции после соот- соответствующего перемещения должны пред- представлять циклические перестановки одна другой, как в приведенной выше таблице сложения по модулю 4. Не все группы из N элементов изоморф- изоморфны одна другой, но все циклические группы из N элементов изоморфны одна другой. На этом изоморфизме было основано доказа- доказательство эквивалентности р-точечного ДПФ циклической свертке. Можно развить идею изоморфизма групп и связи ДПФ с циклическими свертками несколько дальше. Например, рассмотрим группу целых чисел, меньших 15 и взаим- взаимно простых с 15 с умножением по модулю 15, которая не является циклической. Это множество есть {1, 2, 4, 7, 8, 11, 13, 14} . Каждый элемент можно представить в виде <?з#5>15, где gb = П и gs = 7*. Здесь i принимает только значения 0 и 1, а/ —0,1. 2, 3, поскольку Поэтому можно устновить соответствие Ю;0| Ю,1| Ю,2| Ю,3| |1,0| 11,11 1 7 4 13 11 2 14 8 Таким образом, построена группа, изо- изоморфная исходной мультипликативной груп- группе. Элементами этой новой группы явля- являются пары целых чисел | i,j \, где г выби- выбирается из множества вычетов по модулю 2, а / - из множества вычетов по модулю 4. Объединенной операцией новой группы яв- являются сложение по модулю 2 для первого числа каждой пары и сложение по mod 4 для второго числа каждой Пары: IW» I • I Wai = К»« + »а>2, </« +J2>*\- Очевидно, что правило объединения пред- представляет одну групповую операцию (сло- (сложение по модулю 2) для первого числа пары и другую групповую операцию (сло- (сложение по модулю 4) для второго числа па- пары. Полученная таким образом группа на- называется произведением двух более прос- простых групп, т. е. в данном случае произведе- произведением аддитивной группы со сложением по модулю 2 и аддитивной группы со сложе- сложением по модулю 4. Аналогичным образом можно показать, что каждая группа, обра- образованная из целых чисел, меньших М и вза- взаимно простых с М, с умножением по моду- модулю М в качестве групповой операции, изо- изоморфна циклической группе или произве- произведению нескольких циклических групп. * Читатель может поинтересоваться, как были ЗАДАЧА. В некоторой 35-точечиой последова- выбраны ?3 и gs ?3 представляет сумму прими- тельиости {/[л]} все значения, для которых (п, тнвного корня 3 и числа, кратного 3, такого, что 35) Ф 1, тождественно равны нулю. Показать, «то g} = 1 mod 5S a #s представляет примитивный часть ДПФ последовательности {/[л]} представая- корень 5 плюс некоторое число кратное 5, такое, ет точно двумерную циклическую свертку разме- 4TO?S = mod 3. 32 ров 6 на 4.
В заключение отметим, что констатация изоморфизма одной группы другой может быть иногда использована для того, чтобы показать эквивалентность одного типа вы- вычислений другому. В случае ДПФ элементы одной последо- последовательности {/[и]} умножаются на элемен- элементы другой последовательности {h[n]} = {W"} И элемент, который умножается на f[n] в ю-й сумме, есть h[{mri)N]. Мы обнаруживаем, что операцию <(/?in>jv можно трактовать как групповую операцию, а некоторые адреса элементов последова- последовательностей /[л] и h [л] - как элементы группы. Такая группа изоморфна либо ци- циклической группе, либо произведению цик- циклических групп. Перемечая индексы после- последовательностей/[л] и h [л] в соответствии с изоморфизмом, получаем алгоритм вы- вычислений, в котором элемент, который ум- вожается на / [л], есть h [л • т], где • пред- представляет либо сложение по модулю <p(N), либо многомерное модулярное сложение. Такой алгоритм вычисления становится Одномерной или многомерной циклической Сверткой. Теперь рассмотрим множество элемен- элементов, в котором можно производить две различные операции • • и ¦. В примерах, которые последуют ниже, символ • будет Чвсю использоваться для обозначения свое- своего рода сложения, а ¦ — для обозначения своего рода умножения. Другой возмож- возможной парой операции являются логическое ИЛИ и логическое И или теоретико-мно- жественные операции объединение и пере- пересечение. Теперь предположим, что элементы мно- множества и операции подчиняются следующим Законам. "Ь\- •ь) элементы множества; 1) замкнутость а аш , 2) коммутативный закона • Ъ =Ь • а, а ¦ Ъ = Ъ >а, 3) ассицнативный закон (а • Ь) • с =а • (Ь • с), (аш Ь) те =а ¦ (Ь»е), 4) нуль н единица, существует некоторый эле- элемент, обозначаемый как 0, такой, что 0 • а = а; су- существует некоторый элемент, обозначаемый как 1, такой, что 1 ¦ а =а; 5) обратный элемент: для каждого элемента а имеется элемент а = - 2, такой, что а • 3 = 0. *** Заметим, что только для некоторых элемен- элементов а имеются элементы а'' такие, что а та'1 = 1. 6) дистрибутивный закон а ¦ (й • с) = (а ¦ Ь) • • (ашс). Если отвлечься от дистрибутивного зако- закона, то другие законы позволяют утверждать, что элементы множества образуют группу по отношению к операции • и "почти груп- группу" по отношению к операции ¦, за исклю- исключением тога, что для этой второй операции не постулируется существование всех об- обратных элементов. ЗАДАЧА. Для резисторов с параллельным со- соединением, обозначаемым как •, и последователь- последовательным, соединением, обозначаемым как ¦, одни нз указанных законов не соблюдается. Какой нз этих законов нарушается? Элементы и операции, подчиняющиеся этим законам, образуют коммутативное кольцо с единицей. Мы станем называть его просто кольцом. Рассмотрим множество {0,\,... ,N- 1} с операциями сложения по модулю N • и умножения по модулю N ¦. Эта структура образует кольцо. ЗАДАЧА. Показать, что следующие структу- структуры являются кольцами с операциями + и X в ка- качестве операций • и ¦: множество целых чисел: положительных, отри- отрицательных н равных нулю; множество рациональных чисел; множество действительных чисел; множество комплексных чисел; множество полиномов; множество отношений полиномов. Большинство известных законов алгеб- алгебры остается справедливым для произволь- произвольного кольца. Мы воспользуемся этим фак- фактом, когда будем переносить привычки ра- работы с целыми числами в область действий над полиномами, комплексными числами, вычетами и т. д. ЗАДАЧА. Оправдайте каждый шаг в доказа- доказательстве того, что дли любого элемента а, принад- принадлежащего кольцу, а ¦ 0 =0: 33
amO = 0 • amO; аиО = — {аша) • (ama) • (amO)\ a ¦ 0 = —(аma) • (am(a - 0))-, amO= —(ama) • (ama); am0 = 0. Другие известные законы алгебры мож- можно аналогичным образом доказать и для произвольного кольца, за исключением то- того, что в кольце возможна ситуация, когда а ¦ Ъ равно нулю при том, что а и Ъ не рав- равны нулю. Кроме того, в кольце операция деления обычно (но не всегда), невыполни- невыполнима: обычно принятый запрет деления на нуль должен быть распространен также и на другие делители. Если выполнен усиленный закон об об- обратных элементах для операции ¦ в следу- следующей редакции "для каждого элемента а, исключая 0, существует единственный эле- элемент а такой, что a "a"*1 =1", то кольцо в этом случае называется полем. В приве- приведенной выше задаче четыре из шести колец являются также полями. (Какие из них ие являются полями? Почему?) При усиленном законе об обратных элементах операция деления приобретает смысл и является операцией, обратной ¦. В поле а ¦ Ъ может быть равно нулю только в тех случаях, когда либо а, либо Ъ равно нулю. В дальнейшем при рассмотрении колец и полей откажемся от абстрактных симво- символов • и ¦ и будем использовать обычные символы сложения и умножения. Хотя мо- могут встречаться кольца и поля, в которых операциями не являются собственно сложе- сложение и умножение, но они здесь не рассматри- рассматриваются. Однако умножение и сложение мо- могут иметь различный смысл в различных кольцах. В этом легко убедиться, сравнивая сложение и умножение полиномов, комп- комплексных чисел или отношение полиномов. В любом кольце или поле результат мно- многократного умножения элемента на себя вполне естественно записывается с помо- помощью показателя степени, например, аа = а2, ааа = а3 и т. д. Заметим, что, хотя ап является элемен- элементом поля или кольца (в силу замкнутости), показатель степени п не обязательно дол- должен принадлежать им. Теперь рассмотрим уравнение Дх) = х5 + ах* + Ьх3 + + cx2 + dx + e = 0, E.1) где а, Ъ, с, d, e — элементы некоторого поля, а х — переменная. Пока мы не знаем, имеет ли решение уравнение f(x) = 0 в интересу- интересующем нас поле. Предположим, однако, что оно имеет решение х =и. Тогда можно убедиться в возможности следующей факторизации: Дх) = (х- и)(х* + (и + а)х2 + + (и2 + аи + Ь)х2 + (и3 + аи2 + Ьи + с)х+ + (и* + аи3 + bu2 + cu + d)) . E.2) Читатель может проверить, что тождество E.2) может быть распространено на произ- произвольный корень произвольного полинома над произвольным полем или кольцом. Те- Теперь предположим, что имеется другое ре- решение х = v. Поскольку два решения не совпадают, го » — и Ф 0.В кольце это нам ничего не дает, но известно, что в поле су- существует (х — и)~1 (кроме случая, когда х = и), и можно E.1) умножить на (х - и) ' Ч чтобы убедиться, что другое решение х = v должно удовлетворять уравнению х* + ах3 + Ъ'х2 + с'х + d' = 0, E 3) где a', b', с ,d' - коэффициенты в E.2). Поэтому по индукции можно убедиться, что в поле, но не обязательно в кольце име- имеет место следующая теорема. Теорема. В любом поле полиномиальное уравнение л-й степени может иметь не бо- более чем и решений Читателю эта теорема может показагьсй очевидной, и, возможно, это так и есть Ori- нако напомним, что при обсуждении D 9) мы использовали специальный случай этой теоремы, когда поле образовывали классы вычетов по модулю простого числа р. Этот результат был использован для доказатель- 34
ства существования первообразного корня в этом поле. Почти то же рассуждение мож- можно использовать для доказательства в лю- любом конечном поле1 существования элемен- элемента, степени которого последовательно по- порождают все элементы поля, за исключени- исключением 0. (Заметим, что определение первооб- первообразного корня по модулю ./V налагает на не- него меньше требований: его степени должны образовать все взаимно простые с N вычеты. Определение первообразного корня в поле сильнее — он должен порождать все элемен- элементы, за исключением 0. Поскольку среди ко- колец классов вычетов по Модулю N полями являются лишь те, которые отвечают про- простым N в этом классе полей, то эти два опре- определения совпадают.) Здесь не будет рассматриваться подробно структура конечных полей. Рекомендуем чи- читателю более детально изучить этот вопрос по одной из работ, перечисленных в спис- списке литературы. Однако на нескольких важ- важных результатах следует специально оста- остановиться. Теорема. Если р — простое число, то эле- элементы {0, 1, 2 р — 1} образуют поле со сложением и умножением по модулю р. Это поле обозначается GF (р). Теорема. В любом конечном поле коли- количество элементов равно степени некоторого простого числа р*. Это поле Галуа обозна- обозначается GF (рк) ¦ Теорема. Каждое конечное поле имеет Первообразный корень — элемент, степени которого порождают все элементы поля, эа исключением 0. Теорема. Каждое конечное поле, состо- состоящее из N элементов, изоморфно каждому другому полю из N элементов. Теперь рассмотрим, как можно постро- построить конечное поле из рк элементов и как в нем устроены операции сложения и ум- умножения. Во-первых, необходимо перечислить эти р* элементов. Будем представлять элемен- элементы поля полиномами1 степени к - 1 с коэф- коэффициентами из поля GF(p), т. е. значения коэффициентов будут ограничены множе- множеством [0,1,... ,р — \}. Например, элемен- элементы GFC2) образуют множество {0, 1, 2, х, х + 1, х + 2, 2х, 2х + 1, 2х + 2]. Очевидно, что имеется точно рк таких элементов. Элементы поля могут быть за- записаны также просто как fc-разрядные ком- комбинации цифр, каждая из которых принад- принадлежит GF (р); преимущества полиномиаль- полиномиального представления элементов поля станут очевидными при рассмотрении операций сложения и умножения. Казалось бы естественным определить сложение и умножение в рассматриваемом поле как обычное сложение и умножение полиномов. Но такие определения не будут удовлетворять аксиомам поля, поскольку нарушится аксиома замкнутости. Поэтому операции сложения и умножения в поле GF(p*) определим как сложение и умно- умножение с последующей корректировкой. Для сложения корректировка заключа- заключается в приведении каждого коэффициента к множеству значений {0, 1, . . . , р — 1 } . Правило сложения, 1) Сложить элементы как полиномы; 2) заменить каждый коэф- коэффициент в полиноме-сумме его вычетом по модулю р. Заметим, что полином 0 являет- является аддитивным единичным элементом. ЗАДАЧА. Показать, что элементы поля GF (рк) с введенным выше правилом сложения образуют группу. Для умножения корректировка более сложна, так как необходимо исправлять не только значения коэффициентов, но и по- показатели степени. Ведь в результате умноже- умножения полиномов могут получаться показате- показатели степени к и выше, которые не могут со- соответствовать элементам поля GF (рк). 1 Поле с конечным числом элементов называ- называют также полем Галуа. 1 Важно избежать путаницы между этими поли- полиномами и выражениями, в которые входят эле- элементы поля Например, если у - переменный эле- элемент поля, то мы можем встретиться с выраже- выражением от у, которое содержит постоянные члены, внешне похожие на функции от х
Предположим, что мы выбрали специаль- специальный полином к-й степени Р (х). Выбор поли- Затем разделим Q(x) на,Р(л:) и сохраним остаток R (х): (х2 + 2) асх2 + (ad асх1 bc)x + bd + lac (ad нома Р(х) будет обсужден позднее, пока лишь примем, что все его коэффициенты — целые числа и принадлежат GV(p), а сам полином нормирован (старший коэффи- коэффициент равен единице). Тогда коррекция полинома-произведения с целью исключе- исключения хк и более высоких степеней х будет заключаться в делении полинома-произведе- полинома-произведения на Р(х) и сохранении только остатка1. Правило умножения. 1) Перемножить элементы как полиномы; назвать произ- произведением Q(x); 2) разделить Q (х) наР(х), получив в остатке R (х). Полином R (х) бу- будет иметь степень, меньшую к; 3) заменить коэффициенты полинома R(x) их вычета- вычетами по модулю р. Заметим, что полином 1 представляет собой мультипликативный еди- единичный элемент. Пример. Элементы поля GFE2) пред- представляются полиномами ах + Ъ, где а и Ъ могут принимать значения 0, 1,2, 3,4. Сум- Суммы ах + Ъ и сх + d являются элементом ех + /• В соответствии с принятым прави- правилом сложения е = <а+с>5; /=</> + с/>5. E.4) Чтобы вычислить произведение, необходимо выбрать полином второй степени Р (х). Вы- Выберем Р(х) = х2 +2. Пока этот выбор выглядит произволь- произвольным. Его свойства будут обсуждены ниже. Чтобы умножить ах + Ъ на сх + d и в резуль- результате получить gx + h в соответствии с пра- правилом умножения, сначала перемножим ес- естественным образом полиномы Q(x) = (ах + Ъ)(сх + d) = = асх2 + (ad + Ъс)х + bd. bc)x + (bd - lac) ==> R(x). Наконец, заменим каждый коэффициент его вычетом по модулю р. bcM; h = <bd- 2ac}5. E.5) ЗАДАЧА. Показать, что правила умножения н сложения в GF (рк) удовлетворяют аксиомам кольца. После того как будет решена приведенная выше задача, необходимо показать, что каж- каждый ненулевой элемент поля GF (рк) име- имеет мультипликативный обратный элемент. Этим самым будет показано, что построе- построено поле. Существование мультипликативно- мультипликативного обратного элемента будет зависеть от Р(х)- В приведенном примере, если бы был выбран полином Р(х) = х2 + 1, то получи- получилось бы только кольцо, а не поле. (Почему?) Для того чтобы правило умножения удов- удовлетворяло аксиомам поля и, в частности, для каждого элемента, кроме 0, существо- существовал мальтипликативныи обратный элемент, необходимо, чтобы Р(х) был неприводи- неприводимым полиномом (т. е. не разлагался в про- произведение двух полиномов). Доказатель- Доказательства этого мы не приводим. Хотя мы не станем доказывать свойства поля GF(pk) в общем случае, нетрудно по- показать, что при выборе Р(х) = х2 + 2 (пра- (правило умножения удовлетворяет аксиомам в поле GFE2). Нетривиальная часть дока- доказательства состоит в проверке существова- существования элемента сх + d, обратного элементу ах + Ъ, 1 е. такого, что (сх + d) ¦ (ах + Ь) = = 1. Доказательство. Элемент, Обрат- Обратный элементу ах + Ь, существует, если мож- можно найти такие end, что 1 По существу это полиномиальный эквива- эквивалент нахождения вычета, в § 7 мы рассмотрим это более подробно. A) B) <Jbd - 2вс>5 = 1. E.6а) E 66) 36
При выборе C) d={-qb}5 и с-<?а>5 E.7) и произвольном q удовлетворяется E.6а). Тогда, подставив выбранные значения с и. <1ъ E.566).получим уравнение D) <<7Bа2 + />2)>5=1- E-8) Стало быть, элемент, обратный элементу ах + Ъ, в поле GFE2) существует, если существует элемент, обратный элементу {2а2 + Ь2} в поле GF E). В поле GF E) возможными вычетами Ъг являются 0, 1,4, причем 0 имеет место толь- только при Ъ = 0, а для 2а2 возможными вычета- вычетами являются 0, 2, 3, причем 0 имеет место только при а = 0. Поэтому {2а2 + Ь2У не может быть равен нулю, если только не рав- равны нулю одновременно а и Ь, и можно най- найти значение q из E.8), а затем вычислить cud, воспользовавшись E.7). ЗАДАЧА. Показать, что х + 1 является перво- первообразным корнем в поле GFE2). Указание: не- необходимо только вычислить (х + 1)" для d = 2, 3, 4, 6, 8, 12 и убедиться, что ни одно из получен- полученных значений не равно 1. Следует признать, что правило умноже- умножения в поле GF (рк) не выглядит ни вполне естественным, ни привычным. Рассмотрим, однако, поле GF(p2) и предположим, что нам повезло с Р(х) = х2 + 1, т. е. он ока- оказался неприводимым полиномом Тогда правило умножения принимает вид (ах + Ь)(сх + с() = = {(be + ad)\x + {(bd - афр. E.9) Это правило выглядит хорошо знакомым: 0но напоминает правило умножения ком- комплексных чисел. По этой причине поле GF (р2) при некоторых р может рассматри- рассматриваться как аналог комплексных чисел, при- причем х играет роль мнимой единицы / = V—Т. Элементами полей и колец, которые мы рассматривали до сих пор, были либо числа, либо fc-разрядные комбинации чисел Прави- Правила действий были настолько похожи на обычные умножение и сложение, что можно было, по крайней мере, найти специальные случаи, когда они совпадают с обычным ум- умножением и сложением. Например, если рассматривать поле целых чисел по модулю р, то, когда сумма или произведение в обыч- обычной арифметике меньше р, они совпадают с суммой или произведением по модулю р. Это было бы справедливо в том случае, когда требовалось выполнить длинную цепь вычислений, лишь бы была уверенность, что результат должен лежать в пределах от 0 до р — 1. Поэтому некоторые вычисления можно выполнять в конечном поле или кольце, да- даже если требуется получить результат, ко- который лежит в обычной области целых чисел. Теперь внимательно проанализируем вы- выполнение вычисления с целыми числами с помощью элементов и операций некоторой конечной вычислительной структуры (КВС), конечного поля или кольца. Это может по- показаться весьма странным, но будет приве- приведено несколько примеров, проясняющих, когда подобная идея прекрасно работает, а в каких случаях — нет. Предположим, что выполняются операции в кольце целых чи- чисел по модулю 64 и обычные целые числа 0, 1, . . . , 63 соответствуют одноименным элементам кольца. Будем следовать струк- структурной схеме вычислений, приведенной на рис. 5.1. Пример 1. Пусть необходимо вычислить 92 — 82. Вычислим это, воспользовавшись арифметикой по модулю 64 <92>64 = 17; <82>64 = 0; <17-0>64=.17 Ответ правильный, хотя оба промежуточ- промежуточные результаты оказались неверными. Пример 2. Пусть необходимо вычислить 92 — З2. Вычислим это, воспользовавшись арифметикой по модулю 64. Ответ по мо- модулю 64 неверен, так как правильный от- ответ не укладывается в интервал целых чи- чисел от 0 до 63. Пример 3. Пусть необходимо вычислить 92/3. Вычислим это, воспользовавшись арифметикой по модулю 64, причем учтем, 47
Входные данные для обычных ¦ вычислений Алгоритм с обычными операциями +, -, х Ответ в одычной системе ¦ счисления Соответствующие элементы в КВС (например^ кольце по модулю 64) Ответ, соответствующие! ответу в обычной системе счисления Рис. 5.1. Обычные вычисления, выполняемые в конечной вычислительной структуре что 3 имеет в кольце обратный элемент C х х 43 = 1 mod 64): <92>64 = П; <3->>64 = 43; <17 х 43>64 = 27. Ответ правильный. Пример 4. Пусть необходимо вычислить 82/4. Это невозможно сделать, воспользо- воспользовавшись арифметикой по модулю 64, так как деление на 4 в нашем кйльце не имеет смысла1. Соответствие между обычными числами и элементами КВС является неод- неоднозначным. Можно воспользоваться этим для выполнения действий с отрицательными числами. Пример 5. Пусть необходимо вычислить 6 х 15 + 9 х (—11). Вычислим это, восполь- воспользовавшись арифметикой по модулю 64 (-11N4=53: <6х15>б4 = 26; <9 X" 53>64 = 29; <26 + 29>64 = 55 = -9 mod 64. В некоторых конечных вычислительных структурах имеется много элементов, для которых отсутствует связь с обычными чис- 1 Это утверждение неточно. Назовем "резуль- "результатом решения на а элемента Ъ в кольце" любое решение уравнения ах = Ъ. Тогда может оказать- оказаться, что такого решения вообще нет или что реше- решений много; точные сведения об этом множестве и составляют результат деления. Результатом де- деления 82 на 4 в нашем кольце являются 0, 16, 32. — Прим. ред. 38 0 X 2x Зх Ax 5x 6x 1 x + 2x + 3x + 4x + 5X + 6x + 1 1 1 1 1 1 2 x + 2x + 3x + 4x + 5x + 6x + 2 2 2 2 2 2 3 x + 2x + 3x + Ax + 5x + 6x + 3 3 3 3 3 3 4 x + 2x + 3x + 4x + 5x + 6x + 4 4 4 4 4 4 5 x + 2x + 3x + 4x + 5x + 6x + 5 5 5 5 5 5 лами. Например, в поле из 72 элементов элементами поля являются 6 х+ 6 2х+ 6 Зх + 6 4х+ 6 5х+ 6 6х + 6 Здесь только элементы первой строки соот- соответствуют обычным числам. Другие элемен- элементы не могут фигурировать в качестве отве- ответов при вычислениях, для которых извест- известно, что результатом является обыкновенное число. Однако они могут выступать в роли промежуточных результатов. Одним из видов вычислений, которые це- целесообразно выполнять в КВС, является дискретная свертка. Мы увидим, что суще- существуют полные аналоги ДПФ быстрого пре- преобразования Фурье (БПФ) и теоремы сверт- свертки, и это позволяет вычислять дискретные свертки в соответствующих КВС, выбрав их такими, чтобы арифметические опера- операции были особенно простыми. Первый шаг в этой цепи рассуждений заключается в существовании аналога в ДПФ. К конечным вычислительным структурам, которые мы могли бы рассмотреть, относятся: 1) коль- кольцо целых чисел R^f по модулю М; 2) поле целых чисел GF(p) по модулю простого числа р — специальный случай A); 3) по- поле Галуа GF(pk) из рк элементов. Так как в последних двух случаях доказательства
оказываются более простыми1, то рассмот- рассмотрим только кольцо. Пусть например, М = = 637=72 х 13. Если бы существовал аналог ДПФ в коль- кольце RM, то можно было бы ожидать, что пре- преобразованием множества из N элементов [а[0], а[\], . . . , a[N — 1]} было бы множе- множество элементов [А [0] ,А [1],... ,А [N- 1]}, полученных по формуле где W — элемент кольца, выбранный таким образом, чтобы он обладал свойством, ана- аналогичным свойству exp(/2rr/7V) для комп- комплексных чисел, а именно: <У% = 1; Нетрудно показать, что для Wm имеет- имеется обратный элемент, а именно W, где г = = <—mk}N . Но требование существования обратного элемента для N представляется новым. Допустим, М раскладывается на множители следующим образом: М = tfpfp? . . ¦ EЛЗ) Очевидно, что N не должен делиться ни на одно из чисел Pi,Pi,Pz- • ¦ Но JV должен быть делителем ф(М) = (/>, — \)рк1'\Рг - 1)/>2'~'Х Таким образом, Лг должен быть делителем произведения т. е. W представляет собой элемент порядка N. Сразу можно заметить, что данное усло- условие может оказаться трудновыполнимым - в кольце вполне может не оказаться эле- элемента, порядок которого был бы N (в этом случае нельзя преобразовывать последова- последовательности длины N) . Прежде всего выбор W ограничен условием взаимной простоты с М и, таким образом, в силу D.2) обязатель- обязательно N\ip(M). В рассматриваемом примере М = 637, ф{М) -1 х 6 х 12, так что возмож- возможными длинами преобразования являются делители числа 7x6x12. Но даже это не является достаточной гарантией. Например, Э арифметике по модулю 16 отсутствует элемент порядка 8. Теперь предположим, что нам удалось найти подходящее W и вы- вычислить преобразование. Хотелось бы также иметь обратное пре- преобразование следующего вида: . E.12) Даже это несложное выражение предъяв- ияет определенные требования к арифме- арифметическим операциям в кольце. В выражении фигурируют W'm" и N~l, что предполагает существование в кольце элементов, обрат- обратных элементам Nn УГк. В рассматриваемом примере М = 637, и те- теперь установлено, что N\6 х 12. ЗАДАЧА. Показать, что не существует пары преобразований вида E.10) н E.12) варнфметн- ке по модулю 2%. Заметим, однако, что мы не показали, что E.12) действительно является преобра- преобразованием, обратным E.10); установлено лишь, что операции, которые нужны для определения этих преобразований, могут быть выполнены в кольце. Чтобы показать, что это преобразование действительно явля- является обратным, необходимо убедиться, что при подстановке E.12) в E-10) получает- получается единица. Это, в свою очередь, зависит от выполнимости тождества wk w 2k w k) = 0 для k^OmodN, E.14)' которое справедливо не всегда, а лишь для некоторых W и N во вполне определенных кольцах. Если бы мы оперировали полем, даже конечным полем, то можно было бы умножить правую часть выражения на (\ук _ i^ и получить после сокращения См., например, [б] - 1 Сравните с A.13)
членов результат, равный нулю. Так как {Wk - 1) не равно нулю (поскольку W ~ элемент порядка N), то другой множи- множитель должен быть равен нулю. В кольце этот аргумент имеет силу тогда и только тогда, когда (Wk - 1) является обрати- обратимым (т. е. взаимно простым с М) для каж- каждого к Ф mod N. Однако можно воспользо- воспользоваться китайской теоремой об»остатках, чтобы выявить, условия для преобразова- преобразования в кольце. Напомним китайское пред- представление, введенное в C.57), основанное на китайской теореме об остатках, которое хорошо и естественно работает в модуляр- модулярной арифметике. Для М = р\1 р\*. . . ркм» мы можем представить величину х с помо- помощью /х цифр, причем г'-я цифра определяет- определяется как хг = <*>;-*'. {5.15) Например, при М = 637 х может быть пред- представлена как Тогда W может быть представлена с помо- помощью д цифр как w2 Wk - 1 может быть представлена аналогич- аналогично с помощью цифр <и'(* — l>pf'. В рас- рассматриваемом примере Wk — 1 может быть представлена как <и-5-1>„ В китайской системе счисления если г'-я цифра есть 0 или делится на pjt то число не является взаимно простым с М; и обратно если ни одна цифра не есть нуль или не де- делится на собственный простой модуль, то число является взаимно простым с М. (Почему?). Таким образом, если Wk - 1 является взаимно простым с М, то необ- необходимо, чтобы не имело в качестве сомножителя р;- в любом цифровом разряде при 0 < к < N. 40 Поэтому <и*-1>Л*ь0, 0<k<N, E.16) или, что то же самое, <№,*>*= 1, 0<k<N. E.17) Так как согласно E.11) W имеет порядок W, то также имеет место Но согласно теореме Ферма uf' =1 mod pt. Поэтому единственный логичный вывод состоит в том, что ./V должен быть делите- делителем р( — 1 для каждого отдельно взятого простого числа р{, на которое делится М. Применительно к рассматриваемому при- примеру М = 637, на TV должны делиться как 6, так и 12. Поэтому преобразование возмож- возможно для длин 7V= 2, 3, 6. Можно также воспользоваться китайской системой счисления для построения W. Сна- Сначала найдем первообразный корень g49 для 49 и первообразный корень gl3 для 13. Из таблицы, приведенной в "Справочнике по математическим функциям"М. Абрамввича и И. Стигана1 находим gA9 =3; #13 = 2. Но g49 - элемент поля GF G2) порядка 42, так что #49 - элемент порядка 6. Аналогично ?,з является элементом поля GFA3.) пб- рядка 12, так что g213 является элементом порядка 6. Вычисление показывает, что и>, = <37>49 = 31; и'2 = <22>13=4„ Поэтому W является элементом кольца Л637, Для которого китайское представле- представление имеет следующий вид: 31 4 За- Заметим, что ответ не является однозначным. ЗАДАЧА. Найти W в обычных обозначениях. Интересная возможность состоит в пред- представлении W входных данных в китайской системе счисления и использовании моду- модулярной арифметики, описанной в C.59) и C.60), для выполнения преобразования. 1 Пер. с англ./ Под ред. В. А. Диткина и Л. Н. Ка- Карамзиной. - М.. Наука, 1979. - Прим. ред.
Это приводит к двум совершенно независи- независимым вычислениям. Во избежание недоразумений подчерк- подчеркнем, что мы не указали способа вычислять обычное ДПФ некоторой последовательно- последовательности, зная аналог ее ДПФ и КВС. Можно ис- использовать КВС-аналогию ДПФ для других целей, но не для непосредственного вычисле- вычисления спектра1. Установив существование обратного пре- преобразования для некоторых длин последо- последовательности входных данных в определен- определенных кольцах, предоставляем читателю по- построить соответствующие аналоги ДПФ в конечных полях. Поскольку доказано су- существование как прямого, так и обратного преобразования E.14), легко доказать теорему о циклической свертке для любой конечной вычислительной структуры. ЗАДАЧА. Сформулировать и доказать теорему о циклической свертке в кольце Rtf. ЗАДАЧА. Найти аналог БПФ в кольце R^j- Мы установили аналогию между нахож- нахождением свертки в обычной и КВС-арифме- тике, что позволяет вычислить свертку, сле- следуя по правой ветви структурной схемы, приведенной на рис.5.1. Чтобы вычислять полезную свертку, КВС должна обладать следующими свойствами: 1) КВС должна обеспечивать наличие преобра- преобразования, аналогичного по своим свойствам jV-to- чечному ДПФ при N, соответствующем интересу- интересующей нас задаче; 2) N должно быть существенно составным, чтобы существовали быстрые алгоритмы свертки; 3) все возможные числовые результаты долж- должны допускать представление в КВС; 4) умножение на любую степень W (что экви- эквивалентно КВС-умножению) должно быть простой операцией. Одним из наиболее интересных случа- случаев является свертка, выполняемая в кольце Rj^, где М - число Ферма BB*> + 1). В этом случае преобразование существет для последователь- последовательностей входных данных длины, равной степени 2, н для вычисления преобразования почти всегда 1 Можно с помощью КВС-аналоГин находить отсчеты ДПФ либо путем вычисления свертки с помощью z-преобразования, либо с помощью ме- методов, описанных в гл. 4. используются W, возведенные в степень 2. При этом арифметика в кольце имеет простой вид, рассмотренный в C.21). Ниже приводится несколько работ, в ко- которых обсуждаются вопросы вычисления сверток с помощью преобразований в ко- конечном поле или кольце. На первый взгляд, эти методы представляются очень привлека- привлекательными, но после внимательного анали- анализа обнаруживается, что перечисленные выше четыре требования сильно противоречат друг другу. В частности, свойство 4) накла- накладывает ограничение на длину последователь- последовательности входных данных, так как существу- существует много элементов, для которых умноже- умножение является простым. Кроме того, так как методы дают точные ответы, свойство 3) вынуждает нас осуществлять представление каждого числа с высокой точностью, ибо мы не можем позволить себе получать лишь приближенные результаты. Например, свертка последовательности 8-битовых чи- чисел с последовательностью 12-битовых чи- чисел требует суммирования 20-битовых про- произведений, и если любой член свертки состо- состоит из суммы 64 таких произведений, то мо- может понадобиться 26 бит для представления результата. Из этого следует, что необхЪди- мо выбрать КВС, состоящую, по крайней мере, из 226 элементов, и поэтому все опе- операции будут выполняться, по крайней мере, с 26-битовыми словами. Так как для решения немногих задач, возникающих при обработке сигналов, тре- требуется такой точный ответ, ограничения, присущие этим методам, по-видимому, яв- являются их недостатком. 6. Преобразование одномерных массивов данных в многомерные Мы используем теперь сведения из теории чисел, приведенные выше, для ис- исследования связей, существующих между одномерными и многомерными массивами данных. Конкретно мы покажем, что и цик- циклическая свертка и ДПФ для одномерных последовательностей, длина которых может быть выражена в виде прозведения соответ- 41
ствующих множителей, могут вычисляться как многомерные свертки и ДПФ того же самого массива, но преобразованного в многомерный. Для определенности рассмотрим после- последовательность, содержащую 30 значений, {а [0], а [1], а [2] а [29]}. Образуем двумерный массив Щпи пг]}, преобразуя {а[и]}, следующим образом: 0,0] 40,1] 40,2] 40,3] 40,4] 40,5] 41,0] 41,1] 41,2] 41,3] 41,4] 41,5] 42,0] 42, 1] 42,2] 42,3] 42,4] 42,5] 43, о] 43,1] 43,2] 43, з] 43,4] 43,5] .44,0] 44,1] 44,2] 44,3] 44,4] 44, 5] J а[0] а[1] *[2] 43] fl[4] a[5] а[6] а[7] а[8] а[9] а[Ю] а\ а[Щ а[13] й[14] fl[15] а[Щ а[Щ а[19] а[20] а[21] а[22] а[23] Lfl[24] a[25] a[26] a[27] a[28] a[29]J Назовем это преобразование лексикогра- лексикографическим упорядочением. Основная идея заключается в записи индекса и, исходной последовательности в модулярном пред- представлении, в данном случае и = 6и, + п2. Та- Такое представление дает индексы пх и и2 последовательности а, указывая, таким об- образом, расположение значений а [и] в дву- двумерном массиве. Таким же образом можно образовать трехмерный массив {а[пи пг, и3]}, исполь- используя лексикографическое упорядочение {а[п]} и модулярное представление индекса и и =15и, + 5и2 + из =3 X 5и! + 5и2+ п3 а[15и, + 5«2 + из] = а[пи п2, п3]. Таким образом, лексикографическое пре- преобразование одномерной последовательно- последовательности в многомерную тесно связано с пред- представлением чисел. Если индекс п может быть представлен тремя цифрами и1( пг, Из в некоторой системе счисления, то мы используем эти цифры как индексы трех- трехмерного массива. 42 Операции ДПФ и циклической свертки, введенные в § 2, определены и для много- многомерных последовательностей. Теперь мы по- покажем, что в некоторых важных случаях одномерные ДПФ и свертки могут вычис- вычисляться как многомерные ДПФ и свертки и наоборот. Однако это невозможно при лексикографическом упорядочении. Рассмотрим преобразование, которое впервые было приведено в виде C.56) и соответствует записи одномерного индекса и в китайской системе счисления C.57). Для этого преобразования необходимо, что- чтобы объем массива данных Л" можно было бы представить в виде произведения ju взаимно простых множителей mt, i = 1, 2, . . . , ц: N =flimt; (mt, mj) = 1 при 1Ф). F.1) Разложение F.1) невозможно, если N равно степени простого числа, и поэтому все результаты данного параграфа неприме- неприменимы к таким важным случаям, когда,на- когда,например, N= 2m. Более того, число отсчетов, располагающихся по каждому измерению преобразованного массива, должны быть попарно разными. Используя формулы C.48) - C.51), вычисляем величины Mj: N i= 1,2, ..., F.2) а затем определяем величины Щ, решая сравнения <MM,>BI=1, i= 1,2 л. F.3) Заметим, что D.5) позволяет представить Nt в виде <MTl"")~1)w Затем получаем модулярное представление индекса и: п = И! Пг пм F.4) определяя каждое иг- по и формулой и,- - <и>т,- F.5) Число п можно восстановить по набору иг-: F.6) Пусть нам дана 30-точечная последова- последовательность [а[п]}. Образуем из нее трех-
мерный массив [а[пи пи п3]}, где Wj =- = 5, т2 = 3 и т3 = 2. Из F.2) следут, что М, = 6; Л/2=10; Л/3 = 15; iV, = l; N2 = l; N, = 1. По F.5) и = Пг Из и по F.6) И = <6/Ji 10и2 Используя полученные уравнения в каче- качестве правил для преобразования массива, мы получаем отображение Я[пи и2> Из] = -в [и]. Пусть теперь нам даны две iV-точечные последовательности: {я[и]} и {й[и]} — определена их циклическая свертка Приведенное замечание указывает на то, что если мы имеем хорошие алгоритмы для вы- вычисления многомерных сверток, то мы мо- можем использовать их для вычисления од- одномерных сверток большой длины. С дру- другой стороны, алгоритм для вычисления од- одномерной свертки может быть использован для вычисления многомерной свертки. Рассмотрим теперь, в какой степени опи- описанное выше соответствие применимо для ДПФ. Для iV-точечной последовательности { а [и]} ее ДПФ [А [к]} определяется хоро- хорошо известным выражением «1 Пг Образуем, как показано выше, две трех- трехмерные последовательности {а[пи п2, и3]} и [В[пи пг, Из]} и определим их трехмерную циклическую свертку mi— I mi-1 wa-1 c[Hi, П2, Из] = 2 2 SsTnUllX !l = 0 Zi=0 Zi = O XS[<«1 — A>m» <«г — 1г>т„ <И3 — /з>т,]. F.8) Теперь несколько неожиданно для нас мы обнаруживаем, что {?[«], п2, п3]} в точности представляет результат преобразо- преобразования (с [и]} в трехмерный массив. Чтобы убедиться в этом, запишем F.7) с индекса- индексами, представленными в китайской системе счисления, помня, что при такой записи сло- сложение по mod N выполняется с помощью поразрядного сложения по mod mf F.10) и если образовать {а [п j, п2, п3]) по прави- правилу а[пи пг, и3] = а то многомерное ДПФ {А[ки кг, к3]} опре- определяется как А[ки к2, к3\ ="? "?' 1С а[пи п2, п3]х И1=0 И|=0 и»=0 x(wMy>k>(WMtyikt(WM>Yl1" F.11) Надо надеяться, что обобщение на случай ц измерений очевидно для читателя. Как [А[кикг,к3]} связано с [А[к]}1 Если выразить и и к в китайской системе счисления, то F.10) примет вид mi- I ffii- I mi-»l V У X Умножение кг къ «1 Пг Пг F.12) { = 2 ПК Л Пг h <пг- Пг к кУт, /з <Из" Пъ к, кг к3 F.9) X в показателе F.12) выполняется по и, следовательно, может быть проведено по- поразрядным умножением по mod mr В ре- результате показатель принимает вид 43 <JIlfcl>m, <П2кгУт, <Пгкз}т,
и может быть восстановлен в соответствии с F.6) как Так как полученное выражение стоит в пока- показателе W, то выражение На- Напринимает вид Но F-13) можно еще упростить, так как приведение по mod mi в показателе не нужно (Почему?) Учитывая это, получа- получаем к, кг к3 , п2, F.14) Теперь понятно, как {A[ki, кг, к3]} отно- относится с {Л[Аг]}. Пусть к\ = (Nik^, И к'г = <Ыгкг>т„ к>3 = (N3k3ym, т.е. к', = <i\U,>m,. F.15) Тогда А[к\, к'г, к!3\ = к, кг к3 .F.16) Так как N; взаимно просты с mt, то F.15) просто переставляет индексы и, следова тельно, соответствие в F.16) взаимно од нозначное. Многомерное ДПФ F.11) может быть вычислено с помощью F40), и одно- одномерное ДПФ F40) может вычисляться с помощью F.11), для чего требуется только переупорядочение входных и выходных зна- значений, чтобы оба выражения были полно- полностью эквивалентны. ЗАДАЧА. Мы уже обнаружили, что определен- определенное теоретиксНисловое преобразование в Д637 ие позволяет вычислять свертки последовательно- последовательностей длиной больше чем шесть значений. Предпо- Предположим, что мы преобразовали свертку объема больше чем шесть значений к виду многомерной свертки. Пусть мы также имеем многомерное теоретико-числовое ДПФ, аналогичное описаииому выше. Нашей задачей является вычисление свер- ток большой длины в арифметике кольца Rt31. К сожалению, и это оказыиаетси невозможным. (Почему?) До появления статьи о быстром преоб- преобразовании Фурье (БПФ) Кули и Тьюки в 1965 году И. Дж. Гуд в 1958 показал, как эквивалентность F-10) и F.11) может быть использована для вычисления одномер- одномерных ДПФ. До появления БПФ для вычисле- вычисления многомерного ДПФ размерности rrii x х пц х т3 требовалось значительно меньше времени, чем для вычисления одномерного ДПФ объема тх • т2 • тъ. Алгоритм Гуда указал на эквивалентность этих двух под- подходов для взаимно простых Wj, гщ, тъ. 7. Полиномиальная теория сложности вычисления свертки Одной из основных операций в линейной теории систем является свертывание двух сигналов Прямой метод вычисления сверт ки требует числа умножений, пропорци- пропорционального произведению длин двух сигна- сигналов, что непосредственно очевидно из запи- записи сверточной суммы № =jt,J[k]x[n - к}= h[ri\ * х[п). G.1) Более того, хорошо известно, что задача свер- свертывания h [n] и я: [и] совпадает с определе- определением коэффициентов произведения двух полиномов, коэффициенты которых заданы. & этом суть теоремы о свертке для z-пре- z-преобразований А именно Y(z) = H(z)X(z), где Y(z),X(z) nH(z) суть z-преобразова- z-преобразования у[п], х и h [n] соответственно, т. е. Y{z)=±j[n]z" и т. д.1 В этом параграфе мы займемся задачей вычисления у[п] из G.1) с помощью алго- алгоритма, имеющего наименьшее число умно- умножений среди всех алгоритмов, вычисляющих у[п]. Мы хотим не выводить строго мате- математически эти минимальные алгоритмы, а объяснить в простых выражениях основные 1 Мы используем г-преобразование по положи- положительным степеням г, чтобы упростить изложение, ограничившись полиномиальной арифметикой. 44
идеи используемого подхода и оправдать необходимость изучения элементарных по- понятий из теории классов вычетов полино- полиномов. Изложение теории классов вычетов для полиномов будет проводиться парал- параллельно описанию теории классов вычетов целых рациональных чисел, приведенной выше. Фактически обе эти теории являются частными примерами теории абстрактных колец и полей, изложенной в § 5. Непосредственное вычисление сверточной суммы требует LM умножений для вычис- вычисления L + М - 1 точек выходной последо- последовательности {у[п]) в предположении, что длина {х[п]} равна L, а длина [h[n]} рав- равна М. Понятно, что прямой метод не являет- является алгоритмом с минимальным числам умножений. Применение БПФ для быстрого вычисления свертки очень часто более эф- эффективно. Но в какой мере близок метод быстрого вычисления свертки к оптималь- оптимальному алгоритму с минимальным числом умножений? Еще важнее знать, чему равно минимальное число умножений и как мож- можно синтезировать минимальный алгоритм систематическим образом. Прежде чем дать частичный ответ на эти вопросы, рассмот- рассмотрим один пример. Пример (трехточечная свертка): Х(г) = 40] + *№' + x[2]z2; Y(z) = H(z)X(z) = Пять выходных отсчетов равны: у[2] = x[2]h[0] + x[\]h[l] у[4] = х[2Щ2]. Для прямого алгоритма требуется девять умножений. Можно обойтись семью, исполь- использовав следующий прием для вычисления У [2]: у[2] = (х[0] + х[\] + х[2]) • (А[0] + А[2]) - у[0] - tf 1] - ЯЗ] - ЛЯ Отсчеты^[0],^[1],^[3] и^[4] по-преж- по-прежнему вычисляются непосредственно, но мы уменьшили число умножений с девяти до семи. Можно еще уменьшить число умноже- умножений, внимательно рассмотрев вычислитель- вычислительные формулы, но мы пойдем по пути систе- систематического синтеза алгоритма. Как уже было сказано, задача сверш- вания двух последовательностей эквива- эквивалентна задаче умножения двух полиномов. С последней задачей легче работать, и поэто- поэтому в дальнейшем мы сосредоточим наши усилия на умножении полиномов. По хо- ходу дела мы получим результаты, которые применимы к гораздо более широкому классу задач, а не только к свертке. Отме- Отметим, однако, что ответом на задачу поли- полиномиального умножения являются коэффи- коэффициенты произведения. Напомним, что полином степени Сможет быть точно восстановлен по значениям в N+ 1 точках с помощью интерполяционной фор- формулы Лагранжа. Это соображение подсказы- подсказывает метод нахождения Y (z) =H(z)X(z), за- заключающийся в том, что сначала определя-. ются константы Y(z0), Y{z1),... ,Y(zL+M-i\ а затем определяется Y(z) с помощью ин- интерполяционной формулы Лагранжа: Y(z) = Y(Zl)Uz), G.2) в которой интерполяционные полиномы имеют вид _ тт б EГ=^7) Вычисление Y(zt) требует одного умноже- умножения. Y(zj) = H(Zj)X(zj). Если вычисления H(z ¦) и X(Zj) не требуют умножений сов- совсем (или очень немного) и если интерполя- интерполяция по формуле Лагранжа G.2) также не требует умножений, тогда мы можем полу- получить алгоритмы для свертки, в котором имеется только L + М - 1 умножений. На самом деле, вычисление X(z{) потребует умножений на фиксированные константы z", но эти умножения в некотором смысле легче выполнить, чем вообще умножение двух произвольных чисел. Это же сообра- соображение относится к вычислению H(zf) и к умножению Y(z{) на фиксированные коэф- 45
фициенты Lj(z). Рассмотрим применение такого подхода к случаю трехточечной свертки. Пример. Для применения интерполяцион- интерполяционной формулы Лагранжа необходимо вычис- вычислить значения в пяти точках. Выберем сле- следующие точки. z, = 0, z2 = 1, z3 = — 1, z4 = 2, z, = -2. Тогда Y@)=X@) • #@) = х[0] • A[0]; +4A[2]); У(-2)=(х[0]-2х[1Ц-4х[2]) X Х(А[0]-2А[1]+4А[2]). Интерполяционные полиномы Z,z-(z) яв- являются функциями z(-, а не коэффициентов х [п] иИ [п], т. е + l)(z - 2)(z + 2) _ @ - - 2)@ + 2) - (z-0)(z+l)(z-2)(z-h2) 2) ?,(z) = -~g-(z4 - z3 - 4z2 + 4z); L4(z) = -L(z* + 2z3 - z2 - 2z); I5(z) = ±{z* - 2z3 - z2 + 2z). Группируя члены в G 2) по степеням z, мы получаем Я0] - 7@); у[\] = 2^ Я2]=—| 27B)- - 27(-2)};Я4] - -| хотя может показаться, что полученный ал- алгоритм содержит больше пяти умножений, но все остальные умножения, за исключе- исключением пяти, суть умножения на фиксирован- фиксированные константы. Алгоритм организован та- таким образом, что большинство этих кон- констант является степенями двойки Умно- Умножение на множитель 1/24 может предста- представить трудности, но от него можно избавиться двумя способами. Если h [n] — импульсная характеристика фильтра, который исполь- используется для фильтрации длинных последо- последовательностей х[п], то H(zt) можно вычис- вычислить заранее и масштабный коэффициент 1/24 может быть учтен в этих вычислениях. Можно поступить и иначе — опустить мно- множитель ценой 24-кратного усиления в свертке Необходимо выполнить одно умножение на константу 5, но оно сводится к однсму сдвигу и одному сложению, так как 5 = = *22 + 1. Алгоритм с пятью умножениями приведен в виде графа, изображенного на рис 7.1. Рассмотренный метод синтеза алгорит- алгоритмов является общим и носит название ал- алгоритма Тоома-Кука [57]. Такой же метод вывода будет применен и в более общих ситуациях, таких как циклическая свертка До сих пор мы не ответили на вопрос, об- обладает ли алгоритм Тоома-Кука минималь- минимальным числом умножений. Прежде чем отве- ответить на этот вопрос, мы введем понятие по- полиномиальных вычетов. Полиномиальные вычеты. Наше рассмот- рассмотрение вычетов полиномов будет очень близ- близко следовать приведенному выше обсужде- обсуждению классов вычетов це^лых рациональных чисел. Наша цель - получить результаты, которые необходимы для понимания недав- недавней работы Винограда по синтезу алгорит- алгоритмов с минимальной сложностью Начнем с определения полинома степения п над полем Определение Полиномом pfz) степени п над полем F называется выражение p(z) = G 3) 46
8B) 7B) у[4) Рис. 7.1. Алгоритм трехточечной линейной свертки, использующий пять умножений. Синтез основан на процедуре Тоома — Кука в котором коэффициенты д,- принадлежат некоторому полю F и ап Ф 0. Если ап = 1, полином называется унитарным. Степень p(z) обозначается deg ]р (г) ]. Важно подчеркнуть, что выбор поля определения коэффициентов может влиять на некоторые свойства полиномов. Самый очевидный пример доставляет (г2 + ^.ко- ^.который разлагается в произведение двух линейных полиномов, если полем коэф- коэффициентов служит поле комплексных чи- чисел, но не разлагается над полем действи- действительных или рациональных чисел. Когда мы будем говорить о нескольких полиномах, то будет подразумеваться, что все они опре- определены над одним и тем же полем, если про- противное специально не оговаривается. Прави- Правила сложения и умножения полиномов счи- считаются известными читателю, и мы в пер- первую очередь рассмотрим здесь понятие делимости. Определение. Полином d(z) делит неко- некоторый полином р(г), если существует по- полином q(z) такой, что справедливо равен- равенство p(z) = q(z)d(z). Иначе d(z) называ- называется делителем p(z), и мы пишем d(z)\p(z). Полином р(г), все делители которого име- имеют степень либо нуль, либо deg [p(z)]; на- называется неприводимым (над полем F). Заметим, что неприводимость зависит от поля коэффициентов, что следует из приве- приведенного выше примера z2 + 1. Неприводи- Неприводимые полиномы играют важную роль в ка- каноническом разложении для полиномов. Любой полином может быть записан един- единственным образом в виде ; G.4) где К — константа; р,- (z) — неприводимые унитарные полиномы и г, deg [/>,(z)] = deg [p{z)l Основная теорема алгебры, которая утверж- утверждает, что полином степени и не может иметь более и корней, равносильна утверждению, что его однозначное разложение может со- содержать не более и множителей первой степени. Для двух полиномов p(z) и d(z) всегда можно записать следующее равенство: p(z) = q(z)d(z) + r(z), G.5) где r(z) — полином степени deg[r(z)] < < deg[d(z)]. По аналогии с делением це- целых чисел r(z) называется полиномиаль- полиномиальным остатком. Представление G.5) един- единственно. Действительно, предположим, что p(z) можно записать в виде p(z) = 4(z)d(z) + ?(z). G.6) Отсюда следует, что r(z) - ?{z) = [№ ~ qW(z). G.7) Степень левой части G.7) меньше, чем deg [d(z) ], а степень правой части G.7) дол- 47
жна быть по меньшей мере равна deg [d (z ) ], если #(z) — q(z) не равна тождественно нулю. Поэтому r(z) = f(z) и q(z) = ?(z). Отметим, что упорядочение полиномов по их степени достаточно, чтобы обеспечить единственность деления. Если остаток r(z) равен нулю, то d(z) делит р(г). Операция получения r(z) по заданным р (z ) и d (г ) называется приведе- приведением полинома по модулю и записьшается двумя способами: или r(z) = ) Два полинома Pi (г) и РгB) называются сравнимыми по модулю d(z), если они да- дают один и тот же остаток по модулю d (z), т. е. </?i(z)><J(l, = </72(г)>AЫ)- Таким же образом pi (г) и р2 (г) сравнимы по моду- модулю d(z), если их разность делится на d(z). Сравнимость записывается как Pi(z) = p2(z) mbd d{z). ЗАДАЧА. Найти < г" +г3+г3 + 2* + 1 >4,_4,+3. Хотя приведение по модулю, как кажется, требует длинного деления полиномов, неко- некоторые приемы могут упростить эту опера- операцию. Например, приведение [p(z)]mod(z - -а) дает константу р (а),таккак[У]пи^(г- — а) = а1 выполняется для всех i. В об- общем случае приведение p(z) по модулю унитарного полинома может быть упрощено, если заметить, что г" = — "|j rf,z' mod d{z). и, следовательно, z" можно заменить поли- полиномом ЗАДАЧА. Решить предыдущую задачу, исполь- используя замены. Если d(z) не является унитарным поли- полиномом, т. e.ecnndn:7tl,Tod(z)- (ljdn)d(z) является унитарным и очевидно, что [/>(z)] mod d(z) = [p(z)] mod d[z). Это следует из перегруппировки G.5): p(z) = (dB«?(z))d(z) + r(z). Другими сло- словами, приведение и сравнимость по модулю d(z) не зависят от умножения d(z) на ска- скаляр. Поэтому, без потери общности ниже мы всегда будем считать d(z) унитарным полиномом. Теперь мы можем выразить идею алго- алгоритма Тоома — Кука в следующей более об- общей форме: A) Вычислить Y,(z) = Y(z) mod Pfa) I = 0AI +М-2, G.8) используя формулу Y,(z) = {X(z) mod P,(z)}x x [H(z) mod P,(z)} mod P,(z). B) Восстановить единственный Y(z), удовлетворяющий сравнениям G.8) и усло- условию deg [Y(z)] <L +M~2 В алгоритме Тоома—Кука Р{ (z) =z —z; и интерполяционная формула Лагранжа дает один способ восстановления Y(z). В общем случае нам необходимо доказать китайскую теорему об остатках для полиномов, кото- которая устанавливает, при каких условиях нгР{(г) G.8) обеспечивает единственность решения. Китайская теорема об остатках для по- полиномов. Существует единственный поли- полином Y(z), удовлетворяющий соотноше- соотношениям: A) Y(z) = Y(z) modВД, i = l(l)v; B) 0 < deg [Y(z)]< ± deg [P,(z)], если унитарные полиномы P;(z) не имеют общих множителей (попарно). Доказательство. Используемый нами метод доказательства конструктивен, т. е. он дает явную процедуру для вычисле- вычисления Y(z) Сначала решается более простая задача, которая состоит в нахождении v вспомогательных полиномов Rj(z), каж- каждый из которых удовлетворяет сравнению H,(z) = iu mod Pj(z), j = 1A) v. G.9) Решение Y(z) тогда записывается в виде Y(z) = ? Л(г)У,(г) modP(z), G 10) 48
где Решение G.9) должно иметь вид G.11) где 5г- (z) определяется из одного сравнения: вд = 1 mod ад. G.12) Остальные (v — 1) сравнений в G.9) авто- автоматически удовлетворяются видом R;(z), записанным в G.11). Для удобства записи обозначим Уравнение G.12) может быть записано как эквивалентная задача нахождения двух по- полиномов ?,- (г) и Tf(z), удовлетворяющих соотношению Siz)Q,{z) + T(z)Plz) = 1. G.13) Эта задача является полиномиальным экви- эквивалентом диофантова уравнения, решаемо- решаемого с пвмощью алгоритма Евклида. Поли- Полиномиальный аналог алгоритма Евклида су- существует, и фактически мы можем полу- получить решения для G.13) при условии, что унитарные полиномы ??,- (г) и Р^ (г) не име- имеют общих множителей. Вывод проводится аналогично вычислениям для целых чисел, приведенным в § 3. Мы начнем с разложе- разложения P(z)jQ(z) в непрерывную дробь. От- Отметим, что индекс i опускается в прово- проводимых ниже вычислениях, будем также считать, что deg [P(z)] > deg [Q(z)]; Ш, + 1 ад + deg [Q(z)Y, = C,(z) = ад + о. G.15) Полиномы r0 (z), rx (z),..., rjz) являют- являются результатом следующей последователь- последовательности приведений по модулю и образуют последовательность полиномов, степень ко- которых строго убывает. ЗАДАЧА. Выразить непрерывной дроби. г„(г) = 0. G.16) Z3 + Z2 + Z - 1 Z1 - z ~ в виде Если мы рассмотрим аппроксимацию P(z)/Q(z), полученную обрыванием непре- непрерывной дроби после конечного числа чле- членов, то мы получим полиномиальные под- подходящие дроби: - ад; ~— ~ СоB) + ад' C(z\ Cl(z) G17) где C,-(z) определяются последовательно из Числители y/,(z) и знаменатели 6,(z) мо- мосле дующих операций длинного деления. гут вычисляться рекуррентно: 49
^- ,(z) + ?,-г{2); G.18a) eiz)=C,{z)el.l{z) + 9,.г{?L > 2 G.186) Справедливо также равенство *,(*)*-,(*) - V,(zH,-,(z) = (-1)', 1=1A)/*. G.19) Используя частный случай, когда i = ц, мы заключаем, что ^(z) и 0Дг) не имеют общих множителей (степени больше нуле- нулевой) . Так как то же самое справедливо для P(z) и Q(г), мы получаем из G.17) G.21) Константа К, очевидно, есть старший коэф- коэффициент y/Jtz) и в„B) > так как P(z) и Q(z) — унитарные полиномы. Подставляя G.21) в G.20) и проведя перегруппировку выражений, получаем -P(z)[(-iyK9I.1(z)}= 1G.22) и, следовательно, решение для G.13) име- имеет вид 5B) = (- Напомним, что индексы, присутствующие в G.13), здесь опущены для краткости. Та- Таким образом, наше доказательство китай- китайской теоремы об остатках завершено. Пример (применительно к трехточечной циклической свертке). Решим сравнения lmodB— 1); mod (гг + z + 1). Из сказанного выше следует, что надо ре- решить уравнение S(z)(z - 1) - B* + 2 + 1)T(Z) = 1 относительно S(z) и T(z). Запишем разло- разложение в непрерывную дробь Z2+2+l = B , 2) , 1 _ z — 1 v ' \{z — 1) Отсюда ц = 1 и CQ (z) = г + 2 и С, (z) = SO = -j (z — 1). Полиномиальные подходящие дроби имеют вид 2+1) Из G.20) мы получаем и,следовательно,S(z)=-^(z + 2) nT(z) =-}. Окончательно мы получаем решение для R(z) из G.11): /?(z)=—^ =^ ?=—^-(z2Lf Zr- 2). Теперь вернемся к общей задаче вычис- вычисления У(г) = {Я(г) Дг)} mod P(z) G.24) с минимальным числом умножений. Два спе- специальных случая G.24) были рассмотрены достаточно подробно, а именно: линейная свертка и циклическая свертка. Линейная свертка получается, когда степень P(z) вы- выбирается больше deg[X(z)] + deg[#(z)]. В этом случае приведение по модулю не влияет на Y(z) = X(z)H(z). Одним из воз- возможных выборовP(z) является где z;- — произвольные, но фиксированные константы из некоторого поля (обычно из поля коэффициентов) и N = deg [ВД] + deg [#(z)]. Получаемый алгоритм идентичен методу ин- интерполяционной формулы Лагранжа, опи- описанному в G.2). С другой стороны, N-точечная цикли- циклическая свертка получается, когда P(z) вы- выбирается равным zN — 1. Приведение по modz-^- 1 полинома Y(z) фактически при- приводит к периодизации всех последователь- последовательностей с периодом N. Таким образом, если перемножаются два полинома X(z) и #(z) степени N — 1, получающийся в результате умножения полином Y(z) имеет степень 2N— 2. Приведение по модулю zN — 1 при-
водит к сложению коэффициентов при z' и z'+N, что и дает окончательный резуль- результат. Например, постоянный коэффициент Y(z) mod(z" - 1) будет x[0]h[0]+(x[N - -1]А[1] + x[N - 2}h[2] + • • • + x[l]h[N- — 1]), что представляет собой результат циклической свертки. Задача, поставленная в G.24), может быть несколько упрощена, если полином P(z) можно разложить на множители: Упрощение состоит в том, что можно сна- сначала вычислить Yi{z) — (,X(z)H(z)yFt{j), a затем использовать китайскую теорему об остатках для восстановления Y(z) no Y; (z), если Pj (z) попарно не имеют общих множи- множителей. Так как разложение полинома зави- зависит от поля, из которого берутся коэффи- коэффициенты полиномиальных множителей, то из этого следует, что "минимальные" алгорит- алгоритмы будут зависеть от поля, над которым P(z) разлагается на множители. Например, P(z) = zs — 1 над полем комплексных чи- чисел разлагается на множители как П (z — — W\) , над полем действительных чисел как (z - l)(z2 + 2 cos у z + l)(z2 + и над полем рациональных чисел как (Z - 1)(Z4 + Z3 + Z1 + Z + 1)- Таким образом, над полем комплексных чисел задача G.24) будет расщепляться на пять задач первого порядка; над полем действительных чисел мы будем иметь три задачи меньшей размерности, а над полем рациональных чисел получаем две задачи. Пока мы не будем останавливаться на выбо- выборе поля констант, а вернемся к этому воп- вопросу после выяснения того, как от поля констант зависит структура минимальных алгоритмов. Итак, пусть Тогда G.24) разбивается на к подзадач X(z)H(z) mod P,(z), i = 1A)*;, G.25) где Pj (z) — унитарный неприводимый поли- полином. Вычисление G.25) может быть осуще- осуществлено в три этапа: 1) приведение X(z) и #(z) по модулю Pj(z), 2) вычисление Xi{z)Hi{z) и 3) приведение произведения по модулю Pt (z). Произведение Х{ (z)H{ (z) можно вычислить с помощью алгоритма Тоома — Кука, описанного выше.Так как степени полиномов X; (z) и Н{ (z) в общем случае равны deg[Pt (z)] - 1, то алгоритм Тоома — Кука потребует 2deg [P; (z) } -1 ум- умножений, в которых оба сомножителя за- зависят от коэффициентов полиномов Xt{z) и Я,- (z). Все остальные умножения в алго- алгоритме Тоома - Кука есть умножения на фик- фиксированные константы. Эти константы зави- зависят от выбора точек z;- в интерполяционной формуле Лагранжа G.2). Если z;- - раци- рациональные числа, то все постоянные множи- множители будут рациональными. При проведе- проведении вычислений эти постоянные множители должны учитываться как операции умноже- умножения, но при теоретическом выводе мини- минимальных алгоритмов их не удается учиты- учитывать систематически и поэтому они вообще не будут считаться. Операция приведения по модулю P{(z) требует сложений, вычитаний и умножений на фиксированные константы, которые при- принадлежат к полю, содержащему коэффици- коэффициенты Р{ (z). Как и выше, эти умножения не учитываются в рассматриваемой теории. Та- Таким образом каждая, подзадача G.25) может быть вычислена с помощью 2deg [Pj (z) ] — 1 умножений. Для завершения вычисления Y(z) в G.24) следует только заметить, что G.25) дает Yt(z) = Y(z)modP;(z) и, сле- следовательно, Y(z) может быть восстановлен с помощью китайской теоремы об остатках в виде Y(z) = [t &(z)r((z)] mod^z). G.26) Из метода вычисления St (z), приведенного выше, очевидно, что коэффициенты Каждо- Каждого полинома Sj (z) принадлежат тому же полю, что и коэффициенты Pt (z). Таким Об- Образом, вычисление G.26) требует только 51
сложений, вычитаний и умножений из поля констант, содержащего коэффициенты Pj (z). Объединяя всю приведенную информа- информацию, получаем, что существует алгоритм вычисления X(z)H'(z) modP(z), в котором число умножений равно ?{2 deg [P((z)]-1}=2 deg [P{z)]-k. G.27) Число умножений в G.27) не включает ум- умножения на константы. Фактически мы до- доказали половину следующей .важной теоре- теоремы, полученной Виноградом. Теорема Винограда. Минимальное число умножений, необходимое для вычисления выражения X(z)H(z) modP(z), равно 2N- к, где N= deg [P(k) ], а к - число неприводи- неприводимых множителей Ft (z) полинома P(z) над полем F. Умножения на фиксированные элементы F не учитываются в этой теореме. Мы показали, как синтезировать "мини- "минимальный" алгоритм с 2N— к умножениями- Доказательство того факта, что минималь- минимальное необходимое число умножений равно 2N - к и что в минимальном алгоритме дол- должна использоваться китайская теорема об остатках значительно более сложно. Дока- Доказательства можно найти в статье Виногра- Винограда [13]. Еще один момент теоремы Виногрдда о сложности вычисления свертки состоит в том, что структура минимальных алгорит- алгоритмов может быть представлена в канониче- каноническом виде. Если мы запишем коэффициен- коэффициенты полиномов X(z), H{z) и Y(z) в виде ЛАмерных векторов X = [х„ д-, . . . XN-i]T, Ъ=[И0 Л, . . . hN-J и у = [у0 у1гшш yN_Jf то алгоритм вычисления свертки может быть записан в матричном виде как у = С(ВЪ (х) Ах), G.28) где А, В, С — прямоугольные матрицы, эле- элементы которых принадлежат полю F. Мат- Матрицы А и В имеют размерность (IN - к) х х N, а матрица С - N х BN- к). Все умно- жения в этой структуре содержатся в пото- поточечном умножении Ах (х) Bh. Матричные преобразования также требуют умножений, но это — умножения на фиксированные эле- элементы поля F. Преобразования А и В осу- осуществляют приведение X{z) и Н(z) по мо- модулю Pj(z) и предварительные этапы алго- алгоритма Тоома - Кука. Преобразование С осу- осуществляет восстановительную фазу алгорит- алгоритма Тоома - Кука, а также этапы восстановле- восстановления окончательного результата с помощью китайской теоремы об остатках. На рис. 7.2 изображена структурная схема канониче- канонической структуры, в которой особо под- подчеркивается прямоугольный характер мат- матричных преобразований А, В и С. Заметим, Рие. 7-2. Общая форма алгоритма свертки
что*вычисление циклической свертки с по- помощью ДПФ есть частный случай структуры, говорит нам, что это так, но мы покажем механику этого подхода. Мы должны полу- полуизображенной на рис. 7.2. В этом случае пре- чить восстанавливающие полиномы Sf(z). образования А и В есть ДПФ, а С — ОДПФ. Ниже мы покажем, что если в качестве поля F выбрано поле комплексных чисел, то результатом предыдущего вывода бу- будет ДПФ. Для того чтобы исследовать более под- подробно следствия иэ теоремы Винограда о сложности вычисления свертки, рассмотрим ее применение для циклической свертки (т. е. специальный случай P(z) = z" — 1). В качестве поля констант F выберем снача- сначала поле комплексных чисел. В этом случае () Д( Так как S{(z) удовлетворяют уравнению ЭД= Ь„ mod Pj(z 5<(z) должны иметь вид Константы С,- можно вычислить^ исполь- используя Sf(z) = 1 mod P,(z), что дает r L_ _ 1 = me,. P,(.z) = z-WlN, = W4f-l) If A - W'N) где WN = е.-нг*'м. Следовательно, к =Nи ' должен существовать минимальный алго- алгоритм с W — N = N умножениями. Сначала Следовательно, 5,- (z) могут быть записаны вычисляем X(z) mod P^z) = X(WN) и -в виде Si = Затем Y,(z)=X(z)H(z) mod Pt(z) Вычисление Y{ (z) требует одного умноже- умножения, так как и X(W*N) , и H(W'N) - кон- константы. Записывая X(W'N)Ka.K видим, что матрица А не что иное, как мат- матрица ДПФ NxN; то же самое относится и к H(WN). Очень важно отметить, что так как числа W'N являются комплексными константами, то ни одно из умножений в ДПФ не учитывается! Теперь нам необходимо показать, что восстановительная фаза в китайской теоре- теореме об остатках приводит к ОДПФ. Наше знание свойства циклической свертки ДПФ Поскольку S0(z) = 1 mod (z - 1), мы получаем Со =1/ЛГи C, = W'N/N. Используя G.10), мы можем записать Y(z) как Изменяя порядок суммирования, мы полу- получаем и коэффициенты Y(z), очевидно, равны
что и дает ОДПФ. Умножения на W~s в ОДПФ в теории Винограда не учитываются, так как они являются фиксированными константами в поле комплексных чисел. Приведенный пример показывает, что выбор поля констант может быть крити- критическим в приложениях методов Винограда и при выводе "минимальных" алгоритмов. Так как мы не учитываем умножений на фиксированные константы из поля F, нам хотелось бы> чтобы все такие умножения были настолько простыми, чтобы их дей- действительно не надо было учитывать. Пер- Первым шагом в этом направлении является выбор поля рациональных чисел в качестве поля констант. С одной стороны, умножать на такие рациональные числа, как 0, 1,-1, 2, 1/2 легко, но, с другой стороны, умноже- умножение на 9/47 или 181/257 нельзя считать простой операцией. Не существует никако- никакого способа наверняка обеспечить несложные константы, но практически использование поля рациональных чисел а качестве поля констант приводит к ряду алгоритмов (для небольших значений N), которые содержат только очень простые множители. Поэтому мы сейчас рассмотрим образо- образование алгоритмов циклической свертки с минимальной сложностью над полем раци- рациональных чисел. В первую очередь надо ра- разобрать, как полином z^ — 1 разлагается в произведение полиномов с рациональными коэффициентами. В общем случае в такое разложение входят круговые полиномы. Круговой полином Ck(z) - это полином, корни которого Zj образуют определенное подмножество корней zN — 1, т. е. являют- являются подмьожеством множества {W'N} . Под- Подмножество выбирается таким образом, что z,- не является корнем zd — 1 при 0 < d < к. Формально мы можем записать <*-™>- G-29) Рассмотрим, например, C6(z). Множество корней z6 - 1 имеет вид {е"-*»; / =0,1, 2, 3, 4, 5). Из этого множества выбрасы- выбрасываются е~уо, так как это корень z — 1, е-л2*2/в>и e-yB«4/6)j так как они являются корнями (z3 - 1), и е~у<2я3/6), так как это корень z2 — 1. Следовательно, 54 C6(z)= (z - e-Jl2'/6))(z - е--/6>) = = z2-z+ 1. ЗАДАЧА. Вычислить С, (z) по определению. ЗАДАЧА. Показать, что степень Q.(z) равна ?>(*)• ЗАДАЧА. Показать, что для простого р С„ (г) = = Z'~X + Zp~2 + ... + Z+1. Выпишем несколько первых круговых по- полиномов : C3(z) = z* + z + 1; C<(z) = z2 + 1; C»(z) = z4 + z3 + z2 + z + 1; Cs(z) = z2-z+ 1; C7(z) = z6 + zs + z* + z3 + z2 + z + h C,(z) = z* + 1; C,(z) = z6 + z3 + 1; Из определения Ck(z) очевидно, что Ck(z) делит z* — 1. Также очевидно, что Ck (z) делит z кг - 1. На самом деле z»- 1=JIG(z), G.30) т е. произведение выражений (z — W'N) со- собирается в такие подгруппы, что все W'N в каждой подгруппе имеют порядок d и учте- учтены все возможные порядки d Из приведенного выше определения не очевидно, что Ck(z) имеет рациональные коэффициенты или что Ck(z) не может быть разложено на еще меньшие множите- множители с рациональными коэффициентами. У чи- читателя может также сложиться впечатление, что коэффициенты Ck(z) принадлежат мно- множеству {0, 1,-1} , но это предположение неверно. Не доказывая, что разложение на множители G.30) полное, мы будем ис- использовать свойство, выполняющееся для всех Ck(z), встречающихся в практике (к < < 105); их коэффициенты действительно принадлежат множеству {0, 1,-1} .
Теорема. Коэффициенты Ск (z) - целые числа. Теорема. Для к < 105 коэффициенты Ск(г) равны 0,1 или —1. Теорема. Полином Ck(z) неприводим над полем рациональных чисел. Доказа- Доказательство первых двух теорем приведено в приложении 7а. Обратимся теперь к выводу алгоритма циклической свертки с минимальной слож- сложностью над полем рациональных чисел. Иэ теоремы Винограда нам известно, что мож- можно синтезировать алгоритм с 2N — к умно- умножениями, где к равно числу неприводи- неприводимых множителей (zN - 1) над полем раци- рациональных чисел. Это записывается в виде разложения на круговые полиномы: z" - 1 = = JJ ОД. Таким образом, к равняется числу целых чисел, которые делят N, включая 1 и N. На- Например, 6-точечная свертка требует 2F) - — 4 = 8 умножений, так как 1, 2, 3, и 6 де- делят 6, отсюда z6 - 1 = C,(z)C2(z)C3(z)C6(z); z* - 1 = (z - l)(z + l)(z2 + z + Интересно отметить, что 5-точечная свертка также требует восемь умножений. ЗАДАЧА. Сколько умножений необходимо, в соответствии с теоремой Винограда, для выпол- выполнения 4-точечиой циклической свертки? Дли 81-то- 81-точечной циклической свертки? ЗАДАЧА. Можете ли Вы привести пример, в котором iV, < N2, но Nt -точечная циклическая свертка требует больше умножений, чем jV;-то- jV;-точечная циклическая свертка9 Первый шаг процедуры синтеза Виногра- Винограда требует вычисления X{z) mod Pt(z) и H(z) mod P{(z), что в нашем случае сво- сводится к приведению по модулю круговых полиномов. Их коэффициенты простые, по- поэтому такое приведение выполняется толь- только с помощью сложений и вычитаний! (Для круговых полиномов высокой степени (> 105) могут потребоваться умножения на целые коэффициенты. Теоретически для выполнения этих умножений можно исполь- использовать последовательное сложение, но на практике мы будем ограничиваться только круговыми полиномами небольшой сте- степени.) Для того чтобы облегчить понимание про- процедуры синтеза, мы будем рассматривать пример 3-точечной циклической свертки. Разложение z3 - 1 на множители имеет вид Ci(z)C3(z). По теореме Винограда требуется четыре умножения. Первый этап синтеза дает jr,(z) =ВД mod C,(z); = Jif (z) mod (z - l) = xI0; = 40] + x[l] + 42]; = X(z) mod C3(z); = X(z) mod (z2 + z + 1) = x2o + = D0] + 41k + 42]z2) mod (z2 + + z+l): = (x[0] - 42]) + D1] - 42]>. Это означает, что для реализации алгоритма требуются следующие вычисления: xi о = 40] + 41] + 42]; хао^хДО-хИ; х21 = 41] -42]. Таким же образом (МО] - А[2]) = *« - h[2])z = То есть проводятся вычисления = Л[0] - Л[2]; Так как Х{ (z) и Я, (г) являются констан- константами, то вычисление y,(z) = Y(z) mod Ct(z) = 55
требует только одного умножения — л: j 0 A i о • Вычисление Yt(z) =X(z)H(z) mod C2(z) легко осуществить за четыре умножения, но нужны дополнительные соображения, чтобы обойтись тремя умножениями. Один из подходов к этой задаче -лобовой (он эф- эффективен для малоточечных примеров) — сначала напишем Y2(z) = (х20 + x2lz){h20 + hitz) mod (z2 + + z + 1); = {xzohjo — x2ih2l) + {x2lh20 + x20h2i — — x2lh2i)z. Легко видеть, что коэффициенты Y2 (z) мо- могут быть получены с помощью следующих трех умножений: Mi = х21 • h21; Цг = Х20 • 0> Из = (х2о — Хц) • (/?2о — hi\). Тогда Y2(z) = (jjl2 - Mi) + (ц2 - /jl3)z = = У20 + Ун2- Стоит отметить системати- систематический подход к вычислению выражений, подобных Y2(z). Этот метод основывается на том факте, что Y2 (z) можно вычислить в два приема. Сначала вычисляется произ- произведение X2(z)H2 (z), соответствующее ли- линейной свертке, с помощью алгоритма То- ома — Кука, описанного выше. Затем выпол- выполняется приведение по модулю С2 (z). В об- общем случае алгоритм Тоома - Кука требует deg [X2 (z)} + deg [H2 (z)} + 1 умножений, а приведение по модулю С2 (z) обычно мо- может быть выполнено без умножений. Таким образом, в данном примере алгоритм То- Тоома - Кука требует трех умножений для вы- вычисления Y2(z), что в точности равно чис- числу умножений, которое мы стремимся ре- реализовать. Получаемая процедура, однако, хотя и требует того же самого числа умно- умножений, что и метод ad hoc, но не обязатель- обязательно приводит к тому же алгоритму, кото- который получается в результате непосредствен- непосредственного просмотра. Получаемые множества вычислений в большинстве случаев раз- различны. К сожалению, лобовой подход обыч- обычно дает лучший алгоритм, так как в нем меньше сложений, а также могут вообще отсутствовать неучитываемые умножения на сложные рациональные константы. Та- Таким образом, хотя алгоритм Тоома — Кука дает систематическое решение задачи вычис- вычисления выражений, подобных Y2 (z), возмож- возможно получение лучших алгоритмов (в смысле практической реализации) с использовани- использованием других методов. Теперь мы вернемся к задаче синтеза алгоритма 3-точечной циклической свертки. До этого мы вычислили Y(z) mod Ci (z) и Y(z) mod C2(z). Окончательный ответ Y(z) может быть восстановлен с помощью китайской теоремы об остатках для полино- полиномов. Нам нужно найти Sj (z) и S2 (z), удов- удовлетворяющие сравнениям S,(z) = StJ mod C,{z), i, j = 1, 2. Используя вычисления, приведенные в пре- предыдущем примере, запишем Если положить Yt (z) =у10 и Y2 (z) =y20 + Y(z) = [i(z2 + z + 1)^,0 - -К*2 + ^ - - 2X^0 + ;y21z)] mod (z3- 1); = "HOlo + 2^2o — y2i) + Ою — Уга + + 2y2l)z + (y10 - y20 - Угд*2]- Объединяя все соотношения, получаем сле- следующий алгоритм для вычисления 3-точеч- 3-точечной циклической свертки: Хго = х[0] — х[2]; х21 = х[1] - х[2]; /ho = МО] - h[2])> л» = мп-ад- Ую = *ю * 0
к[0!О xl2) у 10! h-ю - hjn - hai Рис 7.3. Граф трехточечной сверткихкуществляемой с помощью четырех умножений М\ '— Хгг " кг\> Мг — Хю ' Лго'< Мз = (Хго — X2i) • (hi0 — A21); Уго = Мг — Mi> Уг1= Pi — Mi' У[0] =Ую + 2у20 —уг\\ Я1] = У 1й — Уго + 2уи; УШ =У\а ~ Уго — Ун- Трехточечную циклическую свертку можно описать еще двумя способами в матрич- матричной форме G.28) и в виде графа (рис. 7.3). Матрицы ^4, б и С при этом имеют вид Ответ. 1 1 0 1 1 0 1 -1 А = B = \A;  1 1 1 1 -2 Г -1 -1 0. -2 1 1 1 0 0 1 о о 0 1 Факторизация матриц срответствует графу, изображенному на рис. 7.3. ЗАДАЧА. Синтезируйте алгоритм 4-точечиой циклической свертки, использующий пять умно- умножений. 1 -1 1 о 1 1 -1 о -2 2 1 1 -1 -1 0 1" -1 -1 о -1 1 Г 1 -1 -2 0 -2 2 -2 -2 1 1 1 О 0 1 1 j -1 1 0 0 0 1 1 -11 2 -1 1 1 0 2 -1 0 01 0 1 10 О О 0 1-1 О 0 1 0-1 с = 1 1 1 L1 О -1" -1 О 0 1 1 0. 57
Как мы видели, мы можем получить алгоритм для у = х * h в виде у=С(Ах($)ВЪ), G 31) где матрицы А и В имеют элементы, равные только ± 1, 0, а элементы матрицы С — ка- какие-то рациональные числа. Во всех рассмот- рассмотренных случаях, несмотря на то, что мы не имели возможности полностью управлять элементами С, они оказывались достаточ- достаточно простыми числами. Мы не без оснований обеспокоены тем, что так может быть не всегда. С другой стороны, во многих случа- случаях мы формируем ВН заранее и, следова- следовательно, не получаем большого выигрыша от того, что можеМ управлять элементами В. Было бы желательно синтезировать алго- алгоритм в виде G.31), в котором мы могли бы управлять элементами А к С, помещая все возникающие рациональные числа в В. Такой алгоритм может быть построен с по- помощью принципа "дуальности". Виноград [4] объясняет этот принцип следующим образом, предположим, что последователь- последовательность {у^: fc = 0(l)f— 1} определяется че- через {Xj . i =0A)/-- 1} и {hj j =0(l)s - — 1} системой сумм 1 = 0 1=0 j, к = 0, 1, ...,t— 1. G.32) Виноград определяет "дуальную" или транс- транспонированную систему как множество сумм h = ? S **»*ikj,k = 0, 1,.... г - 1 1 = 0 1 = 0 G.33) •Система G.32) также является транспони- транспонированной по отношению к системе G 33). Если существует алгоритм у = С(Ах (х) ВО) G 34) для вычисления сумм G 32), то существу- существует дуальный алгоритм для G.33), а именно у = А'(С'х®ВЪ). G 35) Красивое доказательство этого результата приведено у Винограда. Теперь предположим, что синтез алго- алгоритма G 33), скажем для циклической свертки, является нашей целью. Построим алгоритм G.34) для транспонированной си- сияя стемы, которая окажется циклической кор- корреляцией, используя методы,описанные вы- выше, гарантирующие, что элементами А и В являются ± 1, 0. Тогда G.35) представля- представляет собой алгоритм циклической свертки, в котором выходная Матрица А' имеет же- желаемые простые элементы. Хотя матрица Сг, содержащая неуправля- неуправляемые рациональные элементы, по-прежнему необходима для оперирования с х, нам из- известно, что для циклической свертки мы можем поменять ролями X и п, что приво- приводит к алгоритму у = Л'(Ях(х)С"Б), G.36) в котором операции умножения на слож- сложные числа входят только в(?и могут быть осуществлены заранее Чтобы G 33) соответствовала цикличес- циклической свертке, должны выполняться следу- следующие соотношения г = s = t = и, G 37) а*л = <*[</ + j - к}»] G 38) Таким образом, необходимые в G 32) л,л, = S[<k +j- />аг] G.39) и соотношение G 32) должно иметь вид Ak] = Ntoh[j]x[<j + k\]. G.40) Как мы видим, это циклическая корреля- корреляция Теперь нам надо получить алгоритм для циклической корреляции со свойства- свойствами G.34) Но jto легко сделать, так как корреляция получается из свертки обраще- обращением индекса времени для входной и вы- выходной последовательностей Или, что то же самое, исходя из уже выведенного алгорит- алгоритма свертки у = Со(Аох<$)ВоЪ) мы получаем алгоритм циклической корре- корреляции за счет перестановки столбцов матри- матрицы А о и строк матрицы Со Перестановка оставляет первый столбец (или строку) на месте и меняет порядок остальных столб- столбцов (или строк) на обратный Обозначим эту операцию символически с помощью верхних индексов R и г А = А*о, С=С"о.
YlO) x[2) п\,-^ th[O) +h[1] +M21I m, -± th[O)+h[1) -2hl2)l m,~\ t-2hlO] +hli) +hI2J| m3 = ± thlO)-2MH+hBH Рис. 7.4. Граф транспонированного алгоритма трех- трехточечной циклической свертки Тогда искомая корреляция G.34) принима- принимает вид у = С5(ЛоХ (х) Boh), а алгоритм циклической свертки, исполь- использующий G.36), записывается как В качестве примера рассмотрим 3-точечную свертку: 'Ао~ h = х = Хо X* А, В = (Со)' = 1 1 1 1 -2 1 -2 1 1 L 1 1 -2J 110 1 1-1-1 0 10 1-1 0  1 0 л 1 0 1 -1 г -1 -1 0_ -I iJ — 7 1 1 -2 -2 1 1 1 -2 1 У = >?oh). Применяя G.41), мы получаем другой ал- Граф, соответствующи§ этому алгоритму, горитм 3-точечной свертки: " ' '1 1 А = Во = 1 0 Ll -1 1 0 -1 1 -1 0J приведен на рис. 7.4. 7.А. Свойства круговых полиномов В этом дополнении приведены некоторые свойства круговых полиномов, которые ис- использовались в § 7. Мы докажем, что коэф- 59
фициенты круговых полиномов суть целые рациональные числа и что для /< 105 коэф- коэффициенты Ct(z) принадлежат множеству {О, 1, —l} . Доказательство неприводимо- неприводимости Cj(z) над полем рациональных чисел можно найти в [73, стр. 160 — 64]. Круговой /-Й полином Cj(z) определяет- определяется как (ТАЛ) мы получаем 0<r<l Разложение z& — 1 на множители, выражен- выраженное в виде произведения круговых полино- полиномов C{(z), записывается как z»-l=JJC,(z). GA.2) Мы хотим показать, что коэффициенты Cj(z) — рациональные числа; фактически они целые. В первую очередь мы должны доказать некоторые простые свойства кру- круговых полиномов. Свойство 1. Если р - простое число, то С,(г) = г' + z'~2 + z'-> +...+ Z+1. Доказательство. Из определения GА.1) = п таким образом, Свойство 2. Для любых целых тир 0<г<яц> С. я Свойство 3. Если р — простое число и не делит т, т. е. (р, т) - 1, то Доказательство. - тт ( n,r,3-Sz-w'^ <rM-. CZ W'm) П (z-H^i)' A,яТ-1 В § 3 было показано, что множество целых чисел, взаимно простых с тр, может быть записано в виде (am + bp}mp, где а и Ъ удовлетворяют (а, Ь) = 1 и (Ь, т) = 1. Та- Таким образом, так как р — простое, П (г - W™) = П И (г - ИЧЙ**') "-'"^ ( х Отметим, что произведение по s становится членом, соответствующим а = 0, в следу- следующем произведении по а. ад Доказательство. = J0U 0<г<яц> Используя равенство IV-1 zN~aN = Д (г - Используя свойства 1, 2 и 3, можно непо- непосредственно показать, что коэффициенты Cj(z) всегда рациональные. По свойству 1 Cp(z) имеет целые коэффициенты при р простом. Операции, связанные со свойства- свойствами 2 и 3, включают только сложение, вы- вычитание и умножение целых коэффициен- коэффициентов, следовательно, коэффициенты Cj(z) должны быть целыми. Отметим, что деление не требуется (даже в свойстве 3), так как Cj(z) - всегда унитарный полином. В ка- качестве последнего замечания укажем на то, 60
что круговые полиномы могут быть опре- определены над любым полем, которое облада- обладает первообразными корнями из единицы [73]. ЗАДАЧА. Докажите следующие свойства кру- круговых полиномов: а) Сгп (z) = Сп (-2) для л нечетного и п » 3; (О, еслип = 1, р, если п - слепень простого р, 1, если п имеет два или более простых множителя. Используя простые свойства круговых полиномов, мы можем вычислить некото- некоторые С; (г). C3(z) = z2 + г + 1; CAz) = Сг&) = z2 + 1; CS(Z) = z* + z3 + z2 + г + 1; C7(z)= z6 + zs + z4 + z3+z C.(z) = C2(z*) = z* + 1; _8 _ Z7 , + z5 - z4 + z3 - z + 1; r n- Cli(z')_C3(z")C3(z) _ UlJV.2^J ^—'3\^ J^3\^ / = 1 + z + z2 - zs - z6 - 2z7 - z8 - + z47 + z48. ЗАДАЧА. Вычислить C1A (z), Q , (г) и С81 (z). Заметим, что коэффициенты Q(z) прини- принимают значения 0, ± 1, по крайней мере, для / - 1, 2, ... , 8. На самом деле, наименьшее значение /, для которого С/ (z) имеет коэф- фициенты, отличные от 0, i 1, есть /= 105. Cios (z) имеет два коэффициента, равные -2. Можно показать, что СДг) имеют коэф- коэффициенты, принадлежащие множеству @, 1,-1} для /< 105, доказав более общую теорему. Теорема. Ci(z) имеет коэффициенты, принадлежащие множеству {0, 1, —1} , когда / содержит не больше двух различ- различных простых множителя. Так как 105 = = 3 • 5 • 7 - наименьшее целое, делящееся на три нечетных простых числа, мы полу- получаем желаемое свойство для Q(z), / < < 105. Доказательство теоремы, когда / равно степени нечетного простого, непосредствен- непосредственно следует из Ср>(г) = Cp(z**"'). Степень двух также допустима в /, так как Поэтому достаточно рассмотреть случай / = = pq, где р и q - различные нечетные прос- простые. По свойству 3 получаем Разлагая выражение, обратное C_(z), в бес- бесконечную сумму, получаем Так как степень Cpq(z) равна 4>(pq) = (p -1) (9-1), то V V z'a+'^ 1 = 0 ipZ-Krt-lq-l ¦ GA.3) Показатель степени Iq + ip принимает различные значения при 0</<ty ~ 1 и 0 < /< р - 1 Рассуждения подобны тем, которые использовались при рассмотрении функции Эйлера в § 3 Предположим, что hQ + hP = h4 + hP Г1РИ h ^ k и 'i ^= /2 Тог- 61
да (h - h)q = (j2 ~h)p> откуда следует, что р делит (/j - /2) и q делит (i2 — ii). Ho это возможно, только если /j — /2 = 0 и ij = = i 2, так как Таким образом, первая сумма в GА.З) является полиномом, коэффициенты кото- которого равны 0 или +1, и то же самое относит- относится ко второй сумме. Поэтому разность этих двух полиномов Cpq(z) имеет коэффици- коэффициенты, принадлежащие множеству {0,1, -1]. Г-ЛАВА ВТОРАЯ 8- Введение к перепечатанным статьям Ниже приведена перепечатка статей, пос- посвященных применению теории чисел в циф- цифровой обработке сигналов. Эти статьи со- составляют представительную выборку различ- различных подходов и применений методов поли- полиномиальной алгебры и теории чисел к двум важнейшим алгоритмам цифровой обработ- обработки сигналов, циклической свертке и ДПФ. В первом приближении статьи можно раз- разделить на две большие группы: относящи- относящиеся к алгоритму Винограда преобразования Фурье (АВПФ) и относящиеся к теорети- теоретико-числовым преобразованиям (ТЧП). Ста- Статьи 1 — 5 и статья 13 связаны с разработкой АВПФ. Статьи 6-12 посвящены теории ТЧП, описанию некоторых конкретных преобра- преобразований и аппаратурной реализации их, как, например, теоретико-числевого пре- преобразования Ферма. Порядок следования статей в пределах этих групп не имеет осо- особого значения, но в настоящем введении сделана попытка описать взаимосвязи меж- между статьями, а также логическое развитие АВПФ и ТЧП. Прежде чем обсуждать в деталях каждую статью, следует сделать несколько общих замечаний о сборнике статей в целом. В представленной совокупности алгоритмов проходят три сквозные темы. Первый класс алгоритмов использует теоретико-чис- теоретико-числовое представление адресов массивов дан- данных (индексов); второй класс алгоритмов рассматривает амплитуды сигналов в теоре- тико-числевом (илиалгебраическом) стиле; третий класс алгоритмов воздействует на массивы данных с помощью "прямоуголь- 62 ных" линейных преобразований, которые можно рассматривать как обобщение ДПФ, задаваемого квадратной матрицей. Алгорит- Алгоритмы первого класса характеризуются опера- операциями перестановки и переиндексации мас- массивов данных и могут быть названы пере- перестановочными методами. Первыми приме- примерами подобных алгоритмов являются мето- методы, предложенные Рейдером в статье 2 и Гудом в статье 5. Теоретико-числовые пре- преобразования, описанные в статьях 6, 7, 11 и 12, очевидно, относятся ко второму клас- классу. Точки массивов данных трактуются как элементы конечной вычислительной струк- структуры (например, кольца или поля), а не как элементы поля комплексных чисел, в отличие от ДПФ. Так как эти алгоритмы включают в себя линейные преобразования .^-точечных векторов данных, то они могут быть названы преобразовательными или трансформационными методами. Теорети- Теоретическое обоснование третьего класса алго- алгоритмов — "прямоугольных" преобразова- преобразований — представлено в статье 13 и в первых разделах статей 1, 3 и 4. Эти прямоуголь- прямоугольные преобразования являются обобщением ДПФ в том смысле, что пространство изо- изображений может иметь большую размер- размерность, чем преобразуемая последователь- последовательность, при сохранении свойств цикличности свертки ДПФ. Эти алгоритмы являются по- побочным продуктом теории вычислительной сложности и, как показано, минимизируют число умножений, необходимое для умно- умножения полиномов. До настоящего времени прямоугольные алгоритмы синтезированы только для коротких последовательностей, и для вычисления ДПФ и циклической сверт-
ки длинных последовательностей их следу- следует комбинировать с алгоритмами переста- перестановочного типа. С целью объединения статей и увязки их с предшествующим обсуждением основных принципов каждая статья обсуждается ниже довольно подробно. В первую очередь мы рассматриваем пять статей, посвященных алгоритмам как трансформационного, так и перестановочного типов. Это статьи Колбы и Паркса, Рейдера, Агарвала и Кули, Ви- Винограда и Гуда. Следующий набор статей относится к методам ТЧП. Статьи по ТЧП естественно разделить на три группы. Пер- Первые две статьи Полларда и Агарвала с Бар- расом дают необходимые теоретические сведения; следующие две, написанные Магк- клелланом и Лейбовицем, описывают аппа- аппаратурную реализацию теоретико-числового преобразования Ферма, а следующие две статьи, написанные Ридом и Труонгом и Нуссбаумером, посвящены описанию комп- лекснозначных ТЧП. Включена также статья Агарвала и Барраса о многомерных ото- отображениях применительно к теоретико- чис- числовому преобразованию Ферма. Заключи- Заключительная статья Винограда посвящена слож- сложности вычисления билинейных форм. Прежде чем перейти к подробному ана- анализу, сделаем еще одно заключительное замечание читателю не следует рассматри- рассматривать вступление как критику приведенных ниже 13 статей. Каждая статья внесла свой уникальный вклад в развитие теоретико-чис- теоретико-числовых алгоритмов в обработке сигналов. Влияние каждой отдельно взятой статьи изменяется со временем; если поторопить- поторопиться с составлением мнения о каком-либо определенном методе, то, как часто случа- случается, новые теоретические и технологичес- технологические разработки могут изменить оценку. Наиболее ярким примером может служить статья Рейдера "Дискретное преобразование Фурье, когда число отсчетов простое", на- написанная в 1968 г. Рассматривавшаяся в те- течение многих лет в качестве математическо- математического курьеза, эта статья приобрела новое зна- значение в свете нового алгоритма Винограда для вычисления ДПФ. Таким образом, про- проводимое здесь обсуждение должно помо- помогать инженерам-исследователям находить новые методы реализации эффективных сигнальных процессоров и ученым про- продолжать теоретическую работу, начатую в указанных статьях Статья 1. Алгоритмы БПФ для простых множителей, использующих быструю сверт- свертку. Эта статья Колбы и Паркса содержит теорию двух новых алгоритмов вычисления ДПФ и сравнение этих методов с БПФ но числу операций и времени вычислений для двух ЭВМ - IBM 370 и микропроцессора 8080. Рассматриваются два алгоритма вы- вычисления ДПФ — алгоритм Винограда пре- преобразования Фурье и алгоритм БПФ для простых множителей, предложенный перво- первоначально Гудом и усовершенствованный за счет использования эффективных алгорит- алгоритмов ДПФ для коротких последовательнос- последовательностей, развитых Виноградом. Авторы указывают, что создание этих новых алгоритмов ДПФ основывается на двух основных идеях. Первая заключается в сведении ДПФ к циклической свертке, как это. было предложено Рейдером (ста- (статья 2) • Этот прием поясняется на примере 5- и 9-точечной матриц ДПФ. Вторая идея заключается в минимизации числа умно- умножений, необходимых для вычисления цик- циклической свертки, методом Винограда (ста- (статьи 4 и 13). Синтез минимального алгорит- алгоритма для частного случая 6-точечной свертки рассматривается во всех деталях. Общим итогом применения этих двух идей являет- является возможность создания эффективных ал- алгоритмов для вычисления коротких ДПФ. В табл. 1 приведено количество операций, необходимых для вычисления ДПФ длины 2, 3, 4, 5, 6,7, 8 и 9. Частные алгоритмы для длин 3, 5, 7 и 9 приведены в приложении. Эти алгоритмы несколько отличаются от алгоритмов, приведенных Виноградом в статье 4. Короткие преобразования можно комби- комбинировать несколькими способами для полу- получения длинных преобразований объема N. В статье описываются два метода, основан- основанные на китайской теореме об остатках. 63
Когда N может быть выражено в виде про- произведения взаимно простых множителей, как показал Гуд, одномерное преобразова- преобразование эквивалентно многомерному ДПФ (ста- (статья 5). Авторы называют этот алгоритм алгоритмом для простых множителей. Вто- Второй метод заключается в переупорядоче- переупорядочении операций в алгоритме простых множи- множителей с целью объединения всех умноже- умножений в одном блоке, что уменьшает, общее число умножений по сравнению с алгорит- алгоритмом для простых множителей. Такой ал- алгоритм авторы называют гнездовым Чита- Читателю следует обратиться к рис. 2, 3 и 4, при- приведенным в статье, для наглядного изобра- изображения разницы между этими двумя алго- алгоритмами. В последней части статьи 1 проводится сравнение БПФ алгоритма для простых множителей и гнездового алгоритма. В табл. 2 приведены результаты сравнения по числу сложений и умножений В табл. 4 приведены результаты сравнения времен вычисления по разным программам на IBM 370/155. Алгоритм для простых множи- множителей сравнивается с алгоритмом БПФ для основания 2 и с алгоритмом БПФ для сме- смешанного основания Синглтона [117]. В зак- заключение приводятся оценки времени вычис- вычисления для микропроцессора 8080 Статья 2. Дискретное преобразование Фурье, когда число отсчетов простое. Один из основных результатов исследований ал- алгоритмов, полученный Рейдером, приведен в этой статье. Рейдер показал, что когда длина преобразования есть простое число, то ./V-точечное ДПФ содержит (/V — ^-то- ^-точечную циклическую свертку. Для выде- выделения этой свертки необходимо переставить (/V - 1) отсчетов сигнала jc[1], jc[2], . . . . . ., x[N — 1]. Вторая перестановка приме- применяется к множеству jexp (-y^*), k=l,2,...,N-l]. Обе перестановки осуществляются с помо- помощью первообразного корня, который су- существует вследствие того, что jV— простое Для вычисления ДПФ с помощью цикли- циклической свертки точка х [0] и постоянная составляющая спектра Х[0] должны обра- обрабатываться отдельно. Одним из применений, предложенных в статье 2, является вычисление циклической свертки с помощью методов быстрого вы- вычисления свертки, что приводит к эффек- эффективному алгоритму ДПФ при N простом. Рассмотрен пример winN= 563. В качестве частного применения рассмотрено вычисле- вычисление циклической свертки длины N - 1 с по' мощью БПФ, использующего преобразова- преобразования длины, ЙЬльшей 2N- 3. Статья 3. Новые алгоритмы для цифровой свертки. В этой статье, написанной Агарва- лом и Тьюки, в основном описывается вы- вычисление циклической свертки, а не ДПФ, хотя, как наверное теперь очевидно, эти две операции в своей основе эквивалентны. Показывается, как, используя китайскую теорему об остатках, можно преобразовать, одномерную циклическую свертку в много- мерную, циклическую по всем измерениям» Длина одномерной свертки N, естественно, должна иметь вид произведения взаимно простых сомножителей Затем рассматрива- рассматриваются специальные алгоритмы для вычисле- вычисления коротких сверток по каждому из изме- измерений. Этот прием может также использо- использоваться совместно с теоретико-числовыми, преобразованиями для увеличения максим мальной длины свертки, допустимой с ис- использованием этих преобразований. В статье описывается очень интересное применение языка для работы с символьными и алгебра- алгебраическими выражениями SCRATCHPAD, ко- который позволяет упростить многочисленные утомительные преобразования, необходи- необходимые при выводе алгоритмов свертки Первая тема, рассматриваемая в статье 3, касается создания алгоритмов для корот- коротких сверток. Авторы обсуждают алгоритм Тоома — Кука, применимый для вычислений нециклической свертки. Приводится матрич- матричная форма алгоритма Тоома — Кука для ил- иллюстрации формы алгоритмов короткой свертки в выражениях прямоугольных пре- преобразований. Затем рассматривается работа Винограда по алгоритмам коротких свер- сверток с минимальным числом умножений* 64
В результате получается метод синтеза, ко- который существенно упрощается благодаря использованию языка SCRATCHPAD. В табл. 1 приведено количество операций, необходимых для оптимальных алгоритмов длины W = 2, 3, 4, . . . , 12. Вывод 4-точеч- 4-точечного алгоритма рассмотрен подробно. Так как метод прямого синтеза приме- применим только для коротких сверток, то для получения сверток большой длины следу- следует использовать составные алгоритмы. Уве- Увеличение длины свертки возможно благода- благодаря китайской теореме об остатках. С исполь- использованием того же отображения, которое Гуд применил для ДПФ, одномерная цикли- циклическая свертка может быть преобразована » многомерную циклическую свертку. Сле- Следует отметить, однако, что многомерная свертка в общем случае не обладает свой- свойством разделения переменных, и, следова- следовательно, использование прямоугольных пре- преобразований автоматически приводит к гнез- гнездовому алгоритму для циклической сверт- свертки. Сначала авторы рассматривают случай двух множителей, а затем проводят обоб- обобщение для нескольких множителей. Для обоих случаев подсчитано число операций. В табл. 3 приведено число сложений и умно- умножений для длин до 2520; в табл. 4 эти же данные приведены для вычисления сверт- свертки с помощью БПФ. Многомерное отобра- отображение может быть использовано совместно с теоретико-числовым преобразованием Фер- Ферма для получения другого алгоритма сверт- свертки.Сравнение приведено в табл.5. В статье рассматриваются различные воп- вопросы, связанные с реализацией алгоритмов. Среди них ограничение динамического диа- диапазона, играющее важную роль в случае ТЧП Ферма, ошибки округления и опти- оптимальная длина блоков для нециклической «вертки. В приложении приведены алго- алгоритмы коротких сверток для 2 < ./V < 9. Статья 4. О вычислении дискретного пре- преобразования Фурье. В этой статье описыва- описывается вывод алгоритма Винограда преобра- преобразования Фурье и приводятся новые интерес- интересные соображения, применимые к вычисле- вычислению многомерного ДПФ. В первую очередь в статье приводятся необходимые теоретические сведения для построения минимальных алгоритмов цик- циклической свертки. Эта конструкция осно- основывается на умножении полиномов по мо- модулю фиксированного полинома P(z) и по- полиномиального варианта китайской теоре- теорему об остатках. Один трудный шаг в этой конструкции возникает, когда P(z\ непри- неприводим над полем определения. Для решения этой задачи предлагаются два подхода. Пер- Первое решение, выражаемое уравнением C) статьи 4, эквивалентно алгоритму Тоома — Кука, рассмотренного в статье 3. Второе ре- решение записано в виде уравнения D). Сле- Следует отметить, что любой минимальный ал- алгоритм должен использовать одну из этих двух форм. Другой интересной теоретической кон- концепцией является дуальная или транспони- транспонированная система. Уравнения G) и (9), приведенные в статье, показывают, что сис- система билинейных форм всегда может быть вычислена одним из двух способов. Далее описывается получение минималь- минимального алгоритма для вычисления 3-точечной циклической свертки. Следует отметить, что использование дуальной системы в выра- выражениях B2а) и B26) позволяет свести некоторые постоянные множители к виду ±1. На примере 6-точечной циклической свертки иллюстрируется использование мно- многомерной свертки для получения длинных одномерных сверток. Отображение одно- одномерного массива в двумерный основыва- основывается на китайской теореме об остатках для целых чисел. Необходимые для вычис- вычисления АВПФ алгоритмы циклической сверт- свертки для 2, 3, 4, 5 и 6 точек приведены в при- приложении А. Вследствие того что самой трудной час- частью вычисления ДПФ является вычисление циклической свертки, описывается приме- применение алгоритмов циклической свертки для вычисления ДПФ. Рассмотрены три случая, длина ДПФ N — простое число (этот пример описан Рейдером в статье 2); ./V равно сте- степени нечетного простого числа рг , в этом случае мы получаем циклическую свертку
длины <р(рт) = (р — I)/»'; наконец, дли- длина N равна степени двойки 2Г , что приво- приводит к двумерной циклической свертке раз- размерности 2 X 2''1. Подробно рассматрива- рассматриваются случаи вычисления ДПФ для семи и девяти точек. В приложении Б приведены все короткие алгоритмы ДПФ, полученные таким методом (N = 2, 3, 4, 5,7, 8,9 и 16). Их мультипликативная сложность представ- представлена в табл. 2. Приведено также общее до- доказательство, что такая конструкция всегда дает алгоритм с чисто вещественными или чисто мнимыми коэффициентами. Заключительный этап создания АВПФ со- состоит в отображении индексов ло китай- китайской теореме об остатках для преобразова- преобразования длинного одномерного ДПФ в много- многомерное ДПФ, числа точек которого по каж- каждой размерности взаимно просты. Приве- Приведен пример вычисления 12-точечного ДПФ с помощью перехода к двумерному ДПФ раз- размера D х 3). В результате получается гнез- гнездовой алгоритм, описанный в статье 1. Ав- Автор показывает, что, так как имеется не- некоторая свобода в упорядочении этапов алгоритма, можно уменьшить число сло- сложений за счет выбора упорядочения. В табл. 3 приведено число операций, необходимых для реализации АВПФ. Последний раздел статьи 4 посвящен темам, которые можно рассматривать как будущие направления теоретических раз- разработок и приложений идей Винограда. Одно применение касается вычисления многомер- многомерного ДПФ. Замечено, что построение мини- минимальных алгоритмов циклической свертки зависит от выбора поля скаляров, под ко- которым проводится вычисление (см. ста- статью 13). Обычно выбирается поле раци- рациональных чисел Q. Четырехточечная сверт- свертка может быть вычислена с помощью пяти умножений над полем рациональных чисел, но требует только четырех умноже- умножений над расширением Q(i) поля рациональ- рациональных чисел множеством комплексных раци- рациональных чисел. Этот факт можно исполь- использовать в ситуации, когда требуется вычис- вычислять ДПФ нескольких массивов данных. Приведено число операций для вычисления ДПФ массива 120 х 120 х 120. Можно ис- использовать и другие расширения поля в за- зависимости от размерности преобразования. Более тонкий результат позволяет сокра- сократить число умножений, необходимых для вычисления ДПФ размера 5 х 5 с 36 до 33, используя специальный прием из статьи 13. В этом случае получаемая экономия для ДПФ 120 X 120 х 120 весьма суще- существенна. Хотя две воспроизведенные здесь статьи Винограда D и 13) по сути имеют более математический характер, они содер- содержат ростки тех идей, которым суждено воз- возбудить интересные и плодотворные иссле- исследования в среде научных работников, зани- занимающихся цифровой обработкой сигналов. Статья 5. О взаимоотношении между двумя быстрыми преобразованиями Фурье. В этой статье, написанной Гудом, подроб- подробно рассматривается разница между алго- алгоритмом БПФ со смешанным основанием (описанным Кули и Тьюкн) и алгоритмом вычисления ДПФ для взаимно простых множителей (известным также как алго- алгоритм Гуда). Оба метода сводят вычисление одномерного ДПФ к вычислению ряда ДПФ небольшой размерности. Как пока- показал Гуд, оба метода можно рассматривать как методы, которые производят переин- переиндексацию одномерного вектора данных в многомерный массив данных. Для основания 2 (N = 2^ точек) в алго- алгоритме БПФ соответствие между одномер-; ной последовательностью х [и] и ?-мерным массивом X[nlt n2, •••>«?] определяется в выражениях двоичного разложения индек- индекса и в виде L ««?**->. (8Л) Необходимое соответствие в ооласти преоб- преобразования определяется иначе Если Х\к\, к2, ¦ ¦ ¦ ,kj^] есть ?-мерный преобразован- преобразованный массив иХ[^] — одномерный вектор ДПФ последовательности х [и], то к = ? k,2L-'. (8.2) Выражение (8.1) соответствует, разумеется, двоичной инверсии, связанной с БПФ по основанию 2. Выражения (8.1) и (8.2) мо- могут быть обобщены на случай смешанного 66
основания, где N = txt2 . . . tL [см. выра- выражение G)] в статье Гуда. Гуд отмечает, что связь между X[nlf п2,. .. ,nL] w.X[ki, к2 ki ] не соответствует выражению многомерного ДПФ уравнения (8), но, в БПФ не существует ограничений на множи- множители N. В алгоритме простых множителей отоб- отображение индексов при переходе от одного измерения к L измерениям основано на арифметике остаточных классов, описыва- описываемой китайской теоремой об остатках. Гуд называет это соответствие китайским и при- применяет его для отображения индексов в об- области преобразований между %[к\, кг, ¦ ¦ ¦ . . . , Jfcjr, ] и X [к]. В области оригиналов, так же как и в предыдущем случае, необходи- необходимо иное отображение, которое Гуд назы- называет руританским [см. выражение D) ]. Используя китайское и руританское со- соответствия устанавливают, что взаимосвязь между J?[«i, п2, . . . , nL] и X[ki, к2, ¦ . . . . . , к^ ] в точности соответствует L -мерно- -мерному ДПФ размерности t\ х t2 х . . . х tL, где N разлагается на множители как N = = 1112 ...*?. Из условий китайской теоре- теоремы об остатках следует, что алгоритм для Простых множителей имеет ограничение, заключающееся в том, что множители t{ Должны быть взаимно простыми. Хотя в статье это ясно не определяется, китайское соответствие может использоваться в час- тОтной области, а руританское соответ- бтвие — во временной или наоборот. Гуд описывает представление алгорит- алгоритмов БПФ и алгоритма для простых множи- множителей в выражениях прямого произведения разреженных матриц. Хотя такое представ- представление и неизвестно большинству инженеров, но оно позволяет, например, получить прос- простой вывод АВПФ. Гуд также отмечает, что преобразование Адамара длины 2" факти- фактически есть и-мерное ДПФ 2 х 2 х 2 . . . х 2. Наконец, в статье определяется числовое Преобразование Фурье и более общее пре- преобразование Фурье — Галуа. Статья 6. Быстрое преобразование Фурье в конечном поле. Теоретико-числовые пре- преобразования были открыты независимо не- несколькими исследователями приблизитель- приблизительно в 1970 - 1971 гг. Одной из ранних статей по этому вопросу является статья Поллар- да "Быстрое преобразование Фурье в ко- конечном поле". Поллард показал, что "пре- "преобразования", аналогичные ДПФ, могут быть определены в поле Галуа (конечном поле), содержащем рп элементов, где п — простое число. Определение ^-точечного пре- преобразования требует существования элемен- элемента поля г порядка N в поле Галуа GF(p"). Это приводит к ограничению, заключающе- заключающемуся в том, что N должно делить р" - 1. Многие свойства ТЧП в точности соответ- соответствуют свойствам ДПФ, в частности, наибо- наиболее важным является свойство циклично- цикличности свертки (СПС) ¦ В соответствии с этим свойством произведение ТЧП двух ^-точеч- ^-точечных векторов а [п] и Ъ [и] соответствует ^-точечной циклической свертке а[п] ® Ь[п], Для ДПФ это свойство является основой алгоритмов быстрой свертки с использо- использованием БПФ. Доказательство свойства цик- цикличности свертки основано на отношении ортогональности, приведенного в выраже- выражении (8) статьи 6. Поллард также отмечает соответствующее расширение, необходимое для того, чтобы определить преобразование в кольце целых чисел по модулю М. Ограничение на длину преобразования в этом случае заключается в том, что ./V делит наибольший общий дели- делитель рх - 1, р2 - 1, • ¦ ¦ , pL - 1, гдеМ раз- разлагается на множители в виде р^ р? .. . pr.L. Остальная часть статьи посвящена обсуж- обсуждению практических методов реализации преобразований в GF(p"), обобщению на случай многомерных преобразований и практическим приложениям преобразова- преобразований. Два практических вопроса, связанные с преобразованиями, заключаются в опре- определении элемента (элементов) 'г в поле GF(p"), имеющего порядок N, й осуще- осуществлении операций сложения и умножения в соответствии с алгебраическими закона- законами GF(p"). Из приложений описаны умно- умножение полиномов над GF (р"), апериоди- апериодическая свертка целочисленных последова- последовательностей, умножение очень больших це- 67
лых чисел и деление полиномов над GF(p). В заключение описан алгоритм "ЛЧМ-z-пре- "ЛЧМ-z-преобразования" для ТЧП, соответствующий ра- работе Блюстейна для ДПФ. Теоретические рамки ТЧП допускают широкий выбор возможных преобразова- преобразований в зависимости от выбора конечного поля или кольца, длины преобразования и корня из единицы. Статья 7. Быстрая свертка с помощью преобразований Ферма и ее применение дня цифровой фильтрации. Вопросы техни- технической реализации ТЧП приводят к необ- необходимости получения преобразования, па- параметры которого позволяют реализовать эффективные структуры аппаратурным или программным способом. Исследование в глубину этого аспекта ТЧП предпринято Агарвалом и Баррасом в рассматриваемой статье. Опираясь на теоретическую работу Полларда и других исследователей, а также на предшествующую работу Рейдера по чис- числовому преобразованию Мерсенна, Агарва- ла и Барраса показали, что среди всех ТЧП числовое преобразование Ферма (ЧПФ) на- наиболее привлекательно с точки зрения ап- аппаратурной реализации и включает в себя порядка Nlog2N сложений, сдвиги двоич- двоичных разрядов, вычитания и характеризу- характеризуется отсутствием умножений. В статье 7 исследуется свойство циклич- цикличности свертки для обратимых преобра- преобразований имеющих "структуру ДПФ" и при- приведены необходимые и достаточные усло- условия, при которых преобразование вида обладает свойством цикличности свертки в случае определения его над конечным коль- кольцом целых чисел по модулю М. Как и в статье 6, эти условия заключаются в том, что на N, М и а налагаются следующие условия: ./Уделит НОД {pi - 1, р2 - 1,. • • . . . , pi - 1 } , где М = Ц рт,' и а естьЛ^-й корень из единицы по модулю М- Так как аппаратурная реализация ТЧП требует операций сложения и умножения по модулю М, то выбор М в виде 2*^ 2* - - 1 или 2* + 1 существенно упрощает по- 68 ложение. Выбор М = 2* не приводит к по- полезному преобразованию (N должно рав- равняться единице). Выбор М = 2* — 1 приво- приводит к- числовому преобразованию Мерсенна, где Ь — простое число. Корень из единицы а. = — 2modAf имеет порядок 2Ь. Когда а несложный, длина преобразования не представляется в виде произведения боль- большого числа множителей и, следовательно, не существуют алгоритмы типа БПФ. Выбор М = 2Ь + 1 при Ъ = 2' приводит к ЧПФ. В этом случае может быть определено пре- преобразование длины N = 2'+1 с а = 2 mod Ft (где Ft обозначает число Ферма Ft =22'+ 1) • В статье 7 показано, что длина преобразо- преобразования может быть увеличена до N = 22'*' за счет использования & = 22>~' Bг<' — 1) mod Fr Так как а2 = 2 mod F(, обозначе- обозначение \/Тобычно используется вместо а. Так как VT имеет двухразрядное двоичное представление в кольце целых чисел по мо- модулю Ft, то этот случай представляет ин- интерес для аппаратурной реализации. В табл. 1 статьи 7 приведены возможные ТЧП, ко- которые определены над Ft для t = 3,4, 5 и 6. Далее рассматриваются вопросы, связан- связанные с реализацией ТЧП. Показано, что ариф- арифметика по модулю 2* + 1 должна включать этап простой коррекции, предназначен- предназначенной для устранения переполнений. Коррек- Коррекция основывается на том факте, что 2Ь = = -1 mod Bй + 1). Если ЧПФ использует- используется для вычисления циклической свертки целочисленных последовательностей, то ре- результат известен только по модулю Ft. Та- Таким образом, модулярная арифметика налагает ограничение на динамический ди- диапазон. Необходимо уметь заранее до вы- вычислений определять границу результата свертки для того, чтобы определять пра- правильный ответ по ответу, вычисленному по модулю Ff. В наихудшем случае грани- граница определяется очень просто: еспиу[п] = =х[п) ® И[п] и | х[п] |< 2"' и | h[n] |<2\ то | у[п] | < N2b'+l"'. Например, 64-точечная цик- циклическая свертка двух последовательностей, содержащих восемь двоичных разрядов плюс знаковый разряд, потребует не больше 22 двоичных разрядов плюс знаковый
разряд для представления выходной после- последовательности. В результате мы получаем, что F4, Fs и F6 оказываются наиболее при- приемлемыми для целей цифровой фильтрации. Авторы приводят некоторые результаты мо- моделирования, полученные в результате вы- выполнения программы, записанной на языке АССЕМБЛЕРА для IBM 370. В заключении рассматривается проблема ограниченности длины ./V преобразования, определяемого числом Ферма. Например, в случае 32-разрядного слова, соответству- соответствующего Fs = 232 + 1, длина ЧПФ не превос- превосходит 128 при а = \J~2- Одним из методов обхода этого ограничения является отобра- отображение одномерной свертки в двумерную свертку. Этот метод и его обобщения яв- являются предметом следующей статьи. Статья 8. Алгоритмы быстрого вычисле- вычисления цифровой одномерной свертки на осно- основе многомерных методов. В статье обсуж- обсуждаются два метода быстрого вычисления свертки на основе многомерных методов. В первом методе две Л^-точечные последо- последовательности х[п] и А [и] отображаются в два массива размерности BL — 1) х М (где N = LM), Х[1, т] и H[l, m ], таких^ что двумерная циклическая свертка X и Н со- содержит как свою часть правильный резуль- результат одномерной ^-точечной циклической свертки *[и] ® h[n]. По сравнению со спосо- способами отображения, рассмотренными Гудом (например, китайско-руританское соответ- соответствие) , такая процедура неэффективна, но ее преимущество заключается в том, что на L и М не накладывается никаких ограни- ограничений (т. е. они не должны быть взаимно простыми). Это обстоятельство важно для определения двумерного ЧПФ, так как в этом случае по каждому измерению число отсчетов равно степени 2. Табл. 1 статьи 8 содержит соотношения между длиной слова и" длиной преобразования для одномерных и двумерных методов. Например, кольцо целых чисел по модулю Fs допускает вы- вычисление линейной (нециклической) свертки двух 64-точечных последовательностей при а = \/Т; при использовании двумерного отображения эта длина может быть увели- увеличена до 4096. Предложенный метод может быть легко обобщен и на случай сверток более высо- высокой размерности. Авторы рассмотрели слу- случай, когда одномерная циклическая сверт- свертка имеет длину N = 2м и определяют М-мер- ные массивы, которые подлежат свертке. Совместно со специальными алгоритмами для двухточечной апериодической свертки такой подход дает алгоритм вычисления свертки, требующий только 3" умноже- умножений вместо Л'2 = 4^ умножений при непо- непосредственном вычислении свертки. Интерес- Интересно отметить, что специальные алгоритмы двухточечной и трехточечной сверток могут быть получены систематически на основе методов, предложенных Виноградом (см. статьи 4 и 13). В заключение в табл. 2 ста- статьи 8 приведено сравнение этого метода с вычислением свертки с помощью БПФ. Статья 9. Аппаратурная реализация пре- преобразования Ферма. Специальные требова- требования, связанные с числовым преобразовани- преобразованием Ферма, привели ряд исследователей к необходимости глубокого изучения вопро- вопросов аппаратурной реализации этого преоб- преобразования. Этому направлению посвящены две статьи Макклеллана и Лейбовица. В статье 9 "Аппаратурная реализация пре- преобразования Ферма" Макклеллан описывает специализированный процессор, разработан- разработанный в Линкольновской лаборатории Мае- сачусетского технологического института в 1975 г. Процессор осуществляет вычис- вычисление ЧПФ последовательностей длиной 64 отсчета с разрядной сеткой в 16 двоич- двоичных разрядов (по модулю F4). Важным элементом в разработке системы явля- является новая схема кодирования, созданная для представления данных и облегчающая реализацию арифметических операций по модулю числа Ферма. Использование этой новой схемы кодирования и простота "ба- "бабочки" при вычислении ЧПФ приводят к тому, что тактовая частота осуществления бабочки ЧПФ равна 38 МГц. Одной из целей проведенного исследо- исследования было получение оценки общей сто- 69
имости системы ЧПФ конволвера по срав- сравнению с магистральным конволвером, ис- использующим БПФ, в частности, в режиме скоростной обработки сигналов РЛС. Хотя ЧПФ характеризуется значительно более простой арифметической структурой по сравнению с БПФ, реализация длинных сверток приводит к необходимости осу- осуществления Многомерных отображений, опи- описанных в статье 8. В статье 9 сделан вывод, что ЧПФ является полезной альтернативой по сравнению с БПФ, если фильтруемый сигнал действительный и стоимость ариф- арифметических узлов составляет большую часть стоимости всей системы, что характерно для магистральной вычислительной архи- архитектуры. Более того, для коротких свер- t&R (например, длиной 64) и для дву- двумерных сверток экономический эффект мо- может, быть значительным. Статья 10. Упрощенная двоичная ариф- арифметика для преобразования Ферма. Схема кодирования, рассмотренная в статье 9 для арифметики ЧПФ, была обобщена Лейбо- вицем в статье 10. Вместо обычного дво- двоичного разложения Лейбовиц предложил представлять целые числа из диапазона 0, 1, 2, 3, . . • , 2f"', 2f с помощью двоичного разложения (Ах — l)modBf + 1), где А — ненулевая константа, а х — кодируемое целое число. Код статьи 9 соответствует случаю А =2; наиболее простой случай соответствует А~\. При использовании предлагаемого кода правила сложения, отрицания и сдвига при- принимают следующий вид. 1) нуль есть специальный случай, пред- представляемый единицей в t-ы двоичном раз- разряде и нулями в младших / двоичных раз- разрядах. Если нуль является операндом (на- (например, при сложении х + 0), то эта едини- единица может быть найдена и операция стано- становится тривиальной; 2) сложение осуществляется, как для двоичных чисел, с дополнительным услови- условием, что любое переполнение в наиболее зна- значимый двоичный разряд (r-й разряд) до- дополняется и складывается с содержимым наименее значимого двоичного разряда; 70 3) ненулевое число проходит через опе- операцию отрицания с помощью дополнения его представления поразрядно; 4) умножение на два (сдвиг) осуще- осуществляется с помощью циклического сдви- сдвига двоичных цифр на один разряд влево. Двоичная цифра, покидающая наиболее значимый разряд и попадающая в наиме- наименее значимый разряд, дополняется. В результате получается арифметическая система, по сложности подобная система кодирования в дополнительных кодах, прос- просто реализуемая аппаратурно. Общая задача умножения двух чисел по модулю Ft также рассмотрена в статье 10. Эта операция составляет основную часть системы свертки с ЧПФ, так как умножения обычно осуществляются на 16-, 32- или 64-разрядные двоичные числа. Статья П. Применение конечных полей для вычисления сверток. Обобщения теоре- теоретико-числовых преобразований для более общих случаев, включающих комплексные преобразования, составляют предмет сле- следующих двух статей Рид и Труонг в статье "Применение конечных полей для вычис- вычисления сверток" рассмотрели определение ТЧП над полем Галуа с q2 элементами GF(q2), где q — простое число. Это поле аналогично полю комплексных чисел, ког- когда (—1) есть квадратичный невычет (т е. ни один из элементов не, удовлетворяет сравнению х2 + 1 =0mod<7) С помощью таких преобразований можно вычислить циклическую свертку двух комплекснознач- ных последовательностей. Частный случай, когда q — простое число Мерсенна (напри- (например, 2Р - 1,р= 13, 17, 19,31,61, ..), да- дает интересное преобразование и подробно рассматривается в статье Необходимая дво- двоичная арифметика выражается в дополни- дополнительных кодах и, следовательно, проста в аппаратурной реализации. Следует отметить, что если q — число Ферма, то (—1) есть квадратичный вычет и подобная конструк- конструкция неосуществима. Вывод ТЧП над GF(g2) непосредственно обобщает результаты работы Полларда (статья 6). Длина преобразования должна
делитьq2 - 1 = B? - IJ -l=7P+1GP~1 - - 1), отсюда следует, что возможно полу- получение преобразований длиной 2к, где 1 < < к < р + 1. Для определения преобразова- преобразования необходимо найти первообразный эле- элемент порядка 2Р+1. Теоремы 1 и 2 (статья 11) позволяют нахрдить возможные пер- первообразные элементы. Если имеется мно- множество первообразных корней, то среди них следует выбирать такие, которые име- имеют простое двоичное разложение, что в ко- конечном счете приводит к упрощению аппа- аппаратурной реализации. Например, в QFC12) существуют четыре первообразных элемен- элемента порядка 8, как отмечено в табл. 1. Так как длина преобразования равна степени 2, то можно использовать алгорит- алгоритмы типа БПФ для вычисления преобразо- преобразования за Nlog2 N операций. Авторы рас- рассматривают также задачу определения дина- динамического диапазона, связанную с арифме- арифметикой по модулю q. Статья 12. Цифровая фильтрация с по- помощью комплексных преобразований Мер- сенна. Эта статья, написанная Нуссбауме- ром, также посвящена рассмотрению опре- определения комплексного числового преобра- преобразования Мерсенна. Определение преобразо- преобразования расширено за счет введения кольца целых чисел по модулю псевдочисла Мер- Мерсенна. Числовое преобразование с псевдо- псевдочислами Мерсенна выгодно тем, что оно более приспособлено к алгоритмам типа БПФ по сравнению с ЧПМ. Определение комплексного ЧПМ следует из того, что 2/ есть элемент порядка 4q, a 1 ± / есть элементы порядка Sq по модулю B? - 1). Хотя это в явном виде и не утверж- утверждается в статье, но фактически автор работа- работает в поле Галуа GF (р2), как и в статье 11. Разница заключается в том, что в статье 12 ядро является простым, а длина преобразо- преобразования - составным числом, содержащим в качестве множителя большое простое число q, в то время как в статье 11 ядро является сложным, а длина преобразования равна степени 2. Так как 1 ±j имеет порядок &q, то &7-точечное комплексное ЧПМ может быть профакторизовано наподобие БПФ на восемь ^-точечных преобразований для по- повышения скорости вычислений. Числовое преобразование по модулю псведочисел Мерсенна определено над коль- кольцом целых чисел по модулю Bе — 1)/(_P/')L где pi' есть делитель 21 — 1. Длина преоб- преобразования определяется НОД рк — 1 при кФг- Таким образом, когда 2^—1 содер- содержит небольшие простые множители, то они могут быть разделены в псевдочисло Мер- Мерсенна для получения больших длин преоб- преобразований. Разложение 2* — 1 множителей (р{ - 1) представлено в табл. 1 (статья!2). Таблица 2 содержит возможные длины пре- преобразований и корни для некоторых пер- перспективных псевдо-ЧПМ. Арифметическая реализация псевдо-ЧПМ осуществляется пу- путем выполнения вычислений по модулю ПЯ —1) с последующим приведением по мо- Bе — I) дулю классов вычетов , А. • Статья 13. О билинейных формах, муль- мультипликативная сложность которых зависит от поля констант. Последняя статья носит математический характер и посвящена об- общей проблеме мультипликативной сложно- сложности билинейных форм и ее зависимости от поля констант, используемой при выводе алгоритмов минимальной сложности. В этой статье Виноград приводит доказательство теоремы, утверждающей, что минимальное число умножений, необходимое для вычис- вычисления X(z)H(z) modP(z), равно IN — Jt, где ./V - степень P(z) и к — число различных неприводимых полиномов в разложении P(z) над полем определения. Статья 13 со- содержит также доказательство того, что ми- минимальный алгоритм должен основываться на китайской теореме об остатках для по- полиномов. Эта статья более математизирова- математизирована по Сравнению с остальными, содержащи- содержащимися в сборнике, но она способствует воз- возбуждению интереса тех читателей, которые более склонны к исследованию теорети- теоретических основ сложности вычислений приме- применительно к билинейным формам. 71
Статья 1. Алгоритм БПФ для простых множителей, использующий быструю свертку Д. П. Колба, Т. У. Парке Аннотация. Рассматриваются эффективные ал- алгоритмы для больших объемов данных, которые основаны на объединении двух недавно развитых идей — сведений ДПФ к свертке и вычисления коротких сверток с минимальным числом умно- умножений. Три алгоритма преобразования сравнива- сравниваются по числу умножений и сложений. Приведе- Приведено время выполнения anropntMa БПФ для прос- простых множителей с использованием быстрой сверт- свертки, который был запрограммирован для IBM 370 и микропроцессора 8080. 1. Введение Вычисление дискретного преобразования Фурье — одна из основных операций в цифровой обработке сигналов. Развитие и широкое использование быстрого преобразования Фурье, вызванное появлением статьи Кули и Тьюки [1], оказало решающее воздей- воздействие на обработку сигналов. Недавно были высказаны идеи, которые привели к новым алгоритмам вычисления ДПФ. Одна из них, описанная Рейдером в 1968 г., заключалась в том, что вычисление ДПФ может быть сведено к циклической свертке с помощью перестановки данных, когда объем данных N есть простое число. Таким образом, быстрый способ вычисле- вычисления свертки открывает путь к быстрому вычислению ДПФ. Виноград [3] определил минимальное число умножений, необходимых для вы- вычисления циклической свертки. Новые алго- алгоритмы свертки, которые во многих случа- случаях реализуют этот минимум, были разрабо- разработаны Агарвалом и Кули [4]. В краткой статье [5] Виноград объеди- объединил сведение ДПФ к свертке (для объе- 72 мов данных, равных простому числу или степени простого числа) с новыми алгорит- алгоритмами вычисления коротких сверток. Он предложил вычисление длинных преобразо- преобразований с помощью гнездового метода опре- определения коротких (быстрых) преобразова- преобразований и дал сравнительную таблицу числа операций для обычного БПФ и нового ме- метода вычислений. В данной статье сначала рассматрива- рассматриваются два основных положения — преоб- преобразование ДПФ к циклической свертке и свертка с минимальным числом умноже- умножений, а затем - различные реализации вы- выполнения длинных преобразований. Альтернативным для гнездового метода, предложенного Виноградом, является алго- алгоритм БПФ для простых множителей,исполь- множителей,использующий быструю свертку для отдельных множителей. Этот алгоритм выделен особо как перспективный и запрограммирован для двух машин. IBM 370 и микропроцес- микропроцессора 8080. Приведены таблицы, сравнива- сравнивающие данный подход с гнездовым алго- алгоритмом Винограда и обычным БПФ для степени 2. Хотя сама идея превращения одномерного преобразования в многомер- многомерное с простыми множителями и не явля- является новой (см. Гуд [6] и Томас [7]), сочетание коротких быстрых алгоритмов свертки с таким многомерным разложе- разложением представляется многообещающим но- новым способом вычисления ДПФ. 2. Сведение ДПФ к свертке Дискретное преобразование Фурье x{n)W"k, * = W = е-/B1г/ло С1) есть линейное преобразование вектора дан- данных объема N х@) x(N-
в вектор коэффициентов Фурье. Матричное представление *A) X{N- 1)  1 1 Wl указывает на то, что сложность алгоритма определяется правой нижней частью матри- матрицы, содержащей (N — 1) на (N — 1) комп- комплексных экспонент. Если f^ C) удастся вычислить эффективно, то мы полу- получим быстрый алгоритм для вычисления ДПФ A), так как после вычисления C), A) можно получить так: Чтобы показать, как C) можно свести к циклической свертке, рассмотрим мат- матричное представление C) для N = 5 с пока- показателями комплексных экспонент, приве- приведенными по модулю 5: E) Если переставить последние два столб- столбца в E) и затем поменять местами послед- последние две строки, то получим X{2) w2 Wi w4 w2 w* w1 w3 w3 w1 w3 w* w3 Ц/1_ x(l) xB) xC) X(\) XB) X{A) JPf31_ w1 w% w* w3 W2 V W3 V W1 V r w3 V3 Wl L/2 ь/4 xB) F) Таким образом, мы получили обратную циклическую свертку или циклическую кор- корреляцию. Оставляя на месте х A) и B) лагая оставшийся вектор входных данных в обратном порядке, получаем обычную циклическую свертку: X(\) Щ) XD) ~wl w2 w* w3 w3 wl w* w4 w* w3 wl w* w2 w* w3 *B)J G) Вычисление C) (и следовательно, ДПФ) сведено к циклической свертке G) с по- помощью перестановки входных и выходных отсчетов. Если мы имеем быстрый способ вычисления сверток, то тем самым мы по- получаем быстрый способ вычисления ДПФ. Сведение ДПФ к свертке было впервые предложено Рейдером [2]. Он показал, что указанные перестановки можно всег- всегда сделать, когда N — простое число. Так как WN = 1, то мы имеем дело с произве- произведением целых чисел по модулю N в показа- показателе комплексной экспоненты W в C). Для сведения ДПФ к циклической свертке используется отображение индексов, заме- заменяющее умножение индексов по модулю N на сложение индексов по модулю N — 1. Множество целых чисел A, 2, . . . , N- 1) является циклической группой с операцией умножения по модулю N [8]. Мы можем всегда найти, по крайней мере, одно целое 73
число а в этой группе, обладающее свой- свойством, что любое целое число, принадлежа- принадлежащее данной группе, может быть выражено в виде степени а. Упорядочивая данные в соответствии с показателями а, можно всегда свести C) к циклической свертке для простых N Соответствие между новым индексом /и и исходным индексом л запи- записывается как п = ат modN, и= 1,2, • ,#- Г, ,N-2, (8) где акф\, для 0<k<N- 1, а»-1 = 1. О Отображение перестановки (8) есть изо- изоморфизм между мультипликативной груп- группой N — 1 целых чисел {1, 2, ... , N— 1} и аддитивной группой N — 1 целых чисел {О, 1, . . . , N-1 2} . Целое а со свойством (9) называется первообразным корнем степени N - 1 из единицы и является образующим элементом группы (генератором), так как любой элемент может быть записан в виде степени а. Так же, как логарифмирование сводит умножение к сложению, так и (8) заменяет умножение индексов сложением. Когда (8) применяется к индексам вход- входных и выходных данных, C) принимает вид m=0 ) Г*('+т),/ = (),¦ •• ,N- 2.C10) В A0) показатели а вычисляются по мо- модулю N — 1 • Это при N = 5 и a = 2 дает об- фиксации х(а°) и обращению порядка ос- остальных значений входного вектора пг-0 В A1), как и выше, показатели а опреде- определяются по модулю N - 1. Объединяя A1) и D), можно всегда свести вычисление ДПФ к циклической свертке для простых iV. Виноград [5] и Макклеллан, Рейдер [9] показали, что ДПФ может быть также све- сведено к свертке, когда длина преобразова- преобразования равна степени простого числа, т. е. N = = рг, рФ2. Преобразование становится несколько более сложным, так как необ- необходимо в первую очередь устранить из множества {1, 2, ... ,N— 1} все целые, со- содержащие множитель р, чтобы получить циклическую группу с pf -1 (p - 1) элемен- элементами. Эта циклическая группа дает воз- возможность получить циклическую свертку длины рг' ~* (р — 1) таким же образом, как было описано выше. Дополнительные вы- вычисления сводятся к вычислению двух ДПФ длины // "'. Например, при N- 9 = З2 мы выбрасываем целые 3 и 6 для получе- получения множества {1,2,4, 5,7, 8}, которое яв- является циклической группой по умноже- умножению по модулю 9 и изоморфно аддитивной группе целых чисел {0, 1, 2, 3, 4, 5} по сложению по модулю 6. Целое 2 есть обра- образующий элемент мультипликативной груп- группы, так как степени 2 по модулю 9, пг = 0,... ... ,5 суть 1,2,4,8,7,5. В матричном выражении ХB) ХC) 1111111 1 W1 W2 W3 W* Ws W6 W1 W* 1 W2 W* W6 V8 Wl Ц/6 1 W3 W6 1 W3 1 1 1 1 w* ws Ц/6 Ц/7 r W3 ws Ц/3 Ц/6 1 Ц/3 Ц/6 w2 W W3 Ц/8 K'6 w3 1 Ц/6 1 W 1 ws w3 w1 Ц/8 Ц/6 Ц/4 1" Ц/6 Ц/3 w2 wl_ хф) ~ x(l) xB) *C) xD) xE) xF) *G) x(8) A2) ратную циклическую свертку F). Для по- удаляем строки и столбцы, соответству- лучения обычной циклической свертки мы ющие индексам 0, 3 и 6, и вычисляем ос- меняем знак тив A0), что соответствует тавшее преобразование длины 6 74
XB) fD) XE) XG) Wi W1 W* W2 W* W* Wl W* W W* W* W1 W2 Wl W* Ws W1 W2 W1 W* W* W Ws W1 K" W* W2 W* W Ws W* W2 W Wl W2 W* xB) xD) xE) xG) x(8) A3) с помощью отображения я-1.2,4,8,7,5, " = 2 m°d9> m-0.1.2.3.4.St сводя его к циклической свертке (с обраще- обращением входного вектора описанным выше) Х{\) X{2) Ws W W* W* W2 2 W1 W W1 W* W* W WA W2 W1 W* W* W2 W W* W* ws W W* W* W1 W1 x(\) xE) xA) ж(8) xD) Д8) Х{1) *E)J A4) В дополнение к A4) необходимо про- провести вычисления для строк и столбцов, удаленных из A2). Для удаленных строк вычисляем 11 111 111 Г 1 Ц/З ц/6 j ц/3 ц/6 j ц/3 ц/6 1 Ц/6 ц/3 ] ц/6 ц/3 j Wb W3 х@)- хB) *C) хD) хF) *G) х(8) Так как з _ е- ц,з _ A5) представляет собой просто ДПФ дли- длины 3 для просуммированных входных зна- значений Г1 _\ W\ W3_ Для удаленных столбцов вычисляем Y(O) УC) УE) 1 1 1 1 1 1 1 1 1 1 ц,3 ц/6 1 Ц/З W6 1 Ц/З и/6 1 ц/6 Ц/З 1 ц/6 Ц/З 1 ц/6 W3 х(О) хC) хF)_ A6) У(8)_ Для A6) проводится вычисление второго ДПФ длины 3 У@)~ Yd) П2). У(з)" - УD) П5). УF) = УG) П8). — 1 1 1 1 W3 W\ ul W\ W3m *@) xC) *F). A7) Для окончательного вычисления A2) с по- помощью A4) нужны только два последних значения ГA) и ГB) из A7): ХB) А-D) ХE) хю xd)~ ХB) _ХD) ~ ХE) У {if УB) + Yd) УB) YBl Таким образом, для вычисления ДПФ дли- длины 9 необходимо вычислить циклическую свертку длины 6 и два трехточечных ДПФ, которые вычисляются с помощью двухто- двухточечных циклических сверток. Если N = З3, то мы получаем З2 • 2 = 18-циклическую свертку и два ДПФ длины З2 = 9. Послед- Последние ДПФ могут быть сведены к двум шести- шеститочечным сверткам и четырем трехточеч- трехточечным ДПФ, которые в свою очередь сводят- сводятся к вычислению двухточечных сверток. Следовательно, преобразование длины TV = = р7* может быть вычислено с помощью одной циклической свертки длины pr ~1 (р — - 1), двух сверток длины pf'1 (р - 1), че- четырех сверток длины р*  (р — 1), восьми сверток длины j?~A{p — 1) . . . , и 2Г~Х сверток длины р — 1. 75
3. Свертка с минимальным числом умножений Алгоритмы ДПФ дляN=pYiN=pr пред- представляют собой способ сведения вычисле- вычислений, необходимых для получения ДПФ, к циклической свертке. Алгоритм для вы- вычисления коротких сверток с минималь- минимальным числом умножений для небольших значений N основан на недавней работе Ви- Винограда [3]. Теорема Винограда а минимальном числе умножений объясняется на языке умноже- умножения полиномов. Для получения цикличес- циклической свертки последовательностейh 0 ,h [,... • ¦ ¦ , hN-l и х0, Xi, . . . , xjy_,необходимо только найти VV коэффициентов полинома где #(*)= Z А*г*; *(z>= ? xkzk. A9) Если zN - \ записывается в виде произве- произведения К множителей, которые неприводи- мы над полем рациональных чисел и по- попарно взаимно просты: 'w-i-rjaw, B0) теорема Винограда утверждает, что мини- минимальное число умножений, необходимое для вычисления циклической свертки двух последовательностей длины N, равно IN - - К. В этой теореме не учитываются умно- умножения на рациональные числа. Чтобы уменьшить объем вычислений, не- необходимых для определения A8), Y{z) разлагается на К более простых компонент с помощью полиномиальной формы китай- китайской теоремы об остатках [4]: "-!); B1) У, B) = Я, (г) ^Г, (г) mod ((?, (г)), i=\- ¦ ,К\ B2) Xt{z)=X{z) mod (Q,(z)), i-l, ¦•• ,К; tf,(z) = #(z)mod«2,(z)), /=1,-.К. B3) Полиномы 5,(г), i = 1, . . . ,К, играют роль дельта-функции Кронекера: 76 5,(z) =1 mod Q((z), /= 1,-- ,К; Si(z) = 0 mod Qi (z) V / Ф i. B4) Полиномы Sj(z) можно получить с помо- помощью алгоритма Евклида для Полиномов [4]. Например, для вычисления цикли- циклической свертки двух последовательностей длины 6 h0, hi, . . . , hs их0, Xi, . . . , х5 запишем H(z)=h0 +Л,г + ¦ ¦ ¦ h5z5; X(z) = xa +x,z + • ¦ ¦ +x5z5 Сначала найдем неприводимые множители - I)(z2+z+l)(z2 - z6 - l= Затем вычислим приведенные по mod Qt (z) полиномы Xj, Hi hYj l: -x0 +x2 - x} x2 - x5; - x2 4 + xs; = x3o+x\z = {хг - хг +хА - xs)z; (x, +x2 -x4 - Xi)z B5) (полиномыН{ (z) образуются таким же спо- способом) ; Y1(z)=H1{z)Xl(z) mod (z + 1) = yl0 = hloxlo; Y2(z) = H2(z)X2(z) mod (z - 1) = yl = hlx20, Уз (г) = H3 (z)X3 (z) mod (z2 + z + 1) = у J + y\z = ll - h\x\) + (h\x30 + hlx] - h\x\)z; г) mod (z2 -z+l)=^+^z = t*t) + (Л**? + h%x\ + Atxt)z. B6) Полиномы Yx (z) и К2 B) образуются не посредственно, для чего необходимо по од- 1 Верхний индекс /" отмечает коэффициенты 1-го полинома.
ному умножению. Таким образом, мы полу- получаем промежуточные переменные тх = Аохо и т2 = Уо = и у\ =тг. B7) Для определения полиномов Y3(z) и Y+(z) необходимо только по три умноже- умножения — подобно умножению комплексных чисел, выполняемому с помощью трех дей- действительных умножений. Так, для опреде- определения Y3 (z) нужны числа *3о); B8) mt=hlxl, и ms=h\x\, B9) через которые выражаются коэффициенты у\ = т3 + т* и у% = Для определения Y* (z) нужно вычислить т6 = (hi + h\)(xi + xf); ет7 = hUo и m8 = Aixi C0) и затем образовать у* = т6 - m7 и у% = = m-j — wig. Таким образом, мы получаем четыре полинома: ^i(z) = у\>, Y2(z)=yl, и Y4(z)=yi+yU- Завершающий шаг восстанавливает поли- полином Y(z) по его компонентам Y{(z). По- Получаем Г(г)= [Г, BM,B)+ Y2B)S2(z)+ Y3(z)$3(zL + r4(zM4(z)] mod(z6 - 1). C1) Условию B4) удовлетворяют полиномы = ^ {zs +z3 +z2 - 1); 1); 54(z) = ? (z6 + zs - z4 - 2z3 - z2 + г + 1). C2) Чтобы показать, как вектор коэффи- коэффициентов Y(z) непосредственно выражается через исходные последовательности [xt) и {/г,-}, представим вектор-столбец . Уо У\ = • Уы-\ как функцию от векторов столбцов Хо х = Хдт-1 и Л= • с помощью двух уравнений, используя знак ® для обозначения поточечного умножения вектор-столбцов: т=[Я]Л®И]х; C3) У =& C4) Циклическая свертка длины N, для вычисле- вычисления которой требуется М умножений, всег- всегда может быть записана в таком виде, где А и В — матрицы размера М х N, С — матри- матрица размераNxM [4]. Чтобы представить пример N=6 в таком матричном виде, определим в первую оче- очередь промежуточные параметры т в B6) по формулам B7) - C0). Члены в B6), в которые входят h их, разлагаются согласно B5) для получения матриц А и В: Ао т - 1 1 1 1 0 1 1 0 1 1 -1 1 0 1 1 - 1 1 - 1 0 1 1 0 1 -1 1 1 0 1 1 0 1 1 0 -1 -1 0 -1 1 1 1 0 -1 -1 0 -1 -1 1 1 1 0 -1 -1 0 -1 1 -1 1 0 -1 -1 1 1 -1 0 1 -1 0 -1 1 1 1 0 1 -1 0 -1 1 с - 1 -1 с 1 -1 1 0 -1 -1 0 1 Аз As 0 1 1 0-1-1 Хо X] х2 C5) Для получения матрицы С выразим B6) через коэффициенты щ, приведенные в 77
B7) - C0): Yt(z) = (m7 - m8 + (m6 - mn)z. C6) Подставляя C6) и C2) в C1) и группируя по У = Уо У\ Уг Уз У* У* степеням z Cm - i ъ 1 - 1 1 -1 1 -1 , получаем 1 1 1 1 1 1 -1 2 -1 -1 2 - 1 1 1 -2 1 1 -2 1 1 -2 1 1 1 2 1 -1 -2 -1 1 -1 -2 -1 1 -2" -1 1 2 1 1 т. т2 >"з т4 ms т т8 C7) Таким образом, мы получаем шестито- шеститочечную циклическую свертку, вычисленную за восемь умножений, что совпадает с мини- минимальным числом умножений по теореме Винограда. 2N-K = 2 -6-4 = 8. Умножения на рациональные числа в А, В и С не учитываются. Вычисление Y3(z) и Y*(z) может быть осуществлено с помощью различных алго- алгоритмов, которые дадут значения т3 - т8, отличные от B8)_ - C0), и другое опреде- определение Уъ (z) и У4 (z) через щ. Эту свобо- свободу в выборе способа вычисления Y3 (z) и У4 (z) можно использовать для минимиза- минимизации числа сложений в алгоритме свертки. Но в этой статье мы не пытаемся миними- минимизировать число сложений. Алгоритмы свертки, которые требуют минимального числа умножений 2N - К и имеют простые матрицы А, В и С, извест- известны только для коротких сверток. Для свер- сверток большей длины неясно, каким обра- образом снизить число сложений. 4. Применение к ДПФ Полиномиальный метод получения алго- алгоритма циклической свертки, который тре- 78 бует минимального числа умножений, был использован эффективно для коротких сверток. Виноград [5] утверждает, что все известные алгоритмы для вычисления цик- циклической свертки с минимальным числом умножений требуют большого числа сло- сложений, когда z^ — 1 имеют большие непри- неприводимые множители. Поэтому, практически длины ДПФ должны быть небольшими, что- чтобы сказалось преимущество перехода к циклической свертке. Алгоритмы ДПФ для небольших значений N описаны в п. 5 с ис- использованием приведенных выше методов для использования в БПФ с простыми мно- множителями. Эти алгоритмы отличаются от гнездового способа вычисления ДПФ, пред- предложенного Виноградом и описанного Сил- верменом [10], который также приводится в п. 5. В табл. 1 сравнивается число опера- операций, необходимых для вычисления корот- коротких преобразований в алгоритме БГГФ для простых множителей и в алгоритме, исполь- использующем гнездовой метод. Явная запись формул вычисления коротких преобразова- преобразований с помощью алгоритма БПФ для прос- простых множителей длин 3, 5,7 и 9 приведена в приложении. Эти формулы получаются в ре- результате объединения корректирующих чле- членов с алгоритмами свертки, описанными в п. 3. Короткие преобразования для гнездо- гнездового алгоритма получаются в результате изменения формул, приведенных в прило- Таблица 1. Число операций для малоточечных ДПФ 2 3 4 5 7 8 9 Алгоритмы БПФ для простых множителей Умно- Умножения 0 1 0 4 8 2 8 Сдви- Сдвиги 0 1 0 2 0 0 2 Сложе- Сложения 2 6 8 17 36 26 49 Гнездовой алгоритм Умно- Умножения 0 2 0 5 8 2 10 Умно- Умножения иа W" 2 1 4 1 1 6 2 Сложе- Сложения 2 6 8 17 36 26 49
женин,, с целью уменьшения числа умноже- умножений на W0, как показано в D5) — D7). Чтобы понять, как вычисляется ДПФ с помощью свертки, рассмотрим пример для длины 3 X@) X(l) XB). Свертка X(l = w w I Г XB)\ L дает значения ХA), о W2 wi W1 W2] w2 w1! XB)n *B)J cB). C8) W°x(O) + X(\), XB)=W° x@) + XB) C9) Для получения явных формул для ДПФ свертка C8) записывается в матричном виде по образцу C3) и C4) : 1 М П If1] Г 1 т2 ХBI 2 Ll -U т3\ D1) Применяя D0) и D1) к ДПФ длины 3, мы включаем множитель 1/2 в матрицу В. Объединение свертки с C9) дает следу- следующий алгоритм ДПФ длины 3 для исполь- использования его в БПФ с простыми множите- множителями: в, = х(\) + хB); в, =*(!)-дсB); в3 =. m, = .V3 / a2; D2) D3) c, = m2. D4) Для использования этого алгоритма в гнездовом методе вычисления ДПФ сле- следует учитывать умножения на W°, что по- поясняется в п. 5. Поэтому мы также стре- стремимся уменьшить число умножений на W°. Это достигается изменением приве- приведенного выше алгоритма для ДПФ длины 3, как показано ниже. а, =хA) + хB); «2=хA)-хB); а3 = — (- — - =- f a,, аг =1-а3; D5) D6) сл-т-2 D7) Алгоритм, используемый в БПФ с прос- простыми сомножителями, требует одного ум- умножения, одного сдвига (умножения на 1/2) и шести сложений, как показано в табл. 1. Алгоритм, используемый в гнездовом мето- методе, требует выполнения двух умножений, одного умножения на W0 и шести сложе- сложений. Для комплексных входных данных значения, приведенные в табл. 1, следует только удвоить, так как коэффициенты, образуемые на участке BW свертки, явля- являются либо чисто действительными, либо чисто мнимыми числами. Это происходит потому, что в матрице В комплексные экспоненты W складываются или вычита- вычитаются комплексно-сопряженными парами. Приведенные короткие алгоритмы ДПФ- могут быть записаны в матричном виде следующим образом: X = 0DIx, D8) где / —матрица (i x N, описывающая сложе- сложения входного массива в D2) или D5); D — диагональная матрица множителей ц х ц, соответствующая D3) или D6), и О — матрица Nxfi, описывающая выход- выходные сложения, приведенные в D4) или D7). Для примера ДПФ длины 3 гнездо- гнездовой алгоритм D5) — D7) записывается в виде 70
X@) XB) = "l 1 1 0 1 1 Q~ 1 -1 1 0 0-- 0 0 0 -?. "l 0 0 1 \ 1 1 - 1 1 1 x@) *(•) x{2) Запись матриц в виде сумм дает другой подход к представлению описанных алго- алгоритмов: *(*)= ? °*'d' Z iinx(n). D9) /=0 л = 0 В общем случае n>N, что графически подчеркнуто на рис. 1, где блок со знаком умножения х изображен крупнее, чем бло- блоки входных и выходных сложений, отме- отмеченные знаком +. 5. Вычисление длинных преобразований с помощью коротких Короткие преобразования, описанные вы- выше, могут быть объединены несколькими способами для вычисления длинного пре- преобразования длины N. Идея заключается в преобразовании одномерного преобразо- преобразования длины N ~ МуМг . . . М[ в /-мерное преобразование, требующее вычисления / коротких преобразований длины М^ при к = I, ... ,1 .В данной работе мы использу- используем отображение одномерной последователь- последовательности в /-мерную, требующее попарной Рис. 1. Осуществление ДПФ с помощью свертки. Показано увеличение размерности за счет исполь- использования более одного умножения на отсчет 80 взаимной простоты множителей М% [11]. Обычные алгоритмы БПФ также отобра- отображают одномерную последовательность в многомерную. Алгоритм Кули - Тьюки [1] разрешает наличие общих множителей в N, а алгоритмы Гуда [6] и Томаса [7] ис- используют отображение, описываемое китай- китайской теоремой об остатках для целых чи- чисел [12], в которой требуется взаимная простота сомножителей N. Рассмотрим изо- изоморфизм, определяемый китайской теоре- теоремой об остатках, для случая двух взаимно простых множителей Мt и М2 ¦ В ДПФ Х{к) = ?* х(п) Wnk п = о индекс п входной последовательности х(п) будем называть входным индексом, а ин- индекс к выходной последовательности X (к) — выходным индексом. Преобразование от одномерной последовательности в двумер- двумерную (изоморфизм) отображает входной ин- индекс п в пару индексов (nlt n2). «! = /¦]« modMhnl= 0, 1, • • • ,Л/[ - l,ri= M2vnodMl; n2=r2n modM2,n2= 0, 1, • ¦ ¦ ,М2 - 1 /¦2=M1modM2. Выходной индекс отображается так же: k1=kmodMl, jfc, = 0, I. - - - ,Л/, - 1; k2 =kmodM2, к2 = 0, 1, • • • ,М2 - 1 Обратный переход от двумерной последо- последовательности к одномерной для выходно- выходного индекса записывается в виде * = (*i*i +S2*2)modjV, E0) где Ji = 1 mod Mi И s2 = 0 mod Mt\ Si=0 mod M2, s2 = 1 mod M2 Такое же обратное отображение годится и для входного индекса, но удобнее исполь- использовать отображение п = (М2п! +Mln2)modN E1) При использовании приведенных отображе- отображений ДПФ записывается в виде где
10 Рис. 2. Алгоритм многомерного БПФ с простыми множителями для длины 15 Двумерное преобразование в E2) реали- реализуется как последовательное вычисление Мг ДПФ длины М2 Мг-1 ¦:)= Z x(nlln2)W"'kK E3) жМг ДПФ длины М, E4) Короткие преобразования в E3) и E4) могут вычисляться с помощью сверток, как в D9). Такая процедура будет назы- называться алгоритмом БПФ для простых мно- множителей, графическая иллюстрация которо- которого приведена на рис. 2. На рисунке изображено преобразование длины 15, которое вычисляется с помощью пяти преобразований длины 3, как в E3), а затем трех преобразований длины 5, как в E4). Как и на рис. 1, блоки с + обозна- обозначают сложения, а блоки с х обозначают ум- умножения в сверточном алгоритме ДПФ D8). Рисунок 2 соответствует диаграммам, при- приведенным в книге Голда и Рейдера [13]. Виноград [5] предложил другую реали- реализацию E2), которая использует специаль- специальную структуру сверточных преобразований D9), что позволяет разместить все умно- умножения между входными и выходными сложениями. Когда короткое преобразова- преобразование длины Mi записывается через входные сложения /A> , выходные сложения о и умножения d(l), а преобразование длины М2 использует i B)oB) и d{2) в соответствии с D9), выражение E3) принимает вид E5) Так как X(klt кг) в E2) является преобра- преобразованием длины Мi величин у (я,, к2), что осуществляется также по алгоритму D9), то E4) принимает вид М. -1 E6) Подставляя E5) в E6),получаем ™ -° п, = 0 ' 1=0 Mj-i п3=о ' E/) Суммирования в E7) в явном виде опре- определяют операции, изображенные графически на рис. 2. Как было показано Макклелла- ном и Рейдером [9], порядок суммирова- суммирования можно изменить с тем, чтобы разместить все умножения в центре формулы. Тогда получим запись 81
Рис 3. Перестановка операций, необходимая для расположения умножений между операциями сложения Рис. 4. Реализация 15-точечного ДПФ с помощью гнездового алгоритма л(кикг)- °кЛ m-o °k,mdm .. «2)• E8) .. a -~ Как показано на рис. 3, в E8) сначала выполняются входные сложения строк x(nlt п2), затем входные сложения столбцов. Далее строки и столбцы умножаются на d^u d\2\ Наконец, производятся выходные сложения столбцов и строк. Этот алгоритм, предложенный Виноградом [5], называется гнездовым вследствие того, что все умно- умножения размещены, как показано на рис. 4, между сложениями. Число умножений, необходимых для гнез- гнездового алгоритма, в основном определяют- определяются произведением полного числа умноже- умножений для каждого множителя ДПФ, если вы- вычисления проводятся по E8). Однако мож- можно кое-что выгадать за счет того, что на ста- стадии поточечного умножения в ДПФ появля-
ются множители W°, так что в E8) оба множителя d становятся равными единице. Число умножений, которые можно не учи- учитывать, равняется произведению числа мно- множителей W0 в каждом коротком преобра- преобразовании. Таким образом, число умножений для двух множителей равно # умножений = = fiifi2 - ^1^2. где к} # умножений на W0 для ДПФ длины Mj; щ общее # умножений для ДПФ длины М/; а,- # сложений. Для трех множителей имеем # умножений =/и^Дз ~ к\кгкъ и так далее для большего числа множи- множителей. Уравнение для числа сложений основано на структуре гнездовых алгоритмов E8) и соответствует рис. 3. Горизонтальные плос- плоскости сложения на рис. 3 соответствуют преобразованиям длины М2 и общее число их равно Mi (индексы Пх як1 принимают Mi значений). Это дает Mia2 сложений. Вертикальные плоскости сложения на рис. 3 соответствуют преобразованиям длины Мх и общее их число равно ц2 (индекс / прини- принимает \хг значений). Это дает jn2ai сложений. Таким образом, для двух множителей имеем # сложений =Mta2 + fi2ai ¦ Для трех множителей имеем # сложений =М1М2а3 + ц3 [Л/,а2 ]. Таким же образом для четырех множителей # сложений =М1М2М3а4 Для числа умножений различное располо- расположение множителей не имеет значения. Напро- Напротив, число сложений зависит от порядка рас- расположения множителей. Число сложений, приведенное для гнездового алгоритма в табл. 2, соответствует оптимальному распо- расположению множителей (оно указано в таб- таблице) . Для комплексных входных данных число действительных умножений и дей- действительных сложений равно удвоенному числу операций, определяемых приведенны- приведенными выше уравнениями (умножение ком- комплексных данных производится на чисто действительные или чисто мнимые коэф- коэффициенты) . Для сравнения числа операций гнездово- гнездового алгоритма с числом операций, необхо- необходимых для алгоритмом Кули — Тьюки и БПФ для простых множителей, определим число операций, необходимых для послед- последних двух алгоритмов. Чтобы сравнение Таблица 2. Сравнение алгоритмов ДПФ ./V 30 32 126 128 252 256 315 360 504 512 840 1024 1260 2048 2520 Гнездовой алгоритм Множители 5X3X2 25 9X7X2 2' 9X7X4 2" 9X5X7 9X5X8 9X7X8 2' 5X7X8X3 2.о 9X5X7X4 2" 9X5X7X8 Умножения 68 424 848 1292 1152 1704 2592 5168 10 344 Сложения 384 3312 7128 11 286 9492 15 516 24 804 50 184 106 667 Алгорвтм БПФ с прос- простыми множителями Умножения 68 512 1024 1784 1396 2300 4244 7136 15 532 Сложения 384 2920 6344 8812 8708 13 948 23 172 40 288 86 876 Алгоритм БПФ по ос- основанию 2 Умножения 102 774 1926 4614 10 758 24 582 Сложения 490 3082 7306 16 906 38 410 86 026 83
было ближе к действительности, будем счи- считать, что в алгоритме Кули - Тьюки по ос- основанию 2 комплексное умножение вы- выполняется за три действительных умноже- умножения и не будем учитывать умножения на W°, так как и умножения на ± / . ДляЛГ = = 2M(logN=M) [14} имеем # умножений - 31 — log N- — + 2 ; # сложений = 2N log N+у [# умножений]. Для алгоритма БПФ с простыми мно- множителями используем специальные корот- короткие преобразования, предназначенные для выполнения этого алгоритма (см. первую часть табл. 1). При N= MiM2M3 вычисля- вычисляется М2М3 ДПФ длины Ми МХМЪ ДПФ дли- длины Мг и MtM2 ДПФ длины М3. Получаем # умножений = # сложений = з(в2)+М,М2(вз)] F1) для комплексных входных массивов. С по- помощью этих уравнений в табл. 2 сравнива- сравниваются три алгоритма для нескольких значе- значений JV. б. Сравнение алгоритмов ДПФ - обсуждение табл. 2 Рассмотрение табл. 2 указывает на то, что алгоритмы БПФ для простых множителей требует на 0 - 64 % больше умножений по сравнению с гнездовым алгоритмом. Напро- Напротив, гнездовой алгоритм требует на 0-28 % больше сложений по сравнению с алгорит- алгоритмом БПФ для простых множителей. Если считать, что сложение "стоит" по меньшей мере половину умножения, то стоимость умножений-сложений для алгоритма БПФ для простых множителей меньше для всех длин преобразований, приведенных в табл. 2, за исключением длин 30 и 840. Чтобы лучше понять, как роотносятся эти два алгоритма для различных наборов м множителей, выведем выражения, опреде- определяющие число операций, необходимых для получения одного выходного отсчета. Из F0) следует, что число умножений на один выходной отсчет для алгоритма БПФ для простых множителей просто рав- равно сумме числа умножений на один отсчет для каждого множителя: # число умножений на отсчет = ] Таким же образом для БПФ для простых множителей # число сложений на отсчет = X ( 77) F3) Для гнездового алгоритма число умно- умножений на отсчет приблизительно равно про- произведению числа умножений на отсчет для каждого множителя: # число умножений на отсчет ¦п (г) <«> Из E9) следует, что число сложений на от- отсчет для гнездового алгоритма равно # число сложений на отсчет = ~- + ( — 1 — Ч- Для примеров, изученных в этой статье, число операций на один отсчет приведено в табл. 3. Для к множителей и среднего числа умножений на один отсчет ц гнездовой ал- алгоритм требует цк умножений на один от- Таблица 3 Алгоритм БПФ для простых множителей N 2 3 4 5 7 8 9 0 0,33 0 0,8 1,14 0,25 0,89 a/N 1,0 2,0 2,0 3,4 5,14 3,25 5,44 Гнездовой алгоритм м/Л1 1,0 1,0 1,0 1,2 1,28 1,0 1,33 a/N 1,0 2,0 2,0 3,4 5,14 3,25 5,44
счет. Алгоритм БПФ для простых множи- множителей требует кц умножений на один отсчет. Когда цк>кц, то ц>к'1уД, алгоритм БПФ для простых множителей требует мень- меньше умножений, чем гнездовой алгоритм-. Так как *"' \fk уменьшается при увели- увеличении А: (т. е. число множителей) и уц уве- увеличиваются для дополнительных множите- множителей, которые должны быть большими, то алгоритм БПФ для простых множителей будет иметь меньше умножений на один отсчет по сравнению с гнездовым алгорит- алгоритмом по мере увеличения числа множителей. При к множителях и средней числе сло- сложений на один отсчет а алгоритм БПФ для простых множителей требует ка сложений на один отсчет. Гнездовой алгоритм требует Вход сложений на один отсчет при ц > 1. В част- частном случае N = 2Г • Ър, где р — простое чис- число, отличное от 2 и 3, и г = 1,2 или 3, оба алгоритма имеют одинаковое число сложе- сложений, так как ц = 1 для множителей 2Г и 3. С другими множителями алгоритм БПФ для простых множителей будет требовать меньше сложений. Как показано выше, разница в числе сложений будет быстро воз- возрастать по мере увеличения числа мно- множителей. Хорошая стратегия заключается в ис- использовании гнездового метода для неболь- небольшого числа множителей до тех пор, пока ц не начнет расти, а затем перейти к алго- алгоритму БПФ для простых множителей, ком- комбинируя его с преобразованиями состав- составной длины, для которых уже применен гнездовой алгоритм. 7. Программы для сравнения методов преобразования Алгоритм БПФ для простых множите- множителей использовался для программирования ДПФ со смешанным основанием, в котором короткие ДПФ вычисляются с использова- использованием метода быстрой свертки, описанного выше. Структурная схема алгоритма БПФ для простых множителей выглядит сле- следующим образом: Упорядочение множителей Вычисление строки индексов Выполнение преобразования соответствующей длины и подстановка вычисленных величин в исходный массив Проверка Проверка размерности Упорядочение результирующего массива Выход Для N = Mi • Мг • М3 имеются три измере- измерения в преобразовании. Сначала вычисляют- вычисляются Мг • М3 преобразований длины Мi. Ин- Индексы для каждого преобразования длины Mi вычисляются с помощью формулы E1), а затем отсчеты, соответсвующие этим ин- индексам, преобразуются с помощью свер- точного алгоритма ДПФ длины Мх. Резуль- Результаты этих вычислений подставляют в исход- исходный массив. Далее, если требуется еще вы- вычисление преобразований длины Mi, вычис- вычисляются новые индексы. Если вычисление всех ДПФ длины Мх закончено, програм- программа переходит к вычислению Mi • М3 ДПФ длины М2- Наконец, когда вычислены все ДПФ по всем измерениям, вектор резуль- результатов следует упорядочить. Этот шаг осуще- осуществляется выходным отображением индек- индексов по Гуду E0). На этом заканчивается вычисление преобразования длины N. Этот алгоритм БПФ для простых множи-* телей был запрограммирован на языке Фор- Фортран для IBM 370 и на Ассемблере для мик- микропроцессора 808О. БПФ для простых мно- множителей на Фортране сравнивался по ско- скорости с программой БПФ для смешанного основания, составленной Синглтоном [15], в которой применяется отображение Ку- Кули - Тьюки. Подпрограмма БПФ Синглто- 85
на на 50 % длиннее,чем подпрограмма БПФ для простых множителей, однако БПФ для простых множителей требует памяти для двух векторов длины N, а подпрограмма БПФ Синглтона позволяет проводить вычис- вычисления с памятью только для одного векто- вектора длины N. Результаты счета на время для нескольких длин преобразований приведе- приведены в табл. 4. Эти результаты получены на машине IBM 370, для которой отношение времени умножения и сложения равно 3. Для степеней 2 алгоритм взят из книги Ра- бинера и Голда [14]. Этот алгоритм может быть на 15 % медленнее алгоритма, в кото- котором хранятся все степени W. Фиксация времени выполнения подпро- подпрограмм осуществлялась с помощью счетчи- счетчика интервалов машины IBM 370. Выигрыш в процентах по времени указывает, насколь- насколько подпрограмма БПФ Синглтона медлен- медленнее, чем подпрограмма БПФ для простых множителей. Приведенные результаты в табл. 4 полу- получены при вычислении частотной характерис- характеристики 32-точечного полосового фильтра с ко- конечной импульсной характеристикой для одной реализации. Время вычислений для алгоритма БПФ для простых множителей может быть вы- Таблица 4. Время счета на ШМ 370 155, с N 32 60 64 128 210 256 315 504 512 840 1024 1260 2048 2520 Алгоритм БПФ для простых множите- множителей 0,017 0,080 0,111 0,168 0,344 0,540 1,115 Алгоритм БПФ Синглтона 0,025 0,119 0,179 0,288 0,509. 0,809 1,714 Алгоритм БПФ по основа- основанию 2 0,013 0,027 0,059 0,219 0^80 0,609 1,323 Умень- Уменьшение време- времени, % 47 49 61 71 48 50 54 числено с использованием табл. 2 для обще- общего числа операций по следующей формуле: время, мс = (NF @,052) + 0,028) N+ 0,0096 (# умножений) +0,0045 (# сложений). Входная индексация для данной программы требовала 52 мкс на отсчет для каждого измерения преобразования (NF равно числу множителей). Выходная индексация требу- требует 28 мкс на один отсчет. Сложение и умно- умножение в программе, записанной на Фортра- Фортране, требуют соответственно 4,5 и 9,6 мкс. В данной программе сдвиги, необходимые при выполнении коротких ДПФ для алго- алгоритма БПФ для простых множителей, вы- выполнялись как умножения. Подпрограмма БПФ для простых мно- множителей была также записана на Ассембле- Ассемблере для микропроцессора 8080 и сравнива- сравнивалась с подпрограммой БПФ для оснбвания 2. БПФ для основания 2 также было записа- записано на Ассемблере, причем для комплексно- комплексного умножения использовалось три действи- действительных умножения и не приводилось ум- умножение на W0. Дополнительно в програм- программе БПФ использовались предварительно вы- вычисленные значения W'N , которые храни- хранились в табличной памяти. Программа БПФ намного короче, чем программа БПФ для простых множителей. Отношение времени умножения к времени сложения для микро- микропроцессора 8080 приблизительно равно 30. ДПФ длины 252 по Гуду требует 3,20 с. БПФ длины 256 по основанию 2 требует 5,42 с. Таким образом, подпрограмма БПФ по основанию 2 на 70 % медленнее, чем суб- субрутина БПФ для простых множителей. Выигрыш получается как по умножениям, так и по сложениям. Выигрыш по умноже- умножениям составляет приблизительно 80 % от об- общего выигрыша, оставшийся выигрыш свя- связан с уменьшением сложений. 8. Выводы Сведение ДПФ к циклической свертке приводит к новым методам для вычисления ДПФ. Для коротких преобразований эти алго- алгоритмы требуют небольшого числа умноже- 86
ний и сложений, что отмечено в табл. 1 и в явном виде записано в приложении. Длинные Преобразования образуются из коротких несколькими способами, которые сравниваются в табл. 2. Был выбран алго- алгоритм БПФ для простых множителей как на- наиболее перспективный подход по несколь- нескольким причинам. Общее число умножений-сло- умножений-сложений для БПФ для простых множителей приблизительно то же, что и для гнездового алгоритма, однако общую программу для БПФ для простых множителей написать проще. Алгоритм БПФ для простых множи- множителей требует меньше памяти, чем гнездо- гнездовой алгоритм, а именно он требует мень- меньше памяти для хранения массивов данных и вероятно, меньше памяти для хранения программы. Так как алгоритм БПФ для простых множителей вычисляется неболь- небольшими длинами, то его можно быстрее осу- осуществлять на машинах с малым объемом ОЗУ. Специальная аппаратура для парал- параллельного вычисления, вероятно, также ока- окажется проще для алгоритма БПФ для простых множителей. Общая программа для алгоритма БПФ для простых множителей была записана для IBM 370 на языке Фортран и для микро- микропроцессора 8080 на: языке Ассемблера, и время выполнения программы этого ново- нового алгоритма сравнивалось с временем вы- вычисления обычного БПФ. Для машин IBM 370 сравнение проводилось с алгоритмом Синглтона для смешанного основания [15], так как алгоритм БПФ для простых факто- факторов является алгоритмом для смешанного основания. Был отмечен выигрыш по вре- времени порядка 50 % (см. табл. 4). Еще боль- больший выигрыш можно ожидать, если исполь- использовать специальную аппаратуру для вы- вычисления коротких сверток. Остается много открытых вопросов. Ка- Каким образом следует комбинировать гнез- гнездовой алгоритм и алгоритм для простых множителей для получения длинных пре- преобразований из коротких? Следует ли пре- преобразование в многомерный массив делать на уровне преобразования или следует вычислять свертки, входящие в преобра- преобразования в виде многомерных сверток? Как можно усовершенствовать схемы индекса- индексации, необходимые для этих новых алгорит- алгоритмов? Можно предположить, что продолжа- продолжающееся развитие более длинных и более эффективных алгоритмов свертки сделает вычисление ДПФ через свертки еще более привлекательным. Алгоритм 3-точечного ДПФ e,=x(l) + xB) в2=хA)-хB) Приложение тг= 0.86603 а2 1 Умножение, 6 сложений, 1 сдвиг Алгоритм 5-точечного ДПФ а, = хA) + хD) m,=0.95106as аг =хA)- хD) m2 = 153884a2 вз = хB) + хC) т3 = 0.36327 а4 в4=хB)-хC) т4 = 0 55902 я6 а5 = я2+я4 "is =5 От а6 =а, - я3 с, -/т2 Х{2) = с, + /т2 с3 = t, - т4 cs=m2-m1
а„=х@) + а7 4 Умножения, 17 сложений, 2 сдвига Алгоритм 7-точеЧИого ДПФ в, = хA) + хF) в2=хA)-хF) вз*хB) + хE) в4=хB)-хE) в5=хC) + хD) в6=хC)-хD) в7 =«1 +в3 +а5 «8 ~0\ ' «5 в9 = -из +«5 «10 = ~«1 +«3 а,, -в2 +в4 - в6 т1 = 0,16667 в? т2 = 0,79016 в8 тз =0,05S85e9 w4 =0,73430 в,о w5 =0,44096 в,, т6 = 0,34087 в,2 т7 =0,53397 в,з т8 = 0,87484 в,4 с, =х@)-т, +т4 т5 «14 ~ "«2 + «15 =x@)+«7 8 Умножений, 36 сложений Алгоритм 9-точечного ДПФ в,=хA) + х(8) а2 =хA)-х(8) вз=хB) + хG) в4=хB)-хG) в5=хD)+*E) в6=хD)-хE) я7=хC) + хF) в8^C)хF) e9 =-«i +«s « 10 ~ «1 ~ «3 «11= ~«3 **" «5 «12 =«2 " «6 «13 = «2 "*" «4 «14 = "«4 " «6 т, тг т3 т4 т5 т6 т7 т8 т9 т10 = 0,19740 «, = 0,56858 в,о = 0,37111 вц = 0,54253 в12 = 0,10026 в,з = 0.44228 в,4 = 0,86603 в8 = {«15 = 0,86603 в16 ХF) Cl сг Ci с* Сб Сп Си с9 с,о Си С12 С13 Си )-С3 +1С6 \ = C2+jCS = х@) - т7 = ffl I + W3 = /И 1 + W2 ~ С\ + ^2 ~ Сз = ?! + С3 +С4 = Cj *2 " С4 = т4 - т6 = ^5 ~ б = т4 - т5 = с8 + с9 + т8 = С8 + Сю " "!8 = -с,+с,о+т8 = х@) + в7 - т9 Я8
fllS =Я| +в3 +fls а,ь =а2 - ал +а6 8 умножений, 49 сложений, 2 сдвига Список литературы [1]J. W. Cooley and J. W. Tukey, "An algorithm for the machine calculation of complex Fourier series," Math. Comput., vol. 19, pp. 297 - 301, Apr. 1965. [2]C. Mi Rader, "Discrete Fourier transforms when the number of data samples is ptime," Proc. IEEE, vol. 56, pp. 1107 - 1108, June 1968. [3]S. Winograd, "Some bilinear forms whose multi- multiplicative complexity depends on the field of con- constants," IBM T. J. Watson Res. Ctr., Yorktown Heights, NY, IBM Res. Rep., RC 5669, Oct. 10, 1975. [4]R. Agarwal and J. W. Cooley, "New algorithms for digital convolution," presented at the IEEE Arden House Workshop, Feb. 1971; also to appe- appear in this TRANSACTIONS. [5] S. Winograd, "On computing the discrete Fourier transform," Proc. Nat. Acad. Sci. USA, vol. 73, no. 4, pp. 1005 - 1006, Apr. 1976. [6] I. J. Good, "The interaction algorithm and prac- practical Fourier analysis," /. Royal Statist. Soc., ser. B, vol. 20, pp. 361 - 372, 1958; "Addendum," vol. 22 (MR 21 1674; MR 23 A4231),pp. 372 - 375, 1960. [7] L. H. Thomas, "Using a computer to solve prob- problems in physics," in Applications of Digital Com- Computers. Boston, MA: Ginn and Co., 1963. [8] С D. Mostow, J. H. Sampson, and J. Meyer, Fundamental Structures of Algebra. New York: McGraw-Hill, 1963. [9]J. McClellan and С. М. Rader, "There is so- something much faster than the fast Fourier trans- transform," Seminar Notes, Oct. 21, 1976. 10] H. F Silverman, "An introduction to program- programming the Winograd Fourier transform algorithm (WFTA), " IEEE Trans. AcoUst., Speech, Signal Processing, vol. ASSP-25, pp. 152 - 165, Apr. 1977. 11 ] С S. Burrus, "Index mappings for multidimen- multidimensional formulation of the DFT and convolution," IEEE Trans Acoust., Speech, Signal Processing, vol. ASSP-25, pp. 239 - 242, June 1977. ДГF) ДГ(8) = [12] D. E Knuth, "Seminumerical algorithmh," in The Art of Computer Programming, vol. 2. Rea- Reading, MA: Addison-Wesley, 1971. [13] B. Gold and С. М. Rader, Digital Processing of Signals. New York: McGraw-Hill, 1969, p. 194. [14] L. R. Rabiner and B. Gold, Theory and Applica- Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1975. [15] R. С Singleton, "An algorithm for computing the mixed radix fast Fourier transform," IEEE Trafts Audio Electroacoust., vol. AU-17, pp. 93- 103, June 1969. Статья 2. Дискретное преобразование Фурье, когда число отсчетов простое число Ч. М. Рейдер Аннотация. Показано, что дискретное преоб- преобразование Фурье при условии, что длина преобра- преобразуемой последовательности N - простое число, является по существу циклической корреляцией. Это обнаруживается после переупорядочения чле- членов последовательности я ее преобразования по некоторому правилу, использующему первообраз- первообразный корень степени Л" из единицы. Этот факт позволяет вычислять ДПФ с помощью алгоритма быстрого преобразования Фурье, что приводит к увеличению скорости, несмотря на простоту N. Для вычисления ДПФ длинной последо- последовательности отсчетов сигнала следует по возможности использовать какой-либо ал- алгоритм БПФ [1, 2] • Ограничение, присущее всем этим алгоритмам, заключается в том, что число отсчетов Nдолжно представляться в виде разложения на большое число мно- множителей. В этой заметке показано, как можно применить метод БПФ для вычисле- вычисления ДПФ в случае, когда N— простое число.
1. Обозначения и определения Мы будем рассматривать только ДПФ. Пусть данные, которые надо преобразовать, представляют собой последовательность^,}, / = 0, 1 N — 1, содержащую N членов, где фигурные скобки обозначают всю пос- последовательность, а символ ai представляет /-Й член последовательности. ДПФ являет- является последовательностью {Ак} , к. = 0, 1, ... . . . , N - I, члены которой определяются формулой N — 1 Л= I а(ехр(-/Bя/Л/IЛ) A) i = 0 V ' Величины Ак являются элементами z-пре- z-преобразования конечной последовательности {д,| в N точках, равномерно расположен- расположенных на единичной окружности. Нам необходима система обозначений для записи целых чисел по модулю N. Ради краткости мы будем использовать для это- этого дополнительные круглые скобки: ((*)) =XmodN B) Если N — простое, то существует число g, не обязательно единственное, которое определяет взаимно однозначное отображе- отображение множества / = 1 N — 1 на мно- множество } = 1, 2, . . . ,N- 1, задаваемое фор- формулой /=(&*))• C) Например, пусть N= 7 и g = 3. В следующей таблице приведено отображение / в / : 2 2 3 6 4 4 6 1 В теории чисел g называется первообразным корнем для N. Таблица первообразных кор- корней для простых чисел, меньших 104, при- приведена в справочнике Абрамовича и Сте- гуна [3]. 2. Вычисление [Ак] при N простом В A) записано выражение для Ак при всех к. Выражение для Ао записывается совсем просто. "л1 D) - и поэтому вычисляется непосредственно. Для остальных Ак можно заметить, что а0 не надо ни на что умножать и поэтому оно может быть добавлено при последнем сло- сложении. Поэтому нам остается вычислить последовательность {Ак - а0} , к = 1, 2,... ... ,N- 1, определяемую как Л - во - Е о, exp / 2и \ I -j — ikj E) Переставим слагаемые в каждой сумме и изменим порядок уравнений, используя преобразования ' -ЧОг'')); Замечая, что ((gN~1)) = ((#°)), мы по- получаем - «о) = "Z o«,.,>e F) Теперь уже видно, что последовательность к)) - д0} есть циклическая корреля- корреляция последовательности {«(л,/»} и после- последовательности {ехр(-у BnlN)g' )}. Но, как показал Стокхэм [4], циклическая (или обычная) корреляция может быть вы- вычислена с большой экономией числа опера- операций с помощью алгоритмов БПФ. Можно действовать двумя способами. Так как N — простое, то N- 1 - составное число. Пред- Предположим, что оно записывается в виде про- произведения большого числа сомножителей. Тогда (N - 1)-точечная циклическая кор- корреляция G) может быть вычислена как ОДПФ произведения ДПФ {а( _ г))} и ДПФ { ехр(- / B n/N)g'}. (Можно показать, что последнее ДПФ имеет величину y/Wm всех частотах, кроме нулевой, на которой оно принимает значение — 1.) Все необходимые операции ДПФ могут быть реализованы с помощью алгоритма БПФ. N-1 Идя по этому пути, мы получаем выигрыш, только если N — 1 записывается в виде про- произведения большого числа сомножителей. Если N — 1 имеет немного делителей, как, например, в случае W= 563, эффективность БПФ будет сведена на нет тем обстоятель- 90
ством, что требуется вычислить несколь- несколько ДПФ. Однако можно действовать иначе, обойдя зто ограничение. Второй метод основан на том, что циклическая корреля- корреляция или свертка в случае, когда число сво- сворачиваемых отсчетов имеет мало делителей, может быть вычислена как часть цикли- циклической свертки с большим числом отсчетов. Выбрав число N' > 2N - 4, записываемое в виде произведения большого числа мно- множителей, мы образуем N'-точечную последо- последовательность {bf}, вставляя (N' -N+ 1) нулей между нулевым и первым отсчетами [а.. _л.| и образуем вторую TV'-точечную последовательность {с{}, периодически повторяя (N — 1)-точечную последователь- последовательность {ехр(-/ B 7гIN)g{)} до тех пор, пока не получим N' точек. Тогда ОДПФ произве- произведения ДПФ [bj] и {с{\ содержит [A((gkf - а0) как последовательность на первых N - 1 местах. Так как N' может быть выб- выбрано в виде произведения большого числа множителей даже в виде степени 2, то мож- можно использовать БПФ для вычисления ДПФ. При использовании любого из двух опи- описанных методов можно сократить вычисле- вычисления приблизительно на треть, если заранее вычислить преобразование последовательно- последовательности {ехр(— / B nlN)g')}. Первый метод требует объема вычислений, пропорциональ- пропорционального произведению N— 1 на сумму сомножи- сомножителей N - 1, а второй метод требует объема вычислений, пропорционального ТУ' logN'. Суммирование D) и добавление а0 ко всем остальным Ак могут быть осуществлены с помощью несложных дополнительных вы- вычислений, проводимых с промежуточными величинами, получаемыми при вычислении корреляции с помощью БПФ. 3. Выводы Хотя ограничение, обеспечивающее эф- эффективность БПФ и заключающееся в том, что N должно записываться в виде произве- произведения большого числа множителей, и не яв- является очень жестким, интересно выяснить, что его можно снять. С другой стороны, обнаружение того факта, что ДПФ можно представить в виде свертки, может быть по- полезным само по себе, так как это означа- означает, что одна схема с фиксированными па- параметрами может вычислить все отсчеты ДПФ. Можно ожидать, что этот результат с успехом можно применить в столь различ- различных приложениях, как формирование луча радиолокатора и конструирование модемов. Список литературы [1]J. W. Cooley and J. W. Tukey, "An algorithm for the machine compution of complex Foutiet series,1' Math. Comput., vol. 19, pp. 297 - 301, April. 1965. [2] "What is the fast Fouiiei transform?" Proc. IEEE, vol. 55, pp. 1664 - 1674, October 1967. [3]M. Abramowitz and I. Stegum, Handbook of Mathematical Functions. New York: Dover, 1965, p. 827 and pp. 864 - 869. [4]T. G. Stockham, "High speed convolution and correlation," 1966 Spring Joint Computer Conf., AFIPSProc., vol. 28, Washington, D. C: Spartan, 1966, pp. 229-233. Статья 3. Новые алгоритмы для цифровой свертки Р. К Агарвал, Дж. У. Кули Аннотация. Показано, что применение китай- китайской теорема об остатках (КТО) позволяет пре- преобразовать одномерную циклическую свертку в многомерную, которая циклична по всем измере- измерениям. Приводятся алгоритмы, которые специаль- специально разработаны для вычисления относнтельно ко- коротких сверток по каждому измерению. Перво- Первоначально такая процедура была приложена для увеличения длин сверток, вычисляемых с помо- помощью теоретико-числовых преобразований (ТЧП). Однако, как показано, этот метод может быть даже более эффективным для некоторых длин последовательностей, чем алгоритм БПФ. Неко- Некоторые короткие свертки вычисляются методами, предложенными Агарвалом и Баррасом в более ранней работе. Недавняя работа Винограда, содер- содержащая теоремы о минимально возможном числе умножений и методах достижения минимально- минимального числа умножений, открывает новые возможно- возможности вычисления коротких сверток 91
1. Введение и обзор Вычисление конечной цифровой свертки V-1 у, = 2й.- _kxk A.1) широко применяется как в универсальных ЭВМ, так и в специализированных устрой- устройствах цифровой обработки сигналов. Оно используется при вычислении авто- и взаим- взаимно корреляционных функций, при расчете и реализации цифровых фильтров с конеч- конечной импульсной характеристикой (КИХ) и с бесконечной импульсной характеристикой (БИХ), при решении разностных уравнений и при вычислении энергетического спектра. В то время как непосредственное вычис- вычисление свертки по определяющему ее выра- выражению A.1) потребовало бы числа умноже- умножений и сложений, пропорционального N2 для небольших значений N (что мы будем обоз- обозначать О(Л/2))) использование алгоритма БПФ позволило уменьшить число опера- операций до O(NlogN) при условии, что ./Уесть тепень 2. Более точно мы рассматриваем адачу, в которой ht,i = . . . —1, 0, 1, . . ., есть периодическая последовательность пе- периода N, т. е. А,- = hN+ ,-. Тогда ДПФ Хп = Хи е -2 vink/N A.2) обладает тем свойством, что ДПФ Я„, Хп и Yn, п = 0, 1, 2, . . . ,N- 1, трех последо- последовательностей hrfck я У/с, к = 0, 1,... ,N- 1, соответственно связаны соотношением Yn=HnXn,n=0, 1 ЛГ-1. A.3) Если рассматривать (Ы) как умноже- умножение вектора х на матрицу Н, элемент кото- которой, стоящий на пересечении /-й строки и к-то столбца равен й,-_?, то ДПФ A.2) является, очевидно, преобразованием, кото- которое диагонализирует Н. Таким образом, осуществляется переход в частотную об- область, в которой вычислительно сложной операции свертки A.1) соответствует N комплексных умножений в A.3). Это озна- означает что ДПФ обладает свойством циклично- цикличности свертки (СЦС). Так как алгоритм БПФ позволяет вычислять ДПФ за О (N log N) операций, то полная операция свертки тре- требует также O(N\ogN) операций. Кажущийся парадокс возникает, когда все числа в A.1) целые, что делает возмож- возможным точное вычисление свертки. Однако вычислительно эффективный метод ДПФ ис- использует промежуточные величины, т. е. си- синусы и косинусы, которые являются ирра- иррациональными числами, что не дает возмож- возможности получить точные результаты на ЭВМ. Это, как показали Агарвал и Баррас [2], является следствием того, что, для того чтобы обладать свойством СЦС, преобразо- преобразование должно иметь вид А/*1 , и=0, 1.....ЛГ-1, A.4) где в кольце, в котором проводятся вы- вычисления, а должен быть первообразным корнем Л^-й степени из единицы. В кольце целых чисел, где определено исходное вы- вычисление, не существует первообразного корня N-k степени из единицы, и то же са- самое относится и к полю рациональных чи- чисел. Напротив, е7"/-^ есть первообраз- первообразный корень N-k степени из единицы в поле комплексных чисел, и, следовательно, при применении метода ДПФ вычисления про- проводятся в поле комплесных чисел с а = = e-2ni/N Теория ДПФ и алгоритма БПФ в конеч ных полях и кольцах исследовалась Никол- соном [11] и Поллардом [12]. Примене- Применения алгоритма БПФ к преобразованиям Фурье, Уолша и Адамара, как было показа- показано, суть специальные случаи преобразова- преобразований Фурье в алгебрах над полями или коль-' цами. Поллард описал примеры, в которых ДПФ определяется над конечными полями (полями Галуа). Это привело Рейдера [13] к мысли выполнять вычисления в кольце целых чисел по модулю чисел Мерсенна Мр = IP — 1, т. е. в арифметике вычетов по модулю Мр. В этом кольце IP = 1 и, следе вательно, 2 есть первообразный корень степени р из единицы, а —2 есть первооб- первообразный корень 2р-й степени из единицы. Таким образом, определено преобразование Мерсенна, обладающее СЦС для послед»» вательностей длины N= 2p, в котором —2
заменяет e~2irl^ в качестве первообраз- первообразного корня N-A степени из единицы, а вычисления проводятся в арифметике выче- вычетов по модулю М„. Рейдер рекомендовал это преобразование, так как при использо- использовании 2 или -2 в качестве корня из едини- единицы необходимо выполнять только опера- операции сдвига и сложения для вычисления преобразования. Сверх этого понадобится лишь N умножений. Если N= p — простое, то не удается использовать алгоритм БПФ и число операций сдвига и сложения равно О GV2). Рейдер отметил также возможность применения чисел Ферма в качестве моду- модулей, что позволяет1 брать N равным степени 2 и применять алгоритм БПФ. Агарвал и Баррас [2] провели детальное исследование необходимых и достаточных условий, налагаемых на модули, длину ма- машинного слова и длины последовательно- последовательностей для теоретико-числовых преобразова- преобразований (ТЧП), обладающих СЦС и позволя- позволяющих использовать алгоритм БПФ. Их ре- результаты указывают на наличие жестких ограничений на допустимые длины после- последовательностей. Они показали, что числа Ферма Fb = 2f + 1, где t = 2by особенно Fs, принадлежат к числу наилучших модулей для ТЧП. Однако и в этом случае длина преобразуемой последовательности жестко ограничена. Она пропорциональна числу двоичных цифр, представляющих модуль. Предлагались различные способы увели- увеличения длины последовательностей, преобра- преобразуемых с Помощью ТЧП. Один из методов заключается в вычислении по системе вза- взаимно простых модулей и получении тре- требуемого результата с помощью КТО. Рид и Труонг [15] показали, как можно распро- распространить этот метод на поля Галуа над комп- комплексными целыми по модулю простых чи- <5ел Мерсенна для того, чтобы сделать воз- возможным использование алгоритма БПФ для вычисления сверток комплексных последо- последовательностей и получить большую длину последовательностей, к которым данный метод может быть применен. Но в этом слу- случае получающийся первообразный корень JV-й степени из единицы не является простым выражением, и поэтому вычисление комп- комплексного преобразования Мерсенна потре- потребует общих операций умножения. Одним из наиболее многообещающих подходов к увеличению длины обрабатыва- обрабатываемых последовательностей является пред- предложенное Рейдером [13] и рассмотренное Агарвалом и Баррасом [1] отображение одномерных последовательностей в много- многомерные и выражение свертки в виде много- многомерной свертки. Тогда преобразование, использующее числа Ферма (ПФ), реко- рекомендуется для вычисления свертки наиболь- наибольшей длины в многомерной свертке. Для вычисления сверток по другим измерениям Агарвал и Баррас предложили специальные алгоритмы, которые существенно уменьши- уменьшили число умножений. Число сложений при этом незначительно увеличивается, но при рассмотрении ТЧП мы ориентируемся обыч- обычно уже на спецпроцессор или ЭВМ, вычис- вычисления в которых предпочтительнее прово- проводить в целых числах, и операция умножения обходится много дороже, чем сложение. Агарвал и Баррас предложили просто отобразить одномерный массив в многомер- многомерный, используя лексикографическое упо- упорядочение исходного массива. Это значит, что многомерный массив является цикли- циклическим только в одном измерении, а по ос- остальным измерениям для применения алго- алгоритмов циклической свертки надо удваивать число точек. В результате такого приема по- получаем существенное уменьшение объема вычислений, вычисляя множество коротких сверток с помощью ТЧП. Было показано также, как даже без ТЧП многомерное ото- отображение позволяет вычислять свертки быстрее даже по сравнению с БПФ для N, меньших 128. Одно новшество, предложенное в этой статье, содержит развитие и совершенство- совершенствование основной идеи статьи Агарвала и Бар- раса [1], заключающейся в вычислении свертки через многомерную свертку, в которой короткие свертки по некоторым измерениям осуществляются с помощью специальных эффективных алгоритмов. Вто- Второе новшество — предложение выбирать размерности многомерных массивов в виде 93
взаимно простых чисел и Использовать КТО для отображения одномерных массивов в многомерные. Это приводит к тому, что многомерный массив становится цикличес- циклическим по всем измерениям и отпадает необ- необходимость в дополнении его нулями с целью применения алгоритмов циклической сверт- свертки. Хотя зтот метод и был предложен первоначально с тем, чтобы по измерению наибольшей длины применить ТЧП, показа- показано, что он является эффективным и без применения ТЧП. В самом деле, граничное значение N, ниже которого данный метод является более эффективным по сравнению с БПФ, значительно увеличивается и в не- некоторых случаях доходит примерно до 400. Алгоритмы, развитые Агарвалом и Бар- расом [1], в общем получались искусными, но утомительными выкладками и не дос- доставляли систематических методов для вы- выполнения более длинных сверток и не поз- позволяли сравнивать множество таких воз- возможных алгоритмов с точки зрения их оп- оптимальности. Затем Виноград [18] приме- применил теорию сложности вычислений к задаче вычисления сверток. Он получил теорему, которая определяет минимальное число ум- умножений, необходимых для вычисления свертки, и еще одну теорему, которая опи- описывает в общем виде любой алгоритм, который вычисляет свертку с минималь- минимальным числом умножений. Виноград также развил общую теоретическую схему, кото- которая может быть использована для нахожде- нахождения наилучших алгоритмов как по числу умножений/сложений, так и по сложности. Для наших целей достаточно привести эти теоремы и сравнить алгоритмы, фигури- фигурирующие в них, с алгоритмами, использу- используемыми в данной статье. В действительно- действительности в многомерном методе достаточно иметь оптимальные алгоритмы для неболь- небольших степеней простых чисел. Некоторые из них уже были рассмотрены в работе Агарвала и Барраса [1], и некоторые до- дополнительные, приведенные ниже, были соз- созданы на основе тех же самых методов. Ког- Когда работа над настоящей статьей уже была в стадии завершения, авторы познакоми- познакомились с методами Винограда и использова- использовали их для упрощения вычисления длинных сверток и создания алгоритмов, из которых можно выбирать наиболее эффективный. Оказалось, что Виноград создал много ал- алгоритмов для вычисления подобных же сверток. В дальнейшем мы покажем, как самые утомительные части вывода алгоритмов Ви- Винограда были осуществлены с помощью ин- интерактивной системы для ЭВМ SCRATCH- SCRATCHPAD [8], используемой в исследователь- исследовательском центре ИБМ им. Уотсона для логи- логических и алгебраических вычислений. Эта система не только позволила получить алгоритмы для сверток большей длины, но и упростила выбор наилучшего алгоритма из некоторого множества. Как показано, приводимые ниже алго- алгоритмы свертки могут быть просто записа- записаны в матричном виде. В результате алго- алгоритм начинает несколько походить на дру- другие преобразования, обладающие СЦС, т. е. способностью заменять операцию свертки операцией поточечного умножения в частот- частотной области. Это преобразование называет- называется "прямоугольным преобразованием", так как матрицы, определяющие его, прямо- прямоугольные, а не квадратные. 2. Алгоритмы для вычисления коротких сверток А. Алгоритм Тоома - Кука. Чтобы дать общее представление о том, как применяет- применяется теория сложности вычислений и какие алгоритмы получаются на основе этой те- теории» объясним подробно алгоритм Тоо- Тоома - Кука [9] для вычисления нецикли- нециклической свертки. При этом мы получим ал- алгоритмы с минимальным числом умноже- умножений, но обладающие большей сложностью, чем алгоритмы, рассматриваемые в следу- следующем подразделе. Во всяком случае, дан- данный подход дает алгоритмы того самого общего вида, который нас интересует. Нециклическая свертка, рассматрива- рассматриваемая ниже, имеет вид 94
minW-1,0 Длина последовательности N в данном и следующем разделах равна числу точек по одному из измерений многомерного масси- массива, упоминавшегося выше. Мы будем рас- рассматривать алгоритмы как для циклическо- циклического, так и для нециклического случаев. Пер- Первая теорема, которую мы рассмотрим, сформулирована в книге Кнута [9], но здесь дана в несколько измененном виде, чтобы походить на формулы, приведенные в следующем разделе. Теорема 1 (алгоритм Тоома — Кука). Нециклическая свертка B.1) может быть вычислена за 2N— 1 умножений. Доказательство проведем построением алгоритма. Определим производящий поли- полином ' последовательности *,•, г = 0, 1, ... . t. ,N— 1, формулой X(z) = B.2) Примем такое же определение производя- производящих полиномов H(z), W (z) и Y(z) для последовательностей Л,-, w,- и yi соответ- соответственно. Очевидно, что W(z)=H(z)X(z), B.3) где W (z) - полином степени 2N—2. Будем рассматривать Х/ и А,- как переменные, через которые хотим выразить W{. Для определения 2N - 1 величин н>,- сле- следует выбрать 2N - 1 различных чисел а,-, / =0, 1,..., 2N- 2, и подставить их вместо t в B.3), чтобы получить 2N - 1 произве- произведений mf =W(otf)=H(af)X(aj), j =€, \,...,2N-2, B.4) линейных выражений по Л ;- и Xj . Затем можно применить интерполяционную фор- формулу Лагранжа для однозначного опреде- определения полинома степени 2/V— 2 1N-1 т> i-<*k)' B-5) 1 В отличие от z-преобразования, мы пользу- пользуемся положительными степенями z. Таким образом, свертка B.1) получается ценой вычисления 2N— 1 умножений в B.4). Этим завершается доказательство теоремы 1. Алгоритм Тоома — Кука можно описать следующим образом: так как H(ptj) и X(iXj) суть линейные комбинации А,- и Xj соответственно, то B.4) можно пред- представить в матрично-векторном виде m= (Ah) х (Ах), B.6) где h их суть N-элементные векторы-столб- векторы-столбцы с элементами А,- и х{ соответственно, а х обозначает поэлементное умножение. Для вычисления вектора m используются И/(а,) и 1 а, а? B.7) 1 <*1N-1 ' ' ' " tt2jV-2 Из B.5) следует, что коэффициентами W (z) являются линейные комбинации rrij , что можно записать как W = С*т, B.8) где С* - матрица размера 2N — 1 х 2N- \. Если а,- - рациональные числа, то элемен- элементы С* также будут рациональными. Для определения циклической свертки остается только вычислить Y(z) =W(z) mod(zN- 1). B,9) Так как zN = 1 mod(z^ — 1), это просто означает, что у о = > + *М yN-l=»N-V B.10) что можно записать в виде y = Cm, B.11) где С - матрица размера Nx 2N - 1, полу- полученная из С* выполнением операций над строками С* в соответствии с B.10). В дальнейшем мы будем искать алгоритмы в общей форме B.6) и B.8) или B.11), за 95
исключением того, что мы не будем пред- предполагать умножение х и h на одну и ту же матрицу, а рассматривать более общую форму m= (Ah) х (Вх). B.12) Обычно мы будем рассматривать приклад- прикладные вопросы, в которых фиксированная импульсная характеристика h сворачивает- сворачивается с многими последовательностями х, что позволяет вычислить Ah заранее и нужные для этого операции не учитывать. Хотя алгоритмы и записаны в матричном виде, будет показано, что ради эффектив- эффективности вычислений в них не производится хранение матриц в памяти и не производит- производится умножение матриц на векторы. Ниже мы будем называть А, В и С либо матрица- матрицами, либо операторами. Если выбрать а;- целыми, то элементы А и В будут целыми, а элементы С - раци- рациональными числами. Так как Ah вычисля- вычисляется заранее, мы обычно переопределяем А и С таким образом, чтобы знаменатели С перешли в переопределенную матрицу А, а переопределенная матрица С имела бы це- целые элементы. Поэтому в методах и теоре- теоремах, приведенных ниже, считается, что дей- действие операторов В и С не связано с выпол- выполнением умножений. Единственными учиты- учитываемыми операциями умножения являются умножения, появляющиеся при поточечном перемножении массивов Ah и Вх. Однако алгоритм Тоома - Кука требует довольно больших целых коэффициентов в матри- матрицах А, В и С, и сложность вычисления с ними приближается к сложности умноже- умножения. В следующем разделе будут приведе- приведены алгоритмы с минимальным числом ум- умножений, в которых матрицы В и С — простые. Приведем пример. Пусть необходимо вычислить нециклическую двухточечную свертку н>о =hoxo\ н>! = hoxl +h1x0; н>2 =h ixt. B.13) На языке производящих полиномов это эквивалентно 96 + w2z2 = (ho+h jz) x x(xo+x,z). B.14) Полагая а;- - -1, 0, 1 при / = 0, 1, 2 в B.4), получаем mo = (й о - A i) (х0 - *i); т1 =h 0*0; щ = (й0 + h1)(x0 +xt) B.15) и в соответствии с B.5) + /я0 - \)z B.16) так что wi = Qn2 -то) 12; w2 = (mo+m2)l2-m1. B.17) Проиллюстрируем сказанное выше о пере- переносе знаменателей из матрицы С в матрицу А: отнесем множитель 1/2 к h.- и запомним предварительно вычисленные константы а0 = (А0-А,)/2; «1 -h0; a2 = {h0+hl)/2 B.18) Алгоритм записывается через а;- и переопре- переопределенные nij следующим образом: то=ао(хо-х1); тх =alXl; m2=a2(x0+xi); B.19) wo=m l; w2=m0+m2-m1. B.20) Таким образом, для вычисления свертки требуются три умножения и пять сложений, вместо четырех умножений и одного сложе- сложения, необходимых при непосредственном вычислении. Наконец, умножение двух комплексных чисел х = х0 + ixi и h = h0 + ihi дает vv0 - — н>2 + iw i • Следовательно, описанный вы- выше алгоритм указывает один из возможных методов умножения комплексных чисел с использованием трех умножений действи- действительных чисел вместо четырех. Таким образом, ясно, что можно полу- получить множество алгоритмов, отличающихся различным выбором значений af- B.4).
Например, при выборе ву = 0, 1, 2 по- получаем х =(А0 + = (h0+2hl)(x0+2x1) B.21) vf! = (-Это - w2 = (Щ> +т2)]2-тг B.22) Первый алгоритм B.18) - B.20) пред- предпочтительнее, так как у него проще коэф- коэффициенты. Б. Оптимальные алгоритмы коротких сверток. Общая форма алгоритма B-11) и B.12) имеет вид y = C(Ah) х (Вх), B.23) что говорит о схожести его с общим клас- классом алгоритмов, обладающих СЦС. Пря- Прямоугольные матрицы А и В преобразуют Ь их соответственно в многообразие боль- большей размерности, в котором и происходит умножение. Затем прямоугольная матрица С преобразует результаты умножения обрат- обратно в пространство сигналов. Агарвали Бар- рас [2] показали, что если преобразование осуществляется в многообразие той же раз- размерности, что исходные данные, и А = В = 38 G "', то элементы преобразования долж- ны быть степенями корня из единицы. До- Допуская более высокую размерность про- пространства изображений и допуская А Ф Ф В Ф С ~', можно получить большее число степеней свободы и упрощение самого пре- преобразования. В данном разделе будут приведены две теоремы Винограда [18] в виде, согла- согласованном с содержанием настоящей статьи. После этого будет рассмотрена процедура с использованием КТО, также предложен- на* Виноградом для получения оптималь- оптимальных или почти оптимальных алгоритмов. Теорема 2. Пусть Y(z)=H(z)X(z)modPn(z), B.24) rf&.Pn(z) - неприводимый полином степе- степени п, a H(z) к X(z) — произвольные по- лииемы степени п — 1 или выше. В этом случае минимальное число умножений, необ- необходимое для вычисления Y(z), равно 2п — 1. Мы отсылаем читателя к статье Виногра- Винограда [18], где можно найти доказательство этой теоремы. Отметим лишь, что алгоритм Тоома - Кука дает метод для достижения указанного минимального числа умножений. Теорема 3. Минимальное число умноже- умножений, необходимое для вычисления свертки B.9), равно 2N - К, где К — число делите- делителей N, включая 1 и N. Приводимый ниже метод нахождения оп- оптимальных алгоритмов служит доказатель- доказательством теоремы 3 и показывает, что мини- минимум 2N- К может быть достигнут. Пусть W(z)=H(z)X(z), B.25) и Y(z) =W(z) mod(zN- 1). B.26) Полином zN — 1 разлагается в произведе- произведение неприводимых полиномов с целыми коэффициентами i (z)...PdK(z). B.27) Эти множители хорошо известны в лите- литературе по теории чисел A0] под названием круговых полиномов. Для каждого дели- делителя числа N, включая dх = 1 и dk = N, су- существует единственный полином Р&. (г). Корнями полинома Pd. (z) являются перво- первообразные корни dj-Pi степени из единицы. Число таких корней равно и,- ~ ip(dA, где tp{dj ) - функция Эйлера, равная числу по- положительных целых чисел, меньших d,- и вза- взаимно простых с dj . Следовательно, степень полинома^, (г) равна и,- =<p(dj). Степень произведения равна сумме степеней полино- полиномов, что приводит к хорошо известному в теории чисел соотношению XS-?rt«WBtf. B.28) где суммирование проводится по всем де- делителям dj числа N. Свойства Pd (г), ко- которые важны для настоящего рассмотрения, заключаются в том, что они неприводимы и их коэффициенты — небольшие целые числа. На самом деле (см. [10], задача 116, с. 185), если dj не содержит более двух разных не- нечетных простых множителей, коэффициен- 97
ты равны ± 1 или 0. Наименьшее число, со- содержащее три простых множителя, равно cf = 105 = 3-5-7. Используя SCRATCH- SCRATCHPAD, мы нашли полином Pl0s (z) и оказа- оказалось, что среди его ненулевых коэффици- коэффициентов 31 равен ± 1 и два равны —2. Поэто- Поэтому можно утверждать, что приведение по mod Pd. (z) в основном сводится к прос- простым сложениям. Сведение вычисления свертки к вычис- вычислению множества более коротких сверток осуществляется с помощью КТО для кольца полиномов с рациональными коэффициен- коэффициентами. Утверждение этой теоремы в нашей ситуации сводится к тому, что множество сравнений Yj (z)=Y(z) mod Pd. (z), B.29) имеет единственное решение где Y(z) = ? Y,(z) S,(z) mod (zN - 1), B.30) B.31) Sf (z) = 0 modPdk(z),k?=j . B.32) Читатель, возможно, лучше знаком с КТО применительно к кольцу целых чисел в арифметике классов вычетов, что описы- описывается ниже в п. 3. Вычисление алгоритма свертки просто выполняется с помощью SCRATCHPAD [8] - интерактивной системы для алгебра- алгебраических вычислений, разработанной в Ис- Исследовательском центре ИБМ имени Уот- сона. Для вычисления полиномов Sj (z) все, что надо сделать, - это дать команду разложить zN - 1 на множители и затем за- записать еще трн строчки на языке SCRATCH- SCRATCHPAD для вычисления T,(z) = (zN - 1IРф); B.33) Qi(z) = [T,(z)] -l mod Pdfz); B.34) S,(z) = T,{z)Qj{z). B.35) Обращение в B.34) по определению есть решение сравнения 98 S,(z) = T,(z) Q,(z) я l mod Рф\ B.36) Уменьшение объема вычислений теперь становится очевидным, так как Yj (z) в B.30) могут быть получены по формуле Y,(z)-H,b)X,(z) mod Рф), B.37) где Hj(z) = H(z) mod Рф); B.38) X,(z) = X(z) mod Рф). B.39) Коэффициенты полинома Я,- (z)X.- (z) дают значения нециклической п.- -точечной сверт- свертки коэффициентов Яу (г) и^- (z).B соот- соответствии с B.37) Yj (z) есть результат при- приведения этого полинома по модулю^, (z). Алгоритм Тоома — Кука показывает, как можно вычислить Hj (z)Xj (z) путем умно- умножения линейных комбинаций коэффициен- коэффициентов hi полинома Я;- (z) на линейные комби- комбинации коэффициентов х/. полинома Xj (z). Эти коэффициенты в свою очередь суть ли- линейные комбинации hj и х;- соответствен- соответственно. Множество произведений, образованных таким образом, имеет внд B.6): m= (Ah) х (Вх). Подставляя Yj (z) в B.30), соответ- соответствующее КТО, получаем формулы для yj в виде линейных комбинаций указанных вы- выше произведений. Таким образом, получа- получаем выражение B.11): у = Ст. Минимальное число умножений, необхо- необходимое для вычисления, равно в соответ- соответствии с теоремой 2 2rij — 1, так что, сумми- суммируя по/ и используя B.28), получаем /¦1 B.40) Этим завершается доказательство теоре- теоремы 3. Из сказанного выше ясно, как вычисле- вычисление свертки может быть описано в виде операции с полиномами. При этом КТО для полиномов используется для сведения зада- задачи вычисления iV-точечной циклической свертки, которая в полиномиальной записи имеет вид Y(z) = H{z) X(z) mod (zN - 1), B.41)
к задаче вычисления К сверток меньшей длины Таблица 1. Теоретическое минимальное чис- число умножений для свертки и число умножений и сложений для алгоритмов, приведенных и при- Y,(z)=Hi(z)X,(z)modPdfiz). B.42) „оженнн А Чтобы вычислить Hj {z)Xj (z), можно ис- использовать алгоритм Тоома — Кука, другие систематические процедуры или даже руч- ручной подбор. Вследствие сложности матриц А, В и С имеет смысл получать алгоритмы, лишь близкие к оптимальным, для вычис- вычисления небольших сверток B.42), хотя по- понятно, что важно знать минимальное число умножений и как это число может быть достигнуто в соответствии с описанной вы- выше теорией. Во многих случаях алгоритмы, предложенные Агарвалом и Баррасом [1], как раз и близки к оптимальным, хотя это и не было известно в то время, когда они были написаны. Очевидно, что вычисления, необходимые при определении операторов А, В и С утоми- утомительны и чреваты возможными ошибками. Поэтому SCRATCHPAD [8] дает неоцени- неоценимый эффект при выводе и проверке сво- свободных от ошибок выражений для после- последовательности вычислений промежуточных величин, необходимых для выражения окончательных результатов. Разработчики SCRATCHPAD добавили несколько операто- операторов к языку, что сделало всю процедуру совсем простой. Первоначально SCRATCH- SCRATCHPAD использовался интерактивно для раз- разработки основных положений и выражений, которые способствовали минимизации чис- числа умножений и получению формул, удоб- удобных для программирования. Затем полу- полученное множество команд прогонялось в пакетном режиме для получения альтерна- альтернативных формул для каждого N и для пере- перехода к большим N. Для применения SCRA- SCRATCHPAD для описанных выше вычислений все, что надо делать, - это определять ре- рекурсивно различные полиномы и обращать- обращаться к, печати различных формул в соответ- соответствующих местах программы. Программа предусматривала распечатку следующих выражений: 1) У. через xi (формулы для h^ иден- идентичны) ; N 2 3 4 5 6 7 8 9 10 11 12 К 2 2 3 2 4 2 4 3 4 2 6 2N-K 2 4 5 8 8 12 12 15 16 20 18 М 2 4 5 10 8 19 14 22 А 4 11 15 35 44 72 46 98 2) у*, через произведения hi и л/, и 3) j/j- через _/. . Прочие выражения, такие как множите- множители z" — 1, также выводиться на печать, но не являются необходимыми для описания окончательных алгоритмов. Число операций для некоторых сверток, полученных описанными выше методами, приведено в табл: 1, где К — число делите- делителей N, 2N - К — минимальное число умно- умножений, необходимых для вычисления АГ-то- чечной свертки, а М и А — число умножений и сложений соответственно, необходимых при выполнении алгоритмов, приведенных в приложении А. В. Пример для N - 4. Вывод оптимально- оптимального алгоритма циклической свертки прове- проведем теперь подробно в соответствии с ме- методами раздела 11 - Б. Свертка определя- определяется как Л- ?*<-***. /-0,1,2,3. B.43) fc-0 Через полиномы, коэффициентами которых являются сворачиваемые последовательно- последовательности, свертка записывается как Y(z) = H(z) X(z) mod (г4 - 1). B.44) Делителями 4 являются d.- = 1, 2 и 4, так что неприводимые множители z4 — 1 — это круговые полиномы
Вычислим Tt(z) - (z + 1) (z* + 1); Г2(г)=(z - 1) (z* + 1); f,(z)=z'-l B.46) же необходимо три умножения, но мень- меньше операций сложения величин, зависящих от переменных я:,- и j/f-. В результате необ- необходимо вычислить пять произведений: т0 =Аохо; Gj(z) = [ВД]"'mod (z+l) = -;|; Сз(г) - (Г,(г)] -' rood (г2 + 1) = -1 • B.47) что дает Приведенные полиномы имеют вид B.48) B.49) Я3(г) = hi + А?г = (Ао - А2) + (А, - Аэ)г. B.50) Как было указано выше, верхний индекс / соответствует коэффициентам полино- полиномов, приведенных по moAPd. (z). Выра- Выражения для *)(z) = AT(z) mod Л,,(г) B.51) имеют точно такой же вид, как и для #;- (z). Выражение У)(г) = ЯДг) ДГДг) modPdf(z) B.52) записывается через коэффициенты Н^ (z) (z) следующим образом: y\'h\x\-h\x\, yi = hlxUh\xl B.53) Вычисление Y3 (z) в точности совпада- совпадает с комплексным умножением и выполня- выполняется как если бы z = у/^Т. Следовательно, алгоритм Тоома — Кука может быть исполь- использован для вычисления у\ и у\, что дает три умножения вместо четырех. В данном при- примере, однако, мы используем несколько из- измененный алгоритм умножения комплекс- комплексных чисел, для выполнения которого так- такV>4 = (h0 +A])xi. B.54) Через эти произведения величины у1., из B.53) записываются как ^0 MWlj - /Я4; 1 - »lj. >f B.55) Полиномы У,- (z), коэффициенты кото- которых приведены в B.55), подставляют в полиномиальное выражение КТО П*) =?*/(*) S/(*)> B.56) для получения окончательного результата Уо ~ («о + »»i)/4 + (m2 - /я4)/2; yi=(m0- m,)/4 + (m2 - т3)[2; ^2 = (/я0 + /я,)/4 - (/я2 - /я4)/2; ^3 = («o-«i)/4-(m2-m3)/2. B.57) Как было сказано выше, мы считаем, нто h,- фиксированы и многократно использу- используются для различных последовательностей Xj. В соответствии с этим мы упрощаем вычисления, переопределив т^ и отнеся множители 1/2 и 1/4 к А,-. Полученный ал- алгоритм, записанный в общем виде B.11) и B-12), приведен в приложении А. Алгоритмы для N = 2,3, 4, 5, 6, 7, 8 и 9 приведены в приложении А, где показана группировка членов с помощью круглых скобок, что, как можно надеяться, миними- минимизирует число сложений. С помощью приве- приведенного выше подхода для вычисления свертки при iV = 4, не считая действий, свя- связанных с вычислением, требуется пять ум- умножений и 15 сложений по сравнению с
16 умножениями и 12 сложениями, необ- необходимыми при непосредственном вычисле- вычислении по формуле B.43). Любопытно отме- отметить, что если в круглые скобки заключают- заключаются промежуточные величины, соответству- соответствующие коэффициентам приведенных мно- многочленов, то получается такая группировка сложений, которую мы ни в одном случае не смогли улучшить. Однако мы Не знаем ни одной теоремы о минимальном числе сложений или систематических процедур для уменьшения числа сложений. 3. Составные алгоритмы А. Алгоритм для двух множителей. Для больших значений N оптимальные алгорит- алгоритмы, т. е. алгоритмы, требующие минималь- минимального числа умножений, становятся доволь- довольно сложными. Некоторые элементы матри- матрицы С в B.23) становятся слишком больши- большими, чтобы выгодно было заменять умноже- умножение на них последовательным сложением. Кроме того, если желательно писать общую для многих N программу, целесообразно выражать свертку в виде многомерной Свертки, в которой произведение отсчетов По каждой размерности равно N Покажем, что при условии, что множите- множители N взаимно простые, для преобразования одномерного массива в многомерный мож- можно воспользоваться КТО для целых чисел по mod N вместо метода преобразования Одномерного массива в многомерный, пред- предложенного Агарвалом и Баррасом [1]. В результате такого преобразования мы по- подучаем многомерную свертку, периодичес- периодическую по всем измерениям, и не возникает не- необходимости дополнения массивов нулями1. Ниже приведено описание отображения с помощью КТО и получаемого при этом Общего алгоритма для составных N. Описа- Описание составлено таким образом, чтобы лег- Это отображение было использовано Гу- Гудом [7} и Томасом для выражения ДПФ в виде многомерного ДПФ, что приводит к уменьшению объема вычислений. Примеры применения этого отображения приведены в статье Кули, Льюиса йУелча [5]. ко было составлять программы для вычис- вычисления циклических сверток для всех N, представимых в виде произведения задан- заданного множества взаимно простых множи- множителей. Эти множители равны длинам после- довательностей, для которых имеются опти- оптимальные алгоритмы. Рассмотрим снова задачу вычисления цик- циклической свертки Л- Z! **-***• C-1) где N— составное число: C.2) с взаимно простыми множителями г, и гг. Это позволяет определить однозначное отображение взаимно C-3) где i'i и г'г определяются из сравнений ij=imodrj, 0<ij<rj. C-4) КТО утверждает, что существует единствен- единственное решение сравнений C.4), которое име- имеет вид где 1 mod ry, 1 modr3, j}»Omodr,. C.6) C.7) Выражение C.7) означает, что для некото- некоторых <7i Yiq2 C.8) что с учетом C.6) приводит к ««¦Vi*,. C.9) где qx является величиной, обратной к г2 по mod r,, a q2 - обратной величиной к г, по mod r2.
Пусть каждый из векторов у, h их, сос- состоящий из отсчетов у^, h^ и jc,- соответ- соответственно, индексируется с помощью пары индексов (/1( /2). Это можно рассматривать как отображение одномерных массивов у(, Д j и х,-, i = 0, 1 N— 1, в соответству- соответствующие двумерные массивы согласно C.4) и C.5). Пусть элементы векторов у, h и х лексикографически проиндексированы по I*! и /2- Подставляя C.5) вместо i и соот- соответствующее выражение для к через (ki, к2) в уравнение свертки C.1), получаем *,-0 V*,,!,-*,**,.*,, (зло) где индексы Л,- ,- берутся по mod rx и mod r2 соответственно. Векторно-матричная запись имеет вид = Нх, C.11) где индекс у, который также является ин- индексом строк Н, есть последовательность пар (ki, кг), расположенных в лексико- лексикографическом порядке. Хотя у, h и х явля- являются векторами, иногда при объяснении некоторых операций удобнее представлять их себе в виде двумерных массивов с ин- индексами строк i, или i2 и индексами столб- столбцов kt или кг- Выражение C.10) представ- представляет двумерную свертку, в которой одно измерение имеет длину г,, а второе - дли- длину г г- Ниже будет показано, что эта двумер- двумерная циклическая свертка может быть вы- вычислена с помощью двумерного преобразо- преобразования, обладающего свойством СЦС. Как двумерное преобразование оно может быть представлено в виде прямого произведения двух одномерных преобразований облада- обладающих СЦС для длин Гх и г2- Предполо- Предположим, что оба эти преобразования принадле- принадлежат к прямоугольному виду, описыва- описываемому B.23). Пусть матрицы А.(, В( и d представляют множество прямоугольных матриц размер- размерностей М( х Г(, Mi х rt и Г( х М( соответ- соответственно, обладающих СЦС для длины г, и требующих Mi умножений для вычисления свертки. Соответственно А2, В2 и С2 пред- представляют множество прямоугольных мат- матриц размерностей М2 х г2, М2 х г2 и г2 х М2 соответственно, обладающих СЦС для дли- длины г2 и требующих Мг умножений. Тогда двумерное прямоугольное преобразование, обладающее СЦС, может быть выведено следующим образом. Будем пока рассматривать h и х как двумерные массивы. Суммы по кх в C.10) есть для каждого фиксированного i2 и к2 свертка столбца i2 — k2 массива h со столб- столбцом кг массива х. Каждая из этих сверток может быть вычислена с помощью описан- описанных выше преобразований, что приводит к записи Л..'." Е Е с/„»,я»„|,-*1'г»,*1, C.12) fc,-0 л,-О где к.'О C.13) C.14) Верхний индекс 1 относится к элемен- элементам Ац В, и Ci. Изменяя порядок сумми- суммирования в C.12), получаем сумму по п1 сверток по кг последовательностей Н'п % с Х'п к при к2 = 0, 1, . . . , г г - 1. Эти свертки могут быть вычислены с помощью г2 -точечного прямоугольного преобразова- преобразования, что приводит к записи Af,-1 Af,-1 C.15) где l',=0 G^0 - ' ' 2 1 "I I A«,.i,A»,.i,hi,.t,; 0 (
В операторном виде вычисления записы- записываются как' y = C1C2[(A2A,h)x (В2В,х)].C.18) Запись В2В,х означает, что сначала вычисля- вычисляется преобразование Bi столбца х, а затем — преобразование В2 строк полученного при этом двумерного массива. Так как порядок расположения операторов соответствует по- порядку суммирования, то они коммутиру- коммутируют. Однако порядок расположения опера- операторов определяет размеры промежуточных массивов, число операций сложения и ор- организацию программы. Все эти вопросы рассматриваются в п. 5А. Таким образом, мы показали, что состав- составной алгоритм двумерного преобразования, описываемый C.18), обладает СЦС. Отображение результирующего массива У; j в одномерный массив >",- в соответ- соответствии с КТО C.5) дает одномерную сверт- свертку C.1). Поэтому преобразование C.18) в целом обладает одномерным СЦС по от- отношению к одномерным последовательнос- последовательностям yj,hj nxj,i =0,1 TV-1. Б. Число операций для случая двух мно- множителей. Как было отмечено в п. 2А, матри- матрицы не запоминаются и не умножаются как таковые. Вместо этого, чтобы уменьшить объем памяти и число операций, вычисле- вычисления проводятся по явным формулам, ко- которые располагаются таким образом, чтобы можно было запоминать и вторично исполь- использовать промежуточные результаты. Некото- Некоторые алгоритмы, записанные в такой фор- форме, приведены в приложении А. Мы еще раз отмечаем, что по предположению одно и то же h используется для многих различных векторов х и поэтому относящиеся только к h вычисления не учитываются. Рассмотрим размеры получаемых масси- массивов. Так как В( имеет4 размерность Mi x тх, 1 Уравнение C.18) может быть записано в ви- виде кронекеровского произведения матриц У= (С, в Cj[(A2® A,h) X (В2 ® В,х)], где ® обозначает кронекеровское произведение, а X - поэлементное умножение. Однако такая за- запись практически не испоьзуется и может вызвать недоумение, поэтому она в статье не применяется. а х - размерность гх х г2, то В, х имеет раз- размерность Mi х г2, т. е. столбцы этого масси- массива имеют длину Mi, и в общем случае пли- нее, чем столбцы х. Подобным же образом действие оператора В2, который имеет раз- размерность М2 х г2, приводит к удлинению строк, и в результате мы получаем массив X = В2 В i х размерности Mi x M2. Подобным же. образом С(С2 есть оператор, приводя- приводящий к уменьшению размерности массива, на который он действует. Число умножений, таким образом, равно числу элементов в массиве X: M(ri,r2)=MiM2 C.19) и, очевидно, не зависит от упорядочения операторов. С другой стороны, число сложе- сложений зависит от порядка расположения опе- операторов. Пусть Ав. и Ас. - число сложе- сложений, получаемое при действии операторов By- и С,- соответственно в одномерной свертке. Пусть C.20) Так как при действии оператора В! на каж- каждый из г2 столбцов массива х необходимо выполнить Ад операций сложения, то все- всего для вычисления В,х требуется/^ г2 сло- сложений. Оператор В2 действует наМ.\ строк массива В^ размерности М, xf2, что тре- требует Ав Mi сложений. Оператор С2 дей- действует на Mi строк массива Y = НХ, что тре- требует Ас Mi сложений, а оператор Ci дей- действует на г2 столбцов C2Y, что требует Ас г2 сложений. Итого необходимо вы- выполнить ^,М, C.21) операций сложения. Непосредственно мож- можно убедиться, что расположение С;- в поряд- порядке С2 С, приводит к A\ru r2) =ABi C.22) операциям сложения. Это выражение слож- сложнее, чем C.21), и в этом случае труднее минимизировать число сложений. Обе фор- ¦т
Таблица 2. Величины ГС)) = Щ *-rj)/Aj ri 2 3 4 5 T(rf) 0,000 0,091 0,066 0,142 ri 6 7 8 9 ГСу) 0,045 0,166 0,130 0,131 мулы проверялись по счетчику операций, и только в одном случае выражение C.22) дало меньшее число сложений. Поэтому условимся располагать операторы С.- в об- обратном порядке по отношению к порядку расположения операторов В.-, чтобы исполь- использовать C.21). Как уже отмечалось, такое упорядочение также упрощает программи- программирование. Рассмотрим теперь изменение порядка сомножителей. Если преобразования снача- сначала вычисляются по индексу 2, а затем — по индексу 1, общее число сложений равно ЛЬг.гд-АгП+АМ. C.23) Чтобы упорядочение г(, г2 требовало мень- меньше сложений, необходимо, чтобы A(ri,r2)<A(r2,rl) или откуда следует Mi - At М2 - т2 A2 C.24) Поэтому первым следует осуществлять преобразование, для которого величина C.25) меньше. Величины Т(г) для алгоритмов, приведенных в приложении А, содержатся в табл. 2. В. Общий алгоритм для нескольких мно- множителей. Одномерная циклическая свертка может быть вычислена как многомерная циклическая свертка при разложении N в произведение более двух взаимно простых множителей ту: Лг = г,г2-- г,. C.26) Многомерное отображение индексов опре- определяется как it з / mod rt, 0<i,<rh /-1,2,---,/. C.27) а обратное отображение — как i з Mi + i2s2 + • • ¦ + i,s, modN, C.28) где C.29) и где q,- удовлетворяют сравнениям q/(Nlrj) в l mod т,. С помощью ^-мерного отображения одно- Мерная циклическая свертка может быть записана как 7-мерная циклическая сверт- свертка в виде, обобщающем C.10); г-мерная циклическая свертка может вычисляться с помощью /-мерных преобразований, облада- обладающих СЦС. Это /-мерное преобразование есть прямое произведение t одномерных преобразований, обладающих СЦС для длин Т\,гг, . . . ,rt соответственно. Вычисление /-мерного преобразования может быть вы- выполнено как простое обобщение двумерно- двумерного преобразования C.18) в виде y = C1C,...Cr[(Ar..AaA,h)x х(В, ...В2В,х)]. C.30) Рассматривая х как /-мерный массив с ин- индексами ki,k2, ¦ • ¦ > kt, мы обозначаем че- через Bf . . . В2В,х /-мерное прямоугольное преобразование х. В этом преобразовании сначала вычисляется гх -точечное преобразо- преобразование BiX по первому индексу кх при фик- фиксированных значениях всех остальных ин- индексов. Отметим, что если первое преобра- преобразование есть преобразование Фурье или ТЧП, то BiX будет иметь ту же размерность, что и х. Однако если Bi есть прямоугольное преобразование, то BiX будет иметь боль- большую размерность по первому измерению. Затем вычисляется г2 -точечное преобразова- преобразование по индексу к 2 при фиксированных значениях всех остальных индексов, что приводит к увеличению размерности по вто-
рому измерению. Обратная операция с по- помощью Су проводится таким же образом и, как было описано выше для двумерного случая, операторы Су расставляются в об- обратном порядке. Умножение на С.- умень- уменьшает длину массива по к: -му измерению. Вычислительные характеристики /-мерного преобразования легко получить, обобщая результаты для двумерного случая. Г. Число операций общего алгоритма для нескольких множителей. Пусть As и Mj — число сложений и умножений соот- соответственно необходимых для вычисления одномерной свертки длины г-. Тогда число умножений, необходимых для вычисления /-мерной циклической свертки, равно Щгиг2, ¦ ¦ • ,г,) = М а число сложений равно -Л/,, C.31) - ¦ ¦ rt Как и выше, упорядочение аргументов А (. • • ) обозначает порядок, в котором вы- вычисляются преобразования. Обратные пре- преобразования вычисляются в обратном по- порядке. Как и в двумерном случае, число сложений зависит от порядка, в котором вычисляются преобразования. Довольно легко показать, что упорядо- упорядочение множителей гх, г2, ¦ ¦ ¦ , гт, приводя- приводящее к минимизации числа сложений, есть обобщение двумерного случая, рассмотрен- рассмотренного выше- Таким образом, упорядочение должно проводиться в соответствии с вели- величинами C.33) т. е. так, чтобы когда *</• C-34) В приложении А приведены в явном или неявном виде матрицы А, В и С для основ- основных алгоритмов Коротких сверток. Эти алгоритмы служат в качестве строительных блоков для вычисления длинных сверток с помощью перехода к многомерным мас- массивам. В табл. 1 приведено число умноже- умножений и сложений, необходимых для осуще- осуществления этих основных алгоритмов. Для получения алгоритмов для больших N из этого списка выбираются взаимно простые множители. В табл. 3 приведено число ум- умножений и сложений, необходимых для вы- Таблица 3. Число умножений и сложений иа одну выходную точку для свертки, использующей сос- составные алгоритмы, образованные из прямоугольных преобразований, приведенных в приложения А N 6 12 18 20 30 36 60 72 84 120 180 2Д0 360 420 504 840 1260 2520 Множители 2,3 4,3 2,9 4,5 2,3,5 4,9 4,3,5 8,9 4,3,7 3,8,5 4,9,5 2,3,5,7 8,9,5 4,3,5,7 8,9,7 3, 8, 5, 7 4, 9, 5, 7 8,9,5,7 Общее число умножений 8 20 44 50 80 ПО 200 308 380 560 1100 1520 3080 3800 5852 10 640 20 900 58 520 Общее число сложений 34 100 232 250 450 625 1200 1786 2140 3320 6975 8910 19 710 22 800 34 678 63 560 128 025 359 730 Умножен вя ва один отсчет 1,33 1,67 2,44 2,50 3,67 3,06 3,33 4,28 4,52 4,67 6,11 7,24 8,56 9,05 11,61 12,67 16,59 23,22 Сложения на один отсчет 5,67. 8,33 12,89 12,50 15,00 17,36 20,00 24,80 25,48 27,67 38,75 42,42 54,75 54,29 68,81 75,67 101,61 142,75
Таблица 4. Число умножений и сложений на одну выходную точку для свертки, использующей составные алгоритмы БПФ (по основаниям 2,4,8) N 4 8 16 32 64 128 256 512 1024 2048 4096 Вещественные ум- умножения на один отсчет 2,00 2,50 4,25 5,12 6,06 8,03 9,01 10,00 12,00 13,00 14,00 Вещественные сложе- сложения на один отсчет 7,00 9,5(Т 12,37 14,81 17,53 20,51 23,00 25,75 28,75 31,25 34,00 Примечание. Предполагается, что для вы- вычисления комплексного БПФ производятся два вещественных преобразования. числения одномерных сверток с помощью многомерных прямоугольных преобразова- преобразований. Как в табл. 1, так и в табл. 3 предпо- предполагается, что преобразование h считается предварительно и хранится в памяти. Стол- Столбец множителей N приведен в том порядке, в котором проводится преобразование х. При этом выбран такой порядок, который обеспечивает минимальное число сложений. Для сравнения в табл. 4 приведено число умножений на один отсчет, необходимых для вычисления циклической свертки дли- длины N= 2f с использованием алгоритма БПФ. Для БПФ используется эффективный алго- алгоритм по основанию 2, 4, 8, который учиты- учитывает также то обстоятельство, что входной массив действительный. 4. Применение преобразования с числами Ферма Числовое преобразование Ферма (ЧПФ) дает возможность эффективно и без оши- ошибок вычислять циклические свертки. Для вычисления ЧПФ требуется 0(NlogN) дво- двоичных сдвигов и сложений и не нужны ум- умножения. Единственными умножениями, не- 106 обходимыми при осуществлении ЧПФ, явля- являются умножения результатов преобразова- преобразования. Этот метод очень эффективен при вы- вычислении циклических сверток, но, к сожа- сожалению, максимальная длина преобразуемой последовательности для ЧПФ пропорци- пропорциональна длине слова, используемого в ма- машине. Агарвал и Баррас [2] показали, что практически эффективным для этой цели является число Ферма Fs = 232 + 1 и что ЧПФ по Fs может осуществляться на ЭВМ с 32-разрядной сеткой. Для такого выбора числа Ферма максимальная длина преобра- преобразования равна 128. Для вычисления цикли- циклической свертки последовательности длиной более 128 мы записываем одномерную последовательность в виде многомерной, используя КТО отображение, описываемое C.4) и C.5). Длина по первому измерению выбирается равной 128, а длины по осталь- остальным измерениям выбираются в виде прос- простых нечетных чисел. Таким образом, 7V= 128r2r3 •••/-, D-1) Для ЧПФ матрицы А, В B.23) равны С = = А, а их размерность 128х 128. Так, для ЧПФ М = г, из C.24) следует, что пер- первым преобразованием должно быть ЧПФ длины 128. ЧПФ вычисляется для каждого из индексов по другим измерениям, а за- затем вычисляются прямоугольные преобра- преобразования по всем остальным измерениям. Затем преобразования h и х поточечно умножаются и осуществляются обратные преобразования по всем измерениям в об- обратном порядке, так что последним обрат- обратным преобразованием является ЧПФ. Все вычисления, включая и прямоугольные пре- преобразования, следует проводить по F5. Общее число умножений равно М= D-2) а число ЧПФ длины 128 и обратных ЧПФ равно F=2rjr3 •••/>. D 3) Число сложений сверх сложений, необходи- необходимых для вычисления ЧПФ, равно
Таблица S- Объем вычислений для свертки, использующей числовое преобразование Ферма в многомерных алгоритмах N 128 384 640 896 1152 1920 Множители N 128 X 1 1.28X3 128X5 128X7 128X9 128 X ЗХ 5 Умножения на один отсчет 1,0 1,33 2,0 2,71 2,44 2,66 Дополни- Дополнительные сло- сложения на один отсчет 0,00 3,66 7,00 10,28 10,88 13,00 /1A28, г2, ¦ ¦ •, rt) = 128Л0-2, • - + ЛМ#, ••¦*,.,>«,). D.4) В табл. 5 приведено число операций, необ- необходимых для многомерного вычисления циклической свертки, с использованием ЧПФ и прямоугольных преобразований. Данные табл. 5 следует сравнить с данны- данными табл. 3 и 4, в которых приведен объем вычислений, необходимых для вычисления сверток с помощью прямоугольных преоб- преобразований и БПФ. Сравнение проводить трудно, так как эффективность ЧПФ зави- зависит от аппаратурной реализации, необходи- необходимой для выполнения преобразований. Одна- Однако приведенные данные позволяют судить, что можно выиграть, если имеется машина с такой аппаратурой. Уменьшение числа умножений значительное. Например, алго- алгоритм БПФ со» смешанным основанием [16] для 1024 точек требует 12 умножений на отсчет для вычисления циклической сверт- свертки, а ЧПФ, используемое с описываемыми алгоритмами для составного 896 точечного преобразования, требует только 2,71 умно- умножения на один отсчет. Для сравнения сос- составное прямоугольное преобразование для 840 точек требует 12,67 умножения на один отсчет. Для N = 1920 мы имеем 2,66 умно- умножения на отсчет для метода ЧПФ, тогда как для N = 2048 алгоритм БПФ требует 13 ум- умножений на отсчет. 5. Прочие сведения А. Программирование алгоритма и ма- машинная организация. Рассмотрим процесс вычислений в матричной записи. Двумер- Двумерная свертка может быть записана C.10) в виде y = h**x, E.1) где ** означает, что есть две свертки h с х: первая — свертка столбцов, вторая — свертка строк. Применение алгоритма пря- прямоугольного преобразования к rt -точечным сверткам столбцов приводит к выражениям C.12) - C.14), которые занишем теперь в операторном виде: H'=A,h; E.2) Х'*В,х; E.3) Y' =Н' х*Х'; E.4) Y = C,Y'. E.5) Выражения E.4) и E.5) определяются в результате изменения порядка суммирова- суммирования в C.12). Знак х* в E.4) можно интер- интерпретировать как поточечное (поэлемент- (поэлементное) умножение по отношению к первому индексу и свертку по отношению ко второ- второму индексу массивов Н' и X', т. е. строк Н' с соответствующими строками X'. Эти свертки вычисляются с помощью г2-точеч- г2-точечного алгоритма свертки, который может быть записан: = А2Н'; = В2Х'; = HxxX; E.6) E.7) E.8) Y' =C2Y, E.9) где хх в E.8) обозначает поточечное произ- произведение всех элементов. Приведенная опера- операторная запись может быть использована для определения структуры программы, осуществляющей алгоритм. Такая програм- программа будет осуществлять операции, записан- записанные в E.2) — E.5), в указанном порядке. По существу это программа rt -точечной свертки, оперирующая с векторами. При
вычислении E.4) эта программа будет вычислять Свертки, выполняя операции, описанные E.6) — E.9), в указанном по- порядке. Последние вычисления могут осу- осуществляться подпрограммой, имеющей в точности такую же структуру, как и E.2) — E-5). По существу это тоже подпрограм- подпрограмма г2 -точечной свертки, оперирующая с век- векторами. На шаге E.8) производится по- поточечное умножение элементов. Если есть третий множитель, E.8) будет содержать свертку и будет вычисляться с помощью еще одной подпрограммы свертки, опери- оперирующей с векторами. Таким образом, описанная процедура может повторяться на стольких уровнях подпрограмм, сколько имеется множителей в N. Для сверток действительных последова- последовательностей, для вычисления прямоугольно- прямоугольного преобразования требуется только дей- действительная арифметика, в то время как для БПФ необходима комплексная арифме- арифметика. При этом сложность аппаратурной ре- реализации может быть существенно снижена. Может Показаться, что отображение КТО одномерной последовательности в много- многомерный массив может потребовать значи- значительного объема вычислений. Однако это не так. Чтобы преобразовать одномерную пос- последовательность длины Nb t-мерный массив с размерностями rt,rl2 rt (в соответ- соответствии с C.27), мы отводим f-адресных ре- регистра, которые дают адрес f-мерного мас- массива для каждого отсчета. По мере после- последовательного поступления данных все ад- адресные регистры увеличивают свое содер- содержание на единицу. Эти адресные регистры организованы таким образом, что как только содержание / -го регистра становит- становится равным Tj , он автоматически сбрасыва- сбрасывается в нуль. Использование этой схемы не требует дополнительных вычислений для ад- адресного отображения. После вычисления свертки вывод данных из машины в соот- соответствии с C.28) потребует большого объе- объема вычислений. Мы можем обойти эту труд- трудность, выводя данные последовательно в ви- виде одномерной последовательности у. Снова мы используем описанную выше схему для получения адреса в f-мерном массиве, ука- указывающего место расположения выходного отсчета. Как для ввода, так и для вывода используется отображение C.27), которое значительно проще. Если последователь- последовательность h фиксирована, то прямоугольное преобразование h может быть вычислено предварительно и храниться в памяти, кото- которая осуществляет только считывание (ПЗУ). Для основных алгоритмов коротких сверток матрицы А, В и С очень простые и требуют небольшого числа сложений. Далее, как отмечено выше, прямоуголь- прямоугольное преобразование По отношению к одно- одному индексу выполняется для всех значений других индексов, и, следовательно, есть векторная операция, которая может осуще- осуществляться параллельно или каскадно для всех элементов вектора. Это удобно осуще- осуществлять на матричном процессоре, в кото- котором могут быть даже предусмотрены спе- специальные схемы для вычисления прямо- прямоугольных преобразований. Можно также применить двухуровневую организацию памяти, так как вычисление включает в себя многомерные преобразова- преобразования. Запоминающее устройство с большим периодом записи — считывания хранит все данные, а ЗУ с коротким периодом запи- записи - считывания используется для вычисле- вычислений по части данных в текущий момент времени (обычно по строке или столбцу). Б. Границы для промежуточных резуль- результатов. Если многомерная свертка выполня- выполняется в модулярной арифметике (например, в случае использования ЧПФ), то можно не беспокоиться о промежуточных вели- величинах до тех пор, пока выходные величины корректно ограничены. Но если использу- используется обычная арифметика, все промежу- промежуточные величины должны быть правильно ограничены с тем, чтобы не произошло пе- переполнение при их вычислении. Ниже будут приведены простые границы для случая действительных входных массивов и прямо- прямоугольных преобразований. Предполагается, что последовательность h определена зара- заранее и остается неизменной. Результаты при- приведены для двумерного случая, но они лег- легко обобщаются на случай большого числа измерений.
Пусть *-'•'« E.10) и пусть *mtxSeM*'**¦•*«'• E.П) Ограничение утлх на величины элементов у в E.1) определяется следующим выраже- выражением: *,-0 *,-0 V-"•*"<•; Приведенная граница является также на- наименьшей верхней границей. Для определен- определенного массива х она может быть достигну- достигнута. Выражение (S.12) дает ограничение для выходных величин, но нам необходимо так- также иметь границы для промежуточных ре- результатов. Рассмотрим массив X' E.3), полученный после вычисления преобразова- преобразования В] по первому измерению. Простая граница на элементы X' записывается как №|.*1<ям.'<Г|.И|> E-13) для всех и 1, / 2, где, как и ниже, Подставляя E.13).получаем .*,1-E.20) Абсолютные величины элементов массива X E.7) ограничены где max относится к/ 2. Это с учетом E.13) дает "i,1, • • • ,Л#1 - 1, и» «0,1,"- ,М2 - 1. E.16) Обе границы E.13) и E.15) - наимень- наименьшее верхнее. Мы получим границу на эле- элементы преобразования Y в E.8) в выраже- выражениях известного фиксированного Н, под- подставляя границу E.16) в что дает Границы на элементы Y' получаются не- непосредственно из E.4) l^.y.KI^./Jmax 'jc'ltf»,,*,!. E.19) где max относится к максимуму по / 2. Таким образом, E.12), E.13), E.16), E.18) и E.20) суть наименьшие верхние границы для элементов у, X', X, Y и Y' соответственно, выраженные через хт^х и известные фиксированные величины h и преобразования Н' и Н. Эти границы лег- легко обобщаются на многомерный случай. В. Влияние ошибок округления. Если многомерная свертка осуществляется в мо- модулярной арифметике, то ошибки округле- округления не появляются ни на одной из ступеней вычислений. Даже в случае использования обычной арифметики реализация цикличе- циклической свертки с помощью прямоугольного преобразования, вероятно, дает меньший шум округления (ошибку) по сравнению с БПФ. На это есть несколько причин. Во-пер- Во-первых, для вычисления свертки действитель- действительных последовательностей в случае метода прямоугольных преобразований требуются только действительные операции, а БПФ использует комплексные операции. Комп- Комплексная арифметика вносит больший шум округления по сравнению с действительной арифметикой. Во-вторых, для коротких сверток метод прямоугольных преобразова- преобразований требует меньшего общего числа ариф- арифметических операций по сравнению с БПФ. В общем случае меньшее число операций приводит к уменьшению шума округления. В-третьих, если используется арифметика с фиксированной запятой, шум округления получается только при умножениях. Следо- Следовательно, для прямоугольных преобразова- преобразований с фиксированной запятой единствен- единственным источником шума является умноже- умножение преобразований. Все эти факторы долж- должны приводить к существенно меньшему шуму округления для прямоугольного преобразования по сравнению с БПФ. Г. Оптимальная длина блока для нецик- нециклической свертки. Во многих приложениях цифровой обработки сигналов одна из последовательностей (импульсная характе- характеристика фильтра h) фиксирована и имеет небольшую длину, скажем р, в то время 109
как другая последовательность, (входная последовательность х) имеет значительно большую длину и может рассматриваться как последовательность бесконечной длины. Свертка таких последовательностей получа- получается блокированием входных последова- последовательностей в блоки длины L ¦ Для каждого блока осуществляется свертка последова- последовательности длины L с последовательностью длины р. Это можно осуществить с помо- помощью циклической свертки длины N, если L + р — 1 ^ N. Для каждого р существует оптимальное N в зависимости от использу- используемой схемы циклической свертки, которая обеспечивает минимальный объем вычисле- вычислений на один выходной отсчет. Пусть .Fj (ЛО ~ число умножений на один отсчет необхо- необходимое для вычисления циклической сверт- свертки длины N. Тогда F2(p, N) — число умно- умножений на один выходной отсчет — равно F1(p,N) = F1(N)HI(N-p+l) E.21) для фиксированного р, N/ (N - р + 1) есть убывающая функция N Для БПФ Fx (N) пропорционально log N медленно возраста- возрастающей функции N. Поэтому для БПФ опти- оптимальная длина блока N для заданного р значительно больше р. В случае вычисления циклической свертки с помощью прямо- прямоугольного преобразования Ft (N) есть быст- быстро возрастающая функция N, т. е. в этом Таблица 6- Оптимальные размеры секции длинных последовательностей при свертывании их с короткими последовательностями методами прямоугольных преобразований Таблица 7. Оптимальные размеры секций длин- длинных последовательностей при свертыванин их с короткими последовательностями методами БПФ Длина сворачиваемых последовательностей Р 2 4 8 16 32 64 128 256 N 6 12 30 60 120 180 420 840 М 8 20 80 200 560 1100 3800 10 640 Число умноже- умножений F,(A0 1ДЗ 1,66 2,66 3,33 4,66 6,11 9,04 12,66 Умноже- Умножения на один от- отсчет F,(p,JV) 1,60 2,22 3,47 4,44 6,29 9,40 12,97 18,17 Длина сворачиваемых пос- последовательное тей Р 2 4 8 16 32 64 128 256 N 4 8 32 64 256 512 512 2048 М 8 20 164 388 2308 5124 5124 26 628 Число умноже- умножений F,(N) 2,00 2,50 5,12 6,06 9,01 10,00 10,00 13,00 Умноже- Умножения на один от- отсчет 2,66 4,00 6,55 7,88 10,27 11,40 13,30 14,82 случае оптимальное значение N немногим больше р. В табл. 6 указаны оптимальные значения N и соответствующие Fj (N) и Рг (Р> N) для нескольких значений р. Вели- Величины N выбраны из табл. 3. Для сравнения в табл. 7 приведены те же самые длины для тех же величин для БПФ для числа умноже- умножений из табл. 4.. 6. Выводы Многомерный метод вычисления сверток был исследован Агарвалом и Баррасом [ 1 ] с целью эффективного вычисления ЧПФ. Предложенный метод дает вычислительный выигрыш для ЭВМ, в которых имеется спе- специальное арифметическое устройство для реализации ЧПФ, но и в случае ЭВМ обще- общего назначения свертки могут вычисляться по этому методу с меньшим числом умно- умножений по сравнению с БПФ для последо- последовательностей, длина которых не превосхо- превосходит 128. В настоящей статье рекомендуется при- применять КТО для отображения в многомер- многомерные последовательности. Это, совместно с усовершенствованными алгоритмами ко' ротких сверток делает многомерный метод эффективным по сравнению с методами, использующими БПФ для последователь-
ностей, длина которых не превосходит 420. Предложенные методы также привлекатель- привлекательнее вследствие того, что они обходятся без комплексной арифметики и операций с ко- косинусами и синусами. Это означает, что вы- вычисления могут проводится в целых числах без ошибок округления. Приведены теоретические результаты из теории сложности вычислений, которые да- дают представление, насколько специальные алгоритмы близки к оптимальным. Эта теория частично используется для разра- разработки систематических методов вывода оп- оптимальных алгоритмов коротких сверток. Можно ожидать, что эти методы, исполь- использующие машинные системы вычислений с алгебраическими выражениями, будут по- полезны при создании алгоритмов свертки, учитывающих особенности конкретного ти- типа ЭВМ. По тем же самым причинам можно ожидать, что эти методы окажут влияние на разработку специализированных систем цифровой обработки сигналов. Приложение А. Алгоритмы сверт- свертки для 2 <ЛГ< 9 Ниже приведены оптимальные и почти оптимальные алгоритмы для ряда малото- малоточечных сверток и указано количество ум- умножений М и количество сложений Ав, Ас и А. Операции, включающие h не учитыва- учитываются. Элементы Ah и Вх обозначаются через ак и Ьк, к = 0, . . . , М - 1, соответственно. Выражения для ак и Ьк записываются с круглыми скобками, расположенными в та- таком порядке, который соответствует упо- упорядочению операций, соответствующему чис- числу сложений для каждого алгоритма. Мы Пытались минимизировать количество сло- сложений, но не имеем никакого доказатель- доказательства, что достигли этого. Для алгоритмов при N = 6, 7, и 8 приве- приведены матрицы А, В и С. Где возможно, матрица А выражена через матрицу В, умноженную слева на диагональную матри- матрицу, которая обозначается через diag (...) с диагональными элементами, заключенны- заключенными в круглые скобки. N * 2 Алгоритм-Л# « 2,АВ ¦ 2, А с = 2, А = 4: тк=акЪк, yx =tno-nti. = 3 Алгортм-М = S,A Щ -akbk, *= 0,1,2,3 yi mo~ (mi - ms) - (mi - mt) - m3). b*-xt -х3 тк=акЬк, к = 0,1,2,3,4 ^o=('"e + m,) + (m, -m4) у i =(то-/Я1)+(/Я1-/яэ) »=(то-/я,)-(/я, -тэ). 5 Алгоритм-Л/= Ю,Ав = й\ - Ао- А4 аг -hi - A4 jj =Aj - A4 «4=А»-А4 e.=(Ai-A4) + (A,-A4) «9 = ШАо - Й4> + (Ai - А4)] + [(А2 - А4) + (Аэ-А4)]}/5 = 22, Л = 35: Ш
b3=xt-x4 Ь4=х3-х4 - XS) 6, = [(XO - X4) + (*, - X4)] + mk*akbk, Л-0,1.---.9 - X4) + (x3 - *4>] 1 1 0-1-1 0 1 0 0-1 1-1-10 110 0 0-1 1-1 1-1 0 0 0 1 0-1 1 1 1 1 1-1-1-1-1 4 1 0-1 1-1 0 0 0 1-1. 4i-m4)-i »i " »U)" ' «о + «о - У о ~ У\. - Уг - У* Hj - Ш3У - Ш4 + ftlj. Nт 6 Алгоритм—Мж &,Ag ш \&,Ас я 26,А «44: Отметим, что этот алгоритм хуже чем состав- составной алгоритм дли N =2x3, указанный в табл. 3, который также требует 8 умножений н только 34 сложения: /4=diag(l 1 -1 1 1 1 1 1)В/6 где Уо ¦ («о - ж») + ух - (т0 - т9) - Уг - («о " т9) + Уэ ¦ («о + «о) + ! и 1 0 1 1 0 1 1 1 «о = [(Л ei = [(А в2=в. в3=[(А «4 = [(А 0 - 1 - -1 0 - 1 1 -1 1 1 1 0 1 1 0 1 1 1 0 1 -1 0 -1 -1 1 о-ЛгМЛз 1-/«2 "«о о " Лг .+/«2 )н )- ) - h(A4 (Лз (Л« 0 1 -\ 0 -1 -1 1 1 -л5 + А5 -1 -1 0 1 -1 0 -1 1 )]/6 I/6 )]/6 )]/6 вб=[(/«о+Лг)-(Л.+Лз) + (/«4-/«5I/6 в,= [(A0+Aj) + (Al+A3) + (A4 + As)j/6 Z»! ~{Х\ - Х2) + (Х4 * Х$) 1 1 -2 1 1 -2 {(""о V [(т0 -2 1 1 -2 1 1 -«, 4 " + Ш2 -1 2 -1 — 1 2 -1 .VI 5 AT ) + ( 1 -1 -2 -1 1 2 -2 -1 1 2 1 -1 + ffij 1 2 1 -1 -2 -1 )} + Ть 1 -1 1 -1 1 -1 {(m,- {(Шз- 1 1 1 1 1 1 m4)- ms)+ (m, + m2)} Л^ ¦ 7 Алгоритм-М = 19, Ав = 23, Ac 1111111111111 liiiii Г 10 0 0 0 0-1 0 10 0 0 0-1 0 0 10 0 0-1 0 0 0 10 0-1 0 0 0 0 10-1 0 0 0 0 0 1-1 10 0 10 0-2 0 10 0 10-2 0 0 10 0 1-2 1 10 0 0 0-2 0 1 10 0 0-2 10 10 0 0-2 0 0 0 1 10-2 0 0 0 0 11-2 0 0 0 10 1-2 110 110-4 0 110 11-4 111111-6 = 49, A = 72: 1 1 \\j)B
= Ao- h6 - Ai - ht = h2 - ht = Aj- ht 0} e7 As" + as в» «11 в» 014 ¦ l>4 + в5 = в5 + в6 ¦ «4 + вб «о b» 6,3=64+*, «О =ОТо - Пц Ui = OTi*1" OT5 И2 = ОТ4 + ОТ6 Uj = OTi +И«з и+ — от^ ~ Отв Us = ОТ2 + OTj + ОТ4 + ОТ5 " OTg  = "о "Из j<0 = u0 + u, - u2 - ot3 у 1 = u0 - u, - u2 - m2 + от,0 + ot,$ J»J = U« + U4 - OT$ + OTI2 + OTM Уз=и6- u4 - m4 +от7 +Отц J<4 = U7 + OTi - ОТ, - ОТю - W13 + OT!6 ys = (ot0 + от0) + Bот0 + 2m0) + m0 - y0 - j», - y2 - y3 -у*~Уб Ув~ип +ОТб" ОТ» - ОТ и - ОТ и + ОТ!7. N = 8 Алгоритм-Л/ = 14, Ав = 20, Ас = 26, А = 46: ще 0,1, • - -, 18 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 0 0 1 1 0 1 1 0 -1 0 1 1 -1 1 0 0 0 1 1 1 1 1 1 -1 -1 1 1 1 -1 0 0 -1 0 1 1 0 1 0 -1 -1 -1 1 -i -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 0 0 -1 -1 0 -1 -1 0 1 0 1 1 -1 1 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 0 0 1 0 -1 -1 0 -1 0 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 0 0 -1 1 -1 1 -1 1 -1 0 -i -1 1 1 1 -1 -1 0 -1 1 1 1 -1 1 -1 0 1 -1 1 -1 -1 -1 1 с 1 1 00100010000-1 00010000100-1 00000101000-1 10001000000-1 0-1-10-100-10010-1 0 2 0 0 0-100-1-1-16 0-1-1 0-1 0 0-1 0 0 1-1 113
Также, В = 0 1 1 0 0 0 0 1 1 1 0 1 1 1 1 -1 0 0 0 0 1 -1 0 1 1 0 -1 1 0 1 1 0 1 1 0 0 0 -1 0 -1 1 1 1 -1 0 1 -1 0 0 0 0 -1 -1 0 -1 1 0 -1 -1 0 0 0 0 -1 -1 1 0 1 1 1 -1 1 0 0 0 0 -1 1 0 1 1 0 -1 1 0 -1 -1 0 -1 -1 0 0 0 -1 0 -1 1 1 -1 1 0 -1 1 0 0 0 0 -1 -1 0 -1 1 в|3=/»0 Xq — Xq ~ X4 *l=x,x5 х' I "~ X3 ~ Xf | = (xo+x4)- (x3 +x6) i = (xi+x5)- (x3+x7) «0 = [(x0 + хл) + (x2 + x6)] + [(*, + x5) • , = x! *i=(xi+x2)-(x',+x3) bi = xl + x2 *3=^ -х\-х\ -А -х\ I ~Xo i=Xo - V1 - xt Ниже верхний индекс/ соответствует коэффици- коэффициентам полиномов, взятых по mod Рд. (z): Ло = (Ло - Л4)/2 А1 = (А,-А5)/2 1 1 0-1-1 0 0 0 0 0 -1 1 1 0 -1 -1 -1 1 0 1-1 0 0 0 A = 0,1,-¦ -, 13 1-1 0 11 1 0 1-11 00001 10-1 1011 10000-11-10-1-11 0 110 0 0 0 0 1-10-11000 1-1 0 11 1 0 1-11 -1-10000-1-10-11011 0 1-10 0 0 0 +x7)] 1-1-1 0 -1 -1 1 ^0= [(»»O+WI|)- (W3+OT4)] + уП\2 ^* ОТ13)] _yj = [(Wlj ~ Wl|) + (Wl4 " WI5JJ "*" (^13 ~ "*12)J У г ~ [(«о + «i) + (m6 + w7)] y* = - (т,з-от12)] (m12+w13)] [{тг-тх) + { (/Я13-т12)] [(то+т,) + ( (т,2+т13)] [(от, + т„) 8 ( a,'hi
\f = 22,AB = 29,ACS69,A =98: Приложение Б. Прямоугольные пре- преобразования, обладающие свойством цик- = (х0 + х3 + *6) + (*, + х$ + х.) + личности свертки (СЦС) В этом разделе мы установим соотноше- + х4+х7)-(xi+xi+x») ния межДУ матрицами А, В и С, которые необходимы и достаточны для того, чтобы ЬА = хо = х0 - х6 вектор у был бы циклической сверткой, *5=х',=Х|-х7 определенной в C.1). Эти соотношения bt =xi =хг - хв имеют общий вид и любое квадратное или *7-*3=х3-х6 прямоугольное преобразование, облада- й* IХ* IХ* ' Хп ющее СЦС, должно удовлетворять им. 9558 Преобразования h их определяются как Ьн=з Ь19=1 H = Ah; X = Вх, (Б2) где А и В — прямоугольные матрицы М xN, где N — длина циклической свертки, а М — количество отсчетов в области преобразо- преобразования. Очевидно, что M>N. Необходимые при умножении преобразований Н и X М умножений требуются при вычислении Y = HxX, (БЗ) \\\\\\\\\\\\\\\\\\\\\)B тк = akbk, к = 0,1, • • •, 21 Где х — поэлементное произведение, "о ="io + 0 ~ "*з) Выходной вектор у, который равен цик- "i = т0 - (mi - т3) - (т2 - т3) лической свертке х и h, получается с помо- и2вт0 + (т1- т3) щью еще одного прямоугольного преобра- и3 = т1О-ти-тц зования где С — матрица NxM. Необходимо установить условия накла- накладываемые на матрицы А, В и С, необходи- и,0 = и2 - us мые и Достаточные для того, чтобы у был ип=тА- т9 циклической сверткой х и h. Уравнения U|2=m4- от5 (Б1) и (Б2) могут быть выражены через "|з =mt~ m9 свои элементы: JV-1 **-?/*•'*'•• (Б5) - U 7 k = Q;l,2,--,M- 1. гкл\ , - U|5 + Зшю + От|4 Уравнение (Б4) может быть записано + Зы4 ~ W|3 ~ fti\b ^~} i + u,4 +2u5 - miS - mis ^" = ? cn,kHkXk, n = 0, 1, • • • ,JV- 1. (Б7) • 3li3 ~ ffl|4~ Wp Подставляя ЯА и ХА из (Б5) и (Б6), по- получаем 115
M-i fjV-l 1 ГЛГ-1 1 л- Т. Cn,k\Y. AkiPhp\\Т.вк1ЯхЛ; к'О [р-о J [q-o J JV-l JV-i р-0 (J-0 M-i (Б8) Для обеспечения СЦС требуется m-i = 1, если р + о = mod ./V: Z С,,.*Л*,РВ*,, (Б9) **° = 0 в других случаях. Выражение (Б9) дает необходимое и доста- достаточное условие для СЦС. Оно может быть выражено следующим образом : "Скаляр- "Скалярное произведение р-то столбца А, q-ra столбца В и л-й строки С должно быть рав- равно 1 для р + q =n mod N и нулю в других случаях". Для случая квадратного преобразования (М = N) можно накладывать на матрицы А, В и С дополнительные ограничения, что приводит к результатам Агарвала и Барра- са [2]. В этом случае матрицы преобразо- преобразования имеют структуру ДПФ и вычисление преобразований в общем случае требует умножений. Но если допускается, что М больше, чем N, то в этом случае существует большая свобода выбора матриц А, В и С. По мере увеличения М можно получать мат- матрицы А, В и С с простыми коэффициентами. В качестве экстремального случая можно выбрать М = Л/2, и при этом каждая строка А и В и каждый столбец С будут содержать только один ненулевой элемент. Этот слу- случай сводится к непосредственному вычисле- вычислению свертки. Между двумя крайними слу- случаями структуры ДПФ (М = N) и непосред- непосредственного вычисления (М = N2) существу- существуют различные возможности обмена просто- простоты матриц преобразования на размер М. Для очень длинных последовательностей (N ->°°) ДПФ, использующее алгоритм БПФ, кажется оптимальным с точки зрения оптимальности вычислений. В алгоритмах, приведенных в приложении А, мы выби- выбирали М малым, но не всегда равным мини- минимальному числу, определяемому теоремой Винограда. Выбор неминимального М опре- определяется простотой матриц преобразований (реализация преобразований требует толь- 116 ко сложений). Это приводит к тому, что для вычисления циклической свертки тре- требуется данное количество умножений М, Список литературы [I] R. С. Agarwal and С. S. Burrus, "Fast one-dimen- one-dimensional digital convolution by multidimensional techniques," IEEE Trans. Acoust., Speech, Sig- Signal Processing, vol. ASSP-22, pp. 1-10, Feb. 1974. [2] -, "Fast convolution using Fermat number trans- transforms with applications to digital filtering," IEEE Trans. Acoust,. Speech, Signal Processing, vol. ASSP-22, pp. 87 - 99, Apr 1974. [3] -, "Number theoretic transforms to implement fast digital convolution," Proc, IEEE, vol. 63, pp. 550-560, Apr 1975. [4] G. D Bergland, "A fast Fourier transform algo- algorithm using base 8 iterations," Math. Comput., vol. 22, pp. 275 - 279, Apr. 1968. [5] J. W. Cooley, P. A. W Lewis, and P. D. Welch, "Historical notes on the fast Fourier transform," IEEE Trans. Audio Electroacoust., vol AU-15, pp 76-79, June 1967. [6] -, 'The fast Fourier transform: Programming considerations in the calculation of sine, cosine and Laplace transforms," /. Sound Vib., vol. 22, pp. 315-337, July 1970. [7] I. J. Good, "The interaction algorithm and practi- practical Fourier analysis," /. Royal Statist. Soc., ser. B. vol. 20, pp. 361 - 372, 1958, addendum, vol. 22, 1960, pp. 372 - 375, (MR 21 1674; MR 23 A4231). [8] J. H. Griesmer, R. D Jenks, and D. Y Y. Yur», "SCRATCHPAD unser's manual," IBM Res. Rep RA 70, ЮМ Watson Res Cen., Yorktown Heights, NY, June 1975, and SCRATCHPAD Technical Newsletter No. 1, Nov. 15,1975. [9] D. E. Knuth, "Seminumerical algorithms," in The Art of Computer Programming, vol. 2. "Rea- "Reading, MA- Addision-Wesley, 1971. [10] T. Nagell, Introduction to Number Theory. New York: Wiley, 1951. [II] P. J. Nicholson, "Algebraic theory of finite Fou- Fourier transforms," J. Comput. Syst. Sci., vol. 5, pp 524-527,Oct 1971 [12] J. M. Pollard, "The fast Fourier transform in a finite field," Math. Comput., vol. 25, no. 114, pp 365 -374, Apr. 1971. [13] С. М Rader, "Discrete convolutions via Mersenne transforms,"IEEE Trans. Comput., vol. C-21, pp. 1269- 1273, Dec 1972. [14] I. S. Reed and Т. К. Truong, "The use of finite fields to compute convolutions," IEEE Trans. In- Inform. Theory, vol. IT-21, pp. 208 - 213, Mar 1975
[15] -, "Complex integer convolutions over a direct sum of Galois (ields,"IEEE Trans. Inform. Theory vol. IT-21,pp. 657 - 661, Nov. 1975. [16) R. C. Singleton, "An algorithm for computing the mixed radix fast Fourier .transform," IEEE Trans. Audio Electroacoust., vol. AU-17, pp. 93 - 103, June 1969. [17] L H. Thomas, "Using a computer to solve prob- problems in physics," in Applications of Digital Com- Computers. Boston, MA: Ginn and Co., 1963. [18) S. Winograd, "Some bilinear forms whose mul- multiplicative complexity depends on the field of constants," IBM Res. Rep. RC 5669, IBM Wat- Watson Research Cen., Yorktown Heights, NY, Oct. 10,1975. [19] -, "On computing the discrete Fourier trans- transform," Pros. Nat. Akad. Sci. USA, vol. 73, no. 4, pp. 1005 - 1006, Apr. 1976. Статья 4. О вычислении дискретного преобразования Фурье С. Виноград Аннотация. Описывается новый способ вычис- вычисления дискретного преобразования Фурье (ДПФ). Этот способ основан на недавно полученном ре- результате в теории сложности вычислений, кото- который позволяет образовывать эффективные алго- алгоритмы для свертки. Эти алгоритмы затем исполь- используются для получения нового алгоритма ДПФ. 1. Введение. В предыдущей статье [1] ис- исследовался вопрос о минимальном числе умножений, необходимых для нахождения коэффициентов произведения двух полино- полиномов степени (п — 1) по модулю полинома степени и. В данной работе мы используем результаты [1] для получения новых ал- алгоритмов вычисления ДПФ. Эти новые ал- алгоритмы требуют для своего осуществле- осуществления приблизительно такого же числа сло- сложений, что и алгоритмы Кули - Тьюки [2], а число необходимых умножений составля- составляет только 20 % по сравнению с алгоритмом Кули - Тьюки. Во втором разделе приведены сведения, необходимые для получения алгоритмов. В третьем разделе описан вывод алгоритмов для циклических сверток, в четвертом раз- разделе эти алгоритмы используются для вы- вывода алгоритма ДПФ для последователь- последовательной длиной от нескольких десятков до не- нескольких тысяч отсчетов. В последнем раз- разделе рассматриваются алгоритмы для мно- многомерных ДПФ, а также алгоритмы для вы- вычисления ДПФ очень больших чисел. 2. Сведения из теории. Пусть имеется два полинома с неопределенными коэффициен- коэффициентами и пусть я-1 Р(и) = ип + S atvf 1=0 — полином от одного неизвестного степени п с коэффициентами из некоторого поля G (в приложениях мы будем считать, что G — поле рациональных чисел Q, и только в пос- последнем разделе используем и другие поля ). Предположим, что Р(и) = Pi (и)Рг (и), где Pi (и) и Р2 (и) — взаимно простые, и пусть «! =deg (Pi) nn2 =deg (Р2). Используя китайскую теорему об остат- остатках, получаем: R, • Sm mod P=(Q2 • P2(R, • Sm mod P,)+ + G, * Pt ' (R, ' Sm mod P2)) mod P, A) где полиномы Qi и Q2 удовлетворяют урав- уравнению Qipi +Qi -p3 = i™oup. B) Пусть f — множество коэффициентов R[ • Sm и пусть Тр — множество коэффи- коэффициентов Щ ' Sm mod P. В [З] было показа- показано, что для вычисления Т требуется по мень- меньшей мере / + m + 1 умножений (умножение на фиксированный элемент gE G не учи- учитывается) , и, используя алгоритм [4], можно фактически получить алгоритм для вычисления Т за / + m + 1 умножений. Яс но, что для получения Тр из Т необходимы только сложения и умножения на элементы g<* G. Таким образом, число умножений, которые мы учитываем, необходимых для вычисления Тр, не превосходит / + /и, + 1. Другой путь вычисления Тр, когда. Р делится на два разных непроводимых мно- многочлена, заключается в использовании ра- равенства A), т. е. если Р = Pt • Р2, где Р, и Р2 — взаимно простые, то можно приме- применить указанный алгоритм для Тр , умножая (R mod Рл) • (S mod Px) mod P,,'и для Тр , умножая (R mod Р2) • (S mod Pj) mod P2> а затем получить алгоритмы для Тр, исполь- 117
зуя дополнительные сложения и умножения с элементами G. Как было показано в [1], для случая / = т = п — 1 число умножений, необходимых для вычисления Трг равно 2п - к, где к — число различных неприводи- неприводимых множителей Р. Больше того, любой ал- алгоритм, который вычисляет Тр за 2л — к умножений, использует A). Когда Р содержит только один неприводи- неприводимый множитель, т. е. когда Р есть степень неприводимого полинома, мы не можем воспользоваться A), но в этом случае вычисление Тр сводится к вычислению Т с последующим приведением по mod P. Имеются два пути вычисления Т с ис- использованием только / + m + 1 умножений. Первый использует выражение m + i R,(u).Sm(u) = R^u).Sm(u) mod П <« " «<)> '=° C) где а,- — различные элементы поля G. (Будем предполагать, что поле G достаточ- достаточно велико. Фактически в этой статье мы бу- будем пользоваться только полями G харак- характеристики 0.) Правая часть выражения C) может быть сосчитана с помощью A) за m + + / + 1 умножений. Этот алгоритм эквива- эквивалентен проведенному в [4]. Второй алгоритм использует равенство m+i Я,(«) Sm(u) = Л/и.) Sm(«)mod П (« ~ ft) + + *1Ут П («"ft). D) 1=1 где /3 j - различные элементы G. Как пока- показано в [ 1 ], каждый алгоритм для вычисле- вычисления Т за m + I +1 умножений использует либо C), либо D). Иногда желательно избежать использова- использования констант, которые необходимы при вы- вычислениях по алгоритму C) или D), даже за счет введения дополнительных умноже- умножений. Для достижения этого можно выбрать полином степени / + m + 1 с многими раз- различными неприводимыми множителями, но не обязательно линейными. Равенство C) в этом случае трансформируется к виду Л,(и) • Sm(u) = Rfit) • Sm(u) mod P. E) Подобным же образом модифицируется и равенство D). Еще одним теоретическим понятием, необходимым в настоящей статье, является понятие дуальной или транспони- транспонированной системы. Пусть * г Т. L в*/*У**/» к= \,2 t, F) /=i 1=1 - система билинейных форм. Предполо- Предположим, что мы нашли алгоритм для вычисле- вычисления этой системы за п умножений без ис- использования коммутативного закона, т. е. * »• п / г Z ? аа^у, = Т. 7*,| ( ? «,-,, /=1 '=1 1=1 \t=l /=i =1.2....,f. G) Умножая обе части G) на zk и суммируя по к, получаем t s r n I t fc=l /=l 1=1 1=1 \к=1 Приравнивая коэффициенты при л:г- , полу- получаем t г nit L L ацк2кУ! = L au L Ук,1 к=1 }=\ 1=1 \к=1 '"•2 (9) Левая часть (9) называется дуальной (или транспонированной) системой, а правая часть (9) дает алгоритмы для ее вычисления за п умножений. 3. Циклическая свертка. Рассмотрим за- задачу вычисления циклической свертки двух множеств отсчетов (х0, хг, . . . , хн _t) и 0v У1 > ¦ ¦ ¦ < Уп -1) > каждый из которых со- содержит по п точек. Это можно записать как n-i П-1 п-\ хп-г Уо Уп-\ A0) Легко проверить, что A0) есть система коэффициентов полинома 118
Щ = "У\) ~ -+,,„->) mod«--l. A1) (,o-,2X^2_ и мы можем использовать результаты, опи- описанные в предыдущем разделе, для вычис- вычислений этой системы. В качестве примера рассмотрим случай п = 3, т. е- 2г. A2) что эквивалентно системе коэффициентов выражения (*0 + х,и + дг2и2Х^0 + У2и + + 7i«2)mod(«3-l). A3) Так как м3 - 1 = (и - 1) (и2 + и + 1), то нам следует вычислить (*0 +х,и +*2и2H'0 +у2и + + ГП2 ~ (ДГ, - A7) И, следовательно, коэффициенты A5) равны И /И. 4- Определяя т0 = (х0 + дг, + , получаем + ytu2) mod (и- 1) = т0; y1u2)mod(u-l)= (х0 + х1 + и + 1)= (т, - т2) + (т, - m3)u A8) и, используя A), получаем результат (*0 +xtu +х2и2ХУ0 +У2» +ylu2)mad(u*- и (дг0 A4) (и2+ X ((m, -m2) + (m, - m3)u) mod (и3 -1) = + и + 1) = ((л0 "«а) + (*i "«а)") * (О'о " >i) + O2~^i)") mod(«2+u + l). A5) Для вычисления A4) хватает одного умно- умножения. Для вычисления A5) мы в первую очередь вычислим Т, т. е. коэффициенты ((*о -*2) + C*i -*2» • ((Уо -У0 + Это можно сделать, используя равенство m0 Ъп2 т3\ (Щ Щ TrV з + з + (*, -х2Ху2 -у{)ц{и + 1), A6) что приводит к алгоритму A9) Во многих приложениях либо х^, либо .у,- из- известны раз навсегда. Например, это коэф- коэффициенты усиления в различных отводах линии задержки, и, следовательно, вычисле- вычисления, в которые входят только эти перемен- переменные, могут быть сделаны заранее, и поэто- поэтому их не следует учитывать. Предполагая, что вычисления с х,- не учитываются, опре- определяем -- -1- - -1- х2 то = X. + Х2 Хп Х*у т ',= °з 2(У0-У1У> B0) 119
x, -* т'г B0а) к получаем три искомых величины в виде т'о + от',- 2т'2 + ffi3,«'o + т\ + т'г~ 2от'з> т'о - 2т\ + т2 + т'3. B06) Другой алгоритм можно получить, ис- используя транспонированную систему A2): ZO Z2 zi\ zoj ,\ Уг z, z2 «I/ У* B1) Транспонируя алгоритм B0), мы полу- получаем то = т. z, - 2z2 - 2z0 z0 - 2z, B2a) и три искомые величины записываются как m, mo ~ ~m2- B26) Этот метод получения более простых алго- алгоритмов с Помощью транспонирования систе- системы билинейных форм эффективен также и для других циклических сверток. Использо- Использование КТО обычно приводит к тому, что коэффициенты Qt • Pl и Q2 • Р2 отличны от 0, 1, —1, а транспонирование алгоритма приводит к тому, что эти коэффициенты пе- перемещаются в ту часть алгоритма, которая может быть выполнена заранее. Матрицу в A0) мржно рассматривать как "таблицу умножения" для группы Zn ПО классов вычетов со сложением по модулю п. В случае п = п^ • п2, где п\ ип2 — взаим- взаимно простые, 2п изоморфна Zn xZn . По- Поэтому существует перестановка строк и столбцов матрицы A0) такая, что получа- получающаяся матрица может быть разбита на бло- блоки, представляющие собой циклические матрицы п2 х п2, а сами блоки образуют циклическую матрицу п i x n t. Например, так как 6 = 2x3, мы имеем изоморфизм 0-»@,0), 1-*A,1), 2-> @,2), B3) 3-»A,0), 4-* @,1), 5-» A,2) и поэтому, если нам дана циклическая свертка ' 'о \ / хп х. х. +2 4 XS\ S Х0 0 Xl , Х2 2 Х3 3 *4/ / Л Ух У2 Уз У* \у*1 B4) мы можем записать ее в порядке 0, 4, 2, 3, 1,5 (т. е располагая отсчеты в следующем порядке: первыми те, у которых первая координата равна 0, а вторая в возраста- возрастающем порядке, а затем те, у которых пер- первая координата равна 1 и вторая в возрас- возрастающем порядке), что приведет к /М /х0 х4 х2 х4 х2 х0 х2 х0 х4 Х3 Х\ Х6 хг х5 х3 \*5 Х3 Х1 хз xi xs\ х, х5 х3 V V Y Xj Xj Xj х0 х4 х2 ха хг хо х2 х0 х4/ Уо\ У2 (Л — U) B5) Результат вычислений тот же, что и в B4), но свертка имеет уже блочно-циклическую структуру. Эта блочная структура может быть ис- использована для вывода алгоритма с помо-
щью композиции двух различных алгорит- алгоритмов. Используя равенство и2 — 1 = (и + + 1) (к — 1), мы сразу получаем Таблица 1 B6) для циклической свертки двух элементов. Если мы определим то B5) можно записать как /фо\ = (xQ хЛ /уо\ <28) и, используя алгоритм B6), получаем хо-х. Ф^^-^. B9) Для вычисления З/j и Af2 применим ал- алгоритм B2). Таким образом, мы получи- получили алгоритм для вычисления B4), который использует восемь умножений и 34 сложе- сложения. Следует отметить, что можно было бы разложить 6 как 3x2, что привело бы к другой блочной структуре, а именно к трех- трехточечной свертке блоков 2 х 2. В этом слу- случае мы получили бы другой алгоритм для вычисления B4), использующий восемь умножений и 38 сложений. п 2 3 4 5 6 Число ум- умножений 2 4 5 10 8 Число сло- сложении 4 11 15 31 34 В приложении А даны алгоритмы для циклических сверток длины 2, 3, 4, 5 и 6. Число операций* в этих алгоритмах приве- приведено в табл. 1. Алгоритмы для пятиточеч- пятиточечной циклической свертки не обходится ми- минимальным числом умножений. Можно вы- вывести другой алгоритм, который исполь- использует только восемь умножений, но при этом число сложений будет значительно больше, а постоянные коэффициенты не будут рав- равны 0, ± 1. 4. Одномерное преобразование Фурье. Дискретное преобразование Фурье последо- последовательности из и отсчетов "t. C0) может быть записано как А ¦ Wa, где Wt, = = мг'. Рассмотрим сначала случай, когда и - простое число. В этом случае W />/#0 можно рассматривать как "таблицу умно- умножения" для группы Мп ненулевых целых взаимно простых с я чисел с групповой опе- операцией умножения по модулю п. Хорошо известно, что М^ a «(p_1)p?_i дляр Ф Ф 2, где р — простое нечетное число, и М f a — ^2 х2 2г-2- означает, что если п - 2 простое число, то можно так переставить строки и столбцы ^/,/#0, что результи- результирующая матрица будет циклической. (Идея переупорядочения индексов ДПФ для прос- простого числа отсчетов с целью получения цик- циклической матрицы была впервые предложе- предложена Ч. М. Рейдером [5].) Это иллюстрирует- иллюстрируется записью ДПФ для случая и = 7, т. е. пред- представляет другую форму записи ДПФ 121
Ao\ /11 1 1 1 w1 w3 w2 1 1 1 1 1 w3 w2 w6 w4 ws w2 w6 w4 ws w* w6 w4 ws w1 w3 1 w6 w4 W5 W1 W3 W2 1 w4 w5 w1 w3 w2 w6 1 \ IV5 w1 w3 w2 w6 w4/ Ы «1 «3 «2 «6 a4 W м> = CD Теперь мы можем использовать алгоритм для шеститочечной циклической свертки, рассмотренный в предыдущем разделе, для вычисления семиточечного ДПФ. На самом деле, для дальнейших целей лучше сначала вычислить .4,- - АОу i = 1, 2, . . . , 6. (Заме- (Заметим, что таким образом мы не нарушаем сим- симметрии и, следовательно, можем по-прежне- по-прежнему использовать алгоритмы, рассмотренные в предыдущем разделе.) Получающийся ал- алгоритм приведен в приложении Б. В случае, когда п = рГ есть степень прос- простого числа, положение меняется незначи- незначительно- Мы можем так переставить строки и столбцы W, чтобы получить копии М г , ^рг-1 > • • • > М 0. Характер перестановки лучше всего объясняется на примере. В C2) мы рассматриваем перестановку И'для девятиточечного ДПФ. Алгоритм для девя- девятиточечного ДПФ приведен в приложении Б: чисел, а общая черта этих алгоритмов. В слу- случае п = р?, рФ2, группа М г изоморфна Z _,4-1—1 и элемент -1 группы МрГ отображается при этом изоморфизме в И<Р -О?'. Но так как «(р-Ор' -1 = = (u*(P-Dpr-1 - Щм^р-Ор'-Ч 1), часть алгоритма для циклической свертки, кото- которая основана на вычислении по модулю мУ4(р-1)рг-1 -1,зависит от w> + w";, кото- которые действительны, а часть алгоритма, ко- которая соответствует вычислениям по моду- модулю «^(р-Ор' + 1, зависит от w-' —w~3', которые чисто мнимы., Подобные рассуж- рассуждения устанавливают этот факт и для п = = 2Г ¦ В табл. 2 приведено число операций, необходимых для вычисления ДПФ для 2, 3, 4, 5, 7, 8, 9 и 16 точек с помощью приве- приведенных алгоритмов. Сами алгоритмы даны в приложении Б. Так как в дальнейшем мы будем рассматривать умножение на А А А А А А А А А 0 3 б 1 2 4 8 7 5 = 1 1 1 I 1 1 1 1 1 1 1 1 w3 w6 w3 w* w3 w6 1 I 1 w3 _ — — W3 w6 w3 1 w3 w« wl w2 w4 w8 w7 ws 1 w* w3 w2 w4 w8 w7 w5 w1 1 w3 W6 w4 w8 w7 ws w1 w2 1 w6 w3 w8 w7 w2 w4 1 w3 w6 w7 ws w1 w2 w4 w8 1 w6 w3 W5 wl w2 w4 w8 w7 C2) Анализ алгоритмов для семиточечного и девятиточечного ДПФ раскрывает то об- обстоятельство, что отдельные множители, со- содержащие степени w, являются либо дей- действительными, либо чисто мнимыми числа- числами и никогда комплексными числами об- общего вида. Это не особенность данных двух 122 w° = 1 как операцию умножения, то она также учтена в табл. 2. Рассмотрим теперь, как реализовать ДПФ в случае, когда число отсчетов п не является степенью простого числа. Идея использова- использования КТО для "построения" алгоритма вы- вычисления ДПФ для составного числа отсче-
Таблица 2 п 2 3 4 5 7 8 9 16 Число ум- умножений 0 2 0 5 8 2 10 10 Число ум- умножений на W° 2 1 4 1 1 6 1 8 Число сло- сложений 2 б 8 17 36 26 45 74 тов восходит к И. Дж. Гуду [6]. Так как наш метод "построения" алгоритма несколь- несколько отличается от предложенного Гудом, мы опишем все построение подробно. Пусть п = пхпг, где nt и п2 — взаимно просты. По китайской теореме об остатках можно представить каждое целое 0</ < < п парой индексов (i!, z2) такой, что если i соответствует (f1(ij), а/ соответствует O'i» /г). то ' + /mod n соответствует (i! + + /i modnlf ij + /2 mod л2), а 1 • / mod и соответствует (ij •/! modrti,i2 •/2modn2). лЛ *, *, *, л, *. -*. W \ • • • 1 1 1 • 1 • ( • 1 • - •1 . 1 • f 1 1 1 1 1 1 • 1 • 1 • 1 ¦ 1 •- ¦ 1 • 1 1 1 1 1 ) 1 • 1 • 1 •-I • -1 • 1 ¦ I • -1 ¦ -i ¦ | •1 •-I • -1 1 • 1 • 1 • '• if • w * if • if • if»- wl. wl . 1 1 i 1 I ¦( фическом порядке следования пар индек- индексов, tq эта матрица разбивается на nt х пх блоков каждый размерности и2 х и2. Блок в позиции г, s будет (w^lfO^y**W2, а пози- позициям, V в W2 будет (w<°'1))M'l\ How*1'0* есть wf, где Wj — корень степени/tj из еди- единицы (отметим, что число, представленное A,0), делится на и2), и y/^^.i) есть и>2, где и>2 есть корень степени и2 из единицы. Сле- Следовательно, W2 совпадает с матрицей ДПФ для и2 точек, в которой только w2 заменен на и>?. Если мы обозначим через Wt матри- матрицу ДПФ для Пх точек, в которой w t заменен на w\, то тогда матрица ДПФ для Wj- и2 точек преобразована к прямому произве- произведению W i и W 2 ¦ Например, возьмем п = 12 = 3 • 4. Отобра- Отображение, соответствующее КТО, имеет вид 0-@,0) 1-A,1) 2-B, 2) 3-@,3) 4 -0,0) 5-B,1) 6-@,2) 7-A,3) 8-B,0) 9-@,1) 10-A,2) 11-B,3) Записывая в лексикографическом порядке, получаем 0, 9, 6, 3,4,1,10, 7, 8, 5, 2,11. Та- Таким образом, ДПФ для 12 точек может быть записано в виде I ¦ I I • I I--I I--I I --I 1 • 1 If»-1 If»--/ If» - I --I w • I If--I If-1 If- -1 If»-1 If»-1 If»-1 I ¦ I I -I I --I I --I If 1 If • f If'- 1 If- -/ If»-I If» -I I ¦ I I ¦ I I ¦ I I ¦ I If»-1 If»-1 If' I If- I If-1 w I I ¦ I 1 •-¦ I •-! I -i if»- 1 w'-i w».-I if»-/ if- I if- -/ if - - I w f I --1 I • I I --I if»- I if» - - I if- I if - - I if- I if •- 1 1* w* w* w • w • w • W ' 1 \ -1 -< • 1 ¦ t • - 1 1 -1 -/ «,' •¦ •i ,4 «1 •¦, ., «, *> \«ll C4) Поэтому если w есть и-й корень из еди- где w— корень третьей степени из единицы, ницы, то in = „/fci>fc2)^i'/2)= Так как A, 0) соответствует четырем, то а = 1, а так как @, 1) соответствует девя- девяти, той =3. C3) Декомпозиция 12-точечного ДПФ приво- Это означает, что если мы переставим стро- дат к алгоритму для его вычисления. Ес- ки и столбцы матрицы ДПФ в лексикогра- ли определить 123
ao ~ "9 4 1 a, «10 \ an j 2 «5 a2 ИИ/ Таблица 3 / A \ A9 Uj , A,- л \ A A10 A. ; ,A2 = 1АЛ 'a2 A.. то.используя алгоритм Б 2, получаем C5) = (cos Ц - 1 W2 • (а, + а2), Ао = Мо, А, =М0+М1 +М2,А2=М0+М1-М2, C6) где W2 есть четырехточечное ДПФ с i, за- замененным на —i (так как й = 3). Поэтому мы можем использовать Алгоритм БЗ для вычисления Мо, Мх и М2. При вычислении Мх, например, следует модифицировать ал- алгоритм, заменив i на —i и, кроме того, ум- умножив константы в операциях умножения на (cos 2jt/3 — 1). Эти модификации осуще- осуществляются вначале, при описании алгоритма, и поэтому не учитываются при анализе вы- вычислительной сложности алгоритма. В конце этого раздела мы покажем, как можно из- избежать первого из описанных выше изме- изменений. Должно быть совершенно ясно, что тот метод, которым мы получили алгоритм для вычисления 12-точечного ДПФ, явля- является общим. Если п = пх • п2 (где пи п2 — взаимно простые) и в нашем распоряже- распоряжении есть алгоритмы для вычисления пото- поточечного ДПФ с помощью ах сложений и тх умножений (включая умножение на 1) и алгоритм для п2 точечного ДПФ, исполь- использующего а2 сложений и тг умножений, то мы можем скомбинировать их и получить алгоритм для вычисления и-точечного ДПФ с помощью гп\ • rh2 умножений ии2 • ах + + mi ' "г сложений. Так как можно было л 30 48 60 120 168 240 420 504 840 1008 2520 Число ум- иожеиий комплекс- ных чисел 72 108 144 288 432 648 1296 1584 2592 3564 9504 Число сло- сложений комплекс- комплексных чисел 384 636 888 2076 3492 5016 11352 14 642 24 804 34 920 100 188 2Rlog,n 295 537 709 1658 2484 3796 7320 9050 16 320 20 115 56 949 in log,n 442 805 1064 2487 3726 5693 10 980 13 574 24 480 30 172 85 423 бы осуществить декомпозицию и-точечного ДПФ, используя п = п2 • Пх, то мы можем получить алгоритм, использующий тпх • тп2 умножений ил, • а2 + тп2 • ах сложений. В общем случае эти два алгоритма будут различаться числом сложений. В табл. 3 приведено число сложений и умножений для полученных алгоритмов для различных ве- величин п. Для сравнения с БПФ табулирова- табулированы также величины Ъг \og2n и Зи log2n, ко- которые дают число действительных умно- умножений и действительных сложений соот- соответственно для БПФ. Как мы видели выше, одним из измене- изменений, необходимых для вычисления ДПФ последовательности из пх • п2 отсчетов, является замена w х на w\ и щ на м>\. Это- Этого можно избежать, используя различные перестановки по строкам и столбцам матри- матрицы, т. е. различные перестановки входных и выходных данных. Пусть b0, bi, ¦ ¦¦ ,Ъп _х - переупорядо- переупорядочение входнойпоследовательностиао.аг!,... . . . , ап _ j и пусть ВО,ВХ Вп _ t - пе- переупорядочение выходной последователь- последовательности Л о, Ах, . . . , Ап _г Выберем гх>г2, sx,s2 такие, что г2 • Sj • Wj = 1 mod n2, r2 - s2 • n2 = 1 mod n,. C7) Если мы выберем ТО
получаемый (&i#i2 + fcj/ifl2 + /2)-й элемент матрицы ДПФ (wn = 1) будет иметь вид w"« = 1, Wj* = 1). C8) Следовательно, эта матрица равна прямому произведению матриц поточечного ДПФ и л2-точечного ДПФ. Одна простая возможность выбора г,, ?г> si> S2 такова: rx = r2 = l,asi,S2 опре- определяются в соответствии с КТО. Завершим этот раздел замечанием, что полученные в нем алгоритмы могут исполь- использоваться в сочетании с БПФ. Тождество, на котором основано БПФ, означает, что л, • л2-точечное ДПФ (ль и2 не обяза- обязательно взаимно простые) может быть осу- осуществлено сначала л2 -кратным вычислени- вычислением л, -точечного ДПФ, затем выполнением (nt — 1)»2 комплексных умножений, а затем и,-кратным вычислением поточечного ДПФ. Разумеется, рассмотренные в данном разделе алгоритмы можно использовать на первом и третьем этапах БПФ. 5. Многомерное преобразование Фурье. Ради конкретности мы будем рассматривать только двумерное преобразование Фурье, хотя должно быть ясно, что полученные результаты справедливы для многомерного преобразования Фурье любой размерности, л, х и2-точечное ДПФ имеет вид 0<Л<л, - l,O<fc' <л2-1. C9) Из C9) очевидно, что матрица ДПФ для rti х л 2 точек равна прямому произведению матриц ДПФ Для л, точек и л2 точек, и, сле- следовательно, методы,развитые в конце пре- предыдущего раздела, немедленно применяют- применяются к многомерному ДПФ. Можно еще уси- усилить это утверждение, заметив, что в основе предложенного метода вычисления одно- одномерного ДПФ лежит переход к многомер- многомерному преобразованию. Основные результаты этого раздела ил- иллюстрируют, как может быть использовано в полной мере исследование произведения полиномов по модулю полинома и зависи- зависимость этого вычисления от поля констант. Обсуждение предыдущего параграфа пока- показывает, что описываемые методы примени- применимы также и к одномерному случаю, но их изложение проще в многомерном случае. Как было отмечено в пункте 2, мини- минимальное число умножений, необходимое для вычисления Тр, равно 2л - Л, где л — степень Р и к — число различных неприво- неприводимых множителей Р. Выбирая большее поле констант, мы можем увеличить к и тем самым уменьшить число умножений. Например, Ти*_х требует пяти умножений над полем рациональных чисел Q, но только трех умножений над Q(i). Таким же обра- образом Тиб_1 требует восьми умножений над Q и только шести умножений над Oifi**'*3). Замечая, что Tu*.i есть четырехточечная циклическая свертка, а Тц»_1 — шестито- шеститочечная циклическая свертка, ясно, что ес- если мы каким-либо способом можем исполь- использовать преимущества больших полей, то тем самым мы сможем уменьшить сложность циклических сверток и, следовательно, ДПФ. Один способ использовать алгоритм над алгебраическими расширениями поля раци- рациональных чисел состоит в применении их в ситуации, когда ДПФ применяется к нескольким множествам исходных данных. Для конкретности предположим, что мы имеем два независимых множества исход- исходных данных: {«#>, а\*\ ... , e<4,} и {<#>, «i2\.".«l22j}' Мы можем "сгруппировать" их вместе в виде Ц,? а\ > ¦ • • > an-i К гДе al ~ ("у1** аР*) • Предположим, что поле констант, которое мы желаем использо- использовать, есть Q(I), где I2 = — 1, т. е. это поле гауссовских рациональных чисел. Мы можем превратить векторы uj в алгебру над Q(/),определив: D'Ъ 42)) = (а/15 + 4°. «}J)+ 125
D0) Таким образом, мы рассматриваем вектор ay как обозначение для a' + / • д2, где./2 = = — 1. Этот прием применим во всех слу- случаях, когда число независимых множеств исходных данных равно размерности рас- расширенного поля. Как видно, в данном слу- случае умножение на / перестает учитываться (так как оно приводит к перемене коорди- координат вектора и смене одного из знаков), в то время как умножение двух элементов этой алгебры требует трех умножений ко- координат плюс некоторое число сложений. Пары элементов из двух независимых множеств исходных данных могут быть так- также преобразованы в элемент алгебры (}(ф), где ф2 + ф + 1 = 0, если вместо D0) мы определим: D1) Таким образом, мы рассматриваем вектор в у как обозначение для а} + фа ?, где ф2 = Вычислив ДПФ последовательности пар, мы получаем два требуемых ДПФ. В качестве примера рассмотрим вычисле- вычисление трехмерного ДПФ для массива данных 120 х 120 х 120, элементы которого суть комплексные числа. Применение метода, описанного в начале этого раздела, потре- потребует 5 971 968 действительных умножений и 97 203 456 действительных сложений для каждого массива исходных данных. Для сравнения приведем число умножений в случае БПФ - 2 х 1203 х log2 1203 = = 71 610 641, а число сложений — 3 х 1203 х х log2 • 1203 = 107 415 962. Так как 120 = = 8 х 3 х 5, то мы сможем уменьшить чис- число умножений, если мы сумеем реализовать четырехточечную циклическую свертку (ко- (которая появляется в пятиточечном ДПФ) за четыре умножения вместо пяти. Так как б (О расщепляет м4 - 1, мы предпочитаем рассматривать пару элементов исходного массива как алгебру над Q A). В цриложе- нии В приведен алгоритм для вычисления пятиточечного ДПФ над Q(I). Используя этот алгоритм, можно осуществить ДПФ массива 120 х 120 х 120 за 2x5 184 000 действительных умножений и 2х 96 840800 действительных сложений. Но так как в результате мы получаем преобразование Фурье сразу двух массивов данных, то мы достигаем 13% сокращения числа умноже- умножений (и незначительного уменьшения числа сложений). Должно быть ясно, что описанная кон- конструкция является общей. Например,вычис- Например,вычисление ДПФ массива 252 х 252 может быть эффективно осуществлено над Q(ty), а вы- вычисление ДПФ массива 140 х 140 х 140 мо- может быть ускорено выполнением его над Другой, более тонкий, способ использо- использования того, что вычисление Тр может потре- потребовать меньшего числа умножений при уве- увеличении поля констант, основывается на конструкции, приведенной в начале [1]. КТО утверждает, что, когда Pt и Р2 - взаимно простые, система Тр Р может быть преобразована путем соответствующей замены переменных в прямую сумму Тр и Тр . Покажем это на примере четырех- четырехточечной циклической свертки, т. е. Ти*_1. Так как м4 - 1 = (м2 - 1) (м2 + 1), то по- получаем. 1 0 1 0 0 1 0 1 0 1 0 -1 1 0 -1 0 126
*2 + *« 2 О х,-х. х, -х +Уз У г D2) Это преобразование может быть перенесено непосредственно в соответствующее ДПФ. Таким образом, декомпозиция D2) перехо- переходит в следующую декомпозицию пятито- пятиточечного ДПФ: /1 О А А А А А 0 1 2 3 4/ 1 1 о о о о 10 110 110 0-1 1 0 0 1-1 о/ 0 cos и - 1 cos Тм - 1 0 cos 2и -1 cos и - 1 0 0 0 0 0 /eo + ai а,-а, 0 0 о / sin 2u -i sin и /sin и isin2uj Если мы рассматриваем двумерное ДПФ массива 5 х 5, то оно может быть реализо- реализовано как Т 2 И2+1 )ф В [1] было показано, как вычислять Ти г +1® ® Гиз+1> используя шесть умножений, и, следовательно, общее число умножений не- необходимое для реализации 5x5 двумерно- двумерного ДПФ равно 1 +4 + 6 + 4 +12+ 6 = 33 (вместо 36). Используя эту конструкцию для получения алгоритма ДПФ для масси- массива 5 х 5 х 5 и вставляя его затем в вычис- вычислении ДПФ трехмерного массива 120 х х 120 х 120, мы получаем алгоритм, кото- который требует 90 706 176 действительных сло- сложений и 4 810 752 действительных умноже- умножений (т. е. 6,7 % от числа умножений и 84 % от числа сложений, необходимых для ре- реализации БПФ). Следует подчеркнуть, что сокращение числа операций при использовании послед- последней конструкции осуществляется за счет увеличения длины программы. Эта кон- конструкция требует записи алгоритма для вы- вычисления ДПФ 5x5x5. Автор выражает благодарность доктору Рамешу К. Агарвалу из исследовательско- исследовательского отдела IBM за его помощь, оказанную в упрощении алгоритма девятиточечного ДПФ- Алгоритм: «2 Х1 Приложение А •2 "l S3 ¦l V П2 ЮГЮ2 127
«2. 1*3 2 X3 Алгоритм: уЗ" »5 " y3+ sl ¦2 --^r- у»- 3 - ю2+ ю3 " V »6 »7 " B4- m3 0 " V  *2 " S1O «в" V юГ"в ¦3" A3. ¦ Ф Ф ¦ 1 2 3 4 m *3 Х4 жз X4 Xl X2 X4 Xl X2 X3 У1 уз У4 ml юз Алгоритм " V уз " V»3 x1+x2+x3 ' 4 X1*X2~X3 2 -m1+-2 " V10 - s S2 S6 «4 "X4 S9 S13 ф ¦ уГуз " VS3  Я2 Ш4 - mrm2 " VlO * »14 »3 " S7 " ¦2 " x2-x4 2 "io- S14 " ¦3 " V*2 S2+S4 ХГХ2+Х 4 • S7 -3-4 Vll »13 «4 3~X4 14 1 5 ¦4 - У4"У2 •  xrx2-x3«c4 2 - »4*»5 " «9-11 " *15 A4. 2 3 4 5 m xl X2 X3 X4 X5 x2 x3 x4 x5 xx x3 x4 x5 xx x2 x5 xx x5 xx x2 128
У1+У4 »2 " У2+УЭ «3 " Ve2 «3 " Ve2 *4 " *6 ¦ yl"y5 «7 " »5 " «3+у5 0 "u " «12 " У3-У4 «i3 ¦ У4-У5 ¦2 "8 " 2х 2х 2Х1 -Зх 5 +2Х2 ¦2х2 1+2х +2х -Зх 5 5 +2х -Зх. 3 4 5 ,+2х_-Зх +2х ¦2х -Зх 4+2 »5 5 Х5 В7 ¦» +x +X.+X- 5 • «8 • «9  " 2 3 814 " V"s 818 6 «18 X5. «15 " -6 «19 *23 7 «31 " В30"*9 " 1 *3 Х1 Х2 Х3 Х4 х *А X- Bi6 ¦ Vi «20- 824 " "гз^в 82* ¦ "О""! 4 *4 " 5 Хб\ уЗ у4 у5 °17 1 " 820"815 5 " VB15 '27 1 3 У1**4 уз+уб »2+В4 85-81 Х1*Х2+Х  ' "ю1 41 3+х4+х5+х6 '2 °4 •7 - 5  Ю2 »л - У.-У °8 2 816 5 г2 В7*В5 1 129
xl xl Xj-2x -x,-2x 3*X4 6 -If + 6 3"X4 +x +x 5x6 5+2x6 • 2 B4 •б 10 • 5 Ю8 " • 3 • 4 • 6 в17 ЮГЮ2 S22 " »2ГЮ4 *19 " "Г"э *23 " S25 " "V^ *26 " e25+"8 *27 " *29 " *18*S24 s30 " e18"*24 *31 " s2O~*26 S33 " *22+S28 »34 ' S22-S28 *1 - *29 *2 - *31 *3 " *33 *4 " S30 *20 " '19*4 S24 *28 *27 "8 »32 4 Б1. Ло \ Алгоритм: *i " V'i l-s 1 0 0 w w 0 0 Приложение Б *0 '1 *2 " "О"'] Ю1 ¦ 1#S2 2iri w-e2 --1 130 Б2, Алгоритм: m0 - l-s3 mx Ло""о » (cos u-1)*s, 2iri 3 S3 ¦ V'O - i sin  " 2ir
БЗ. -w1 1 'o\ w-. Sl " V 'Г'З '6 B2 i sin u-s. u 2ir Б4. w° -3 w1 w4 -2 2irl 5 Алгоритм. sl S5 Bo " V'4 " »1+S3 -1-., e3 " V'2 S2+S4 B4 " V'2 V'O /cos u+cos 2u Л fcosu-cos2u\ 2_w_ ( j V'S5 B2 " \ 2 1 S6 u " Г ш - i(sin u+sin 2u)'s. ¦. - i sin2u*s7 - itsin u-sin2u) sio- 1 3 S14 " s10*S12 *15 " *10"S12 6 7 sir"i3 S14 6 A4 " S15 Б5. w1 w2 „3 w5 w6 -° w4 w1 -5 w2 -6 w3 w° w5 w3 w1 w6 w4 w2 131
Алгоритм: •г " •„-' 1 5 9 13 " V "Vе "V* 6 S 0 4 «2 »6 8ю 814 "V = V = 813 'б а5 »3 +86 •3 Ш V*3 »7 = V 811 = 8з"в5 »15 * 82-»4 #4 »8 «12 «16 4 = 87 = »5 * S4 3 +S5 ¦•l "86 V»2 2*i Bcos u-cos2u-cos3u \ 5 ;-.10 cos u-2cos2u+cos3u 1 ¦4 "e /cos u-fcos2u-2cos3u , /2slnu-sin2m-sin3u- XV 3 (slnu-»sln2u-f2sin3u 3 12 s15 nu+sm2u-sin3u /3Jnu-2sin2u-sin3u \ 1 3 / S18+B2 S20 2 S25 " m5+m6 «26 7 * B5"B6 S29 ' Ш7 830 S31 * e20+S26 S33 ° 822+828 4 A0" B0 5 «35 = 824+S30 Al = 831 A5 = S34 A2 " 3 A6 " 2 A3 = S36 Б6. «° «° w° «° w° w° w° w° w° w1 w2 w3 w4 w5 w6 w7 w° w2 w4 w6 w° w2 w4 w6 w° w3 w6 w1 w4 w7 w2 w5 w° w4 w° w4 w° w4 w° «4 w° «5 w2 w7 w4 w1 w6 w3 w° „6 w4 w2 w° w6 w4 w2 w° w7 w6 w5 w4 w3 w2 w1 1 V al a2 •3 •4 •5 a6 •7/ 1 1 2irl 8 Алгоритм. = +a4   »3 132
 " "9 " 3" V V V"ii  0 4 " "ГД5 " "Г"з ¦ V"n  "ll 5 -.3«7 " +87 " +88 88 812 816 " V*7 " V87 " 86-88 B2 = 1-i - i sin 2w m, = i-sin2u'S, m? p i sin u-s., m- - cos u-s. 7 1 B6+m7 8 9 B23 0 4 V»e B19-1 5 4 Б7.  A6 A_ 6 Al = S23 A5 = 5 0-2 A2 = S17 A6 = S18 w° w° w° w° w° V° w° w° w° 012345678 wwwwwwwww w6 w° w3 w6 w3 w6 „° w4 w8 w3 w7 w2 „6 w1 w5 w° w5 w1 w6 w2 w7 w3 w8 w4 w° w6 w3 w° w6 w° w6 w3 „° w7 w5 w3 w1 w8 „6 w4 w2 „° w8 w7 w6 w5 w4 „3 w2 w1 6 4 a a a a a a a a a 0 1 2 3 4 5 6 7 8 Алгоритм. 81 85 89 813 817 mo тз ° " Va8 = a3+a6 = Sl+S3 ¦ VS4 " 87-Sl " 1-812 ¦ (cos3u-l) 82 86 S10 814 S18 "l •85 = аГа8 ¦ аз"аб " S9+S7 " 813+88 ¦ S2"S4 (- - 1-е m. = isin3u* 83 S7 811 815 819 B2 86 " +a2 »a4+ " sio " V = i B5 = a5 +85 83 S8 84 88 812 816 820 = a7- ¦ а4"а5 = 8ll+a0 " 83"87 " V82 sin3u-s14 u = — ,2cosu-cos2u-cos4u4 ( 3 ' 15 _ B6 - ,cosu+cos2u-2cos4u. ( > .Cosu-2cos2u-fcos4u. B7 " l 3 '"817 it sinu-sin2u-2sin4u. B19 . .Sinu-f2sin2m-sin4u. 10 " l 1 ' 20 133
821 S25 S29 S33 = 37 =41 S45 " S23'm2 = S28+m6 = 332~Ш7 = =36+Ш10 = S29'S35 = 833-=39 mo Ai = 845 A6 " Б8. A^ Алгоритм: Sl * a0+a8 5 2 10 =9 " Va9 =13 " Vall =17 " =1+S3 =21 * =9+Sll S22 ' = 26 ! = 30 S34 S38 S42 =40 S23 15 " =20 ¦ v = =27 = v -v = =31 A2 A7 w 0 =2 * 86 ¦ =10* 814* 818* 822 " +m "¦б "8 % +=37 * S43 * 842 a. k- T a0"a8 ' Vaio - «Г«9 : аз'ап : SrS3 = =9"=11 =23 =27 S31 S35 = 39 S43 A3 = A8 ¦ -д.. s 5 S S S S - - - = s = s • . 1 3 7 11 15 19 23 V=22 =26+=21 = 30+m7 = 34+m9 =38"ГО10 = ЗГ=37 24 A4 " 41 .15 w - * Val2 " a6+a14 " Va13 * a7+al5 * =5+=7 " =13+=15 =24 " S28 * = 32 = = 36 = =40 = =44 = = 43 =4 =8 S12 =16 =20 =24 =23 Ш2 = 27+ro5 =37'ГО5 ¦4-»9 =29+S35 =33+=39 = a4"al2 " a6"a14 = Vai3 " a7"al5 * =5-=7 = =13"S15 =27 * =21+=23 =29 " =25+=27 830 * 825-=27 =31 * =22+=24 3 ¦ 86+=8 834 " 8б"=8 835 * =10+=16 837 " =12+814 m5 " ^-^lB m6 B2 = 1-=30 B3 " 1>826 m6 2 m10 " i =in4u" 4 m14 = i(slnu-sin3U)-s35 ш^ . i(8inu + sin3u) m17 " <c°su + cos3u)-s36 ш18 - (cos3u - 134
1 * V B4 5 * В6 + В8 2 6 3 "  +  7 " 3 + 5 '44 " -5 "  #48 " #43" 9 * 4 + 6 3 * B10 * Bll 7 " В17" В16 4 * В10" 8 Ш18 Ш16 1 " "9 + В12 «59 * 1* 5 #52 " И9 " В12 #56 " В13 " "IS 0 * *51 " *55 1 = 2* 6 *62 " #52~ 856 3 " 3* 7 *64 " 3 " *57 "бб " 4* 8 7 " 9* 3 #68 " #59~ #63 0 * 0" 4 1 " 1* #65 #72 " #бГ '65 3 * 2+ 6 #74 " "б2~ 866 А0*В1 А1 * 7 В47 А3 " #72 А4 " #41 А5 " 1 8 *7 " "б8 А8 " В2 *9 " "б9 9 *74 А12 " 2 А13 * 3 *14 А15 * 0 Приложение В В1. 1 1 2 3 4 - Х1 Х2 Х3 Х Х2 Х3 Х4 Х Х3 Х4 Х1 Х 4 1 2 з] У1 Ч уз У4 Алгоритм:  " V  * V #3 •б " ")" "з  * V 1-в4 •в " V 1в4 Х1+Х2+Х3+Х4 - • »7 «4 0 " V В2 3 * V 1 4 V "и 5 2 6 * "Ю" 1>812 3 5 4 135
B2. Алгоритм: w° w° w° w° „° w1 „2 w3 0 2 4 1 W W W W „° w3 w1 *4 „° »4 w3 w2 82 ¦ V а4 o\ w w w w w1 ao\ al a2 a3 a4 83 87 ¦v ¦ v .cosu a2 I>84 + cos2u 2 84 " "в" - 1) • V V 85 a2 I>84 u - 2и 5 cosu - cos2u *2 ' 2 Kslnu + I sin2u) # Ksinu - I sin2u) 10 " И0+ Bl 811 " 810+ m2 14 ¦ B4" B3 815 " Sll+ S13 818 " 812" I>814 812 ¦ 810' B2 816 " "И" S13 813 " 817 ¦ 812+ I#814 A0   A, - S 15 A2 " 817 A3 * 8 A4 ¦ 816 1. S. WINOGRAD, "Some bilinear forms whose mul- multiplicative complexity depends on the field of con- constants," to be published in Mathematical Systems Theory, Vol. 10. 2. J. W. COOLEY & J. W. TUKEY, "An algorithm for the machine calculation of complex Fourier series," Math. Сотр., v. 19,1965, pp. 297 - 301. 3. С M. FIDUCCIA & Y, ZALCSTEIN, Algebras Having Linear Multiplicative Complexities, Tech- Technical Report 46, Dept. of Computer Science, State University of New York, Stony Brook, August 1975. 4. A. L. TOOM, "The complexity of a scheme of functional elements simulating the multiplication of integers," Dokl. Akad. Nauk SSSR, v. 150, 1963, pp. 496 - 498 = Soviet Math. Dokl., v. 4, 1963, pp. 714-716. 5. С. М. RADER, "Discrete Fourier transforms when the number of data samples is prime," Pros. IEEE, v. 5, no. 6, June 1968, pp. 1107 - 1108. 136 6 I. J GOOD, "The interaction of algorithm and practical Fourier series," /. Roy. Statist. Sot. Ser. B, v. 20, 1958, pp. 361 - 372; Addendum, v. 22, 1960, pp. 372-375. Статья 5. О взаимоотношении между двумя быстрыми преобразованиями Фурье И. Дж. Гуд Аннотация. Цель этой заметки - как можно более четко представить взаимосвязь между дву- двумя основными быстрыми методами, используемы- используемыми для вычисления дискретного преобразования Фурье, и несколько обобщить один из них. Этот
метод применим ко всем таким лииейиым пре- преобразованиям, матрицы которых выражаются в виде прямого произведения'. Быстрое преобразование Фурье является быстрым методом для вычисления дискрет- дискретного преобразования Фурье, определение которого мы приведем ниже для логиче- логической замкнутости статьи. Применения БПФ И ДПФ описаны в [1—4] (см. также библио- библиографию [5, 6, 4]). В этой заметке мы бу- будем обсуждать только математические и вы- вычислительные аспекты задачи. Основная цель заметки - как можно более четко пред- представить взаимосвязь между двумя основ- основными алгоритмами БПФ [7, 8]. Другие ме- методы являются усовершенствованными вер- версиями этих двух алгоритмов. Каждый ме- метод обладает своими преимуществами, один из них применим к более широкому клас- классу модулей, другой — распространяется на широкий класс многомерных преобра- преобразований, которые не обязательно являют- являются преобразованиями Фурье. Одномерное ДПФ по mod г вектора (последовательности а0, аи . . . , at _,, элементами которой в данной статье служат действительные числа) есть другой вектор, состоящий из г комплексных чисел а*, а* .... а*.,, определяемых уравнениями я? = *? аго." E = 0.1, ,t- 1), A) где со = ехр B ni It) — корень степени t из единицы. ДПФ имеет красивые аналогии со свойствами обычного преобразования Фурье, такие как формула обращения, те- теорема о свертке и даже формула суммиро- суммирования Пуассона (см., например, [9 — 11])- Многомерное ДПФ по mod(f!, t2, ¦ ¦. , tn) n-мерного массива, содержащего tx,t2, ¦ ¦ ¦ . . . , tn чисел аг, где г - вектор (riyr2, . .. ¦ ¦ ¦ >rn)(rj = 0,1 tf -1;/ = 1,2,... . . . , и), есть и-мерный массив комплекс- комплексных чисел а|, определяемый уравнениями {rjlSj = 0, 1, ¦¦¦,tj-\J= \,---,n), B) где со;- = ехр B т ltf)(j = 1, . . ., и). Мас- Массивы аг и в? также можно рассматривать как векторы, если задано правило для упо- упорядочения т = ti t2 . .. tn элементов каждо- каждого из них в виде последовательностей или "цепочек". Когда все tj равны t, можно говорить об л-мерном ДПФ по mod t. Коэф- Коэффициенты многомерного ДПФ по mod 2 (массива действительных чисел дг) все являются действительными числами, так как в этом случае все coy равны —1. Много- Многомерное ДПФ по mod 2 представляет собой также пример преобразования Адамара [12]. Матрица преобразования Адамара ор- ортогональная, и каждый ее элемент равен +1 или -1. Она известна также под названием "аналлагматической" мозаики [13]. Дискретное преобразование Фурье — од- одномерное или многомерное — есть, конеч- конечно, линейное преобразование вектора (с t или tit2 . . . tn элементами), а имениа умножение его на матрицу преобразования вида (со") или (co^'si • • • wj/1*")- В пос- последней матрице подразумевается некоторое соглашение об упорядочении строк и столб- столбцов. Простейшим является лексикографи- лексикографическое упорядочение t^t2. . . tn векторов г = (г,. . . гп), как если бы они были бы словами в словаре, и такое же упорядоче- упорядочение для "столбцов" s =(s 1... sn). При этом элементы аг должны быть упорядочены таким же образом, чтобы преобразовать массив в вектор. Первый алгоритм БПФ, описываемый ниже, основывается на том, что одномерное ДПФ по модулю г, где т = txt2 . . . tn и tv, t2,. . .,tn — попарно взаимно простые, мо- может быть выражено как многомерное ДПФ по mod(fi, t2, . . . , tn)^ Ради полноты из- изложения эта процедура приводится из ста- статьи Гуда [7] !. В первую очередь мы уста- устанавливаем 1—1 соответствия между скаля- скаляром г и вектором г, а также между s и s следующим образом. Напомним китайскую теорему об остат- остатках или теорему Cyrt-Цэы, известную в Ки- 1 В статье [7] есть опечатки. В матрице, при- приведенной внизу с. 363 найдены четыре неверных элемента. На с. 364, строчка 10, вместо 5^^ следует читать Ьг ¦ Нижний предел произведе- произведения внизу с. 365 должен быть 1. На с. 368, строч- строчка 13, опущена звездочка. 137
тае еще в I в. н.э. [14, 15]. Эта теорема утверждает, что если целое число известно по модулю п целых чисел (т. е. известны его остатки при делении его на каждое из этих чисел) и эти целые числа взаимно просты попарно (т. е. наибольший общий делитель каждой пары равен 1), то это целое число может быть однозначно определено по модулю произведения. Решение может быть записано в явном виде следующим образом. Если 11,..., tn — попарно взаимно простые ht'(i tn и если остатки равны s,,... . . . , sn, т. е. в стандартных обозначениях теории сравнений s s s,(modfi),¦ ¦ ,s = sn(modfn), то f. V'.A, (modr;0 < s < т;0< .«, < i, ит. д.), №) где (т/^i) ~* , например, означает величину, обратную целому числу т/f i по модулю t^. Это обращение существует и единственно по модулю t\ вследствие того, что rjti и ti — взаимно простые. Поэтому первый член выражения для s единствен по моду- модулю т , и по тем же мотивам единственны все остальные члены. Читатель может непосред- непосредственно убедиться, что величина s удовлет- удовлетворяет всем п данным сравнениям. Более того, каждое из т возможных систем из п сравнений имеет по меньшей мере одно ре- решение, определенное формулой C). Эти ре- решения должны быть единственными, так как есть всего т классов вычетов по моду- модулю г и ни один из них не может соответство- соответствовать более чем одной системе и сравнений. Формула C) аналогична интерполяционной формуле Лагранжа. Мы используем ее для установления A—1) соответствия между s и s = («1, . . . , sn), которые я называю ки- китайским соответствием или китайским пред- представлением s. Например, если Г, = 3, t2 = 8, т = 24, то s = 16 si + 9 sz (mod 24). При за- зафиксированных 11 tn коэффициенты (в данном случае 16 и 9) известны и одно- однозначно определены. С другой стороны, A-1) соответствие между гиг задается как т 0< г < т;0« г, < г,ит.д.)> D) которое я называю руританским соответ- соответствием !. Так, например, если tt =3,t2 = 8, г = 24, то получаем г = 8r j + 3r 2 (mod 24). Теперь я утверждаю, что уравнения а* = *? йгы" (ы = е2"'"^ эквивалентны, где 2Г = ат и й* = а*по опре- определению и где соответствия являются ки- китайским и руританским соответственно. Чтобы доказать это, заметим, что г = (тД>, (mod tv), s = —I -1 (mod tv), так что rs = rvsvt/tv (mod tv), и отсюда из теоремы Сун-Цзы в виде, приведенном выше, rs = ^^---(-] + • • • = ? rvsvT/lv. Более того, = ш"\ так что что и требовалось доказать. Следовательно, одномерное ДПФ по mod t1t2---tn может быть вычислено поч- почти с такой же скоростью, что и многомер- многомерное ДПФ по mod (ti, ¦ ¦ ¦ , tn), где tt, . . . . . . , tn— попарно взаимно простые. В соот- соответствии с этим теперь мы рассмотрим вы- вычисление многомерного ДПФ или в более общем виде линейного преобразования от ах к а*в виде «1—1 Г„- 1 где мы заменили со'1 s l на К^ (г ,, s,) и т. д., 1 Руритаюш - сказочная страна из повести английского писателя Энтони Хоупа "Пленники Зенды". - Прим. ред.
и более уже не налагаем никаких ограниче- ограничений на tly . . . , tn. Последующее обсужде- обсуждение E) и F) было приведено в [4]. Мы будем называть {5) п-мерным К-преобра- зованием. Хотя каждая из функций Klt К2, ¦ ¦ ¦ , Кп может рассматриваться как квадратная матрица, правую часть E), ко- конечно, нельзя рассматривать как произве- произведение вектора на несколько матриц, одна- однако ее можно рассматривать как произведе- произведение вектора на одну матрицу большой раз- размерности, строки которой проиндексирова- проиндексированы г , а столбцы — s. Эта матрица большой размерности, как станет видно ниже, явля- является "прямым произведением" малых мат- матриц, а также произведением матриц боль- большой размерности, которые в свою очередь соответствуют Klt К2, ¦ ¦ ¦ , Кп. Сейчас мы укажем простой способ суммирования в E) без привлечения матричных обозначений. Суммирование может быть осуществле- осуществлено сначала по г,, затем по г 2 и т. д. Ре- Результат первого суммирования имеет вид и записывается как L i (г2, г3, . . . , rn, s t), т. е. как функция г2, г3, . . . , rn, s^. Сле- Следующий этап включает сумму Y,Ll(r1,r3,---,rm,sl)K1{r1,s2), результат суммирования записывается в ви- де L2 (г3, . . . , rn, slt s2) и т. д. Таким об- образом, на каждом этапе нам необходимо хранить в памяти только л-мерный массив и в целом осуществить только (ti + t2 + + . . . + tn)T скалярных умножений. Этот подход является основой метода [7] фор- формирования многомерного ДПФ, но в ука- указанной работе запись была матричной. Этот метод уменьшает количество арифме- арифметических операций по сравнению с умно- умножением вектора на одну матрицу большого размера, упомянутую выше, что требует т2 скалярных умножений. Например, т = 5 х х 7 х 8 х 9 = 2520, в этом случае число ска- скалярных умножений уменьшается в 80 раз по сравнению с непосредственным умножени- умножением т2 = 25202, если аг умножается на т х 7 матрицу Kifri, si) • ¦ • К„(г„, sn). Позже мы обсудим обращение многомер- многомерного /f-преобразования, но сначала рассмот- рассмотрим обобщение простого метода суммиро- суммирования, приведенного выше, что приведет ко второму методу вычисления БПФ. Рассмотрим аналогичную кратную сумму '1=0 2, SlJ s2)... г„=0 • •' К„(гя, s,, s2, • • •, s.) F) и заметим, что приведенные выше рассуж- рассуждения остаются практически без изменений и для этого более общего суммирования. Суммирование ат Kt по гх приводит к выра- выражению вида, L1 (г2, . . . , rns j); суммирова- суммирование LiK2 по г2 приводит к выражению вида L2(r3 rn,sl,s2) и, наконец, сум- суммирование Ln _ хКп по гп приводит к вы- выражению Ln(sl, s2 sn). На каждом этапе в памяти надо хранить только л-мер- л-мерный массив, но размер массива меняется от этапа к этапу, если только tp не равны между собой. Метод, использованный Кули и Тьюки [8] для вычисления одномерного ДПФ, фактически сводит эти вычисления к виду F). Их метод применим к модулю т = = ttt2 ¦ . . tn, но впервые был подробно рассмотрен для случая т = 2", т. е. tt = = t2 - . . . = tn = 2. Общий метод был рас- рассмотрен подробно в статье Бингхема, Год- Годфри и Тьюки [16]. В этом методе соответ- соответствие между одномерным ДПФ и кратной суммой определяется установлением A—1) соответствий между г и г, s и s, отличных от китайско-руританских соответствий. Вмес- Вместо этого каждый из индексов г и s записы- записывается в системе счисления со смешанным основанием, но с различными типами об- обращения в виде s=t,t3. .. tnsn+ t3tt.. .*„*„_,+ tnst+ e,.G) Если считать tx аналогом 10, t\t2 — анало- аналогом 100 и т. д., то понятно, что представле- представление г записано в системе со смешанным основанием, но что компоненты г располо- расположены в обратном порядке по отношению к цифрам г. Мы будем наэьшать такую за- запись представлением в системе счисления
со смешанным основанием с инверсией цифр. С другой стороны, представление s обращает порядок оснований tlyt2,..,tn, но оставляет компоненты s в том же поряд- порядке, что и цифры s. Таким образом, имеют место два различных типа обращения и, сле- следовательно, представление г и s совместно могут быть описаны как инверсно-основное или реакционное представление или соот- соответствие. Существуют вариации этого мето- метода, зависящие от различных представлений целых чисел в системе счисления со смешан- смешанным основанием, которое, конечно, не яв- является смешанным, когда t г = t2 = • • • ~ tn- Однократное суммирование можно рассматривать как кратное сумми- суммирование по разрядам г в его представле- представлении по смешанному основанию. Подставляя также Представление по смешанному осно- основанию, получаем „\{,2 ¦ ¦¦¦ КЛ',,*,, s2, ••¦,«„), (8) где (так как озт = 1) Ki(r,,si) = <»""¦••'-""¦; K2(r2, sus2) = (и'>ч---<«-1'1(|-«+ч»; Если теперь переставить элементы аг в соот- соответствии с представлением г по смешанно- смешанному основанию, то правая часть (8) прини- принимает вид F) и может быть вычислена в соответствии с простой процедурой, опи- описанной выше. Заметим, что, строго говоря, неверно записывать at вместо аг в сумми- суммировании, так как в этом случае мы исполь- используем символ а для обозначения двух раз- различных функций. Для метода Кули - Тьюки или метода смешанного основания переход от одно- одномерного ДПФ к кратной сумме не требует попарной взаимной простоты t г, t2,... ,tn. В этом отношении этот метод имеет преиму- ллп щество по сравнению с китайско-руритан- ским методом, так как он обеспечивает больший простор для применений, когда речь идет о ДПФ. Очевидно, что такой под- подход наиболее широко применим, когда все tv равны 2, что представляет наиболее прос- простой случай для программирования на ЭВМ. С другой стороны, кратная сумма E) про- проще, чем F) и, следовательно, наверное, бо- более часто может встречаться (как много- многомерное /f-преобразование) в контексте пре- преобразований, отличных от ДПФ, особенно когда все Кх, . . . ,Кп соответствуют одной и той же функции. Некоторые приложения такого рода приведены, например, Эндрю- сом и Каспари [17] '. Также надо отметить, что в случае ДПФ, если требуется построить специальный вычислитель с высоким быстро- быстродействием, используя фиксированные вели- величины ti, t2, ¦ ¦ ¦ , tn, то китайско-руритан- ское представление г и s может оказаться более удобным по сравнению с представле- представлением по смешанному основанию. Для обсуждения алгоритмов в матрич- матричной записи необходимо использовать пря- прямые произведения (кронекеровские произ- произведения) матриц [18]. Прямое произведение ВхС двух матриц В - {Ьф (/,/ = 0, 1,...) и С = (см„) (ju, v = 0, 1, . . . ), которые не обязательно квадратные, определяется как блочная матрица2 bi0C A0) Это представляет сокращенную запись для обычной большой матрицы, элементы кото- которой — скаляры. Данное определение эквива- эквивалентно тому, что элементами В х С являются dr,. = bri.,lcri.si, A1) где г = (ri,r2) и s = (Si, s2), упорядочен- упорядоченные лексикографически. Например, если В и С обе размера 2 х 2, то 1 Обобщения рассмотрены также в [l] Прим. пер г Обобщение прямого произведения матриц приведены в [2]. -Прим пер.
s г 00 01 10 11 00 01 10 11 b00c01, b0lc00, bOicol = BxC, A2) т. е., например Ьцсоо соответствуют г^ = 1, Si = 1, г2 =0, s2 = 0. (Читатель теперь должен вспомнить метаматематический принцип Сэ- виджа: он должен прямо сесть на жесткий стул с карандашом в руке [19].) Общее определение прямого произведения несколь- нескольких матриц определяется по индукции, причем это произведение ассоциативно, и поэтому не надо ставить круглые скобки. Более того, формула A1) обобщается со- совершенно естественно. Прямое произведе- произведение п матриц МA) х МB) х • • х М(<0, МA1) = (ти) (/ = 0, 1, • ¦ ¦, pv— I; j = 0, I, • • ¦ <jv-l) имеет своими (г s) элементами N где где упорядочение строк и столбцов лекси- лексикографическое. Это определение справедли- справедливо, даже если матрицы не квадратные и имеют различные форму и размер. Если можно определить обычное матрич- матричное умножение M(v)N^, т. е. число столбцов М("' равно числу строк N1"' (i> = 1,2,... ),то (МA|хМйх ••)(NA»xNB»x-)= • = (MA»N*l>) х (MBWB)) х ¦••. A4) В частности, если М размерности t х t и не- невырожденная, то (М х М х ¦ • -)(М"' х М х ¦ • •) = = /, х /, х ¦ ¦ ¦ = /,„, где 1и — единичная матрица их и. Короче, (М1) =(M~xt\ A5) где символ [и] обозначает "прямую л-ю сте- степень", и-мерное /f-преобразование, опреде- определенное E), имеет матрицу, равную прямо- прямому произведению матриц Ки Кг, . . . , Кн, где матрица К^ имеет своими элементами ^i (ri > si) и т. д. Это верно, если строки и столбды упорядочены лексикографически. Таким образом раскрывается связь прямо- прямого произведения матриц с предыдущим об' суждением. Интересна представимость прямого про- произведения матриц в виде обычного произве- произведения разреженных матриц в соответствии со следующей теоремой {разреженная мат- матрица — матрица, содержащая в основном нули). М = МA) х МB) х • ¦ ¦ х М(л) A6) = (а(ф. Здесь @ •, 0 < r,,_vJ Si <pv+i,0< s2 < pv+2. A7) ("Дельта" Кронекера определяется как 6* = 1, если а = Ъ 6* = 0, в остальных слу- случаях). Заметим, что ненулевые элементы А " есть (если не учитывать повторений) элементы М^"', но их размер зависит от всех Л Таким образом, А11 'есть матрица (рiр2... ... рп) х (р2рз • • • Pn<7i)> имеющая по большей Mepepip2 • • -Prfl\ ненулевых эле- элементов. А^ есть матрица (р2Рз • • • Pn<7i) x х (РзР4 • • • PnQiQ*)' имеющая по большей мере р2рз • • • РпЧхЧг ненулевых элементов. А^ есть матрица (pv . . . pnqt ... qv _,) х х (Pv +1 • • • Pn<7i - • • 4V). имеющая по боль- большей мере pvpv +1 • • • РпЧ\Чг • • • <7„ ненуле- ненулевых элементов. А^п^есть матрица (pnqiq2 ¦ ¦ ¦ ¦ ¦ ¦ 4n-i) x (QiQ* ¦ ¦ ¦ 4п)> имеющая по большей мере pnq\q2 ¦ ¦ ¦ qn ненулевых эле- элементов. А^1' . . . Ап есть матрица (pip2 . ¦ ¦ ... р„) х (qiq2 ¦ ¦ ¦ qn), а именно матрицам Произведение a?W, где компоненты а есть таким образом может быть записано как -^"'). A8) 141
Для примера возьмем и = 2, Pi=l,<7i = = 2, р2 = 3, q2 = 4 и запишем Д° A9) 2^1 lP2 00 01 02 00 аоо 0 0 = 01 «01 0 0 10 0 И 0 «00 «01 0 «00*00 «00*1 «оо*: А х В 0 0 0 «00*01 «00*11 floo*zi 20 21 0 0 0 0 а00 а01 00 *оо 0 *,0 0 *20 О «00*02 °00*03 «00*12 °00*13 ЯОО*22 < гОО*2 3 01 *01 0 *п 0 *2. 0 «01 floi 02 *02 0 *12 0 *22 0 *оо 1*20 03 *оз 0 *13 0 *2 3 0 «01*01 «01*11 «01*21 10 12 0 0 *00 *01 0 0 *10 *11 0 0 *20 *21 «01*02 «01*12 «01*22 13 0 *02 0 *,2 0 *22 «01* «01* «01* 14 0 *оз 0 *,з 0 *23. 03 13 23 = Я1Я2 Р2Я1 00 01 10 = 11 20 21 В этом примере, если нам надо умножить горизонтальный 3-точечный вектор или вер- вертикальный 8-точечный вектор на А х В, то для этого необходимо 3x8x8= 192 ска- Идентичность этой процедуры с E), когда pv = qv = tv (v = 1, 2, . . . , л), опи- описывается следующими преобразованиями для случая ti = 2, t2 ~ 3. [«00. «01. «02. °10. «11. «12] с00 - [«ООС ОО . «00^01 00 соо 0 0 Сю 0 0 1С10 01 с01 0 0 Сц 0 0 «OlC 10 0 с00 0 0 с10 0 51 + 11 0 с0, 0 0 Сц 0 20 0 0 соо 0 0 с,о 21 0 0 с01 0 0 Сц «11си,«О2СоО + М2 00 01 02 = 10 11 12 «12C1O>«O2CO1 «12^11], = lr лярных умножений, в то время как умно- элементы которого есть Ъаг r cr s жение сначала на А , а затем на А или точно так же> как после первого суммиро- наоборот потребует только 4x8 + 3x2 = вания в E). Далее 00 01 02 10 11 12 L'oo. 'oi' 'ю. 'п. 'го. '21J О О dio dy О О dlu d2 О О 42 о о О ^оо d0 d12 О О О d10 ^1 d22 О О О d20 d2 '20^21. ••¦.'01 0 00 01 10: 11 20 21 '21^22], = 32 скалярных умножений. В общем слу- элементы которого есть Ъ1Г s dr s чае число скалярных умножений уменьша- точно так же> как П0сле ВТорОго суммиро- ется с вания в E). Первый элемент в этом векто- Р1Р2 " Pn1iQ2 ¦•?». ре есть
и подобным образом все остальные пять членов также согласуются с E). Теорема, соответствующая A6), была доказана для случая pt = ... =рп = <jfi = ... . . . = qn в [7], настоящее доказательство приведено для общего случая. Обращение многомерного А"-преобразо- вания существует, если матрицы N&^, опре- определяемые как Nfiv)= (Kv (rv, «„)), являют- являются квадратными и невырожденными. Это легко доказать, проверив соотношение B9), приведенное в выводах и обсуждении. Про- Проведем доказательство в выражениях пря- прямых произведений матриц. Если записать а я а* для векторов-столбцов, элементами которых являются ат и/*, то эти элементы, упорядоченные лексикографически по г и s, позволяют записать E) в виде а*' = а'(МA) х М<2> х • • • х М(п)) = а'М. B0) Очевидно, Affp)(Af<1'') "* = It и, как сле- следует из A4), а' = а»{(М(ПГ • х ¦ • • х (Mw)-'}. B1) Определитель М равен \м\ = д;"- • • • д;'\ B2) где Др = | Л^") |. Этот результат получает- получается по индукции из случая и = 2, что доказа- доказано Макдаффн [18], который ссылается на Гензеля, Нетто и фон Штернека. В случае, когда Л/^"' независимы от v и имеют поря- порядок t и определитель Д, имеем |М| = Д"'""'. B3) Для выражения обратного многомерного /(Г-преобразования с помощью обычных мат- матричных умножений мы можем применить A6) для матриц, обратных Ы№ ¦ Иначе мы можем обозначить дополнительные к Nft") множители как Aff. (/, / =0, 1, ...,?„_,) и записать#"' = Ь$\, где B4) *«•»#•» = V.- B5) Это справедливо, даже если А&) вырож- вырождена и правая часть B5) равна нулю. Если А^ невырожденная, то из B5) следует, что (A<v)) ~l = B^v)lAv. Приведем доказатель- доказательство B5) В качестве примера соотношения B5) запишем т00 0 т10 0 т0, 0 ти 0 0 т00 0 т10 0 т 0 01 тп Д 0 0 0 0 д 0 0 м м 0 0 0 0 д 0 00 01 0 0 0 д 0 0 Мос м0 Ли к In j 0 0 0 0 м10 м,, =0,1,-•., U-.tr-1- где Л = = — wi10, M10 = — Заметим, что как Aiv), так и обратная к ней матрица являются разреженными. Определители А^ можно точно опреде- определить из B2), полагая Дх = . . . = Av _, = = Д„+, =...=Д„ = 1. Это следует из того (опустим обсуждение определения знака), что \А^\ = ^(-1Г{и'иГ2 («=т/а B6) и, следовательно, из B5) или из известного свойства алгебраических дополнений [20, с. 165] |B(v)| = At(,.-i)/rv(_!)»(.- ц/2 B7) Конечно, если все М^> ортогональные (или унитарные), то их обращение равно их (комплексным) транспонированиям и, следовательно, вычисление многомерного ^-преобразования и его обращение приво- приводят к почти одинаковым действиям. Матри- Матрица многомерного ДПФ становится унитар- унитарной при делении на у/~т (или если каждую A#v) разделить на у/Т^), точно так же, как интегральное преобразование Фурье стано-
вится унитарным, если предусмотреть нор- нормирующий множитель l/r/^jr перед ин- интегралом. Когда каждая матрица Aft") квад- квадратная ир„ = qv -tv, как выше, то возмо- возможен другой способ факторизации Af<1J x х ... х М&) на п разреженных матриц [7]: М(п х ... х м<"> = CwCm ¦ ¦ ¦ С<">, B8) где С<" = М(" х 1,2 х ••• х ltn, СB> = /„ х МB> х • • • х /,„, С<"> = /„ х /,2 х • • • х Мм Такая запись следует из A4) и иногда более удобна, чем использование A6), хо- хотя структура С1, .... С*"* не так проста по сравнению со структурой А1, . . . , А п Выводы и обсуждения. Иейтс [21] при- придумал простой алгоритм, использующий только сложения и вычитания для вычис- вычисления взаимодействий в 2"-факторном экс- эксперименте. То, что алгоритм Иейтса можно рассматривать как многомерное ДПФ по mod 2, было отмечено Гудом [22]. Гуд [7] показал, что этот алгоритм может быть обобщен применительно к любому много- многомерному ДПФ и даже к более общим пре- преобразованиям. Это зависит от первых трех положений: 1) Многомерное ДПФ по mod t есть ли- линейное преобразование и соответствует ум- умножению на матрицу (порядка tn, где п — число измерений), которая может быть вы- выражена как и-я прямая степень матрицы порядка t. 2) и-я прямая степень матрицы М равна обычной и-й степени матрицы А, определен- определенной как 3) Хотя А есть матрица tn x t", но она разреженная и содержит только tn +1 нену- ненулевых элементов и таким образом умно- умножение на М требует только п • tn *1 обыч- обычных умножений вместо t2n. Это положе- положение и приведенные выше два могут быть обобщены на случай неравных модулей ty'> t2, ¦ • ¦. *„. Полученное обобщение мож- можно продолжить и дальше. Таким образом, мы получаем быстрый алгоритм для вычис- вычисления и-мерного /^-преобразования, опреде- определенного E), частным случаем которого является «-мерное ДПФ. Замечания, приве- приведенные непосредственно после E), описы- описывают этот алгоритм без использования матричных понятий. Когда К1, . . . , Кп в E) определяют од- одну и ту же функцию, матрицы А (Ч ..., А^ все равны между собой и матричная форму- формулировка принимает самый простейший вид. В уравнении F) Kv не могут быть одина- одинаковыми, если только уравнение не сводит- сводится к E). Многомерное ДПФ по mod 2 представля- представляет собой преобразование Адамара, которое было рассмотрено и применено в работе Пратта, Кейна и Эндрюса [12] '. Другой пример /iT-преобразования доставляет пре- преобразование Эндрюса — Каспари [17] 2, в котором ортогональная матрица преобразо- преобразования имеет своими элементами „lrs c<"?|r-I](-1)''* (tv = 2; v =- 1, 2, • • •, п), где а — действительное положительное число, /S = УП^/а, И [г, s] = "Х (Гц ф sH). Здесь ф обозначает сложение по mod 2 (исключающее ИЛИ). 4) Если в выражении E), которое опре- определяет многомерное ЛГ-преобразование, функции /vi^i.sO, K2(r2,s2), ¦ ¦ . , рас- рассматриваемые как элементы матриц, квад- квадратные и невырожденные и если обратные матрицы имеют элементы Jt (rt, Si), J2 (^2 > s2) и т. д., то обратное преобразование может быть записано как я, = I *?•/.(*., '.)••• -/.(s». *•») B9) s Оно может быть просто получено с по- помощью дельта-функции Кронекера и пред- представляет другую запись B1). 5) При умножении на большую матрицу следует обратить внимание на ее фактори- 1 Использование преобразований для обработ- обработки массивов данных описано в [з] — Прим. пер. 2 См, также [l] - Прим. пер
зацию в виде произведения нескольких разреженных матриц, для того чтобы умень- уменьшить объем вычислений !. 6) Новые методы кодирования, обобща- обобщающие ДПФ, могут изобретаться произволь- произвольно из нескольких разреженных матриц рав- равных порядков и их произведения как мат- матрицы преобразования. Для обеспечения од- однозначного декодирования необходимо, что- чтобы разреженные матрицы все были не- невырожденными и имели простую конструк- конструкцию, если их обращения — разреженные матрицы. Кроме методов, обсуждаемых в данной статье, можно использовать, напри- например, перестановочные матрицы как наибо- наиболее простые и самые разреженные среди невырожденных матриц. Они могут ока- оказаться слишком разреженными, так как переставляют элементы вектора, на кото- который действуют, и, таким образом, не спо- способствуют выравниванию вариации одних элементов по отношению к другим. Такое выравнивание очень удобно в случае систем связи, но перестановка сама по себе обеспе- обеспечивает некоторую робастиость по отноше- отношению к шумовым выбросам. Может оказать- оказаться полезным использование функций Klt Кг, .... Кп, приведенных в F) вместо функций соответствующих E), хотя пред- предположительно в этом случае труднее полу- получить удобные вычислительные схемы. 7) Одномерные ДПФ могут быть пре- преобразованы в многомерные либо с помо- помощью китайско-руританского метода, либо с помощью "реакционного" метода, применя- применяемого значительно чаще. После перевода в многомерную форму можно применять вычисления, описанные выше. Статья [7] привела к появлению популярной статьи Кули и Тьюки, в которой был описан ре- реакционный метод. Их ссылки на мою ста- статью были несколько преувеличены, так как создали впечатление, что оба метода почти идентичны. Их методы больше напоминают методы Рунге [23] и Даниельсона - Лан- 1 Общего метода факторизации произвольной матрицы на разреженные ие существует. О разре- разреженных матрицах см. [4] - Прим. пер. цоша [24], работы которых в целом ус- ускользнули от внимания океанографов, спе- специалистов по рентгеновской кристаллогра- кристаллографии и многих других исследователей, час- часто пользующихся гармоническим и спек- спектральным анализом. Указанные авторы пи- писали свои работы до эры ЭВМ и в этом смысле опередили свое время, хотя БПФ был бы полезен уже в течение последних 100 лет. При создании специализированных ЭВМ следует иметь в виду как китайско-ру- ританское, так и реакционное представление. 8) Одним из применений ДПФ является обращение циклических матриц, т. е. мат- матриц (Cs_ г ) размерности t х t, где s - г бе- берется по mod t [25]. Циклическая матрица 10 х 10 легко может быть обращена, так для Этого потребуется приблизительно 108 вместо 1018 операций, необходимых в слу- случае произвольной матрицы. Собственные значения циклической матрицы получают- получаются в результате ДПФ ее первой строки, а обратное ДПФ обратных им величин дает матрицу, обратную к циклической матрице. Таким же образом рекуррентные блочно-цик- лические матрицы (определенные рекур- рентно либо как циклическая, либо как блочная матрицы, элементы которой явля- являются рекуррентными блочно-циклическими матрицами) или, что то же самое, опреде- определенные как (as_ r ), где г и s упорядоче- упорядочены лексикографически и s — г берется по mod(?i, t2, ¦ ¦ ¦ , tn), имеют своими соб- собственными значениями результат преобра- преобразования с помощью многомерного ДПФ ее первой строки, и таким образом могут быть обращены подобно простой цикли- циклической матрице. (Блочный циркулянт опре- определен в книге Мюира [20] как определи- определитель.) Собственные векторы рекуррентной бл очно-циклической матрицы представляют собой столбцы матрицы W'wtf'1 • w'gs* )¦ 9) Пусть р - простое число и g — один из его первообразных корней, т. е. 1, g, g2, . . . ,gP ~2 отличны по модулю р. Пусть otj. (г = 0, 1, . . . , р -2) - вектор целых чисел, тогда определим теоретико-числовое преобразование Фурье <=\ ад" (modр). 145
Легко доказать, что обратное преобразо- преобразование имеет вид р-2 «г = - X a?9~"(modp), C1) а преобразование свертки р-2 X «Л-, равно а*C*. Циклическая матрица (р -1) х х (р - 1), элементы которой - целые чис- числа, имеет собственные значения, равные преобразованию ее верхней строки,и может быть обращена по модулю р с помощью обращения вектора, образованного из об- обратных по модулю р собственных значений, почти так же, как в предыдущем пункте. Рекуррентные блочно-циклические матри- матрицы, элементы которых являются целыми числами по модулю р, имеют своими соб- собственными значениями результат многомер- многомерного преобразования их верхних строк, причем зти преобразования определены оче- очевидным образом по модулю фиксиро- фиксированного р. Эти многомерные преобразова- преобразования могут быть использованы для кодиро- кодирования векторов целых чисел по модулю р. Вычисления можно проводить в соответ- соответствии с простой схемой E) или в эквива- эквивалентном матричном виде, но все арифмети- арифметические операции должны, разумеется, вы- выполняться по модулю р. Если р заменяется составным числом т, то можно определить можно определить = 0, l,-',pv-2), C2) «I = X агв" Этот случай не представляет интереса, так как мы не имеем простого обращения, да- даже когда т имеет первообразный корень (степени которого принимают все значения, взаимно простые с т). Но C0) можно обобщить другими способами, которые мы сейчас опишем. 10) Можно обобщить C0) и его много- многомерную форму на случай конечных полей F (полей Галуа). Конечное поле содержит р" элементов и всегда имеет первообраз- первообразный корень g, для которого 1, g, g2, . . . . . . , gPv ~2 представляют различные эле- элементы поля [26]. Если аг (г = 0, 1, . . . . . . ,pv - 2) есть вектор элементов поля, то как (одномерное) преобразование Фурье— Галуа. Подобным же образом для массива аг (г =(?!, . . . , гп)) можно определить многомерное преобразование a.* = Xarflfi1I1-"flf«"s\ C3) г где gi, g2, - • • , gn — первообразные эле- элементы F, не обязательно различные. Это преобразование может быть записано в виде a? = X«^'riSl+' +C"P"S", C4) Г где Ci, . . . , сп — некоторые константы, вза- взаимно простые ор" — 1. Формула обращения имеет вид C5) а для свертки получаем X (X «А-*)»?" • ¦ • »»"s" = *?«¦ C6> Рекуррентные блочно-циклические матрицы над полем Галуа имеют собственные значе- значения в виде результата многомерного пре- преобразования Фурье — Галуа их верхних строк, а собственными векторами - столб- столбцы матрицы (g[lSl) х ... х (grn"S"). Дан- Данное преобразование может быть исполь- использовано для кодирования "предложений" или "слов", в которых каждое слово, явля- являясь элементом F, может быть выражено с по- помощью v целых чисел по модулю р, а именно коэффициентами слова, когда группа пред- ставима с помощью полиномов по двой- двойному модулю (по модулю р) и по модулю неприводимого полинома [27]. (Конечные поля часто используются в другом контек- контексте в теории кодирования и теории плани- планирования статистических экспериментов.) Для многомерного преобразования мож- можно снова применить простой алгоритм, соот- соответствующий E), или эквивалентные мат- матричные методы, используя арифметику по- полей Галуа. Я не знаю более простого перехо- перехода от одномерного к многомерному пре- преобразованию Фурье — Галуа. 146
Список литературы [I] IEEE Trans. Audio Electroacoust., vol. AU-15, June 1967. [2] IEEE Trans. Audio and Electroacoust.,чо\. AU-17, June 1969. [3] I. J. Good, "Polynomial algebra. An application of the fast Fourier transform", Nature, vol. 222, 1969, p. 1302. [4] -, "The discrete Fourier transform: Work by I. J. Good", June, 1969, pp. 1-6, mimeographed. [5] R. С Singleton, "A short bibliography on the fast Fourier transform", in [2], pp. 166-169. [6] I. J. Good, "The fast Fourier transform and disc- discrete Fourier transform: Bibliography", June 1969, pp. 1-5, mimeographed. [7] -, "The interaction algorithm and practical Fou- Fourier analysis", Л Roy. Statist. Soc. Ser. B, vol. 20, 1958, pp. 361-372, vol. 22, 1960, pp. 372-375. [8] J. W. Cooley and J. W. Tukey, "An algorithm for the machine calculation of complex Fourier seri- series". Math. Computation, vol.19, 1965, pp. 297- 301. [9] I. J. Good, "Random motion on a finite Abelian group", Proc. Cambridge Phil. Soc., vol. 47,1951, pp. 756-762. [10] -, "The serial test and other tests for random- randomness", Proc. Cambridge Phil Soc.,vol. 49, 1953, pp. 276-284. [II] -, "Analogues of Poisson's summation formula", Amer. Math. Mon.,vol 69, 1962, pp. 259-266. [12] W. K. Pratt, J. Kane.and H. С Andrews, "Hada- mard transform image coding", Proc. IEEE, vol. 57, Jan. 1969, pp. 58-68. [13] W. W. R. Ball, Mathematical Recreations and Essays. London. Macmillan, 1940.'(Revised by H. M. S. Coxeter.) [14] G. H. Hardy and E. M. Wright, An Introduction to the Theory of Numbers. Oxford: Clarendon Press, 1938. [15] P. Bachmann, Niedere Zahlentheorie, pt. 1. Leip- Leipzig- TeubnSr, 1902, p. 83. [16] С Bingham, M. D. Godfrey, and J. W. Tuk'ey, "Modern techniques of power spectral estima- estimation," in [l]. pp. 56 - 66. [17] H. С Andrews and K. L. Caspari, "A generalized technique for spectral analysis," IEEE Trans. Computers, voL C-19, Jan. 1970, pp. 16 - 25. [18] С. С MacDuffee, The Theory of Matrices. New York: Chelsea, 1956, p. 82 [19] L J. Savage. The Foundations of Statistics. New York. Wiley, 1954, p viii. [20] T. Muir. A Treatise on the Theory of Determi- Determinants. New York: Dover, 1960. [21] F. Yates, The Design and Analysis of Factorial Experiments. Harpenden Irnperial Bureau of Soil Science, 1937 [22] I. J. Good; review of M H. Quenouille's "Design and analysis of experiment." in Attn. Eugen., vol. 18, 1953, p. 263. [23] С Runge, "Uber die Zerlegung empirisch gegebe- ner periodischer Funktionen in Sinnuswellen," Z. Math. Physik, vol. 48, 1903, pp. 443 - 456; vol.52, 1905, p. 117. [24]G С Danielson and С Lanczos, "Some impro- improvements in practical Fourier analysis and their application to X-ray scattering from liquids," /. Franklin Inst., vol. 233, 1*42, pp 365 - 38,0 and 435-452. [25] I. J. Good, "On the inversion of circulant matri- matrices," Biometrika, vol. 37, 1950, pp 185 - 186. [26] G. Birkhoff and S. MacLane,A Survey of Modem Algebra. New York:Macmillan, 1944, pp.428 - 431. [27] R. D Carmichael. Introduction to the Theory of Groups of Finite Order. Boston Ginn, 1937, p. 255 Статья 6 Быстрое преобразование Фурье в конечном поле Дж. М. Лоллард Аннотация. В конечном поле может быть опре- определено преобразование, аналогичное дискретному преобразованию Фурье, причем это преобразова- преобразование может быть достаточно эффективно вычисле- вычислено с помощью алгоритма быстрого преобразова- преобразования Фурье Преобразование может быть применено при вычислении сверток длинных последовательно- последовательностей 1^елых чисел методами целочисленной ариф- арифметики. 1. Введение и основные свойства Пусть GF(pn), или сокращенно F, оз- означает поле Галуа (конечное поле) из рп элементов, где р — простое, an — положи- положительное целое числа. Пусть d является де- делителем р" - 1 (возможно, d = р" - 1), а г является элементом порядка d в муль- мультипликативной группе F* ненулевых эле- элементов поля F (который определенно су- существует, поскольку эта группа являет- си циклической порядка р" — 1 [1,с. 125]). Тогда можно определить преобразование последовательности чисел (а,-) @ < / < 147
< d — 1), являющихся элементами F в пос- последовательность чисел (At) следующим об- образом : А< = 2 а/'. i-o A) Преобразованная последовательность D,-) зависит от выбора г, которое в дальней- дальнейшем будет считаться фиксированным. Преобразование, обратное A), т. е. эквивалентное множество уравнений, поз- позволяющих определить (af) через (At), определяется следующим образом: «<=-*'• 2 Л.г-\ B) «-о где d' — целое число, удовлетворяющее условию d'd = р* - 1. C) Преобразование A) и ему обратное B) могут быть вычислены с помощью ал- алгоритма быстрого преобразования Фурье [2, 3], который достаточно подробно уже описан в различных модификациях (см. бо- более подробный список работ в [4]). В ра- работах этих авторов основное внимание уделялось вычислению дискретного преоб- преобразования Фурье последовательностей ком- комплексных чисел (см. п. 7), но приведенные в них алгоритмы в равной мере применимы и в рассматриваемом случае; корни из еди- единицы e(k/d) m е'"*", (к — целое число) повсюду следует заме- заменить на г *, а операции умножения и сложе- сложения комплексных чисел - на соответству- соответствующие операции в F. Преобразование A), аналогичное обычному БПФ, наиболее прос- просто выполняется, когда целое число d — су- существенно составное (т. е. представляет собой произведение большого числа не- небольших по величине сомножителей, напри- например, d = 2m ) хотя более сложные модифи- модификации применимы к любым d ([5],разд. 8). В любом случае общее число операций (в поле F или в поле комплексных чисел) уменьшается до О (d • log d) вместо О (d2) операций, необходимых при вычислении этих преобразований наиболее очевидным 148 способом. В случае A) зта оценка пред- предполагает, что подходящее значение г уже найдено, а степени г1 @ < / < d — 1) вы- вычислены (см. разд. 5). Основная причина, по которой преобразование A) вызывает интерес, заключается в следующем свой- свойстве свертки. Предположим, что имеется три пары последовательностей: (дг-) и (At), (bf) и (В,), (с{) и (С,) @<i<d- — 1), которые представляют соответству- соответствующие пары преобразований, связанные соотношением A), и что С, Тогда 2 Л i-0 *-0 (О < i < d - 1). D) <М>*,@ < i ^ d - 1). E) Если мы продолжим последовательность (Ь,) по всем / таким образом, что она ста- станет периодической с периодом d, то в этом случае E) можно записать как = Т. i-0 EА) Таким образом, вычисление циклической свертки последовательностей (я,-) и (Ь,) по формуле E) может быть сведено к по- почленному умножению преобразованных пос- последовательностей в соответствии с D) и вычислению обратного преобразования B). Соответствующие алгоритмы для последо- последовательностей комплексных чисел хорошо известны (см. [4]). Другое простое свойство преобразования A) состоит в том, что ? А) = d E ata*-u F) i-0 i-0 и аналогично <-0 1-0 Доказательства свойств, выраженных со- соотношениями A) - G), будут даны в сле- следующем разделе. Эти свойства аналогичны хорошо известным свдйствам ДПФ. В дей- действительности они сохраняются в более общем случае, в любом поле F (конечном или нет) при условии, что г имеет конеч- конечный порядок d в мультипликативной груп- группе F* поля F.
2. Доказательство основных свойств Сначала покажем, что для любого цело- целого к, 4-1 2 rik = d, если isO (mod d), (8) в остальных случаях. При к = 0 (mod d) соотношение (8) со- совершенно очевидно, поскольку каждое сла- слагаемое в левой части равно единице. При к ^O(modd) воспользуемся соотношением - г1) = 1 - г" = О, из которого следует (8), поскольку \—гкФ Ф 0. Чтобы показать, что из A) вытекает B), воспользуемся A), C) и (8) и упрос- упростим правую часть B) следующим образом: <i-l <f-l Л-1 — а 2*1 г 2^ а'г = ' —" ' ( ' а' .-о /-о Г^о »-¦>)= -d' а> / Доказательство того, что из B) вытекает A), а также доказательства других свойств, выраженных с помощью соотношений D - 7), столь же легко получаются из (8). 3. Приложения преобразования [i ] Умножение полиномов над полем GF(]f). Пусть полиномы, которые должны быть перемножены, соответственно равны fix) = 22 OiX1. 8(x) - 22 bix' •-0 .-О ({ад, {Ьд Е GF(p")), (9) где m I > m 2. Произведение полиномов есть mi 4я. "(х) — 2Lj е<х , ¦ -о где @ < A; < ffi, + m2). A0) Предположим сначала, что (р" - 1) су- существенно составное ипд + т2 <.рп — 1. Выберем делитель числа <i, для которого d>т 1 +ш2, и продолжим последова!ель- ности (д,) , (Ьг-), -положив д; = 0 (т 1 < < / < (d - t)), Ь,- = 0 (т2 <i < (d - 1)). Применив к этим продолженным последо- последовательностям алгоритм свертки, приведен- приведенный в п. 1, для F = GF(p), получим необ- необходимые A%). Точнее говоря, в результате применения этого алгоритма получим (ск), удовлетворяющую соотношениям с* = ек, @ < к < тх + т,), с, = 0, (т, + та < к «S d - 1). Если ш, +т2 >рл-1 или р" - 1 не яв- является существенно составным, может ока- оказаться полезно работать в расширении F = = GF (pbi) {I — положительное целое) поля GF(p"). Следует, чтобы число р*1 — 1 бы- было существенно составным и ml + т7 < р1п — 1. Эти условия вполне могут быть вьшолнеиы в наиболее важном практическом случае р = = 2, и = 1 (см.,например, [6],[15]).Другие рекомендации даны в п. 3(ii) и [8]. (ii) Умножение целочисленных полино- полиномов (или свертка последовательностей це- целых чисел). Мы хотим вычислить после- последовательность (ек), определяемую A0), где (а,-), (Ьу) теперь — обычные последова- последовательности целых чисел. Необходимо следить за оценкой сверху каждого члена этих последовательностей, поэтому предполо- предположим, что |в.| < Л/, @ < i < л»,), @ m3), так что в силу A0) |е^| < тгМ\М2 ( = L — для краткости). Пусть р - простое число, ad- существенно составное число, причем d\(p — 1), d > > (m, +m2) np>2L. Тогда Ы < L < р/2. A2) Используя прием, описанный в п. 3(i) при F = GF(p), получим последовательность (сг-), в которой сг- = е ,• (mod p) @ < к < < т х + т 2) и согласно A2) ек представля- представляет наименьший по абсолютной величине вы- 149
чет по mod р числа ск @ < к < тх + т2). Можно заменить требуемое в этом предпо- предположении одно, возможно очень большое, простое число р несколькими меньшими простыми числами. Выберем пары простых чисел р^ и существенно состаэных целых чисел dt-, причем Pi = 1 (mod d;), (Ki<t), и положим р ~Р\Рг • • • Pf > 2Z,)- Применяя вышеприведенный алгоритм по очереди к каждой паре (p^dj), получаем вычеты каждого е^ по каждому модулю Pj. По ним можно найти наименьшие по аб- абсолютной величине вычеты последователь- последовательности (ек) по модулю р = рхРг . . . pt с по- помощью китайской теоремы об остатках ([8, с. 94] , [9, с. 27]), и так как согласно A2) \е/с\ < р/2,то найденные вычеты яв- являются искомыми значениями целых чисел. [iii ] Умножение очень больших целых чисел. Пусть эти целые числа записаны по основанию и следующим образом. g = %% @ <dt <u, 0 <Ь{ <и). Произведение этих чисел есть й= Z к к', где (е,), по-прежнему определяемые выра- выражением A0), не обязательно удовлетво- удовлетворяют условию 0 < е,- < и. Таким образом, после получения (е,) с помощью метода, описанного в п. 3(ii), остается выполнить некоторые переносы, чтобы получить h в стандартной форме. Однако при благоприятном выборе пара- параметров они сводятся к сравнительно триви- тривиальной операции. Этот алгоритм совместим с методом Лукаса для проверки простоты чисел Мерсенна М„ = 2Р — 1, где р — простое число ([8, с. 16 и 223], [10]). В качестве примера рассмотрим более подробно метод умножения двух целых чисел, состоящих из 10 000 бит (двоичных цифр) в цифровой вычислительной машине с длиной слова в 24 бита. Выберем и= 221 с тем, чтобы mt и пц оказались меньше 29 = 512. В методе, описанном в 3(Н) выберем t = 3, dx =d2 = = d3 = 210 = 1024. Таким образом, нам потребуется три простых числа ри р2, ръ; удовлетворяющих условию 221 < л, < < Рг < 22 l(mod 210); например числа pi = 6 946 817, р2 - = 7 340 033, ръ = 7 667 713, которые в дей- действительности удовлетворяют условию pt = I (mod 21в). Легко видеть, что условие Р1Р2Р3 > 2Z, вы- выполнено. С помощью этих значений вышеприведен- вышеприведенный алгоритм был реализован в виде про- программы в машинных кодах ЭВМ ICL 4120. Для умножения двух различных целых чи- чисел потребовалось 45 с машинного време- времени, в то время как при использовании пря- прямого алгоритма "длинного перемножения", использующего все 24 бита в каждом сло- слове, требуется 95 с. Для возведения в квад- квадрат целого числа (что является основным элементом одного шага алгоритма Лукаса для простых чисел р порядка 10 000) затра- затраты машинного времени соответственно составляют 30 и 48 с. В этом случае выпол- выполняются только два преобразования по каж- каждому простому модулю вместо трех, в то время как при "длинном перемножении" требуется только вдвое меньше операций, чем прежде. В абсолютном выражении по современным нормам получаются значи- значительные затраты времени [10]. Вероятно, наибольшее быстродействие может быть достигнуто в специализирован- специализированной вычислительной машине, использующей возможность обширных параллельных вы- вычислений при выполнении преобразований. Такие вычислительные машины уже постро- построены для выполнения обычных преобразова- преобразований [4]. Безусловно, параллельные вычис- вычисления также могут быть использованы при реализации алгоритмов "длинного умноже- умножения".
(iv) Деление полиномов надполем GFQt), Пусть (в,-) @ < i < d — 1) представляет последовательность в конечном поле F = d-i = GFipn),rned\pn - 1,и пусть f(x) = ^с.х*. Тогда A) может быть записано в следу- следующем виде: А, = /(г') @ < J < d - 1). Таким образом, то, что мы называли быстрым преобразованием Фурье в поле F, можно рассматривать просто как быст- быстрое вычисление полинома под полем F. Если d - рп - 1, так что каждый нену- ненулевой элемент F может быть представлен как W @ </ <d - 1), то из этого следует, что условие, при котором преобразованная последовательность (АЛ не содержит нулей, просто означает, что f(x) не имеет корней в поле F, за исключением разве х = 0. Сле- Следует отметить, что при d < р" — 1 это усло- условие является достаточным, но не необхо- необходимым. Этим замечанием мы воспользуемся в следующем алгоритме деления. Рассмотрим полиномы }(х) = 52 <*••*' и *(¦*) =? е<х<> (mi>\,m2> 1) над полем F = GF(p), при- причем известно, что fix) неприводим. Требу- Требуется выяснить, верно ли, что /00 I *(*). A3) и если это так, то найти частное ?-0 biX\ A4) Выберем целые числа п > 1 и d > 1 (су- (существенно составные), такие, что </> т, + та> </|pn- I, mi J „. Продолжим последовательности (в,-), (ег) до ^ членов (т. е. 0 < i < d - 1), дополнив их нулями (как это было сделано в 3 (i), и применим преобразование A) в поле F' = = GF(рп) для получения последователь- последовательностей (А{), (Et) @ < i <d -1). Так как m^ X п, то поле F' не содержит поля GF(pmi), которое является полем разло- разложения полинома fix) (см. [1, гл. IV]), поэтому F' не содержит корней полинома fix) и, значит, At * 0 @ < i < d - 1). Введем последовательность /?г- как В, = ?<М @ < f < rf - 1) A5) и выполним обратное преобразование B) в поле F' для получения (Ь,) @ < i < d — 1). Если Ь< = 0 (m, < i < </ - 1), A6) то выполняется A3), A4) определяет частное, a bt € GF(p) @ < / < m2), в противном, случае A3) не выполняется. Доказател ь»с т в о. Предположим сначала, что A3) выполняется, а A4) есть частное. Продолжим последовательность (Ь,-) до d членов, дополнив ее соответствующим ко- количеством нулей. Согласно алгоритму умно- умножения, приведенному в п. 3 (i), преобразо- преобразование (Bj) удовлетворяет соотношению А<В< = Е( @ < i < d - 1). Следовательно, алгоритм деления приво- приводит к последовательности (Ь,) с описанны- описанными свойствами. Теперь предположим, что выполняется A6). Если g(x) определить выражением A4), то из A5) следует, что/(х) • g(x) •= = h (х) (над полем F' ). Предположим, что некоторые члены (Ь{) @ < / <mj) не принадлежат полю F. Если Ь^ — первый из таких Ь, тогда, рас- рассматривая коэффициент прих* + т> в A7)(| получим выражение (m tnin та — в котором каждый элемент, за исключе- исключением Ь^, принадлежит полю F, причем ат Ф 0. А это явное противоречие, поэто- поэтому' Ь{ SF@<J <m2),что и утверждалось. 4. Преобразование в кольце целых чисел по модулю т Для специального кольца, которое не яв- является полем, и именно кольца Rm целых чисел по модулю составного целого числа т, также может быть указан вариант пре- 151
образования, аналогичного A). Предполо- Предположим сначала, что т — степень простого чис- числа, например т - рп, р > 2, и что d — дели- делитель (р — 1). Мультипликативная группа R* элементов кольца Rm, взаимно простых с т, остается все еще циклической и имеет порядок р" ~1 (р - 1), который делится на d и, таким образом, содержит число г порядка d. Преобразование последователь- последовательности элементов Rm по-прежнему будет определяться выражением A), а резуль- результаты, приведенные в A), также будут иметь силу. Чтобы доказать зто, достаточно по- показать, что (8) по-прежнему выполняется (как сравнение no-mod m). В нетривиальном случае к Ф- 0 (mod d) теперь имеем - г*) ¦ 1 - rik (mod m = р"), и необходимо показать, что г к Ф 1 (mod p). Числа г,- @ < / < d - 1) образуют подгруп- подгруппу порядка d группы R*, а элементы кольца Rm, сравнимое с единицей по mod р, обра- образуют группу порядка р" ~1, причем поряд- порядки этих подгрупп являются взаимно прос- простыми числами. Поэтому они могут пересе- пересекаться только по единице. Это и доказы- доказывает сделанное выше утверждение. Более общо можно выбрать т = рах1 . . . . . .p°t,ratd\ (p{ -1)A</ <t) иг име- имеют порядок d(mod р."' для каждого i (К < I <t), и, следовательно, также имеют порядок d (mod m). 5. Практические методы выполнения преобразования (i) Случай F = GF (р). Очевидный метод состоит в представлении элементов поля F целыми числами 0, 1,...,(р — 1)и вы- выполнении операций сложения и умножения с последующим приведением по mod p. В другом варианте, когда р не слишком ве- велико, умножение по mod(p) можно заме- заменить сложениями по mod (р — 1) и операци- операциями поиска по таблице при помощи заранее построенных таблиц степеней первообразно- первообразного корня w(mod р) [11, с. 63]. Этот прием хорошо известен и реализован в вычисли- вычислительных машинах, работающих в системе "классов вычетов" [9]. Удобно выбрать г (порядка d в F*) в ви- виде г = wd' (mod p), где, как и в п. 1, d' d = = р - 1. Один из методов нахождения пер- первообразного корня w заключается в после- последовательной проверке положительных це- целых чисел в соответствии со следующей тривиальной теоремой, которая справедли- справедлива и в случае F = GF (р"). Теорема. Элемент w в поле F = GF(pn)no- рождает F*, мультипликативную группу пр- ля F тогда и только тогда, когда для каждо- каждого простого множителя q числа рп — 1 (при q<p" - 1) имеет место м,^Рп~^1^Ф 1. Эту теорему можно применять с помо- помощью приема, который обсуждался в [12, разд. 3]. (И) Случай F = GF(pn), где п > 1. Рас- Рассматриваемый ниже метод поиска по табли- таблице [7, с. 37 —50] является,вероятно, наилуч- наилучшим из возможных, когда р" не слишком о велико. Выберем образующую w группы F* и представим ненулевые элементы поля F как степени w, причем нулевой эле- элемент обозначим специальным символом (например, 0 = w*). Операции умножения в поле F отвечает просто сложение показа- показателей степени по mod(p" - 1). Операция сложения ненулевых элементов w", wb (а < b) выполняется следующим обра- образом: записываем а затем обращаемся к таблице, в которой содержится решение х уравнения при известному. Следующий, хотя и менее эффективный метод, позволяет избежать использования таблицы с р" входами. Пусть F [х] - коль- кольцо полиномов от одной переменной х над полем GF (р) и пусть h (x) e F [х] — непри- неприводимый полином степени п. Элементы по- поля F - X?F(pn) могут быть представлены классами вычетов по mod [h (x) ] кольца F{x) и записаны следующим образом:
i-0 (a, G GF(p)). A8) Сложение в поле F делается непосредг ственно, а умножение требует образования произведения двух полиномов в кольце F[x], записанных в форме A8), с после- последующим делением на Л (x) для получения остатка в той же самой форме. Можно подобрать k (x) таким образом, чтобы элемент w (х) = х сам оказался обра- образующей группы F*, и тем самым выбрать элемент в качестве нужного нам элемента порядка d. В качестве Л (х) неприводимых много- многочленов, порождающих^,,, годятся все непри- неприводимые множители полинома Ф „ _ 1 (х) в кольце F (х), где Фт (х) означает круго- круговой многочлен. Ilr (. Эти полиномы представляют интерес в теории последовательностей, формируемых регистрами сдвига [6,13]. Эффективный алгоритм проверки поли- полинома Л (x) степени п, неприводимость кото- которого заранее неизвестна, доставляется следу- следующей теоремой, которая является обобще- обобщением результата, приведенного в [13]. Теорема. Пусть Л (x) — полином степени в п (> 1) в кольце F [х]. Тогдай (х) \Фр„ _, (*) (в кольце F [х]) тогда и только тогда, ког- когда (а)хРп "' = 1 (mod h (x)) в кольце F [х] и (Ь) для каждого простого множителя q числа р" — 1 при q < р" — 1 (если такой существует), лолиномы h (х), хт— 1, где т= (рп - l)lq являются взаимно простыми в кольце F [х]. Доказательство. Необходимость условий (а) и (Ь) совершенно очевидна. Предположим, что эти условия выполня- выполняются и что А ! (х) является неприводимым множителем А (х) в кольце F [х]. Тогда h 1 (*) I фрп _ t (^), откуда следует, что A i (х) имеет степень п, следовательно, h(x) = Лй,(х) (к G F, к И 0) и А(х) | *>,._,(*). Чтобы воспользоваться (а), найдем оста- остаток от деления полинома хР" "' — 1 на по- полином А (х) с помощью метода, приведен- приведенного^ п. 5A). Для проверки условия (Ь) сначала най- найдем тем же самым способом остаток от де- деления полинома хт — 1, а затем с помощью алгоритма Евклида найдем наибольший об- общий делитель полученного полинома и по- полинома А (х) (для полиномов над полем это выполняется аналогично [12, разд. 2]). В результате должны получить корстарту, отличную от нуля, т. е. элемент поля F. (ш) Деление в GF (р" ), п > 1. Алгоритм деления, рассмотренный в п. 3 (iv), требует деления в поле F = GF(p") (см. выраже- выражение A5)). Если записать а/Ь - а-Ь'1 (а, Ь ? F, Ь 9* 0), то задача сводится к вычислению обратных элементов в поле F, которая обсуждалась в [12] (хотя там рассмотрен случай GF(p)), но он допускает обобщение на произволь- произвольное GF(p"). Один из методов основан на соотношении (Ь 0). (iv) Структура программы. Как и в слу- случае обычного преобразования Фурье, проще всего разделить вычисления преобразований A) и B) на два раздельных этапа — этап перестановки и этап вычислений, которые могут выполняться в любом порядке [17]. Однако для большинства приложений, вклю- включая те, которые рассмотрены в п. 3, доста- достаточно получить преобразованную последова- последовательность в обратном порядке, поэтому этап перестановки из программы преобра- преобразований может быть исключен, как зто бы- было сделано в алгоритмах свертки действи- действительных числовых последовательностей. 6. Обобщение на случай к измерений До этого момента преобразование A) как в поле GF(p), так и в поле GF(p") при п > 1 рассматривалось применительно к одномерному случаю, т. е. к одномерной последовательности (а,-) элементов поля F. Однако возможны обобщения и на слу- 153
чай большего числа измерений. Пусть F = = GF(p")(n> 1) - конечное поле, dlt d2, . ¦ ¦ , dk — некоторая последователь- последовательность делителей р" - 1. Пусть w - образу- образующая группы F*, положим fid, = рп - 1 A </<*), w ' имеют порядок так что элементы dj в группе F*. Тогда преобразование /г-мерной матрицы («,......4i)@ « /, < rf, - 1для/ = I,--- ,k) может быть определено следующим обра- образом У,-О A9) Обратное преобразование имеет вид <,-0 .„-О (О < Л < rf, — 1 Для! = 1, •••,*). B0) Свойства, выраженные в форме соотно- соотношений D) — G), допускают простые обоб- обобщения и позволяют распространить алгорит- алгоритмы, рассмотренные в разделе 3, на слу- случай fc-мерных сверток или умножения по- полиномов от к переменных. Так, соотноше- соотношения, аналогичные D) и EА), записывают- записываются следующим образом-. @ < U < d, - 1ДДЯ/ = 1, ,к); B1) • = У /.-О ik-0 B2) 7. Сравнение с обычным дискретным преобразованием Фурье Л-мерное дискретное преобразование Фурье можно записать следующим обра- образом 154 1 У.-о Л-о B3) где, е(х) = е2мх и (df) A </< fc) теперь является некоторой последовательностью положительных целых чисел. Обратное преобразование имеет следу- следующий вид. (I \-l d,-\ it-l Пdi) ¦ Л •¦¦ ? Свойство свертки по-прежнему выража- выражается соотношениями B1), B2), которые в данном случае, разумеется, являются обычными равенствами между комплекс- комплексными числами. Предположим, что это преобразование применяется для точного вычисления сверток последовательностей целых чисел. Вообще говоря, проще всего сделать это в обычной арифметике действительных чисел, причем действительная и мнимая части комплексных величин хранятся в па- памяти отдельно и все операции с ними вы- выполняются только с конечной точностью. Эта точность должна быть такой, чтобы ре- результат вычисления свертки, полученный при округлении до ближайшего целого чис- числа, соответствовал истинным значениям сумм. Однако в некоторых специальных случаях подобной трудности не существует. Рассмотрим сначала случай dl = ... = dk = 2. B5) Экспоненциальные множители в B3) и B4) в этом случае принимают следующий вид Соответствующие множители в A9) и B0) также вырождаются в это выражение, поскольку единственным элементом поля F = GF(pn), имеющим порядок 2 в груп- группе F*, является (-1). Выбор делителей в соответствии с B5) означает, что р долж-
но быть нечетным, чтобы удовлетворялось соотношение d, = 2| (р" - 1). Для выполнения преобразования теперь требуются только операции сложения и вы- вычитания, поэтому вычисления могут быть выполнены гораздо быстрее и проще, чем в общем случае. Это справедливо и для B3) даже в том случае, когда входные данные не являются целыми числами (см. 14). Од- Однако в том случае, когда они являются це- целыми числами, преобразования B3) и B4) выполняются в пределах арифметики целых чисел и обеспечивают более простые сред- средства точного вычисления свертки B2), так что преимущество преобразования в конеч- конечном поле A9) в этом случае исчезают пол- полностью (см. [15, с. 29 - 32]). Возможно, стоит отметить, что обычное преобразование B3) с целочисленными входными данными в принципе всегда может быть вычислено путем выполнения операций с целыми чис- числами. Предположим для простоты, что dx = = ...=dk = d,n положим в = e(l/d) = e27rI/d. в есть алгебраическое число степени ip = = <p(d) ([16, гл. IV]), для которого мини- минимальный полином совпадает с Ф^ (*) (см. n.5(ii)). Величины, с которыми необходимо опе- оперировать при вычислении B3) и B4), яв- являются целочисленными полиномами от в, которые можно представить в следующем виде. ,_, z = ? ь<е{. »-0 Однако умножение чисел в подобной форме включает умножение полиномов с последующим делением на нормированный полином Фа(в). Это - относительно слож- сложная процедура, что делает алгоритм непри- неприемлемым для всех, кроме малых значений d. (Сравните с результатами, приведенными в п. 5 (ii), где полиномы имели степень только пу здесь же их степень может быть почти рп.) 8. Вычисление A), когда d не является существенно составным Методика, приведенная в [5] для вычис- вычисления дискретного преобразования Фурье, применима также для вычисления преобра зования A) в случае F = GF(p). Рассмот- Рассмотрим для простоты случай одномерного преобразования (с теми же обозначениями, что и в п. 1). Необходимо наложить условие 2d\p — 1 вместо условия d\p - 1, как в пре- предыдущих разделах. Тогда можно найти та- такое s ? F, что s2 =г , и записать A) как ,-о .-о Полученная сумма имеет вид нецикли- нециклической свертки последовательностей OkS'"', @ < к < d - 1), i*Z (О < А < 2d - 1). Представляя элементу поля F целыми числами: 0 , 1, . . . , (р - 1), зту свертку можно вычислить с помощью метода, рас- рассматриваемого в п. 3 (ii). Список литературы 1. I. Т. ADAMSON, Introduction to Field Theory, Oliver & Boyd, London, Interscience, New York, 1964. MR 33 4 7325. 2. J. W. COOLEY & J. W. TUKEY, " An algorithm for the machine calculation of complex Fourier series,"Мей. Сотр., v. 19,1965, pp. 297 - 301. MR 31 #2843. 3. W. M. GENTLEMAN, "Matrix multiplication and fast Fourier transformations," Bell System Tech J., v. 47,1968, pp. 1099-1102. 4. G. D. BERGLAND, "A guided tour of the fast Fourier transform," IEEE Spectrum, v. 6, no. 7, 1969, pp. 41-53. 5. L. I. BLUESTEIN, A Linear Filtering Approach to the Computation of the Discrete Fourier Trans- fonrtj Northeast Electronics Research and Engi- Engineering Meeting Record, v. 10, 1968, pp. 218 - 219. 6. S; W. GOLOMB, Shift Register Sequences, Hol- den-Day, San Francisco, Calif., 1967. MR 39 # # 3906. 7. R. F. CHURCHOUSE & J. С HERZ (Editors), Computers in Mathematical Research, North-Hol- North-Holland, Amsterdam, 1968. MR 38 # 1972. 8. G. H. HARDY & E. M. WRIGHT,/ln Introduction to the Theory of Numbers, Clarendon Press, Ox- Oxford, 1938. 9. N. S. SZABO & R. I. TAN ABA,ResidueArithme- tic and its Applications to Computer Technology, McGraw-Hill, New York, 1967. 10. D. В GILLIES. "Three new Mersenne primes and a statistical theory," Math. Сотр., v. 18, 1964, pp. 93 - 97. MR 28 # 2990. 155
11. H. DAVENPORT, The Higher Arithmetic. An Introduction to the Theory of Numbers, Hutchin- son, London; Longmens, Green, New York, 1952. MR 14, 352. 12. G. E. COLLINS, "Computing multiplicative in- inverses in GF(p)", Math. Comp.,v. 23, 1969, pp. 197-2Q0. MR 39 #3676. 13. E. P. RODEMICH & H. RUMSEY, "Primitive trinomials of high degree," Mart., Сотр., v. 22, 1968, pp. 863 - 865. MR 39 # 177. 14. W. K. PRATT, J. KANE & H. С ANDREWS, "Hadamard transform image coding," Pros. IEEE, v. 57, 1969, pp. 58 - 68. 15. H. B. MANN (Editor), Error Correcting Codes, Proc. Sympos. Math. Res. Center (University of Wisconsin, Madison, Wis., 1968), Wiley.New York, 1968. MR 38 #3071. 16. H. POLLARD, The Theory of Algebraic Numbers, Carus Math. Monographs, no. 9, Math. Assoc. Amer.; Distributed by Wiley, New York, 1950. MR 12, 243. 17. W. T. COCHRAN ET AL., "What is the fast Fou- Fourier transform? " Proc. IEEE, v 55, 1967, pp 1664 - 1674. Статья 7 Быстрая свертка, использующая преобразование с числами Ферма, и ее применение в цифровой фильтрации Рамеш С. Агарвцл, Чарльз С. Баррас Аннотация. Исследована структура преобразо- преобразований, обладающих свойством свертки. В частнос- частности, рассмотрено преобразование, которое опреде- определено на конечном кольце целых чисел с арифмети- арифметикой по модулю чисел Ферма. Это преобразование с применением чисел Ферма (ЧПФ) идеально под- подходит для цифровых вычислений, поскольку тре- требует реализации порядка JVIogJV сложений, вы- вычитаний и поразрядных сдвигов, но не требует умножений. Помимо эффективности вычисление свертки с помощью преобразования с числами Ферма является точным, так как не имеет ошибок округления. Существует лишь ограничение на дли- длину последовательности входных данных, которое определяется длиной кодового слова. Обсужда- Обсуждаются многомерные методы, позволяющие снять это ограничение. Результаты расчета на ЭВМ IBM 370/55 сравниваются с результатами, полученны- полученными с помощью быстрого преобразования Фурье (БПФ). Они показывают, что эффективность и точность существенно выше, чем у результатов, полученных с помощью БПФ. 156 1. Введение Свойство свертки некоторых преобразо- преобразований может быть использовано для эффек- эффективного вычисления циклической свертки двух длинных дискретных последователь- последовательностей. Одним из таких преобразований являются дискретное преобразование Фурье (ДПФ) и его "быстрый" аналог - быстрое преобразование Фурье (БПФ) [1],которые определены в поле комплексных чисел. Чтобы вычислить ДПФ последователь- последовательности длины N требуется порядка (N12) х х log2 (NI2) комплексных умножений, на которые часто уходит большая часть време- времени вычислений. Кроме того, при вычислении циклической свертки методом БПФ возни- возникают значительные по величине ошибки округления [2], что ухудшает отношение сигнал/шум. При работе на вычислительных машинах входные данные могут быть представлены с некоторой конечной точностью, и поэто- поэтому без потери общности их можно рассмат- рассматривать как целые числа с вполне опреде- определенной верхней границей. При такой цифро- цифровой интерпретации поле комплексных чисел, непрерывное по своей природе, может быть заменено некоторым конечным полем или в более общем виде конечным кольцом целых чисел со сложением и умножением по моду- модулю некоторого целого числа .F. В этом коль- кольце с помощью преобразований, аналогичных ДПФ, циклическая свертка может быть вы- вычислена очень эффективно и без ошибок округления. Одним из таких преобразова- преобразований, которое рассматривается в данной ста- статье, является теоретико-числовое преобра- преобразование, которое определено в кольце целых чисел с операциями сравнения по модулю некоторого числа Ферма. Для вычисления такого iV-точечного преобразования, анало- аналогичного БПФ, требуется порядка N\og2 N сложений, поразрядных сдвигов и вычита- вычитаний, но при этом умножения отсутствуют. Это преобразование значительно проще БПФ. Кнут [3] предложил использовать пре- преобразование в конечных полях. Поллард [4] обсудил преобразования, обладающие свой-
ством циклической свертки в конечном поле, а также привел условие существова- существования таких преобразований в конечном коль- кольце целых чисел. Гуд [5] также упоминает о преобразованиях в конечных кольцах целых чисел. Шенхаге и Штрассен [6] опре- определили преобразование, обладающее свой- свойством циклической свертки в кольце клас- классов вычетов по модулю чисел Ферма, и рас- рассмотрели применение этого преобразования к быстрому умножению больших чисел. Кнут в работе [7] обобщил результаты Шен- Шенхаге и Штрассена. Николсон [8] разработал алгебраичес- алгебраическую теорию конечных преобразований Фурье в произвольном кольце и получил быстрые алгоритмы типа БПФ для вычисления этих преобразований. Рейдер [9], [10] предло- предложил конечные преобразования в кольцах целых чисел по модулю чисел Мерсенна и Ферма. Он первым предложил применить эти преобразования для цифровой обра- обработки сигналов, показал, что для осуще- осуществления этих преобразований необходимы только сложение и поразрядный сдвиг, ука- указал на ограничение, связанное с длиной ко- кодового слова, и предложил двумерные пре- преобразования в качестве возможного метода ослабления этого ограничения. Агарвал и Баррас [11] определили преобразования Ферма и предложили использовать эти пре- преобразования для быстрого вычисления циф- цифровой свертки. Целью данной работы является выясне- выяснение общей структуры преобразований, обла- обладающих свойством свертки, с последующим рассмотрением ТЧП в кольце классов вы- вычетов по модулю чисел Ферма как одного из практических вариантов реализаций циф- цифрового вычисления свертки. Свойства пре- преобразования обсуждаются с точки зрения использования в цифровых фильтрах. При- Приводятся данные программной реализации алгоритма на ЭВМ IBM 370/155. Полагаем, что представленный здесь материал отли- отличается от предыдущих работ и дает более глубокий анализ структуры этих преобра- преобразований. Одним из результатов подобного анали- анализа явилась возможность увеличения вдвое максимальной длины сворачиваемых после- последовательностей по сравнению с теми данны- данными, которые были опубликованы ранее [10]. Выбор терминологии в новой области всегда представляется трудной задачей. В данной работе обобщенное название — те- теоретико-числовое преобразование — будет использоваться для любого преобразования, базирующегося на теоретико-числовых кон- концепциях. Два преобразования специального вида с использованием арифметики по мо- модулю чисел Мерсенна и Ферма называют- называются преобразованиями с числами Мерсенна (ЧПМ) и преобразованиями с числами Ферма (ЧПФ). Частный случай этих пре- преобразований с базисной функцией а = 2 называется преобразованиями Рейдера (ПР). Эти преобразования по своей природе являются чисто цифровыми, поскольку учи- учитывают эффекты квантования амплитуды и конечной точности представления цифро- цифровых сигналов. Они точно так же связаны со структурой цифровых сигналов, как ДПФ связано с дискретными во времени сиг- сигналами или дискретными значениями непре- непрерывных сигналов и как преобразования Фурье и Лапласа связаны с непрерывными во времени сигналами. Точно так же, как переход от непрерывных сигналов к дис- дискретным во времени сигналам, осуществля- осуществляемый в процессе дискретизации, может вызывать в частотной области эффект на- наложения или "перехлестывания", переход от вычислений с помощью ДПФ к вычисле- вычислениям с помощью ТЧП может вызывать появление эффекта "свертывания" ампли- амплитуды, который следует принимать во вни- внимание. В п. 2 выводятся структуры преобразо- преобразований, обладающие свойствами цикличес- циклической и нециклической сверток. Показано, что та структура, которую принято назы- называть ДПФ, является единственной, облада- обладающей свойством циклической свертки, и лю- любая другая структура, подобная ДПФ, будет обладать свойством циклической свертки. В п. 3 устанавливаются необходимые и дос- достаточные условия существования преобра- преобразований в кольце целых чисел с операцией сравнения по модулю целого числа F. В 157
п. 4 определены ЧПФ, которые с вычисли- вычислительной точки зрения, по-видимому, явля- являются наилучшими преобразованиями для вычисления свертки. В п. 5 указана литера- литература, где сформулированы рекомендации для реализации двумерного преобразования при вычислении одномерной свертки длин- длинных последовательностей. В п. 6 предложе- предложены аппаратурные средства для реализации ЧПФ. В п. 7 дано сравнение двух методов вычисления свертки. ЧПФ и ДПФ, реализо- реализованного в виде БПФ. В п. 8 описана програм- программная реализация ЧПФ на ЭВМ IBM 370/150 и сопоставлены затраты машинного време- времени для ЧПФ и БПФ. Для вычисления циклических сверток последовательностей длины до 256 исполь- использование ЧПФ позволяет сократить затраты машинного времени от 3 до 5 по сравнению с наилучшими вариантами БПФ, которые могут использовать свойство симметрии ДПФ для действительных входных данных. Для ЭВМ с более медленным выполнением операции умножения преимущества прояв- проявляются еще значительнее. Наконец, в работе сформулировано несколько обобщений и указан ряд применений преобразований. 2. Структура преобразований, обладающих свойством свертки Структура прербразований; обладающих свойством свертки, заключается в том, что преобразование циклической свертки двух последовательностей равно произведению их преобразований. Класс рассматриваемых здесь преобразований — это множество линейных невырожденных обратимых пре- преобразований, которые отображают одну последовательность длины Nb другую после- последовательность длины N. Показано, что то, что обычно называют структурой ДПФ, яв- является единственной структурой, облада- обладающей свойством циклической свертки, и, кроме того, любое преобразование, име- имеющее структуру, аналогичную ДПФ, будет обладать свойством циклической свертки. Пусть х„иА„ (п =Q,1,...,N-1)- две последовательности, циклическая свертка которых определяется как 15Б V» = ? xthn-itn = 0,1,- - 1. A) Это определение циклической свертки предполагает периодическое продолжение последовательностей с периодом N или вы- вычисление индексов по модулю N. Здесь,мы записываем такие последовательности в ви- виде векторов длины N. Так как рассматри- рассматриваются только линейные обратимые пре- преобразования, то их можно представить в ви- виде невырожденной матрицы Т размеров Nx х N с элементами tk m, k, m = 0, 1,. .. ,N — — 1. Пусть прописные буквы означают пре- преобразованные последовательности, т. е. Х = Тх; Н = Th; Y = Ту. B) Выясним, какие условия накладывает Y = X ® Н, C) где ® означает покомпонентное умноже- умножение векторов. Объединяя выражения B) и A), полу- получаем Yk xk N-\ N-l m—0 N-l m-0 N-l 1-0 h mXm N-l = Z tt, n—0 >llmtk m+( , Л'-l \^ T 1 / . An m-0 Hk^'Etuhi, Л = 0,l,---,iV - 1. D) ;-o В (З) каждый отдельный член может быть записан как Y^ - X^^ и с учетом D) имеет следующий вид. ]V-1 N-l N-\ N-l T, T, Xmhltkm+l = I ? Xjlltkjk I- E) m—0 l m=0 l-=0 Сравнение коэффициентов при хпЩ в обеих частях равенства E) дает tkm+i = tkmtkl, k,l,m = 0,1.•••,ЛГ - 1 F) Многократно применяя F) , получаем k m = tk im, k,m ¦= 0,1 • • .,Л7 - 1 G) И так как свертка является цикличес- циклической, индексы в F) суммируются по моду- модулю N. Это дает tkmN = 1, k,m = 0,1,- .-,ЛГ - 1. (8)
Поэтому элементы матрицы t^ m явля- являются корнями N-й степени из единицы. Что- Чтобы матрица Т была невырожденной, все элементы tk 1 должны быть различными, и так как имеется ровно # различных корней N-й степени из единицы, то элементы t^ 1 должны быть именно этими А*" различными корнями. Без потери общности fb 1 можно положить равным первообразному корню Af-го порядка, т. е. N является наименьшим положительным целым числом, таким, что ?j j = 1. Поэтому все tk x можно записать как некоторые степени t х; х. Опять без по- потери общности строки матрицы Г могут быть расположены так, что h,i = t,,il. (9) Объединяя G) и (9) и обозначая tlt x че- через а, получаем tk.m = «tn, к,т = Q,1,---,N- 1. A0) Таким образом установлено, что струк- структура преобразования является ортогональ- ортогональной. Элементы tk> m матрицы Т~' имеют вид Ь.ш = .V-'a-*" к,т = ОД,- • -,N - 1. (И) Чтобы доказать это, рассмотрим равен- равенство ТТ~1 =/, т. е. ЛГ-' "? «'"а-" = «..., A2) где 8k j - символ Кронекера. Полагая к - -1-р, A2) можно переписать как N-[ ? a'" = 1 если р = 0(mod N); »-° Ов других случаях. Для доказательства ортогональности не- необходимо доказать A3) .Еслир = O(modA'), то аР = 1, и первая часть равенства, таким образом, доказана. Если р Ф 0 (mod /V), то аР Ф 1 или (аР - 1) Ф 0. Умножая A3) на аР — 1, получаем N-l(a" - 1) ? а"' = Л^Ча"* - 1) = 0. Таким образом, равенство A3) доказано. Анализ предыдущего доказательства по- показывает, что существование преобразова- преобразования размерами N х N, обладающего свой- свойством циклической свертки, зависит толь- только от существования корня Л^-й степени из единицы а и элемента Л7"'. Структура матриц прямого i и ооратного преоораэо- ваний определяются соответственно выра- выражениями A0) и A1), и это единственная структура, которая обладает свойством циклической свертки. Она носит название ДПФ-структуры. Любое преобразование, об- обладающее свойством циклической свертки, в силу своей ДПФ-структуры имеет быст- быстрый алгоритм вычисления, подобный БПФ, если Af является существенно составным (8). В поле комплексных чисел ДПФ при a = е ~ 12п1^ является единственным пре- преобразованием, обладающим свойством цик- циклической свертки. Но в конечном поле или в более общем случае в кольце также мо- могут быть преобразования со свойством циклической свертки, если только суще- существуют корень из единицы порядка Л' и элемент N~l. В следующем разделе будут доказаны результаты для специального слу- случая кольца целых чисел с операцией срав- сравнения по модулю целого числа, который представляется наиболее приспособленным для практической реализации на цифровой ЭВМ. В приложении А перечислены некото- некоторые свойства этих преобразований. До сих пор рассматривались только пре- преобразования, обладающие свойством цикли- циклической свертки. Нециклическая свертка мо- может быть вычислена через циклическую пу- путем дополнения последовательностей нуля- нулями [1]. Если требуется вычислить только нециклическую свертку, то можно найти класс преобразований более общего вида. Рассмотрим две последовательности длины L и М соответственно, в результате нецик- нециклической свертки которых формируется по- последовательность длины N=L +M — 1. Сна- Сначала дополним каждую последовательность нулями, чтобы длина их стала равной N.. Для преобразования Т размерами N х N ограничения на элементы tk m по-прежне- по-прежнему задаются уравнениями F), но теперь индексы суммируются уже не по модулю N. В этом случае F) принимает следующий вид. hm+t = tkJki, к = 0,1,-.-Д - 1; m = 0,1,-..,Л/ - 1; I = 0,l,..-,L - 1. A4) 159
Применяя многократно A4), получаем 4,- = f*.i", fc.ro = 0,1,-•-,#-1.A5) Это соотношение совпадает с G), одна- однако соотношение (8), которое справедливо для циклической свертки, теперь необяза- необязано выполняться. Поэтому значения элемен- элементов tfc j не ограничены корнями N-й степе- степени из единицы. Единственным ограничением является требование невырожденности мат- матрицы, из которого следует, что все tk> j дол- должны быть различными. Подобная процедура рассматривалась Кнутом [3] в связи с умно- умножением больших целых чисел, которое по существу аналогично нециклической сверт- свертке. Когда элементы tk> x не ограничены значениями корней N-я степени из едини- единицы, вообще говоря, не существует алгорит- алгоритма вычисления прямого или обратного преобразований типа БПФ. Дело в том, что обратное преобразование уже не обладает простой структурой. В силу указанных особенностей мы ограничимся рассмотрени- рассмотрением преобразований, обладающих свойством циклической свертки. 3. Преобразование в кольце классов вычетов по модулю целого числа В любой практической ситуации или при работе с цифровыми вычислительными ма- машинами входные данные представляются только с некоторой конечной точностью, а поэтому без потери общности данные мож- можно рассматривать как целые числа, ограни- ограниченные сверху некоторым предельным зна- значением. Чтобы вычислить свертку таких цифровых последовательностей, операции, определенные в поле комплексных чисел, непрерывном по своей природе, можно имитировать в конечном поле или, в более общем случае, в конечном кольце с опера- операциями сложения и умножений по модулю Некоторого целого числа F; при этом це- Лое число а порядка N заменяем е " n*\N^ используемым в ДПФ. В этом кольце при свертке двух последовательностей целых чисел х (л) и h (п) выходная последова- последовательность у (п) сравнима со сверткой х (п) и h (и) по модулю F. В кольце целых чи- 160 сел с операциями по модулю F обычные целые числа могут быть представлены од- однозначно, если их абсолютное значение меньше F/2. Если масштаб входных после- последовательностей х(п) и h (n) целых чисел выбран таким образом, что \у (п) | никогда не превысит F/2, то можно получить оди- одинаковые результаты при вычислении сверт- свертки в кольце целых чисел с операциями по модулю F и с обычной арифметикой. Это аналогично ограничению на отсутствие пере- переполнения в цифровых машинах с фикси- фиксированной запятой. В большинстве приложений, связанных с цифровой фильтрацией, последовательность А (л) представляет импульсную характерис- характеристику и известна заранее, обычно известна также максимальная амплитуда входного сигнала. В этой ситуации максимальная ам- амплитуда входного сигнала ограничена вели- величиной \у(п) | < \х(п) \т„ ? При переходе от непрерывных во време- времени сигналов к дискретным операцией вре- временной дискретизации в частотной области возникает эффект наложения спектров, поскольку все частоты следует рассматрж вать взятыми по модулю частоты дискрети- дискретизации. Аналогичное явление возникает в том случае, когда осуществляется амплитуд- амплитудное квантование, а свертка вычисляется в области целых чисел с операциями по мо- модулю целого числа F. Иначе говоря, имеют место искажения амплитуд, которых, как отмечалось ранее, можно избежать. Для того чтобы получить выигрыш в объеме вычислений при реализации цикли- циклической свертки, выведем преобразование в зтом кольце, обладающее свойством цикли- циклической свертки. Кроме того, хотелось бы, чтобы зто преобразование имело быстрый алгоритм вычислений. Сначала представим результаты, касающиеся существования та- таких преобразований; как мы выяснили, оно зависит от наличия в кольце элемента а порядка N и обратного элемента N~l. Основные сведения из теории чисел, ко- которые необходимы для понимания выкла-
док, содержатся в любом элементарном учебнике по теории чисел [14]. Пусть F = Р1"р2"-.-рг'г A6) представляет разложение числа F на прос- простые множители. Так как а имеет порядок N, то имеем а» = l(modF). A7) которое означает, что а"= 1 (modр4'-), *'= 1,2,--.,«. A8) Чтобы матрица преобразования Т была невырожденной, в ней не должно быть двух одинаковых строк, т. е. а" ^ «'(modpi"), г = l,--',l,p ?* q, О < p,q < N - 1. A9) Из выражений A8) и A9) следует, что а должен иметь порядок N по модулю каж- каждой степени простого числа, делящей F, т. е. N является наименьшим положительным це- целым числом, таким, что аЛГ= l(modp/0. t*= l,2,-..,I. B0) Если а имеет порядок, меньший N по ка- какому-нибудь модулю рр , то Т окажется вырожденной по этому модулю. Для суще- существования элемента N~1 число N должно быть взаимно простым с F, т. е. pf- не дол- должен делить N. Из этих двух соображений следует теорема 1, доказательство кото- которой приводится в приложении В. Теорема 1. Преобразование Т размера Nx N, обладающее свойством циклической свертки в кольце целых чисел с операциями сравнения по модулю целого числа F, су- существует тогда и только тогда, когда N делит O(F) й НОД(р! - 1, р2 - 1, ... 4. Преобразование с числами Ферма Для того чтобы теоретико-числовые пре- преобразования были более привлекательными по сравнению с БПФ при вычислении сверт- свертки, они должны быть эффективными с вы- вычислительной точки зрения. Предъявляются три требования к таким преобразованиям, которые будут рассмотрены ниже. Во-пер- Во-первых, N должно быть существенно состав- составным (предпочтительно степенью 2) для то- того, чтобы существовал быстрый алгоритм, аналогичный БПФ. Во-вторых, так как умножение комплексных чисел при вы- вычислениях БПФ требует больших затрат машинного времени, важно, чтобы умноже- умножение на степень а было достаточно простой операцией. Это возможно, если степени а имеют совсем немного разрядов в двоич- двоичном представлении; предпочтительно также, чтобы оно было степенью двух, поскольку в этом случае умножение на степень а сво- сводится к сдвигу слова. В-третьих, для того чтобы упростить арифметические операции по модулю F,F в двоичном представлении также должно иметь небольшое количество разрядов. Теперь подробно проанализируем вопрос о наилучшем выборе F, для которого мак- максимальная длина преобразования Добыла бы не слишком короткой. Как уже было от- отмечено раньше, желательно, чтобы F в дво- двоичном представлении имело бы небольшое число разрядов. Первая возможность состо- состоит в выборе числа 2к. Поскольку 2к делится на 2, согласно те- теореме 1 п. 3 максимально возможная дли- длина преобразования равна 1. Поэтому рас- рассмотрим 2* — 1, где к — составное число вида PQ и Р - простое. Тогда 2^-1 делит 2^^ - 1, и максимально возможная длина преобразования будет не больше длины, возможной для 2Р - 1. Поэтому представ- представляют интерес для рассмотрения только простые Р. Числа такого вида известны как числа Мерсенна. Рейдер в работе [10] подробно рассмотрел вычисление свертки с использованием чисел Мерсенна. Для ПЧМ показано [10], что они допускают длину, по крайней мере, 2Р, что соответствует вы- выбору а = — 2. Преобразований с числами Мерсенна не представляют особого интере- интереса, так как IP не является существенно составным, и, следовательно, для их вычис- вычисления не существует быстрых вычислитель- вычислительных алгоритмов типа БПФ. Теперь пусть F = 2к + 1 и к выбрано сначала нечетным. Тогда 3 делит 2* + 1, и наибольшая возмож- возможная длина преобразования равна 2. Поэтому следует рассматривать только четные к. 161
Пусть к равно s • 2х, где s — нечетное чис- число. Тогда 22t + 1 делит 2s2* + 1, и длина возможного преобразования будет опреде- определяться длиной, возможной для 22 +1. По- Поэтому представляют интерес целые числа вида 22 +1. Эти числа известны как числа Ферма и будут подробно рассмотрены в настоящей статье. Числа Ферма представля- представляются оптимальными в том смысле, цто они соответствуют преобразованиям, имеющим длину, представляющую практический инте- интерес при умеренной длине кодового слова. Числа вида 2s2* + 1 также представляют не- некоторый интерес, они подробно рассматри- рассматриваются в п. 9. Систематическое исследова- исследование таких F, которые требуют для своего представления больше двух двоичных раз- разрядов, представляется- трудной задачей. На- Наши предварительные исследования в этом направлении не дали обнадеживающих ре- результатов. В свете приведенного выше обсужде- обсуждения предлагается считать хорошими числа Ft 4 2Ъ + 1., Ь - 2Т, t - положительное це- целое число. Ft называется t-м числом Ферма. Арифметические операции по модулю Ft могут быть выполнены с помощью Ь-раз- рядных двоичных чисел, и они подробно бу- будут рассмотрены в п. 6. Количество разря- разрядов, используемых для представления сиг- сигнала и коэффициентов фильтра, определяет выбор значения Ъ, которое необходимо использовать во избежание появления оши- ошибок на выходе из-за переполнения. Обычно необходимое значение Ъ несколько больше удвоенного числа двоичных разрядов, ис- используемых для представления сигнала. В предыдущем разделе была приведена прос- простая граница для выходной последователь- последовательности. С вычислительной точки зрения вы- выбор в качестве модулей F чисел Ферма пред- представляется наилучшим, поэтому, насколько зто возможно, их следует использовать. Если значение Ь, полученное из сообра- соображений отсутствия переполнения, не явля- является степенью 2, то, для того чтобы можно было использовать числа Ферма, его необ- необходимо увеличить до ближайшей степени 2. Некоторые другие возможности рассматри- рассматриваются в п. 9. 162 Так как арифметические операции вы- выполняются по модулю чисел Ферма, то на- назовем соответствующие преобразования пре- преобразованиями с числами Ферма (ЧПФ). Определим прямые и обратные преобразо- преобразования последовательностей длины N = 2т следующим образом: Х(к) = *Е х(п)а»к (mod Ft),k = 0,1,---Д - 1; х (п) = B~") ? X(ifc)a-l(modF,); B1) 1-0 F, = 2» + 1, Ъ = 2', B2) где а — целое число порядка N, т. е. N — наименьшее целое положительное число, такое, что а" = l(modF,) Заметим, что а = aN'1 и 2'т = Как выяснено в п. 2 и 3, при выполне- выполнении некоторых условий с помощью ПЧФ может быть вычислена свертка двух цело- целочисленных последовательностей длины N. Теперь рассмотрим возможные значения N, для которых существует ПЧФ при условии, что выбрано число Ft. Как утверждает те- теорема 1 п. 3 для существования преобразо- преобразований по модулю Ft длины N необходимо, чтобы N делило O(Ft). Так как числа Ферма до F4 простые, то 0{Ft) = 2b, и, следовательно, существуют ПЧФ для любого N =. 2т, т < Ъ. Для этих простых чисел Ферма целое 3 является а порядка N = 2Ь, допускающим наибольшую длину преобразования. Конечно, имеется 2^ ~! других целых чисел, которые также имеют порядок 2Ь. Они могут быть полу- получены возведением 3 в нечетную степень. Ес- Если а имеет порядок N, то аР (mod Ft) бу- будет иметь порядок N/p, если N/p является целым числом. Поэтому с помощью чисел Ферма целое число а порядка 2т, т < Ь, определяется по формуле З2 b ~ m(modFf). Целое 2 имеет порядок 2Ь = 2* *1. Если a выбирается равным 2 или степени 2, то все степени а будут некоторыми степенями 2, и для этих случаев, как показано в начале этого раздела, ЧПФ может быть вычислено
очень эффективно. Такое ЧПФ называется преобразованием Рейдера. Другие простые числа Ферма неизвестны. Для задач цифровой фильтрации наиболь- пгую практическую ценность представляют, видимо, составные числа Ферма Fs (b = 32) и F6 (b = 64). Лукас [13] доказал, что каж- каждый простой сомножитель Ft имеет вид К-2**2 + 1. Поэтому 2'+2 делит O(Ft) для t > 4. В частности, для Fs и F6 можно проверить, что O(Ft) = 2t*t. Поэтому для этих чисел Ферма максимальная возможная длина преобразования равна 2* * 2 =4Ь. Мы утверждаем также, что число а , определяемое формулой B3), имеет поря- порядок 2'* 2modF,, f >2,т. е. ^й«, = 2'мB'н-Ч, B3) где а„ обозначается как V?, так как а„2 = 2 mod Ft. Доказательство того, что а из B3) име- имеет порядок 2* *2 по отношению к любому сомножителю Ft, приведено в приложении С. Любая нечетная степень у/2 будет также порядка 2* *2. При возведении у/1 в сте- степень 21 * 2 ~ т получается целое а порядка 2m,m<t + 2. В табл. 1 указаны значения N для двух наиболее важных значений а, а также значе- значения максимальных возможных N для чаще всего используемых на практике значе- значений Ь. Преобразование с числами Ферма при а = = 2 было определено Рейдером в работе [10]. Однако он не указал на возможность выбо- выбора а = у/~2. Используя результаты, приве- приведенные в п. 3, мы нашли значения макси- Таблица 1. Параметры для нескольких воз- возможных вариантов ЧПФ t 3 4 5 6 Ь 8 16 32 64 Ft 2» + 1 2" + 1 2" + 1 2б4 + 1 N* а=2 16 32 64 128 N а=ч/г' 32 64 128 250 Nm<rc 256 65 536 12? 256 адля Атах 3 3 ¦Ф-' * Этот случай соответствует ПР. мально возможной длины преобразования N, для которой существует ЧПФ, для чаще всего используемых на практике значений b и соответствующие значения а. При а = = \/~2 максимально возможные длины этих преобразований увеличиваются вдвое, по- поэтому преобразования с таким выбором а являются наиболее выгодными. В следу- следующем разделе будет рассмотрена схема двумерной свертки, с помощью которой может быть также вычислена свертка очень длинных одномерных последовательностей. В этом случае используется двумерное ЧПФ. Базисными функциями для ЧПФ явля- являются целочисленные показательные функ- функции по модулю Ft, в отличие от комплексных показательных функций, характерных для ДПФ. Эти целочисленные показательные функции после достижения значения Ftj2 свертываются. В силу свойств модулярной арифметики коэффициенты ЧПФ, по-види- по-видимому, не имеют определенного физического смысла. Например, даже если значения сигнала, для которого определяется ЧПФ, невелики, его ЧПФ-коэффициенты могут на- находиться где угодно в пределах от 0 до Ft — — 1. Фактически на различных стадиях вы- вычислений промежуточные значения преобра- преобразованного сигнала переполняют накопитель много раз. Однако конечный результат свертки будет точным, если входные сигна- сигналы соответствующим образом ограничены. Свойства ЧПФ приведены в приложении А. Пример. Для прояснения высказанных выШе идей приведем пример. Он проявляет некоторые моменты ЧПФ, а именно: трактовку отрицатель- отрицательных значений входных данных; структуру матриц прямого н обратного преобразований; отрица- отрицательные степени а, частоту "переполнения" в хо- ходе вычислений, отсутствие физического смысла у коэффициентов ЧПФ и точность окончательно- окончательного результата. В этом примере не демонстриру- демонстрируется эффективность вычислений с помощью ПР, использующего двоичную арифметику, чему будет посвящен 4, где обсуждается реализация ПР.' Рассмотрим две последовательности х = B, -2, 1, 0) и А = A, 2, 0, 0), свертку которых не- необходимо вычислить. Чтобы не произошло пере- переполнения, достаточно в качестве модуля выбрать F - 17. Требуемое значение N равно 4; при выборе F% целое 2 имеет порядок 8, поэтому 2' = 4 яв- лязгся а порядка 4. 163
Матрица преобразования имеет вид Т = 111 1 4-1-4 1-1 1-1 1 -4 -1 4. (mod 17). 1111 14 4? 4? 1 4? 44 4« 1 4' 4е 4' '1111 1 4 16 13 1 16 1 16 1 13 16 4. Так как 4~J = -4 (mod 17), матрица обратного преобразования Г выглядит следующим об- образом: 111 1 4-1 4-» 4-' 1 4-» 4г* 4г* 1 4-« 4г* 4~» ¦ • 1111 1-4-1 4 1-1 1-1 1 4-1-4 -4 13 1111 1 13 16 4 1 16 1 16 1 4 16 13 (mod 17). Преобразования последовательностей х н Л осуществляются следующим образом. Тх = 164 1 1 1 1 1 4 16 13 1 16 1 16 1 13 16 4 2 15 1 0 " 18" 78 243 .213. " Г 10 5 . 9_ (mod 17). Отметим, что в дс значение -2 представлено как —2 + 17 = 15. Аналогичным образом получа- получаем Я = C, 9, 16,10) и Y =Х • И = C, 90, 80, 90) = = C,5, 12,5) (mod 17). Вычисляя обратное преобразование для У, по- получаем у = B,2,14,2) (mod 17). Согласно нашему предположению в оконча- окончательном результате целые должны лежать в диапа- диапазоне от -8 до 8. Поэтому 14 следует представить как 14 — 17 = —3. Окончательный результат име- имеет вид у = B, 2, -3, 2) в соответствии с действи- действительностью. Заметим также, что у имеет некото- некоторую симметрию и Y тоже имеет некоторую сим- симметрию За исключением этого, коэффициенты преобразования не несут какого-либо особого смысла. 5. Двумерная свертка для вычисления свертки длинных последовательностей Как будет рассмотрено ниже в п. 6, арифметика по модулю Ft может быть ре- реализована с помощью представления целых чисел в виде Ь = 2f -разрядных двоичных чисел и некоторого дополнительного раз- разряда для представления 2*. Как уже было сказано выше, максималь- максимальная длина последовательностей, для кото- которых может быть получена циклическая свертка с помощью ЧПФ при а = у/~2, равна 4Ь. Поэтому длина этих последовательно- последовательностей пропорциональна длине кодового сло- слова, выраженной в битах. Таким образом, для последовательностей большой- длины могут потребоваться кодовые слова чрез- чрезмерно большой длины. Рейдер [10] пред- предложил использовать метод двумерной сверт- свертки для вычисления свертки последователь- последовательностей большой длины. Агарвал и Баррас [11, 12] разработали схему реализации та- такой двумерной свертки. С помощью этой схемы циклическая свертка длины N = LM выполняется как двумерная циклическая свертка размерами BL - 1) на М (или 2L
Таблица 2- Максимальные длины одномерных циклических сверток, вычисляемых с помощью двумерного ЧПФ или ПР Длина кодо- кодового слова Ь 16 32 64 TV для a = 2 512 2048 8192 ТУ для a =\fl 2048 8192 32 768 на М). Такая двумерная циклическая сверт- свертка может быть вычислена с помощью дву- двумерного ЧПФ [11, 12], построенного анало- аналогично одномерному преобразованию. При использовании этой двумерной схемы тре- требуемая длина кодового слова пропорци- пропорциональна корню квадратному из длины сво- сворачиваемых последовательностей. Это при- приводит к тому, что максимальная длина сворачиваемых последовательностей стано- становится равной не 4b, a 8b2. Если М выбрать равным максимально возможной длине в одномерном случае 4Ь, a 2L — 1 - ближай- ближайшим целым числом, то для получения уко- укороченной свертки по второму измерению можно использовать либо прямой алгоритм, либо другой быстрый алгоритм [12, 15], а по первому измерению — одномерное ЧПФ. С вычислительной точки зрения, как будет показано ниже в п. 8, эта комбинация мо- может оказаться очень эффективной. В табл. 2 приведены максимальные зна- значения длины одномерных циклических свер- сверток, вычисляемых с помощью двумерных преобразований. В такой арифметике единственно допусти- допустимыми целыми числами являются 0,1,... 2Ь. Все целые, которые по абсолютной величи- величине не превосходят 2Ь - 1, могут быть пред- представлены однозначно. Отрицательные целые числа представляются путем их сложения с числом 2^ + 1, такое представление во многом сходно с формой представления отрицательных чисел путем дополнения до двух или единицы. Все целые числа от 0 до 2* — 1 могут быть записаны в ^-разрядном двоичном регистре. Остается проблема пред- представления числа 1Ь. Если входные данные некоррелированы, то вероятность того, что это число появится в результате выполне- выполнения арифметической операции, приблизи- приблизительно равна 2" ь. Для задач цифровой фильтрации наиболее типичным является выбор Ъ равным 32 или 64; в этих случа- случаях вероятность появления 2Ь чрезвычайно мала. Если редкие ошибки при вычислени- вычислениях свертки допустимы, то, вероятно, в этих случаях нет необходимости использовать еще один дополнительный разряд. Иначе придется использовать дополнительный раз- разряд для представления 2Ь ценой усложне- усложнения аппаратуры. Дальнейшее обсуждение исходит из fc-би- тового представления целых чисел. Теперь рассмотрим, как могут быть ре- реализованы основные арифметические опера- операции в арифметике по модулю F. А. Изменение знака. Пусть 6. Соображения по аппаратурной реализации арифметических операций Так как структура ЧПФ сходна со струк- структурой ДПФ и N является степенью 2, то су- существует быстрый алгоритм вычисления ЧПФ, аналогичный БПФ по основанию 2- Фактически изменение сводится только к замене W = ехр (— j 2n/N) на а в любом ал- алгоритме БПФ [1]. При вычислении ЧПФ арифметические операции выполняются по модулю 2^ + 1. L в.2*, <ч = о или i. *-0 Тогда Ь1 -A--Z й& - B» - 1) = «*2-- BЬ- 1) +2»+ lmodFt- i-O Ь-1 Таким образом, чтобы изменить знак, необходимо значение каждого двоичного разряда заменить на дополнительное и к результату прибавить 2. Например, 165
(mod 17): 4 = 0100; -4 1011 + Ю 1101 = 1101 - 13 В. Сложение. При сложении двух й-раз- рядньгх двоичных чисел получается 2>-раз- рядное двоичное число и возможен пере- перенос из старшего разряда. Появление, пере- переноса из старшего разряда означает получе- получение числа 2Ь - — 1 mod Ft. При реализации арифметики по модулю 2Ь - 1 можно просто вычитать перенос. По- Поэтому в аппаратуре необходимо предусмот- предусмотреть возможность вычитания переноса. Нап- Например, 10Ш (mod 17): 10 + 9 = 17 = 2 (mod 17) +1001 10011 0010 - 2 С. Вычитание. Вычитание выполняется как сложение уменьшаемого и вычита- вычитаемого с обращенным знаком в соответ- соответствии с п. В. Д. Обобщенное умножение. При умно- умножении двух fc-разрядных чисел получается 2Ь-разрядное произведение. Пусть С^ явля- является его ^-разрядной частью младшего поряд- порядка, a Cj - Ь-разрядной частью старшего порядка. Тогда А X В = С* + СЯ2» = Сь - CH(mod F,). Таким образом, для получения произве- произведения необходимо лишь из содержимого регистра старшего порядка вычесть содер- содержимое регистра младшего порядка, причем вычитание необходимо выполнить в соот- соответствии с пунктом С. Например, (mod 17): 13 X 9 = 117 = 15(mod 17); 117 = 01110101 CL {-Си) 0101 1010 1111 = 15. Е. Умножение на степень 2. Если а выби- выбирается равным 2 или степени 2, то получа- получаются преобразования Рейдера и единствен- единственной операцией умножения является умно- жение на некоторую степень 2. Эта опера- операция особенно просто реализуется в арифме- арифметике по модулю F. Предположим, что необходимо умножить содержимое регистра на 2*, 0 < к<Ь. В этом случае достаточно сдвинуть влево со- содержимое регистра на к разрядов и вычесть к бит переполнения. Это удобно сделать следующим образом. Добавить к регистру данных слева регистр нулей, сдвинуть со- содержимое регистра удвоенной длины на к разрядов влево, отбросить нули в старших разрядах, а затем вычесть содержимое ре- регистра высоких порядков из содержимого регистра низких порядков, как в п. Д. Если к лежит за пределами интервала 0 < к < Ъ, следует воспользоваться тем, что 2* = =-1 mod Ft. При вычислении обратного пре- преобразования необходимо выполнить умно- умножения на отрицательные степени 2, кото- которые могут быть преобразованы в положи- положительные степени с помощью следующего соотношения: 2~* = -2b-*modF,. Другой метод умножения на 2 ~ * состо- состоит в загрузке данных в регистр удвоенной длины, начиная с регистра высоких поряд- порядков, заполнении регистра низких поряд- порядков нулями, сдвиге содержимого регистра удвоенной длины на к разрядов вправо и вычитании содержимого регистра низких порядков из содержимого регистра высо- высоких порядков по модулю Ft. Для реализа- реализации ускоренного поразрядного сдвига его величину к следует выразить в двоичной форме и при появлении тактового импуль- импульса сдвиг необходимо сделать на величину, равную степени 2. Например, (mod 17): 11 X 23 = 88 = 3 mod 17 11 =0000 1011. Сдвиг влево на три позиции 0Ю1 1000 с„ с CL = 1000 (-С„) = +1100 1 0100 ООП = 3 11 X 2-3 = 11 X (-24-3) = -22 = 12 mod 17 11 = 1011 0000.
Сдвиг вправо на три позиции '¦—! Си Cl Си 0001 1100 - 12. При реализации быстрого ПР, в отличие от БПФ, нет необходимости запоминать степени а. Для последовательной арифмети- арифметики можно иметь регистр, в котором хранит- хранится величина сдвига к, и по мере того как осуществляется продвижение в соответ- соответствии со структурной схемой быстрого ПР, непрерывно корректируется величина сдвига. Все это особенно просто выполня- выполняется в двоичной арифметике. Если а выбра- выбрана как \/~2, то только для нечетных степе- степеней а требуется два двоичных разряда. В быстром алгоритме ПЧФ только на одном этапе вычислений потребуется умножение на нечетные степени \р2. Умножение на не- нечетную степень \fl, вероятно, лучше всего сделать так: сначала умножить на преды- предыдущую четную степень \/~2, которая равна степени 2, а затем умножить на \/~2, для представления которого необходимо всего два разряда. Объем лишних вычислений очень невелик. 7. Сравнение с БПФ Как было отмечено в предыдущем раз- разделе, вычисление ПР очень просто осуще- осуществляется на ЭВМ с двоичной системой счислений. Сравним теперь сложность раз- различных основных операций, осуществля- осуществляемых при вычислении ПР, с соответству- соответствующими операциями БПФ. Если две после- последовательности х (л) и Л (л) представлены соответственно bt и Ь2 двоичными разря- разрядами и имеют длину N, то для представле- представления выходной последовательности у (и) по- потребуется не более (b^ + bj + logTV) двоич- двоичных разрядов. Для получения точного ре- результата достаточно, чтобы b > bi + b2 + + log2 TV В п. 3 была приведена лучшая верх- верхняя граница выходной последовательности. Грубо говоря, для вычисления свертки с помощью ПР требуется вдвое больше дво- двоичных разрядов, чем для вычисления сверт- свертки с помощью БПФ с использованием пред- представления чисел с фиксированной запятой. Но в случае ДПФ каждая точка входных данных интерпретируется как комплексное число, и соответственно для ее запоминания требуются два слова: одно для записи дей- действительной, а другое - для записи мни- мнимой части. Поэтому фактически требования к объему аппаратуры, необходимой для ре- реализации обоих преобразований, приблизи- приблизительно одинаковы. Хотя для действитель- действительных последовательностей входных данных можно использовать свойства симметрии ДПФ, но это потребует дополнительных вы- вычислений, которыми при сравнительном ана- анализе пренебрегаем. Это обстоятельство, од- однако, учтено при рассмотрении реализаци- реализационных аспектов алгоритмов на ЭВМ IBM 370/155 в следующем разделе. Поэтому в дальнейшем предполагается, что при исполь- использовании БПФ на каждую точку входных данных приходится Ь/2 двоичных разрядов для действительной части и bfl двоичных разрядов для мнимой части. Одна операция сложения ^/2-разрядных комплексных чисел эквивалентна двум сло- сложениям Ь/ 2-разрядных действительных чи- чисел, что сравнимо со сложением й-разряд- ных чисел по модулю Ft. Таким образом, сложность реализации операций сложе- сложения/вычитания для обоих преобразований одинакова. Аналогично можно показать, что умножение fc/2-разрядных комплексных чисел сравнимо по сложности с умножени- умножением fc-разрядных чисел по модулю Ft. При вычислении ПР требуется операция умноже- умножения на степени 2, которая реализуется пу- путем поразрядных сдвигов и вычитаний. По- Подобная операция существенно проще комп- комплексного умножения, которое требуется вы- выполнять при вычислении БПФ. При вычислении быстрого ПР последова- последовательности длины N требуется выполнить Nlog2 N сложений/вычитаний и (iV/2) x х log 2 N12 операций умножения на степени 2, которые выполняются путем поразряд- поразрядных сдвигов с последующим вычитанием. 167
При вычислении свертки с помощью БПФ больше всего времени уходит на выполне- выполнение комплексных умножений, необходи- необходимых в процессе вычислений преобразова- преобразований. Сравнение с ПР показывает, что эти операции заменяются поразрядными сдвига- сдвигами и вычитаниями - значительно более быстрыми операциями. В итоге зто приво- приводит к значительному сокращению объема вычислений при выполнении свертки. Этот факт был проверен на универсальной ЭВМ IBM 370/155. Объем вычислений, необходи- необходимых при умножении двух результатов пре- преобразования, примерно один и тот же для обоих методов вычисления. При вычисле- вычислении свертки последовательностей большой длины с помощью двумерных ЧПФ или ПР объем вычислений возрастает самое боль- большее вдвое. Следовательно, и в этом случае вычисление свертки с помощью ПР осуще- осуществляется значительно быстрее, чем с помо- помощью БПФ. ПР обладают некоторыми дополнительны- дополнительными преимуществами по сравнению с БПФ. Во-первых, в случае БПФ необходимо за- запоминать все степени И7, что требует значи- значительного объема памяти, Это обстоятель- обстоятельство может оказаться существенным факто- фактором для мини-ЭВМ или для специализиро- специализированных вычислителей. Во-вторых, при вы- вычислениях БПФ с фиксированной запятой на выходе вносится значительный по вели- величине шум округления — 6 — 8 бит в зави- зависимости от входных данных [2]. Это ухуд- ухудшает отношение сигнал/шум при осуще- осуществлении операций фильтрации. В ПР и ЧПФ шум округления отсутствует, и единствен- единственным источником погрешностей является преобразование аналог/цифра на входе. 8. Реализация на ЭВМ IBM 370/155 Длина слова в ЭВМ IBM серий 360 - 370 составляет 32 бита и поэтому хорошо со- согласуется с требованиями, предъявляемыми при реализации ЧПФ и ПР с модулем Fs = = 23 2 + 1. В машине принята дополнитель- дополнительная форма представления отрицательных чи- чисел, т. е. — х представляется как 232 - х. Нам бы хотелось отрицательные числа пред- представить в дополнительной по модулю 232 + + 1 форме, т. е. х должно представляться как 232 + 1 —х. Это осуществляется прибав- прибавлением 1 всякий раз, когда в последова- последовательности входных данных встречается от- отрицательное число. Как уже было отмечено выше, в этой машине невозможно пред- представить — 1. Если в последовательности входных данных встречается —1, то она округляется либо до 0, либо до -2. Это эквивалентно внесению некоторого началь- начального шума квантования. Если входные данные некоррелированы, то вероятность того, что —1 будет появляться после ариф- арифметической операции в процессе вычисле- вычисления преобразования равна, грубо говоря, 22 «»10~10 на одну операцию. Эта по- погрешность, вносимая в процессе вычисле- вычисления, является довольно существенной, и, ве- вероятно, соответствующий выходной блок потеряет смысл. Полагая N = 64, получаем, что вероятность того, что некоторый выход- выходной блок будет искаженным, примерно рав- равна 10~6 - 10. Для большинства опера- операций фильтрации такая вероятность может оказаться допустимой. Логические операто- операторы сложения (ALR) и вычитания (SLR) ис- используются для выполнения сложения и вы- вычитания двух чисел по модулю Fs • Если пе- перенос обнаруживается после сложения, то 1 вычиталась из результата, а если перенос не обнаруживался после вычитания, то 1 при- прибавлялась к результату. Умножение на 2* вы- выполнялось с помощью логической операции сдвига влево (SLDL), а умножение на 2~к - с помощью логической операции сдвига вправо (SRDL ) при 0 < к < 32, кото- которые реализовывали принципы, рассмотрен- рассмотренные в п. 6. Аналогичным образом может быть также реализовано умножение двух целых чисел по модулю Fs ¦ Две подпрограммы на Ассемблере были написаны для вычисления быстрого прямо- прямого и обратного ПР для любой последова- последовательности, длина которой лежит в преде- пределах от 21 до 26, причем а была выбрана рав- равной степени 2. Еще две подпрограммы бы- были написаны для вычисления быстрого 168
прямого и обратного ЧПФ последователь- последовательностей длины 128 при а = \рТ, определяе- определяемой формулой B3). Из семи ступеней быстрого алгоритма только на одной сту- ступени требуется умножение на нечетные сте- степени \pl. Эти умножения были реализова- реализованы в соответствии с рекомендациями п. 6. Для циклической свертки последова- последовательностей длины, превышающей 128, были использованы схемы двумерной свертки. Одна из таких схем, предназначенная для свертки последовательностей длины 256, имела размеры 2 х 128 и была рассмотрена в разд. X работы [12]. Другая програм- программа была написана для вычисления сверт- свертки длинных одномерных последователь- последовательностей с помощью двумерных ПР, которые были рассмотрены в разд. III работы [12]. Затраты машинного времени для различ- различных вариантов реализации алгоритма вы- вычисления свертки, в том числе и для вариан- варианта с БПФ, приведены в табл. 3. При подсче- подсчете затрат машинного времени предполага- предполагалось, что преобразования последователь- последовательностей h были вычислены заранее. Таким образом, затраты машинного времени вклю- включают время на вычисление преобразований последовательностей х, на умножение пре- преобразований и вычисление обратных пре- преобразований. Для вычисления БПФ исполь- использовался очень эффективный алгоритм [17] с основанием 4 и 2 на различных этапах, который также учитывал, что входные дан- Таблица 3. Время вычислений циклической свертки для действительных'последовательностей длины N 32 64 128 256 256 512 1024 2048 БПФ, мс 16 31 60 123 123 245 530 1260 ЧПМ или ПР, мс 3,3 7,4 16,6е 40,0& 80,0е 166,0е 340,0е. 720,0е а в= b С помощью свертки 2 X 128. е С помощью двумерного ПР. ные являются действительными. По отно- отношению к БПФ для длин последователь- последовательностей, не превышающих 256, был полу- получен выигрыш порядка 3-5 раз. Так как ап- аппаратурные средства ЭВМ IBM серий 360/370 не предназначены для выполнения арифметических операций по модулю чи- чисел Ферма, то потребовалось ввести не- несколько дополнительных команд по обхо- обходу после выполнения операций сложения и вычитания, необходимых для учета воз- возможных переносов. Если бы аппаратурные средства позволя- позволяли выполнять арифметические действия по модулю чисел Ферма, то эти команды можно бьшо бы исключить. Это сократило бы вре- время вычислений. Копии подпрограмм, напи- написанных на Ассемблере, имеются у авторов. 9. Обобщения и приложения В данной статье в основном обсуждались вопросы вычисления свертки в кольцах це- целых чисел по модулю Ферма. Эти числа, очевидно, являются наилучшими для вычис- вычислений на цифровых ЭВМ. Однако в качестве модуля F может быть использовано любое целое число, удовлетворяющее условию O(F)>\, как зто было показано в разд. 4. Рейдер [14] предложил использовать числа МерсеннаЛ/р GР - \,р — простое) - Преобра- Преобразования с применением чисел Мерсенна ПЧМ характеризуются а - -2 nN= 2p и, сле- следовательно, не обладают быстрыми алгорит- алгоритмами типа БПФ. Во многих ситуациях из соображений шумов квантования и возможности пере- переполнения необходимо, чтобы арифметиче- арифметические операции выполнялись со словами 10 - 20 бит. В такой ситуации работа в кольце целых чисел по модулю числа F4B16 + 1) будет малоэффективной, и в то же самое время вычисление ЧПФ с модулем Fs B32 + + 1) явно потребует избыточных разрядов. В этом случае можно вычислять свертку, используя в качестве модуля 2м + 1. Сле- Следует отметить, что многие ЭВМ оперируют 24-битовыми словами. Для подобной си- ситуации существуют преобразования, ана- 16»
логичные ЧПФ. Можно выбрать F = 2 + + 1, и тогда а - 8 дает#= 16, а а = 81/2 = = 27 х 212 - 1 даетЛГ= 32 в качестве мак- максимальной длины одномерного преобра- преобразования. В общем случае за F можно принять F = = 2s 2 * + 1, где s - нечетное число. В этом слу- случае а = Is, что даетN= 2f +\ aa= BsI/2 = = 2[<--1>я+й'-11B'«(-1 - 1) даетЛГ=2*+2.Во многих случаях можно получать преобра- преобразования, длина которых превышает 2f +2 Например, при F = 240 + 1 максимальная возможная длина преобразования составля- составляет 256, а при F = 280 + 1 максимальная воз- возможная длина преобразования равна 1024, но при этом соответствующие а уже не име- имеют такого простого вида, как в рассмотрен- рассмотренных выше примерах. Как уже указывалось ранее, при вычисле- вычислении ЧПФ требуется для выполнения ариф- арифметических операций увеличение количества разрядов регистра вдвое. Большинство ми- мини-ЭВМ оперируют с короткими словами, поэтому, вообще говоря, их, вероятно, труд- трудно эффективно использовать для вычисле- вычисления ЧПФ. Однако имеется решение этой проблемы. Можно разбить последователь- последовательности входных данных на два блока, а затем вычислять свертку блоков х(п) = хг(п) + xi(nJk \ хг{п) \ < 2'; h(n) = А2(п) + Л,(пJ* | Л2(п) | < 24; у = x*h = xi*hi--2ik -f (xi*h2 + x2*hlJk + x2*h2. B5) Поскольку теперьxit hu x2 иh2 имеют приблизительно половину двоичных разря- разрядов, то их можно сворачивать, используя вдвое меньшее число двоичных разрядов. В случае необходимости можно выполнить более точный анализ изложенного выше метода. В B5) последнее слагаемое мало по сравнению с первым и поэтому может быть отброшено. Необходимо выполнить два преобразования для х и два преобразо- преобразования для h , сложение в круглых скобках может быть выполнено для преобразований. Наконец, необходимо выполнить два обрат- обратных преобразования: одно для л^ * h х, а другое - для (xi *hi +x2 *h2). 170 ЧПФ могут быть также использованы для вычисления сверток в блочно-рекур- сивных реализациях рекурсивных цифро- цифровых фильтров [16]. Для таких фильтров основной вычислительной задачей является вычисление сверток. Так как свертка с по- помощью ЧПФ может быть вычислена с высо- высокими точностью и эффективностью, то рас- рассмотренные преобразования являются весь- весьма привлекательными для решения этой задачи. В рекурсивных фильтрах очень высоко- высокого порядка применение преобразования поз- позволит отчасти разрешить проблемы шума округления, характерные для этих фильт- фильтров. Ряд других приложений теоретико-чис- теоретико-числовых преобразований рассматривался Пол- лардом [4] и Кнутом [3, 7]. Они включа- включали быстрое умножение больших целых чи- чисел и умножение полиномов. Приложение А. Свойства преобразований, обладающих циклическим свойством свертки. Ниже приводятся определение и сводка основ- основных свойств преобразований, обладающих цикли- циклическим свойством свертки. Предполагается, что все арифметические операции выполняются толь- только в кольце. Большинство из этих свойств анало- аналогично свойствам ДПФ [l]. A. Определение. Преобразование F(k) = Е/(п)«", к = ОД,-- VV - 1, (А1) "-° а" = 1 Обратное преобразование JV-1 /(п) = .V-' ? F{k)a-«btn = 0,l,--vV-l.(A2) fc-0 B. Базисные фуикцив. <рп(к) = а-, п,к = 0,l,---,.V - 1. (A3) C. Ортогональность. Скалярное произведение двух базисных функций определяется следующим образом [см A2) и A3)] лг-1 jv_i N, т = п mod Лг; (А4) 0 в остальных случаях. Это означает ортогональность базисных функций. D. Периодичность. F^ может быть периодически продолжено точно так же, как и /(п).
/"(я + N) . /(n); (A5) E. Свойство симметрии. Если сигнал является симметричным, т. е. Л») =»/(-я) =f(N-n), то преобразованная последовательность также симметрична, т. е. F(K) = F(-К) - F(N - К). (А6) Если сигнал является антисимметричным, т. е. /(л) = —fl—n) - -f(N - л), то преобразованная последовательность также антисимметрична, т. е. F(K) = -F(-K) = -F(N - К). (А7) F. Симметрия двойного преобразования. Г{Г{/(п)}| =Nf(~n). (A8) G. Теорема сдвига. Если Г {/(л)} = F(jK), то Т{ /(п + да) | = F(A>—*• (A9) Н. Быстрый вычислительный алгоритм. Если /V можно разложить на множители как N = T\'Tf 'Гт, то для вычисления преобразования может быть использован быстрый вычислительный алгоритм, аналогичный БПФ и требующий выполнения по- порядка N(rt + г, + . . . + гт) арифметических опе- операций. I. Свойства свертки. Преобразование цикли- циклической свертки двух последовательностей равно произведению их преобразований, т. е-, если то у = x*h, Т\у] = T\x\-T{h\. (А10Х J . Теорема Парсеваля. Пусть X (к) - Т { х (л)}; Н(к) =Г{А(л)}.Тогда .VE*W»(") = Е Х{к)Н{-к); (АН) АГ-1 АГ-1 -V ? x(n)h(-n) = ? Х(Л)Я(Л). (А12) п-0 t-0 В частном случае при х (л) =Л (л) ЛГ-1 ЛГ-1 N Е г*(«) = ? Х(к)Х(-к)\ (А13) ..-О t-0 IV-1 ЛГ-1 JV ? г(п)г(-п) = ? X(fcJ. (A14) r.-O fc—О Отметим, что в этом случае теорема Парсеваля в обычном виде п-0 4-0 не выполняется, поскольку в кольце абсолютное значение не определено. К. Свойство растяжения. Свойство растяжения существует, если в этом кольце существует пре- преобразование более длинной последовательности. L. Свойства дискретизации. Свойства дискре- дискретизации существуют. Приложение В. Доказательство теоремы 1. Как было показано выше, существование по- подобного преобразования зависит от существова- существования а порядка ЛГ относительно модуля, представ- представляющего степень простого сомножителя pj' . В соответствии с теоремой Эйлера [14] Мпорядок а должен делить где <р(Р(г<), где^Ср/О-функция Эйлера, определяемая как Pi - 1). (В1) Таким образом, N\ip(pJ), и поскольку р,- не является сомножителем N, то М (р,- - 1), i -1, 2, ...,/> или - 1), или (В2) Этим доказана необходимость условия теоремы. Для доказательства достаточности необходимо показать существование а порядка N, если только N\O(F). Заметим, что (В2) исключает существо- существование четного F, так как в этом случае О (F) = = 1. ЕслиN\O(F),таN\(pj - 1) или N \ <р(р{), поэтому можно найти целые числа 0,- порядка N по модулю р,г- [14], i -1,2, ... ,1. Тогда с по- помощью китайской теоремы об остатках можно найти а порядка N по модулю F = р/'. • -pf, та- такое, что а = &(modр4 1,2,• (ВЗ) Это и есть искомый а порядка N. Так как JV и Pi являются взаимно простыми числами, то в этом кольце существует N'1. Этим доказатель- доказательство теоремы заканчивается. Приложение С. Чтобы доказать, что OU из B3) имеет порядок 2* +2 mod Ft, мы должны показать, что он имеет порядок 1t+2 относительно степени каждого простого сомножителя числа Ff из B0). Пусть 171
рТ* представляет степень простого сомножите- сомножителя числа Ff, тогда а„»'+2 = 2"+' = 1 mod F«= I mod p/<. (Cl) Пусть iVj является порядком CL, относительно pf , тогда согласно теореме Эйлера имеем , тогда согласно теореме Эйлера имеем (С2) Поэтому Nj должно быть равно степени 2, а также а/+1 = 2i' = - l.mod F, = -1 mod р<". (СЗ) Из (С1) и (СЗ) совершенно очевидно, что N( = 2«+2. Этим завершается доказательство. Благодарность. Авторы хотели выразить благо- благодарность Ч. М. Рейдеру нз Лаборатории Линколь- Линкольна, в Кембридже, шт. Массачусетс, за обсуждение материала н сделанные замечания. west IEEEConf.Rec, Houston, Тех., Apr. 1973, pp. 538 - 543. 112] —, "Fast one-dimensional digital convolution by multidimensional techniques," IEEE Trans. Acoust., Speech, and Signal Processing, vol. ASSP-22, pp. 1 - 10, Feb. 1974. [13] L. E. Dickson, History of the Theory of Num- Numbers, vol. I. Washmgton, D. C: Carnegie Institute, 1919, p. 376. [14] O. Ore, Number Theory and Its History. New York: McGraw-Hill, 1948. [15] D. A. Pitassi, "Fast convolution using Walsh func- functions," in Proc. Conf. Applications of Walsh Functions, Washington, D. C, April 1971, pp. 130- 133. [16] С S Burrus, "Block realization of digital filters," IEEE Trans. Audio Electroacoust, vol. AU-20, pp.230- 235, Oct. 1972 [17] R. С Singleton, "An algorithm for computing the mixed radix fast Fourier transform," IEEE Trans. Audio Electroacoust., vol. AU-17,pp.93 - 103, June 1969. Список литературы [1]B. Gold and С. М. Rader, Digital Processing of Signals. New York: McGraw-Hill, 1969. [2] A. V. Oppenheim and С Wemstein, "Effects of fmite register length in digital filtering and fast Fourier transform," Proc. IEEE, vol. 60, pp. 957-976, Aug. 1972. [3]D. E. Knuth, 7fte Art of Computer Programming, vol. 2, SeminumericalAlgorithms. Readmg, Mass.: Addison-Wesley, 1969, p. 555 and pp. 259 - 262. [4] J. M. Pollard, "The fast Fourier transform in a fi- finite field," Math. Comput., vol. 25, pp. 365 - 374, Apr. 1971. [5] I. J. Good, "The relation between two fast Fourier transforms," IEEE Trans. Comput, vol. C-20, pp.310 - 317, Mar. 1971. [6] A. Schonhage and V. Strassen, "Fast multiplica- multiplication of iarge numbers," (in German) Comput., vol. 7, pp. 281 -292,1971. [7jD. E. Knuth, "The art of computing program- programming - errata et addenda," Comput. Sci. Dep., Stanford University, Stanford, Calif., Rep. STAN-CS-71-194,pp. 21 - 26, Jan. 1971. [8] P. J. Nicholson, "Algebraic theory of finite Fourier transforms," /. Comput. Syst. Sci., vol. 5, pp. 524-547,1971. [9] С. М. Rader, "The number theoretic DFT and exact discrete convolution," IEEE Arden House Workshop on Digital Signal Processing, Harriman, N.Y., Jan. 11,1972. [10]-, "Discrete convolution, via Mersenne trans- transforms," IEEE Trans. Comput., vol. C-21, pp. 1269- 1273, Dec. 1972. [11] R. С Agarwal and С S. Burrus, "Fast digital convolution using Fermat transforms," in South- 172 Статья 8 Алгоритм быстрого вычисления цифровой одномерной свертки на основе многомерных методов Р. С. Агарвал, Ч. С. Баррас Аннотация. В работе рассматриваются два способа представления многомерных цифровых сигналов, полученных из одномерных цифровых сигналов, что позволяет путем вычисления много- многомерной свертки получить одномерную свертку исходных сигналов. Это позволяет ослабить одно из существенных ограничений на длину слова при использовании теоретико-числового преобразова- преобразования Ферма. Способ представления является доста- достаточно общим и включает как частные случаи по- поблочную обработку и разбиение на секции. При использовании в различных "быстрых" алгорит- алгоритмах свертки коротких последовательностей этот способ повышает вычислительную эффективность в смысле сокращения количества умножений. 1. Введение Представление, одномерной цифровой свертки в виде двумерной или многомер- многомерной задачи имеет ряд преимуществ. Пер- Первое из них связано с возможностью исполь- использовать предложенные недавно теоретико-чис- теоретико-числовые преобразования Мерсенна и Ферма
[1, 2], которые, по-видимому, обладают рядом преимуществ перед дискретным пре- преобразованием Фурье при вычислении сверт- свертки на цифровой вычислительной машине. По сравнению с быстрыми алгоритмами ДПФ преобразования Мерсенна и Ферма вы- выполняются быстрее и результаты не содер- содержат ошибок округления. Однако зти преобразования имеют одно ограничение: количество бит в каждом сло- слове, необходимое при их реализации, про- пропорционально длине сворачиваемых после- последовательностей [1,2]. Основная цель данной работы состоит в том, чтобы дать метод вычисления сверт- свертки длинных последовательностей с помо- помощью двумерной свертки, о котором упо- упоминал Рейдер [1]. Двумерная свертка может быть реали- реализована путем двумерного преобразования, что позволяет получить высокоскоростной алгоритм свертки без ошибок округления и с длиной слова, пропорциональной корню квадратному из длины обрабатываемых последовательностей. Подобное представление позволяет так- также использовать специальные алгоритмы укороченной свертки, аналогичные тем, ко- которые были предложены Питасси [7], Рей- нером [8], Девисом [9] и Олрайтом [10]. Эти алгоритмы могут быть расширены и использованы в сочетании с Другими алгоритмами для получения универсально- универсального и гибкого формата при быстром вычисле- вычислении цифровой свертки. Случай, когда после- последовательности имеют различную длину или когда требуется только часть выходной последовательности, трактуется как част- частный случай общей задачи. 2. Двумерная свертка, основанная на методе перекрытия с накоплением Рассмотрим циклическую свертку двух последовательностей х (л) и А (л), которой соответствует выходная последовательность у (и), причем все они имеют длину N: п{п) * х(п) = у(п). A) Эта последовательность определяется сле- следующим образом: W-I ? л(л- q)x(q), в-о п-0,1,---АГ- 1, B) где А (х) и х (л) — периодические последо- последовательности, которые получены периоди- периодическим продолжением исходных последова- последовательностей за пределы области определения (или их индексы вычисляются по mod N). Чтобы свести эту одномерную задачу к двумерной, производится замена пере- переменных. Для этого требуется, чтобы число N раскладывалось на два целочисленных сомножителя: N=LM. C) Если произвести замену переменных следующим образом: п = I + mL,l Г k, I = 0,1, ¦ • !,L - 1, q=k + РЩ то B) можно записать в виде k-0 p'O D) Введем теперь двумерный массив X разме- размера L х М, соответствующий исходному сиг- сигналу х (п) длиной N = LM: ${l,m) = x(l + mL), E) где столбцы X являются секциями или бло- блоками сигнала х, а строки — выборками сиг- сигнала х, следующими через L значений л. Ана- Аналогичным образом можно определить F) В терминах двумерных сигналов D) за- записывается в следующем виде: ?V, m)=f. t d{l-k,m-p)X(k,p), G) который представляет собой двумерную свертку. Заметим, что в формулу входят значе- значения Н за пределами двумерного массива раз- размера L х М. 173
Как видно из G), значения Н необхо- необходимо доопределить для значений индексов, определенных неравенствами 1 — L < 7 — Л < 1-1и \ -М<т-р <М- I. Значения H(l,/ri) за пределами двумер- двумерного массива размеров L х М определяют- определяются формулой F). Таким образом, мы опре- делили продолженные массивы Н и X, так что двумерная свертка дает нужный резуль- результат. Продолжение Н здесь выполняется ана- аналогично продолжениям с перекрытием, ко- которые используются в алгоритме с перекры- перекрытием и накоплением для осуществления сек- секционирования или поблочной обработки [3, 4]. Отметим, что по измерению т значе- значения Я периодически повторяются с пери- периодом М, т. е. искомая свертка G) является циклической по измерению т (причина это- этого в том, что исходная искомая сверткаД2) была циклической). Анализ значений Н по измерению I показывает, что свертка по этр- му измерению не является циклической. При рассмотрении многомерных свер- сверток важным показателем является коли- количество умножений, выполняемых в процес- процессе вычислений. Если в G) зафиксировать постоянными т и р, то G) вырождается в одномерную свертку по измерению / последовательности х, длины L с последо- последовательностью h длины BZ, — 1), в резуль- результате вычисления которой образуется выход- выходная последовательность длины L. Для каж- каждого значения т и р в G) вычисляется та- такая одномерная свертка длины L, так что элементарной операцией, выполняемой по измерению т, будет не простое умножение, а свертка длины Г. Все вычисление есть своего рода свертка сверток [3]. Мы наш- нашли количество умножений, выполняемых при вычислении G), когда Ink фиксирова- фиксированы. Но если / и к не фиксированы, это есть количество необходимых сверток длины L, поэтому общее количество умножений будет равно числу сверток длины L, помно- помноженному на число умножений, выполня- выполняемых при вычислении свертки длиной L. В этом случае количество умножений, вы- выполняемых по измерению т, равно М2 и L 2 по измерению /. Таким образом, общее ко- 174 личество умножений равно M2L2 или N2, что совпадает с количеством умножений при непосредственном вычислении B). Ни- Ниже будут использованы некоторые сообра- соображения и другие схемы вычислений, позволя- позволяющие снизить зто число. Заметим, что вы- вычисление свертки может выполняться в лю- любом порядке. Если G) необходимо вычислять мето- методом преобразований, а поэтому ее следует рассматривать как циклическую свертку, то X должен быть дополнен нулями во избежа- избежание эффекта "перехлестывания" при вычис- вычислении нециклической свертки по измерению /, при этом все массивы будут иметь одина- одинаковые размеры. # Рассмотрим массив X размера BL - — 1) х М, образованный добавлением (L — — 1) нулевой строки внизу массива X: ¦*@) x(L) ¦¦¦ x(N- L) хA) x(L + 1) (8) x(L- 0 0 1) 0 0 x(N- 0 0 1) Массив л формируется таким образом, что его столбцы содержат периодическое продолжение с периодом N исходной после- последовательности h (и): h(N-L + l) h(N-2L + l) h(N- h{L- h(L) ¦ h(L + h(N- L) _h(L- 1) h(N- 1) (9)
Если вычисляется двумерная циклическая свертка, то имеем У-Я*Л, A0) где нижняя часть массива У, которая имеет размер L х М, есть просто У, а столбцы У являются искомыми блоками у(п) в B). Для упрощения вычислений с помощью преобразований массивы обычно целесооб- целесообразно увеличить на одну строку до размера 2L х М вместо минимальных BL — 1) х М. 3. Вычисление с помощью двумерного преобразования Введем следующее двумерное преобра- преобразование массива X: % A1) и обратное преобразование М-\ 2L-1 E L х fc-О /-0 A2) где ctM является первообразным корнем M-vi степени из единицы, т. е. М есть наимень- наименьшее положительное целое, такое, что Применяя зто преобразование к A0), можно показать, что A3) Таким образом, как и в одномерном случае, A0) может быть выполнено следующим образом: у«Т-1[Г{&}Т{?}]. A4) В случае ДПФ ам = г ~i г*1м. Чтобы сравнить эффективность алгоритмов по чис- числу операций умножения, предположим, что ДПФ массива Я уже известно и остается лишь подсчитать количество умножений при выполнении прямого и обратного пре- преобразований массива размера Bi x M) и одного умножения комплексного массива размера BL хМ). Количество умножений комплексных чисел равно примерно B/Vlog 2N+ IN), в то время как при вычислении одномерной свертки потребуется^ logN+N) умноже- умножений. Поэтому использование двумерного подхода в сочетании с ДПФ для уменьше- уменьшения количества умножений нецелесообраз- нецелесообразно. Упрощение вычислений возможно, если воспользоваться числовым преобразовани- преобразованием Ферма [2], для которого к возможным ограничениям следует отнести длину слова. Числовое преобразование Ферма введено в [2], а также в несколько ограниченной фор- форме в последней части работы [1] [см. C8)], хотя там оно и не названо таковым. Это пре- преобразование определено на конечном коль- кольце целых чисел с арифметикой по модулю чисел Ферма BЬ + 1, Ъ = 2f), где a2b = 2, alb = \f~2, и обладает тем свойством, что умножение числовых преобразований Фер- Ферма соответствует обычной циклической свертке B) по модулю 2Ь + 1. Чтобы вы- вычислить- свертку с помощью этого преобра- преобразования, требуется N умножений действи- действительных чисел, а количество сложений и сдвигов слов пропорционально NlogN. К сожалению, числовое преобразование Ферма требует, чтобы длины слов были пропорци- пропорциональны длинам сворачиваемых последова- последовательностей [1, 2]. Так как длины последовательностей по двум измерениям составляют соответ- соответственно 2L и М, а ие N* LM, как в случае одномерного сигнала, требование к длине слова при использовании двумерного пре- преобразования снижается до значения, про- пропорционального корню квадратному из N, а не N, как в одномерной задаче. Именно это уменьшение необходимой длины слова при выполнении числового преобразования Ферма делает привлекательной двумерную формулировку задачи. Последствия, к которым приводит это уменьшение длины слова, имеют важное практическое значение. Например, при ис- 175
пользовании слов длины 16 бит и числового преобразования Ферма [2] с а = 2 для вы- вычисления полной нециклической свертки двух последовательностей равной длины в одномерном варианте максимальная длина последовательности не должна превышать 16, в то время как в двумерном варианте максимальная длина последовательности возрастает до 256. В табл. 1 приведены предельные значения длины последователь- последовательностей для наиболее распространенных длин слова и для двух значений а. Следует отметить, что ограничение дли- длины, получающееся в одномерном варианте, может служить серьезным препятствием для многих приложений, в то время как длины слова, допускаемые в двумерном ва- варианте, достаточны для большинства реаль- реальных фильтров. При реализации циклической свертки все длины могут быть удвоены, поскольку можно обойтись без добавления нулей. Двумерное преобразование и обратное ему могут выполняться в любом порядке. Однако удобнее сначала двигаться по из- измерению т (длина М), а затем по измере- измерению / (длина 2L), поскольку ровно поло- половина последовательностей X по измерению т — последовательности нулей, а половина последовательностей Н является цикли- циклическим сдвигом на одну позицию другой по- половины последовательностей. Аналогично при вычислении обратного преобразования Таблица 1. Предельные значения длины после- последовательности для одномерного и многомерного вариантов реализации нециклической свертки пу- путем преобразования по числам Ферма Длина слов (бит) 16 16 32 32 64 64 Базис пре- преобразования а 2 2 stf 2 V2 Максимальная длина последовательности Л/2 1-D 16 32 32 64 64 128 2-D 256 1024 1024 4096 4096 16 384 сначала удобно выполнить преобразование по измерению /, а затем по т, поскольку требуется только половина последователь- последовательностей Y, следовательно, необходимо пре- преобразовать только половину последователь- последовательностей по измерению т. 4. Обобщения и обратная задача Обобщение развитого в данной работе подхода на многомерный вариант пред- представляется очевидным. Например, jV можно разложить на три сомножителя N = LMP, также как это было сделано в C) при раз- разложении на два сомножителя. Сигналы х(п) к h (и) затем должны быть представле- представлены в виде трехмерных массивов размеров L хМх Р,л свертка B) путем замены пере- переменных, как это было сделано в D) — G), преобразована в трехмерную свертку. Скажем, х заменяется на массив X(l,m,p) = x(l + mL+pML). A5) Сделав аналогичную замену переменных для Я и У и дополнив массивы нулями, во избежание эффекта наложения, B) можно преобразовать в трехмерную свертку *» ^ ^ Y = H*X. В этом случае одномерная циклическая свертка последовательностей длины N будет выполняться как трехмерная циклическая свертка по трем измерениям соответствен- соответственно с количеством точек 2L, 2М, Р. Увели- Увеличение размерности выше двух в сочетании с типовым преобразованием Ферма в насто- настоящий момент, по-видимому, не имеет смыс- смысла, однако в сочетании с другими методами этот прием будет использован в последу- последующих разделах. Еще одна модификация может найти при- применение в случае фильтра с периодически измеряющимися во времени параметрами. В этом случае переход к двумерному пред- представлению с L, равным периоду изменения параметров фильтра, позволяет получить стационарную характеристику по одному измерению т, и нестационарную - по дру- другому I [5]. ДПФ или преобразование Ферма может быть применено к двумерному сиг- 176
налу по стационарному во времени изме- измерению, а по другому измерению может свертка вычисляться непосредственно либо с помощью другого вида преобразования. Задача, обратная рассмотренной, может возникнуть, если желательно вычислить дву- двумерную свертку одномерными методами. В этом случае по заданным массивам восстанавливаются одномерные последова- последовательности с помощью методики, обратной той, которая была рассмотрена в разд. II. Мак Адаме [6] описал методику реше- решения задачи, которая может рассматриваться как обратная к рассмотренной в данной ра- работе. Эта методика может быть использо- использована в случае циклической и нециклической двумерных сверток. 5- М-мерная свертка Если длина циклически сворачиваемых сигналов в B) имеет вид N = 2м, то пре- преобразованиями типа E) и A5) можно превратить эти сигналы в Л/-мерные с дли- длиной два по каждому измерению. Как и прежде, это достигается заменой переменных. X(l, m, р, • • • ) = х{1 + 2т + Ар + •••), После аналогичного представления Н и У циклическую свертку B) можно записать в следующем виде: , , , Y(l,m,p,-)= Е Е Е: H(l- h,m- j,p- q,-- )' X(k,j,q,-) ДЛЯ l,m,p, 0,1.A8) Как X, так и У являются Л/-мерными после- последовательностями, длина которых по каж- каждому измерению равна двум, а Н также име- имеет размерность М, но длина ее по каждому измерению для вычисления A8) должна быть равной трем. Это объясняется той же причиной, что и в^двумерном случае, когда рассматривалась Н в виде (9) • Так как ис- исходная свертка в B) циклическая, то сверт- свертка по последнему измерению в A8) также является циклической, поэтому отсутствует необходимость в продолжении Й по этому измерению, но его индекс следует приво- приводить по модулю 2. Эта чрезвычайно общая и гибкая форму- формулировка исходной задачи может быть ис- использована для увеличения эффективности вычислений. Двухточечную свертку по каж- каждому измерению можно выразить через скалярные величины следующим образом: Свертку A8) можно рассматривать как М вложенных 2-точечных сверток, каждая из которых в отдельности представляется в виде A9) и требует четырех умножений. Используя ту же самую аргументацию, что и в двумерном случае, можно показать, что общее количество умножений составляет F = 4м. Так как N = 2м, то F = N2, что опять равно количеству умножений, необ- необходимых при непосредственном вычисле- вычислении B). 6. Быстродействующий алгоритм Представив одномерную свертку через многомерные "короткие" свертки, можно использовать различные приемы быстрого вычисления "коротких" сверток. Рассмот- Рассмотрим один из нескольких возможных алго- алгоритмов, предложенных Питасси [7], в ко- котором вместо непосредственного вычисле- вычисления A9) предварительно находятся три числа: g0 =(h0 +h.1)x1; g\ = ho(xo - xx\> g2 =(h1 +ho)xo. B0) Искомые выходные значения затем вы- вычисляются следующим образом: Уо =?о +gi\ Vi =8г - gi- B1) Этот метод требует трех умножений вместо четырех для прямого метода. Поэтому для вычисления A8) общее ко- количество умножений составит F = 3м. B2) 177
Дальнейшее сокращение количества ум- умножений можно получить, если воспользо- воспользоваться ранее отмеченным фактом, что свертка по последнему измерению явля- является циклической. Циклическая 2-точечная свертка опреде- определяется следующим образом: B3) Ее можно вычислить с помощью двух про- промежуточных величин, определяемых сле- следующим образом. f0 -(ho/2 + h,/2)(*o +*,); Л =(Ь0/2- М2)(*о - *i). В результате имеем Уо = /о + Л •• У1 =/о - Л. B4) что требует всего двух умножений (в пред- предположении, что И [12 либо вычислены за- заранее, либо получаются путем сдвига). Используя этот прием для свертки по последнему измерению, получаем, что B2) уменьшается до F = 2 • 3м ~1. Это же число было получено Питасси [7] иРейнером [8]. Питасси вывел свой алгоритм, рассматри- рассматривая связь циклической свертки двух после- последовательностей со сверткой подпоследова- подпоследовательностей тем же самым способом, каким был выведен алгоритм БПФ на основе "про- "прореживания" во времени. Этот алгоритм был распространен Девисом [9] на метод, ана- аналогичный "прореживанию" по частоте, в ко- котором подпоследовательности образуются делением пополам исходных последователь- последовательностей. Оба зти алгоритма являются частны- частными случаями многомерной формулировки задачи, поскольку величины, участвующие в вычислениях по любому измерению, пред- представляют собой либо выборки, либо блоки исходной последовательности. Другой формой свертки, которая иногда оказывается удобной, является форма, по существу совпадающая с B), но в которой ft (и) для отрицательных индексов строит- 178 ся не как периодическое продолжение, а до некоторой степени произвольно. Матричное представление свертки для N= 3 имеет следующий вид: Hq /l_i П-2 Xq Уо _h2 ht hoj \_x2j \_y2j B6) Этот оператор в силу характерной для не- него структуры называется матрицей свертки с фиксированной диагональю. В этом слу- случае для получения N значений у (л) требует- требуется 2N — 1 значений h (n) [для п, лежащих в пределах от (-N + 1) до (N - 1)] и N значений х (п). Метод, использованный для циклической свертки, применим и в данном случае, но сокращение умножений по формулам B3) и B4) здесь не происходит, поскольку Л/-мерное представление A8) не является циклическим ни по одному измерению. По- Поэтому количество умножений, необходимых для вычисления ЛГ-точечной свертки с фикси- фиксированной диагональю, равно F = 3м, B7) что совпадает с результатом, полученным Олрайтом [10] методом факторизации мат- матрицы- Заметим, что циклическая свертка в B) может рассматриваться как частный слу- случай свертки с фиксированной диагональю. Казуальная нециклическая свертка, кото- которой соответствует h(n), равной нулю для и < 0, также является частным случаем этой свертки: К о ho 0 0 ho *0 Xi Х-, Уо Vi У? B8) Самая распространенная форма свертки- это казуальная нециклическая свертка, при которой требуются все элементы выходной последовательности, а не только первые N элементов, как в B8). В этом случае при свертке двух после- последовательностей длиной ^образуется выход- выходная последовательность длиной BV — 1). Матричное представление такой свертки для 7V= 3 имеет следующий вид.
ho hi ht 0 0 0 h2 0 0 0 h0 hx h2_ ~X0~ Xi Iе г. Уо У! Уг Уг У* B9) Чтобы воспользоваться результатами, полу- полученными для циклической свертки, необ- необходимо все последовательности дополнить нулями до длины 2N. В этом случае в ре- результате выполнения циклической свертки формируется искомая выходная последова- последовательность B9) и используется F = 2 • 3м C0) умножений. Дальнейшее сокращение количества ум- умножений можно получить, если заметить, что при свертке по последнему измерению требуется лишь одно умножение, а не два, как в случае циклической свертки, что да- дает B5), и не три, как в случае нецикли- нециклической свертки с фиксированной диаго- диагональю, что дает B7). Рассмотрим (М + + 1)-мерную свертку A8) продолженных последовательностей, все индексы которой, за исключением последнего, фиксированы. В результате получим 2-точечную одномер- одномерную свертку Pa 0,1,C1) /-о т. е. А Л Л А А Уо =«0*0 +й-1*Г. у, C2) Составляющие %i всегда равны нулю, так как вторая половина последовательности х (и) длиной 2/V составлена из одних нулей. Более подробный анализ показывает, что поскольку h (и) также дополнена нулями, то либо л о, либо h 1 будут равны нулю в зависимости от значений фиксированных индексов.. Поэтому для вычисления 2-точечной свертки C1) требуется только одно умно- умножение, в связи с чем общее количество умножений, необходимых для вычисления нециклической свертки двух последователь- последовательностей длины N, в результате которого об- образуется выходная последовательность дли- длины 2/V, равно F-^. C3) Это совпадает с количеством умножений, необходимых для вычисления свертки с фиксированной диагональю последователь- последовательностей длины N для получения выходной последовательности длины N. 7. Многомерная свертка, основанная на методе перекрытия с суммированием Другой вариант двумерного представле- представления свертки может быть получен как обоб- обобщение алгоритма перекрытия с суммирова- суммированием [3, 4]. В выражении G) функция А была до- дополнена таким образом, что искомая вы- выходная последовательность у(п) имела блочную структуру, причем блоки пред- представляли собой столбцы матрицы Y. В рассматриваемом представлении будет дополняться не Я, a Y, причем искомая последовательность у(п) будет получаться путем сложения перекрывающихся столб- столбцов матрицы /. Это представление основа- основано на нециклической свертке, определяемой следующим образом: лг-1 y(n)*L h(n- q)x(q),n*0,1.---2ЛГ- 1, 4-0 C4) где h (я) их (п) — последовательности дли- длины N, & у(п) - последовательности длины 2N - 1, причем за пределами указанных длин все последовательности равны нулю. Матричное представление рассматриваемой свертки для N = 3 дано выражением B9). Используя разложение jV на множители и замену переменных, аналогичные тем, которые были сделаны в C) и (S), получа- получаем следующее представление C4): fy.m)»;!:1 Z UV-k,m-p)$lk,r), р-0 Je-0 /-0,1.--2L- 2; m - 0,1, • •• 2М - 2. C5) 179
В этом случае X и Н являются массивами размера L х M, a Y - размера BL - 1) х х BМ - 1), причем столбцы X кН являют- являются блоками х(п) и h (п), но столбцы У и блоки у(п) связаны более сложным обра- образом, чем в F). Как X, так и Я продолжают- продолжаются нулями за пределами области определе- определения. Здесь можно показать, что y(l + mL) = Y{1, m) + Y(l + L,m- l) C6) для/ =0, 1, 1-1; т = 0, 1 Ш- — 1 и У(/, т) = 0 за пределами области его определения: I-0.VU-1. = 0,1, - 2. При таком представлении вычисление од- одномерной свертки осуществляется путем суммирования перекрывающихся столбцов массива, сформированного как результат двумерной нециклической свертки. Оно мо- может рассматриваться как обобщение алго- алгоритма перекрытия с суммированием, ис- используемого для секционирования или по- поблочной обработки. При N = 2^ можно получить обобщение на случай М-мерной свертки, аналогичное тому, которое было сделано для метода перекрытия с накоплением в A7) и A8). Как X, так и Ц являются многомерными массивами, причем размер массивов по каждому измерению равен двум; У также является многомерным массивом, но раз- размер массива по каждому измерению равен трем. Для ХA, т,р, • ¦ • ) = хA + 2т + Ар + ¦¦¦), ТТ/1 wv% —. . ,.\ — il/'/^V YYI ¦+¦ А. П ¦+¦ • • ¦ 1 1Л\1% 7П ¦ Р j /~"\* ?л11ъ ' "г / выражение C4) принимает следующий вид k=o i-й и*о H(l- k,m- j,p~ q,- • ¦ )X(k,f,q,- ¦ • )C9) для/,т, р,... =0,1,2. Вычисление у (и) по известному У явля- является достаточно сложной операцией, пред- представляющей обобщение соотношения C6), но включающей только сложения.^Напри- мер, если N = 23 = 8, то массив У будет 180 трехмерным и содержит 27 элементов. Ио измерению / будет девять блоков длийы три, при сложении которых с перекрытием по измерению т должно получиться три блока длины семь, затем эти блоки при суммировании с перекрытием должны дать одну последовательность длины 15, которая и есть последовательность у (и). Например, для N = 4 У представляет дву- двумерный массив размера 3x3: Уоо Уо1 Уог Учю Ун Ун У2О У2 1 У22 D0) а у(п) должна находиться по следующему правилу. ^ Уо =Уоо; У2 =У2О +УО1-. Уз = у и ; У4 = У21 +УО2- Уб=У22. D1) Матричное представление свертки длины 2 по каждому Измерению имеет следующий вид. _ Ло ОТ ГхЛ ГУо ht К [xj - у, D2) О /l,_ У 2 Для непосредственного вычисления этой свертки требуются четыре умножения и одно сложение. Если ввести промежуточ- промежуточный этап вычислений для у у, то алгоритм Уо =hoxo\ У1 =(Л0 +Л1НХ0 +*i)- Уо - УГ- У2=Л,х1. D3) приводит к трем умножениям и четырем сло- сложениям/вычитаниям на три выходные вели- величины. Используя этот алгоритм для вычис- вычисления сверток по каждому измерению вы- выражения C9) и подсчитывая количество необходимых умножений методом, исполь- использованным для получения C3), можно най- найти, что для вычисления C9) требуется F = 3м D4)
умножений, что совпадает с количеством умножений, необходимых для вычисления свертки методом перекрытия с суммиро- суммированием. 8. Последовательности различной длины и усеченные выходные последовательности Часто возникает необходимость в двух модификациях обычного представления свертки. Первая из них требуется, когда две последовательности имеют существенно различную длину, а вторая необходима, ког- когда желательно иметь не всю выходную пос- последовательность, а только часть ее. В обоих случаях могут быть получены представле- представления через многомерные свертки и достиг- достигнут выигрыш в количестве выполняемых операций. Пусть h (я) представляет более корот- короткую последовательность длины L = 2*, а х(п) — более длинную последовательность длиныЛ = 2* -М. Если необходимо, то к х и h можно до- добавить соответствующее количество нулей. Многомерные сигналы формируются таким образом, чтобы получить 5 измерений дли- длины 2, а последнее измерение длины М. Ес- Если через m обозначить индекс для измере- измерения длины М, то Я составляется таким об- образом, что содержит нули для всех т, за исключением т = 0. Поэтому если быстрый алгоритм B0) или D3) используется для вычислений по всем измерениям длины 2, то для вычисле- вычислений по измерению длины М потребуется только М умножений и общее количество умножений будет равно F = 3S -M. D5) В этом можно также убедиться, рас- рассматривая нашу задачу как вычисление М нециклических 2s-точечных сверток с со- соответствующим перекрытием и сложением выходных подпоследовательностей. Если требуется получить только часть всей выходной последовательности как ре- результата свертки, то может быть достигнут аналогичный выигрыш. Предположим, что h (п) и х (п) имеют длину N = LM, а выход- выходная последовательность у (я), соответству- соответствующая нециклической свертке, имеет длину 2N— 1. При этом требуется получить только блок длины L последовательности у(п). Сначала добавим N дополнительных нулей к обоим последовательностям и получим 2N-точечную циклическую свертку. Эту од- одномерную циклическую свертку предста- представим в виде двумерной циклической сверт- свертки в соответствии с выражениями E) - G). Свертка по первому измерению явля- является L -точечной нециклической и может быть вычислена как BL - 1)-точечная цик- циклическая свертка. По второму измерению свертка является Ж-точечной циклической. Сформируем двумерные массивы таким об- образом, чтобы искомый блок длины L по- последовательности у(п) фигурировал как столбец У в F). Таким образом, вычисле- вычисление по второму измерению необходимо вы- выполнить только для одного индекса. В результате операция вычисления цик- циклической Ж-точечной свертки заменяется суммированием Ж членов по второму из- измерению. Искомый выходной блок может быть записан как сумма Ж-точечных свер- сверток, где каждая свертка представляет сверт- свертку двух последовательностей длины 1L - — 1 kL соответственно в результате выпол- выполнения которой образуется последователь- последовательность длины L. Поскольку х (я) и // (я) бы- были дополнены нулями, то из этих 2М свер- сверток не более М сверток будут отиичнымй от нуля в зависимости от значения второго индекеа У, для которого необходимо полу- получить выходную последовательность; L-точеч- L-точечные свертки могут быть выполнены либо с помощью методов преобразования, либо с помощью многомерных методов, рассмот- рассмотренных в данной работе. Если используют- используются методы преобразования, то суммиро- суммировать можно не свертки, а их преобразова- преобразования, так что достаточно одного обратного преобразования для получения искомой выходной последовательности. Рейдер [11] рассмотрел аналогичный метод для частно- частного случая оценивания автокорреляционной функции для нескольких первых значений запаздывания. Если L = 2s и используют- используются многомерные методы, то количество ум- 181
ножений оказьтается не больше, чем D5) • Рассмотренное здесь представление мо- может быть распространено также на ситуацию, когда необходимо получить только выбо- выборочные значения (отсчеты) выходной после- последовательности с периодом L. В этом случае применительно к двумерному представле- представлению искомая выходная последовательность фигурирует как строка Y. Поэтому, как и прежде, двумерная свертка сводится к сум- суммированию сверток. Если выходная после- последовательность у (л) представляет собой узко- узкополосный сигнал по сравнению с частотой дискретизации, то для того чтобы восстано- восстановить аналоговый сигнал, достаточно форми- формировать выборки кэу(п) с меньшей частотой. В этой ситуации рассмотренное здесь пред- представление может обеспечить выигрыш в ко- количестве вычислений. Если рассматривать многомерное пред- представление, то усеченные выходные после- последовательности можно получить как комби- комбинации блоков и выборочных значений. 9- Связь с логической сверткой и преобразованиями Уолша Рассмотрим логическую свертку [12] двух последовательностей х (л) и h (л) дли- длины N = ТМ, которым соответствует выход- выходная последовательность у(п) также длины N. Логическая свертка определяется анало- аналогично циклической свертке B), но сложе- сложение и вычитание индексов выполняются иначе. Все индексы представляются в двоич- двоичной форме как число, состоящее из М дво- двоичных символов (бит). Когда индексы не- необходимо сложить или вычесть, то сумми- суммирование и вычитание происходят посим- посимвольно по модулю 2. Отметим, что в логи- логической свертке суммирование и вычита- вычитание индексов совпадают. Можно предста- представить зту одномерную циклическую сверт- свертку через Af-мерную свертку, как это было сделано в A7) и A8). По любой коорди- координате свертка будет иметь вид, аналогичный A9), но поскольку вычисляется логическая свертка, то Л (—1) =А A). 182 Поэтому если A8) вычисляется как двухточечные циклические свертки по всем измерениям, то>'(л) получается как резуль- результат логической свертки х (л) и Л (л). В другом варианте если A8) вычисля- вычисляется как нециклическая свертка по всем измерениям, то получается нециклическая свертка последовательностей х(п) и h (и) как в B6). Двухточечная циклическая свертка мо- может быть вычислена с помощью только двух умножений, как, например в B4), которое по существу представляет алгоритм вы- вычисления двухточечного ДПФ. Таким образом, A8) может быть вычис- вычислено как Af-мерная циклическая свертка с использованием М-мерного ДПФ массивов X и Н, размер которых по каждому изме- измерению равен двум. Или же ./V-точечная ло- логическая свертка может быть вычислена с помощью ./V-точечных преобразований Уол- Уолша х(п) и h (и) [12]. Проведенный выше анализ показывает, что ./V-точечное преобра- преобразование Уолша (N = 2м) эквивалентно М-мерному ДПФ. Таким образом, М-мер- ный подход позволяет сформулировать те- теорему о логической свертке для преобразо- преобразований Уолша, а также установить связь между алгоритмом быстрого преобразова- преобразования Уолша и Af-мерным ДПФ. Эти факты уже отмечались в ранее опубликованных работах. Для частного случая представления B0) Питасси [7] и Девис [9] показали, что не- некоторые промежуточные произведения со- соответствуют результатам перемножения пре- преобразований Уолша двух последователь- последовательностей. 10. Обобщения и приложения Возможен ряд модификаций и обобще- обобщений рассмотренных здесь представлений для свертки. Сначала покажем, что быстрые алгорит- алгоритмы существуют и для последовательностей, длина которых больше- 2. Рассмотрим нециклическую свертку двух последовательностей длины 3
Ло л, л2 0 0 0 Ло л, л2 О О О Ло л, л2 "*о~ Уо У1 Уг Уз У4_ D6) Для вычисления этой свертки обычным путем требуется девять умножений и четы- четыре сложения. Если предварительно вычислить шесть промежуточных величин по формулам go =Ло*о, g3 =(Л0 +Л,)(х0 +xi), 8i =Л,х,, g4 = (h, +h2)(xi + x2)t 8г =Л2х2> gs = {h2 + ho)(x2 +x0), D7) то искомая выходная последовательность может быть получена как Уо =ёо> У1 =?э - go - gu Уг = gs +gi ~ g0 ~ gi, Уз =g* - g\ ~ gi, У4 "A- D8) При этом требуется только шесть умножений. Если необходимо вычислить свертку двух последовательностей длины N = 3м, то при использовании Af-мерного представ- представления свертки с длиной, равной трем, по каждому измерению общее количество умножений будет равно F = (Р. D9) Для коротких последовательностей та- такой длины этот метод обеспечивает боль- большее быстродействие, чем если последова- последовательность дополнить нулями до ближай- ближайшей степени 2 и применить C9). Аналогичные результаты можно получить и для других длин, причем можно постро- построить общую схему вычислений для после- последовательностей длины N=2M3S .... E0) используя различные алгоритмы при вы- вычислениях по различным измерениям, ана- аналогично тому, как зто делаегся при исполь- использовании БПФ по составному основанию си- системы счисления. Поскольку многомерное представление свертки носит общий характер, то оно до* пускает использование различных комбина- комбинаций быстродействующих алгоритмов. В некоторых ситуациях может оказать- оказаться предпочтительной комбинация методов преобразования с быстрыми алгоритмами для коротких сверток, рассмотренных в данной работе. Так, например, в одной из подобных си- ситуаций используется числовое преобразова- преобразование Ферма [2]. Как было показано в разд. III, при использовании ^-битовой реализа- реализации числовых преобразований Ферма макси- максимальная длина циклической свертки соста- составит 4Ь. Для вычисления циклической сверт- свертки более длинных последовательностей не- необходимо перейти к двумерному предста- представлению свертки, как зто было сделано в разд. II- Предположим, что х(п), h (n) и у(п) являются последовательносгями дли- длины N=8b. Рассмотрим представление G) с М = = 46 и/, =2. Выражение G) может быть переписано в виде М -1 ) = ? й@,т- р)Я(О,р) + т) , т - „«о ) + 2> /-о ,Л- 1. E1) В этих выражениях каждая сумма пред- представляет 46-точечную циклическую свертку, которая может быть вычислена с помощью числовых преобразований Ферма: Т{ ?@, /)} = Т{#@, /)} Г{?@, /)} + Т{ ?A, /)} = Г{#A, /)} Т{Х@, /)} + + Т{Й@,1)}Т{ХA,1)}. E2) Эти выражения аналогичны A9), поэто- поэтому можно воспользоваться приемами B0) и B1) для вычислений по первому измере- 183
нию. В результате получим , 0}+ ,1)} - E3) А Л Заметим, что H(-l,m) = Н{\, m — 1),и, таким образом, #(-1, /) представляет со- собой циклический сдвиг на одну позицию Можно воспользоваться теоремой ол цик- циклическом сдвиге для вычисления Т{Н{-\, I)} по известному Т {#A, I)}. В предполо- предположении, что преобразования Н предваритель- предварительно вычислены, этот метод для вычисления преобразований У согласно E3) и двух об- обратных 4й-точечиых преобразований требует выполнения двух 4й-точечных преобразова- преобразований^, \2Ь умножений и 12Ь сложений/вычи- сложений/вычитаний. Он является достаточно эффектив- эффективным, поскольку в нем дополнительными операциями являются только 4Ь умножений, и он лучше метода, использующего двумер- двумерное числовое преобразование Ферма, для ко- которого объем вычислений примерно в 2 раза больше. Такое использование 2 х М сверток не обеспечивает существенного сокращения количества операций даже р сочетании с БПФ. Фактически на последнем этапе алго- алгоритма БПФ используются быстрые двухто- двухточечные алгоритмы. Имеется много других возможностей комбинирования преобразований Фурье и Ферма различных длины и размерности с алгоритмами короткой свертки и со специ- специальными аппаратурными средствами. Для повышения быстродействия можно также использовать изменение порядка вы- выполнения различных операций. Как уже бы- было отмечено Рейдером [11] и продемонстри- продемонстрировано в данной работе на примере вычис- вычисления усеченных сверток и E3), часто бо- более эффективно перед выполнением об- обратного преобразования выполнить пре- 184 образования по одному измерению, чем вычислять свертку по другому измерению. Чтобы проиллюстрировать эффективность некоторых методов, развитых в данной ра- работе, на конкретном примере дадим срав- сравнение прямого и БПФ методов. Рассмотрим задачу вычислений нецикли- нециклической свертки двух последовательностей длины N- 2", в результате которого полу- получается выходная последовательность длины 7N - 1 в соответствии с выражением C4). Найдем количество умножений на одну точку выходной последовательности для трех различных вариантов вычисления. Сна- Сначала рассмотрим прямой метод, для кото- которого требуется N2 умножений для 2N — \ выходных точек (приближенно будем счи- считать 2N точек). Поэтому количество умножений на одну выходную точку в этом случае равно Если алгоритм БПФ реализуется доста- достаточно эффективно с использованием того факта, что входные данные являются дей- действительными числами, а также для состав- составного основания системы счисления B, 4 и 8), то требуемое количество умножений на одну выходную точку вычисляется, как описано Синглтоном [13], оно обозначено через Fi. При использовании Af-мерного представ- представления в сочетании с быстрыми алгоритма- алгоритмами C3) или D4) количество умножений на одну выходную точку равно В табл. 2 даны значения этих функций для различных длин последовательностей, вплоть до 1024. Заметим, что метод вычисления, основан- основанный на многомерном представлении, более эффективен по сравнению с прямым мето- методом для всех длин и требует меньшего ко- количества умножений по сравнению с мето- методом БПФ для длин, не превышающих 128. Если используется менее эффективный ал- алгоритм БПФ, для которого требуется 4 log N + 4 умножения на одну выходную
Таблица 2. Сравнение эффективности трех ме- методов вычисления свертки последовательностей длины Nno количеству умножений N 2 4 8 16 32 64 128 256 512 1024 Г 2 4 8 16 32 64 128 256 512 1,5 2,25 4,12 5,06 6,03 8,01 9,00 10,00 12,00 13,00 0,75 1,12 1,70 2,53 3,80 5,70 8,54 12,81 19,22 28,83 точку, то критическое значение длины уве- увеличивается до 2048. Многомерный метод может быть исполь- использован так же, как используется БПФ для реализации скользящей обработки или сек- секционирования [4]. В сочетании с БПФ этот метод наиболее эффективен, когда длина секции или блока равна длине оператора свертки. Предварительные исследования показы- показывают, что блочная реализация рекурсивных фильтров [3] становится более привлека- привлекательной, если использовать методы, разви- развитые в данной работе. Чтобы показать это, сравним эффективность трех различных ва- вариантов реализации фильтров по количе- количеству умножений. Сначала рассмотрим рекурсивный фильтр, числитель и знаменатель передаточной функ- функции которого имеют один и тот же порядок N = Iм. Количество умножений на выход- Таблица 3. Сравнение эффективности трех методов реализации блочных рекурсивных фильт- фильтров порядка N N 2 4 8 16 32 64 128 *ь 4 8 lfe 32 64 128 256 Ft 14 21 31 38 45 53 58 4,5 6,7 10,1 15,2 22,8 34,2 51,2 ную точку для прямого метода реализации равно F0=2N. При использовании эффективных алго- алгоритмов БПФ количество умножений, опре- определенных согласно методике [3], обозна- обозначим через FY. Используя три свертки для реализации блочного рекурсивного фильтра с длиной блока, равной порядку фильтра, согласно C3) или D4) получаем, что коли- количество умножений на выходную точку равно 2 N В табл. 3 даны оценки эффективности различных методов реализации фильтров различного порядка вплоть до 128. Заметим, что многомерный метод пред- представляется более эффективным по сравне- сравнению с прямым методом для порядков фильт- фильтра выше третьего, а по сравнению с мето- методом БПФ - для порядков фильтра, не пре- превышающих 256. Это следует изучить под- подробнее. 11. Заключение В этой работе описаны два метода пред- представления многомерной свертки, один из них основан на обобщении алгоритма пе- перекрытия с запоминанием, используемого для секционирования, другой - алгоритма перекрытия со сложением. Показано, что первый из них удобно использовать для циклической свертки и свертки с фикси- фиксированной диагональю, второй - для не- нециклической свертки. Предложены "быст- "быстрые" алгоритмы, основанные на двух- и трехточечных свертках. Эти алгоритмы поз- позволяют уменьшить количество умножений при вычислении сверток. Установлейо цен- ценное свойство многомерных сверток, заклю- заключающееся в возможности уменьшения тре- требуемой длины слов при использовании преобразования Ферма. Показано, что мно- многомерное представление свертки хорошо приспособлено для решения задачи вычис- вычисления свертки последовательностей неоди- неодинаковой длины или для тех ситуаций, ког- когда требуется получить только часть выход- 185
ной последовательности. Затем было пока- показано, что различные комбинации алгорит- алгоритмов могут быть использованы для вы- вычисления по различным измерениям для достижения некоторых преимуществ или для удовлетворения определенных требова- требований. Наконец, рассмотрен ряд примеров, позволяющих сравнить эффективность не- нескольких методов вычисления свертки. Методы сформулированы в настолько общем виде, что полное и систематическое исследование всех возможных приложений затруднительно. Мы постарались подчеркнуть основные идеи н проследить их взаимосвязь с резуль- результатами других известных нам работ. Необ- Необходимо дать анализ требований к длине слова и объему памяти, а также более под- подробное последование рекурсивной реализа- реализации свертки. Благодарность. Авторам хотелось бы поблагодарить Р. А. Мейера за полезные обсуждения. Список литературы [1] С. М. Rader, "Discrete convolutions via Mersen- ne transforms," IEEE Trans. Comput., vol. C-21, pp. 1269-1273, Dec. 1972. [2]R. С Agaiwal and С 5. Bur;us, "'Fast r;giu! convolutions using Feimat transforms," in South- Southwestern ШЕЕ Conf. Rec, Houston, Tex., Apr. 1973, pp.538 -543. [3] С S. Harrjs, "Block reaJiaatjon of digital fil- filters," IEEE Trans. Audio Electroccoust., vol. AU-20, pp. 230 - 235, Oct. 1972. [4]B. Gold and С. М. Rader, Digital Processing of Signals. New York: McGraw-Hill, 1969, pp. 208 - 211. [5]R. A. Meyer and C. S. Burrus, "Certain proper- properties of periodically time-varying digital filters," in Southwestern IEEE Conf. Rec, Houston, Tex., Apr. 1973, pp. 529-535. [6]D. P. MacAdam, "Image restoration by constrai- constrained deconvolution," /. Opt. Soc. Amer., vol. 60, pp. 1617 - 1627, Dec. 1970. [7]D. A. Pitassi, "Fast convolution using the Walsh transforms," in Proc. Conf. Applications of Walsh Functions, Washington, D. C, Apr. 1971, pp. 130 - 133. [8] P. J. W. Rayner, "A fast cyclic convolution algo- algorithm," presented at Symp. Digital Filtering, Im- Imperial College, London, England, Aug. 1971. 1ЯА {9]W. F. Davis, "A class of efficient convolution algorithms," in Proc. Symp. Applications of Walsh Functions, Washington, D. C, Mar. 1972, pp. 318 -329. [10] J. С Allwright, "Real factorization of noncyclic convolution operators with applications to fast convolution," Electron. Lett., vol. 7, pp. 718 - 719, Dec. 1971. [ll]C. M. Rader, "An improved algorithm for high speed autocorrelation with applications to spectral estimation," IEEE Trans. Audio Electro- acoust., vol. AU-18, pp. 439 - 441, Dec. 1970. [12] G. S. Robinson, "Logical convolution and discre- discrete Walsh and Fourier power spectin," IEEE-Tram. Audio Electroacoust., vol. AU7.0, pp. 271 - 280, Oct. 1972. [13] R. C. Singleton. "An algorithm for computing the mixed мФх fust Fourier transform "IEEE Trans. Audio ?lectroacoust., vol AU-17, pp. 93 - 103, June 1969. Ci ь я 9 Аппаратурная реализация преобразования Ферма Джеймс X. Макклгллан Аннотация. Описаны структурная схема и ре- реализация преобразования с числами Ферма (ЧПФ). Подробно рассмотрена структура арифметико-ло- арифметико-логических устройств и получен новый метод пред- представления входных данных г№имеиит?льяо к ариф- арифметике целы.1; ч.ч-.'*.'т из мо,\у:7;о чя.ч?.'-' Ф^рма. С точки зрения сложности аппаратурной реализа- реализации устройства свертки с поточным алгоритмом обработки лано сравнение ЧПФ я БГ'Ф. 1. Введение Теоретика-числовые преобразования при- привлекательны с точки зрения реализации цифровой свертки, поскольку могут выпол- выполняться без умножений. Так как. на умно- умножители приходится значительная доля за- затрат как в устройствах свертки с коточным алгоритмом обработки (коивольверах), ис- использующих БПФ, так и в устройствах свертки прямого действия, го возможно- возможности удешевления и увеличения быстродей- быстродействия высокоскоростных конвольверов дол- должны открываться в использовании теорети- кочисловых преобразований. Многие дру-
гие факторы искажают картину, и в неко- некоторых случаях уменьшение сложности ре- реализации умножителей может быть пере- перекрыто увеличением объема памяти запо- запоминающих устройств, размера преобразова- преобразования. Цель данной работы состоит в исследо- исследовании некоторых аппаратурных аспектов преобразования с числами Ферма (ЧПФ). В области обработки радиолокационных сигналов целесообразно изучить потенциаль- потенциальные возможности увеличения производи- производительности устройств обработки. Для этого был разработан и изготовлен упрощенный экспериментальный вариант устройства, осу- осуществляющего теоретико-числовое преобра- преобразование '. В этом вычислителе было реали- реализовано 64-точечное ЧПФ с длиной слова, составляющей 16 бит. Важным моментом в реализации ЧПФ является новая схема кодирования данных. Эта схема кодирова- кодирования упрощает выполнение арифметических операций по модулю числа Ферма и дает возможность реализовать в ЧПФ-процессоре блок вычисления операции "бабочка", на- надежно работающий с тактовой частотой 38 МГц. Опыт, полученный при разработке и создании этого процессора, служит в ка- качестве основы при оценке сложности боль- больших ЧПФ-конвольверов с поточным алго- алгоритмом обработки, предназначенных для согласованной фильтрации в радиолокации. Из результатов сравнения сложности аппа- аппаратурной реализации ЧПФ и БПФ с поточ- поточным алгоритмом обработки следует, что ожидаемые преимущества ЧПФ могут быть реализованы в относительно небольших про- процессорах (для вычисления 64-точечных сверток), предназначенных для фильтрации действительных сигналов. Однако в более крупных процессорах, где приходится ис- использовать двумерную свертку для вы- вычисления одномерной свертки, экономия 1 16-битовая система, длина преобразования 64. Арифметико-логическое устройство смонтиро- смонтировано на левой плате, устройства памяти и логи- логическое устройство управления - на правой плате. Общее количество интегральных схем 283: 96 интегральных схем используется в элементе, реализующем операцию "бабочка". на умножителях съедается ростом размера преобразования и соответствующим увели- увеличением объема памяти запоминающих уст- устройств и устройств умножения на опорные спектральные коэффициенты. В этом случае, если фильтруемый сигнал является дей- действительным, ЧПФ все еще сохраняет свои потенциальные преимущества перед ВПФ в простоте аппаратурной реализации. Если входной сигнал является комплексным, то объем аппаратуры процессора ЧПФ пример- примерно удваивается и оказывается существенно больше процессора БПФ с поточным алго- алгоритмом обработки. Наконец, при реализа- реализации двумерной свертки увеличение объема памяти оказывается не таким существен- существенным, и выигрыш в простоте аппаратурной реализации умножителей для ЧПФ будет означать выигрыш в простоте аппаратурной реализации всего конвольвера. 2. Теория В 1971 г. авторы работ [1 - 3] обобщи- обобщили идею вычисления свертки с помощью дискретного преобразования Фурье (ДПФ) [4] на большой класс преобразований, ос- основной алгебраической структурой для ко- которых является конечное поле или кольцо. В кольце целых чисел по модулю чисел Фер- Ферма эти преобразования обладают двумя преимуществами: в преобразовании отсут- отсутствуют умножения; существует разложение на быстрый алгоритм, аналогичный БПФ. ЧПФ-последовательности {х(к)} опреде- определяется следующим образом: Х(п) * ?* х(к) а'<пк> mod F,, A) *-о где Ft = 22t + 1 — t-e число Ферма; N— сте- степень 2; а — корень N-н степени из единицы (T.e.a^= I modFf,am#i,l<m<A0.За- modFf,am#i,l<m<A0.Запись ink) означает пк по модулю N. Здесь рассматриваются только такие ЧПФ, для которых а допускает простое двоичное представление. При этом умно- умножение, фигурирующие в A), легко реали- реализуется . Можно показать, что для N-2f*1 ft = 2 является корнем N-k степени из едини- 187
цы [6]. В этом случае умножения в A) трансформируются в поразрядные сдвиги. Агарвал и Баррас [7] показали, что а *= 1 / — 2 t ~ 2 = 23 - 22 является корнем iV-й степени из единицы при N- 2* *2. Так как а2 = 2 mod Pt, то это значение а обычно на- называют корнем квадратным из двух и за- записывают как а = у/~2. Для Ff общего вида (f>4), N = 2'+2 является наибольшей степенью 2, для которой может быть опре- определено преобразование Ферма. Поскольку •sfl может быть представлен с помощью двух разрядов, то умножение на \/~"может быть реализовано с помощью одного вычи- вычитания. Кроме того, случай, когда N равно степени 2, важен сам по себе, поскольку преобразование допускает представление в виде алгоритма, аналогичного по своей структуре алгоритму БПФ для ДПФ. Эти свойства ЧПФ подробно обсуждаются в [7]. Основным ограничением, вытекающим из структуры преобразования, является ли- линейная зависимость длины кодовых слов, участвующих в арифметических операциях (определяемых выбором Ft), от длины преобразования. Например, при а = \/~2 N = 4х (длина слова). Можно частично снять это ограничение, воспользовавшись двумерным представлением одномерной свертки [8]. При а = у/~2 двумерное пре- преобразование размера NxN может быть построено при N = 21 *2. С помощью дву- двумерного преобразования может быть вы- вычислена одномерная циклическая свертка N-1 fc-o B) Потери эффективности вычислений сверт- свертки, составляющие 50%, обусловлены ис- использованием двумерного преобразования, поскольку с помощью N2-точечного одно- одномерного БПФ можно вычислить одномер- одномерную циклическую свертку длины N2. Возвращаясь к определению A), заме- заметим, что преобразование прстроено в алге- алгебраической системе целых чисел по модулю Ft. Таким образом, вычисление цикличес- циклической свертки с помощью выражения A) бу- будет давать в результате циклическую сверт- свертку по модулю Ft. В частности, если цикли- циклическая свертка 188 вычисляется с помощью ЧПФ, то результат будет представлять собой {N-1 к-о moAFt. C) Можно определить Yn no Yn тогда и только тогда, когда априори известно, что Yn ле'- жит в интервале [Р, Р + Ft — 1 ]. Располагая априорными сведениями о ди- диапазонах изменений {хк} и {hk} , можно оценить диапазон изменений выходной ве- величины Yn. Из того обстоятельства, что длина слова в процессоре должна выбираться равной степени 2, следует, что здесь невозможно выбрать длину слова исходя из компромис- компромисса между разрядностью слова и качеством обработки, как зто обычно делается при реализации цифровых фильтров. Однако вычисление свертки с помощью ЧПФ (или какого-либо другого теоретико-числового преобразования) является точным. Это оз- означает, что после квантования входных данных и коэффициентов фильтра никаких дополнительных шумов квантования в процессе фильтрации, не вносится. Таким образом, при моделировании процесса филь- фильтрации необходимо только определить дли- длину двух слов, в отличие от предпринима- предпринимаемых в настоящее время оценок всех внутренних точностей вычислений [10]. Более подробное обсуждение всех теоре- теоретических аспектов можно найти в работах [1 - 10]. В последующих разделах основ- основное внимание будет уделено аппаратурным аспектам, возникающим при технической реализации ЧПФ. 3. Представление чисел по модулю 2f+ 1* В этом разделе описывается новая схема кодирования данных для выполнения ариф- арифметических операций по модулю 2' + 1. Ос- * Рассматриваемое здесь представление, как отметил Л. Лейбовиц, является частным случаем представления более общего вида.
новной. результат состоит в том, что ариф- арифметические операции по модулю 2' + 1 мо- могут быть реализованы аналогично операци- операциям в комплементарной до 1 арифметике (т. е. в арифметике по -модулю 2f — 1). Описание арифметических операций, выпол- выполняемых при вычислении ЧПФ в том случае, когда для представления входных данных используется дополнение до 2, можно най- найти в [7]. Сложение, вычитание и умножение на сте- степень 2 являются арифметическими опера- операциями, представляющими интерес для нас, поскольку они являются основными при выполнении операции "бабочка" в алго- алгоритме ЧПФ, имеющем структуру, анало- аналогичную БПФ. Напомним, что в кольце целых чисел по модулю 2f + 1 имеется 2f + 1 элементов. Поэтому для представления всех возмож- возможных чисел необходимо иметь t + 1 двоич- двоичных разрядов. Если бы использовалась схе- схема двоичного кодирования, то всякий раз, когда значение наиболее значимого разряда (НБЗР) оказывается равным 1, значения всех остальных разрядов должны быть равными 0. Эта комбинация должна соот- соответствовать числу 2f. Таким образом, (t + + 1)-й разряд используется только в од- ном-единственном случае. Предлагается но- новая схема кодирования, в которой с помо- помощью (t + 1)-разрядного двоичного числа [bti>t-i • • • *о] число В представляется следующим образом: E Я 0 f 2. Если bt = 0,то В = at_12t f2 ~1 t X 2f + ... + (То, af _2 x где 1, если ь, = : -1,если bt = { Пример 1. Пусть t = 4; 10 0 0 0 представляет 0; О 1 0 1 0 23 -22 +2-1=5; 0 0 0 11 -23-22+2+l = -9 = 8modl7 и 1 0 10 1 является запрещенной комби- комбинацией. В обычной ситуации предложенная схема может служить только для представления нечетных чисел. Однако использование ариф- арифметики по модулю 2Г + 1 позволяет пред- представлять как четные, так и нечетные числа. Чтобы убедиться в этом, заметим, что В = BЬ,.,-1) 2'м + BЬ,.2-1) 2' + • • • + B&о-О= = (ЬГ_, 2' + • • • + 2Ь0 - *г_, + 2) mod Br + 1). D) Выражение, стоящее в скобках, принимает все значения от + 1 до 2f, а специальному случаю В = 0 отвечает bt — 1. Таким образом, все числа могут быть представлены с по- помощью предложенной схемы. Рассмотрим арифметические операции, использующие этот способ представления чисел. Во-первых, умножение на степень 2 выполняется тривиально. Если число есть нуль (т. е. bt =1), то никаких действий не предпринимается. Если число отлично от нуля, то t младших разрядов циклически сдвигаются влево, причем величина сдвига равна показателю степени 2, а при записи информации в наименьший значимый раз- разряд (НЗР) записываемое значение меняет- меняется на противоположное. Это связано с тем, что 2'=-lmodB'+l). Пример 2. Пусть t = 4 и 2f + 1 = 17. По описанным правилам "8" представлена как 0 0 0 1 1. Применяя правила действия, получаем 8x2=16=00111 иОО111=-8+ + 7 = -1 = 16 mod 17. Далее 8x8= 01110 =14-1 = 13 =64 mod 17. При аппаратурной реализации НБЗР исполь- используется в качестве контрольного разряда. Ес- Если значение этого разряда нуль, то число также есть нуль и циклические сдвиги за- запрещаются. Это является особенностью всех операций, использующих новую систему ко- кодирования. К другим легко реализуемым операциям относится обращение знака чис- числа. Очевидно, это делается дополнением t младших разрядов, за исключением слу- случая bt = 1. И в этом случае НБЗР является контрольным разрядом, запрещающим вы- выполнение операции при bt = 1. 189
Итак, мы знаем, как умножать на степень 2 и менять знак числа; осталось рассмот- рассмотреть сложение. Если одно или оба слага- слагаемых, участвующих в сложении, равны ну- лю (т. е. bt = 1), то складывать ничего не надо, поэтому эти специальные случаи мо- могут быть индицированы и выполнение опе- операции сложения запрещено. Теперь рас- рассмотрим сложение двух чисел А и В, когда АФОнВФО. Пусть В =btb,-t • • • bo,bt =0. Интерпретируем t НЗР чисел А и В как дво- двоичное представление некоторых чисел Л и 6 и сформируем сумму чисел А к В, исполь- используя двоичное сложение без знака для полу- получения б. Иначе говоря, E) Теперь можно получить из С искомую сумму С = (А + В) mod Bf + 1). Так как A = 24 + 2modBr + 1) H5 = 2$ + 2modBr + + 1), то С = 2/? + 2^ + 4 modj2f + 1). Если С можно выразить как С = 2С+ 2 modBf + + 1), где С -г t-разрядное число, тогда t разрядов числа С является t НЗР числа С. В зависимости от значения ct имеют место два случая. Если ct = 1, то арифметика не сложнее комплементарной до 1 арифметики- Небольшое усложнение связано лишь с введением одного контроль- контрольного разряда, который используется для формирования запрещающего сигнала. Пример 3. Пусть t = 4 и 2Г + 1 = 17. 1) 01010 = 5 00011 = 8 1101=01110=14- 1 = 13. 2) 01010 = 5 10000 = 0 01010 = 5НБЗР = 1 запрещает сложение. 3) 01010 = 5 00101 =5-10 = -5-10 = 12mod 7 01111 + 1 Таким образом, С = {ТА + 2S + 4) mod x X Bf + 1) = BС + 4) mod Br + 1) = AС1 + + 2) mod Bг + 1),иС = С. Если ct = 0, то С = 1С' + 4 modBf + 1) и ответ получается С=С' + 1. Однако это приводит к дополнительной ступени в операции сложения, как и в слу- случае комплементарной до 1 арифметики. При дополнении до 1 последний перенос скла- складывается со значением НЗР. В этой новой арифметике по модулю 2f + 1 формирует- формируется последний перенос, формируется его дополнение, а затем его значение складыва- складывается со значением НЗР. Таким образом, мы убедились в том, что предложенная новая 190 10000 = 0 mod 17. В последнем примере при втором сложении автоматически формируется сигнал конт- контрольного разряда, соответствующий особо- особому случаю равенства числа нулю. Теперь рассмотрим, как перевести число из обычной двоично-кодированной формы в эту новую форму представления. Преобра- Преобразование кода числа из обычной двоичной формы в новую форму представления вы- выполняется в двух случаях по-разному. Пусть число В записывается как btbt _, . . . b0 в обычной двоичной форме представления и как atat _, . . . в0 в новой форме представ- представления. Обозначим через В число, отвечающее обычной двоичной интерпретации записи. Перевод осуществляется по следующим правилам: 1) Если В = 0, тогда at = 1, В = 0, ак = 0 для к = 0, 1,..., t. Это особый случай, и перевод чисел выполняется отдельно. 2) Если ВФ0, тогда at = 0 и В = B5 + + 2) modBf + 1). Преобразование числа из нового кода в двоичный код осуще- осуществляется формированием 2В + 2 и сравне- сравнением этой суммы с 2f. Если сумма больше 2f, то из суммы вычитается 2f + 1, в резуль- результате получается В в соответствующей дво- двоичной форме представления.
Если задано число в обычной двоичной форме представления, то формируется сум- ма В + 2* - 1. Если сумма нечетна, то из нее вычитается 2f + 1. и, наконец, этот ре- результат сдвигается на один разряд вправо. Образующиеся при этом t разрядов суть H3Pat_1at_2...a0. Пример 4. Пусть t = 4 и 2f + 1 = 17. 1) В = 1 0000= 16 Новая форма представления числа есть А =00111. 2) А = 0 0 1 0 0 = 01010. 3) В = 00000 тогда и только тогда, когда Л = 10000. В следующем разделе будет описана ап- аппаратурная реализация системы, и эта но- новая схема кодирования будет использова- использована при разработке логической схемы, ре- реализующей операцию "бабочка" алгорит- алгоритма ЧПФ. 4. Описание системы В экспериментальном образце ЧПФ-про- цессора реализовано 64-точечное преобразо- преобразование в конечном поле целых чисел по мо- модулю 216 + 1. В нем использован алгоритм быстрого ЧПФ, полученный как разложение по основанию 2 алгоритма ЧПФ на ступени с фиксированной конфигурацией лутем про- прореживания на частоте. На рис. 1 показан граф этого алгоритма, соответствующего 16-точечному преобразованию [11]. Хотя структура алгоритма с фиксированной кон- конфигурацией на каждой ступени ие позво- позволяет осуществлять вычисление преобразова- преобразования с замещением, но она упрощает схему адресации памяти, поскольку адреса не ме- меняются от ступени к ступени. За такое упрощение приходится расплачиваться дву- двукратным увеличением объема памяти, необ- необходимой для вычисления преобразования. Однако, для интегральных схем типа ЭСЛ 128 слов на функциональный элемент яв- является подходящей степенью интеграции и алгоритм с фиксированной конфигурацией на каждой ступени представляется при- привлекательным. На рис. 2 приведена структурная схема всей системы, состоящей из четырех основ- основных подсистем. Основным вычислительным элементом (ВЭ) для алгоритма быстрого ЧПФ по основанию 2 с прореживанием по частоте является устройство выполнения операции "бабочка". Элемент памяти име- имеет объем, равный 128 17-битовых слов, и используется в качестве промежуточной памяти в процессе вычислений преобразова- преобразования. Блок управления представляет собой аппаратурную реализацию быстрого алго- алгоритма ЧПФ. Блок вход — выход (вх/вых) Рис. 1. Граф алгоритма 16-точечного БПФ по основанию 2 с постоянной структурой, использующего прореживание по частоте 191
элемент памяти 17 Блок считывания адреса ячейки памяти Переключатель 'правления 17 Елак преобразования кода Основной Вычислительный элемент Елак формироби- формиробиния экспоненты. Вращения Блок сопряжения бхад-быход Блок управле- управления ЧИФ-про- ЧИФ-процессора Быстродей- процессор Рис. 2. Структурная схема 64-точечного ЧПФ-процессора, иллюстрирующая обмен1 данными между главными подсистемами обеспечивает сопряжение с высокоскорост- высокоскоростным цифровым процессором (ВЦП). Цель разработки этой аппаратуры состо- состояла в построении ВЭ, работающего с такто- тактовой частотой 40 мГц. Для достижения та- такой скорости были использованы интеграль- интегральные схемы типа ЭСЛ 10 К. Основной логи- логический элемент этой серии имеет задерж- задержку порядка 10 не, поэтому эти схемы впол- вполне удовлетворяют требованиям, предъявля- предъявляемым быстродействующими системами. Да- Даже при использовании таких быстродейству- быстродействующих логических схем для реализации системы, надежно работающей при такто- тактовой частоте 38 мГц, в ВЭ были использо- использованы сложение с ускоренным переносом и двуступенчатое тактирование. На рис. 3 показана функциональная схе- схема устройства выполнения операции "ба- "бабочка", который состоит из сумматора, вычитающего устройства, устройства враще- вращения, входных буферных регистров RA и RB, регистров повторного тактирования R w, Rx и R Y и выходного регистра Rz. Пе- Перезапись информации в регистрах осуще- осуществляется в моменты подачи, тактовых им- импульсов, поэтому входные данные непре- непрерывно проходят через ВЭ, что и должно быть в случае поточной реализации алго- алгоритма быстрого ПЧФ. Как следует из вре- менно'й диаграммы (рис 4), запись инфор- информации в устройство памяти из Rz устрой- устройства выполнения операции "бабочка" осу- осуществляется только в интервалы времени 14 и t s. В течение других тактовых интер- интервалов содержимое регистра Rz может изменяться, но это никак не влияет на ал- алгоритм вычислений. Логическая схема сумматора (устрой- (устройства вычитания). В разд. 3 была получе- получена нестандартная схема кодирования дан- данных для выполнения операций в процессе вычисления ЧПФ. Напомним правило сложе- сложения двух неравных нулю чисел А = [а16 х хаи ...ао]иВ = [b16b15 ...bo]- Шаг 1. Сложить 16 НЗР чисел А и В, при- причем вход переноса положить равным нулю. Шаг 2. Дополнить выход переноса, полу- полученного на шаге 1, и прибавить его к сумме, полученной на шаге 1. Если любое из чисел А и В равно нулю, но есть Ь\0 или вю = 1, то перенос запреща- запрещается. Наконец, если оба числа А и В равны нулю, то значение НБЗР полагается равным единице. На рис. 5 представлена реализация операции сложения. Эта структура неэф- неэффективна в двух отношениях. Во-первых, требуется два 16-разрядных сумматора, хо- хотя второй из них простой, поскольку один из его входных сигналов равен нулю. Во-вто- Во-вторых, сложение выполняется слишком мед- медленно, поскольку перенос должен пройти через оба 16-разрядных сумматора. Оба недостатка компенсируются с помощью ло- логики предсказания переноса (ЛПП), как показано, на рис. 6. Теперь подробно рас- рассмотрим реализацию процессора с помощью функциональных элементов типа ЭСЛ. 16-разрядный сумматор может быть ре- реализован с помощью арифметико-логиче- 192
Тактовые Из памяти Тактовые импульсы ° *\ Rg Тактовые р импульсы0 ' *L 1 \Сумматор\ Устройсгп8о< вычитания Тактовые импульсы *> Устройство вычитания ' Тактовые импульсы Экспонента Вращения 15разрядов) I t'r ¦ I тактовые импульсы 2:1 тЛ I \ультипйексщ Мультиппексеру*J Рис. 3- Схема перезаписи информации в регистрах ВЭ алгоритма ЧПФ. Левая ветвь реализует операцию Л + Я, правая - (А - В) \/W Тактовые импульсы Запись Запись Память*В В-*-А А +B*W W-*-Z 1-*~памяпи> Ламять*В А-В-*Х (/?/'/-/ 2*Y+Z /—память Рис. 4. Временная диаграмма, иллюстрирующая работу вычислительного элемента, реализующего опе- операцию "бабочка", при внутреннем тактировании. Здесь показана передача информации в регистрах при подаче каждого тактового нмпупьса 193
B,e 16-розрядный сумматор Сумма 1 ) Нупь \. 1 Выход 16 16-разрядный сумматор 1 переноса ъ.. 1 ¦16 ¦ Вход пере- переноса. =0 Вход переноса Результат 17-розрядное час/to Рис. 5. Реализация сложения по модулю числа Фер- Ферма B1* +1) с помощью двух 16-разрядиых сум- сумматоров и новой схемы кодирования данных ских устройств (АЛУ) типа 4 МС 10181. Кроме того, для получения суммы на вы- выходе АЛУ обеспечивают также продвиже- продвижение переноса и получение информации о формировании переноса для использования в блоке ЛПП. Таким образом, функции ЛПП, изобра- изображенной на рис. 6, физически распределены между АЛУ и блоком предсказания пере- переноса (МС 10179). Скорость выполнения операции сложения может быть еще уве- увеличена, если переносы в каждом АЛУ фор- формировать в параллельной форме, используя выходной сигнал блока ЛПП. В этом случае время сложения может быть уменьшено на 3 х (запаздывание сигнала при переда- передаче от блока Сп до блока Сп +4). Для микро- микросхемы типа МС 10181 эта величина равна примерно 10 не и соизмерима с тактовым периодом, равным 25 не. На рис. 7 показан окончательный вариант сумматора, работа- работающего с тактовым периодом, равным 25 не. Логические выражения, определяющие пе- В1В А16 [B,s Логическая схема предсказания переноса Вход перено- переноса =0 Результат 17-разрядное число Рис. 6. Повышение быстродействия сумматора по модулю чисел Ферма путем введения логической схе- схемы предсказания переноса для формирования циклического переноса, необходимого в схеме, изобра- изображенной на рис. 6. Примечание: Dlt представляет собой перенос, который формируется при сложении двух чисел, как и при обычном двоичном сложении. Поэтому для использования в качестве циклического переноса необ- необходимо получить его дополнение 194
BtS-l2 Af5-I2 АПУ С^ ¦-is Блок ЛПП и?? •Jie tsnn 111% 4. i i А/7У Cs Ш? 7-« A7- АПУ ^J-0 A3-0 АПУ С, -s li 1* We Рис. 7. Развернутая логическая схема сумматора по модулю чисел Ферма, использующего схему форми- формирования ускоренного переноса. Время сложения составляет 21 ис реносы, были получены из соотношения С„ +4 -РпСс + Gn справедливого для каждо- каждого АЛУ. Расчеты показали, что в худшем случае время сложения будет составлять 24 не. Из- Измеренное время сложения оказалось рав- равным 21 не. Оставшаяся часть 25-наносекунд- ного интервала расходуется на установку триггеров в исходное состояние и подготов- подготовку устройства к очередному циклу работы. Как было отмечено выше, вычитание чи- чисел А — В может быть реализовано полу- получением дополнения числа В с последующим сложением с А. Использование АЛУ типа МС 10181 позволяет формировать допол- дополнение В внутри микросхемы с помощью шины управления режимом. Это приводит к небольшим структурным изменениям в сумматоре, если только формирование до- дополнения не запрещается при В = 0. Получением суммы А + В завершается цикл вычислений на одном из выходов ВЭ. Результат запоминается в регистре R w, а затем продвигается в регистр Rg Для последующей записи в запоминающее уст- устройство. На другом выходе ВЭ величина А - В запоминается в регистре повторного тактирования Rx для последующего умно- умножения на степень VT. Умножение на у2*. Умножение на V2* выполняется в два зтапа, причем на каждый из них затрачивается 25 не. На первом этапе при нечетном k величина X = А - В умножается на VXУмножитель на ^/Тпред- ставляет просто вычитающее устройство. Однако поскольку сигнал на выходе равен нулю всякий раз, когда сигнал на входе равен нулю, то в результате получаются некоторое упрощение логики вычитающего устройства и сокращение времени вычи- вычитания. Мулыиплексер 2:1, включенный на выходе устройства вычитания, селектирует тот из двух входных сигналов (результат умножения на \^2~или результат умножения на 1), который следует передать на выход. При этом управление осуществляется НЗР показателя к. Результат этого вычисления запоминается в регистре повторного так- тактирования RY. На втором этапе умножения на степень у/2 осуществляется умножение на степень 2, а именно на степень с показа- показателем [к/2] ([ ] — означает наибольшую целую часть). 195
Это умножение реализуется с помощью мультиплексора 16 : 1, управляемого че- четырьмя старшими разрядами двоичного представления степени 2. Мультиплексор 16 : 1 реализован в вида каскадного соеди- соединения двух мультиплексоров 4:1с ин- инверторами для осуществления циклическо- циклического сдвига. За схемой сдвига включен муль- типлексер 2:1, который селектирует тот из выходных сигналов устройства выпол- выполнения операции "бабочка" (А + В или 2* х х У), который следует запомнить в регист- регистре R%, а затем переписать в устройство памяти. Этот мультиплексор управляется в интервале времени Е3, и его выход равен B* • YO3 + Wt3. Логическое устройство ВЭ состоит из 90 интегральных микросхем, которые расположены на одной плате раз- размерами 458 х 446 мм. Вся система ЧПФ смонтирована на двух платах, скреплен- скрепленных вместе (см. рис. 7). Логическое устрой- устройство ВЭ смонтировано на левой плате (с 24-штырьковыми АЛУ), а запоминающее устройство и устройство расположены на другой плате (элементами памяти являют- являются микросхемы в светлых корпусах). 5. Сравнение аппаратурной реализации процессоров ЧПФ и БПФ Так как одной из целей создания экспе- экспериментального образца ЧПФ-процессора бы- было получение реальных сведений об объе- объеме аппаратуры, необходимой для реализа- реализации ЧПФ-конвольвера, то уместно сравнить рассмотренный метод с известным методом реализации свертки с помощью БПФ. Не- Невозможно провести подобное сравнение, ре- результаты которого были бы применимы для всех случаев или хотя бы для большин- большинства из них. Поэтому для анализа был вы- выбран конкретный случай, а именно реализа- реализация цифрового фильтра, предназначенного для обработки радиолокационных сигна- сигналов. Ниже рассматриваются наиболее харак- характерные из широкого круга вопросов, воз- возникающих при реализации ЧПФ-конволь- веров. Ширина спектра сигналов, с которй при- приходится иметь дело при обработке радиоло- радиолокационных сигналов, составляет 10 — 30 МГц и вынуждает обратиться к поточной архитектуре процессоров реализующих как ЧПФ, так и БПФ [2]. В характерных ситу- ситуациях для обработки в реальном времени радиолокационных сигналов используется быстродействующая свертка, реализующая алгоритмы перекрытия с накоплением, при- причем взаимное перекрытие обрабатываемых секций входных данных составляет 50 %. Кроме того, длина реализуемой свертки предполагается достаточно большой (напри"- мер, 512 и больше). Будут рассмотрены два случая: линейная свертка последовательности действитель- действительных данных длины 1024 и линейная сверт- свертка последовательности комплексных дан- данных длины 1024. Сравнение производится на основе четырех показателей сложности аппаратуры, в качестве которых берутся количество операций "бабочка" на одну выходную точку, количество умножений на опорные спектральные коэффициенты на одну выходную точку, общий объем памяти запоминающих устройств, реализующих функцию линий задержки между ступенями обработки в прямом и обратном преобра- преобразованиях, общий объем памяти для хра- хранения опорных спектральных коэффициен- коэффициентов. Сначала рассмотрим БПФ-процессор. Предполагается, что для обработки как действительных, так и комплексных вход- входных данных при вычислении прямого и обратного преобразований используется 11-этапный по основанию 2 поточный ал- алгоритм БПФ {Примечание. Для действи- действительных данных преобразование длины N можно реализовать с помощью одного пре- преобразования длины N/2 и некоторых до- дополнительных операций, необходимых для объединения действительных и мнимых частей [13]. Однако в данном случае они сводятся к дополнительной операции "ба- "бабочка". Поэтому использование такой воз- возможности в поточном БПФ не дает никакой или почти никакой экономии.) Большие усилия были затрачены на оценку сложно- сложности поточных БПФ-процессоров, и те четы- четыре показателя сложности, которые рассмат-
риваются в данной работе, были также ис- использованы в работе [14]. Для поточного БПФ-конвольвера длины 2048 количество операций "бабочка" на од- одну выходную точку равно 2 log2 N= 32. При этом предполагается 50 %-ное перекрытие обрабатываемых секций. На одну выход- выходную точку должны быть выполнены также два умножения на опорные спектральные коэффициенты. Объем памяти запомина- запоминающих устройств, реализующих функцию линий задержки между ступенями обра- обработки, может быть вычислен по формуле где г - основание преобразования. Таким образом, для поточных алгоритмов по осно- основанию 2 объем памяти составляет 3N= = 6144 = 6 К слов. Наконец, для хранения опорных спект- спектральных коэффициентов требуемый объем памяти составляет Ж слов. Теперь рассмотрим ЧПФ-процессор. Структура поточного ЧПФ-процессора идентична структуре поточного БПФ-про- цессора, за исключением блока выполнения операций "бабочка", в котором вместо ум- умножения на е* 2nkN ( в случае БПФ) осу- осуществляется умножение на у?. Поэтому многие из отмеченных выше результатов остаются справедливы и для ЧПФ. Так как ЧПФ-процессор в обычном варианте обрабатывает действительные вход- входные данные, свертка действительных и комп- комплексных последовательностей реализуется по-разному. Однако в обоих случаях для вычисления свертки приходится привлекать двумерный подход [8]. Пусть массивы дан- данных, свертку которых необходимо вычис- вычислить, определяются соответственно как ~х@) x(L) ••• x(tf-I)~]T |~~ 1=32 x(L-\) xBL-l) ¦¦¦ x(N-\) 0 0 ••• 0 64 I 64 Я h{N-L + \) h(N- I) НО) HD - ZL-r I) h(L - 1) № Ga) h(L- 1) hBL-l) ¦¦¦ h(N-l) G6) Свертка действительных сигналов длины 1024 может быть реализована с помощью преобразования размера 65 х 64. Входные данные представляют двумерных массив X Gа), и целесообразно использовать то обстоятельство, что половина элементов массива X нулевые, вычисляя сначала пре- преобразования строк. Следовательно, для по- получения полного двумерного преобразова- преобразования необходимо вычислить 64 96-точечных ЧПФ. Общее количество операций "бабоч- "бабочка", которое необходимо выполнить при вычислении полной свертки, равно 2 х 96 х х 32 log2 64 - 9 х 212, что составляет 36 операций "бабочка" на одну выходную точку. Это отражено на структурной схеме вычислений, изображенной на рис. 8, где имеется 36 блоков выполнения операции "бабочка", работающих параллельно — шесть в каждом 64-точечном ЧПФ. Так как для вычисления свертки необходимо выпол- выполнить 212 умножений на значения опорной функции, то на одну выходную точку по- потребуется выполнить четыре умножения на значения опорной функции. Требования к объему памяти запоминающего устрой- устройства, выполняющего функции линий за- задержки между ступенями обработки, мож- можно оценить, анализируя каждое из 64-то- 64-точечных преобразований. Первое и послед- последнее 64-точечные ЧПФ вычисляют 32 преобра- преобразования одновременно. Это достигается уве- увеличением длины всех линий задержки меж- между этапами обработки и уменьшением ско- скорости коммутации в 32 раза по сравнению с длиной линии задержки и скоростью ком- коммутации в обычном поточном процессоре. То есть состояние блока "экспоненты вра- вращения" и положения переключателей ком- 197
Опорная функция Вход 4-точечный поточный ЧПФ ^процессор Нуль 64-точечный поточный ЧПФ-прпцессар Нупь $-тачечный поточный ЧПФ-процессор 64-точечньш поточный ЧПФ-процессор 64 - точечный поточный ЧПФ-процессор 64-точечньш побочный ЧПФ*-процессор Выход Рис. 8. Реализация апериодической свертки действительных Сигналов длины 1024 с помощью поточных двумерных ЧПФ размерами 64 X 64. Нулевые элементы входного массива используются для минимизации объема аппаратуры. ЧПФ*- объем памяти запоминающих устройств, выполняющих функции линий задержки между ступенями обработ- обработки, увеличен в 32 раза, а частота переключения ключей понижена в 32 раза мутатора изменяют только через каждые 32 тактовых импульса. Остальные четыре ЧПФ-процессора имеют обычную поточную структуру. С помощью соотношения F) нетрудно определить объем памяти запоминающих устройств, выполня- выполняющих функции линий задержки между сту- ступенями обработки. Он составит B • 3 • •32-32) + D • 3 • 32) = 6,4К. Наконец, легко проверить, что объем памяти запоми- запоминающих устройств для хранения спектраль- спектральных коэффициентов опорной функции ра- равен АК. Если сворачиваемые сигналы являются комплексными, то одна из возможных ре- реализаций процессора предполагает раздель- раздельную обработку действительной и мнимой частей входных данных. В этом случае ко- количество операций "бабочка" на одну вы- выходную точку, объем памяти запомина- запоминающих устройств, выполняющих функции линий задержки между ступенями обработ- обработки, объем памяти запоминающих устройств для хранения опорных спектральных коэф- коэффициентов удваивается. Однако количество умножителей, используемых для умноже- умножения на опорную функцию, увеличивается в 4 раза, поскольку производится умножение комплексных чисел. В табл. 1 приведены 198 данные, характеризующие три системы с точки зрения четырех показателей сложно- сложности аппаратурной реализации. Заметим, что по сравнению с БПФ-процессором в ЧПФ-процессоре всегда требуется больший объем памяти и большее количество вы- вычислительных элементов. Выигрыши в сложности аппаратурной реализации все-таки возможны, поскольку в БПФ-процессоре основную часть аппара- аппаратуры (до 80%) составляют элементы, ре- реализующие операцию "бабочка", а сложность элемента, реализующего операцию "бабоч- "бабочка" в ЧПФ-процессора, в 3 - 6 раз мень- меньше подобного элемента БПФ-процессора. Эти замечания справедливы для ЧПФ-про- ЧПФ-процессора, когда сворачиваемые последова- последовательности входных данных являются дей- действительными. Для комплексных входных данных ситуация намного ухудшается, по- поскольку все показатели сложности аппа- аппаратурной реализации увеличиваются в 2 или 4 раза. Поэтому в дальнейшем рассмотрим более подробно случай свертки действитель- действительных последовательностей. Для большей конкретности разделим условно все аппа- аппаратурные затраты на реализацию некоторо- некоторого конвольвера на две части, одну из кото- которых составляет аппаратура, включающая в
Таблица 1. Показатели сложности конвольверов, предназвачениых для апериодической свертки дей- действительных сигналов длины 1024 с помощью ЧПФ и БПФ Операции и объемы памяти "Бабочка" Умножение иа опорные коэффициенты Объем памяти линий за- задержки между ступенями обработки Объем памяти для хране- хранения спектральных коэф- коэффициентов БПФ действительных или комплексных данных 22 2 6 К комплексных слов 2 К комплексных слов ЧПФ действительных данных 36 2 6,4 К действительных слов 4 А" действительных слов ЧПФ комплексных данных 72 16 12,8 К действительных слов 4 К действительных слов Примечания. 1. Для решения радиолокационных задач с высокой точностью одно комплексное слово содержит примерно 27 разрядов. 2. В случае ЧПФ одно действительное слово содержит 3 разряда. себя элементы, реализующие операцию "ба- "бабочка", другую — остальная аппаратура системы. Тогда получаем следующие соот- соотношения между БПФ и ЧПФ для свертки длины 1024: - 36/22 ХВБПФ; (8) (9) ~ДБПф). (Ю) где Т — сумматорные аппаратурные затра- затраты на реализацию конвольвера; В — аппа- аппаратурные затраты на элементы, реализу- реализующие операцию "бабочка", X — отношение стоимости одного элемента, реализующего операцию "бабочка" в ЧПФ-процессоре, к стоимости аналогичного элемента БПФ процессора; ц — доля аппаратурных затрат на реализацию вычислительных элементов в БПФ-процессоре; v — отношение других аппаратурных затрат БПФ и ЧПФ-процес- соров. Полагая для нормировки ТБПф = 1, по- получаем, что суммарные аппаратурные затра- затраты на реализацию ЧПФ-процессора составят а выигрыш может быть выражен как {f Х- ")• A2) Таким образом, теперь задача сводится к определению реалистических значений для трех отношений X, ц и v. Мы докажем, что номинальное значение ц равно двум, а за- затем определим значение выигрыша &ЧПФ как функцию X и ц. Если предположить, что требования к точности системы достаточно высоки, тогда в БПФ-процессоре необходимо использо- использовать гибридную схему с плавающей точкой, описанную в [10]. В этой работе описан формат комплексных входных данных, в котором для представления действительной и мнимой частей мантиссы используется от 27 до 11 двоичных разрядов и 5 двоичных разрядов для общего показателя степе- степени. По сравнению с БПФ-процессором, в ЧПФ-процессоре необходимо использовать арифметику по модулю 232 + 1, в которой входные данные представляются с помо- помощью 33-разрядных слов. Для аппаратуры, не входящей в состав вычислительных эле- элементов, реализующих операцию "бабочка", необходимо рассмотреть три составляющие. Во-первых, в сравниваемых системах для умножения на опорные спектральные коэф- коэффициенты используются два умножителя 199
комплексных чисел Их 11 и четыре умно- умножителя действительных чисел 32 х 32. Так как аппаратурная сложность матричного умножителя размерами л х л (который не- необходим для обеспечения высокого быстро- быстродействия, требуемого в радиолокации) про- пропорциональна л2, то для четырех умножи- умножителей действительных чисел оиа примерно в D • 322)/B • 4 • И2) = 4,5 раза превыша- превышает сложность двух умножителей комплекс* иых чисел. Во-вторых, объем памяти запо- запоминающих устройств, выполняющих функ- функции линий задержки между ступенями обработки, для БПФ-процессора составляет 6 К 27-разрядных слов, а для ЧПФ-процес- сора - 6,4 К 33-разрядных слов, что в 1,3 меньше. Аналогичным образом можно уста- установить, что объем памяти запоминающих устройств для хранения спектральных ко- коэффициентов опорной функции в БПФ-про- цессоре оказывается в 2,44 меньше. В за- зависимости от конкретной технической ре- реализации логических устройств значение v будет изменяться, ио v = 2 отражает тот факт, что для вычисления двумерной сверт- свертки с помощью ЧПФ объем аппаратуры, не входящей в состав аппаратуры вычислитель- вычислительных элементов, реализующих операцию "ба- "бабочка", требуется в 2 раза больший по срав- сравнению с БПФ. Это является функциональ- функциональным ограничением ЧПФ для вычисления сверток длинных последовательностей. С этого момента влияние сложности аппара- аппаратуры вычислительных элементов, реализу- реализуемых операцию "бабочка", на возможный выигрыш в аппаратурных затратах в слу- случае ЧПФ можно исследовать отдельно. На рис. 9 изображен выигрыш в аппаратурных затратах в зависимости от относительного объема аппаратуры вычислительных элемен- элементов, реализующих операцию "бабочка" в БПФ-процессоре (р). Семейство кривых соответствует различным значениям пара- параметра X, который представляет собой отно- отношение аппаратурных затрат иа элементы, ре- реализующие операцию "бабочка" в ЧПФ- и БПФ-процессорах. Несколько значений X было выбрано путем сопоставительного под- подсчета количества интегральных микросхем, затрачиваемых иа построение элемента, ре- реализующего операцию "бабочка" в ЧПФ-про- цессоре, и аналогичного элемента в цифро- цифровом согласованном фильтре для обработки радиолокационных сигналов, предложенно- предложенного в [10]. Значение v везде полагалось рав- равным двум. Если оно будет больше, то точка пересечения кривых с горизонтальной осью будет смещаться вправо в сторону больших значений \х- I 50 I' И" В Отношение аппаратурных затрат на реализацию ВЭ чпФ-процеаора к ,г0/ / .аппаратурным за- Q "/ тратам нарвали- /20/ зацию ВЭ БПФ- / /7с, процессора (Л.) ' /а/ 50 60 70 80 90 100 Отношение аппаратурных затрат на реализацию ВЭ к аппаратурным затратам на реализацию Всего конбольбера, использующего BH0(ji) Рис. 9- Выигрыши в аппаратурных затратах при апериодической свертке действительных сигналов длины 1024, обеспечиваемые использованием ЧПФ вместо БПФ. Предлагается, что аппаратурные затраты на реали- реализацию ЧПФ-процессорв, исключая затраты иа эле- элементы, реализующие операцию "бабочка", вдвое превышают аналогичные затраты на реализацию БПФ процессора (т. е. v = 2) Независимо от точных значений X, \i и v из кривых, представленных на рис 9, от- отчетливо видно, что ЧПФ будет обеспечивать выигрыши в аппаратурных затратах по срав- сравнению с БПФ только в том случае, когда основную долю в аппаратурных затратах на реализацию БПФ составляют затраты на реализацию вычислительного элемента, что имеет место для поточной архитектуры 200
процессора'. Кроме того, для ЧПФ-про- цессора сворачиваемые сигналы должны быть действительными, поэтому для вы- вычисления свертки комплексных сигналов по существу требуются два ЧПФ-конвольве- ра. Хотя случай свертки коротких последо- последовательностей (например, длины 64) здесь не рассматривался, следует отметить, что он со- соответствует наиболее благоприятной ситу- ситуации для получения значительных выигры- выигрышей для ЧПФ по сравнению с БПФ. Посколь- Поскольку здесь может быть использовано одно- одномерное ЧПФ. Это означает, что аппаратур- аппаратурные затраты на реализацию двух систем, исключая затраты на реализацию вычисли- вычислительных элементов, будут примерно одина- одинаковы (т. е. v = 1) и выигрыш в аппаратур- аппаратурных затратах будет наблюдаться при зна- значениях ц, приближающихся к нулю. 6. Заключение Был построен ЧПФ-процессор. В ходе разработки этой специализированной маши- машины для реализации арифметических опера- операций в вычислительном элементе ЧПФ, ре- реализующем операцию "бабочка", была по- получена новая форма представления чисел по модулю 2' + 1. Цель разработки, заклю- заключающаяся в получении рабочей тактовой частоты элемента, реализующего операцию "бабочка", равной 40 мГц, была почти достигнута, и в окончательном варианте тактовая частота надежной работы оказа- оказалась равной 38 мГц. Было произведено сравнение представ- представленного варианта ЧПФ-процессора с по- поточным БПФ-процессором, специально пред- предназначенным для вычисления свертки. На основании представленного анализа можно сделать вывод, что ЧПФ представляет со- 1 При увеличении размера преобразования за- затраты на реализацию памяти поточного процессо- процессора растут быстрее затрат иа реализацию вычисли- вычислительного элемента и будут уже составлять значи- значительную долю всех затрат, особенно для преобра- преобразований больших размеров (например, длины 16 К или 32JQ. бой полезную альтернативу БПФ, если фильтруемые сигналы являются действи- действительными и вычислительные элементы сос- составляют основную долю аппаратурных за- затрат на реализацию конвольвера, что имеет место для процессоров с поточной архитек- архитектурой. При вычислении сверток последова- последовательностей умеренной длины (например, 64-точечных сверток) выигрыши при реали- реализации ЧПФ получаются значительными. Од- Однако для сверток длинных последователь- последовательностей, когда приходится использовать дву- двумерную свертку для вычисления одномер- одномерной свертки, выигрыши в аппаратурных, затратах на реализацию умножителей ком- компенсируются увеличением объема памяти и аппаратурными затратами на реализацию умножителей на опорные спектральные ко- коэффициенты, вызванными увеличением раз- размера преобразования. В этом случае применение ЧПФ по срав- сравнению с БПФ все же позволяет получить небольшие выигрыши в су доарных аппа- аппаратурных затратах, которые зависят от осо- особенностей конкретной реализации аппарату- аппаратуры. Наконец, при реализации двумерной свертки не приходится расплачиваться за увеличение объема памяти и выигрыши в аппаратурных затратах на построение умно- умножителей будут переходить в выигрыши в аппаратурных затратах на весь конвольвер. Благодарность. Автору особенно хочется поблагодарить Б. Голда и С. Рейдера, кото- которые первые познакомили автора с этой проблемой, а тдкже А. Хантона и И. Ахо, чей инженерный опыт способствовал ус- успешному завершению проекта. Список литературы [1] J. M. Pollard, "The fast Fourier transform in a finite field," Math. Сотр., vol. 25, pp. 365 - 374, Apr. 1971. [2] A. Schonhage and V. Strassen, "Fas* multipli- cation of large numbers" (in German), Сотриt., vol. 7, pp. 281 -292, 1971. [3] P. J. Nicholson, "Algebraic theory of finite Fou- Fourier transforms," /. Cotnput. Syst. SW.> vol. 5, pp. 524-547, 1971. {4]T. G. Stockham, "High speed convolution and correlation," in 1966 Spring Joint Сотриt. 201
Сои/., AFEPS Conf. Proc, vol. 28. Washington, DC: Spartan, 1966, pp. 229 - 233. [5 ] D. E. Knuth, The Art of Computer Programming, vol. 2, Seminumerical Algorithms. Reading, MA: Addison-Wesley, 1969, pp. 269 - 275 Bnd printing). [6] С. М. Rader, "Discrete convolution via Merseu- ne transforms," IEEE Trans. Comput., vol. C-21, pp. 1269 - 1273, Dec. 1972. [7] R. С Agarwal and С S. Burrus, "Fast convolu- convolution using Fermat number transforms with appli- applications to digital filtering," IEEE Trans. Acoust., Speech, Signal Processing, voLASSP-22, pp. 87 - 97, Apr. 1974. [8] -, "Fast one-dimensional digital convolution by multidimensional techniques," IEEE Trans. Aco- Acoust., Speech, Signal Processing, vol. ASSP-22, pp. 1 -10, Feb. 1974. [9] —, "Number theoretic transforms to implement fast digital convolution," Proc. IEEE, vol. 63, pp. 550 - 560, Apr. 1975. [10] R. J. Purdy et. al, "Digital signal processor designs for radar applications," Mass. Inst. Tech- nol. Lincoln Laboratory, Lexington, MA, Tech. Note 1974 - 58, vols. 1 and 2, Dec. 1974 [11] L. R. Rabiner and B. Gold, Theory and Applica- Application of Digital Signal Processing. Englewood Cliffs, NJ: Prentice-Hall, 1974. [12] P. E. Blankenship and E. M. Hofstetter, "Digital pulse compression via fast convolution," IEEE Tram. Acoust., Speech, Signal Processing, vol. ASSP-23, pp. 189 - 201, Apr. 1975. [13] J. W. Cooley, P. A. Lewis, and P. D. Welch, "The fast Fourier transform algorithm: programming considerations in the calculation of sine, cosine, and LaPlace transforms,"/. Sound Vib., vol. 12, pp.315 -337, July 1970. [14] B. Gold and T. Bially, "Parallelism in fast Fouri- Fourier transform hardware," IEEE Trans. Audio Elec- troacoust., vol. AU-21, pp. 5 - 16, Feb. 1973. [15] С. М. Rader, "On the application of the number theoretic transforms of high speed convolution to two-dimensional filtering," IEEE Trans. Circuits and Systems, vol. CAS-22, p. 575, June 1975. Статья 10 Упрощенная двоичная арифметика для преобразования с числами Ферма Лоренс М- Лейбовиц Аннотация. Описана двоичная арифметика, ко- которая позволяет производить точное вычисление преобразования с числами Ферма (ЧПФ). Все ариф- 202 метические операции выполняются в двоичном коде, соответствующем наиболее простому прави- правилу из множества возможных правил перевода ко- кода, соответствующего обычной двоичной форме Представления двоичных чисел в кольце целых чисел по модулю чисел Ферма F( = 2" + 1, Ъ = = 2*. Сложность выполнения арифметических операций при вычислении ЧПФ оказывается со- соизмеримой со сложностыо выполнения арифмети- арифметических операций в комплементарной до 1 арифме- арифметике, которая использовалась в ранее предложен- предложенном методе, соответствующем другому правилу перевода двоичного кода Рассматривается умно- умножение общего вида двух целых чисел по модулю Ff, которое используется при вычислении свертки с помощью ЧПФ- Введение Известно множество теоретико-числовых преобразований (ТЧП), используемых для эффективного вычисления свертки [1] — [4]. В частности ТЧП, в которых в каче- качестве модуля фигурируют числа Ферма Ft = - 2b + 1, b = 2', называются преобразования с применением чисел Ферма, или сокращен- сокращенно ЧПФ. Эти преобразования были подроб- подробно описаны Агарвалом и Баррасом [3]. ЧПФ временной последовательности чисел х [и] определяется как Х(к)= ? х(п)о"* modFt, к = 0, 1, • • • ,N- I, и «о где N — длина последовательности; а — ко- корень из единицы порядка Nvl Ft — модуль преобразования, определяющий конечное поле или кольцо целых чисел [ 1 ]. При соответствующем выборе значений а, N и Ft получаются ПЧФ, для эффектив- эффективного вычисления которых на ЭВМ могут быть использованы алгоритмы типа БПФ [5], в которых каждое умножение осуще- осуществляется путем сдвига двоичного кодово- кодового слова и вычитания. При описании программной реализации ЧПФ Агарвал и Баррас определили двоич- двоичную арифметику по модулю Ft [3]. Для представления чисел при таком выборе модуля требуется (Ь + 1) двоичных разря- разрядов (бит). Для представления величины 2й = - 1 mod Ft требуется (b + 1) разряд. Для упрощения операций в модулярной
арифметике Агарвал и Баррас ограничи- ограничились реализацией ^-разрядной арифметики. Это как бы вносило своеобразный "шум квантования" при появлении во входных данных — 1 и приводило также к возникно- возникновению чрезвычайно малой, но вполне реаль- реальной вероятности искажения целого блока данных после вычисления ЧПФ. Конечно, желательно вычислять ЧПФ точно. Трудности, возникающие при построении двоичной арифметики по модулю Ft, ста- становятся понятными, если рассмотреть, на- например, умножение или сложение в кольце целых чисел по модулю F., включая дво- двоичное представление —1, 2Ь. Так, при Ъ = = 4 умножение 10000 (—1) на себя дает 00001 (+1). Метод точного вычисления ЧПФ и его реализация были описаны Макклелланом [6]. Метод Макклеллана предполагает вве- введение нового двоичного кода для пред- представления целых чисел по модулю Ft. Пусть для двоичного представления использует- используется (Ь + 1) разряд, так что А = [ab, ab_v ... Тогда этот новый код строится следу- следующим образом: Если вй = 1,то^4=0. Если аь = 0, то А = аь _, 2й  + аь _ 2 2й " 2 + ... ... + а0, где [ 1, если а, = 1; -1, если ai~0. Таким образом, метод Макклеллана пред- представления чисел по модулю Ft сводится к естественному двоичному взвешиванию с возможными значениями разрядов ± 1. Этим методом нуль представляется двоич- двоичной записью числа 2Ь (при Ъ - 4, 0 пред- представляется как 10000), причем (Ь + 1)-й разряд используется только для представле- представления 0. Наличие дополнительного разряда при выполнении операций сложения или ум- умножения, включающих числа, используемые для представления 0, обнаруживается, и ес- естественный порядок выполнения этих опе- операций должным образом нарушается для получения верного результата. Этим по су- существу исключаются операции над (Ъ + + 1)-разрядным словом. Макклеллан пока- показал, что такое представление чисел позво- позволяет построить двоичную арифметику по модулю Fv позволяющую получать отри- отрицательные числа, осуществлять сложение и умножение на целочисленные степени 2. По- Показано, что эта новая арифметика подобна и по сложности не выше обычной компле- комплементарной по отношению к 1 арифметике. В данной работе будет представлена двоичная арифметика по модулю Ft, мате- математическая сложность которой ниже той, которая описана в работе [6]. Хотя пере- переводы величин, заданных в конечном кольце, в числа, используемые в этой двоичной арифметике, осуществляются достаточно просто, все арифметические операции с дво- двоичными числами тождественны операциям Макклеллана. Таким образом, в аппарату- аппаратуре процессора ЧПФ, описанного в работе [6], может быть использована эта новая арифметика с учетом того, что перевод кода осуществляется математически проще. Кроме обычных двоичных арифметических операций, используемых при вычислении ЧПФ, в данной работе рассматривается так- также обобщенное умножение целых чисел по модулю Ft, которое необходимо при вычислении свертки с помощью ЧПФ. Перевод кода Имеется множество способов перевода кода, каждый из которых позволяет постро- построить упрощенную двоичную арифметику по модулю Ft, подобную описываемой в дан- данной работе. Эти методы основаны На одно- однозначном представлении числа А в кольце целых чисел по модулю Ft в виде двоично- двоичного числа, соответствующего RA — 1 mod Ft, где R — произвольное целое число в кольце с обратным элементом. Можно показать, что кодовое представление Макклеллана [6] соответствует выбору R = 2й +1, причем для Ъ = 4 R = 9. Очевидно, самое простое правило перевода кода имеет место при R = 1 для произвольного значе- значения Ъ. Поэтому в данной статье основное внимание будет уделено двоичной арифме- 203
тике, когда правило перевода кода соот- соответствует/? = 1. Представление чисел с уменьшением на 1 Чтобы представить все числа в кольце целых чисел по модулю Ft> необходим (Ь + + 1) разряд. Дополнительный разряд тре- требуется для представления числа 2й = - 1 х х mod Ft. Для решения проблемы постро- построения двоичной арифметики с этим допол- дополнительным разрядом опишем модифициро- модифицированную двоичную систему счисления. Чтобы исключить участие в операциях сложения и умножения этого дополнительного раз- разряда, присвоим дополнительному разряду значение 1 лишь только в том случае, ког- когда представляемое число есть 0. Это легко можно сделать, вычитая 1 из естественного двоичного представления каждого целого числа в кольце, что соответствует выбору R - 1 из приведенного выше множества правил перевода кода. В табл. 1 приведены естественная дво- двоичная форма представления числа и фор- форма представления с уменьшением числа на единицу при Ъ - 4. В представлении числа с уменьшением на единицу Ъ наименьших значащих разрядов (НЗР) указывают значение числа. Числа от 1 до 2* представляются в порядке воз- возрастания двоичных чисел от 0 до 2й — 1. Ни- Ниже будут рассмотрены арифметические операции, необходимые при вычислении свертки с помощью ЧПФ. Операции выпол- выполняются на основе предложенного представ- представления чисел. Двоичные арифметические операции по модулю Ft Представление отрицательных чисел. Как можно заметить из табл. 1, каждое отрица- отрицательное число (> 2Ь~1) представляет НЗР дополнение всего положительного аналога. Таким образом, в этой системе счисления обращение числа, не равного нулю, в дво- двоичной форме представления с уменьшением на единицу означает просто его дополнение в наименьших значащих разрядах. Обозначая дополнение Ъ - НЗР чертой сверху, это можно показать следующим образом. Таблица 1. Соответствие между естественной формой представления чисел и формой представ- представления с уменьшением числа на 1 (А =4) Обычное число 0 1 2 3 4 5 6 7 8 9 (-8) Ю (-7) И (-6) 12 (-5) 13 (-4) 14 (-3) 15 (-2) 16 (-» Двоичное представление 00000 0000 1 00010 0001 1 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 Число, увели- увеличенное на 1 1 2 3 4 5 6 7 8 9 (-8) Ю (-7) 11 (-6) 12 (-5) 13 (-4) 14 (-3) 15 (-2) 16 (-1) 0 Если в наибольшем значащем разряде (НБЗР) имеется 1, то обращение преры- прерывается. Пример 1. 13 = -4 mod 17 = ОббП = = 01100. Сложение. Чтобы выполнить сложение двух чисел, представленных как А — 1 и В - \, необходимо (А - 1) + (В - 1) = = (А + В - 1) — 1 и, таким образом, А + + 5-1= [(Лч-1) + (Я-1)] +1. Так как (Ь + 1) разряд слагаемых ис- используется только для прерывания сложе- сложения, если одно из слагаемых равно нулю, то при сложении ненулевых чисел участву- участвуют только в НЗР. Приведенные выше урав- уравнения показывают, что для получения вер- верного результата к сумме двух уменьшен- уменьшенных на 1 чисел необходимо добавить 1. Ес- Если из Ь-разрядной суммы формируется пе- перенос, то из правила вычисления вычета по модулю Ft следует, что необходимо вычесть 204
1, поскольку 2й = - 1 mod Ft. При этом нет необходимости корректировать сумму. Таким образом, сложение чисел с умень- уменьшением на единицу представлении осуще- осуществляется по следующим правилам. Если НБЗР любого из слагаемых имеет значение 1, сложение прерывается и ненулевое сла- слагаемое приравнивается сумме. Если НЗР обоих слагаемых имеют зна- значение 0, то суммируются значения только в НЗР, дополняется значение переноса и сум- суммируется с Ъ НЗР суммы (о + 1)-й разряд или НБЗР результирующей суммы являет- является переносом из й-го разряда. Пример 2. Сложить 10000 0 00100 5 00100 5 Пример 3. Сложить 00111 8 01101 14 10100 22 =5 mod 17 U-0 Пример 4. Сложить 00011 00101 01000 10 ооюо Пример 5. Сложить 00100 5 01011 12=5modl7 01111 17 0modl7 Ul 01001 10000 Перевод кода. На основе приведенного выше сложения уменьшенных на 1 чисел, можно сформулировать правило перевода двоичного числа В в его уменьшенное на 1 представление D. Чтобы перейти от обычной двоичной фор- формы к форме представления с уменьшением на 1, необходимо выполнить сложение уменьшенных на 1 числа ? и двоичного пред- представления числа 2й — 1. Пример 6. В 01100 12 01111 11011 Пример 7. В 00000 0 01111 01111 D 01011 D 10000 Чтобы перейти от формы представления с уменьшением на 1 к обычной двоичной форме, необходимо дополнить НБЗР пред- представления и прибавить его значение к Ъ НЗР. Пример 8. D = 01011 = ¦12 Пример 9. D =10000=0 В = 01100 В =00000 Вычитание. Располагая способом пред- представления отрицательных чисел и правилом сложения в системе счисления с уменьше- уменьшением чисел на 1, вычитание можно выпол- выполнять путем сложения уменьшаемого и взя- взятого с противоположным знаком вычита- вычитаемого. Пример 10. Вычесть 7 00110 -5 01011 2 10001 00001=2 Умножение на степени 2. Если при выпол- выполнении умножения обнаруживается наличие 1 в (о + 1) разряде множимого или множите- множителя, что соответствует равенству 0 одного из сомножителей, то умножение прерывается и Произведение полагается равным нулю. Чтобы выполнить умножение уменьшенных на 1 чисел на степени 2, поступим следу- следующим образом: (А- 1)-2 = BА- 1)- 1 и, таким образом, B/4- Ц = (А- 1)-2+1. Поэтому каждое умножение на 2 включа- включает сдвиг влево на один разряд, без учета старшего разряда и коррекцию произведе- произведения его увеличением на 1. Если из й-го раз- разряда передвигается 0, то он заменяется на 1, которая затем записывается в младший разряд и корректирует произведение на 1. Если из й-го разряда передвигается 1, то для приведения вычета по заданному модулю необходимо вычесть 1. Но так как произ- произведение должно быть скорректировано еще на +1, то полная коррекция равна 0 и 0 за- записывается в младший разряд. 205
Таким образом, при каждом умножении на 2 требуется осуществить циклический сдвиг влево в НЗР, а значение, записыва- записываемое при сдвиге в младший разряд, меня- меняется на противоположное. Пример 11. 8Х11=2Э Xll=2X2X2Xll=88modl7 И 01010 2X11 00100 4X11 01001 8X11 00010=3 mod 17 Для того чтобы в полной мере реализо- реализовать эффективность ЧПФ, умножение на сте- степени 2 необходимо выполнять с помощью одного многоразрядного сдвига. Умножение общего вида. Последней операцией, которую необходимо выполнить при вычислении свертки с помощью ЧПФ, является умножение произвольных целых чисел по модулю Ft. Чтобы выполнить ум- умножение чисел А и В, представим их в уменьшенной на 1 системе счисления как А - 1нВ- 1; (А- 1)(В- 1) = Л-5-(Л+?)+1 = = {АВ- 1)-{А+В- 1)+1 и необходимый результат получается в виде (А ¦ В - 1) = (А - 1) (В - 1) + (А + В - 1) - 1. Таким образом, для выполнения такой операции необходимо, не учитывая стар- старших разрядов, умножить двоичные пред- представления уменьшенных на 1 чисел А и В, к полученному результату прибавить сумму уменьшенных на 1 чисел А и В, а затем осу- осуществить приведение вычета путем вычита- вычитания с уменьшенной на 1 системы счисления содержимого "Ь" НБРЗ из содержимого "Ь" НРЗ *. Как уже отмечалось выше, при наличии 1 в старшем разряде множимого или мно- множителя умножение прерывается и произве- произведение полагается равным нулю. * Эта частная схема умножения неприменима в тех случаях, когда перевод кода осуществляется по правилам, отличающимся от правил R = ± 1. 206 Пример 12. Умножить 15 X 10 150 = 14 mod 17 двоичное умножение 01110 01001 1110 0111000 Сложение уменьшен- уменьшенных на 1 чисел 01110 01001 двоичное сложение 0111 01100 01101 14 mod 17 Можно рассмотреть также другой метод умножения. Предположим, что оба числа не равны нулю, перевод чисел в обычную дво- двоичную форму осуществлен, и необходимо выполнить умножение. В этом случае сна- сначала выполняется обычное двоичное умно- умножение, затем приведение вычета путем вы- вычитания в уменьшенной на 1 системе счисле- счисления содержимого в НБРЗ иэ содержимого в НРЗ произведения. Полученный результат есть искомое про- произведение. Это правило соответствует соот- соотношению {АВ - 1) =АВ - 1. Пример 13. Умножить 15 X 10 150 14 mod 17 Перевести 01110 Умножить 01111 Перевести 01001 01010 Приведение вычета 01101 14 mod 17
Другой метод умножения общего вида включает перевод либо множимого, либо множителя в обычную дзоичную форму с сохранением другого сомножителя в умень- уменьшенной на 1 форме представления. По срав- сравнению с другими ранее рассмотренными методами здесь добавляются один перевод числа из уменьшенной на 1 формы пред- представления в обычную форму и сложение общего вида в уменьшенной на 1 системе счисления. При сравнении этих схем умножения об- общего вида следует учитывать ряд факторов. Главные из них заключаются в размене сло- сложения общего вида в уменьшенной на 1 системе счисления и Двоичного сложения на перевод чисел из уменьшенной на 1 фор- формы представления в обычную двоичную форму. Остальные операции, такие, как двоичное умножение, приведение вычета в уменьшенной на 1 системе счисления, ум- умножение на 0, выполняются одинаково в различных схемах. Так как в большин- большинстве случаев перевод из уменьшенной на 1 формы в обычную двоичную форму пред- представление чисел будет выполняться проще и быстрее по сравнению со сложением об- общего вида в уменьшенной на 1 системе счисления, второй метод представляется на- наиболее предпочтительным. Заключение В работе рассмотрена двоичная арифме- арифметика, которая может найти применение для точного вычитания ЧПФ. Эта арифметика включает операции над двоичными пред- представлениями целых чисел, уменьшенных на 1, по модулю Fr Форма представления чи- чисел с уменьшением на 1 математически оказывается проще как формы представле- представления, предложенной Макклелланом [6], так и других форм, вытекающих из множества подобных правил перевода двоичного кода. Эта арифметика обеспечивает более простую реализацию всех операций, необходимых для вычисления ЧПФ. Эти операции анало- аналогичны тем, которые были описаны и реали- реализованы Макклелланом [6] и по сложности соизмеримы с операциями, выполняемыми в комплементарной до 1 арифметике. Умно- Умножение общего вида двух чисел по модулю Ft в уменьшенной на 1 системе счисления может быть выполнено непосредственно. Автор считает своим долгом выразить признательность Дж. Макклеллану, профес- профессору факультета электроники и вычисли- вычислительной техники Массачусетского Техноло- Технологического института, за обсуждение и за- замечания. Список литературы [l]J. M. Pollard, "The fast Fourier transform in a finite field," Math. Comput., vol. 25, pp. 365 - 374, Apr. 1971. [2]C. M. Rader, "Discrete convolutions via Mersen- ne transforms," IEEE Trans. Comput., vol. C-21, pp. 1269 - 1273, Dec. 1972. [3]R. C. Agarwal and С S. Burrus, "Fast convolu- convolution using Fermat number transforms with applications to digital filtering," IEEE Trans. Acoust., Speech, Signal Processing, vol. ASSP-22, pp.87 - 97, Apr. 1974. [4]C. M. Rader, "Convolution and correlation using number theoretic transforms," in Theory and Application of Digital Signal Processing, L. R. Rabiner and B. Gold. Englewood Cliffs, NJ: Prentice-Hall, 1975, sect. 6. 19. [5]J. W Cooley and J. W. Tukey, "An algorinhm for the machine calculation of complex Fourier series," Math. Comput., vol. 19, pp. 297 - 301, Apr. 1965. [6] J. H. McClellan, "Hardware for the Fermat num- number transform," Lincoln Laboratory, Mass. Inst. Technol., Lexington, Tech. Note ESD-TR-75-149, Apr. 1975. Статья 11 Применение конечных полей для вычисления сверток Ирвинг С. Рид, Т. К. Труонг Аннотация. Построено преобразование в поле Галуа из q2 элементов GE(q*), т. е. в конечном поле, аналогичном полю комплексных чисел, если (-1) не является квадратичным вычетом по мо- модулю простого числа q. Показано, что действие этого преобразования над GF(q2) эквивалентно ДПФ для последовательности комплексных чисел с ограниченным динамическим диапазоном. Если q является простым числом Мерсенна, то можно 207
использовать алгоритм БПФ, который позволит быстро вычислять свертку без ошибок округле- округления, возникающих при использовании обычного БПФ. 1. Введение Не так давно Рейдер [1] ввел преобра- преобразования вида At ^ Z a,2rt mod b, n = O где b есть любое простое число Мерсенна Ъ = IP - 1 прир = 2, 3, 5, 7, 13, 17, 19, 31, 61, либо число Ферма Ъ = 1+ 2<2 > при те = 0,1,2,3,4. Он показал, что свертка двух конечных последовательностей может быть получена как обратное преобразование произведения их прямых преобразований. Основным пре- преимуществом преобразования Рейдера явля- является возможность выполнения умножений на степени 2 просто как циклические пораз- поразрядные сдвиги. Конечно, за это преимуще- преимущество приходится платить трудностями вы- вычисления результата по модулю Ъ, ограни- ограничениями, которые связывают длину кодово- кодового слова, длину последовательности d и возможность разложения d на множители, а также ограничениями, которые возникают при любом из двух выборов Ъ [1]. Известно, что преобразования, анало- аналогичные преобразованию Фурье, могут быть определены в поле Галуа, причем эти пре- преобразования обладают свойством цикли- циклических сверток [2]. Сложение и умноже- умножение в GF(q2), когда полином х2 + 1 явля- является неприводимым над GF(q), совпадают с операциями, выполняемыми с комплек- комплексными числами. Поэтому мы ограничимся рассмотрением этого поля. Для того чтобы построить конечные преобразования Фурье в GF{q2), в этой работе разработан алгоритм нахождения примитивных элементов в мультиплика- мультипликативных подгруппах поля GF (cj2). Преобразования над конечным полем GF(q2) могут быть использованы для вы- вычисления свертки двух d-точечных последо- последовательностей комплексных чисел. Если q 208 является простым числом Мерсенна, то, как будет показано, арифметические опера- операции, выполняемые при вычислении преобра- преобразования, включают сложение по модулю q, операцию дополнения и циклическую перестановку разрядов кодового слова. Преимущество этого преобразования над GF(q2) перед обычным ДПФ комплекс- комплексных чисел заключается в том, что при достаточно больших q можно использовать это преобразование над GF(q2) для пре- преобразования последовательности комплекс- комплексных чисел ап в последовательность Ak в GF(q2), для которой обратное преобразо- преобразование в точности дает исходную последо- последовательность комплексных чисел ап. Сле- Следовательно, такие операции, как фильтра- фильтрация и свертка, могут выполняться с помо- помощью такого преобразования последователь- последовательности комплексных чисел без ошибок округления. Если q является простым числом Мер- Мерсенна, то для реализации необходимых пре- преобразований может быть использован алго- алгоритм БПФ. 2. Преобразование Фурье над конечным полем Пусть GF (<?") представляет поле Галуа; q - простое число, ad- целое число, кото- которое делит q" - 1. Пусть также элемент г е GF(q") порождает циклическую под- подгруппу d элементов Gd = (г , г 2,..., г d ' ', 1) в мультипликативной группе GF(q"). Тогда преобразование над этой подгруп- подгруппой G4 [2] может быть определено сле- следующим образом. <v* - l, (l) где d делит q" - 1 и anGGF(qn), 0< Чтобы построить обратное преобразова- преобразование, предварительно заметим, что все эле- элементы Gd удовлетворяют уравнению xd - 1 =0. Однако поскольку х^ — 1 раскладыва- раскладывается на множители в виде
xf- t-0 то получаем *jt д* = 0> Прих#1 и xeG^c GF(q*); *-о B) где (d) означает вычет d по модулю просто- простого числа q. Эта формула была получена Поллар- дом [2, (8) ] и еще раньше Ридом и Соло- Соломоном [3, C) ]. С помощью B) теперь по- получим дискретную "дельта"-функцию, не- необходимую для построения преобразова- преобразования, обратного A). Рассмотрим сумму х" по всем элементам мультипликативной под- подгруппы Gd, т. е. l *-0 Однако это по форме совпадает с B), а г " является элементом Gd. Поэтому имеем I х" = '? (r"f = 0, при я ф 0 mod d, xmOt t-0 = (d), при я s 0 mod d, , C) где bd (и) — дельта-функция; <5/л) = 0, при я ф 0 mod rf, = 1, при я г 0 mod d. Так как (d) является ненулевым эле- элементом поля GF (qn), то в поле GF (qn) су- существует также обратный элемент (d) ~l. Теперь, умножая А к на {d)~lr~km и сум- суммируя по к при Л = 0, 1, 2,..., d — 1, соглас- согласно A) и C) получаем 1 V1 а ('у rK«-»i)\= и-0 " VlPo / 11-0 Таким образом, имеем лк - 'z v ¦•о где d делит qr" — 1,Д D) являются эле- элементами GF(q"),r — образующий элемент подгруппы G^ из d элементов мультипли- мультипликативной группы GF(qn). Чтобы доказать свойство циклической свертки пары преобразований D), положим , Bk = Кг1» , - Вк Тогда согласно D) обратное преобразо- преобразование С^ при к = 0,1,... ,d - I есть l t-o <i di .ti W) Z I I aA/'1"*-"- t-0 »"O n-0 E) где (p - n) означает вычет р - и по мо- модулю d. Если ап и Ъп принадлежат полю GF (д), т. е. являются целыми числами по модулю простого q, то свертка E), являющаяся обратным преобразованием С^ = A/JB^, будет также принадлежать GF (q). Следова- Следовательно, если можно найти такое г G GF (qn), для которого умножения на степени г яв- являлись бы простыми операциями при ап- аппаратурной или программной реализации, ю приведенная выше свертка в GF{qn) могла бы иметь практическую ценность при вычислении сверток последовательно- последовательностей целых чисел. В данной статье ограни- ограничимся рассмотрением случая и = 2. Рейдер [1] показал, что двоичные ариф- арифметические операции легко выполняются, если в качестве Ъ выбрать простые числа Мерсенна или Ферма. Здесь мы ограничим- ограничимся рассмотрением случая, когда Ъ является простым числом Мерсенна. 209
Если сравнение х2 ш -1 mod q F) не имеет решений, то принято говорить, что —1 является квадратичным невычетом [4, с. 82]. Согласно теореме Эйлера [4, с. 80] это также эквивалентно соотношению () где (-1 представляет собой символ Ле,- жандра, определяемый как ©"'• если а является квадратичным вычетом по мо- модулю q; (-) = -1, если а не является квад- \ql ратичным вычетом по модулю q. Итак, пусть —1 является квадратичным невычетом по модулю и F) не имеет ре- решений в GF (q). Тогда полином p(x)=x2 + l неприводим в GF(q). Корень уравнения р(х)=х2 + 1=0, G) А который мы обозначим, скажем i, суще- существует и может быть найден в расширенном поле GF{q2). GF{q2) представляет собой множество GF(q2) - {а + Й> | а, Ъ е GF(q)}, (8) где Г является корнем уравнения G), удов- удовлетворяющим соотношению Р=-\, (9) где — 1 = (q - 1) mod q. Если х2 + 1 = 0 не имеет решений в поле GF(q), то t e GF{q2) играет ту же самую роль в конечном поле GF (q), что V— 1= = i в поле рациональных чисел. Например, предположим, что а + ib и с + id являются элементами GF{q2), тогда согласно (9) (а + !Ь) ± (с + td) ш (а ± с) + t(b ± d) (а + »)(с + td) = ас + t2bd + tbc + Ы= = ас - bd + t(bc + ad). Это вполне аналогично комплексным тождествам. В приложениях, касающихся радиолокации и систем связи, нас, вообще говоря, интересуют свертки комплексных 210 чисел. В поле GF(q2), где ц является прос- простым числом Ферма, такая конструкция невозможна. Если —1 является квадратичным невы- невычетом по модулю q, то свертка E) ком- комплексных чисел можеть быть вычислена с помощью преобразований вида D) над по- полем Галуа GF(q2), где ап и Ъп принадлежат полю GF(q2). Другими словами, если д„, Ъ„ S GF{q2) при и = 0, 1, 2 d - 1, то преобразования определяются как l «-о ".при к = 0,1,- • -,d - 1, где г — образующий элемент подгруппы G^ из d элементов мультипликативной группы GF{q2). Тогда, вычисляя обратное преобразование Ck = А^В^ при к - 0, 1, ... ... ,d- 1, получаем Sl1 гдес„ G GF{q2) ис?делитд2 - 1. Если q является простым числом Мер- сенна, то порядок t мультипликативной группы с образующим элементом а поля GF(q2) раскладывается на множители сле- следующим образом [S]: t = B'- IJ - 1 =2|h+lB'-1 - О- Так как t имеет множитель, равный 2Р + 1, то обычный алгоритм БПФ может быть использован для вычисления d = = V *1 -точечных преобразований. Если d = = 2*, 1<Л<р + 1,иа является первооб- первообразным элементом GF(q2), то образу- образующий элемент мультипликативной подгруп- подгруппы Gtf порядка d, очевидно, равен г = 1 - 1). Интересно показать важное свойство по- поля Галуа GF{q2), которым не обладает поле комплексных рациональных чисел. Ес- Если* =а + ?Ъ SGF(q2),тохФО, Это частный случай общего тождества хя " ' = 1 для всех ненулевых х S GF (qn ).
3. Алгоритм нахождения первообразных элементов в GF(q2), q - простое число Мерсенна Если требуется вычислить преобразова- преобразование над GF(q2JP + 1-точечной последова- последовательности комплексных чисел, ап G GF{q2) в соответствии с A), то необходимо найти первообразный элемент в G p + i поля GF(q2). Для этого оказываются полезны- полезными следующие теоремы. Теорема 1. Если q является простым числом Мерсенна, d = 2k, где 1 < к < р + 1, то г = а + ib есть первообразный элемент в подгруппе Gd поля GF(q2) тогда и толь- только тогда, когда г dl2 = — 1 mod q. Доказательство. Еслиг^ = \mouq, то rdl2 = ± 1 mod «7- Согласно предположе- предположению г имеет порядок d, так что rdl2 = = 1 mod*?. Поэтому г = (а + ft) э -1 mod q. A0) Предположим, что d не является наимень- наименьшим положительным числом, для которого это справедливо. Тогда существует/ = 2" < < d, п< к, для которого г' = 1 mod q. Пусть Г = (d, /) есть наибольший общий де- (г^л) и 2 является квадратичным вычетом. Сог- Согласно квадратичному закону взаимности имеем () (+Х) Однако (-)= 1. Таким образом,L, _ .)=-1. Чтобы найти первообразный элемент в G2p +1 поля GF(q2), можно воспользовать- воспользоваться следующей процедурой. Предположим, что элемент г =а + ib име- имеет порядок IP +1 в GF (q2). Тогда (д + ib) 2? раскладывается на множители вида (а + tbJr = (а + IbJ (И) Согласно теореме о биноме получаем (а Но биномиальные коэффициенты Г;1) B" - 1X2" - 1 - 1X2" - 1 - 2) • • • B" - 1 - к + 1) 1 • 2 • 3 • • ¦ fc литель d и /. Тогда для некоторых хну dx + ly =Е и г* = г'*"> = (г'у(г1У = @W - 1. Так как t < d, t делит d\2. Поэтому rdl2 = 1 mod q, что противоречит A0). Теорема 2. Для простых чисел Мерсен- Мерсенна, q > 3, первым квадратичным невычетом по модулю q в последовательности 1, 2, 3, ...,<?— 1 является 3. Док аз ат ельство. Рассмотрим последовательность 1, 2, . . . ,q — 1. Будем последовательно проверять все числа после- последовательности до тех пор, пока не обнару- обнаружим первый квадратичный невычет. Едини- Единица является квадратичным вычетом. Со- Согласно [4, С; 81] имеем при 1 < к < 2Р — 2 все делятся на IP — 1, так как ТР - 1 — простое число. Следова- Следовательно, (а + tbJ' = (a+ ib)(a + tlf-1b)modq. Однако BР-1 = f(_,)B'-2)/2 = -!, поэтому A1) приобретает следующий вид: (а + tbJ' = (а2 + ft2) mod ?. Из теоремы 1 следует, что (а + ibJ' зз а2 + Ь1 s -I mod ?. A2) Пусть JT=fl2mod2P - 1, a Y=-b2x х mod 2P - 1. Тогда A2) можно записать как X+l= A3) 211
В A3) X согласно определению являет- является квадратичным вычетом. Для Y имеем Однако (_ j\ Я I Таким образом, Y = X + 1 является квад- квадратичным невычетом. Поэтому один иэ спо- способов выбора чисел X к Y заключается в присвоении X к Y значений двух стоящих рядом чисел из множества целых чисел 1, 2, . . -,2Р — 2, таких, чтобы первое число X было квадратом, а второе — не квадра- квадратом. Согласно теореме 2 при q > 3 Y = 3 не является квадратичным вычетом, а преды- предыдущий элемент X = 2 является квадратом. Таким образом, достаточно положить a2 s X = 2 mod 2' - Г, A4а) Ь2 s -X - 1 = - Y = -3 mod 2' - 1. A46) Чтобы найти решение сравнения A4), воспользуемся процедурой, описанной в [4, с. 187, решение задачи 2, а]. Она состо- состоит в следующем. Так как I ) = 1, то согласно теоре- теореме Эйлера имеем 2«2i>-i)-i)/2 _ j mo(j ф* _ 1). Умножая обе части сравнения на 2, по- получаем 2«2#-2>/2)+i = 2 mod 2' - 1. Отсюда B2Р~2J = 2 mod IP - 1. Таким образом, решением A4а) будет а = ±22''1 mod 2' - 1. A5а) Воспользовавшись той же самой проце,- дурой для A46), получим, что Ъ имеет вид Ь = ±(-3J'"amod2' - 1. A56) В подгруппе Gd поля GF(q2) всегда су- существует первообразный элемент г =а + tb. Согласно теореме 1 имеем (а + tb)dl2 е= -1 mod?. A6) Возводя обе части A6) в /-ю степень, попучаем 212 ((а + (ЬУ12У ш (-1У mod q. Согласно теореме 1 ((a +tb)dl2)l явля- является первообразным элементом только при / нечетном. Все такие элементы различны, и так получаются все первообразные элемен- элементы подгруппы Gd. Другими словами, в цик- циклической подгруппе Gd поля GF(q2)(a + + ib) i также является примитивным элемен- элементом при / = 1, 3, 5,..., d — 1, если а + Ib — примитивный элемент. Предположим, что а имеет порядок 2 BGFtf). Если d делит 2^ ', то г = a2 'd имеет порядок d в GF(q2). Для преобразования вида A) при d, являющемся делителем 2Р + 1 можно в качестве примитивного эле- элемента выбрать г = а2Р 'd. Ц этом случае длина преобразования будет равная. Для выполнения умножений на степени г в процессоре может оказаться удобным представить р-разрядные слова а и Ъ (где г = а + ib) как минимальную сумму степе- степеней 2. В этом случае,например,/""+1 modq можно получить умножением г" на г по модулю q рекуррентно, используя мини- минимальное число поразрядных циклических сдвигов, дополнений р-разрядных слов и сложений [1]. Пример. Найти все первообразные элементы, выраженные как сумма степеней 2 в подгруппе Gj мультипликативной группы GF (д2), где р = = 5,?=2P-l=3lHd = 23. Чтобы решить задачу, сначала найдем элемент порядка 2Р* ' = 2S+1 = 64 в GFC12). Согласно теореме 1 если г = (а + ib) является примитив- примитивным элементом в G^ группы GF C12 ), то (а + й>J' = -1 mod 31. (П) В соответствии с A2) выражение A7) можно записать так же, как 31. A8) Согласно теореме 2,3 не является квадратом, а 2 является квадратом. В соответствии с A5а) и A56) имеем а = 22' = 28 = 8 mod 31; Ь = (-3J з= 20 mod 31. Поэтому 64 является наименьшим положи- положительным целым числом, таким, что
Таблица 1 Примитивные элементы в Ga группы GFC12) B7 + i4) = B5 - 2' - 2°) + /22 ' + f4Kmod 31 = 4 + М = 2J + f2J ' + НУ mod 31 = 4 + f27 = 2а + iBs - 2J - 2°) r + /4Omod 31 = 27 + /27 = Bs - 22 - 2°) + fBs-2J-2°) (8 + ПОN* s 1 mod 31. Элементом порядка IP*1 Id = 64/8 является (8 + »20)8 s, B7 + f4) mod 31. Другие четыре примитивных элемента в под- подгруппе G8 группы GFC12) приведены в табл. 1. В табл. 1 г =4 + г*4 имеет наименьшее чис- число членов, представляющих степени 2. Этот примитивный элемент позволяет в некото- некоторых случаях реализовать умножение на сте- степени г в подгруппе Ga группы GF C12) с минимальными аппаратурными затратами. Такой элемент г назовем простейшим пер- первообразным элементом. С помощью процедуры, использованной в примере 1, и программы, составленной на Ассемблере, на ЭВМ были найдены простейшие элементы для различных про- простых чисел Мерсенна. Результаты приведены в табл. 2. Эти эле- элементы были выбраны из d/2 примитивных элементов в Gd для различных d и q. 4 Быстрое преобразование Фурье eGF(q2) Обычное дискретное преобразование Фу- Фурье имеет вид Fk = 't anafK, A9) где ш — корень d-й степени из единицы. Корень d-й степени из единицы со = _ е2ш/d B A9), вообще говоря, не может быть представлен в ЭВМ точно с помощью кодового слова конечной длины. Поэтому прямое A9) и обратное ему преобразова- преобразования в большинстве представляющих интерес случаев будут вычисляться с ошибкой. В преобразовании вида D) над полем Галуа GF(q2), где q - простое число Мерсенна 2Р - 1,р — простое число, г = a +ib — при- примитивный элемент, причем а, А € GF (д) может быть представлен точно с помо- помощью двух р-разрядных слов [1]. Если ап Е ? GF(q2) прим =0, 1,2,.. .,d- 1, то пре- преобразование над GF(q2) последовательно- последовательности ап есть Таблица 2. Простейшие первообразные элемеитньдля различвых q и d 4=2".! d = 28 d = 29 d=210 d = 2U d=212 B^+225+221+2"+216 -2-13-210+24-;>.1)Л + 210+28+23, B1S+212-27+2°, + iB15+2U+2n+27 +24+23-2°, B8+25,+M216+ 212«И-2'+27 -2*t22, ,27.24^+f,2n + 27-23+2°, ,230-228+225+2"+218 -216+2U+210t27)+r ,230-228+222+220- 2U+28+22, Bl7+215+21Z+29-24 +2°, + U215-210-23, B12+2S,+U217-2n +28+25«2, ,2U-27-25+23, + fB8+25) 231.228+225-218-213 +210+25,+ГB30-225 -2"+216-213-27+24 -217+2U+213-27-22) Bn+28.22,+U215 +212+27-2°, B'-25+2°,+ *iB9-2) ,228+224+218-?.16 +214-2424+2°, ¦ i ,227-224+217- 214+2П+219-20, B"-2l7««, ¦ t B16+2П.28+22 B7+23,+iB12+ 2"j29+27+25-2°, 9 7 4 B'+2 +2 +2) +i,21O+25, ,225+2i2+221-216+213 +25)ttV°+225-222 +214+2П+26+22, B13+28.2S+22HlB12 +29+26+23, ,210-22+20, +V4-2U BU+27+24+22, +lB9+2) 213
Тогда согласно D) обратное преобразо- преобразование над GF(q2) последовательности Ак точно равно исходной последовательности а„ ¦ Если эта процедура выполняется много- многократно, то исходные числа все же будут по- получаться без ошибок. Хорошо известно [2], что, алгоритм БПФ над конечными полями аналогичен алгорит- алгоритму БПФ над полем комплексных чисел [6, с. 179]. Предположим, что a(t) пред- представляет входные данные как функцию времени, B(f) - выходные данные как функцию частоты и d = 2N. Пусть t и / — двоичные целые числа, а г - примитивный элемент в Gd. Алгоритм БПФ над GF(q2) состоит в выполнении следующих N этапов вычислений. Этап 1: B0) Этап j: Hfi ¦ ¦ -fjts-j ¦ ¦ ¦ <¦) = I Этап N: где разряды /i . . ¦ /у числа / берутся в по- порядке возрастания для / =1,2 N. Алгоритм обратного преобразования по- получается подстановкой г ~1 вместо г и ум- умножением BN(f) на (с?) ~ '. 5. Свертки последовательностей комплексных чисел с помощью преобразований над GF(q2) Чтобы операции в GF(q2) приводили к правильному ответу для свертки, обычно необходимо ограничить рабочие диапазоны изменений комплексных переменных. На- Например, чтобы вычислить циклическую свертку E) комплексных чисел ап = а^ + + 1Р„яЪн=хп+*уп,т.е. ср = ? а*ь(р-п) = л = 0 = I ((«V, - Р„у„) + ((а„>>„ + р„х„)), B1) требуется, чтобы результат вычисления свертки лежал в том же самом "динами- "динамическом" диапазоне, что и комплексные числаап иЬп. Это означает, что 0 d- 1 ' л = 0 d-l 1 (ч - D/2; + Ра) < B2) Если max|an|= max|jcn|= max|Cn! = = max \у„ | = Л, то А называется динамиче- динамическим диапазоном чисел ап,уп,($пнхп. Оценка B2) во всяком случае соблюда- соблюдается, если диапазон А ограничен величиной - [ h - B3) где [х] означает наибольшее целое число, меньшее х. Желая обеспечить соотношение B3), что для многих практических прило- приложений чрезмерно осторожно, число q необ- необходимо выбрать настолько большим, чтобы целочисленные компоненты элементов ап, Ъп лежали в интервале — А^ап, рп, хп, уп <А В этом случае циклическая свертка удовлетворяет неравенству B2). Например, возьмем q = 231 - 1 и d = 2s . Согласно B3) имеем Если ап и« Ь„ ограничены интервалом -210< а., р„ х„у„< 210, то компоненты ср будут заведомо лежать в интервале 514
20 40 SO SS 100 ,20 ,vO ,60 ISO 200 220 240 260 Время Рис. 1. Свертка двух прямоугольных импульсов в О 20 40 60 80 100 120 140 160 180 200 220 240 260 Время Рис. 2. Ошибка, получаемая при свертке двух прямоугольных импульсов в поле комплексных чисел с использованием подпрограммы Харма -B31 - 1)/2 < х < B31 - 1)/2. Для сравнения представленного метода вычисления свертки последовательностей комплексных целых чисел с обычным ал- алгоритмом БПФ над полем комплексных чисел была написана на Ассемблере про- программа вычисления свертки последователь- последовательностей комплексных чисел в GF(q2) для q = 23' — 1. В качестве простого примера вычислялась свертка ступенчатой функции вида a(t) = 0 + Ю, при 0 < t < 27, = 10 + ГО, при 27 < t < 28. с такой же функцией. Результат вычисле- вычислений приведен на рис. 1 и не содержит оши- ошибок. Свертка функции a (t) с аналогичной функцией была также вычислена с помо- помощью стандартного пакета IBM подпрограмм БПФ с точностью, определяемой 24-разряд- 24-разрядным кодовым словом. На рис. 2 показаны ошибки результатов вычислений, складыва- складывающиеся из ошибок усечения и округления. Их величина описывается функцией E(t). Хотя этот пример носит чисто иллюстра- иллюстративный характер, он подтверждает, что цифровая фильтрация в GF(q2), где q - простое число Мерсенна, может быть осу- осуществлена без ошибок округления. 6. Заключение Таким образом, под полем GF(q2) мо- могут быть построены преобразования, кото- которые не вносят ошибок округления и мо- 215
гут быть использованы для вычисления сверток последовательностей комплексных чисел методом БПФ без потери информа- информации. В работе разработаны методы нахож- нахождения первообразных элементов подгруппы Gj мультипликативной группы QF(q2). Недостатком данного преобразования яв- является сложность умножения на степени Первообразного элемента по сравнению с преобразованием, предложенным Рейдером (см. табл. II). Этот недостаток компенсиру- компенсируется тем, что в практически интересных слу- случаях для построенного преобразования при- применим алгоритм БПФ над GF (q2), если q — простое число Мерсенна. Авторы хотели бы выразить благодар- благодарность проф. Л. Р. Велчу за математические консультации и доктору Б. Голду из Лин- Линкольнов ской лаборатории Массачусетского технологического института за его перво- первоначальную поддержку работы и помощь в исследовании, которые привели к появле- ншр этой статьи. Список литературы [ 1 ] СМ. Rader, "Discrete convolution via Mersenne transforms," IEEE Trans. Comput., vol. C-21, Dec. 1972. [2] J. M. Pollard, "The fast Fourier transform in a finite field," Math. Comput., vol. 25, no. 114, Apr. 1971. [3] I. S. Reed and G. Solomon, "A decoding proce- procedure for polynomial codes," M. I. T. Lincoln Lab., Lexington, Mass., Group Rep. 47.24, ASTIA No. 24-1701, March 6,1959. [4] I. M. Vinogradov, Elements of Number Theory. New York Dover, 1954. [5] I. S. Reed, "The use of finite fields and rings to compute convolutions," M. I. T, Lincoln Lab , Lab. Tech. Memo. 24L-0012, Oct 1973. [6] B. Gold and С. М. Rader, Digital Processing of Signals. New York: McGraw-Hill. 1969. Статья 12 Цифровая фильтрация с помощью комплексных преобразований Мерсенна X. Нуссбаумер Аннотация. В кольце целых чисел по модулю чисел Мерсенна или псевдочисеп Мерсенна постро- построены комплексные преобразования Мерсенна, ко- которые могут быть вычислены без умножений. По- Показано, что при выполнении некоторых условий эти преобразования могут быть вычислены с по- помощью быстрых алгоритмов, что позволяет вы- выполнять цифровые свертки с большей эффектив- эффективностью и точностью по сравнению с алгоритмами БПФ. Введение В связи с быстрым развитием техники больших интегральных схем непрерывно возрастающее число приложений сложных алгоритмов цифровой обработки сигналов становится экономически осуществимым. В большинстве случаев основная доля нагруз- нагрузки процессора, по-видимому, состоит из вы- вычислений в соответствии с алгоритмами циф- цифровой фильтрации. Будущий прогресс в об- области цифровой обработки сигналов либо в направлении увеличения быстродействия и работы в реальном времени, либо в направ- направлении усложнения алгоритмов, таким обра- образом, в значительной мере зависит от повы- повышения эффективности вычислений при вы- выполнении цифровой фильтрации. Это можно обеспечить не только реализацией фильтру- фильтрующих цепей с лучшими характеристиками, но также использованием улучшенных ал- алгоритмов вычислений, которые будут рас- рассмотрены в данной работе. Рейдер [1], Агарвал и Баррас [2, 3] не- недавно построили преобразования Мерсенна и преобразования с числами Ферма. Эти два вида преобразований обладают свой- свойством циклической свертки и поэтому могут быть использованы при реализации цифровых фильтров точно так же, как ДПФ[4,5]. Преобразования Мерсенна и Ферма явля- являются весьма перспективными при вычисле- вычислениях по алгоритмам цифровой фильтра- фильтрации, так как при выполнении этих преобра- преобразований не требуется умножений. Их основ- основной недостаток заключается в наличии жесткой связи между длиной преобразова- преобразований и длиной кодового слова, обусловлен- обусловленной тем обстоятельством, что все операции выполняются в конечном кольце с арифме- арифметикой по модулю целого числа р. Кроме то- того, невозможно одновременно достичь опти-
малыши эффективности с точки зрения сокращения количества выполняемых опе- операций вообще и упрощения реализации арифметических операций. Это вызвано тем, что для преобразований Ферма можно применять алгоритмы быстрого преобразо- преобразования, а для преобразований Мерсенна их не существует, и в то же время операции в арифметике по модулю чисел Мерсенна выполняются проще, чем в арифметике по модулю чисел Ферма. В этой работе рассматриваются комп- комплексные преобразования, построенные в" кольце целых чисел с операциями по моду- модулю чисел Мерсенна. Будет показано, что эти комплексные преобразования отчасти могут быть вычислены с помощью быстрых алгоритмов, причем длина преобразований не более чем вчетверо превышает длину обычных преобразований Мерсенна. Рассма- Рассматривается применение таких преобразова- преобразований для фильтрации комплексных сигна- сигналов. Показано, что вычисления На первых этапах прямых преобразований могут быть выполнены с использованием кодовых слов укороченной длины. Эти результаты затем обобщаются на случай псевдочисел Мер- Мерсенна. Показано, что на их основе можно построить преобразования, подобные пре- преобразованиям Мерсенна, которые могут полностью вычисляться с помощью быстро- быстрого алгоритма с сохранением преимуществ выполнения арифметических операций, ха- характерных для преобразования Мерсенна. Комплексное преобразование Мерсенна Пусть q - простое число; положим р = = 2' — 1. Числа Мерсенна р являются прос- простыми при q = 2, 3, 5,7, 13, 17, 19, 31,61,... F]. Преобразование Мерсенна (^-точечной по- последовательности целых чисел 1а и 3 опре- определяется следующим образом: -1, A) где значение величины, заключенной в из- избыточные двойные скобки, берется по мо- модулю р. Обратное преобразование Мерсенна опре- определяется как «-=((« 2"* 2""*)). '« = 0,1--«7- 1,B) где R выбирается таким, что ((/?<?)) = 1, все показатели степени, индексы берутся по модулю q и все операции выполняются по модулю р. Легко показать [1], что преобразование Мерсенна удовлетворяет теореме о сверт- свертке, которая гласит, что если {Xk} — пре- преобразование Мерсенна последовательности {хп}, то npnZfc = ((AtXk)) обратное пре- преобразование Мерсенна \Zm\ последователь- последовательности {Z^J определяется как (( 2 C) Если [ап] n{icn) надлежащим образом огра- ограничены [1], то zm совпадает с обычной циклической сверткой: D) При этих условиях цифровая фильтра- фильтрация действительных последовательностей целых.чисел может быть выполнена разби- разбиением последовательностей на блоки, разде- разделением- блоков последовательностью нулей во избежание эффектов заворачивания и на- наложения. [4] и вычислением циклических сверток с помощью преобразований Мер- Мерсенна. Это обеспечивает весьма эффектив- эффективный способ выполнения цифровых фильт- фильтров, поскольку вычисления преобразований Мерсенна сводятс'и к выполнению сложений в дополнительном коде и циклическим сдвигам. Поскольку преобразование Мер- Мерсенна выполняется без умножений, то вы- вычисления инвариантной во времени q-точеч- ной циклической свертки сводится к одно- одному умножению на один выходной отсчет,, в отличие от q умножений, необходимых при непосредственном вычислении свертки. В случае нерекурсивного цифрового фильтра с N отводами число умножений на один вы- выходной отсчет получается небольшим и по существу не зависит от числа отводов. Не- Непосредственное вычисление потребовало бы 217
в общем случае N умножений, а при вычис- вычислении с помощью алгоритма БПФ потребо- потребовалось бы К log 2N умножений. Основные ограничения метода преобразований Мер- сенна связаны с тем обстоятельством, что количество членов преобразования q равно простому числу. Это означает, что упроще- упрощение вычислений таких преобразований не может быть достигнуто за счет применения быстрых алгоритмов типа БПФ и что коли- количество членов преобразования равно дли- длине кодового слова. Эти ограничения могут быть несколько ослаблены [1], если в A) и B) вместо корня из 2 использовать корень —2. В этом случае максимальная длина преобразования увеличивается до 2q. Мож- Можно также увеличить максимальную длину сворачиваемых последовательностей путем перехода к многомерным сверткам [1, 2, 7]. К сожалению, этот результат достигает- достигается за счет увеличения времени вычислений и объема памяти. Теперь покажем, что благодаря введению комплексных преобразований Мерсенна можно реализовать более высокую эффек- эффективность вычислений при одновременном увеличении максимальной длины преобра- преобразования и сворачиваемых последователь- последовательностей. Во многих случаях применения цифро- цифровой обработки сигналов требуется выпол- выполнить цифровую фильтрацию комплексных сигналов. Хорошим примером таких приме- применений могут служить корректоры в моде- модемах сигналов с фазовой модуляцией [8]. В этом случае последовательность комп- комплексных чисел {х„ =уп + jyn) подвергается цифровой фильтрации посредством комп- комплексной последовательности [bn + jbn] со- содержащей iV членов. В результате на выходе получается последовательность комплекс- комплексных чисел {zm = ит + ]йт)с г» = 2 V- = 2 (*.>... - *„>...)+ +J 2 <*.>«-. + *„>„-.). J = v^T. E) Комплексная свертка E) может быть вычислена с помощью действительных пре- преобразований, при условии, что вычисление 218 действительных и мнимых частей чисел вы- выполняется с помощью отдельных преобра- преобразований. С помощью преобразований с чис- числами Ферма можно даже уменьшить коли- количество умножений, реализуя преимущество представления j = у/ —I'в форме действи- действительного числа в подходящей числовой системе Ферма [9]. Однако представляется более естествен- естественным вычислять комплексные свертки с по- помощью комплексных преобразований, та- таких, как преобразование Фурье, или комп- комплексных теоретико-числовых преобразова- преобразований [3, 10, 11]. В частности, комплексные преобразования могут быть построены в кольце Мерсенна. Эти соображения были использованы ав- автором в заявке на цифровой фильтр, осно- основанный на комплексных преобразованиях Мерсенна [12]. В связи с этим автор благо- благодарит экспертов, которые обратили его вни- внимание на независимо появившуюся работу Веха и Лейбовица, посвященную этой же проблеме [13]. В дальнейшем ограничимся рассмотрени- рассмотрением комплексных преобразований Мерсенна, которые имеют простые корни и могут быть вычислены без умножений. В кольце Мерсенна с р = 2Ч — 12и —2 являются кор- корнями из единицы порядков q и 2q соот- соответственно, и им отвечают длины преобра- преобразований, равные q и 2q. Так как q — простое число, то 2d и -2d также являются корнями порядка q и 2q при условии, что d не кратно q. Это означа- означает, что 2j является корнем порядка Aq, a 1 + j или 1 — j являются корнями порядка &7- Комплексные корни более высоких по- порядков не обладают простой структурой и поэтому, по-видимому, не будут представ- представлять практического интереса. В связи с этим комплексное 4<?-точечное преобразование Мерсенна может быть опре- определено формулой п = 0 T, к = 0, I F) Так как q имеет обратный элемент по модулю р, а обратный элемент 4 есть 2Ч~2,
то 4q имеет обратный элемент R, т. е. (DqR)) = 1, и обратное преобразование Ак имеет следующий вид: « G) где все показатели степени и индексы бе- берутся по модулю 4q. Покажем, что это комплексное преобра- преобразование Мерсенна удовлетворяет теореме о свертке. Умножая почленно комплексное преобразование {Х^} комплексной после- последовательности {*/}на {А%) и выполняя обратное преобразование, получаем (8) где / + п - т = г,ак заменено на 4к + s. Как и в случае обычного преобразования Мер- Мерсенна, сумма ? 24гк равна нулю для к=о ir)mod яФ0 и Равна Я Для (rjmod q=0. При {r)mod q=0,r =qtn ((s!ojV32V?)) становится равным (B j*'*))• Посколь- Поскольку q — нечетное простое число, эта сумма отлична от нуля только в том случае, когда t кратно 4, и тогда она равна 4. При этих условиях произведение двух сумм отлич- отлично от нуля только при {r)mod 4(? = 0 тлгт становится равным (9) откуда следует, что циклическая свертка двух комплексных последовательностей длины 4q может быть вычислена с помощью комплексных преобразований Мерсенна по модулю р = 2* — 1. При таком подходе все арифметические операции выполняются, как в обычной арифметике комплексных чисел с j2 = — 1, причем действительная и мнимая части обрабатываются отдельно по модулю р. Использование корня j + 1 приводит к построению 84-точечного комплексного пря- прямого преобразования Мерсенна - I, A0) которому при R, удовлетворяющем усло- условию ((8qR)) = 1, соответствует обратное преобразование «.-((« ?«.(/¦ ¦>-)). (И) т-0, \--Sq- 1, где все показатели степени и все индексы берутся по модулю 84. Те же, что и раньше, соображения показывают, что это преобра- преобразование позволяет вычислять свертки пос- последовательностей длины при длине кодово- кодового слова, равной q битам. Быстрое вычисление комплексных преобразований Мерсенна К этому моменту мы определили комп- комплексные преобразования Мерсенна, которые можно вычислять без умножений и длина которых в 4 раза превышает длину обыч- обычных преобразований Мерсенна. Вычисление этих преобразований можно частично упрос- упростить с помощью алгоритма типа БПФ, пос- поскольку количество членов преобразования не является уже простым числом. Используя прореживания либо во време- времени, либо по частоте [14], можно получить разложения алгоритмов преобразований, имеющих q 4-точечных или q 8-точечных членов, если выбраны корни соответствен- соответственно 2j и j + 1. Эти БПФ разложения позволя- позволяют уменьшить количество действительных операций до 8q(q + 1) сложений и 8q(q — — 1) сдвигов для 4q-точечных комплексных преобразований и до 169D — 1) +529 сло- сложений и 16D — IJ + 24D ~ 1) сдвигов для 84-точечных комплексных преобразова- преобразований. Если для сравнения предположить существование гипотетических 4q- и 84-то- 84-точечных преобразований Мерсенна, то для вычисления преобразований действитель- действительной и мнимой частей комплексной последо- последовательностей потребовалось бы 4<jrD4 — 1) сложений и Dq - IJ сдвигов для 4q-то- 4q-точечных преобразований и 84 (84 — 1) сложе- сложений и (84 — 1) сдвигов для 84-точечных преобразований. Это означает, что для зна- 219
чений q, представляющих практический ин- интерес (скажем, q = 31), замена обычных преобразований Мерсениа комплексными приводит примерно к восьмикратному уменьшению количества операций. Вычисление комплексной свертки с помо- помощью комплексных преобразований Мерсен- Мерсенна осуществляется так же, как с помощью ДПФ, причем действительные и мнимые части вычисляются по модулю р отдельно. Во избежание ошибок, вызываемых пере- переполнением, амплитуды действительной и мнимой частей выходных отсчетов не дол- должны превышать величины (р - 1)/2. Это означает, что длина слова для пред- представления действительной и мнимой час- частей входных последовательностей {ап} и {х„} обычно меньше половины длины сло- слова выходных последовательностей. Други- Другими словами, все вычисления по модулю р выполняются с qr-разрядными словами, и в результате формируются ^-разрядные слова на выходе, но для представления входных последовательностей используются слова с количеством разрядов, меньшим {д — 1)/2. Можно использовать зто ограничение на дли- длину входного кодового слова для дальней- дальнейшего снижения загрузки процессора. Это можно сделать выбором такого алгоритма разложения быстрого преобразования, ко- который позволил бы на первых двух этапах преобразования обходиться без умножений на степени 2. При таком подходе 4 #-точеч- ное комплексное преобразование Мерсенна с корнем 2j раскладывается на q 4-точеч- 4-точечных преобразований: ¦••+;"-"* 2"-'" i «,,+r/j). A2) n = 0 Эти q 4-точечных преобразований, соответ- соответствующие первым двум этапам разложе- разложения, требуют умножений только на ± 1 и ± ] и поэтому могут быть вычислены в обычной арифметике комплексных чисел с длиной слова, примерно равной полови- половине длины слова, используемого для пред- представления окончательного результата. Если две сворачиваемые последователь- последовательности [у„] и {ап\ являются действитель- действительными, то преимущества использования ком- комплексных преобразований Мерсенна в пол- полной мере могут быть сохранены путем од- одновременной обработки двух последова- последовательных блоков последовательности [уп\ с помощью одного комплексного преобразо- преобразования Мерсениа. Это выполняется путем вы- вычисления комплексной свертки [zm] после- последовательности (ап) с вспомогательной комплексной последовательностью {хп = } Действительная часть \ит) и мнимая часть{мт} последовательности {zm} соот- соответственно будут определять свертки {уп] я следующего блока {yn+6q} с {а„} . Комплексные преобразования, подобные преобразованиям Мерсенна (псевдомерсенновы преобразования) Мы убедились, что обычное #-точечное преобразование Мерсенна может быть рас- расширено до &jr-точечного преобразования переходом в поле комплексных чисел и за- заменой корня, равного 2 и имеющего поря- порядок q, комплексным корнем A +/ ) поряд- порядка &q. До сих пор мы ограничивались рас- рассматриванием чисел Мерсенна, т. е. чисел вида р = 21 - 1, где q — простое число. Если р не является простым, то его можно представить в виде разложения на простые сомножители. р-рЬ.рЬ.-р*. A3) Действительное Л/-точечное преобразова- преобразование, обладающее свойством циклической свертки, может быть построено в кольце целых чисел по модулю р при условии, что М-точечные преобразования могут быть.по- быть.построены в каждом из полейР\,рг р\- Это непосредственно вытекает из китай- китайской теоремы об остатках [3, 15] и опре- определяет условие существования М-точечного преобразования в кольце р, которое требу- требует, чтобы на М одновременно делились pt — - 1,р2 - 1... .,pt -1. Когда р — простое число, максимальная длина преобразования М равна р - 1. Пре-
образование в кольце р, если р не является простым числом, поэтому получается соот- соответственно более коротким, чем преобра- преобразования, определенные для простого моду- модуля. Если р и q являются составными числа- числами, причем q = Qi • <?j, a qt - простое чис- число, то 2*' — 1 делит р и максимальная дли- длина преобразования ограничена той величи- величиной, которая возможна для 2*i — 1. Это обстоятельство побудило нас полагать, что только преобразования Мерсенна представ- представляют интерес в кольце целых чисел по простому модулю 1Я — 1. Однако ситуация существенно меняется, если рассматривать комплексные преобра- преобразования Мерсенна. В этом случае длина преобразования становится равной 8 М, ес- если М не делится на 2. Это означает, что да- даже при достаточно малых значениях М, не позволяющих построить действительное пре- преобразование, представляющие практический интерес, можно определить комплексные преобразования Мерсенна, которые могут оказаться все же полезными, поскольку их длина будет составлять &М. Сформулируем эти соображения точно. Ограничимся для определенности рассмотре- рассмотрением преобразований, которые можно вы- вычислить без умножений и которые поэтому имеют корни 2W порядкам. По определению 2WM= 1, причем 2nW принимает М раз- различных значений при и = 0, 1, . . . , М — 1. Показатели степени Wn вычисляются по мо- модулю MW, причем (MW)mod q=0. Если те- теперь рассмотреть корень (/ + l), то этот корень будет иметь порядок 8М в кольце р в том случае, если (f + l)8A/)f = 1, и О" + + l)*'" принимает Ш различных значений при и, изменяющемся от 0 до 8Л/ — 1. Сна- Сначала заметим, что, поскольку (/ + I)8 = 24, q + i)»MW = 24MW = L Если w_ нечетное число, то q + X)nW принимает восемь раз- различных комплексных значений при я, из- изменяющихся от 0 до 7, а если q = WM - не- нечетное число, то (((/ + I)8"»')) = (B4ЛЙ/)) принимает М различных значений при и, изменяющемся от 0 до М - 1. При этих условиях q + l)**' является корнем порядка 8Л/ в кольце по модулю р = = 21 — 1, если только q, M, W являются не- нечетными числами. Кроме того, существование Af-точечного действительного преобразования в кольце по модулю р означает, что М имеет обрат- обратный элемент R по модулю р. Так как эле- элемент, обратный 8 по модулю р, есть 2*~3, то Ш всегда имеет обратный элемент 2q~3R- Это означает, что для заданного Л/-точечного действительного преобразова- преобразования с корнем 2W, составным р и q, w, м — нечетными числами можно построить &Л/-то- чечные комплексные преобразования в коль- кольце по модулю р, причем A4) A5) - 8Л/ — 1. Для большинства практических приложе- приложений цифровой фильтрации отсчеты входно- входного сигнала представляются несколькими зна- значащими разрядами, число которых лежит в пределах от 7 до 20. Из этого следует, что во избежание переполнений преобра- преобразования должны оперировать с длинами кодовых слов, примерно в 2 раза превы- превышающих длину входных кодовых слов, что соответствует 15 — 50 разрядам. В табл. 1 перечислены различные воз- возможности при выборе составного р и нечет- нечетного q. Случай простого <?(<? = 23, 29,37,41, 43, 47) соответствует обычному преобра- преобразованию Мерсенна. Коща q не является простым, соответствующие преобразования имеют очень короткую длину и их корни не являются степенями 2, Чтобы обеспе- обеспечить максимальную эффективность при вы- вычислении сверток с помощью псевдомерсен- новых преобразований, желательно иметь относительно длинные преобразования с длиной, раскладывающейся на много взаим- взаимно простых множителей. Это кажется не- недостижимым для преобразований, вычисля- вычисляемых по модулю р = 21 — 1 - Заметим, од- однако, что в том случае, когда р не является 221
Таблица 1. Максимальные иечетиые значения длины действительных преобразований по модулю В - 24 - 1 и значения корней, равных степени 2, для нечетного q и составного р Число 15 21 23 25 27 29 33 35 37 39 41 43 45 47 49 Разложение на простые множители числа р = 2<7-1р,, р2,...,р{ 7 • 31 • 151 72 • 127 • 337 47 • 178481 31 • 601 • 1801 7 • 73 • 262657 233 -ПОЗ- 2089 7 • 23 • 89 • 599479 31 • 71 • 127 • 122921 223-616318177 7 -79 -8191 • 121369 13367 • 164511353 431 • 9719 • 2099863 7 • 31 -73- 151 «631 -23311 2351 -4513- 13264529 127 • 4432676798593 Разложение на простые множители числа Pj- -1 2-3-2-3-5 2- 3-52 2 -3- 2- 3s • 7 2* • 3 • 7 2-23 24 • 5 • 23 • 97 2-3-5 23 • 3 -5» 23 • З2 • 52 2- 3-23 • З2 2' • З3 • 19 23 • 29 • 2 • 19 • 29 23 • З2 • 29 2- 3 • 2- 11 23 • И 2-3 • 11 • 31- 293 2-3-5 2-5-7 2 • З2 • 7 2' • 5 • 7 • 439 2-3-37 2s • 3 • 37 • 167 • 1039 2-3 2-3-13 2- З2 -5 -7- 13 23 -3- 13-389 2-41 • 163 23 • 41 • 59 • 8501 2-5-43 2-43-113 2-43- З2 • 2713 2-3 2-3-5 23 • З2 2- 3-5' 2 • З2 -5 •" 2- З2 -5 -7 • 37 2 -52 -47 2s • 3 -47 24 • 31 • 47 • 569 2 • З2 • 7 27 • З2 • 72 • 43 • 337 • 5419 Макси- Максимальная нечетная длина 3 3 23 15 3 29 / / 37 111 3 41 43 3 47 63 Степе- Степени кор- корней из 2 / / 2 / / 2 / / 2 / / 2 2 / 2 / простым, но раскладывается на множители согласно A3), можно построить преобра- преобразования по модулю р/р; ' , имеющие корни, равные степени 2, и такие, что количество членов преобразования получается доволь- довольно большим и выражается числом с многи- многими сомножителями. Эти преобразования могут быть определены как = 0, 1 • ¦ • Ш - 1, Различные варианты выбора таких пре- преобразований перечислены в табл. 2. Мож- Можно заметить, что максимальное количество членов выражается достаточно большим (от 40 до 392) и хорошо раскладывающим- раскладывающимся на множители числом, что приводит к эффективному алгоритму вычисления типа БПФ с минимальным количеством операций. Может показаться, что эти преимущества сводятся на нет тем обстоятельством, что различные операции выполняются по моду- 222 лю B1 — 1)/(р- ') • Соответствующие ариф- арифметические устройства оказываются суще- существенно более сложными, чем арифмети- арифметические устройства, работающие в арифме- арифметике по модулю 1Я — 1. Эту трудность можно обойти, заметим, что при р = pf1 • pj2 . . . p. » можно вы- вычислять свертку по модулю р = 21 — 1, как в случае обычных преобразований Мерсен- на, а окончательный результат получить, выполнив последнюю операцию по модулю р/р(. ' на свертках, вычисленных по моду- модулю р: гя mod pip** = (г„ mod p)mod р/р. A7) Действуя таким образом с помощью алгоритмов типа БПФ, можно эффективно вычислить свертки относительно длинных последовательностей, причем все операции, за исключением последней, реализуются с помощью простых арифметических уст- устройств, работающих в арифметике по мо- модулю BЯ — 1). Этот метод аналогичен пла- плану, который был предложен в работе [1] для вычисления преобразований с числами
Таблица 2. Значения длины и корней для действительных и комплексных преобразований в кольце 15 21 25 27 35 35 35 45 49 49 Кольцо пре- преобразования 215 - 1 7 22' -1 V 2" -1 31 227 -1 773 2'5 -1 31 • 127 2" -1 -П7— 2'5 -1 31 245 -1 773 2" -1 127 249 -1 127 Действительное преобразование Длина 5 7 25 27 35 5 7 5 7 49 Корень 2' 2' 2 2 2 27 25 2» 27 2 Комплексное преобразование Длина 40B' -5) 56B' «7) 200B' • 52) 216B' • 3') 280B' -5-7) 40B' • 5) 56B' • 7) 40B' -5) 56B' -7) 392B' • 7) Корень 2(/ -1) 2 (У -1) 1 +1 1 +1 / + 1 2'A-Л -22A+/) 24A+Л 2'A-/) / +1 Прибли- Приближенное значение длины кодового слова 12 15 20 18 23 28 30 36 42 42 Ферма с помощью арифметики Мерсенна. Единственный недостаток данного метода состоит в том, что все операции по моду- модулю {2q - 1) выполняются со словами, длина которых больше, чем требуется для представления окончательного результата. Однако из табл. 2 видно, что можно постро- построить много преобразований, для которых количество членов выражается числом, хорошо раскладывающимся на множители, для которых р. ' малы по сравнению с р. Поэтому цена увеличения длины кодового слова при выполнении операций по модулю р вместо операции по модулю р/р. ' состав- составляет всего 20 процентов. Наибольший ин- интерес представляют преобразования, име- имеющие большое количество членов, которое выражается хорошо раскладывающимся на множители числом, с длиной кодового сло- слова, по возможности близкой к q. Среди этих преобразований 200-, 56- и 392-точечные комплексные псевдомбрсенновы преобразо- преобразования (которые соответствуют q, равному 25, 35 и 49), по-видимому, особенно хоро- хорошо приспособлены для решения задач цифровой фильтрации. Рассмотрим в каче- качестве примера преобразования, отвечающие « = 25. Из табл. 1 можно заметить, что макси- максимальная нечетная длина действительных пре- преобразований, вычисленных по модулю р = = 225 — 1, равна 15, причем корни этих пре- преобразований не являются степенями 2. Ес- Если в качестве модуля выбрать число B2S — — 1)/31, можно построить действительные преобразования, имеющие корни, равные степени 2, и максимальную нечетную дли- длину 25. С помощью комплексных корней макси- максимальную длину можно увеличить до 200 членов. Такое преобразование можно очень эффективно вычислить с помощью алго- 223
1 4- точечные БПФ ¦ 4- точечные БПФ 1 1 Последние ступени комплексного преобразования Мерсенна А* X Последние ступени комплексного преобразования Мерсенна h Обратное преобразование Мерсенна 1 Операции по модупю Р/Р?1 \ Обычная I арифмети ( длина слова > (д- арифметика, длина слова (д-1)/2бит Длина слова q Sum Арифметика по модулю Рис. 1, Вычисления комплексных циклических сверток с помощью комплексных псевдомерсен- иовых преобразований ритма типа БПФ с разложением на три сту- ступени по основанию 2 и последующим разло- разложением на две ступени по основанию 5. Одно из ограничений обычного преобра- преобразования Мерсенна заключается в жесткой связи между длиной кодового слова и дли- длиной преобразования. В этом отношении псевдомерсенновы преобразования обеспечивают значительные преимущества в том отношении, что мак- максимальное число членов этих преобразо- преобразований Мтах выражается существенно состав- составным числом, и длину преобразования мож- можно выбрать равной одному из сомножите- сомножителей Мтах. Можно даже построить несколь- несколько преобразований одинаковой длины по модулю взаимно простых чисел Рх, Рг, ¦ ¦¦ . . ., Pj, а окончательный результат получить по модулю (Ри Рг.. ¦ Р{) с помощью китай- китайской теоремы об остатках. Этот метод, на- например, можно использовать для вычисле- вычисления свертки, состоящей из 40 членов с округ- округленной длиной кодового слова, равной 32 разрядам, с помощью преобразований, 224 определенных модулями B1S - l)/7 и B25 - 1)/31. Вычисление нестационарной во времени свертки с помощью комплексных псевдо- мерсенновых преобразований иллюстриру- иллюстрируется рис. 1. Если вычисляется стационарная во времени свертка, различные отсчеты Ль преобразования последовательности {ап} суть константы. Они обычно вычисляются заранее и хранятся в памяти. В этом слу- случае может быть достигнут незначительный дополнительный выигрыш в количестве умножений за счет запоминания ij. по мо- дулю p/Pj ' вместо A k по модулю р. Заключительные замечания Были рассмотрены комплексные пре- преобразования Мерсенна, которые можно вы- вычислить без умножений. Эти преобразования являются весьма перспективными для вы- вычислений сверток, поскольку частично их можно вычислить с помощью алгоритмов типа БПФ, причем некоторые операции могут выполняться с кодовыми словами более короткой длины. Комплексные пре- преобразования Мерсенна имеют также преиму- преимущество перед обычными преобразованиями Мерсенна, заключающееся в возможности выполнения преобразований и сверток по- последовательностей, длина которых в 4 раза больше допустимой длины для обычных преобразований. Полученные результаты были обобщены на случай преобразований, определенных в кольце чисел по модулю псевдомерсенновых чисел или сомножите- сомножителей таких чисел. Показано, что некоторые из этих преобразований имеют длины, вы- выражаемые существенно составными числа- числами, и поэтому могут вычисляться с помо- помощью эффективного алгоритма типа БПФ. Комплексные преобразования Мерсенна можно использовать для реализации цифро- цифровых фильтров точно так же, как обычно используется ДПФ. Однако они обладают преимуществом перед ДПФ в том отноше- отношении, что позволяют производить точные вы- вычисления без ошибок округления и к тому же являются существенно более эффектив-
ными с вычислительной точки зрения, поскольку вычисляются без умножений- Слисок литературы 1. СМ. Rader, "Discrete Convolutions via Mersen- ne Transforms," IEEE Trans. Computers C-21, 1269A972). 2. R. С Agarwal and С S. Burrus, "Fast Convolu- Convolution using Fermat Number Transform with Appli- Applications to Digital Filtering," IEEE Trans. Acous- Acoustics, Speech and Signal Processing ASSP-22, 87 A974). 3. R. С Agarwal and С S. Burrus, "NumberTheore- "NumberTheoretic Transforms to Implement Fast Digital Con- Convolution," Pros. IEEE 63, 550 A975). 4. B. Gold, С. М. Rader, A. V. Oppenheim and T. G. Stockham, Digital Processing of Signals, McGraw-Hill Book Company, Ins., New York, 1969. Ch 7, pp. 203 - 213. 5. J. W. Cooley and J. W. Tukey, "An Algorithm for Machine Calculation of Complex Fourier Series,"Math. Сотр. 19, 297 A966). 6. D. E. Knuth, The Art of Computer Programming: Seminumerical Algorithms, AddisomWesley Pub- Publishing. Co., Inc., Reading, MA, 1969, Vol. 2, p. 356. 7. R. С Agarwal and С S. Burrus, "Fast One-Di- One-Dimensional Digital Convolution by Multidimen- Multidimensional Techniques," IEEE Trans. Acoustics, Speech and Signal Processing ASSP-22, 1 A974). 8. R. D. Gitlin, E. Y. Ho, and J. E. Mazo, 'Tass- band Equalization of Differentially Phase-Mo- Phase-Modulated Data Signals," Bell System Tech. /52, 219A973). 9. H J. Nussbaumer, "Complex Convolutions via Fermat Number Transforms," IBM J. Res. De- Develop. 20, 282 A976). 10. I. S. Reed and Т. К. Truong, "The Use of Finite Fields to Compute Convolutions," IEEE Trans. Inf. Theory ГГ-21, 208 A975). 11. I. S. Reed and Т. К. Truong, "Complex Integer Convolutions Over a Direct Sum of Galois Fields," IEEE Trans, Inf. Theory IT-21,657 A975). 12. H. J. Nussbaumer, "Dispositif Generateur de Fonction de Convolution Discrete et Filtre Nu- merique Incorporant Ledit Dispositif," French Patent Application No. 7, 512, 557, April 1975. 13 L. M. Leibowitz, '*Fast Convolution by Number Theoretic Transforms," NRL Report 7924, Na- Naval Research Laboratory, Washington, D. C, September 1975. 14. Gold, Rader, Oppenheim, and Stockham, op. cit., Ch. 6, pp 174- 196. 15; J. M. Pollard, "The Fast Fourier Transform in a finite Field," Math. Сотр. 25, 365 A971). Статья 13 О билинейных формах, мультипликативная сложность которых зависит от поля констант С. Виноград 1 Аннотация. В статье рассматривается система билинейных форм, которые являются коэффици- коэффициентами произведения двух полиномов по моду- модулю третьего полинома Р. Показано, что число умножений зависит от того, как Р разлагается Над полем констант, используемым в алгоритме. Если f = П Л непРив°Димы> то требу- требуется 2 deg (P) - к умножений. 1. Введение Многие результаты о числе умножений, необходимых для вычисления алгебраи- алгебраических функций, получены в рамках сле- следующей общей постановки задачи. Мы начи- начинаем с поля G, называемого полем констант, и рассматриваем подлежащие вычислению функции как элементы поля F = G(xiy х2, ¦ ¦ ¦ , хп) - расширения G с помощью переменных xlt . . . , хп. Получаемые при этом нижние границы для числа умножений, необходимых для вычисления рассматрива- рассматриваемых функций, справедливы, даже если умножения на постоянные элементы g S G не учитываются (см., например, [1] и [2]). Соглашения о том, что умножение на я G G G не считается, оправдано в случае, ког- когда g является целым числом, так как при этом умножение можно заменить несколь- несколькими сложениями. Во многих приложениях есть основания не учитывать даже умноже- умножения на рациональные числа, но если G = - Q (V), как можно отмахнуться от ум- умножения на sfl. Многие результаты, полученные в лите- литературе, нечувствительны к точной приро- природе G. Результаты [1] и [2], например, как раз имеют такой характер, но, как мы уви- увидим в следующем разделе, минимальное 1 Исследовательский центр IBM им. Томаса Дж. Уотсона Йорктаун хайте, Нью Йорк. 225
число умножений может зависеть от выбора G. Мы приведем пример, в котором тре- требуются три умножения, если G = Q — поле рациональных чисел, и только 2 умноже- умножения, если G = € — поле комплексных чи- чисел. Затем мы используем алгоритм G = = €, чтобы построить эффективный алго- алгоритм, предназначенный для решения сход- сходной задачи под полем G =Q. В следующем разделе будет проанали- проанализирована зависимость числа умножений от поля G для некоторого класса систем би- билинейных форм. Фидучия и Залцштейн [3] получили результат теоремы 3 для слу- случая / = 1. Они также установили результат первой части предложения 1, для случая, когда поле G является полем разложения Р и Р не имеет кратных корней. 2. Примеры Рассмотрим следующую систему били- билинейных форм. «Ai =x1y1-x2y2; Эта система представляет собой действи- действительную и мнимую части произведения двух комплексных чисел. Ее можно вычис- вычислить в три умножения, например. Щ = Х1СУ1 +УгЬ т2 = (Xi +x2)y2; -x, -*э Уг Уг \У*1 D) Эта система представляет, как легко ви- видеть, прямое произведение комплексной алгебры на себя. Иными словами, положив Xi = (xj + Jx2); X2 = (х3 + «хJ; получим. E) Понятно, что для вычисления D) над G = = Q достаточно 9 = З2 умножений, однако, используя C), можно получить алгоритм для вычисления D), требующий только шести умножений. Чтобы применить алго- алгоритм C), запишем — У*) + «CVa + Уз))! Известно [4], что двумя умножениями обойтись нельзя, если полем констант слу- служит Q. Однако над G = Q(i) имеется алго- алгоритм, который требует только двух умно- /КСпИИ. „ _| «„ _ X] +IX} . X.-JX, C) Следующий пример показывает, что второй алгоритм можно применить для построения эффективного алгоритма над G =Q. Рассмотрим систему билинейных форм «У. откуда -уз»; iP2, (б) G) ^4= -Re(P,) + Re(P2). Используя алгоритм B) дважды, можно вычислить Re (Pi), Im (P,), Re (P2), Im (P2)
с помощью шести умножений, а именно: l 4 ( ) —~ Хл ¦+- Ху -f" Ха (у2+у3); «э = — Xi — X4 + Xj — X> 6 2 ' Re(P,) = ml-m2; im(P,) = те, Re(P2) = w4-w5; Im(P2) = Подставляя (8) в G), получаем (8). (9) В следующем разделе будет показано, что для вычисления D) обойтись меньше чем шестью умножениями нельзя. Читателю должно быть ясно, что описан- описанная выше конструкция имеет общий харак- характер. Используя ее, можно показать, напри- например, что если существует алгоритм для вы- вычисления двух («о X и0) матриц за к умно- умножений над любым полем G < €, то можно перемножить две (и ,х п) = матрицы за Ап1оёпо операций. 3. Результаты В этой статье мы обозначаем систему би- билинейных форм через А (х)у, где А (х) — матрица размера t x m, элементы которой представляют собой линейние формы (над G) по переменным {х]( х2 х„], а 2> - вектор-столбец (у{,у2, ¦ • •, Ут) ¦ Нам потребуются следующие два результата из [2]. Теорема 1. Пусть А (х)у — система би- билинейных форм. Если А (х) имеет s столб- столбцов, линейно независимых над G, то любой алгоритм для вычисления А (х)у требует по меньшей мере s умножений. Теорема 2. Пусть А (х)у - система би- билинейных форм и пусть s - минимальное число умножений, необходимых для вычис- вычисления А(х)у. Тогда существуют 2$ линей- линейных форм (по х и .у с коэффициентами из G) L1, ? j, . . . , Ls, L1, L2,. .. ,LS, таких, что А (х)у = Um, где U — матрица с элемен- элементами из G, а т—вектор-столбец (ml,m2>... .... т^вида т,- = ?,¦?/', i = 1, 2,..., s. Пусть R(z) - I x.-z' nS(z) = Б ytz* - 1=0 1=0 два полинома, в которых коэффициенты являются переменными, пусть T(z) = = R(z)S(z). Система из а + Ъ + i коэффи- коэффициентов Т является системой билинейных форм, которую мы обозначим Т. Известно [3], что минимальное число умножений, необходимое для вычисления Т, равно а + + Ь + 1. Один способ вычисления Т с помощью а + Ъ + 1 умножений начинается с выбора а + Ъ + 1 различных элементов поля G, а0, а,, . . . *ав+ ь. Так как deg(r) = а + + Ь,то о + Ь i?BM(z) =«(z)S(z)mod f] (г-а,). i=0 (Ю) В силу китайской теоремы об остатках, i?(z) • S(z) mod П (z ~ Щ) можно най- i = O ти, вычисляя R{z) * S(z) mod(z — а,- ) = = Д(а,-) 'S(a,) при/ =0, 1,... ,a + b.После этого результат A0) вычисляется с исполь- использованием только умножений на фиксиро- фиксированные элементы G. Таким образом, тре- требуется а + Ъ + 1 умножений R(at) • S (с^), i = 0, 1, . . . , а + Ъ. Этот способ является,в сущности, алгоритмом Тоома - Кука, опи- описанным в [6]. Второй способ начинается с выбора а + + Ъ различных элементов 01, 02 Ра + Ь поля G и использует равенство 227
а + Ъ R(z) • S(z) =R(z) • S(z) mod П (z - i 1 "ff 1=1 Как и выше, R • S mod П (z ~~ 0,-) вычис- вычисляется с использованием китайской теоре- теоремы об остатках за а + b умножений, а (а + <¦ b + 1)-я операция умножения определя- определяется как хиуь. Конечно, можно заменить произведение R(otj) ' S (otj) на произведение (g • /?(<*,)) X х (h ' ЗЧа,-)) для любых g, h S G(g, h Ф Ф 0). Условимся называть два алгоритма в существенном одинаковыми, если они раз- различаются только описанным выше образом. Тогда справедлива следующая теорема. Теорема 3. Любой алгоритм для вычис- вычисления Т с использованием а ¦+ Ъ +1 умно- умножений является в существенном одинако- одинаковым с алгоритмом, полученным из A0), или алгоритмом, полученным из A1). Доказательство. Пусть т0, mi > • • •, тд + ьа + b + 1 умножений.Так как о Х0 0 \ \о о х J /Уо\ У, \Уь1 A2) то получаем, что существует такая матрица t/размера (а + Ъ + 1) х (а + Ъ + 1) с элемен- элементами из G, такая, что т. Так как все строки X линейно независимы (над G), то U невырожденная. Пусть W = = U~1. Из этого следует, что (Ш)у A4) Пусть (w{,, wl, . . . , wla + b) - i-я строка W, тогда из A4) получаем Уо Тем самым билинейная форма A5) может быть вычислена с помощью только одного умножения, так что по теореме 1 все формы L и4+ьх; ,k=Q,l,...,b, кратны одной из них. Это означает что матрица .. \ w W Ь+1 A6) имеет ранг 1. Легко проверяется, что это может быть только в двух ситуациях: ли- бо 0 = Wo = wl = wl = . . . = vJa + b _, и w b Ф 0, либо существуют а,- такие, что w. = (a,)/, wi, j = 0, 1 a + b. Так как W невырожденная, то, по крайней мере, одна строка имеет второй вид, а если две строки имеют первый вид, то соответству- соответствующие им а различны. Если W не имеет строк второго вида, то этот алгоритм является в существенном одинаковым с A0), в противном случае то же самое относится к A1). На этом до- доказательство теоремы закончено. Ниже мы будем предполагать а = Ъ = =>п- 1. и-1 5] Пусть Р = г" + J, djZ' - полином с ко- коэффициентами, принадлежащими полю G. ""f в- 1 A3) Пусть R = ? xiz' и S = X J\z' - два поли-
нома с переменными в качестве коэффици- коэффициентов. Коэффициенты полинома T(z) = = R (z ) • 5 (z ) mod P являются системой би- билинейных форм, которую будем обозначать Тр. Например, если Р = z2 + 1, то система имеет вид A7) т. е. совпадаете A). Результаты этого раздела описывают ми- минимальное число умножений, необходимое для вычисления Т , и зависимость этого числа от G. Теорема 4. Пусть Р = Р1, где Р неприво- неприводим (над G), и пусть л = deg (Р) ¦ Минималь- Минимальное число умножений, необходимое для вычисления Т„, равно 2л — 1. Доказательство. Пусть С„ — со- сопровождающая матрица Р и пусть Vp = = { « 6 С | Э - полином q Ф 0 deg(q) < < л и vq(Cp = 0} . Так как Р неприводим, то q (Ср) невырождена при Р )( q. Если v G G Vp, то щ (Ср) = 0 и q = ffq для некоторо- некоторого 1 > г> 0 и q, взаимно простого с Р. Отсюда 0 = щ (Ср) = vPr(Cp)q(Cp), и так как q(Cp) невырождена, vPr(Cp) =0и,сле- =0и,следовательно, vPl~l(Cp) = 0. Таким образом, Vp = {« €G" \vp'l~x(Cp) =0}. Такимоб- разом, мы получили, что К, является под- подпространством G" и dim (Vp) < л. Пусть Т„ = А (х)у, тогда А ($) имеет вид ...\СГ1Х), A8) где j - вектор-столбец (х0, Xi,...,xn_1)T. (Это следует из того факта, что коэффи- циенты полинома z У f^z' mod P имеют вид Cpf, где t1 есть вектор (f0. tlt . . . • • • t tn _ j). Пусть f — минимальное число умножений, необходимое для вычисления Т-. Тогда по теореме 2 А (х,)у = Цщ, где ?/- матрица размерности л х f с элемента- элементами из G и щ = (mi,m2 »j;O'. Так как для всех ненулевых векторов-строк w E G G" выражение wA (x.) Ф 0, мы получаем, что ранг (U) = л и, следовательно, Uимеет л линейно-иезависимых столбцов. Предпо- Предположим, что первые л столбцов U являются линейно-независимыми. (Это не ограниче- ограничение — в противном случае мы можем пере- переставить столбцы икт{.) Тогда существует невырожденная п х п » матрица W, такая, что WU= (I ; V). Так как Wневырождена, то линейная оболочка ее строк равна G" и, следовательно, существует строка W, кото- которая не принадлежит Vp. Предположим без потери общности, что это первая строка, и обозначим ее через w. Так как WA (х)у = = (/ j lf)m, получаем wA(x)y = A, 0, ... . . . , 0, и\, и'2, . . . , u't _ н)т, т. е. билиней- билинейная форма hs4 (x_)y может быть вычислена с помощью t - п + 1 умножений. Мы ут- утверждаем, что никакая нетривиальная ли- линейная комбинация столбцов wA (x) не рав- »-i няется 0. В самом деле, пусть 0 = У. w x С \ n-i'-° Z а?Чд:;тогдаи>У аД = "О / („о 0 G V 0 / С О / ( 0, но w G Vp и, следовательно, = 0, / = 0, 1, . . . , п - 1. По теореме 1 требуется не меньше п умножений для вычисления wA (х)у, т. е. t - п + 1> nnt>2n- 1,чт и доказывает теорему. (Заметим, что так как Т можно вычислить за 2л — 1 умноже- умножений, то то же самое относится и к Т„.) Пусть Р = /V • Pjj* , где Ри Р2 неприво- димы и (Р\, Pi) = 1. По китайской теореме об остатках система Т может быть вы- вычислена путем нахождения Т , и Т , Pi'' Р>'» и последующего объединения результатов вычислений с использованием только опера- операций сложения и умножения на элементы G. Определение. Пусть А(х)у и 2?(?)ij - две системы билинейных форм, зависящие от непересекающихся множеств перемен- переменных» Прямой суммой систем А и В (обоз- (обозначаемой А + В) называется система ( \ 0 Алгоритм вычисления АфВ называется прямой суммой, если его матрица U имеет вид о и2 т. е. А (х)у н В (|M находят раздельно.
Гипотеза. Минимальное число умножений, необходимое для вычисления А фВ, равно т(А) + т(В), где т(А) - минимальное число умножений, необходимое для вычис- вычисления А (х)у, а т(В) — соответствующее число для вычисления 5(|)tj. Более того, любой алгоритм, который вычисляет А фВ за минимальное число умножений, являет- является ортогональным. Мы не можем доказать зту гипотезу в общем случае, но приводимая ниже теорема дает доказательство для частного случая. Теорема 5. Пусть Рг = Р^ , г = 1, 2, ... . . . , к, где Р{ неприводимы и deg(P{) = = щ, и пусть п = ]Г ni. Минимальное число умножений, необходимое для вычисления Т = f?i ф Тр2 ф. . . ®Трк, равно 2п-к. Более того, любой алгоритм для вычисле- вычисления этой системы за 1л - к умножений ор- ортогонален. Доказательство. Пусть Тр. имеет вид Л,- (х')У, а ТестьА (х)у, где ° \ Л{х) = О Ак(х")/ Пусть А (х)у = Unxtm (где t обозначает число умножений), тогда, так как все стро- строки А (дс) линейно-независимы, ранг U равен п. Следовательно, существует невырожден- невырожденная ихи = матрица W,такая,что WU= (/ j U*). Разобьем W на блоки W = (W1 \ W2 \ ... ... i Wk), где W1 обозначает первые пх столбцов W, W2 - следующие пг столбцов W и т. д. Так как ^невырождена, ранг (W') = = щ, i = 1, 2,..., к. Следовательно, каждая W имеет строку, которая не принадлежит Vp. ¦ Пусть w. обозначает /-ю строку W' и пусть p(J) — число элементов множества Лемма 1. Если для некоторого / р (/) = = s,to t> 1л - к +s - 1. Доказательство. Предположим без потери общности, что рA) = s и что 230 w\*Vp,,isB 1,2, ...,s. Пусть/, +i»/»+2'"- . . . ,jk таковы, что yfiri Vrj ,г = s + 1,s + + 2, . . . , к, тогда существует вектор-строка C с ненулевыми коэффициентами, располо- расположенными только в позициях 1 ,js +1»/, +2»• • • . . . , jk, такими, что если у = $W = G1, 72» ¦ • •»7*)»то 7,- € *р,->' = 1. 2,..., к. Рассмотрим билинейную форму $WA (x) X х у = &{IU')m. Мы утверждаем, что тре- требуется по меньшей мере л умножений, необходимых для вычисления этой били- билинейной формы. Рассмотрим любые нетри- нетривиальные комбинации столбцов fSWA(x) = = уА(х). Заменяя /-й столбец Aj (xf) на С1 х}, мы получаем, что эта линейная ком- комбинация имеет вид к j = 0 Эта линейная комбинация обращается в нуль, если и только если у,-^ at.jC^i = 0 = о при i = 1, 2, . . . , к. Но У^Ур, и,следова- и,следовательно, а(. .• = 0 при всех i и /. Это доказы- доказывает утверждение. По теореме 1 необходимо не меньше п умножений для вычисления у А (х)у, но 0 (IU' ) имеет не больше к - s + 1 +1 нену- ненулевых коэффициентов и, следовательно, к -s + 1 + t - п>п или t>2n-k + s -I. Это завершает доказательство леммы. Так как s > 1, мы заодно доказали, что любой алгоритм для вычисления Т требует не меньше 1л - к умножений. Так как эта билинейная система тривиально вычисляет- вычисляется за 1л — к умножений, то таким образом доказана первая часть теоремы. Для доказательства второй части теоре- теоремы рассмотрим алгоритм вычисления» Т за In — к умножений и запишем его в виде Т = Um. Пусть W записана, как и прежде, тогда из леммы 1 следует, что р (/) < 1 при / = 1, 2, . . . , п, т. е. мы можем разбить строки W на к + 1 непересекающихся мно- множеств (No ,Ni,N2,---, Nk), для которых если / e.N0, wj e Vp. при i = 1, 2, . .., к и если / G Nr (г Ф 0), то wr. $. V и w- G G Vpj при i Фг. Без погери общности мы можем предположить, что N\= {1, 2,... ,тх}
и т. п. и (Если зто не так, то можно переставить строки W, чтобы привести ее к описанному виду). Как и выше, положим WU = (Л/') и обозначим элемент U', стоящий на пере- пересечении 2-й строки и /то столбца, через Лемма 2. Если it G Л^ и /2 € Л^ , д Ф * к (к > к =? 0), то для всех/, щ ;- и- у- = = 0. Доказательство. Предположим, что и\ j Ф 0 и и\ j ФЪ. Предположим без потери общности, что jx = 1, ii = 1, к = 2, i2 - «1 + 1 и/ =1. Пусть Af - мат- матрица [1и\ , 0 \ «2.1 4.1 «i.l 1.1 1 0 0 0 1 0 0 0 \ о о B0) Тогда MWA (х)у = WA te) j; = М(I i t/')m = = •(/ I U)rri , где m' есть »г с переставлен- переставленными^ первыми и (л + 1)-м элементами, и (/ 1 V) =M(I i ?/') с переставленными пер- первыми и (и + 1)-м столбцом. Строка ( Й имеет вид wi «1.1 По построению w^ следовательно, таким же образом и, *1.1 и по лемме 1 этот алгоритм использует по меньшей мере 2л - к + 1 умножений. Про- Противоречие. Лемма 2 утверждает, что п - к столбцов U' могут быть разбиты на к + 1 непересека- непересекающихся множеств Мо, Ми . . . , Мк, таких, что если i GNjt (/i =?0) и / GA/д (j 2 Ф j i), то и\ / = 0. Схематически и' мож Ф может быть записана в виде /М, i М2\— B1) Лемма 3. A) Для каждого S число эле- элементов М$ равно я^ — 1 (и, следовательно, Af0 =Ф)- B) Если/ 6ЛГГ и/ GAfr (г^=0), то м,' / Ф 0. C) Если i G JVr , то w/ =0 при / ^г! Доказательство. Пусть i при- принадлежит Л^ (г Ф 0), тогда как W4 (x)jf = = (/ i U')m, мы получаем следующую би- билинейную форму: (w}, wl w.),A (x)i = = @,0, -0, 1', ...,»0,0..,0,^.„0. .. Так как и^. G VPf , то из теоремы 1 сле- следует, так же как и в доказательстве теоре- теоремы 4, что необходимо по меньшей мере пг умножений для вычисления зтой били- билинейной формы, и, следовательно, Uj имеет по меньшей мере пг ненулевых элементов. Но это означает, что количество элементов Мг не меньше пг - 1. Так как U' имеет п — к = (ns — 1) столбцов, то число эле- элементов Мг равно точно пг — 1 и м^ имеет точно пг ненулевых элементов. Для дока- доказательства третьего утверждения леммы 231
заметим, (что если wj Ф 0 при / Ф г, то (wj i w? i ... wp.4 (x) имеет, по меньшей мере пг + 1 линейно-независимых столб- г-1 цов, а именно пг столбцов 2- па + *> ? Ид + 2, . .., ? Ид (которые линейно независимы, так как wj fi Vpr) и еще один, которым без потери общности можно счи- тать столбец 2- ив + 1. Этот последний столбец не является нулевым, так как wj Ф 0, и не может зависеть от остальных пт столбцов, так как в него входят пере- переменные { х)'} , в то время как остальные пг столбцов являются линейными комби- комбинациями переменных { У}. Но и,- имеют точно пт ненулевых элементов, что проти- противоречит теореме 1. Лемма 4. Пусть j GN0 и / &МГ и пред- предположим, что u\ j Ф 0, тогда: A) Если s ф. Мг , то щ s = О B) Если а Ф г, то \f{ =0. Доказательство. Предположим без потери общности, что/ = 1 G М^ Пусть М такая же, что и в доказательстве леммы 2 [т. е. имеет вид B0) ]. Заметим, что по лемме 3 u\ i_ Ф 0. Пусть W = MW и пусть M(IU')m = Gt/)w' ,2сак_и в «0Ka3f- тельстве леммы 2. Пусть No, Nt, . . . , Nk есть разбиение строк W, тогда i G N1, так как 1,1 Но по лемме 2, если s е Л/г , то м,- s = u\ s, и, снова применяя лемму 2, мы получаем 0 = 5/ s • Это доказывает первую часть лем- леммы. По лемме 3 (третья часть) й? = W?; снова применяя лемму 3, мы получаем w? = 0, Это завершает доказательство леммы. Лемма 4 утверждает, что строки W мо- могут быть разбиты на к непересекающихся множеств #i, #2. • ¦ • . Пк, где i &ПГ, ес- если и только если wr. Ф 0. Так как W невы- невырождена, то число элементов Пг равно иг , т. е. ¦>%¦> 0 ! .j. о О" П* 1 i и таким же образом М, М2 B2) П, П2 0 П» 01 0 i ^... i I/ Г B3) Поэтому столбцы (/ I U') могут быть переставлены с помощью перестановочной матрицы Р таким образом, что /0, 0 ... 0\ 02 ... U']P 0 0 0 0 B4) Но WA(x)y = ((/ | U')P)P~lm и, следова- следовательно, Х~(дсJ; = ((^"'G | U')P)P~lm, т. е. столбцы матрицы U могут быть пере- переставлены таким образом, что /[/, 0 ... 0 0 U2 и= : : \0 0 ... ' JJJ B5) Значит, алгоритм является прямой суммой. Таким образом, мы доказали вторую часть теоремы. Следствие 1. Пусть к - число непри- неприводимых множителей полинома Р (не счи- считая кратности), тогда минимальное число умножений, необходимое для вычисления Тр, равно 2deg(/>) - к. Более того, еслиР не имеет кратных корней и поле G являет- является полем разложения этого полинома, то полученный минимальный алгоритм един- единствен.
Доказательство. Пусть Р - = \\ Р-' по китайской теореме об остатках умножение по модулю Р — это то же самое, что и умножение по модулям Pi' . Вторая часть результата следует из того, что если Р линеен, то минимальный алгоритм для вычисления Т единствен. Следствие 2. Пусть G = R — поле действительных чисел. Минимальное отли- отличие умножений, необходимое для вычисле- вычисления системы D) билинейных форм, равно 6. Доказательство. Положим Очевидно, эта оистема эквивалентна D), а A9) имеет вид Tp®fp,meP = z2 + 1. х2 + x3,i?i =ух +У*,П2 = Уг ~ Уъ,Пг = У\ -У4>Я4 ~Уг +Уз, тогда получаем Список литературы [l] PAN V. YA., Methods of computing values of polynomials, Russian Mathematical Surveys, 21 A966) 105-136. [2] WINOGRAD S., On the numder of multiplica- multiplications necessary to compute certain functions, Comm Pure and Appl. Math., 23 A970) 165 - 179. [3] FIDUCC1A С M. and Y. ZALCSTE1N,/%efc«s = Having linear multiplicative complexities, Techni- Technical Report 46, Department of Computer Science, State University of New York at Stony Brook, (August 1975). [4] WINOGRAD S., On multiplication of 2 X 2 mat- matrices, Linear Alg. Appl., 4A971) 381 - 388. [5] STRASSEN V. Vermeidung von Divisionen, /. fur reine und angewandte Mathematik, 264 A973), 184 - 202. [6] TOOM A. L., The Complexity of a Scheme of Functional Elements, Soviet Mathematics, Trans- Translations of Doklady Akademie, Nauk. S. S. S. R., 4, (June 1963),714 -717. ГЛАВА ТРЕТЬЯ 9. Алгоритм Винограда для вычисления преобразования Фурье комплексных последовательностей произвольной длины N Назначение программы. Эта программа вычисляет дискретное преобразование Фу- Фурье последовательностей, длина которых N является произведением взаимно простых множителей, выбранных из множества {2, 3, 4, 5, 7, 8, 9, 16}. Методом для вычисления ДПФ в приведенной программе является алгоритм Винограда [4], известный как АВПФ [113, 114], реализованный дпя после- последовательностей произвольной длины Аг. Метод. Для того чтобы установить об- общую систему обозначений, мы вначале крат- кратко рассмотрим основной вид АВПФ. Пусть необходимо вычислить УУ-точечное ДПФ по- последовательности х [и], п = 0, 1, . . . •, N - 1. Предположим, что длина последовательно- последовательности может быть разложена на произведение A взаимно простых множителей: N - Nx X х JVj х . . . xiVM. АВПФ состоит из пяти ша- шагов, как показано на рис. 9.1 для сдучая N=15. Шаг 1. Одномерная последовательность х [п] отображается в д-мерный массив s [«!, n-i, . . . , лм], используя китайское соответствие Шаг 2. Выполняются модули, предшест- предшествующие умножению [70], по одному мо- модулю на каждый множитель^-. Каждый та- такой модуль содержит только сложения и вычитания. Проходя через элементы этих модулей, размер массива данных может расширятьс-я. Порядок модулей может быть 233
Трехточечный модуль, предшествующий умножению Пятиточечный модуль, ,„,„„ „,.„,„ ,„ Пятиточечный модуль, предшествующи! 'TJZ—rn следующий за" Трехточечный модуль, следующий за умножениями умножению F*3= 18 умножении) умножениями Рис. 9.1. Пятнадцатиточечный алгоритм ДПФ с декомпозицией с помощью отображения Гуда для получения двумерного 3 X 5-точечнога ДПФ и алгоритмами Винограда для трехточечного и пятиточечного ДПФ. Алгоритм требует 6X3 = 18 умножений, которые помещены между модулями, предшествующими умножению, и модулями, последующими за умножениями
выбран таким образом, чтобы минимизи- минимизировать общее число сложений в алгоритме. Шаг 3. Массив данных поточечно умножа- умножается на массив вещественных констант !, полученных из множителей алгоритмов ДПФ малой длины N для Nj, i = 1, 2, . . . Эти константы полностью определяются комплексными экспонентами ДПФ WN и являются единственными умножениями, не- необходимыми в алгоритме. Шаг 4. Для каждого из ц измерений вы- выполняются модули, следующие после умно- умножения [70]. Каждый из этих модулей со- содержит сложения, вычитания, а также ум- умножения на /. Для различных измерений требуются различные модули. После про- прохождения через секцию, следующую после умножения, массив данных S [кг, к2, . ¦ ¦ . . . , к^ сжимается обратно до своего пер- первоначального размера Nt x N2 х . . . N^. На этой стадии вычислений мы получаем ^-мерное ДПФ массива s [nt, п2,... , п^]. Шаг 5. Отображение д-мерного массива S [к1, к2 &м] с целью получения необ- необходимого одномерного ДПФ Х{к) выпол- выполняется в соответствии с китайской теоре- теоремой об остатках. Это соотношение имеет следующий вид: fc = <51fc1 + Ji*i + ... +sJiM\, (9.2) где целые числа 5,- удовлетворяют условию s, = б,, mod Nj, i,j = 1, 2,..., ft. (9.3) Инициализация. Для получения эффек- эффективной программы АВПФ в случае мнохо- кратного вычисления ДПФ одинаковой дли- длины некоторые операции необходимо вы- выполнить всего один раз. Во-первых, должны быть найдены множители N. Так как АВПФ состоит из алгоритмов ДПФ малых длин, разработанных только для определенных длин последовательностей, производится проверка на допустимые значения N. Далее, путем перемножения заранее записанных 1 ОтмеТим, что, в отличие от предложений дру- гих авторов, наши константы не могут быть мни- мнимыми. "Умножение" на / с целью эффективного получения мнимых констант осуществляют моду- модули, следующие после умножения. При этом исче- исчезает необходимость в маосиве флажков. констант для каждого небольшого множи- множителя формируется массив постоянных мно- множителей. Наконец, на основании множите- множителей N подготавливаются векторы переста- перестановок для входных и выходных отображе- отображений. Это ускоряет процесс отображений, так как соответствия китайской теоремы об остатках решаются во время инициали- инициализации. Конечно, за такое ускорение прихо- приходится растгачиваться памятью, необходи- необходимой для хранения векторов отображения. Описание программы. Программа АВПФ состоит из семи подпрограмм, каждая из которых описывается ниже. Структурная схема алгоритма приведена на рис. 9.2. Со- Содержание индивидуальных вычислительных модулей (модулей, предшествующих и сле- следующих за умножением) приведено в виде графов на рис. 9.3-9.10. Алгоритм Виаограда для вычисления ДПФ задействуется вызовом подпрограммы WFTAco следующими параметрами: N —длина преобразования; XR(N) -действительная часть массива, подлежа- подлежащего преобразованию; XI(N) -мнимая часть массив*, подлежащего преобразованию. Действительные и мнимые части преобразования возвра- возвращается в XR и XI, INIT -флажок, показывающий, нуждается ли вызов WFTA в и шциализации. INIT = = 0 означает необходимость инициали- инициализации; INIT Ф 0 означает пропуск фазы инициализации. В случае., вычисления большого числа ДПФ одинаковой дли- длины, инициализация необходима только для первого ДПФ. Подробности см. в подпрограмме INISHL; IERR -целая переменная, которая после вы- выполнения ДПФ является кодом ошиб- ошибки. Если ДПФ было выполнено пра- правильно, то IERR - 0; если произошла ошибка, то IERR = -1 или -2. Воз- Возможны две причины ошибки: A) Дли- Длина преобразования задана неправильно, т. е. она содержит множители, не вхо- входящие в множество {2, 3, 4, 5, 7, 8,9, 16},(IERR = -1)wih B) программа ие была инициализирована для конкрет- конкретного заданного значения длины пре- преобразования (IERR =-2). Подпрограмма WFTA вызывает подпрог- подпрограммы INISHL (в случае нвоСйюйВмостя), 235
Г Иачапо Л Вернуться IERR=-1 Програм- Программа использует, 'рвып Разложение на множители Верно ли это N ? Определение коэффициентов множителей Определение векторов перестановок Шицц авизировано ли N? SUBROUTINE PERM1 Отобразить XR(N), ХЩ) В SR( ), SK ) через INBXI (N) SUBROUTINE WEAVE 1 Выполнить моду/iи,л ре д- шествущие умно/нению SUBROUTINE MULT Выполнить модули,сле- модули,следующие зо умножениями SUBROUTINE PERM 2 Отобразить SR() si( i В XR(N)JUN) через indx2(N) _^_ Вернуться Рис. 9.2. Структурная схема алгоритма Винограда преобразования Фурье 236
NljM Трехточечный модуль, предшествующий умножению Трехточечный модуль, следующий за умножениями Рис. 9.3. Алгоритм трехточечного ДПФ использу- использующий декомпозицию Винограда Обозначения соответствуют адресам в фортран ной программе NBASEO—— PNBASE 10 NR2 1 S38S41769 NR3 0 5590169944 NR4 0 363271264 NR5 0 5В77В52523 Рис. 9.4. Четырехточечное ДПФ, ко- которое испопьзуется также в качестве модуля, следующего за умножени- умножениями в программе АВПФ -NBASE CNA3 Пятиточечный модуль, предшествующий умножению Рис 9.5. Алгоритм пятиточечного ДПФ, использующий декомпозицию Винограда Пятиточечный модуль, следующий за умножениями NR6 Семиточечный модуль, предшествующий умножению Семиточечный модуль, следующий за умножениями Рис. 9.6. Семитрчечное ДПФ, использующее декомпозицию ВниоГрада. Необходимо девять умножений 237
NBASE NR2 NR3 NR5 NR6 NBASE 10 NR1 1 0 NR2 1 0 Восьмиточечньш модуль, предшествующий умножению -NBASE - те Восьми/почечный модуль, следующий за умножениями Рис. 9.7. Восьмиточечное ДПФ, использующее декомпозицию Вино- Винограда ОNBASE I О PNR5 -0 1736481777 JR6 0 9396926208 *ONR7 -0 6427876097 ?>NRB -0 9B4B07753 NR9 0 3420201433 Девятиточечный модуль, предшествующий умножению Девяпиточечнь'й модуль, следующий за умножьниями 238 Рис. 9.8. Девятиточечное ДПФ, использующее декомпозицию Винограда. Необходи- Необходимо одиннадцать умножений
T(S) NBASE NR4 NR12 NR1O NR14 •Г-ONR15 Рис. 9.9. Шестнадцатиточечный модуль, предшествующий умножению Рис. 9.10. Шестнадцатиточечный модуль, последующий за умножением
PERM1, WEAVE1, MULT, WEAVE2 и PERM2. Подпрограмма INISHL выполняет для за- заданного значения N те вычисления, которые не должны производиться при повторном выполнении алгоритма. Они включают в се- себя разложение длины преобразования N на взаимно простые множители, вычисление постоянных коэффициентов, которыа дол- должны быть использованы на шаге умножения (подпрограмма MULT) и вычисление векто- векторов отображений для перестановок, пред- предшествующих и следующих после умноже- умножения, которые должны быть использованы в подпрограммах PERM1 и PERM2. Длина преобразования N разбивается на взаимно простые множители, взятые из набора B, 3, 4, 5, 7, 8, 9, 16}. Так как N может иметь максимум четыре множителя из этого на- набора, множителям приписываются значения целых переменных NA, NB, NC и ND следу- следующим образом: NA приписывается наибольшее значение из набора {l, 2, 4, 8, 16} , на которое делит- делится N; NB - наибольший делитель N из на- набора {1,3,9), NC наибольший из {1,7}и ND - наибольший из A, 5}. В случае, если длина преобразования допустима, результат про- произведения NA * NB * NC * ND должен быть равен N. В дальнейшем NA будет называть- называться^ первым (или крайним внешним) множи- множителем, NB — вторым, NC — третьим и ND — четвертым (или крайним внутренним). Эти названия выбраны с учетом порядка вычис- вычисления модулей, предшествующих умноже- умножению (так, NA - размер первого модуля, предшествующего умножению и последнего модуля, следующего за умножением)'. Зная множители N и пользуясь табл. 9.1, мы можем определить расширение массива 1 Такой порядок модулей, предшествующих и следующих за умножением, минимизирует чис- число сложений в алгоритме во всех случаях, кроме ^=48,240,336 и 1680. Увеличение числа сложений для этих случаев происходит менее чем на 4 % по сравнению с оп- оптимальной стратегией [113]. Преимуществом по- порядка вычислений, выбранного нами, является более простая структура программы. 240 данных, которое произойдет в фазе, пред- предшествующей умножению, и соответственно число умножений, которое будет выполне- выполнено в АВИФ Для каждой из четырех пере- переменных (NA, NB, NC и ND) число умно- умножений присваивается соответственно пере- переменным ND1, ND2, ND3 и ND4. С учетом расширения массива данных АВПФ рабо- рабочий массив SR (•) и SI (•) должен обладать размерностью ND1 * ND2 * ND3 * ND4. Если должен, быть понижен принятый здесь верхний предел массива преобразования 5040 элементов, размеры массивов могут быть уменьшены с помощью табл. 9.1, из которой определяется расширение массива данных для наибольшего допустимого раз- размера преобразования. Второй шаг подпрограммы INISHL со- состоит в вычислении постоянных коэффи- коэффициентов для операции умножения. Они получаются из коэффициентов индивиду- индивидуальных множителей следующим образом. =СОА (wi)*COB (и2) *СОС (и3) *COD (и4), где и, = 1,2,....ND1; п2 =1,2,...,ND2; и3 =1,2, ...,ND3; и4 =1, 2,.. . ,ND4. Массив COEF обрабатывается как одно- одномерный массив в программе на Фортране, но он также может рассматриваться как Таблица 9.1 Число умножений M(N), необходимое для АВПФ дли- длины N N 2 3 4 5 7 О О 9 16 M(N) 2 3 4 6 9 О о 11 18 П римечание. Если N = г, X X г% X . . . X гм, то M(N) =M(ri)x ХМ (г,) ¦¦¦M(rtl).
многомерный в представлении со смешан- смешанным основанием, где первый индекс изме- изменяется наиболее быстро. Таким образом, получаем эквивалентное представление COEF(n1( п2, пг, п4) = COEF(«i + + ND1 *п2 +ND1 *ND2*n3 + + ND1*ND2*ND3*«4). Этот метод обращения к данным также при- применим к массивам SR (•) и SI(•). Третий шаг подпрограммы INISHL со- состоит в вычислении векторов отображений INDX1(*) и INDX2(-) для перестановок данных, предшествующих и следующих за умножением. Перестановка, предшеству- предшествующая умножению, производится по китай- китайскому соответствию (9.1). Для достижения наибольшей скорости отображение осуще- осуществляется с использованием вектора ото- отображений INDXl('). Перестановка, следу- следующая после умножения, требует обратного отображения китайской теоремы об остат- остатках аналогично (9.2) и (9.3). Как и ранее, для повышения скорости используется век- вектор отображений INDX2 (•). При заданной длине преобразования N все три функции подпрограммы INISHL выполняются только один раз. Остальные пять подпрограмм образуют вычислитель- вычислительное ядро алгоритма. Подпрограмма PERM 1 отображает входные массивы данных XR и XI в рабочие массивы SR и SI, используя вектор перестановок INDX1. В подпрограм- подпрограмме PERM.1 массивы SR и SI рассматривают- рассматриваются как одномерные размера ND1 * ND2 * * ND3 * ND4. Отметим, что АВПФ делается "не на месте" из-за перестановок. Далее вызывается подпрограмма WEAVE1, которая выполняет модули, предшеству- предшествующие умножению. Первый выполняемый модуль имеет длину NA. Если NA = 1, про- проверяется следующий множитель NB. Каж- Каждый из множителей NB, NC и ND проверяется по очереди. Для того чтобы повысить ско- скорость обработки, в подпрограмме WEAVE 1 массивы SR и SI рассматриваются как од- одномерные. Модуль, предшествующий умно- умножению, не может быть четырехточечным, так как четырехточечное ДПФ полностью выпол- выполняется как модуль, следующий за умно- умножением. Аналогично двухточечный модуль, предшествующий умножению, является двухточечным ДПФ, и двухточечный модуль, следующий за умножением, отсутствует. Со- Содержание модулей, предшествующих умно- умножению, содержится в графах рис. 9.3 — 9.10 и табл. 9.2. Согласно подпрограмме WEAVE 1 данные поточечно умножаются на действительный массив COEF в подпрограмме MULT. За- Затем в подпрограмме WEAVE2 выполняются модули, следующие за умножением. Модуль длины ND E или 1) выполняется первым, затем выполняются NC, NB и NA. Графы на рис. 9.3 — 9.10 представляют алгоритмы модулей, следующих за умножением для различных множителей. Последней вызыва- вызываемой программой является PERM2, которая производит перестановки, следующие за ум- умножением, отображая SR и SI в XR и XI при помощи вектора отображений INDX2(*)- Эта процедура завершает вычисление АВПФ. Таблица 9.2. Множители для 16-точечного ал- алгоритма ДПФ I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 cm 6@ 1,0 1,0 1,0 -1,0 1,0 -VT 2 -1,0 n/T 2 1,0 0,5411961001 -s[2 2 -0,5411961001 -1,0 -1,306562965 s/T 2 1,306562965 -0,9238795325 0,3826834324 241
Описание параметров CDA, CDB, CDC, CDD - действительные массивы, в которые записываются коэффициенты множителей TV во время первоначального вызова (CDA- для крайнего внешнего, CDD - для крайнего внутреннего); СОЗ, С04.С08, С09, С016 - действительные масси- массивы коэффициентов коротких ДПФ соот- соответственно для множителей 3, 4, 8, 9, 16, COEF - действительный массив размера ND1 * * ND2 * ND3 * ND4, которому присваива- присваиваются коэффициенты множителей iV-точеч- ного ДПФ во время первого выполнения программы; INDX1, INDX2 - целые массивы размера N для хранения первоначальных и конечных пе- перестановок отображений соответственно; INIT - целая переменная, задаваемая пользова- пользователем программы. Она должна быть ну- нулем при первом использовании алгоритма и отлична от нуля в остальных случаях, IERR - целая переменная, сигнализирующая об ошибке IERR = 0 для удачного выполне- выполнения программы и IERR = -1 или -2 при неудовлетворительном завершении алго- алгоритма; N - длина преобразования; NA, NB,NC, ND- целые переменные для четы- четырех множителей (NA - крайний внешний, ND - крайний внутренний); ND1, ND2, ND3, ND4 - целые переменные, харак- характеризующие "расширение" множителей NA, NB, NC,ND соответственно (см.табл. 9.1), NMULT - целая переменная, равная произведе- произведению ND1, ND2, ND3 и ND4. Показывает число умножений; SR, SI -действительные размеры ND1 * ND2 * * ND3 * ND4 , в которые преобразуют- преобразуются XR, XI во время начальной переста- перестановки; XR, XI - соответственно действительные и мни- мнимые части входного массива данных. Преобразованные данные также помеща- помещаются в эти массивы путем конечной пе- перестановки. Сводка требований для пользователя программы. 1) Задайте входные последо- последовательности XR и XI и значения параметров N, INIT и IERR. 2) Вызовите АВПФ. При нервом вызове положите INIT = 0. 3) Ре- Результат получается в массивах XR и XI. Код ошибки — 0 для удачного выполнения и -1 или —2, если значение недопустимо или не было инициализировано. 4) После 242 первого вызова используйте ШГГ Ф О до тех пор, пока значение ТУне изменится. Тест-программа1. Управляющая програм- программа обеспечивает генерации) тест-сигнала, ДПФ которого известно аналитически. Для этой цели используется сигнал с линейной частотной модуляцией (ЛЧМ). Если длина преобразования iV-четная, то сигнал имеет следующий вид: Если же длина преобразования нечетная, выбирается следующий сигнал: х[п] = ехр [/*„ В обоих случаях известно, что ДПФ имеет постоянную амплитуду, равную \/Ж Таким образом, проверка АВПФ осуществляется сравнением амплитуды всех значений ДПФ с \fNvi распечаткой максимального откло- отклонения в процентах. Заключение. Нами была описана програм- программа на ФОРТРАНЕ для вычисления ДПФ, использующая "гнездовой" алгоритм Вино- Винограда. Была сделана попытка обеспечить вычислительно эффективную программу, но с целью упрощения структуры програм- программы пришлось пойти на некоторые компро- компромиссы. Например, все умножения АВПФ выполняются в отдельной подпрограмме MULT. Несколько более эффективная ре- реализация алгоритма будет обеспечивать со- сочетание вычисления в крайнем внутреннем модуле с умножением. Например, на рис. 1 Эта тест-программа измеряет вычислитель- вычислительную точность работающей программы АВПФ. Она, однако, не должна использоваться для того, что- чтобы определить, правильно ли отложен програм- программный код АВПф. Симметрия ЛЧМ-последователь- ности сохраняется даже после того, как последо- последовательность отображена в многомерный массив. Следовательно, операции, предшествующие умно- умножению, часто будут включать в себя вычитание равных значений, давая промежуточные результа- результаты, равные нулю. Однако многие возможные ошибки в программе также могут приводить к Кулевым промежуточным результатам и, следо- следовательно, не будут обнаружены этой простой тест-программой.
9.1 крайний внутренний модуль является 5-точечным множителем. Преимущество та- такого подхода заключается в том, что можно избежать некоторых преобразований памя- памяти (запись и хранение), которые требуют- требуются в нашей реализации программы. Более того, немного уменьшается объем памяти, необходимой для массивов SR и SI. Не- Недостатком, конечно, является то, что для каждого множителя в наборе { 2,3,4, 5,7, 8, 9, 16}, должен быть обеспечен добавочный блок программы, учитывая, что любой из множителей может быть крайним внутрен- внутренним. Это предположительно могло вдвое увеличить ддину программы. Другим возможным и полезным усо- усовершенствованием АВПФ является разра- разработка входных и выходных перестановок, которые производятся "на месте". Если бы это было возможно, массивы SR и SI могли бы "делить" память с XR и XI, при этом для приспособления к расширению данных в АВПФ были бы необходимы толь- только добавочные (ND1 * ND2 * ND3 * ND4 - — N) позиций. Для пользователя алгоритма для вычис- вычисления ДПФ только действительных после- последовательностей существует довольно про- простая модификация приведенной программы, использующая действительный характер входных данных. Подпрограммы PERM1, WEAVE 1 и MULT должны быть модифици- модифицированы таким образом, чтобы исключить все вычисления, связанные с массивом SI, который должен быть нулем до тех пор, пока не начнет работать подпрограмма WEAVE2. Это приведет к некоторому уменьшению времени счета алгоритма для вещественных данных. В заключение мы должны отметить, что приведенная программа является одной/ из первых попыток создания эффективной программы АВПФ '; вполне возможно, что будущие исследования, связанные с алго- алгоритмом Винограда, приведут к более эф- эффективным реализациям. 1 Мы благодарим Е. Л. Сивакса и М. Г. Эпель- мана, которые вставили в программу АВПФ про- пропущенный оператор и приложили много усилий цля отладки программы. - Прим. пер. С С С с с с с с— с— с 50 100 TEST PROGRAM TO EXERCISE THE WFTA SUBROUTINE THE TEST WAVEFORM IS A CHIRP WHOSE MAGNITUDE WHEN TRANSFORMED SHOULD BE A CONSTANT EQUAL TO THE SQRT(N) 150 COMMON NA)NBINC,ND,ND1,ND2,ND3,ND4 DOUBLE PRECISION PI,PIN,XN,XJ,XT REAL»U XJ?EO4O),XIEO4O) ENTER WFTA LENGTH AND NUMBER OF TIMES WFTA IS TO BE CALLED ШТЕF,100) FORMATdX,'LENGTH, NO. TIMES') READE,»)N,NOTIME WRITEF,150) N FORMATC LENGTH = ',15) IF(N .LE. 0) CALL EXIT PI=3.11»1592653589793DO XN=FLOAT(N) PIN=PI/XN GENERATE A CHIRP TEST SIGNAL THE CHIRP IS DIFFERENT FOR N EVEN AND N ODD IFB»(N/2).NE.N) PIN=2.0»PIN INIT=O DO 200 J=1,N XJ*(J-1)*(J-1) 243
XJ=XJ»PIN XTsDCOS(XJ) XR(J)=XT XT=DSIN(XJ) X1(J)=XT 200 CONTINUE С С CALL THE WFTA С DO 400 LL=1,N0TIME CALL WF.TA(N,XR,XI,INIT,IERR) IF(IERR.LT.0).GO TO 50 С С CHECK THE MAGNITUDE OF THE С TRANSFORMED CHIRP С DEVMAX=0.0 DO 350 J=1,N XMAG=XR(J)»XR(J)+XI(.l)»XI(J) DEV=(XMAG-XN)/XN DEV=100.0»ABS(DEV) IF(DEV.GT.DEVMAX)DEVMAX=DEV 350 CONTINUE С С PRINT OUT THE MAXIMUM DEVIATION (I) С WRITEF,300) DEVMAX 300 FORMATCU,'MAXIMUM DEVIATION = \F10.4,' PERCENT') INIT=1 XN=N»XN 400 CONTINUE GO TO 50 END SUBROUTINE WFTA(N,XR,XI,INIT,IERR) REAL»4 ) С Q С THE FOLLOWING TWO CARDS MAY ЧЕ CHANCED IF TflE MAXIMUM С DESIRED TRANSFORM LENGTH IS LESS THAM 50f0 С NOTE THAT 6*9• 11*18 = 10692 (EXPANSION ) REAL»1» SRACb9'^ , SI A069?) ,C0EFA069?) INTEGER INDX1E040),IHDX2E0«0) aiiiiii COMMON NA.NB.NC.ND.NDI.NDSjNDS.NDM С С TEST FOR INITIAL RUN С IFUNIT.EQ.O) CALL INISHL(N,COEF,XR,XI,INDX1,INDX2,IERR ) С IFCIERR.LT.0) RETURN M=NA»NB»NC»ND IF(M.EQ.N) GO TO 100 IERR=-2 RETURN С С PROGRAM NOT INITIALIZED FOR THIS VALUE OF N С 100 MULT=ND1»ND2»N03»ND4 С С — PERMUTE THE INPUT DATA С CALL PEBMKSR.SI ,XR,Xi , JwO>': ; 244
с С DO THE PRE-WEAVE MODULES С CALL WEAVE HSR, SI) С С DO THE NESTED MULTIPLICATIONS С CALL MULT(SR,SI,COEF,NMULT) С С DO THE POST-WEAVE MODULES С CALL WEAVE2(SR,SI) С С PERMUTE THE OUTPUT DATA С CALL PERM2(SR,SI,XR,XI,INDX2) RETURN END С THIS ROUTINE INITIALIZES THE WFTA PROGRAM С SO THAT SUCCESSIVE CALLS TO THE TRANSFORM С CALCULATION WILL BE AS EFFICIENT AS POSSIBLE. С FOR A FIXED VALUE OF THE TRANSFORM LENGTH, N. С THIS SUBROUTINE WILL BE EXECUTED ONLY ON THE С FIRST CALL TO THE WFTA ROUTINE. С С •••••••••••••••••••••••••••••••••••••••••••••••• С SUBROUTINE INISHL(N,COEF,XR,XI,INDX1,INDX2,IERR) REAL»4 COEFA),XRA),XIA) INTEGER S1,S2,S3,S4,INDX1A),INDX2A),P1 REAL»4 C03C),C04D),C08(8),C09A1),C016A8),CDAA8),CDBA1), 1 CDC(9),CDDF) COMMON NA,NB,NC,ND,ND1,ND2,ND3,ND4 С DATA STATEMENTS ASSIGN SHORT DFT COEFFICIENTS. С DATA С03Л.0,-1.5,-0.8660254038/ DATA C04/1.0,1.0,1.0,1.0/ DATA C08/1.0,1.0,1.0,-1.0,1.0,-0.7071067812, 1 -1.0,0.7071067812/ DATA C09/1.0,-1.5,-0,.8660254038,0.5,0.7660444431, 1 -0.1736481777,0.9396926208,-0.6427876097, 2 -0.984807753,0.3420201433,-0.8660254038/ DATA C016/1.0,1.0,1.0,-1.0,1.0,-0.707Ю67812,-1.0, 1 0.7071067812,1.0,0.5411961001,-0.7071067812, 2 -0.5411961001,-1.0,-1.306562965,0.7071067812, 3 1.306562965,-0.9238795325,0.3826834324/ DATA CDA/18»1./ DATA CDB/11»1./ DATA CDC/1.0,-1.1666666667,-0.4409585518,0.7343022012, 1 0.7901564685,-0.3408729306,-0.874842291, 2 0.0558542673,0.53'39693603/ DATA CDD/1.0,-1.25,-1.538841769,0.5590169944,0.363271264, 1 0.5877852523/ С С FOLLOWING SEGMENT DETERMINES FACTORS OF N AND CHOOSES C-^ THE APPROPRIATE SHORT DFT COEFFICIENTS. С IERR=O ND1 = 1 NAs1 NB=1 NC = 1 ND3= 1 245
ND=1 ND4s1 IF(N.LE.O) GO TO 190 IFA6»(N/16).EQ.N) GO TO 30 IF(8»(N/8>.EQ.N) GO TO 40 IFD»(N/4).EQ.N) GO TO 50 IFB»(N/2).NE.N) GO TO 70 ND1=2 NAs2 CDAB)=1.0 GO TO 70 30 ND1s18 DO 31 Js1,i8 31 CDA(J)=CO16(J) GO TO 70 10 KD1:8 NA = 8 DO 41 J=1,8 41 CDA(J)sC08(J) GO TO 70 50 ND1-4 NA=4 DO 51 Js1,4 51 CDA(J)=C04(J> 70 IFC»(N/3).NE.N) GO TO 120 IF(9#(N/9).EQ.N) GO TO 100 ND2=3 NB = 3 DO 71 J=1,3 71 CDB(J)=C03(J) GO TO 120 100 ND2=11 NB = 9 DO 110 J = 1 ,11 110 CDB(J)=C09(J) 120 IFG»(N/7).NE.N) GO TO 160 ND3=9 NC=7 160 IFE#(N/5).NE.N) GO TO 190 ND4:6 ND=5 190 M=NA»NB»NC»ND IF(M.EQ.H) GO TO 250 WRITEF,210) 210 FORMAT(• THIS N DOES NOT WORK1) IERRs-1 RETURN С С NEXT SEGMENT GENERATES THE DFT COEFFICIENTS С THE FLAG ARRAY. С 250 J=1 DO 300 N4:1,ND4 DO 300 N3=1,ND3 DO 300 N2=1,HD2 DO 300 Nisi,ND1 C0EF(J)»CDA(N1)»CDB(N2)»CDC(N3)»CDD(N4) 300 CONTINUE С С FOLLOWING SEGMEN; GENERATES INPUT C-.. INDEXING MAP С S1=O S2=0 246
S3=0 54 = 0 55 = 0 J = 1 NU=NB»NC»ND NV=NA»NC»ND NW=NA»NB»ND NY=NA»NB»NC K = 1 DO 440 N4=1,ND DO 430 N3=1,NC DO 420 N2=1,NB DO 410 N1=1,NA 405 IF(K.LE.N) GO TO 408 K=K-N GO TO 405 408 INDXt(J)=K J=J + 1 41C K=K+NU 420 K=K+NV 430 K=K+NW 440 K=K+NY С С FOLLOWING SEGMENT GENERATES OUTPUT С INDEXING MAP С M = 1 IF(NA.EQ.I) GO TO 530 520 P1=M»NU-1 IF((P1/NA)»NA.EQ.P1) GO TO 510 M=M*1 GO TO 520 510 SiiPI+1 530 IFCNB.EQ.1) GO TO 540 M = 1 550 P1=M»NV-1 IF((P1/№B)»NB.EQ.P1) GO TO 560 M=M + 1 GO TO 550 560 S2=P1+1 540 IFCNC.EQ.1) GO TO 630 M = 1 620 P1=M»NW-1 IF((P1/NC)»NC.EQ.P1) GO TO 610 M=M + 1 GO TO 620 610 S3=P1*1 630 IFCND.EQ.1) GO TO 660 M = 1 640 P1=M»NY-1 IF((P1/ND)»ND.EQ.P1) GO TO 650 M=M*1 GO TC 640 650 S4=P1+1 660 J=1 DO 810 N = 1 ,ND DO 810 N3=1,NC DO 810 N2=1,NB DO 810 N1=1,NA INDX2(J)=S1»(N1-1)*S2»(N2-1)*S3#(N3-1)*S4»(N4-1)*1 900 IF(IIHDX2(J).LE.N) GO TO 910 INDX2(J)=INDX2(J)-N GO TO 900 910 J5J4.I 810 CONTINUE RETURN END 247
С SUBROUTINE TO PERFORM PERMUTATION OF THE С INPUT DATA ACCORDING  THE С CHINESE REMAINDER THEOREM С (SINO-CORRESPONDENCE) С c SUBROUTINE PERM1(SR,SI,XR,XI,INDX1) COMMON NA,NB,NC,ND,ND1,ND2,ND3,ND4 REAL»U XRA),XIA)S()SIA) INTEGER INDXK1 ) INC1=ND1-NA INC2=ND1»(ND2-;NB) INC3=ND1»ND2»(ND3-NC) DO 40 N4:1,ND DO 30 N3=1,NC DO 20 N2=1,NB DO 10 N1=1,NA SR(J)=XR(INDX1(K)) SI(J)=XI(INDX1(K)) K=IU1 10 J=J*1 20 J=J*INC1 30 J=J*INC2 HO J=J*INC3 RETURN END С SUBROUTINE TO PERMUTE THE С TRANSFORMED DATA ACCORDING TO THE С MAPPING OF THE CHINESE REMAINDER THEOREM С С ••••••*••••••*••*••••*»••§•••••••••••••••• SUBROUTINE PERM2(SR,SI,XR,XI,INDX2) COMMON NA,NB,NC,ND,ND1,JiD2,ND3,NDi» REAL»t XRA),XIA),SRA INTEGER INDX2A) INC1=ND1-NA INC2=ND1»(ND2-NB) INC3=ND1»ND2»(ND3-NC) DO 40 N4=1,ND DO 30 N3=1,NC DO 20 N2=1,NB DO 10 N1=1,NA XR(INDX2(K))=SR(J) XI(INDX2(K))=SI(J) K=K*1 10 J=J+1 20 J=J*INC1 30 J=J*INC2 40 J=J*INC3 RETURN END С ALL MULTIPLICATIONS OF THE WFTA С ARE PEflFORMED IN THIS ROUTINE С COMPLEX DATA ARE MULTIPLIED BY С REAL COEFFICIENT'S С С ••••*•••••••••••>>•««»«>••«««»«>•••**> SUBROUTINE MULT (SR,SI,COEF,NMULT) COMMON NA,NB(NC,ND,NDl,ND2,ND3,ND4 REAL»U SRA),SIA),C0EFA) DO 10 Js1 ,NMULT SR(J)=SR(J)»COEF(J) SI(J)=SI(J)»COEF(J) 10 CONTINUE RETURN END
SUBROUTINE WEAVEKSR.SI) COMMON NA,WB,NC,NDIND1,ND2,ND3,NDI| REAL»4 Q(8),TA6) REAL»U SRA ),SIA) IF(NA.EQ.I) GO TO 300 IFCNA.NE.2) GO TO 800 THE FOLLOWING CODE IMPLEMENTS THE 2 POINT PRE-WEAVE MODULE 220 230 240 800 NLUP2=2»(ND2-NB) NLUP23=2»ND2»(ND3-NC) NBASE=1 DO 240 N4=1,ND DO 230 N3=1,NC DO 220 N2=1,NB NR1=NBASE+1 T0=SR(NBASE)+SR(NR1) SR(NR1)=SR(NBASE)-SR(NR1) SR(NBASE)=TO T0=SI(NBASE)+SI(NR1) SI(NR1)=SI(NBASE)-SI(NR1) SI(NBASE)=TO NBASE=NBASE+2 NBASE=NBASE-«-NLUP2 NBASE=NBASE+NLUP23 IF(NA.NE.8) GO TO 1600 THE FOLLOWING CODE IMPLEMENTS THE 8 POINT PRE-WEAVE MODULE NLUP2=8»(ND?-NB) NLUP23=8»ND2»(ND3-NC) NBASE=1 DO 840 NU=>,ND DO 830 N3=1fNC DO 820 N2=1,NB NR1:NBASE+1 NR2=NR1+1 NR3=NR2+1 NR4=NR3+1 NR5=NR4+1 NR6=NR5+1 NR7=NR6+1 T3=SR(NR3)+SR(NR7) T7=SR(NR3)-SR(NR7) T0=SR(NBASE)+SR(NR4) SR(NRU)=SR(NBASE)-SR(NR4) T1=SR(NR1)+SR(NR5) T5=SR(NR1)-SR(NR5) T2=SR(NR2)+SR(NR6) SR(MR6)=SR(NR2)-SR(NR6) SR(NBASE) = T0+T'2 820 830 810 1600 SR(NR2)=T0-T2 SR(NR1)=T1+T3 SR(NR3)=T1-T3 SR(NR5)=T5+T7 SR(HR7)=T5-T7 T3«SI(HR3)+SI(NR7) T7«SI(NR3)-SI(HR7) TOxSI(MBASE)+SI(MRM) SI(NR4)xSI(NBASE)-SI(MR4) T1xSI(N.Ri)»SI(NR5) T5*SI(NR1)-SI(NR5) T2xSI(NR2)»SI(NR6) SI(NR6)>SI(HR2)-SI(HR6) SI(MBASE)*T0*T2 SI(NR2)=T0-T2 SI(HR1)=TUT3 SI(NR3)«T1-T3 SL(MR5)=T5*T7 SI(NR7)»T5-T7 NBASE=NBASE+8 NBASE=NBASE+MLUP2 NBASErMBASE*NLUP23 IFCNA.NE.16) GO TO 300
с •**•*••*••****•**************•**•******••*****••¦•••¦ с с THE FOLLOWING CODE IMPLEMENTS THE 16 POINT PRE-WEAVE MODULE с С я»*»*»»»»*»»»»»»»»»»»*»*»»»»»»»»»»*»»»»»»**»»*»»***»* С 1645 1650 NLUP2=18»(ND2-NB) NLUP23=18»ND2»(ND3-NC) NBASE=1 DO 1640 N4=1,ND DO IOjO N3=1 , nl« DO 1620 N2=1,NB NR1=HBASE+1 NR2=NRi+1 NR3*NR2+1 NR4=NR3+1 NR5=NH4+1 NR6=NR5+1 NR7=NR6+1 NR8=NR7+1 NR9=NR8+1 NR10=NR9+1 NR1UNR10 + 1 NR12=NR1U1 NR13=NR12+1 NR14=NR13+1 NR15=NR14+1 NR16=NR15+1 NR17=NR16+1 JBASE=NBASE DO 1645 J=1,8 T(J ) = SR(JBASE)*SR(JBASE+8) T(J+8)=SR(JBASE)-SR(JBASE+8) JBASE=JBASE+1 CONTINUE DO 1650 J=1 4 Q(J)=T(J)*T(J+4) Q(J+4)=T(J)-T(J+4) CONTINUE SR(NBASE)=QA)+QC) SR(NR2)sQA)-QC) SR(NR1)«QB)+QD) SR(NR3)«QB)-QD) SR(NR5):QF)+Q(8) SR(NR7)«QF)-Q(8) SR(NR4)sQE) SR(NR6)«QG) SR(NR8)«T(9) 1745 1750 1620 1630 1640 300 SR(NR9)=TAO)+TA6) SR(NR15)«TAO)-TA6) SR(NR13)«TA4)+TA2) SR(NR11)sTA4)-TA2) SR(NR17)»SR(NR11)+SR(NR15) SR(NR16)=SR(NR9)>SR(NR13) SR(NR10)sTA1)*TA5) SR(NR14)sTA1)-TA5/ SR(NR12)=TA3) JBASEsNBASE DO 1745 J = 1 ,8 T(J) = SI (JBASE ) + SI(JBASE+8) T(J+8)=SI(JBASE)-SI(JBASE+8) JBASEsJBASE+S CONTINUE DO 1750 J=1,U Q (J )=T (J )+T (Л +4 ) Q(J+4 ) = T(J )-T(J-t«) CONTINUE SI(NBASE) = QA )+QC) SI(NR2)=QA)-QC) SI(NR1)=QB)+QD) SI(NR3)=QB)-QD) SI(NR5)=QF)+Q(8) SI(NR7)=QF)-Q(8) SI(NR")=QE) SI(NR6)=QG) SI(NR8)=T(9) SI(NR9)=TA0)+TA6) SI(NR15)=TAO)-TA6) SI(NR13)=TA4)+TA2) SKNR11 ) = TA4)-TA2) SI(NR17)=SI(NR11)+SI(NR15) SI(NR16)=SI(NR9)+SI(NR13) SI(NR1O)=TA1)+TA5) SI(NR1«)=TA1)-TA5) SI(NR12)=TA3) NBASE=NBASE+18 NBASE=NBASE+NLUP2 NBASE=NBASE+NLUP23 IF(NB*.FQ.1) GO TO 700 IF(NB.NE.3) GO TO 900 •IIIIIIMIIIIIIIIIIIIIIIIIIMIIMIIUIHMOIItllHIl THE FOLLOWING CODE IMPLEMENTS THE 3 POINT PRE-WEAVE MODULE IIIOHIIIIIIIIIII«l>MIIIMIIIIIII>l>ltllllll<ltllll« NLUP2=2»ND1 NLUP23=3»ND1»(ND3-NC) NBASE=1 NOFF=ND1 DO 340 N4r1,ND DO 330 N3=1,NC DO ЗЮ N2=1 ,ND1 NR1=NBASE*N0FF NR2=NR1+NOFF T1=SR(NR1)*SR(NR2) 310 330 340 SR(MR2)=SR(NR1)-SR(NR?) SR(NR1)=T1 T1=SI(NR1)+SI(NR2) SI (NBASE) = S1(NBASE)+T1 SI(NR2)=SI(NR1)-SI(NR2) SKNR1 )-Ti NBASE=NBASE+1 NBASE=NBASE+NLUP2 NBASE=NBA3E+NLUP23 250
900 IFCNB.NE.9) GO TO 700 С с С THE FOLLOWING CODE IMPLEMENTS THE 9' POINT PRE-WEAVE MODULE С С NLUP2=1O»ND1 NLUP23=11»ND1»(ND3-NC) NBASE=1 NOFF=ND1 DO 940 N4=1,ND DO 930 N3=1,NC DO 910 N2=1,ND1 NR1=NBASE+N0FF NR2=NR1+NOFF NR3=NR2+NOFF NR4=NR3+N0FF NR5=NR4+NOFF NR6=NR5+NOFF NR7=NR6+NOFF NR8=NR7+NOFF NR9=NR8+NOFF NR10=NR9+NOFF T3=SR(NR3)+SR(NR6) T6=SR(NR3)-SR(NR6) SR(NBASE)=SR(NBASE)+T3 T7=SR(NR7)+SR(NR2) T2=SR(NR7)-SR(NR2) SR(NR2)=T6 T1=SR(NR1)+SR(NRB) T8=SR(NR1)-SR(NR8) SR(NR1)=T3 T4=SR(NR4)+SR(NR5) T5=SR(NR4)-SR(NR5) SR(NR3)=T1+T4+T7 SR(NR«)=T1-T7 SR(NR5)=T4-T1 SR(NR6)=T7-T4 SR(NRiO)sT2+T5+T8 SR(NR7)=T8-T2 SR(NR8)=T5-T8 SR(NR9)=T2-T5 T3=SI(NR3)+SI(NR6) T6=SI(NR3)-SI(NR6) SI(NBASE)=SI(NBASE)+T3 T7=SI(NR7)+SI(NR2) T2=SI(NR7)-SI(NR2) SI(NR2)=T6 T1=SI(NR1)+SI(NR8) T8=SI(NR1)-SI(NR8) SI(NR1)=T3 TU=SI(NR4)+SI(NR5) T5=SI(NR4)-SI(NR5) SI(NR3)=T1+T4+T7 SI(NR4)=T1-T7 SI(NR5)=T4-T1 SI(NR6)=T7-T4 SI(NR10)=T2+T5+T8 SI(Nit7) = T8-T2 SI(NR8)=T5-T8 SI(NR9)=T2-T5 910 NBASE=NBASE+1 930 NBASE=NBASE+NLUP2 940 NBASE=NBASE+NLUP23 251
700 IFCNC.NE.7) GO TO 500 С С С THE FOLLOWING CODE IMPLEMENTS THE 7 POINT PRE-WEAVE MODULE С С NOFF=ND1»ND2 NLUP2r8»N0FF DO 740 N4=1,ND DO 710 N1 = 1 ,NOFF NR1=NBASE+N0FF NR2=NR1+N0FF NR3=NR2+NOFF NR4=NR3+NOFF NR5=NR4+NOFF NR6=NR5+N0FF NR7=NR6+NOFF NR0=NR7+NOFF T1=SR(NR1)+SR(NR6; T6 = SR(NR1)-SP.(NK6) T3=SR(NR4)-?.RINR3) T2=SR(NR2)+SR(NR5) T5sSR(NR2)-SR(NR5) SR(NR5)=T6-T3 SR(NR2)=T5+T3+T6 SR(NR6)=T5-T6 SR(NR8)=T3-T5 SR(NR3)=T2-T1 SR(NR7)=T4-T2 SR(NBASE)-SR(NBASE)+T1 SR(NR?)=T1 T1=SI(NR1)+SI(NR6) T6sSI(MRi)-SI(NR6) T4=SI(NR")+SI(NR3) T3=SI(NR4)-SI(NR3) T2=SI(NR2)+SIfNR5) SI 3 SI(-NR2) = T5+T3+T6 SI(NR6)=T5-T6 SI(NR8)-T3-T5 SI(NR3)=T2-T1 ТЫ ПТЧ+Т2 SI (NBASE) = SI(NBAS?)+T1 SKNRD-T1 710 NBASE=NBASE+1 740 NBASE=NBASE+NLUP2
500 IFCND.NE.5) RETURN С С С I»»»»»»»»»»»»»»»»»»»»»»»»»»»*»»»»»»»»»!*»»»»**»»»»»** THE FOLLOWING CODE IMPLEMENTS THE 5 POINT PRE-WEAVE MODULE NOFF=ND1*ND2*ND3 NBASE=1 DO 510 N1=1,N0FF NR1=NBASE+N0FF NR2rNR1+N0FF NR3=NR2+NOFF NR4=NR3+NOFF NR5=NR4+N0FF T4rSR(NR1)-SR(NR4) T1=SR(NR1)+SR-(NR4) T3=SR(NR3)+SR(NR2) T2=SR(NR3)-SR(NR2) SR(NR3)=T1-T3 SR(NR1)=T1+T3 SR(NBASE)=SR(NBASE)+SR(NR1) SR(NR5)=T2+TU 510 SR(NR2)=T4 SR(NR4)=T2 T4=SI(NR1)-SI(NR4) T1=SI(NR1)+SI(NR4) T3=SI(NR3)+SI(NR2) T2=SI(NR3)-SI(NR2) SI(NR3)=T1-T3 SI(NR1)=T1+T3 SI(NBASE)=SI(NBASE)+SI(NR1) SI(NR5)=T2+T4 SI(NR2)=T4 SI(NR4)=T2 NBASE=NBASE+1 RETURN END SUBROUTINE WEAVE2(SR,SI) REALM SRA),SIA) COMMON NA,NB,NC,ND,ND1,ND2,ND3,ND4 REAL*4 Q(8),TA6) IFCND.NE.5) GO TO 700 THE FOLLOWING CODE IMPLEMENTS THE 5 POINT POST-W€AVE MODULE NOFF=ND1»ND2*ND3 NBASE-1 DO 510 H1=1,N0FF NR1rNBASE+N0FF NR2sNRUN0FF NR3=NR2+NOFF NR4=NR3+N0FF NR5=NR4+N0FF T1sSR(NBASE)+SR(NR1) T3=T1-SR(NR3) T1=T1+SR(NR3) T4=SI(NR2)+SI(NR5) T2sSI(NR4)+SI(NR5) SR(NR1)=T1-T4 SR4=T1+T4 510 SR2=T3+T2 SR(NR3)=T3-T2 T1;SI(NBASE)+SI(NR1) T3=T1-SI(NR3) T1=T1+SI(NR3) T4=SR(NR2)+SR(NR5) T2=SR(NR4)+SR(NR5) SI(NR1)=T1+T4 SI(NR4)=T1-T4 SI(NR2)=T3-T2 SI(NR3)=T3+T2 SR(NR2)=SR2 SRI(NR4)=SR4 NBASE=NBASE+1
700 IFCHC.HE.7) GO TO 300 С С ft*************************************************** с С THE FOLLOWING CODE IMPLEMENTS THE 7 POINT POST-WEAVE MODULE С С ft*************************************************** С N0FF=ND1»ND2 SR5=T2+T5 NBASE=1 Sfi(NR4) = T4-T3 NLUP2=8»N0FF SR(NR3)=T4+T3 DO 740 N4 = 1,ND T 1=SI(NR1)+SI(NBASE) DO 710 N1=1,N0FF T2*T1-SI(NR3)-SI(NR4) NRUNBASE+NOFF T4=T1+SI(NR3)-SI(NR7> NR2=NR1+N0FF T1=T1+SI(NR4)+SI(NR7) NR3=NR2+N0FF T6»SR(NR2)+SR(NR5)+SR(NR8) NR4=NR3+N0FF T5=SR(NR2)-SR(NR5)-SR(NR6) NR5=NR4+NOFF T3=SR(NR2)+SR(NR6 )-SR(NR8) NR6=NR-5+NOFF SI(NR1 )=T 1+T6 NR7=NR6+NOFF SI(NR6 ) = T 1-T6 NR8=NR7+H0FF SI(NR2)=T2+T5 T1=SR(NR1)+SR(NBASE) SI(NR5)=T2-T5 T2=T1-SR(NR3)-SR(NR4) SI(NR4)=T4+T3 T4=T1+SR(NR3)-SR(NR7) SI(NR3)=T4-T3 T1=T1+SR(NR4)+SR(NR7) SR(NR2)=SR2 T6=SI(HR2)+SI(NR5)+SI(HR8) SR(NR5)=SR5 T5=SI(NR2)-SI(NR5)-SI(NR6) SR(NR6)=SR6 T3=SI(NR2)+SI(NR6)-SI(NR8) 710 NBASE=NBASE+1 SR(NR1)=T1-T6 740 NBASE=NBASE+NLUP2 SR6=T1+T6 300 IF(NB.EO.I) GO TO 400 SR2=T2-T5 IF(NB.NE.3) GO TO 900 С Q вв»»»ввввв*»»ввв»«ВВ»В**в*в»в«*»ВВВ*ВВ»*ВВВВВВ««»ВВ*» с С THE FOLLOWING CODE IMPLEMENTS THE 3 POINT POST-WEAVE MODULE С С в»»»»»»»в*»»»в»»вввв»»»»ввв»»в»вв»в»»»в»»»ввв«в»в»в»» с NLUP2=2*ND1 SR(NR1)-T1-SI(NR2) NLUP23r3»ND1*(ND3-NC) SR2=1 1+S1(NR2) NBASE=1 T1=SI(NBASE)+SI(NR1) N0FF=ND1 SI(NR1)-T1+SR(NR2) DO 3U0 N5=1,ND SI(NP2)=T1-5R(NR2) DO 330 N4=1,NC 5P(NP2)=SR2 DO 310 N2=1,ND1 310 NBASE=NBASE+1 NRUNBASE+NOFF 330 NBASE=NBASE+NLUP2 NR2=NR1+NOFF 340 NBASE=NBASE+NLUP23 T1=SR(NBASE)+SR(NR1) 900 IFCNB.NE.9) GO TO 400 С Q B*B«***»nB»*?*»B»»B**»B**»BIIB*»BB»*Bt»BB«»»»B»««*lt«»B с С THE FOLLOWING CODE IMPLEMENTS THE 9 POINT POST-WEAVE MODULE С С B«**B*B******BBB»**ft*B«»BBIII*ltlt**BBB**»B!t«»B!>*<t»t»?B* с NLUP2=10»ND1 NLUP23=11»ND1»(ND3-NC) NBASEsi N0FF=ND1 DO 940 N4=1,ND DO 930 N3=1,NC DO 9Ю N2 = 1 ,ND1 NR1=NBASE+N0FF NR2=NR1+NOFF NR3=NR3+N0FF
NR4=NR3+NOFF NR5=NR«+N0FF NR6=NR5+NOFF NR7=NR6+NOFF NR8=NR7+NOFF NR9=NR8+NOFF NR10=NR9+NOFF T3=SR(NBASE)-SR(NR3) T7=SR(NBASE)+SR(NR1) SR(NBASE)=SR(NBASE)+SR(NR3)+SR(NR3) T6=T3+SI(NR1O) SR(NR3)=T3-SI(NR1O) TU=T7+SR(NR5)-SR(NR6) T1=T7-SR(NR«)-SR(NR5) T7=T7+SR(NR«)+SR(HR6) SR(NR6)=T6 T8=SI(NR2)-SI(NR7)-SIHR8) T5=SI(NR2)+SI(NR8)-SI(NR9) T2=SI(HR2)+SI(HR7)+SI(HR9) SR(MR1)=T7-T2 SR8=T7+T2 SR(MR4)=T1-T8 SR(MR5)=T1+T8 SR7=T4-T5 SR2=T4+T5 T3=SI(NBASE)-SI(NR3) T7=SI(HBASE)+SI(NR1) 5I(NBASE)=SI(NBASE)+SI(NR3)+SI(NR3) T6=T3-SR(HR1O) SI(MR3)=T3+SR(HR1O) T4=T7+SI(HR5)-SI(HR6) T1=T7-SI(NR4)-SI(HR5) T7=T7+SI(NR4)+SI(HR6) SI(MR6)=T6 T8=SR(HR2)-SR(NR7)-SR(NR8) T5=SR(HR2)+SR(NR8)-SR(NR9) T2=SR(HR2)+SR(HR7)+SR(HR9) SI(MR1)=T7+T2 SI(NR8)=T7-T2 SI(MR4)=T1+T8 SI(NR5)=T1-T8 T SI(NR2)=T4-T5 SR(NR2)=SR2 SR(MR7)=SR7 SR(MR8)=SR8 910 NBASE=NBASE+1 930 NBASE=NBASE+NLUP2 940 NBASE=NBASE+NLUP23 400 IF(NA.EQ.I) RETURN IF(MA.HE.H) GO TO 800 С С ••••••••••••••••••••••••••»*•••••••••••¦••••••••••••« с С THE FOLLOWING CODE IMPLEMENTS THE 4 POINT POST-WEAVE MODULE С q ••••••••••••••••••••••••••••••»••••••••¦••••••••••••• С NLUP2=4»(ND2-NB) NLUP23='*iND2»(ND3-NC) NBASE=1 DO ЧЧО N4=1,ND DO «30 N3=1,NC DO 420 N2=1,NB NR1=NBASE+1 NR2rNRU1
Э в § * ч * * * is * в ;; " * к e » * >j s- • s i * « и •* * с *..t» я t ¦ 4 -s ', ¦., * s # а 8 » « й а * » з »t * « 2 31П0ОЫ ЗАУЗЙ-lSOd I!«ICrf 91 л ИI SlK3W3'2dWl лЗОЭ i.'ff ).1O1"iOd 3H1 Э D Э 0091 Otr8 9i+hl = ( IHN) «S 8+3SV8N=3SVaN 028 <9dmQHN) MSZl 9MS=(9KN)MS (9aNIS-(iaN)HS=91 SHs(c«N) 9i-tri=(?aN)is (Sasoas+(t?a»ois-t!X 28)IS?l 9Nl2N 0?8 00 (iaN)IS+CSV8N)IS=CSVaNJIS ON'l=eN 0?8 00 (IHN)IS-CSV8H)IS=H ON'L = hN Ol?8 00 i Э ffff«ffffffffffffff-*ffff««fffffffffffffffffffffffffffff«fflff«ffffffffffffffffffff«ffff«««l« 3 D 3AV3M-1S0J INIOd 8 3H1 SlN3W31dWI 300D ONIMOnnoi 3H1 Э D 0 D 009i 01 00 (8'3N*VN)iI 008 E2dtnN+3SVaN--3SV8N Oft ft O?ft 02ft ui+ou=CSvgN)iS t (?aN)is-(iaN)iss€ii (?«N)as-(iaN)as=?ai (?aN)as+(iaN)as=iai
DO 1640 N4=1,ND DO 1630 N3=1,NC DO 1620 N2=1,NB NR1=NBASE+1 NR2:NRU1 NR3sNR2+1 NR4=NR3+1 NR5=NR4+1 NR6=NR5+1 NR7aNR6+1 NR8=NR7+1 NR9=NR8+1 NR10=NR9+1 NR11=NR10+1 NR12=NR11+1 NR13=NR12+1 NR14=NR13+1 MR15=NR14+1 NR16=NR15+1 NR17=NR16+1 TB)=SR(NBASE)-SR(NR1) SR(NBASE)=SR(NR1)+SR(NBASE) TD)=SR(NR2)+SI(NR3) TC)=SR(NR2)-SI(NR3) TF)sSR(NR4)+SI(NR5) TE)=SR(NR4)-SI(NR5) T(8)=-SI(NR6)-SR(NR7) TG)=-SI(NR6)+SR(NR7) T(9)=SR(NR8)+SR(NR14) TA5)=SR(NR8)-SR(NR14) TA3)=-SI(NR10)-SI(NR12) TA1)=SI(NR10)-SI(NR12) TA6)=SR(NR15)-SR(NR17) TA2)=SR(NR11)-SR(NR17) TAO)=-SI(NR9)-SI(NR16) TA«)=-SI(NR16)+SI(NR13) SR(NR2)=TE)+TG) SR6=TE)-TG) SR1O=TF)+T(8) SR(NR14)-TF)-T(8) QG)=T(9)+TAO) Q(8)=T(9)-TAO) QB)=TA1)-T QD)=TA4)+TA5) QE)=TA5)-TA4) QC)=TA3)+TA6) QF)=TA3)-TA6) SR(HR1)=QC)+QG) SR(NR7)=QG)-QC) SR9=Q(8)+QF) SR(NR15)=Q(8)-QF) SR3»QD)-QA) SR13=QB)+QE) SR11=QE)-QC2) SR(NR8)=TB) SR<NR4)=TC) SR12rTD) TB) = SI(NBASE)-SI (NR1 ) SI(NBASE)=SI(NR1)+SI(NBASE) TD)=SI(NR2)-SR(NR3) TC)=SI(NR2)+SR(NR3) TF)=SI(NR4)-SR(NR5) TE) = SKNRif)+SR(NR5) T(8)=SR(NR6)-SI(NR7)
TG)=SR(NR6)+SI(NR7) T(9)=SI(NR8)+SI(NR14) TA5)=SI(NR8)-SI(NR14) TA3)=SR(NR10)+SR(NR12) TA1 )=SR(NR12)-SR(NR1O) TA6)=SI(NR15)-SI(NR17) TA2) = SI(NR11 )-SI(NRi7) TA0)=SR(NR9)+SR(NRi6) TA4) =SR(NR16) -SRJNR13) SI(NR2)rTE)+TG) SI(NR6)=TE)-TG) SI(NR1O)=TF)+T(8) SI(NR14)=TF)-T(8) QG)=T(9)+TA0) Q(8)»T(9)-TA0) QA ) = TA1 )+TA2) QB)=TA1)-TA2) QD) = T(U)+TA5) QE)=TA5)-TA4) QC)=TA3)+TA6) QF) = TA3)-TA6) SI(NR1)=QC)+QG) SI(NR7)=QG)-QC) SI(NR9)=Q(8)+QF) SI(NR15)=Q(8)-QF) SI(NR5)=QA)+QD) SI(NR3)=QCO-QA) SI(NR13)=QB)+QE) SI(NR11)sQE)-QB) SI(NR8)=TB) SI(NR4)=TC) SI(NRi2)sTD) SR(NR3)=SR3 SR(HR5)=SR5 SR(NR6)=SR6 SR(NR9)=SR9 SR(NR1O)=SR1O SR(NR11)sSRi1 SR(NR12)sSR12 SR(HR13)=SR13 1620 NBASEsNBASE+18 1630 NBASEsHBASE+NLUP2 1640 NBASE=NBASE+NLUP23 RETURN END
СПИСОК ЛИТЕРАТУРЫ [1] KOLBA D. P., and T. W. PARKS. "A Prime Factor FFT Algorithm Using High Speed Con- Convolution." IEEE Trans, on Acoustics, Speech, and Signal Processing ASSP-25,(August 1977): 281 - 94. [2] RADER С. М. "Discrete Fourier Transforms When the Number of Data Samples is Prime." Proc. IEEE 56 (June, 1968): 1107 - 1108. [3] AGARWAL R. C, and J. W. COOLEY. "New Algorithms for Digital Convolution." IEEE Trans, on Acoustics, Speech, and Signal Pro- Processing ASSP-25, No. 5 (October 1977): 392 - 409. [4] WINOGRAD S. "On Computing the Discrete Fourier Transform." Mathematics of Compu- Computation 32 (January 1978): 175 - 199. [5] GOOD I. J. "The Relationship between Two Fast Fourier Transforms." IEEE Trans, on Computers C-20 (March 1971): 310 - 17. [6] POLLARD J. M. "The Fast Fourier Trans- Transform in a Finite Field." Mathematics of Com- Computation 25 (April 1971): 365 - 74. [7] AGARWAL R. С and С S. BURRUS. "Fast Convolution Using Fermat Number Trans- Transforms with Applications to Digital Filtering." IEEE Trans, on Acoustics, Speech, and Sig- Signal Processing ASSP-22 (April 1974): 87 - 97. [8] , and . "Fast One-Dimensional Con- Convolution by Multidimensional Techniques." IEEE Trans, on Acoustics, Speech, and Sig- Signal Processing ASSP-22 (February 1974). 1 - 10. [9] McCLELLAN J. H. "Hardware Realization of a Fermat Number Transform " IEEE-Trans, on Acoustics, Speech, and Signal Processing ASSP-24 (June 1976): 216 - 25. [10] LEIBOWITZ L. M. "A Simplified Binary Arithmetic for the Fermat Number Trans- Transform." IEEE Trans, on Acoustics, Speech, and Signal Processing ASSP-24 (October 1976). 356-59. [11] REED I. S., and Т. К. TRUONG. "The Use of Finite Fields to Compute Convolutions" IEEE Trans, on Information Theory IT-21 (March 1975): 208 - 213. [12] NUSSBAUMER H. J "Digital Filtering Using Complex Mersenne Transforms." IBM Journal of Research and Development 20 (September 1976). 498 - 504. [13] WINOGRAD S. "Some Bilinear Forms Whose Multiplicative Complexity Depends on the Field of Constants" Mathematical Systems Theory 10 (September 1977). 169 - 80. [14] AGARWAL R. C, and С S. BURRUS. "Fast Digital Convolutions Using Fermat Transforms." in SouthwestlEEE Conference Record Houston, Texas: April 1973. pp. 538 - 43. [15] , "On the Realization of Digital Filters." Ph. D. dissertation, Rice University, 1973. [16] , and С S BURRUS. "Number-Theore- "Number-Theoretic Transforms to Implement Fast Digital Con- Convolution." Proc. IEEE 63 (April 1-975): 556 - 60. {17] , and J. W. COOLEY. "Some New Algo- Algorithms for Fast Convolution by Multidimen- Multidimensional Techniques." In IEEE Arden House Workshop on Digital Signal Processing. Harri- N. Y. February 1976. [18] , and . "Efficient Implementation of One-Dimensional Convolutions by Multidimen- Multidimensional Techniques." Proc. EASCON-76, Sep- September 1976,156. [19] , and . "New Algorithms for Digital Convolution." In IEEE Int. Conf. on Acoustics, Speech, and Signal Processing, pp. 360 - 62. Hartford, Conn.: May 9 - 11, 1977. [20] ALLWRIGHT J. С "Real Factorization of Noncyclic Convolution Operators with Appli- Applications to Fast Convolution." Electronics Let- Letters 7 {December 1971): 718 - 19. [21] BAILEY D. "Winograd's Algorithm Applied to Number Theoretic Transforms." Electronics Letters 13, (September 1, 1977): 548 - 49. [22] BERGLAND G. D~. "A FFT Algorithm Using Base-8 Iterations." Mathematics of Computa- Computation 22 (April 1968)' 275 - 79. [23] BERLEKAMP E.- R. Algebraic Coding Theory. New York. McGraw-Hill, 1968. [24] BERNSTEIN R. "Schnelle Faltung mit der Rader Transformation." Diplomarbeit, Institut fur Nachrichtentechnik, Universitdt Erlan- gen-Nurnbefg, 1974. [25] BIRKHOFF G., and S. MACLAINE. A Survey of Modern Algebra. New York Macmillan, 1953, pp. 370-78. [26] BLUESTEIN L. I. "A Linear Filtering Approach to the Computation of Discrete Fourier Trans- Transform." IEEE Trans, on Audio and Electro- acoustics, 18 A970): 451 - 56. [27] BONNEAU R. J. "A Class of Finite Computa- Computation Structures Supporting the Fast Fourier Transform " Project MAC, Memo #31, March 1973. [28] BRENNER N. "Algorithm 467, Matrix Trans- Transposition in Place (Fl) " Communications ACM 16 (November 1973). 692 - 94 259
[29] COHN-SFETCU S., and J. E. GIBBS. "Harmo- "Harmonic Differential Calculus and Filtering in Ga- Galois Fields." In IEEE Intl. Conference on Aco- Acoustics, Speech, and Signal Processing, pp. 148 — 53, Philadelphia: April, 1976. [30] , "Multiplicative Convolutions and Fou- Fourier Transforms." In IEEE Intl. Symposium on Information Theory, p. 94. Cornell Uni- University, Ithaca, N. Y.. October, 1977 [31] COOLEY J. W., and J. W. TUKEY. ''An Algo- Algorithm for the Machine Computation of Complex Fourier Series." Mathematics of Computation (April 1965): 297 - 301. [32] , P. A W. LEWIS, and P. D. WELCH. "Historial Notes on the FFT." IEEE Trans, on Audio andElectroacousticS AU-15 (June 1967)- 76 - 79. [33] CONWAR J. H , and M. J. T GUY. "A Tabu- Tabulation of Some Information Concerning Fini- Finite Fields." In R. F. Churchhouse and J. C.Herz, eds, Computers in Mathematical Research, pp. 37 - 50. North Holland: 1968. [34] DAVIS W. F. "A Class of Efficient Convolu- Convolution Algorithms " In Proc. Symp. Applications of Walsh Functions, pp; 318 - 29. Washington, D. C: March 1972. [35] DICKSON L. E. History of the Theory of Numbers, p. 376. Washington, D. C: Carne- Carnegie Institute, 1919. [36] . Introduction to the Theory of Numbers New York: Dover, 1957. [37] DUBOIS E., and A. N. VENETSANOPOULOS. "Fast Convdlution Using the Discrete Fourier Transform over Commutative Rings with Iden- Identity." In 20th Midwest Symposium on Circuits and Systems. Lubbock, Texas August 15 - 17, 1977. [38] ERDELSKY P. J. "Fermat Number Transform Hardware Configuration" Rept. No TN- 1975-18. San Diego, Calif. Naval Undersea Center, 1975. [39] FIDUCCIA С. М., and Y. ZALCSTEIN. "Al- "Algebras having Linear Complexities." State University of New York at Stony Brook Dept of Computer Science Technical Report 46. Sto- Stony Brook, N. Y., August 1975 [40] GETHOFFER H. "Fast Transform Digital Filtering Using Non-Diagonal Spectral Ope- Operations." In IEEE Intl. Conf on Acoustics, Speech, and Signal Processing, pp. 356 - 59 Hartford, Conn.: May 9 - 11, 1977. [41] GOLD В., and С М. RADER. Digital Pro- Processing of Signals. New York- McGraw-Hill, 1969. [42] GOLOMB S. W. "Properties of the Sequence 3 •' 2" + 1." Mathematics of Computation (July 1976). 657-63. [43J , I. S. REED, and T. K. TRUONG. 'Inte- 'Integer Convolutions over the Finite field GFC • • 2" + 1)." SIAM Journal on Applied Math. 32 (March 1977): 356 -65.' [44] GOOD I. J. "On the Inversion of Circulant Matrices." Biometrika 37 A950). 185 - 86. [45] , "A New Finite Series for Legendre Polynomials." Proc. Camb. Phil. Soc. 51 A958) 385 - 88. [46] . "The Interaction Algorithm and Practi- Practical Fourier Series," /. Royal Stpt. Soc., ser. B, 20 A958) 361 - 72, Addendum 22: A960). 372- 75. [47] -^-. "Polynomial Algebra. An Application of the Fast Fourier Transform." Nature 222- 1302. [48] HARDY G H., and E. M. WRIGHT The Theo- Theory of Numbers Oxford Oxford University Press, 1960 [49] , and An Introduction to the Theory of Numbers. London Oxford Univer- University Press, 1968 [50] HERSTEIN I N Topics in Algebra, 2d ed. Lexington, Mass. Xerox College Publishing, 1975 [51] HOPCROFT J. E., and J. MUSINSKI. "Duality Applied to the Complexity of Matrix Multi- Multiplication and Other Bilinear Forms." SIAM Journal on Computing 2 A973) 159 - 73. [52] IBM Corp. "Procedure Library-Mathematics (PL-MATH) Program Description."WhitePlains, N Y. IBM Progr Product SH20-0985-0, 1971. [53] JENKINS W. K., and В J LEON. "The Use of Residue Coding in the Design of Hardware for Nonrecursive Digital Filters." In Eighth Asilo- mar Conference on Circuits, Systems, and Com- Computers pp 458 - 62, December 1974. [54] . "Composite Number-theoretic Transforms for Digital Filtering " In Ninth Asilomar Con- Conference on Circuits Systems, and Computers, pp 421 - 24, Nobember 1975 [55] , and В Jv Lf ON. "The Use of Residue Number Systems in the Design of Finite Im- Impulse Response Digital Filters " IEEE Trans, on Circuits and Systems CAS-24 (April 1977) 191 - 201. [56] KIBLER D , and R. С AGARWAL. "Necessa- "Necessary and Sufficient Conditions for the Existence of the Modular Fourier Transform: Comments on "Number Theoretic Transforms to Imple- Implement Fast Digital Convolution'." Proc. IEEE 65 (February 1977) 265 - 67. [57] KNUTH D. E. The Art of Computer Program- Programming, vol. 2, Seminumerical Algorithms. Re- Reading, Mass. Addison-Wesley, 1969. [58] KOLBA D. P., and T. W. PARKS. "Convolu- "Convolution Algorithms for the DFT " Rice University, Elec. Eng Dept. Technical Report No. 7609. Houston, Texas October 1976 [59] KRIZ T A , and D К BACHMAN "Computa- "Computational Efficiency of Number-Theoretic Trans-
form Implemented Finite Impulse Response Filters." IEEE Intl. Symposium on Informa- Information Theory, p. 93. Ithaca, N. Y : October 1977. [60] LEIBOWITZ L. M. "Fast Convolution by Number Theoretic Transforms" NRL Re- Report 7924 Washington, D. С Naval Research Laboratory, September 1975. [61] . "A Binary Arithmetic for the Ferinat Number Transform." NRL Report 7971. Wa- Washington, Di C: Naval Research Laboratory, March 1976. [62] LIU K. Y., I S. REED, and T. K. TRUONG "Fast Number-Theoretic Transforms for Digi- Digital Filtering." Electronics Letters 12 (Novem- (November 1976): 1644 -46. [63] MAKAROV О. М "On the Relations Between the Fast Fourier and Hadamard Transform Algorithms and the Algorithms of Karatsuba, Winograd and Strassen " 15 Zh. Vychisl Mat. Fiz. [USSR] (July 1975): 1095 - 1105. [64] MATHEWS G. B. Theory of Numbers. New York- Chelsea, 1961. [65] McCLELLAN J H. "Hardware for the Fer- mat Number Transform " Technical Note ESD-TR-75-149. M. I. T., Lincoln Lab., 19 75. [66] McCOY N. H. The Theory of Numbers. Lon- London McMillan, 1965. [67] MELHUISH P. "Fermat-Transform Implemen- Implementation by a Minicomputer." Electronics Letters 11 (March 1975) 109 - 111. [68] MICHELSON A M. "A Fast Transform in Ga- Galois Fields and an Application to Decoding Re- ed-Soloitnon Codes " Presented at IEEE Intl. Symposium on Information Theory. Ronneby, Sweden, June 1976. [69] MORGERA S. D. "Synthesizing Large DFTs Using the Mutual Prime Factor Cyclic Algo- Algorithm." In IEEE Intl. Symposium on Informa- Information Theory, p. 93 Ithaca, N. Y. October, 1977. [70] MORRIS L. R. " A Comparative Study of Time-Efficient FFT and WFTA Programs for General Purpose Computers." IEEE Trans, on .Acoustics, Speech, and Signal Processing ASSP-26 (April 1978)- 141 - 150. [71] MURAKAMI H., and I. S. REED. "Recursive Realization of Finite -Impulse Filters Using Fi- Finite Field Arithmetic " IEEE Tram, on Infor- Information Theory 1Г-23 (March 1977)- 232 - 42. [72] , , and L. R. WELCH. "A Transform Decoder far Reed-Solomon Codes in Multiple User Communication Systems " IEEE Trans, on Information Theory IT-23 (November 1977) 675-83. [73] NAGELL T. Introduction to Number Theory. New York Chelsea, 1964 [74] NAWAB H. "Parallelism and Code Optimiza- Optimization Issues in FFT and WFT Algorithms" S M. thesis, Massachusetts Institute of Techno- Technology, September 1978. [75] NEVIN R L "Complex Convolutions Using Radix-2 Number-Theoretic Transforms." Ph D. dissertation, Syracuse University, October 1976 [76] "Application of the Kader-Bicnner FFT Algorithm to Number-Theoretic Transforms " IEEE Trans on Acoustics, Speech, and Signal Processing ASSP-25 (.April 1977) 196 - 98. [77] NICHOLSON P. J "Algebraic Theory of the Finite Fourier Transform." Ph. D disserta- dissertation, Stanford University, 1969. [78] "Algebraic Theory of Finite Courier Transforms " Journal of Computer and Sys- Systems Science 5 A971). 524 - 47. [79] NIVEN I., and H. S ZUCKERMAN. An Intro- Introduction to the Theory of Numbers. 3d ed. New York Wiley, 1972. [80] NUSSBAUMER H J. "Dispositif Generateur de Fonction dc Convolution Discrete et Filt- re Numerique lncoiporant Ledit DJspositif" French Patent Application No. 7, 512, 557, April 1975 [81] . "Complex Convolutions via Fermat Number Transforms " IBM Journal of Research and Development 20 (May 1976) 282 - 84. [82] "Digital Filtering Using' Cotransforms in Finite Fields " Electronics Letters 12 (June 1976)- 113 - 14 [83] . "Digital Filtering Using Pscudo-Fer- mat Number Transforms." IEEE Tirans. on Acoustics, Speech, and Signal Processing ASSP-25, (February 1977) 79 - 83 [84] . "Digital Filtering Using Polynomial Transforms" Electronics Letters 13 (June Bibliography 1977)- 386 - 87. [85] OLDS C. D. Continued Fractions. New York Random Hous,e, 1963 [86] ORE O. Number Theory and Its History. New York: McGraw-Hill, 1948. [87] PALL G . and F A SEIDEN, "A Problem in Abefian Groups, with Application to the Transposition of a Matrix on an Electronic Computer." Mathematics of Computation 14 A960). 189 - 92 [88] PATTERSON R W "Fixed Point Error Analy- Analysis of the Winograd Fourier Transform Algo- Algorithm." S M thesis; Massachusetts .Institute of Technology, September 1977 [89] PITASSI D A "Fist Convolution Using the Walsh Transforms. In Proc Conf. Applica- Applications of Walsh Functions, pp, 130 - 3? Wa- Washington, D. C. April 19/1. [90] POLLARD S M "Implemeniation of Num- Number-Theoretic Tiai.'forms," blectronks LjS ters 12 (June 1976)" J37S - 79 [91] PREPARATA F. P, ar.d f» V SAPWATb "Computational Complexity of Fourier Trans- 26-i
forms over Finite Fields." University of Illi- Illinois Co-ord. Science Lab., Rept No. R-745 UILU-ENG-76-2233, 1976. [92] RABINER L. R., R. W. SCHAFER, and С. М. RADER. "The Chirp z-Transform Algorithm and Its Application." Bell Sys. Tech. J., 48 (May - June, 1969): 1249 - 92. [93] , and RADER, eds. Digital Signal Proces- Processing. New York: IEEE Press, 1972. [94] , and B. GOLD. Theory and Application of Digital Signal Processing, pp. 371 - 80. Englewood Cliffs, N. J.: Prentice-Hall, 1975. [95] RADER С. М. "The Number-Theoretic DFT and Exact Discrete Convolution." Presented at'IEEE Arden House Workshop on Digital Signal Processing. Harriman, N. Y.: Jan. 11, 1972. [96] . "Discrete Convolution Via Mersenne Transforms." IEEE Trans, on Computers C-21 (December 1972): 1269 - 73. [97] . " A Note on Exact Discrete Fourier Transforms." IEEE Trans, on Audio and Electroacoustics AU-21 (December 1973): 558-59. [98] . "On the Application of the Number-The- Number-Theoretic Transforms of High Speed Convolution to Two-Dimensional Filtering." IEEE Trans, on Circuits and Systems CAS-22 (June 1975): 575. [99] . "Convolution and Correlation Using Number-Theoretic Transforms," in Theory and Application of Digital Signal Processing, L. R. RABINER and B. GOLD Sect. 6.19. Engle- Englewood Cliffs, N. J.: Prentice-Hall, 1975. [100] , and N. M. BRENNER. "A Ne\v Principle for Fast Fourier Transformation." IEEE Trans, on Acoustics, Speech, and Signal Processing ASSP-24 (April 1976): 264 - 66. [101] . "Recovery of Under-Sampled Periodic Waveforms." IEEE Trans, on ASSP ASSP-25 (June, 1977): 242 - 49. [102] RAYNER P. J. W. "A Fast Cyclic Convolution Algorithm." Presented at Symp. Digital Filte- Filtering, London: Imperial College, August 1971. [103] . "Diagonalization of Circular Coavolu- tion Matrices by a Class of Finite Arithmetic Transforms." Univ. Cambridge Report No. CUED/B-ELECT/TR19. 1973. [104] REED I. S., and Т. К. TRUONG. "Complex Integer Convolution over a Direct Sum of Galois Fields." IEEE Trans, on Information Theory IT-21 (November 1975): 657 - 61. 1105] , and . "Convolutions over Residue Classes of Quadratis Integers." IEEE Trans, on Information Theory ГГ-22 (July 1976): 468 - 75. [106J , Y. S. KWOH, Т. К. TRUONG, and E. L. HALL. "X-Ray Reconstruction by Finite Field Transforms." Third International Joint 262 Conference on Pattern Recognition, pp. 339 - 43. Coronado, Calif.: November 1976. [107] , K. Y. LIU, and Т. К. TRUONG. "Fast Algorithm for Computing Complex Num- Number-Theoretic Transforms." Electronics Let- Letters 13 (May 1977) 278-80. [108] , T. K. TRUONG, Y. S. KWOH, and E. L. HALL. "Image Processing by Trans- Transforms over a Finite Field." IEEE Transt on Computers C-26 (September 1977): 874 - 81. [109] RIVARD G. E. "Direct Fast Fourier Trans- Transform of Bivariate Functions." IEEE Trans, on Acoustics, Speech, and Signal Processing ASSP-25 (June 1977)- 250 - 52 [110] SCHONHAGE A., and V. STRASSEN. "Fast Multiplication of Large Numbers." Comput. (German) 7 A971): 281 - 92. [llll SELBY S. M. ed. CRC Standard Mathematical Tables, 146 - 56. Cleveland, Ohio: The Chemi- Chemical Rubber Co., 1973. [112] SHANKS D. Solved and Unsolved Problems in Number Theory, vol. 1. Washington, D. C: Spartan Books, 1962. [113] SILVERMAN H. F. "An Introduction to Pro- Programming the Winograd Fourier Transform Algorithm (WETA)." IEEE Trans, on Acous- Acoustics, Speech, and Signal Processing ASSP-25 (April 1977) 152-65. [114] SILVERMAN H. F. "A Method for Program- Programming the Complex General-M Winograd Fouri- Fourier Transform Algorithm," In IEEE Int. Conf. on ASSP, pp. 369 - 72 Hartford, Conn.: May, 9- 11,1977. [115] SINGLETON R. С " A Short Bibliography on the Fast Fourier Transform." IEEE Trans, on Audio and Electroacoustics AU-15 (June 1967): 166-69. [116] . "An ALGOL Procedure for the Fast Fourier Transform with Arbitrary Factors." Commun. Ass. Comput. Mach. 11 (Novem- (November 1968)- 776 - 79. [117] . "An Algorithm for Computing the Mi- Mixed-Radix Fast Fourier Transform." IEEE Trans, on Audio and Electroacoustics AU-17 (June 1969): 93 - 103. [118] STOCKHAM T. G. "High Speed Convolution and Correlation." In Spring Joint Comput. Conf, AFIPS Conf. Proc. 28: 229 - 33. Wa- Washington, D. C: Spartan, 1966. [119] SZABO N. S., and R. I TANAKA. Residue Arithmetic and Its Applications to Computer Technology, pp. 118 - 22. New York: McGraw- Hill, 1967. [120]TAKAHASI H., and Y. ISHIBASHI. "A Neyv Method for 'Exact Calculation' by a Digital Computer." Inform. Process. Jap. I A962): 28-42. [121] TERRELL P. M., and P. J. W. RAYNER. "Improved Algorithm for Low-Order Digital
Convolution." Electronics Letters 9- A973): 618-619. 23] , and . "Improved Algorithm for Low-Order Real Digital Circular Convolution." Electronics Letters 10 A974): 224 - 25. [123] THOMAS L. H. "Using a Computer to Solve Problems in Physics." In Applications of Du gital Computers. Boston. Ginn and Co. 1963. [124] VanWORMHOUDT M. С "On Number-Theo, retic Fourier Transforms in Residue Class Rings " IEEE Trans, on Acouctics, Speech, and Signal Processing ASSP-25 (December 1977): 585 - 86. [125] VEGH E., and L. M. LEIBOWITZ. "Discrete Convolution of Complex Integer Sequences." IEEE Intl. Conf. on Acoustics, Speech, and Signal Processing, pp. 134 - 35. Philadelphia: April 1976. [126] , and . "Fast Complex Convolution in Finite Rings." IEEE Trans. Acoustics, Speech, and Signal Processing ASSP-24 (August 1076). 343 - 44. 1127] WINOGRAD S. "On the Number of Multipli- Multiplications Necessary to Compute Certain Functi- Functions." Communications on Pure and Applied Mathematics'23 A970): 165 - 79. [128] . "Some Bilinear Forms Whose Multipli- Multiplicative Complexity Depends on the Field of Constants." IBM Research Report RC5669, October 10,1975. [129] . "On Computing the Discrete Fourier Transform." Proc. National Academy of Sciences, USA 73 (April 1976): 1005 - 1006. [130) . "On Computing the Discrete Fourier Transform " IBM Research Report RC-6291, November 197'6; Mathematics of Computation, January 1978. [131] , "A New Method for Computing the DFT." IEEE. Intl. Conf.onASSP, 77CH1197-3 A977): 366-68. [132] ZALCSTEIN Y. " A Note on Fast Convolu- Convolution." IEEE Trans, on Computers, C-20 (June 1971): 665-666. Дополнительная литература 1. Солодовников А. И., Спиваковский А. М., Ка- Канатов И. И. Синтез обобщенного спектрального ядра произвольной размерности. - В кн.: При- Применение ортогональных методов при обработ- обработке сигналов и анализе систем. Свердловск. УПИ, 1980. 2. Трахтман В. А. Быстрое преобразование Фурье для широкого класса систем ортогональных функций. — "Радиотехника и электроника", 1976, №5. 3. Ахмед Н,, Рао К. Р. Ортогональные преобразо- преобразования при обработке цифровых сигналов. М.: Связь, 1980. 4. Тьюарсон Р. Разреженные матрицы. М.. Мнр, 1977. 5. Калории И. Е. Новый алгоритм быстрого пре- преобразования. Фурье. — Журнал вычислитель- вычислительной математики и математической физики, 1980, №4. 6. Теория сложности вычислений. Под ред. Д. Ю. Григорьева и А. О. Слисенко. Д. Наука, 1982. 216 с. 7. Нуссбаумер Г. Быстрое преобразование Фурье н алгоритмы вычисления сверток. М.: Радио и связь, 1984.
ОГЛАВЛЕНИЕ Стр. Предисловие к русскому изданию 5 Предисловие 6 Глава первая 1. Дискретное преобразование Фурье и циклическая свертка 8 2. Многомерные сигналы и преобразования 12 3. Основы теории чисел и ДПФ 15 4. Следствия теоремы Эйлера, используемые в цифровой обработке сигналов 25 5. Группы, кольца и поля в цифровой обработке сигналов 30 6. Преобразование одномерных массивов данных в многомерные 41 7. Полиномиальная теория сложности вычисления свертки 44 7.А. Свойства круговых полиномов 59 Глава вторая 8. Введение к перепечатанным статьям 62 Статья 1. Алгоритм БПФ для простых множителей, использующий быструю свертку (Д. П. Колба, Т. У. Парке) 72 Статья 2. Дискретное преобразование Фурье, когда число отсчетов простое (Ч. М. Рейдер) 89 Статья 3. Новые алгоритмы для цифровой свертки (Р. К. Агарвал, Дж. У. Кули) 91 Статья 4. О вычислении дискретного преобразования Фурье (С. Виноград) 117 Статья 5. О взаимоотношении между двумя быстрыми преобразованиями Фурье (И. Дж. Гуд) .... 136 Статья 6. Быстрое преобразование Фурье в конечном поле (Дж. М. Поллард) 147 Статья 7. Быстрая свертка, использующая преобразование с числами Ферма, и ее применение в цифровой фильтрации (Р. С. Агарвал, Ч. С. Баррас) 156 Статья 8. Алгоритм быстрого вычисления цифровой одномерной свертки иа основе многомер- многомерных методов (Р. С. Агарвал, Ч. С. Баррас) 172 Статья 9. Аппаратурная реализация преобразования Ферма (Дж. X. Макклеллан) 186 Статья 10. Упрощенная двоичная арифметика для преобразования с числами Ферма (Л. М. Лейбовиц) 202 Статья 11. Применение конечных полей для вычисления сверток (И. С. Рид, Т. К. Труонг) 207 Статья 12. Цифровая фильтрация о помощью комплексных преобразований Мерсенна (X. Нуссбаумер) 216 Статья 13. О билинейных формах, мультипликативная сложность которых зависит от поля констант (С Виноград) 225 Глава третья 9. Алгоритм Винограда для вычисления преобразования Фурье комплексных последовательностей произвольной длины N ^555=5^=*=*^. .... 233 Список литературы .^f^r-rr~~-^\^. . . 259 Дополнительная литература А/ \