|
LAMMP 4.2.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 | _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 | _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 | clz_shl_u32(r, x, cnt) |
| #define | clz_shl_u64(r, x, cnt) |
| #define | ctz_shr_u32(r, x, cnt) |
| #define | ctz_shr_u64(r, x, cnt) |
| Copyright (C) 2026 HJimmyK(Jericho Knox) | |
类型定义 | |
| typedef struct _udiv64_t | _udiv64_t |
| typedef uint64_t | u128[2] |
| typedef uint64_t | u192[3] |
函数 | |
| 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) |
| struct _udiv64_t |
| #define _ADD_MARKER 0x40 |
在文件 longlong.h 第 469 行定义.
在文件 longlong.h 第 366 行定义.
在文件 longlong.h 第 342 行定义.
在文件 longlong.h 第 344 行定义.
在文件 longlong.h 第 375 行定义.
在文件 longlong.h 第 377 行定义.
| #define _U64_SHIFT_MASK 0x3F |
在文件 longlong.h 第 468 行定义.
在文件 longlong.h 第 432 行定义.
在文件 longlong.h 第 161 行定义.
在文件 longlong.h 第 88 行定义.
在文件 longlong.h 第 147 行定义.
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/.
在文件 longlong.h 第 74 行定义.
| typedef uint64_t u128[2] |
在文件 longlong.h 第 327 行定义.
| typedef uint64_t u192[3] |
在文件 longlong.h 第 328 行定义.
|
inlinestatic |
在文件 longlong.h 第 247 行定义.
引用了 c1 , 以及 clz_shl_u64.
被这些函数引用 _udiv64_gen_internal_().
这是这个函数的调用关系图:在文件 longlong.h 第 530 行定义.
引用了 _U64_SHIFT_MASK, _udiv64_gen_internal_(), _udiv64_t::magic , 以及 tmp.
被这些函数引用 lmmp_is_prime_uint_() , 以及 lmmp_powmod_uint_().
函数调用图:
这是这个函数的调用关系图:在文件 longlong.h 第 477 行定义.
引用了 _ADD_MARKER, _udiv128by64to64_(), clz_shl_u64, _udiv64_t::magic, _udiv64_t::more , 以及 t.
被这些函数引用 _udiv64_gen().
函数调用图:
这是这个函数的调用关系图:在文件 longlong.h 第 536 行定义.
引用了 _umul64to64hi_(), _udiv64_t::magic, _udiv64_t::more , 以及 t.
被这些函数引用 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 第 241 行定义.
引用了 _umul64to128_().
被这些函数引用 lmmp_binvert_4_(), lmmp_binvert_unbalanced_2_() , 以及 lmmp_divexact_2_().
函数调用图:
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 212 行定义.
引用了 _umul64to128_().
被这些函数引用 lmmp_binvert_4_(), lmmp_binvert_unbalanced_2_() , 以及 lmmp_divexact_2_().
函数调用图:
这是这个函数的调用关系图:在文件 longlong.h 第 174 行定义.
被这些函数引用 _umul128to128_(), _umul128to192_(), _umul128to256_(), lmmp_addmul_1_(), lmmp_binvert_2_(), lmmp_binvert_4_(), lmmp_binvert_unbalanced_1_(), lmmp_divexact_1_(), lmmp_inv_2_1_(), lmmp_mul_1_(), lmmp_mul_basecase_(), lmmp_mulmod_ulong_(), lmmp_sqr_basecase_(), lmmp_submul_1_(), pcg64_128_action(), umul128x64_tohi128() , 以及 umul192x128_tohi192().
这是这个函数的调用关系图:
|
inlinestatic |
在文件 longlong.h 第 194 行定义.
被这些函数引用 _udiv64by64_q_preinv().
这是这个函数的调用关系图: