<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>ПРОГРАММНО-АЛГОРИТМИЧЕСКАЯ РЕАЛИЗАЦИЯ КОДОВ РИДА-СОЛОМОНА ДЛЯ ПОЛЕЙ ГАЛУА ВЫСОКОГО ПОРЯДКА*</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Vladimir Vinnikov</string-name>
          <email>vvinnikov@list.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lyudmila Ivanichkina</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Dorodnicyn Computing Centre of RAS</institution>
          ,
          <addr-line>Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Finite fields; Galois Field; Reed-Solomon code; generator matrix; Vandermonde matrix</institution>
          ,
          <addr-line>Montgomery multiplication, Karacuba multiplication</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Moscow Institute of Physics and Technology</institution>
          ,
          <addr-line>Dolgoprudny</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>OOO Acronis</institution>
          ,
          <addr-line>Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>OOO Project Iks</institution>
          ,
          <addr-line>Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <fpage>297</fpage>
      <lpage>303</lpage>
      <abstract>
        <p />
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        состав тысячи дисковых накопителеи. Подобная крупная популяция элементов подчиняется
законам математическои статистики, а, следовательно, определённая доля дисков подвержена
регулярному выходу из строя [
        <xref ref-type="bibr" rid="ref1 ref10">1</xref>
        ]. При этом, совокупная частота единичных и коллективных отказов
растёт с увеличением мощности множества задеиствованных жестких дисков. Предотвращение
необратимои потери данных достигается резервированием содержимого СХД с помощью
добавления некоторои избыточности в исходныи набор данных. Распространены два варианта
построения избыточности: резервное копирование (репликация) и помехоустоичивое кодирование
блоков, занимающее меньше избыточного дискового пространства. Уровень надёжности хранения
определяется количеством полных копии (реплик) или параметрами кодирования. На практике
широко используются ( , )-коды Рида-Соломона (см, например, [
        <xref ref-type="bibr" rid="ref11 ref2">2</xref>
        ]), в которых входное сообщение
из символов алфавита мощностью = 2 преобразуется в символов из того же алфавита. Коды
Рида—Соломона вносят минимально возможныи объем избыточности и обеспечивают
максимальныи уровень помехоустоичивости.
      </p>
      <p>При заданных значениях параметров их разность ( − ) определяет максимальное
количество утраченных или искаженных символов, при котором из неповреждённых символов
может быть восстановлено исходное сообщение. Подобное помехоустоичивое представление
данных используется как при передаче, так и при хранении информационных сообщении. При этом,
потоковая передача данных по каналам связи и блочное размещение данных на накопителях
предъявляют различные требования к параметрам кодирования и .</p>
      <p>
        Так, для потоковои передачи данных при внесении в сообщение пакета ошибок
незначительно искажается серия информационных символов с неизвестным расположением, что
требует большои величины ( − ) и алфавита малои мощности ~2 , соответствующего
однобаитовои (восьмибитнои) структуре данных. Кроме того, с целью сохранения эффективнои
пропускнои способности канала необходимо ограничить накладные расходы на избыточность вида
( / ). Эти факторы определяют коды, общепринятые в коммуникационнои отрасли, например,
стандарт DVB (Digital Video Broadcast) [
        <xref ref-type="bibr" rid="ref12 ref3">3</xref>
        ] с параметрами = 204 и = 188. Дополнительно,
локализация априори неизвестных ошибок требует применения специальных вычислительно
ёмких алгоритмов поиска искаженных символов внутри сообщения.
      </p>
      <p>В свою очередь, надёжное помехоустоичивое хранение данных требует размещения
каждого символа (фрагмента) из закодированного сообщения (блока данных) на отдельном
накопителе СХД, независимом от других устроиств хранения. В случае аппаратного отказа одного
или нескольких дисков такая схема распределения данных приводит к необходимости обращения
к априори известным исправным дискам при восстановлении блока и передачи доступных
фрагментов по сети в узел декодирования. Поскольку каждое считывание и передача фрагмента
затрачивают полезные ресурсы системы, количество подобных деиствии необходимо сократить, то
есть использовать ( , )-код с малыми значениями параметров и . При этом, для поддержания
высокои производительности требуется сохранить битовую длину исходного сообщения за счёт
увеличения битовои длины фрагмента данных (мощности алфавита) до значении ~2 и выше.</p>
      <p>
        Следует отметить, что типовая вычислительная техника ограничена машиннои
