233 {
237
238 if (un < vn) {
241 } else if (un == vn) {
243 if (cmp == 0) {
245 return un;
246 } else if (cmp < 0) {
248 }
249 }
250
251
254
255#define an un
256#define bn vn
258
259
265 ms.
mp = temp + (
an + 1);
266 ms.
np = temp + (
an + 1) * 2;
267
270
271 bool bzero = false;
272 while (bzero == false) {
273 if (
an > 1 &&
bn == 1) {
275 return 1;
276 }
else if (
an == 1 &&
bn == 1) {
278 return 1;
279 }
280
283
288 while (dst[
bn - 1] == 0 &&
bn > 0) {
290 }
292 bzero = true;
293 else
295 } else {
300 }
301 }
302 }
306#undef an
307#undef bn
308}
static void lmmp_gcd_lehmer_step_(slong u, slong v, mp_gcd_lehmer_t *gcd)
static bool lmmp_lehmer_mul_(mp_ptr a, mp_size_t *an, mp_ptr b, mp_size_t *bn, mp_gcd_lehmer_t *M, lehmer_stack_t *ms)
/ a \ = / A B \ * / a \ \ b / \ C D / \ b /
static void lmmp_lehmer_extract_(mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn, slong *a, slong *b)
#define LMMP_SWAP(x, y, type)
#define lmmp_copy(dst, src, n)
const mp_limb_t * mp_srcptr
#define lmmp_param_assert(x)
static int lmmp_cmp_(mp_srcptr numa, mp_srcptr numb, mp_size_t n)
大数比较函数(内联)
void lmmp_div_(mp_ptr dstq, mp_ptr dstr, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
大数除法和取模操作
mp_limb_t lmmp_gcd_1_(mp_srcptr up, mp_size_t un, mp_limb_t vlimb)
计算两个无符号整数的最大公约数
mp_limb_t lmmp_gcd_11_(mp_limb_t u, mp_limb_t v)
计算 [numa,na] 在B^n 下的逆元
#define BALLOC_TYPE(n, type)