Обновление проекта ZCA и другие новости

Уважаемые подписчики.

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

Читать далее «Обновление проекта ZCA и другие новости»

Беседы о программировании :: 025 :: Длинная арифметика 15 :: Деление m/n

Описана процедура деления длинных чисел (векторов). Эта беседа фактически завершает основную часть цикла по длинной арифметике. Дальнейшие серии будут посвящены более сложным алгоритмам и работе над проектом ZCA.

Беседы о программировании 023 :: Длинная арифметика 13 :: Деление 3/2. Часть II

Здесь завершается разговор о деление трёх лимбов на два. Показано как исправить ошибку из беседы 021 и рассмотрен алгоритм деления 3/2 без удвоенного лимба.

Беседы о программировании 022 :: Длинная арифметика 12 :: Деление 2/1. Часть II

Изложены два алгоритма деления двух лимбов на один в том случае, когда удвоенного лимба нет. Эти алгоритмы сравниваются с теми, что изложены в беседе 018.

Беседы о программировании 021 :: Длинная арифметика 11 :: Деление 3/2. Часть I

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

Беседы о программировании 018 :: Длинная арифметика 10 :: Деление 2/1. Часть I

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

Источники, которые указаны в презентации:

  • N. Moller, T. Granlund. Improved division by invariant integers.
  • R. Brent, P. Zimmermann. Modern Computer Arithmetic.
  • C. Burnikel, J. Ziegler. Fast Recursive Division.
  • Исходники Mini-GMP.

Беседы о программировании 015 :: Длинная арифметика 09 :: Умножение вектора на вектор

В этой беседе я начинаю рассказ про умножение вектора на вектор. Излагается только тривиальный алгоритм и указаны названия алгоритмов, которые будут изложены впоследствии. Здесь же выполнено сравнение нашего умножения, версии из MiniGMP и реализации на ассемблере из библиотеки MPIR для Core 2 (x86_64).

Беседы о программировании 014 :: Длинная арифметика 08 :: Умножение вектора на лимб со сложением и вычитанием

Рассматривается операция умножения вектора на лимб с добавлением результата к другому вектору и с вычитанием результата из другого вектора. Выполнено сравнение трех вариантов исполнения и реализации из Mini-GMP.

Напоминаю, что проект по длинной арифметике теперь на GitHub.

Беседы о программировании 013 :: Длинная арифметика 07 :: Умножение вектора на лимб

Здесь показано как умножить вектор на число размером в один лимб. Описано два способа: технология LoHi и умножение через двойной лимб. Рассмотрена попытка переплюнуть компилятор на ассемблере.

Читать далее «Беседы о программировании 013 :: Длинная арифметика 07 :: Умножение вектора на лимб»