LAMMP
4.2.0
Lamina High-Precision Arithmetic Library
载入中...
搜索中...
未找到
base_table.h
浏览该文件的文档.
1
/**
2
* Copyright (C) 2026 HJimmyK(Jericho Knox)
3
*
4
* This file is part of LAMMP.
5
*
6
* LAMMP is free software: you can redistribute it and/or modify it under
7
* the terms of the GNU Lesser General Public License (LGPL) as published
8
* by the Free Software Foundation; either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed WITHOUT ANY WARRANTY.
12
*
13
* See <https://www.gnu.org/licenses/>.
14
*/
15
16
#ifndef __LAMMP_BASE_TABLE_H__
17
#define __LAMMP_BASE_TABLE_H__
18
19
#include "../lmmpn.h"
20
21
typedef
struct
mp_base_t
{
22
// 单个limb能容纳的基数的最大幂次
23
// 二的幂次存储 log2(base)
24
// large_base = base ^ digits_in_limb
25
mp_limb_t
large_base
;
26
// ceiling(2^64*log2(base)/log2(2^64))
27
// N 位 base 数最多需要 N * lg_base / 2^64 + 1 个 limb
28
mp_limb_t
lg_base
;
29
// N 位二进制数最多需要 N * inv_lg_base / 2^64 + 1 个 base 进制位
30
// ceiling(2^64/log2(base))
31
mp_limb_t
inv_lg_base
;
32
// 单个limb可容纳的最大基数位数
33
// floor(64/log2(base))
34
int
digits_in_limb
;
35
// 基数(2~256)
36
int
base
;
37
}
mp_base_t
;
38
39
typedef
struct
mp_basepow_t
{
40
// 基数幂值(base^digits)
41
mp_ptr
p
;
42
// p的 limb 长度
43
mp_size_t
np
;
44
// 归一化p的逆元
45
mp_ptr
invp
;
46
// invp的有效长度
47
mp_size_t
ni
;
48
// 去除的末尾零 limb 长度
49
mp_size_t
zeros
;
50
// 基数幂的指数(log_base(p))
51
mp_size_t
digits
;
52
// p归一化时的移位位数
53
int
norm_cnt
;
54
// 基数
55
int
base
;
56
}
mp_basepow_t
;
57
58
extern
const
mp_base_t
lmmp_bases_table
[255];
59
60
#endif
// __LAMMP_BASE_TABLE_H__
mp_basepow_t::ni
mp_size_t ni
Definition
base_table.h:47
mp_basepow_t::base
int base
Definition
base_table.h:55
mp_base_t::digits_in_limb
int digits_in_limb
Definition
base_table.h:34
mp_basepow_t::digits
mp_size_t digits
Definition
base_table.h:51
mp_basepow_t::invp
mp_ptr invp
Definition
base_table.h:45
mp_basepow_t::np
mp_size_t np
Definition
base_table.h:43
mp_base_t::lg_base
mp_limb_t lg_base
Definition
base_table.h:28
lmmp_bases_table
const mp_base_t lmmp_bases_table[255]
Copyright (C) 2026 HJimmyK(Jericho Knox)
Definition
base_table.c:18
mp_base_t::large_base
mp_limb_t large_base
Definition
base_table.h:25
mp_base_t::inv_lg_base
mp_limb_t inv_lg_base
Definition
base_table.h:31
mp_basepow_t::zeros
mp_size_t zeros
Definition
base_table.h:49
mp_basepow_t::norm_cnt
int norm_cnt
Definition
base_table.h:53
mp_basepow_t::p
mp_ptr p
Definition
base_table.h:41
mp_base_t::base
int base
Definition
base_table.h:36
mp_basepow_t
Definition
base_table.h:39
mp_base_t
Copyright (C) 2026 HJimmyK(Jericho Knox)
Definition
base_table.h:21
mp_ptr
mp_limb_t * mp_ptr
Definition
lmmp.h:80
mp_size_t
uint64_t mp_size_t
Definition
lmmp.h:77
mp_limb_t
uint64_t mp_limb_t
Definition
lmmp.h:76
include
lammp
impl
base_table.h
生成于 2026年 七月 12日 星期日 16:40:19 , 为 LAMMP使用
1.9.8