25 {
30 mp_size_t n = na >= 2 * nb ? (na + 3) >> 2 : (nb + 1) >> 1, s = na - 3 * n, t = nb - n;
31 int vm1_neg;
34
35#define a0 numa
36#define a1 (numa + n)
37#define a2 (numa + 2 * n)
38#define a3 (numa + 3 * n)
39#define b0 numb
40#define b1 (numb + n)
41
42#define v0 dst
43#define v1 (dst + 2 * n)
44#define vinf (dst + 4 * n)
45#define vm1 tp
46#define v2 (tp + 2 * n + 2)
47
48#define bm1 dst
49#define am1 (dst + n)
50#define ap1 tp
51#define bp1 (tp + n + 1)
52#define ap2 ap1
53#define bp2 bp1
54#define a13 bp1
55
56
60 if (vm1_neg)
62 else
65
66
67 if (t == n) {
70 vm1_neg ^= 1;
71 } else {
73 }
74 } else {
78 vm1_neg ^= 1;
79 } else {
82 }
84 }
85
86
87 if (s > t)
89 else
93
94
97
98
100 if (s != n)
105
106
108
109
111
112
114 if (am1h)
116 else
118
119
121
124#undef a0
125#undef a1
126#undef a2
127#undef a3
128#undef b0
129#undef b1
130
131#undef v0
132#undef v1
133#undef vinf
134#undef vm1
135#undef v2
136
137#undef bm1
138#undef am1
139#undef ap1
140#undef bp1
141#undef ap2
142#undef bp2
143#undef a13
144}
#define lmmp_zero(dst, n)
#define lmmp_param_assert(x)
static mp_limb_t lmmp_add_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
大数加法静态内联函数 [dst,na]=[numa,na]+[numb,nb]
static int lmmp_cmp_(mp_srcptr numa, mp_srcptr numb, mp_size_t n)
大数比较函数(内联)
static mp_limb_t lmmp_add_1_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_limb_t x)
大数加单精度数静态内联函数 [dst,na]=[numa,na]+x
void lmmp_mul_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
不等长大数乘法操作 [dst,na+nb] = [numa,na] * [numb,nb]
void lmmp_mul_n_(mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n)
等长大数乘法操作 [dst,2*n] = [numa,n] * [numb,n]
mp_limb_t lmmp_addshl1_n_(mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n)
加法结合左移1位操作 [dst,n] = [numa,n] + ([numb,n] << 1)
mp_limb_t lmmp_add_n_sub_n_(mp_ptr dsta, mp_ptr dstb, mp_srcptr numa, mp_srcptr numb, mp_size_t n)
同时执行n位加法和减法 ([dsta,n],[dstb,n]) = ([numa,n]+[numb,n],[numa,n]-[numb,n])
static mp_limb_t lmmp_sub_1_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_limb_t x)
大数减单精度数静态内联函数 [dst,na]=[numa,na]-x
mp_limb_t lmmp_add_n_(mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n)
无进位的n位加法 [dst,n] = [numa,n] + [numb,n]
static int lmmp_zero_q_(mp_srcptr p, mp_size_t n)
大数判零函数(内联)
#define SALLOC_TYPE(n, type)
void lmmp_toom_interp5_(mp_ptr dst, mp_ptr v2, mp_ptr vm1, mp_size_t n, mp_size_t spt, int vm1_neg, mp_limb_t vinf0)
Toom插值计算(5点插值),用于Toom-33和Toom-42乘法算法