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

浏览源代码.

函数

mp_limb_t lmmp_gcd_11_ (mp_limb_t u, mp_limb_t v)
 计算 [numa,na] 在B^n 下的逆元
 
mp_limb_t lmmp_gcd_1_ (mp_srcptr up, mp_size_t un, mp_limb_t vlimb)
 计算两个无符号整数的最大公约数
 

函数说明

◆ lmmp_gcd_11_()

mp_limb_t lmmp_gcd_11_ ( mp_limb_t  u,
mp_limb_t  v 
)

计算 [numa,na] 在B^n 下的逆元

参数
dst结果指针(长度为 n 个limb)
numa待求逆元指针(长度为 na 个limb)
na待求逆元的 limb 长度
n结果的 limb 长度
警告
n>=na>0, numa!=NULL, dst!=NULL, numa[0]%2==1, sep(dst,numa)
返回
dst 的实际 limb 长度

计算两个无符号整数的最大公约数

参数
u第一个无符号整数
v第二个无符号整数
返回
最大公约数
警告
u!=0, v!=0

在文件 gcd_1.c10 行定义.

10 {
11 lmmp_param_assert(u > 0 && v > 0);
12 int count, k;
13 k = lmmp_tailing_zeros_(u | v);
14 u >>= lmmp_tailing_zeros_(u);
15 v >>= lmmp_tailing_zeros_(v);
16 while (u != v) {
17 if (u > v) {
18 u -= v;
19 count = lmmp_tailing_zeros_(u);
20 u >>= count;
21 } else {
22 v -= u;
23 count = lmmp_tailing_zeros_(v);
24 v >>= count;
25 }
26 }
27 return u << k;
28}
#define k
#define lmmp_param_assert(x)
Definition lmmp.h:398
int lmmp_tailing_zeros_(mp_limb_t x)
计算一个单精度数(limb)中末尾零的个数
Definition tiny.c:54

引用了 k, lmmp_param_assert , 以及 lmmp_tailing_zeros_().

被这些函数引用 lmmp_gcd_1_(), lmmp_gcd_22_() , 以及 lmmp_gcd_lehmer_().

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ lmmp_gcd_1_()

mp_limb_t lmmp_gcd_1_ ( mp_srcptr  up,
mp_size_t  un,
mp_limb_t  vlimb 
)

计算两个无符号整数的最大公约数

参数
up第一个无符号整数指针
un第一个无符号整数的 limb 长度
v第二个无符号整数
警告
v!=0, up!=NULL, un>0
返回
最大公约数

在文件 gcd_1.c30 行定义.

30 {
31 lmmp_param_assert(un > 0);
32 lmmp_param_assert(vlimb > 0);
33 mp_limb_t ulimb;
34 if (un == 1) {
35 ulimb = up[0];
36 }
37 else {
38 ulimb = lmmp_mod_1_(up, un, vlimb);
39 }
40 if (ulimb == 0)
41 return vlimb;
42 else
43 return lmmp_gcd_11_(ulimb, vlimb);
44}
mp_limb_t lmmp_gcd_11_(mp_limb_t u, mp_limb_t v)
计算 [numa,na] 在B^n 下的逆元
Definition gcd_1.c:10
uint64_t mp_limb_t
Definition lmmp.h:211
mp_limb_t lmmp_mod_1_(mp_srcptr numa, mp_size_t na, mp_limb_t x)
单精度数取余
Definition div.c:20

引用了 lmmp_gcd_11_(), lmmp_mod_1_() , 以及 lmmp_param_assert.

被这些函数引用 lmmp_gcd_lehmer_().

+ 函数调用图:
+ 这是这个函数的调用关系图: