1u64.h(3) Library Functions Manual u64.h(3)
2
3
4
6 u64.h - 64-разрядные слова
7
8
10 #include 'bee2/defs.h'
11 #include 'bee2/core/safe.h'
12
13
14 Макросы
15 #define u64RotHi(w, d) ((u64)((w) << (d) | (w) >> (64 - (d))))
16 Циклический сдвиг слова u64 на d позиций в сторону старших разрядов
17 #define u64RotLo(w, d) ((u64)((w) >> (d) | (w) << (64 - (d))))
18 Циклический сдвиг слова u64 на d позиций в сторону младших разрядов
19
20 Функции
21 u64 u64Rev (register u64 w)
22 Реверс октетов слова
23 void u64Rev2 (u64 buf[], size_t count)
24 Реверс октетов массива слов
25 size_t u64Weight (register u64 w)
26 Вес
27 bool_t u64Parity (register u64 w)
28 Четность
29 size_t u64CTZ (register u64 w)
30 Число младших нулевых битов
31 size_t u64CLZ (register u64 w)
32 Число старших нулевых битов
33 u64 u64Shuffle (register u64 w)
34 Тасование битов
35 u64 u64Deshuffle (register u64 w)
36 Обратное тасование битов
37 u64 u64NegInv (register u64 w)
38 Аддитивно-мультипликативное обращение
39 void u64From (u64 dest[], const void *src, size_t count)
40 Загрузка из буфера памяти
41 void u64To (void *dest, size_t count, const u64 src[])
42 Выгрузка в буфер памяти
43
45 Реализованы операции над 64-разрядными словами и массивами таких слов.
46
47 Предусловие
48 В функции передаются корректные буферы памяти.
49
51 #define u64RotHi(w, d) ((u64)((w) << (d) | (w) >> (64 - (d))))
52 Предусловие
53 0 < d < 64.
54
55 #define u64RotLo(w, d) ((u64)((w) >> (d) | (w) << (64 - (d))))
56 Предусловие
57 0 < d < 64.
58
60 size_t u64CLZ (register u64 w)
61 Определяется длина серии из нулевых старших битов машинного слова w.
62
63 Возвращает
64 Длина серии.
65
66 Прим.
67 CLZ == Count of Leading Zeros
68
69 Регулярность
70 Имеется ускоренная нерегулярная редакция.
71
72 Аргументы
73 w слово
74
75 size_t u64CTZ (register u64 w)
76 Определяется длина серии из нулевых младших битов u64-слова w.
77
78 Возвращает
79 Длина серии.
80
81 Прим.
82 CTZ == Count of Trailing Zeros
83
84 Регулярность
85 Имеется ускоренная нерегулярная редакция.
86
87 Аргументы
88 w слово
89
90 u64 u64Deshuffle (register u64 w)
91 Четные биты u64-слова w группируются в его младшей половинке, нечетные
92 -- в старшей.
93
94 Возвращает
95 Слово с группированными битами.
96
97 Аргументы
98 w слово
99
100 void u64From (u64 dest[], const void * src, size_t count)
101 Буфер [count]src преобразуется в массив [(count + 7) / 8]dest слов u64.
102
103 Аргументы
104 dest приемник
105 src источник
106 count число октетов
107
108 u64 u64NegInv (register u64 w)
109 Выполняется адиттивное и мультипликативное обращение
110 u64-слова-как-числа w по модулю 2^64.
111
112 Предусловие
113 w -- нечетное.
114
115 Возвращает
116 - w^{-1} \mod 2^64.
117
118 Прим.
119 Вычисляемое слово используется в редукции Монтгомери.
120
121 Аргументы
122 w слово
123
124 bool_t u64Parity (register u64 w)
125 Определяется сумма по модулю 2 битов u64-слова w.
126
127 Возвращает
128 Сумма битов.
129
130 Аргументы
131 w слово
132
133 u64 u64Rev (register u64 w)
134 Выполняется реверс октетов u64-слова w.
135
136 Возвращает
137 Слово с переставленными октетами.
138
139 Аргументы
140 w слово
141
142 void u64Rev2 (u64 buf[], size_t count)
143 Выполняется реверс октетов массива [count]buf из u64-слов.
144
145 Аргументы
146 buf массив слов
147 count число элементов
148
149 u64 u64Shuffle (register u64 w)
150 Биты младшей половинки u64-слова w перемещаются в четные позиции, биты
151 старшей половинки -- в нечетные.
152
153 Возвращает
154 Слово с растасованными битами.
155
156 Аргументы
157 w слово
158
159 void u64To (void * dest, size_t count, const u64 src[])
160 Буфер [count]dest формируется по массиву [(count + 7) / 8]src слов u64.
161
162 Аргументы
163 dest приемник
164 count число октетов
165 src источник
166
167 size_t u64Weight (register u64 w)
168 Определяется число ненулевых битов в u64-слове w.
169
170 Возвращает
171 Число ненулевых битов.
172
173 Аргументы
174 w слово
175
177 Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
178
179
180
181Библиотека Bee2 Ср 19 Июл 2023 00:00:00 u64.h(3)