第1章 引论 1
1.1计算有什么用? 1
基础科学 1
应用科学 2
工程项目 3
日常生活 4
1.2超高精度计算有什么用? 5
1.3计算编程概述 9
1.4一些缩写的解释 10
第1部分 原理与实现:通用仿真库 13
第2章 代码概述 13
2.1基本内容 13
2.2使用C++? 14
C还是C++? 14
C++与通用编程 19
2.3 C++代码的设计 20
使用模板 20
操作符重载 21
选择接口函数 21
参数传递 23
返回值处理 23
计算异常与诊断信息 25
内存布局 26
2.4计算代码的测试 28
随机输入测试 28
特殊值测试 30
恒等式测试 31
2.5代码的使用 31
2.6伪码 32
第3章 通用整型运算 35
3.1基本概念 35
记数法与数制 35
整型编码 38
编码位数换算 42
3.2通用整型编码 43
数据定义 44
_TYPE的选取 45
3.3通用整型四则运算 45
加法 46
减法 48
乘法 49
除法 51
3.4优化 56
加法 57
减法 59
乘法 60
除法 63
3.5符号处理 64
原码,还是补码? 64
有符号通用整型的表示 64
符号操作 65
3.6输入输出函数 66
输入函数 66
输出函数 69
3.7代码使用 71
第4章 通用定点运算 73
4.1基本概念 73
记数法 73
误差 75
舍入 75
有效数字 78
4.2通用定点数编码 78
数据定义 78
符号处理 79
4.3四则运算 80
加法和减法 81
乘法 82
除法 83
4.4辅助操作 84
4.5代码使用:计算π 87
第5章 浮点数与IEEE浮点标准 89
5.1基本概念 89
科学记数法 89
浮点数 90
5.2 IEEE浮点数 92
格式 93
分类 96
5.3 IEEE异常 99
非法操作 99
被零除 100
上溢 101
下溢 101
不精确 102
5.4辅助函数 102
类型函数 103
符号函数 104
指数函数 105
取整函数 106
特殊值函数 108
5.5两个问题 109
是否遵循IEEE标准 109
弱规范数格式的解释 110
第6章 通用浮点运算 113
6.1数据定义 113
6.2格式处理 114
中间格式 115
BufExpand 115
BufRestore 116
6.3四则运算 119
加减法 119
乘法 122
除法 123
6.4 CsuperFloat 123
6.5代码使用:计算π 124
第7章 通用基本函数库 125
7.1算法简介 125
级数展开和迭代 125
收敛 127
精度控制 129
7.2三角函数 130
Sin 130
Cos 133
Tan 136
7.3反三角函数 136
ArcTan 136
ArcSin 139
ArcCos 139
7.4指数函数和幂函数 140
xn 140
ex 143
xy 144
? 144
7.5对数函数 145
1n 145
Logb 147
Log10 147
7.6输入输出函数 148
DataFromStr 148
DataToStr 148
7.7代码使用 149
第2部分 应用:x87 FPU编程与VC6浮点库 151
第8章 x87 FPU编程 151
8.1 x87 FPU简史 151
8.2编程环境 151
数据寄存器 152
状态寄存器 153
控制寄存器 156
其他寄存器 159
8.3 x87 FPU指令 160
指令简介 160
指令分类 160
指令使用 162
8.4代码示例 164
数组求和 164
冒泡排序 165
Sine函数表 166
第9章 编写自己的浮点库 169
9.1三角函数 169
9.2反三角函数 171
9.3对数函数 172
9.4指数函数和幂函数 172
9.5取整函数 173
将一般浮点数转换为浮点格式的整数 174
将一般浮点数转换为整型 175
9.6分类函数 176
9.7其他小函数 177
9.8封装指令 178
_Prem 1和_Prem 179
_Pow2x 179
_log2x 180
_Epsilonpln 181
_SinCos 182
_Extract 183
_RadToDeg和_DegToRad 183
第10章 如何反汇编代码 185
10.1指导思想 185
10.2反汇编基础 186
数据类型 187
变量存储 190
函数调用约定 191
寄存器使用 195
堆栈管理代码 196
10.3反汇编的过程 198
熟悉和准备相关资料 199
获取反汇编码 199
乱码 200
先易后难 200
数据推断 202
代码修饰 205
第11章 VC6浮点函数库 211
11.1 VC6浮点库简介 211
VC6浮点库文件 212
VC6浮点库对浮点格式的支持 212
VC6浮点库函数基本流程 213
11.2 x87 FPU操作函数 215
状态设置函数 215
状态函数 217
初始化或恢复 217
数据载入函数 218
11.3支持函数 219
分类函数 220
符号操作函数 224
取整函数 224
浮点数分解与合成函数 228
绝对值函数 234
11.4三角函数 235
11.5反三角函数 237
atan函数 237
asin函数 238
11.6指数函数和幂函数 240
11.7对数函数 241
11.8使用建议 243
第12章 异常处理机制 245
12.1处理机制 245
基本流程 245
核心函数 246
用户接口 253
12.2定位错误源码 255
错误定位框架 255
应用示例 259
大致过程 262
第13章 浮点编程中的常见技巧 263
13.1输入与中间结果检测 263
输入检测 263
中间结果检测 264
13.2绝对值计算 264
进行浮点比较 265
使用FABS指令 265
使用运行库函数 266
使用库函数设置符号位 266
直接设置符号 266
计算绝对值的宏 267
13.3获取数学常量 268
宏定义(硬编码)方式 268
硬件方式 268
算法方式 269
13.4避免极值 269
问题的提出 269
通过检测避免极值 270
通过附加因子避免极值 270
将表达式变形避免极值 271
13.5定步长积分循环的终止 271
自变量终止条件 272
约束条件 272
13.6相等判断 273
误差来源 273
==在浮点比较中的含义 274
相等判断 274
13.7通过参数的数据共享问题 275
13.8快速平方根和平方计算 276
附录 281
附录A x87浮点指令 281
附录B源码说明 301
参考文献 302