7#include "../../../include/lammp/impl/longlong.h"
8#include "../../../include/lammp/lmmpn.h"
9#include "../../../include/lammp/numth.h"
21 if (u[1] == 0 && v[1] == 0) {
25 }
else if (u[1] == 0) {
29 }
else if (v[1] == 0) {
35 if (u[0] == 0 && v[0] == 0) {
39 }
else if (u[0] == 0) {
43 }
else if (v[0] == 0) {
56 while (!(u[0] == v[0] && u[1] == v[1])) {
57 if (u[1] == 0 && v[1] != 0)
goto gcd_1_2;
58 if (v[1] == 0 && u[1] != 0)
goto gcd_2_1;
59 if (u[1] == 0 && v[1] == 0)
goto gcd_1_1;
66 }
else if (v[1] == 0) {
78 }
else if (u[1] == 0) {
130 while (u[0] != v[0]) {
143 return dst[1] == 0 ? 1 : 2;
154 if (u[1] == 0 && u[0] == 0) {
mp_size_t lmmp_gcd_2_(mp_ptr dst, mp_srcptr up, mp_size_t un, mp_srcptr vp)
计算两个无符号整数的最大公约数
mp_size_t lmmp_gcd_22_(mp_ptr dst, mp_srcptr up, mp_srcptr vp)
计算两个无符号整数的最大公约数
const mp_limb_t * mp_srcptr
#define lmmp_param_assert(x)
int lmmp_tailing_zeros_(mp_limb_t x)
计算一个单精度数(limb)中末尾零的个数
void lmmp_mod_2_(mp_srcptr numa, mp_size_t na, mp_ptr numb)
双精度数取余 (除数为2个limb)
#define _u128lshl(x, y, n)
#define _u128sub(r, x, y)
#define _u128lshr(x, y, n)
#define _u128sub64(r, x, _i64)
mp_limb_t lmmp_gcd_11_(mp_limb_t u, mp_limb_t v)
计算 [numa,na] 在B^n 下的逆元