арифметикои над целыми 64-разрядными числами. Согласно теории конечных полеи Галуа,
вычислительная сложность алгебраических операции по модулю значительно возрастает с
увеличением из-за согласования переносов разрядов между машинными словами,
составляющими фрагмент блока данных. Растут также и затраты на хранение в памяти
промежуточных результатов расчётов. Тем не менее, совершенствование вычислительнои техники,
развитие теоретическои и прикладнои криптографии, а также накопление результатов численных
экспериментов по конструктивному описанию полеи Галуа высокого порядка [
        <xref ref-type="bibr" rid="ref13 ref4">4</xref>
        ], дают
возможность программно реализовать алгоритмы помехоустоичивого кодирования по схемам
Рида—Соломона для фрагментов данных большого объема.
      </p>
      <p>
        Согласно теории, коды Рида—Соломона одновременно принадлежат классам линеиных
циклических блочных и полиномиальных кодов. Исходя из этого, представление кодов Рида—
Соломона допускает две общепринятые интерпретации. В первои трактовке используется таблица
многочленов степени меньше над конечным полем порядка , где — степень простого числа. В
процессе кодирования входных символов рассматриваются как первыи сегмент таблицы
многочленов степени меньше . Теориеи гарантируется, что в таблице содержится единственныи
многочлен, соответствующии этим символам. Оставшиеся ( − ) символов определяются как
значения этого многочлена в соответствующих ( − ) целочисленных точках. В этои схеме
избыточность достигается за счёт переопределенности системы, в которои количество уравнении
превышает количество искомых переменных. На практике применяется более производительныи
способ кодирования, когда входных символов считаются коэффициентами многочлена степени
меньше , а дополнительные ( − ) символов являются полиномиальными коэффициентами
произведения на циклическии генерирующии многочлен, определяемыи из таблиц
неприводимых многочленов, например, [
        <xref ref-type="bibr" rid="ref13 ref4">4</xref>
        ]. Во второи трактовке вместо генерирующего
многочлена используется генерирующая матрица размерностью × . Различают также
систематическии и несистематическии варианты кодов. В систематическом коде символы
избыточности дописываются в конец исходного сообщения. Левая квадратная часть генерирующеи
матрицы в этом случае представляет собои единичную матрицу. В несистематическом коде, исходя
из структуры генерирующеи матрицы, итоговое закодированное сообщение может не содержать ни
одного символа исходного сообщения. К преимуществам систематического кода относится
тривиальное декодирование сообщения при отсутствии ошибок, а недостаток заключается в
необходимости вычисления обратных матриц. Несистематическое кодирование требует
нетривиального декодирования даже неискаженного сообщения, однако позволяет использовать
легкообращаемые матрицы, например, инволютивные или ортогональные.
      </p>
      <p>В настоящеи работе приведены примеры алгоритмическои и программнои реализации
алгебраических операции, используемых в систематическом коде Рида—Соломона с генерирующеи
матрицеи Вандермонда. Для программнои реализации этого кода на конечном поле Галуа с
алфавитом мощностью = 2 , &gt; 64 были построены и запрограммированы алгоритмы сложения
и умножения больших чисел по модулю 2 . На основе этих алгоритмов стоится генерирующая
матрица размерностью × символов и производится кодирование путём умножения
векторстроки исходного сообщения из символов на эту матрицу. Таким же образом реализовано
декодирование, а именно: исключение из прямоугольнои матрицы ( − ) столбцов,
соответствующих исключаемым позициям контрольных или утраченных символов в
закодированном сообщении длины , с последующим обращением полученнои квадратнои
матрицы × и умножением сокращеннои закодированнои вектор-строки длины на неё.</p>
      <p>Основная вычислительная сложность всех алгоритмов кодирования с высокои мощностью
