23 {
28 mp_size_t s = na >> 1, n = na - s, t = nb - n;
30 int vm1_neg = 0;
32
33#define a0 numa
34#define a1 (numa + n)
35#define b0 numb
36#define b1 (numb + n)
37#define asm1 dst
38#define bsm1 (dst + n)
39
40 if (s == n) {
43 vm1_neg = 1;
44 } else
46 } else {
50 vm1_neg = 1;
51 } else
53 }
54
55 if (t == n) {
58 vm1_neg ^= 1;
59 } else
61 } else {
65 vm1_neg ^= 1;
66 } else
68 }
69
71
72#undef asm1
73#undef bsm1
74#define v0 dst
75#define vinf (dst + 2 * n)
76
78
80
83 cy +=
lmmp_add_(dst + 2 * n, dst + 2 * n, n,
vinf + n, s + t - n);
84
85 if (vm1_neg)
87 else
89
90
92
93 if (cy < 0)
95 else
98}
#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)
大数比较函数(内联)
#define lmmp_dec(p)
大数减1宏(预期无借位)
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]
static mp_limb_t lmmp_sub_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
大数减法静态内联函数 [dst,na]=[numa,na]-[numb,nb]
mp_limb_t lmmp_sub_n_(mp_ptr dst, mp_srcptr numa, mp_srcptr numb, mp_size_t n)
无借位的n位减法 [dst,n] = [numa,n] - [numb,n]
#define lmmp_inc_1(p, inc)
大数加指定值宏(预期无进位)
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)