u16.h - Man Page
16-разрядные слова
Synopsis
#include 'bee2/defs.h'
#include 'bee2/core/safe.h'
Макросы
#define u16RotHi(w, d)
Циклический сдвиг u16-слова на d позиций в сторону старших разрядов
#define u16RotLo(w, d)
Циклический сдвиг u16-слова на d позиций в сторону младших разрядов
Функции
u16 u16Rev (register u16 w)
Реверс октетов
void u16Rev2 (u16 buf[], size_t count)
Реверс октетов массива слов
size_t u16Weight (register u16 w)
Вес
bool_t u16Parity (register u16 w)
Четность
size_t u16CTZ (register u16 w)
Число младших нулевых битов
size_t u16CLZ (register u16 w)
Число старших нулевых битов
u16 u16Shuffle (register u16 w)
Тасование битов
u16 u16Deshuffle (register u16 w)
Обратное тасование битов
u16 u16NegInv (register u16 w)
Аддитивно-мультипликативное обращение
void u16From (u16 dest[], const void *src, size_t count)
Загрузка из буфера памяти
void u16To (void *dest, size_t count, const u16 src[])
Выгрузка в буфер памяти
Подробное описание
Реализованы операции над 16-разрядными словами и массивами таких слов.
Предусловие
В функции передаются корректные буферы памяти.
Макросы
#define u16RotHi( w, d)
Макроопределение:
((u16)((w) << (d) | (w) >> (16 - (d))))
Предусловие
0 < d < 16.
#define u16RotLo( w, d)
Макроопределение:
((u16)((w) >> (d) | (w) << (16 - (d))))
Предусловие
0 < d < 16.
Функции
size_t FAST u16CLZ (register u16 w)
Определяется длина серии из нулевых старших битов машинного слова w.
Возвращает
Длина серии.
- Прим.
CLZ == Count of Leading Zeros
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
w слово
Перекрестные ссылки u16CLZ().
Используется в u16CLZ().
size_t FAST u16CTZ (register u16 w)
Определяется длина серии из нулевых младших битов u16-слова w.
Возвращает
Длина серии.
- Прим.
CTZ == Count of Trailing Zeros
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
w слово
Перекрестные ссылки u16CTZ().
Используется в u16CTZ().
u16 u16Deshuffle (register u16 w)
Четные биты u16-слова w группируются в его младшей половинке, нечетные -- в старшей.
Возвращает
Слово с группированными битами.
- Аргументы
w слово
void u16From (u16 dest[], const void * src, size_t count)
Буфер [count]src преобразуется в массив [(count + 1) / 2]dest слов u16.
- Аргументы
dest приемник
src источник
count число октетов
u16 u16NegInv (register u16 w)
Выполняется адиттивное и мультипликативное обращение u16-слова-как-числа w по модулю 2^16.
- Предусловие
w -- нечетное.
Возвращает
- w^{-1} \mod 2^16.
Прим.
Вычисляемое слово используется в редукции Монтгомери.
- Аргументы
w слово
bool_t u16Parity (register u16 w)
Определяется сумма по модулю 2 битов u16-слова w.
Возвращает
Сумма битов.
- Аргументы
w слово
u16 u16Rev (register u16 w)
Выполняется реверс октетов u16-слова w.
Возвращает
Слово с переставленными октетами.
- Аргументы
w слово
void u16Rev2 (u16 buf[], size_t count)
Выполняется реверс октетов массива [count]buf из u16-слов.
- Аргументы
buf [in,out] приемник
count число элементов
u16 u16Shuffle (register u16 w)
Биты младшей половинки u16-слова w перемещаются в четные позиции, биты старшей половинки -- в нечетные.
Возвращает
Слово с растасованными битами.
- Аргументы
w слово
void u16To (void * dest, size_t count, const u16 src[])
Буфер [count]dest формируется по массиву [(count + 1) / 2]src слов u16.
- Аргументы
dest приемник
count число октетов
src источник
size_t u16Weight (register u16 w)
Определяется число ненулевых битов в u16-слове w.
Возвращает
Число ненулевых битов.
- Аргументы
w слово
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.