7#include "../../../include/lammp/numth.h"
8#include "../../../include/lammp/lmmpn.h"
9#include "../../../include/lammp/impl/prime_table.h"
10#include "../../../include/lammp/impl/tmp_alloc.h"
11#include "../../../include/lammp/impl/ele_mul.h"
13#define MAX_T 0xffffffffffffull
16 if (np == NULL || nn == 0) {
34 if (t >
MAX_T || idx_cnt == 20) {
36 for (
uint j = 0; j < idx_cnt; j++) {
37 if (r == 0 || r % idx[j] == 0) {
39 if (retn == retn_max) {
40 retn_max = retn_max * 12 / 10;
51 for (
uint j = 0; j < idx_cnt; j++) {
52 if (r == 0 || r % idx[j] == 0) {
54 if (retn == retn_max) {
73 if (primen > 4 * nn) {
85 for (
ushort i = 0; i < primen; i++) {
99 while (pn > 0 && prod[pn - 1] == 0) --pn;
103 for (
ushort i = 0; i < primen; i++) {
mp_size_t lmmp_elem_mul_ulong_(mp_ptr dst, const ulongp limbs, mp_size_t n, mp_ptr tp)
计算limbs数组的累乘积
const mp_limb_t * mp_srcptr
void lmmp_free(void *ptr)
内存释放函数(调用lmmp_heap_free_fn)
mp_limb_t lmmp_mod_1_(mp_srcptr numa, mp_size_t na, mp_limb_t x)
单精度数取余
void lmmp_div_(mp_ptr dstq, mp_ptr dstr, mp_srcptr numa, mp_size_t na, mp_srcptr numb, mp_size_t nb)
大数除法和取模操作
#define PRIME_SHORT_TABLE_SIZE
const ushort prime_short_table[6542]
ushort lmmp_prime_cnt16_(ushort n)
计算小于等于 n 的素数数量
#define REALLOC_TYPE(p, new_size, type)
#define ALLOC_TYPE(n, type)
#define SALLOC_TYPE(n, type)
ushortp lmmp_trialdiv_(mp_srcptr restrict np, mp_size_t nn, ushort N, ushort *rn)
static ushortp lmmp_trialdiv_short_(mp_srcptr restrict np, mp_size_t nn, ushort N, ushort *rn)