当前位置: 首页 > article >正文

Compensated Summation/Kahan‘s Summation的理解

阅读《Efficient Generation of Error-Inducing Floating-Point Inputs via Symbolic Execution》这篇论文时,文中提到的Commpensated Summation没看太懂,代码如下:
在这里插入图片描述
查阅资料发现Compensated Summation也叫Kahan’s Summation,该算法的主要思想就是记录每次加法操作引入的误差项,然后在下次操作中补回去,从而减少误差的积累效应。

借鉴:https://blog.csdn.net/SlowIsFastLemon/article/details/103386679

按自己的理解重新实现该算法:

sum = 0
delta = 0 // 记录误差项
for i in range(100000):
	real_num = 0.1;
	num = real_num + delta; // 加和值=本次要加的值+上次精度损失,由于精度丢失,这里的delta小于零,故减去一个负数相当于加上一个正数
	temp = sum + num // 计算本次求和结果
	delta = temp - sum - num // 计算本次求和带来的精度损失,更新delta
	sum = temp // 更新sum

http://www.kler.cn/a/147179.html

相关文章:

  • Qt 每日面试题 -10
  • 正则表达式语法详解(python)
  • 技术周总结 11.11~11.17 周日(Js JVM XML)
  • stdin文件流指针
  • 【STM32】MPU6050简介
  • PostgreSQL物化视图详解
  • Python 基础【四】--数据类型-字符串【2023.11.23】
  • 距离向量路由协议——RIP
  • 深入理解OS--数值编码
  • 测试用例的设计思路
  • 【开源】基于Vue+SpringBoot的企业项目合同信息系统
  • Binlog vs. Redo Log:数据库日志的较劲【高级】
  • AI 绘画 | Stable Diffusion 提示词扩展插件
  • 静态方法和属性的经典使用-单例设计模式
  • 华为云CDN刷新与查询余量的Go实现及在Jenkins中的部署
  • redis—— 渐进式遍历
  • Java[list/set]通用遍历方法之Iterator
  • C++之算术生成算法
  • 分享常用设计模式之单例模式(懒汉模式和饿汉模式)和几种关于设计模式的面试题
  • TDA4VM EVM开发板调试笔记
  • 移动机器人路径规划(二)--- 图搜索基础,Dijkstra,A*,JPS
  • c# statusStrip 显示电脑主机名、IP地址、MAC地址
  • vue day2
  • 【深度学习】如何找到最优学习率
  • Linux系统安装Docker-根据官方教程教程(以Ubuntu为例)
  • 数据结构 / 结构体指针