大数运算过程的数学基础--未完
2011-09-14 18:08
106 查看
通常情况下,linux内核是不支持浮点操作的。在进行数据处理过程中,我们经常会处于这样的尴尬:计算过程的数据位长和计算结果的误差产生了冲突.
例如如下的实例:102448/7*1024
这样的表达式在内核中可以如下表达:
long result = 102448/7*1024;
当然,作为实际的操作过程,表达式中的字面常数通常是一些变量。如果result具有累积效应,上面的表达式将产生致命的误差。
数学表达中 102448/7*1024的值为14986678
而表达式 result = 102448/7*1024 的值为14986240
显然,这种误差是巨大的,如何调整这种误差呢?
我们可以将这种问题诉诸数学恒等式:
{A/B*C}= [A/B*C + A%B*C/B]
我们将进行验证:
result = 102448/7*1024 + 102448%7*1024/7;
result = 14986240 + 438
result = 14986678
未完待续
例如如下的实例:102448/7*1024
这样的表达式在内核中可以如下表达:
long result = 102448/7*1024;
当然,作为实际的操作过程,表达式中的字面常数通常是一些变量。如果result具有累积效应,上面的表达式将产生致命的误差。
数学表达中 102448/7*1024的值为14986678
而表达式 result = 102448/7*1024 的值为14986240
显然,这种误差是巨大的,如何调整这种误差呢?
我们可以将这种问题诉诸数学恒等式:
{A/B*C}= [A/B*C + A%B*C/B]
我们将进行验证:
result = 102448/7*1024 + 102448%7*1024/7;
result = 14986240 + 438
result = 14986678
未完待续
相关文章推荐
- Delphi-数学运算函数与过程
- Oracle 基础语句 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数...
- 3D 图形编程的数学基础(1) 向量及其运算
- 3D 图形编程的数学基础(2) 矩阵及其运算
- 【Unity3d开发基础】Mathf中的数学运算
- OpenCV数字图像处理三:数学基础及相关运算:点运算
- (转载)3D 图形编程的数学基础(1) 向量及其运算
- 数学基础II——矢量运算的意义
- 2.10Python基础语法(8):数学运算
- 武汉大学2014年基础数学面试全过程
- python基础练习(一)——自定义函数,数学运算,命令行输入
- (转载)3D 图形编程的数学基础(2) 矩阵及其运算
- 2.Python - print、variable、基础数学运算
- python基础-数学运算
- 3d数学基础:常用向量相关运算
- Shell脚本基础10-基本的数学运算
- 【数学基础】【快速幂运算模板】
- /LGC图形渲染/3D 图形编程的数学基础(1) 向量及其运算
- [unity基础教程] unity Mathf 数学运算(C#)
- JAVA基础知识思维导图:unit01_开发环境,变量,基本类型及转换,数学运算,流程控制,数组