алфавита = 2 , &gt; 64 вызвана вычислительными затратами на выполнение операции
умножения над многобитовыми числами, представленными последовательностью машинных слов.
Все известные методы перемножения двух больших чисел могут быть классифицированы по
количеству затрачиваемых машинных операции. Так, классическии метод умножения в двоичнои
системе счисления является наиболее затратным, несмотря на высокую скорость проведения
индивидуальных операции сложения и битового сдвига машинных слов.</p>
      <p>В наиболее производительном методе используется плоская таблица с результатами
перемножения двух операндов. При условии, что таблица вычисляется однократно, метод будет
задеиствовать лишь быстрые операции адресного считывания в памяти. Несмотря на простоту
реализации, этот метод является исключительно требовательным к дорогостоящеи части
выделяемых аппаратных ресурсов, поскольку таблица занимает 2 ×2 ×2 бит в быстрои
оперативнои памяти. При мощности алфавита = 2 занимаемыи таблицеи объем составит 128
КиБ, однако, при удвоении разрядности до мощности алфавита = 2 в памяти потребуется
выделить уже 8 ГиБ. Таким образом, прямое использование таблиц умножения для чисел
разрядностью = 32 и выше, не представляется оправданным.</p>
      <p>
        Используемые на практике методы перемножения длинных операндов построены на
принципе «разделяи и властвуи». В основу этого принципа положена возможность представить
множитель как сумму, в которои каждое слагаемое занимает свои диапазон разрядов. В этом случае
искомое произведение может быть вычислено с использованием произведении слагаемых каждого
из исходных операндов. При этом, при перемножении слагаемых меньшеи разрядности часто
используется рекурсивныи вызов алгоритма до достижения разрядности машиннои арифметики.
Первым представителем этого семеиства методов является алгоритм Карацубы [
        <xref ref-type="bibr" rid="ref14">5</xref>
        ] с
использованием двух слагаемых на операнд. В развитие этого метода были предложены
обобщающие методы с многократным расщеплением, такие как метод Тума—Кука [
        <xref ref-type="bibr" rid="ref15 ref5">6</xref>
        ].
Академическое признание также получили методы умножения, использующие преобразование
Фурье, такие как алгоритмы Шёнхаге — Штрассена [
        <xref ref-type="bibr" rid="ref16 ref6">7</xref>
        ] и Фюрера [
        <xref ref-type="bibr" rid="ref17 ref7">8</xref>
        ]. Эти методы имеют
наименьшую асимптотическую алгоритмическую сложность, однако, превосходство над
алгоритмом Тума—Кука достигается лишь, начиная с чисел порядка 2 —2 , что существенно
ограничивает область практического применения. Кроме того, эффективная программная
реализация методов на основе преобразования Фурье требует перехода от арифметики
комплексных чисел к специальному теоретико-числовому преобразованию (Number-theoretic
transform) в конечном поле.
      </p>
      <p>
        В своих первоначальных вариантах большинство методов умножения больших чисел
используют арифметику на множестве целых чисел. Исходя из этого, непосредственное
использование методов типа Тума–Кука в алгоритмах кодирования в значительнои степени
ограничено и допустимо лишь на промежуточных уровнях рекурсии, не требующих операции
взятия остатка по модулю. Иными словами, результат перемножения двух операндов разрядностью
лежит в пределах разрядности 2 , что влечёт необходимость дополнительного деления
результата по модулю 2 . Эта дополнительная операция в случае массового применения также
является вычислительно затратнои, поэтому на практике в качестве метода умножения по модулю
2 используется метод Монтгомери [
        <xref ref-type="bibr" rid="ref18 ref8">9</xref>
        ].
      </p>
      <p>В методе Монтгомери символ алфавита в поле (2 ) представляется многочленом
длины вида
( ) =
=
+
+ … +
+ ,
где коэффициенты являются бинарными, ∈ (2). Эти же коэффициенты составляют битовую
запись символа :</p>
      <p>= ( ⋯ ).</p>
      <p>Дополнительно, символ допускает блочное описание последовательностью из
