|
LAMMP 4.1.0
Lamina High-Precision Arithmetic Library
|
#include "../../../include/lammp/mprand.h"#include "../../../include/lammp/impl/rand_state.h"#include "../../../include/lammp/impl/tmp_alloc.h"
mprand.c 的引用(Include)关系图:结构体 | |
| struct | lmmp_global_rng_t |
| struct | lmmp_strong_rng_t |
宏定义 | |
| #define | GLOBAL_RNG_INIT_SEED_TYPE 1 |
| #define | GLOBAL_RNG_INIT_STATE 10451216379200822465ULL |
类型定义 | |
| typedef struct lmmp_strong_rng_t | lmmp_strong_rng_t |
函数 | |
| void | lmmp_global_rng_init_ (int seed, int seed_type) |
| 初始化全局随机数生成器 | |
| mp_size_t | lmmp_random_ (mp_ptr restrict dst, mp_size_t n) |
| mp_size_t | lmmp_seed_random_ (mp_ptr restrict dst, mp_size_t n, mp_limb_t seed, int seed_type) |
| mp_size_t | lmmp_strong_random_ (mp_ptr restrict dst, mp_size_t n, lmmp_strong_rng_t *rng) |
| void | lmmp_strong_rng_extern_ (lmmp_strong_rng_t *rng, mp_size_t k) |
| 将rng内部状态拓展至k维度 | |
| void | lmmp_strong_rng_free_ (lmmp_strong_rng_t *rng) |
| 销毁强随机数生成器 | |
| lmmp_strong_rng_t * | lmmp_strong_rng_init_ (mp_size_t k, int seed) |
| 创建k维度强随机数生成器 | |
变量 | |
| static _Thread_local lmmp_global_rng_t | lmmp_global_rng = { 10451216379200822465ULL , 1 } |
| struct lmmp_global_rng_t |
| struct lmmp_strong_rng_t |
| typedef struct lmmp_strong_rng_t lmmp_strong_rng_t |
| void lmmp_global_rng_init_ | ( | int | seed, |
| int | seed_type | ||
| ) |
初始化全局随机数生成器
| seed | 种子 |
| seed_type | 随机数发生器类型(0:pcg64_128,1:xoshiro256++) |
引用了 lmmp_global_rng, lmmp_seed_generator(), lmmp_global_rng_t::seed_type , 以及 lmmp_global_rng_t::state.
函数调用图:引用了 lmmp_global_rng, lmmp_seed_generator(), lmmp_seed_random_(), rotl(), lmmp_global_rng_t::seed_type , 以及 lmmp_global_rng_t::state.
函数调用图:引用了 lmmp_pcg64_128_random(), lmmp_pcg64_128_srandom(), lmmp_xoshiro256pp_random() , 以及 lmmp_xoshiro256pp_srandom().
被这些函数引用 lmmp_random_().
函数调用图:
这是这个函数的调用关系图:| mp_size_t lmmp_strong_random_ | ( | mp_ptr restrict | dst, |
| mp_size_t | n, | ||
| lmmp_strong_rng_t * | rng | ||
| ) |
引用了 lmmp_param_assert, pcg64_le_seq_next(), pcg64_le_seq_t::state , 以及 lmmp_strong_rng_t::stream.
函数调用图:| void lmmp_strong_rng_extern_ | ( | lmmp_strong_rng_t * | rng, |
| mp_size_t | k | ||
| ) |
将rng内部状态拓展至k维度
| rng | 强随机数生成器指针 |
| k | 随机数长度(单位:limb) |
引用了 pcg64_le_seq_t::k, k, lmmp_param_assert, lmmp_realloc(), lmmp_seed_generator(), pcg64_le_seq_init(), rotl(), pcg64_le_seq_t::state , 以及 lmmp_strong_rng_t::stream.
函数调用图:| void lmmp_strong_rng_free_ | ( | lmmp_strong_rng_t * | rng | ) |
销毁强随机数生成器
| rng | 强随机数生成器指针 |
引用了 lmmp_free(), pcg64_le_seq_t::state , 以及 lmmp_strong_rng_t::stream.
函数调用图:| lmmp_strong_rng_t * lmmp_strong_rng_init_ | ( | mp_size_t | k, |
| int | seed | ||
| ) |
创建k维度强随机数生成器
| k | 随机数长度(单位:limb) |
| seed | 种子 |
引用了 ALLOC_TYPE, pcg64_le_seq_t::k, k, lmmp_alloc(), lmmp_param_assert, lmmp_seed_generator(), pcg64_le_seq_init(), rotl(), pcg64_le_seq_t::state , 以及 lmmp_strong_rng_t::stream.
函数调用图:
|
static |
被这些函数引用 lmmp_global_rng_init_() , 以及 lmmp_random_().