16#include "../../../include/lammp/impl/ele_mul.h"
17#include "../../../include/lammp/impl/inlines.h"
18#include "../../../include/lammp/impl/lglg.h"
19#include "../../../include/lammp/impl/mparam.h"
20#include "../../../include/lammp/impl/prime_table.h"
21#include "../../../include/lammp/impl/tmp_alloc.h"
22#include "../../../include/lammp/lmmpn.h"
23#include "../../../include/lammp/numth.h"
26#define MUL(dst, ap, an, bp, bn) \
28 lmmp_mul_(dst, ap, an, bp, bn); \
30 lmmp_mul_(dst, bp, bn, ap, an)
33#define mul_1(dst, rn, v) \
35 mp_limb_t _c_ = lmmp_mul_1_(dst, dst, rn, v); \
72#define MAX_T 0xffffffffffff
126 tn -=
tp2[tn - 1] == 0;
177 while (
cache.is_end == 0) {
mp_size_t lmmp_elem_mul_ulong_(mp_ptr dst, const ulongp limbs, mp_size_t n, mp_ptr tp)
计算limbs数组的累乘积
mp_size_t lmmp_factorial_(mp_ptr restrict dst, mp_bitcnt_t bits, mp_size_t rn, uint n)
#define MUL(dst, ap, an, bp, bn)
Copyright (C) 2026 HJimmyK(Jericho Knox)
#define mul_1(dst, rn, v)
mp_size_t lmmp_odd_factorial_uint_(mp_ptr restrict dst, mp_size_t rn, uint n)
static void count_factors(fac_ptr fac, uint nfactors, uint n, uint p)
mp_size_t lmmp_factorial_size_(uint n, mp_bitcnt_t *restrict bits)
mp_size_t lmmp_factors_mul_(mp_ptr restrict dst, mp_size_t rn, fac_ptr restrict fac, uint nfactors)
#define lmmp_limb_popcnt_
static uint64_t log2_fac_ceil(uint32_t n)
计算 log2(n!)的ceil值
#define lmmp_copy(dst, src, n)
#define lmmp_zero(dst, n)
#define lmmp_debug_assert(x)
#define lmmp_param_assert(x)
mp_limb_t lmmp_shl_(mp_ptr dst, mp_srcptr numa, mp_size_t na, mp_size_t shl)
大数左移操作 [dst,na] = [numa,na]<<shl,dst的低shl位填充0
#define FACTORS_MUL_N_THRESHOLD
mp_size_t lmmp_odd_nPr_ushort_(mp_ptr dst, mp_size_t rn, ulong n, ulong r)
计算 nPr 排列数的奇数部分
void lmmp_prime_cache_free_(prime_cache_t *cache)
释放素数表缓存
void lmmp_prime_cache_next_(prime_cache_t *cache)
素数表缓存更新(从小到大遍历全局质数表)
static ulong lmmp_prime_size_(ulong n)
估计 n 范围内的素数数量
void lmmp_prime_int_table_init_(uint n)
初始化全局素数表
void lmmp_prime_cache_init_(prime_cache_t *cache, uint n)
初始化素数表缓存
#define TALLOC_TYPE(n, type)
#define BALLOC_TYPE(n, type)