машинных слов разрядностью ( = ):</p>
      <p>= ( ⋯ ), = ( ) ( ) ⋯ .</p>
      <p>В этом случае, полиномиальные представления символа и машинного слова примут
вид:
( ) =
( )
=
( ) ( ) +</p>
      <p>( ) ( ) + … + ( ) + ( ),
( ) =
=
( )
+
( )
+ … +
+ .
Если представить второи множитель символом из того же алфавита:</p>
      <p>
        = ( ⋯ ),
то псевдокод алгоритма Монтгомери из работы [
        <xref ref-type="bibr" rid="ref18 ref8">9</xref>
        ] может быть представлен следующеи
программнои реализациеи на языке С++ (см. листинг 1).
      </p>
      <p>Листинг 1. Функция перемножения длинных чисел в поле Галуа по алгоритму Монтгомери
для = 32.
union UIntGF2XT{
private:
uint8_t u08[UIntGF2XTu08LEN];
uint16_t u16[UIntGF2XTu16LEN];
uint32_t u32[UIntGF2XTu32LEN];
uint64_t u64[UIntGF2XTu64LEN];
public:
friend const UIntGF2XT MULGF2(UIntGF2XT A, const UIntGF2XT&amp; B);
friend void GenAndInvPolyN32(UIntGF2XT&amp; polyN,uint32_t&amp; polyNinv);};
const (UIntGF2XT A, const UIntGF2XT&amp; B){
uint32_t i, j, H, L, P, M;
uint32_t C[UIntGF2XTu32LEN],N[UIntGF2XTu32LEN],Caux,Ninv0;
std::fill(C,C+UIntGF2XTu32LEN,'\0');
Caux = 0ULL;
GenAndInvPolyN32(&amp;N,&amp;Ninv0);
for(i = 0; i &lt; UIntGF2XTu32LEN; i++){
for(j = 0; j &lt; UIntGF2XTu32LEN - 1; j++){</p>
      <p>MULGF2_32(H, L, A.u32[j], B.u32[i]);
C[j] ^= L;</p>
      <p>C[j+1] ^= H;}
MULGF2_32(H, L, A.u32[j], B.u32[i]);
C[j] ^= L;
Caux ^= H;
MULGF2_32(H, M, C[0], Ninv0);
MULGF2_32(P, L, M, N[0]);
for(j = 1; j &lt; UIntGF2XTu32LEN; j++){</p>
      <p>MULGF2_32(H,L,M,N[j]);
C[j-1] = C[j] ^ L ^ P;
}
inline uint32_t MULGF2_16(uint16_t A, uint16_t B)
{
uint32_t AsubB, Asqr, Bsqr, AsubBsqr;
uint32_t AB;
Asqr = LUT16[A];
Bsqr = LUT16[B];
if(A&gt;=B)
{
}
else
{
}
return AB;</p>
      <p>AsubB = A - B;
AsubBsqr = LUT16[AsubB];
AB = (((Asqr - AsubBsqr) &gt;&gt; 1) + ((Bsqr + 1) &gt;&gt; 1));
AsubB = B - A;
AsubBsqr = LUT16[AsubB];</p>
      <p>AB = (((Bsqr - AsubBsqr) &gt;&gt; 1) + ((Asqr +1) &gt;&gt; 1));
}</p>
      <p>Таким образом, в работе приведена оригинальная программная реализация наиболее
вычислительно ёмких алгоритмов, используемых в методе кодирования Рида—Соломона.
Показано, что можно наити компромиссныи вариант алгоритма умножения в поле Галуа,
использующии как таблицы для операндов малои разрядности, так и методы умножения Карацубы
для операндов высокои разрядности. Подобныи подход к вычислению произведении множителеи
позволяет построить коды Рида—Соломона в конечных полях с алфавитами большои мощности,
подходящие под требования для создания систем хранения данных, устоичивых к сбоям и ошибкам
в накопителях.</p>
      <p>Работа проведена в рамках выполнения прикладных научных исследований при финансовой поддержке
Министерства образования и науки Российской Федерации. Соглашения о предоставлении субсидий №
14.579.21.0010. Уникальный идентификатор Соглашения RFMEFI57914X0010.</p>
      <p>References
Иваничкина Людмила Владимировна, аспирант факультета управления и прикладной математики Московского
физикотехнического института, старший разработчик ООО «Проект Икс».</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Ivanichkina L. Computer Simulator of Failures in Super Large Data Storage / L. Ivanichkina,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Neporada // Contemporary Engineering Sciences.
          <article-title>-</article-title>
          <year>2015</year>
          . -
          <fpage>Т</fpage>
          . 8. -
          <fpage>№</fpage>
          28. - C.
          <fpage>1679</fpage>
          -
          <lpage>1691</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2. Ivanichkina L.
          <article-title>Mathematical methods and models of improving data storage reliability including those based on finite field theory / L. Ivanichkina, A</article-title>
          . Neporada // Contemporary Engineering Sciences.
          <source>- Т. 7</source>
          . -
          <fpage>№</fpage>
          28. -
          <fpage>2014</fpage>
          . - C.
          <fpage>1589</fpage>
          -
          <lpage>1602</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <source>ETSI EN 300 744 V1.6</source>
          .
          <issue>1</issue>
          (
          <issue>2009</issue>
          -
          <fpage>01</fpage>
          )
          <article-title>Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for digital terrestrial television // European Standard (Telecommunications series</article-title>
          ).
          <source>- 2009</source>
          . -
          <fpage>66</fpage>
          С.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Seroussi</surname>
            <given-names>G.</given-names>
          </string-name>
          <article-title>Table of low-weight binary irreducible polynomials</article-title>
          . -
          <string-name>
            <surname>Hewlett-Packard Laboratories</surname>
          </string-name>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          6.
          <string-name>
            <surname>Toom</surname>
            <given-names>A. L.</given-names>
          </string-name>
          <article-title>The complexity of a scheme of functional elements realizing the multiplication</article-title>
          of integers //Soviet Mathematics Doklady.
          <article-title>-</article-title>
          <year>1963</year>
          . -
          <fpage>Т</fpage>
          . 3. -
          <fpage>№</fpage>
          . 4. -
          <fpage>С</fpage>
          .
          <fpage>714</fpage>
          -
          <lpage>716</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          7.
          <string-name>
            <surname>Schönhage D. D</surname>
          </string-name>
          . A.,
          <string-name>
            <surname>Strassen</surname>
            <given-names>V</given-names>
          </string-name>
          . Schnelle multiplikation grosser zahlen //Computing. -
          <source>1971. - Т. 7</source>
          . - №
          <fpage>3</fpage>
          -
          <lpage>4</lpage>
          . -
          <fpage>С</fpage>
          .
          <fpage>281</fpage>
          -
          <lpage>292</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fürer</surname>
            <given-names>M.</given-names>
          </string-name>
          <article-title>Faster integer multiplication //</article-title>
          <source>SIAM Journal on Computing. - 2009</source>
          . -
          <fpage>Т</fpage>
          .
          <year>39</year>
          . -
          <fpage>№</fpage>
          3. -
          <fpage>С</fpage>
          .
          <fpage>979</fpage>
          -
          <lpage>1005</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          9.
          <string-name>
            <surname>Koc</surname>
            <given-names>C. K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Acar</surname>
            <given-names>T.</given-names>
          </string-name>
          <article-title>Montgomery multiplication in GF (</article-title>
          <year>2k</year>
          ) //Designs, Codes and Cryptography. -
          <year>1998</year>
          . -
          <fpage>Т</fpage>
          .
          <year>14</year>
          . -
          <fpage>№</fpage>
          1. -
          <fpage>С</fpage>
          .
          <fpage>57</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          10.
          <string-name>
            <surname>Wang</surname>
            <given-names>B. F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            <given-names>C. L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            <given-names>G. H.</given-names>
          </string-name>
          <article-title>A simple approach to implementing multiplication with small tables //</article-title>
          <source>Information Processing Letters</source>
          .
          <article-title>-</article-title>
          <year>1991</year>
          . -
          <fpage>Т</fpage>
          .
          <year>37</year>
          . -
          <fpage>№</fpage>
          6. -
          <fpage>С</fpage>
          .
          <fpage>327</fpage>
          -
          <lpage>329</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          1.
          <string-name>
            <surname>Ivanichkina</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Neporada</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2015</year>
          ).
          <article-title>Computer Simulator of Failures in Super Large Data Storage</article-title>
          .
          <source>Contemporary Engineering Sciences.-2015</source>
          .-
          <volume>8</volume>
          (
          <issue>28</issue>
          ).-C,
          <fpage>1679</fpage>
          -
          <lpage>1691</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          2.
          <string-name>
            <surname>Ivanichkina</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Neporada</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          (
          <year>2014</year>
          ).
          <article-title>Mathematical methods and models of improving data storage reliability including those based on finite field theory</article-title>
          .
          <source>Contemporary Engineering Sciences</source>
          ,
          <volume>7</volume>
          (
          <issue>28</issue>
          ),
          <fpage>1589</fpage>
          -
          <lpage>1602</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          3.
          <source>ETSI EN 300 744 V1.6</source>
          .
          <issue>1</issue>
          (
          <issue>2009</issue>
          -
          <fpage>01</fpage>
          )
          <article-title>Digital Video Broadcasting (DVB); Framing structure, channel coding and modulation for digital terrestrial television // European Standard (Telecommunications series</article-title>
          ),
          <volume>66</volume>
          p.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          4.
          <string-name>
            <surname>Seroussi</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          (
          <year>1998</year>
          ).
          <article-title>Table of low-weight binary irreducible polynomials. Hewlett-Packard Laboratories</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          5.
          <string-name>
            <surname>Karacuba</surname>
            ,
            <given-names>A. A.</given-names>
          </string-name>
          (
          <year>1975</year>
          ).
          <article-title>Berechnungen und die Kompliziertheit von Beziehungen</article-title>
          .
          <source>Elektronische Informationsverarbeitung Kybernetik</source>
          ,
          <volume>11</volume>
          ,
          <fpage>603</fpage>
          -
          <lpage>606</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          6.
          <string-name>
            <surname>Toom</surname>
            ,
            <given-names>A. L.</given-names>
          </string-name>
          (
          <year>1963</year>
          , June).
          <article-title>The complexity of a scheme of functional elements realizing the multiplication of integers</article-title>
          .
          <source>In Soviet Mathematics Doklady</source>
          (Vol.
          <volume>3</volume>
          , No.
          <issue>4</issue>
          , pp.
          <fpage>714</fpage>
          -
          <lpage>716</lpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          7.
          <string-name>
            <surname>Schönhage</surname>
            ,
            <given-names>D. D. A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Strassen</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          (
          <year>1971</year>
          ).
          <article-title>Schnelle multiplikation grosser zahlen</article-title>
          .
          <source>Computing</source>
          ,
          <volume>7</volume>
          (
          <issue>3-4</issue>
          ),
          <fpage>281</fpage>
          -
          <lpage>292</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fürer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          (
          <year>2009</year>
          ).
          <article-title>Faster integer multiplication</article-title>
          .
          <source>SIAM Journal on Computing</source>
          ,
          <volume>39</volume>
          (
          <issue>3</issue>
          ),
          <fpage>979</fpage>
          -
          <lpage>1005</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          9.
          <string-name>
            <surname>Koc</surname>
            ,
            <given-names>C. K.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Acar</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          (
          <year>1998</year>
          ).
          <article-title>Montgomery multiplication in GF (2k)</article-title>
          .
          <source>Designs, Codes and Cryptography</source>
          ,
          <volume>14</volume>
          (
          <issue>1</issue>
          ),
          <fpage>57</fpage>
          -
          <lpage>69</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          10.
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>B. F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>C. L.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Chen</surname>
            ,
            <given-names>G. H.</given-names>
          </string-name>
          (
          <year>1991</year>
          ).
          <article-title>A simple approach to implementing multiplication with small tables</article-title>
          .
          <source>Information Processing Letters</source>
          ,
          <volume>37</volume>
          (
          <issue>6</issue>
          ),
          <fpage>327</fpage>
          -
          <lpage>329</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>