u16.h - Man Page

16-разрядные слова

Synopsis

#include 'bee2/defs.h'
#include 'bee2/core/safe.h'

Макросы

#define u16RotHi(w,  d)   ((u16)((w) << (d) | (w) >> (16 - (d))))
Циклический сдвиг u16-слова на d позиций в сторону старших разрядов
#define u16RotLo(w,  d)   ((u16)((w) >> (d) | (w) << (16 - (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 слово

size_t FAST u16CTZ (register u16 w)

Определяется длина серии из нулевых младших битов u16-слова w.

Возвращает

Длина серии.

Прим.

CTZ == Count of Trailing Zeros

Регулярность

Имеется ускоренная нерегулярная редакция.

Аргументы

w слово

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 приемник  
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 из исходного текста.

Info

Вт 23 Янв 2024 00:00:00 Библиотека Bee2