LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
载入中...
搜索中...
未找到
extract_bits.c 文件参考
+ extract_bits.c 的引用(Include)关系图:

浏览源代码.

函数

mp_bitcnt_t lmmp_extract_bits_ (mp_srcptr restrict num, mp_size_t n, mp_limb_t *restrict ext, int bits)
 

函数说明

◆ lmmp_extract_bits_()

mp_bitcnt_t lmmp_extract_bits_ ( mp_srcptr restrict  num,
mp_size_t  n,
mp_limb_t *restrict  ext,
int  bits 
)

在文件 extract_bits.c9 行定义.

9 {
10 lmmp_param_assert(bits <= LIMB_BITS && bits > 0);
11 lmmp_param_assert(n > 0);
12 if (n == 1) {
13 int lb = lmmp_limb_bits_(num[0]);
14 if (lb <= bits) {
15 *ext = num[0];
16 return 0;
17 } else {
18 *ext = num[0] >> (lb - bits);
19 return lb - bits;
20 }
21 } else {
22 int lb = lmmp_limb_bits_(num[n - 1]);
23 if (lb < bits) {
24 *ext = num[n - 1] << (bits - lb);
25 *ext |= num[n - 2] >> (LIMB_BITS - bits + lb);
26 return LIMB_BITS * (n - 1) - (bits - lb);
27 } else if (lb == bits) {
28 *ext = num[n - 1];
29 return LIMB_BITS * (n - 1);
30 } else {
31 *ext = num[n - 1] >> (lb - bits);
32 return LIMB_BITS * (n - 1) + (lb - bits);
33 }
34 }
35}
#define LIMB_BITS
Definition lmmp.h:221
#define lmmp_param_assert(x)
Definition lmmp.h:398
int lmmp_limb_bits_(mp_limb_t x)
计算满足 2^k > x 的最小自然数k
Definition tiny.c:11

引用了 LIMB_BITS, lmmp_limb_bits_() , 以及 lmmp_param_assert.

+ 函数调用图: