u64.h - Man Page
64-разрядные слова
Synopsis
#include 'bee2/defs.h'
#include 'bee2/core/safe.h'
Макросы
#define u64RotHi(w, d)
Циклический сдвиг слова u64 на d позиций в сторону старших разрядов
#define u64RotLo(w, d)
Циклический сдвиг слова u64 на d позиций в сторону младших разрядов
Функции
u64 u64Rev (register u64 w)
Реверс октетов слова
void u64Rev2 (u64 buf[], size_t count)
Реверс октетов массива слов
size_t u64Weight (register u64 w)
Вес
bool_t u64Parity (register u64 w)
Четность
size_t u64CTZ (register u64 w)
Число младших нулевых битов
size_t u64CLZ (register u64 w)
Число старших нулевых битов
u64 u64Shuffle (register u64 w)
Тасование битов
u64 u64Deshuffle (register u64 w)
Обратное тасование битов
u64 u64NegInv (register u64 w)
Аддитивно-мультипликативное обращение
void u64From (u64 dest[], const void *src, size_t count)
Загрузка из буфера памяти
void u64To (void *dest, size_t count, const u64 src[])
Выгрузка в буфер памяти
Подробное описание
Реализованы операции над 64-разрядными словами и массивами таких слов.
Предусловие
В функции передаются корректные буферы памяти.
Макросы
#define u64RotHi( w, d)
Макроопределение:
((u64)((w) << (d) | (w) >> (64 - (d))))
Предусловие
0 < d < 64.
#define u64RotLo( w, d)
Макроопределение:
((u64)((w) >> (d) | (w) << (64 - (d))))
Предусловие
0 < d < 64.
Функции
size_t FAST u64CLZ (register u64 w)
Определяется длина серии из нулевых старших битов машинного слова w.
Возвращает
Длина серии.
- Прим.
CLZ == Count of Leading Zeros
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
w слово
Перекрестные ссылки u64CLZ().
Используется в u64CLZ().
size_t FAST u64CTZ (register u64 w)
Определяется длина серии из нулевых младших битов u64-слова w.
Возвращает
Длина серии.
- Прим.
CTZ == Count of Trailing Zeros
Регулярность
Имеется ускоренная нерегулярная редакция.
- Аргументы
w слово
Перекрестные ссылки u64CTZ().
Используется в u64CTZ().
u64 u64Deshuffle (register u64 w)
Четные биты u64-слова w группируются в его младшей половинке, нечетные -- в старшей.
Возвращает
Слово с группированными битами.
- Аргументы
w слово
void u64From (u64 dest[], const void * src, size_t count)
Буфер [count]src преобразуется в массив [(count + 7) / 8]dest слов u64.
- Аргументы
dest приемник
src источник
count число октетов
u64 u64NegInv (register u64 w)
Выполняется адиттивное и мультипликативное обращение u64-слова-как-числа w по модулю 2^64.
- Предусловие
w -- нечетное.
Возвращает
- w^{-1} \mod 2^64.
Прим.
Вычисляемое слово используется в редукции Монтгомери.
- Аргументы
w слово
bool_t u64Parity (register u64 w)
Определяется сумма по модулю 2 битов u64-слова w.
Возвращает
Сумма битов.
- Аргументы
w слово
u64 u64Rev (register u64 w)
Выполняется реверс октетов u64-слова w.
Возвращает
Слово с переставленными октетами.
- Аргументы
w слово
void u64Rev2 (u64 buf[], size_t count)
Выполняется реверс октетов массива [count]buf из u64-слов.
- Аргументы
buf [in,out] массив слов
count число элементов
u64 u64Shuffle (register u64 w)
Биты младшей половинки u64-слова w перемещаются в четные позиции, биты старшей половинки -- в нечетные.
Возвращает
Слово с растасованными битами.
- Аргументы
w слово
void u64To (void * dest, size_t count, const u64 src[])
Буфер [count]dest формируется по массиву [(count + 7) / 8]src слов u64.
- Аргументы
dest приемник
count число октетов
src источник
size_t u64Weight (register u64 w)
Определяется число ненулевых битов в u64-слове w.
Возвращает
Число ненулевых битов.
- Аргументы
w слово
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.