16#include "../../../include/lammp/lmmpn.h"
17#include "../../../include/lammp/numth.h"
18#include "../../../include/lammp/impl/tmp_alloc.h"
25#define LEHMER_MIN_V 0x100000000ull
26#define LEHMER_EXACT_BITS 63
81 }
else if (
un ==
vn + 1) {
122 (
ms->tp)[
bn - 1] =
c;
126 }
else if (
an ==
bn) {
136 while (
a[
an - 1] == 0 &&
an > 0) {
156 (
ms->tp)[
ms->tn - 1] =
ca;
163 (
ms->mp)[
ms->mn - 1] =
ca;
166 if (
ms->tn >
ms->mn) {
169 }
else if (
ms->mn >
ms->tn) {
182 while (
ms->np[
ms->nn - 1] == 0 &&
ms->nn > 0) {
192 (
ms->tp)[
ms->tn - 1] =
ca;
199 (
ms->mp)[
ms->mn - 1] =
ca;
202 if (
ms->tn >
ms->mn) {
205 }
else if (
ms->mn >
ms->tn) {
218 while (
a[
an - 1] == 0 &&
an > 0) {
250 }
else if (
un ==
vn) {
255 }
else if (
cmp < 0) {
281 while (
bzero ==
false) {
282 if (
an > 1 &&
bn == 1) {
285 }
else if (
an == 1 &&
bn == 1) {
297 while (
dst[
bn - 1] == 0 &&
bn > 0) {
static void lmmp_gcd_lehmer_step_(slong u, slong v, mp_gcd_lehmer_t *gcd)
mp_size_t lmmp_gcd_lehmer_(mp_ptr dst, mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn)
计算两个无符号整数的最大公约数(Lehmer算法)
#define LEHMER_EXACT_BITS
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)
Copyright (C) 2026 HJimmyK(Jericho Knox)
#define LMMP_SWAP(x, y, type)
#define lmmp_copy(dst, src, n)
#define lmmp_debug_assert(x)
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)
大数比较函数(内联)
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_mul_1_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_limb_t x)
大数乘以单limb操作 [dst,na] = [numa,na] * x
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)
计算两个无符号整数的最大公约数
#define BALLOC_TYPE(n, type)