|
LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
|
#include <stdint.h>
longlong.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:结构体 | |
| struct | _udiv64_t |
宏定义 | |
| #define | _ADD_MARKER 0x40 |
| #define | _add_ssaaaa(sh, sl, ah, al, bh, bl) |
| #define | _mont64_add(r, x, y, mod2) |
| #define | _mont64_mul(r, x, y, mod, modInvNeg) |
| #define | _mont64_mulinto(x, y, mod, modInvNeg) |
| #define | _mont64_norm2(r, x, mod2) |
| #define | _mont64_sub(r, x, y, mod2) |
| #define | _mont64_toint(x, mod, modInvneg) |
| #define | _mont64_tomont(x, r2, mod, modInvNeg) |
| #define | _raw64_add(r, x, y) |
| #define | _raw64_sub(r, x, y, mod2) |
| #define | _sub_ddmmss(sh, sl, ah, al, bh, bl) |
| #define | _u128add(r, x, y) |
| #define | _u128add64(r, x, _i64) |
| #define | _u128cmp(x, y) ((x)[1] < (y)[1] || ((x)[1] == (y)[1] && (x)[0] < (y)[0])) |
| #define | _u128high(x) (*((x) + 1)) |
| #define | _u128low(x) (*(x)) |
| #define | _u128lshl(x, y, n) |
| #define | _u128lshr(x, y, n) |
| #define | _u128mul(r, x, y) _umul64to128_((x), (y), (r), (((r) + 1))) |
| #define | _u128sub(r, x, y) |
| #define | _u128sub64(r, x, _i64) |
| #define | _u128x64to192(i192, i128, i64) |
| #define | _u192add(i192, j192) |
| #define | _u192sub(i192, j192) |
| #define | _U64_SHIFT_MASK 0x3F |
| from https://libdivide.com/ | |
| #define | _udiv32by32_q_preinv(q, n0, dinv) |
| #define | _udiv_qr_3by2(q, r1, r0, n2, n1, n0, d1, d0, dinv) |
| #define | _udiv_qrnnd_preinv(q, r, nh, nl, d, di) |
| #define | ctz_shl(r, x, cnt) |
类型定义 | |
| typedef struct _udiv64_t | _udiv64_t |
| typedef uint64_t | u128[2] |
| 请注意,此处的蒙哥马利域的R为2^64,p不可超过2^63-1 | |
| typedef uint64_t | u192[3] |
函数 | |
| static int32_t | _clz_u64_ (uint64_t val) |
| static uint64_t | _udiv128by64to64_ (uint64_t numhi, uint64_t numlo, uint64_t den, uint64_t *r) |
| static _udiv64_t | _udiv64_gen (uint64_t d) |
| static _udiv64_t | _udiv64_gen_internal_ (uint64_t d, int branchfree) |
| static uint64_t | _udiv64by64_q_preinv (uint64_t numer, const _udiv64_t *denom) |
| static void | _umul128to128_ (uint64_t a_high, uint64_t a_low, uint64_t b_high, uint64_t b_low, uint64_t rr[2]) |
| static void | _umul128to256_ (uint64_t a_high, uint64_t a_low, uint64_t b_high, uint64_t b_low, uint64_t rr[4]) |
| static void | _umul64to128_ (uint64_t a, uint64_t b, uint64_t *low, uint64_t *high) |
| static uint64_t | _umul64to64hi_ (uint64_t a, uint64_t b) |
| static void | _umulx64to128_ (uint64_t a, uint64_t b, uint64_t *low, uint64_t *high) |
| struct _udiv64_t |
| #define _ADD_MARKER 0x40 |
在文件 longlong.h 第 478 行定义.
| #define _add_ssaaaa | ( | sh, | |
| sl, | |||
| ah, | |||
| al, | |||
| bh, | |||
| bl | |||
| ) |
在文件 longlong.h 第 408 行定义.
| #define _mont64_add | ( | r, | |
| x, | |||
| y, | |||
| mod2 | |||
| ) |
在文件 longlong.h 第 291 行定义.
| #define _mont64_mul | ( | r, | |
| x, | |||
| y, | |||
| mod, | |||
| modInvNeg | |||
| ) |
在文件 longlong.h 第 324 行定义.
| #define _mont64_mulinto | ( | x, | |
| y, | |||
| mod, | |||
| modInvNeg | |||
| ) |
在文件 longlong.h 第 346 行定义.
| #define _mont64_norm2 | ( | r, | |
| x, | |||
| mod2 | |||
| ) |
在文件 longlong.h 第 312 行定义.
| #define _mont64_sub | ( | r, | |
| x, | |||
| y, | |||
| mod2 | |||
| ) |
在文件 longlong.h 第 297 行定义.
| #define _mont64_toint | ( | x, | |
| mod, | |||
| modInvneg | |||
| ) |
在文件 longlong.h 第 368 行定义.
| #define _mont64_tomont | ( | x, | |
| r2, | |||
| mod, | |||
| modInvNeg | |||
| ) |
在文件 longlong.h 第 357 行定义.
| #define _raw64_add | ( | r, | |
| x, | |||
| y | |||
| ) |
在文件 longlong.h 第 302 行定义.
| #define _raw64_sub | ( | r, | |
| x, | |||
| y, | |||
| mod2 | |||
| ) |
在文件 longlong.h 第 307 行定义.
| #define _sub_ddmmss | ( | sh, | |
| sl, | |||
| ah, | |||
| al, | |||
| bh, | |||
| bl | |||
| ) |
在文件 longlong.h 第 416 行定义.
| #define _u128add | ( | r, | |
| x, | |||
| y | |||
| ) |
在文件 longlong.h 第 260 行定义.
| #define _u128add64 | ( | r, | |
| x, | |||
| _i64 | |||
| ) |
在文件 longlong.h 第 266 行定义.
| #define _u128cmp | ( | x, | |
| y | |||
| ) | ((x)[1] < (y)[1] || ((x)[1] == (y)[1] && (x)[0] < (y)[0])) |
在文件 longlong.h 第 280 行定义.
| #define _u128high | ( | x | ) | (*((x) + 1)) |
在文件 longlong.h 第 256 行定义.
| #define _u128low | ( | x | ) | (*(x)) |
在文件 longlong.h 第 258 行定义.
| #define _u128lshl | ( | x, | |
| y, | |||
| n | |||
| ) |
在文件 longlong.h 第 244 行定义.
| #define _u128lshr | ( | x, | |
| y, | |||
| n | |||
| ) |
在文件 longlong.h 第 250 行定义.
| #define _u128mul | ( | r, | |
| x, | |||
| y | |||
| ) | _umul64to128_((x), (y), (r), (((r) + 1))) |
在文件 longlong.h 第 289 行定义.
| #define _u128sub | ( | r, | |
| x, | |||
| y | |||
| ) |
在文件 longlong.h 第 282 行定义.
| #define _u128sub64 | ( | r, | |
| x, | |||
| _i64 | |||
| ) |
在文件 longlong.h 第 272 行定义.
| #define _u128x64to192 | ( | i192, | |
| i128, | |||
| i64 | |||
| ) |
在文件 longlong.h 第 377 行定义.
| #define _u192add | ( | i192, | |
| j192 | |||
| ) |
在文件 longlong.h 第 386 行定义.
| #define _u192sub | ( | i192, | |
| j192 | |||
| ) |
在文件 longlong.h 第 397 行定义.
| #define _U64_SHIFT_MASK 0x3F |
在文件 longlong.h 第 477 行定义.
| #define _udiv32by32_q_preinv | ( | q, | |
| n0, | |||
| dinv | |||
| ) |
在文件 longlong.h 第 466 行定义.
在文件 longlong.h 第 441 行定义.
| #define _udiv_qrnnd_preinv | ( | q, | |
| r, | |||
| nh, | |||
| nl, | |||
| d, | |||
| di | |||
| ) |
在文件 longlong.h 第 424 行定义.
| #define ctz_shl | ( | r, | |
| x, | |||
| cnt | |||
| ) |
在文件 longlong.h 第 229 行定义.
| typedef uint64_t u128[2] |
请注意,此处的蒙哥马利域的R为2^64,p不可超过2^63-1
在文件 longlong.h 第 241 行定义.
| typedef uint64_t u192[3] |
在文件 longlong.h 第 242 行定义.
|
inlinestatic |
在文件 longlong.h 第 121 行定义.
被这些函数引用 _udiv128by64to64_() , 以及 _udiv64_gen_internal_().
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 132 行定义.
引用了 _clz_u64_() , 以及 c1.
被这些函数引用 _udiv64_gen_internal_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 535 行定义.
引用了 _U64_SHIFT_MASK, _udiv64_gen_internal_(), _udiv64_t::magic , 以及 _udiv64_t::more.
被这些函数引用 lmmp_is_prime_uint_() , 以及 lmmp_powmod_uint_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 486 行定义.
引用了 _ADD_MARKER, _clz_u64_(), _udiv128by64to64_(), _udiv64_t::magic , 以及 _udiv64_t::more.
被这些函数引用 _udiv64_gen().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 541 行定义.
引用了 _umul64to64hi_(), _udiv64_t::magic , 以及 _udiv64_t::more.
被这些函数引用 lmmp_powmod_uint_(), miller_rabin_32(), trial_div13(), trial_div17(), trial_div19(), trial_div23(), trial_div29(), trial_div31(), trial_div37() , 以及 trial_div41().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 115 行定义.
引用了 _umulx64to128_().
被这些函数引用 lmmp_binvert_4_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 86 行定义.
引用了 _umulx64to128_().
被这些函数引用 lmmp_binvert_4_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 31 行定义.
被这些函数引用 _umulx64to128_(), lmmp_addmul_1_(), lmmp_binvert_2_(), lmmp_binvert_4_(), lmmp_inv_2_1_(), lmmp_mul_1_(), lmmp_mul_basecase_(), lmmp_mulmod_ulong_(), lmmp_sqr_basecase_(), lmmp_submul_1_() , 以及 pcg64_128_action().
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 60 行定义.
被这些函数引用 _udiv64by64_q_preinv().
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 78 行定义.
引用了 _umul64to128_().
被这些函数引用 _umul128to128_(), _umul128to192_() , 以及 _umul128to256_().
函数调用图:
这是这个函数的调用关系图: