第1章 引言 1
1.1 多精度算术 1
1.1.1 什么是多精度算术 1
1.1.2 为什么需要多精度算术 1
1.1.3 多精度算术的优势 2
1.2 本书目的 3
1.3 讨论和表示法 4
1.3.1 表示法 4
1.3.2 精度表示法 4
1.3.3 算法输入和输出 5
1.3.4 数学表达式 5
1.3.5 算法的效率 5
1.4 练习 6
1.5 LibTomMath简介 7
1.5.1 什么是LibTomMath 7
1.5.2 LibTomMath的目标 7
1.6 为什么选择LibTomMath 8
1.6.1 代码基 8
1.6.2 API简单易懂 8
1.6.3 优化 9
1.6.4 可移植性和稳定性 9
1.6.5 选择 10
第2章 入门 11
2.1 库的基本知识 11
2.2 什么是多精度整数 12
2.3 参数传递 13
2.4 返回值 14
2.5 初始化和清除 15
2.5.1 初始化mp_int 15
2.5.2 清除mp_int 17
2.6 维护算法 19
2.6.1 增加mp_int的精度 19
2.6.2 初始化可变精度的mp_ints 21
2.6.3 多个整数的初始化和清除 23
2.6.4 压缩多余位 24
练习 26
第3章 基本操作 27
3.1 简介 27
3.2 为mp_int结构赋值 27
3.2.1 拷贝一个mp_int 27
3.2.2 克隆 30
3.3 将整数清零 31
3.4 符号操作 32
3.4.1 绝对值 32
3.4.2 整数取反 33
3.5 小常量 34
3.5.1 设置小常量 34
3.5.2 设置大常量 35
3.6 比较 37
3.6.1 无符号数比较 37
3.6.2 有符号数比较 39
练习 40
第4章 基本算法 41
4.1 简介 41
4.2 加法和减法 41
4.2.1 低级加法 42
4.2.2 低级减法 45
4.2.3 高级加法 49
4.2.4 高级减法 51
4.3 比特和数字移位 53
4.3.1 乘以2 54
4.3.2 除以2 56
4.4 多项式基运算 58
4.4.1 乘以x 59
4.4.2 除以x 61
4.5 2的幂 63
4.5.1 乘以2的幂 63
4.5.2 除以2的幂 66
4.5.3 除以2的幂的余数 68
练习 70
第5章 乘法与平方 72
5.1 乘法器 72
5.2 乘法 72
5.2.1 基线乘法 72
5.2.2 使用Comba方法的快速乘法 77
5.2.3 更快的乘法 82
5.2.4 多项式基乘法 84
5.2.5 Karatsuba乘法 86
5.2.6 Toom-Cook 3-Way乘法 92
5.2.7 有符号乘法 100
5.3 平方 102
5.3.1 基线平方算法 102
5.3.2 使用Comba方法的更快速平方 105
5.3.3 更快的平方 109
5.3.4 多项式基平方 109
5.3.5 Karatsuba平方 109
5.3.6 Toom-Cook平方 114
5.3.7 高级平方 114
练习 116
第6章 模缩减 117
6.1 模缩减的基础知识 117
6.2 Barrett缩减 117
6.2.1 定点算法 118
6.2.2 选择小数点 119
6.2.3 对商进行缩减 120
6.2.4 对余数进行缩减 120
6.2.5 Barrett算法 121
6.2.6 Barrett设置算法 124
6.3 Montgomery缩减 125
6.3.1 基于数位的Montgomery缩减 127
6.3.2 基线Montgomery缩减 128
6.3.3 较快的“Comba”Montgomery缩减 132
6.3.4 Montgomery设置 137
6.4 缩减基算法 139
6.4.1 选择模数 141
6.4.2 k的选择 141
6.4.3 受限的缩减基缩减 141
6.4.4 未受限的缩减基缩减 146
6.5 算法比较 150
练习 151
第7章 幂乘 152
7.1 幂乘基础 152
7.2 k-ary幂乘 155
7.2.1 k的最优值 156
7.2.2 滑动窗幂乘 156
7.3 模幂乘 158
7.4 快速计算2的幂 170
练习 171
第8章 较高级算法 172
8.1 有余数的整数除法 172
8.1.1 商估计 173
8.1.2 归一化整数 174
8.1.3 以β为基的带余数的除法 174
8.2 单数位帮助算法 183
8.2.1 单数位加法和减法 183
8.2.2 单数位乘法 186
8.2.3 单数位除法 188
8.2.4 单数位求根 191
8.3 随机数生成 195
8.4 格式化表示形式 197
8.4.1 读取以n为基的输入 197
8.4.2 生成以n为基的输出 200
第9章 数论算法 203
9.1 最大公约数 203
9.2 最小公倍数 208
9.3 Jacobi符号计算 210
9.4 模逆 216
9.5 素性测试 221
9.5.1 试除法 222
9.5.2 Fermat测试 225
9.5.3 Miller-Rabin测试 226
练习 229
参考文献 230