|
LAMMP 4.2.0
Lamina High-Precision Arithmetic Library
|
#include "../../../include/lammp/impl/is_prime_table.h"#include "../../../include/lammp/impl/prime_table.h"#include "../../../include/lammp/impl/longlong.h"#include "../../../include/lammp/impl/mparam.h"#include "../../../include/lammp/lmmpn.h"#include "../../../include/lammp/numth.h"
is_prime_ulong.c 的引用(Include)关系图:宏定义 | |
| #define | MONT63_MAX ((ulong)(0x7fffffffffffffff)) |
| Copyright (C) 2026 HJimmyK(Jericho Knox) | |
| #define | ULONG_PRIME_MAX 0xFFFFFFFFFFFFFFC5ull |
| #define | ULONG_PRIME_MIN 2 |
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/.
在文件 is_prime_ulong.c 第 27 行定义.
| #define ULONG_PRIME_MAX 0xFFFFFFFFFFFFFFC5ull |
在文件 is_prime_ulong.c 第 452 行定义.
| #define ULONG_PRIME_MIN 2 |
在文件 is_prime_ulong.c 第 453 行定义.
在文件 is_prime_ulong.c 第 97 行定义.
引用了 mont63_reduce(), n , 以及 t.
被这些函数引用 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 62 行定义.
引用了 mont64_reduce(), n , 以及 t.
被这些函数引用 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:判断素数(无试除法)
| n | 待判断的数(建议为极有可能为素数的数) |
在文件 is_prime_ulong.c 第 293 行定义.
引用了 dj_base49, dj_base64, lmmp_binvert_ulong_(), lmmp_param_assert, miller_rabin_63(), miller_rabin_64(), MONT63_MAX, mont63_R2(), mont64_R2(), n, t, to_mont63() , 以及 to_mont64().
被这些函数引用 lmmp_is_prime_ulong_(), lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:from http://probableprime.org/download/example-primality.c Deterministic Miller-Rabin tests for 64-bit.
判断素数
Hashed 2-bases for n < 684630005672341 (slightly more than 2^49) Hashed 3-bases for n < 2^64
Based on Steve Worley's 2^32 example: http://www.mersenneforum.org/showthread.php?t=12209 With a 3-base encoding idea from Bradley Berg.
Copyright 2014, Dana Jacobsen dana@.nosp@m.acm..nosp@m.org
在文件 is_prime_ulong.c 第 259 行定义.
引用了 _udiv64_gen(), dj_base49, lmmp_is_prime_table_(), miller_rabin_32(), n, t , 以及 trial_div35711().
函数调用图:判断素数
| n | 待判断的数 |
在文件 is_prime_ulong.c 第 381 行定义.
引用了 lmmp_is_prime_notrial_(), lmmp_is_prime_table_(), n , 以及 trial_div35711().
函数调用图:大于n的下一个素数
| n | 起始点(不含) |
在文件 is_prime_ulong.c 第 455 行定义.
引用了 lmmp_is_prime_notrial_(), lmmp_prime_cnt16_(), MP_ULONG_MAX, n, prime_short_table, PRIME_SHORT_TABLE_SIZE, trial_div13(), trial_div17(), trial_div19(), trial_div23(), trial_div29(), trial_div31(), trial_div35711(), trial_div37(), trial_div41() , 以及 ULONG_PRIME_MAX.
函数调用图:计算 base^exp 对 mod 取模
| base | 底数 |
| exp | 指数 |
| mod | 模数 |
在文件 is_prime_ulong.c 第 108 行定义.
引用了 _udiv64_gen(), _udiv64by64_q_preinv(), lmmp_param_assert , 以及 n.
被这些函数引用 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:计算 base^exp 对 mod 取模
| base | 底数 |
| exp | 指数 |
| mod | 模数 |
在文件 is_prime_ulong.c 第 131 行定义.
引用了 from_mont63(), from_mont64(), lmmp_binvert_ulong_(), lmmp_powmod_uint_(), MONT63_MAX, mont63_mul(), mont63_R2(), mont64_mul(), mont64_R2(), MP_UINT_MAX, n, to_mont63() , 以及 to_mont64().
函数调用图:小于等于n的上一个素数
| n | 起始点(含) |
在文件 is_prime_ulong.c 第 485 行定义.
引用了 lmmp_is_prime_notrial_(), lmmp_prime_cnt16_(), n, prime_short_table, PRIME_SHORT_TABLE_N, trial_div13(), trial_div17(), trial_div19(), trial_div23(), trial_div29(), trial_div31(), trial_div35711(), trial_div37(), trial_div41() , 以及 ULONG_PRIME_MIN.
函数调用图:在文件 is_prime_ulong.c 第 167 行定义.
引用了 _udiv64by64_q_preinv(), n , 以及 t.
被这些函数引用 lmmp_is_prime_uint_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 is_prime_ulong.c 第 199 行定义.
引用了 mont63_mul(), n , 以及 t.
被这些函数引用 lmmp_is_prime_notrial_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 is_prime_ulong.c 第 223 行定义.
引用了 mont64_mul(), n , 以及 t.
被这些函数引用 lmmp_is_prime_notrial_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 102 行定义.
引用了 _u128mul, mont63_reduce(), n , 以及 t.
被这些函数引用 lmmp_powmod_ulong_() , 以及 miller_rabin_63().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 82 行定义.
引用了 clz_shl_u64, lmmp_div_1_s_() , 以及 n.
被这些函数引用 lmmp_is_prime_notrial_() , 以及 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 73 行定义.
引用了 _u128add, _u128mul, k, n, t , 以及 tmp.
被这些函数引用 from_mont63(), mont63_mul() , 以及 to_mont63().
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 67 行定义.
引用了 _u128mul, mont64_reduce(), n , 以及 t.
被这些函数引用 lmmp_powmod_ulong_() , 以及 miller_rabin_64().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 49 行定义.
引用了 lmmp_div_1_s_() , 以及 n.
被这些函数引用 lmmp_is_prime_notrial_() , 以及 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 29 行定义.
引用了 _u128mul, _u128sub64, c, k, n, t , 以及 tmp.
被这些函数引用 from_mont64(), mont64_mul() , 以及 to_mont64().
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 91 行定义.
引用了 _u128mul, mont63_reduce(), n , 以及 t.
被这些函数引用 lmmp_is_prime_notrial_() , 以及 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 56 行定义.
引用了 _u128mul, mont64_reduce(), n , 以及 t.
被这些函数引用 lmmp_is_prime_notrial_() , 以及 lmmp_powmod_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 395 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 402 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 409 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 416 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 423 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 430 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 437 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图:在文件 is_prime_ulong.c 第 444 行定义.
引用了 _udiv64by64_q_preinv(), _udiv64_t::magic , 以及 n.
被这些函数引用 lmmp_next_prime_ulong_() , 以及 lmmp_prev_prime_ulong_().
函数调用图:
这是这个函数的调用关系图: