|
LAMMP 4.2.0
Lamina High-Precision Arithmetic Library
|
#include "../../../include/lammp/lmmpn.h"#include "../../../include/lammp/numth.h"#include "../../../include/lammp/impl/tmp_alloc.h"
gcd_lehmer.c 的引用(Include)关系图:结构体 | |
| struct | lehmer_stack_t |
| struct | mp_gcd_lehmer_t |
| Copyright (C) 2026 HJimmyK(Jericho Knox) 更多... | |
宏定义 | |
| #define | A (gcd->m11) |
| #define | A (M->m11) |
| #define | an (*an) |
| #define | an un |
| #define | B (gcd->m12) |
| #define | B (M->m12) |
| #define | bn (*bn) |
| #define | bn vn |
| #define | C (gcd->m21) |
| #define | C (M->m21) |
| #define | D (gcd->m22) |
| #define | D (M->m22) |
| #define | LEHMER_EXACT_BITS 63 |
| #define | LEHMER_MIN_V 0x100000000ull |
函数 | |
| mp_size_t | lmmp_gcd_lehmer_ (mp_ptr dst, mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn) |
| 计算两个无符号整数的最大公约数(Lehmer算法) | |
| static void | lmmp_gcd_lehmer_step_ (slong u, slong v, mp_gcd_lehmer_t *gcd) |
| static void | lmmp_lehmer_extract_ (mp_srcptr up, mp_size_t un, mp_srcptr vp, mp_size_t vn, slong *a, slong *b) |
| 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 / | |
| struct lehmer_stack_t |
| struct mp_gcd_lehmer_t |
Copyright (C) 2026 HJimmyK(Jericho Knox)
This file is part of LAMMP.
LAMMP is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License (LGPL) as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
This program is distributed WITHOUT ANY WARRANTY.
See https://www.gnu.org/licenses/.
在文件 gcd_lehmer.c 第 20 行定义.
mp_gcd_lehmer_t 的协作图:| 成员变量 | ||
|---|---|---|
| slong | m11 | |
| slong | m12 | |
| slong | m21 | |
| slong | m22 | |
| #define an (*an) |
| #define bn (*bn) |
| #define LEHMER_EXACT_BITS 63 |
在文件 gcd_lehmer.c 第 26 行定义.
| #define LEHMER_MIN_V 0x100000000ull |
在文件 gcd_lehmer.c 第 25 行定义.
计算两个无符号整数的最大公约数(Lehmer算法)
| dst | 结果指针(长度至少为 min(un,vn)) |
| up | 第一个无符号整数指针 |
| un | 第一个无符号整数的 limb 长度 |
| vp | 第二个无符号整数指针 |
| vn | 第二个无符号整数的 limb 长度 |
在文件 gcd_lehmer.c 第 242 行定义.
引用了 an, BALLOC_TYPE, bn, lmmp_cmp_(), lmmp_copy, lmmp_div_(), lmmp_gcd_11_(), lmmp_gcd_1_(), lmmp_gcd_lehmer_step_(), lmmp_lehmer_extract_(), lmmp_lehmer_mul_(), lmmp_param_assert, LMMP_SWAP, n, TEMP_B_DECL , 以及 TEMP_B_FREE.
函数调用图:
|
static |
在文件 gcd_lehmer.c 第 28 行定义.
引用了 A, B, C, D, LEHMER_MIN_V, lmmp_debug_assert, n , 以及 t.
被这些函数引用 lmmp_gcd_lehmer_().
这是这个函数的调用关系图:
|
static |
在文件 gcd_lehmer.c 第 63 行定义.
引用了 LEHMER_EXACT_BITS, LIMB_BITS, lmmp_limb_bits_, lmmp_param_assert , 以及 n.
被这些函数引用 lmmp_gcd_lehmer_().
这是这个函数的调用关系图:
|
static |
/ a \ = / A B \ * / a \ \ b / \ C D / \ b /
在文件 gcd_lehmer.c 第 106 行定义.
引用了 A, an, B, bn, c, C, D, lmmp_cmp_(), lmmp_copy, lmmp_debug_assert, lmmp_mul_1_(), lmmp_sub_() , 以及 n.
被这些函数引用 lmmp_gcd_lehmer_().
函数调用图:
这是这个函数的调用关系图: