u64.h - Man Page

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

Synopsis

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

Макросы

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

size_t FAST u64CTZ (register u64 w)

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

Возвращает

Длина серии.

Прим.

CTZ == Count of Trailing Zeros

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

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

Аргументы

w слово

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

Info

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