一个数值计算中通常很有用的数值的定义和计算

matlab中直接用eps,默认是针对double双精度类型的.

微软的msdn中是这么提的:

numeric_limits::epsilon

The function returns the difference between 1 and the smallest value greater than 1 that is representable for the data type.

The difference between 1 and the smallest value greater than 1 that is representable for the data type.

代码例子:

// numeric_limits_epsilon.cpp
// compile with: /EHsc
#include <iostream>
#include <limits>

using namespace std;

int main( )
{
   cout << "The difference between 1 and the smallest "
        << "value greater than 1\n for float objects is: "
        << numeric_limits<float>::epsilon( )
        << endl;
   cout << "The difference between 1 and the smallest "
        << "value greater than 1\n for double objects is: "
        << numeric_limits<double>::epsilon( )
        << endl;
   cout << "The difference between 1 and the smallest "
        << "value greater than 1\n for long double objects is: "
        << numeric_limits<long double>::epsilon( )
        << endl;
}

输出结果是:

The difference between 1 and the smallest value greater than 1

for float objects is: 1.19209e-007

The difference between 1 and the smallest value greater than 1

for double objects is: 2.22045e-016

The difference between 1 and the smallest value greater than 1

for long double objects is: 2.22045e-016

维基中有这样一个表格:

Values for standard hardware floating point arithmetics

http://eigen.tuxfamily.org/index.php?title=Main_Page

The following values of machine epsilon apply to standard floating point formats:

IEEE 754 - 2008 Common name C++ data type Base Precision Machine epsilon[a] Machine epsilon[b]
binary16 half precision short 2 11 (one bit is implicit) 2?11 = 4.88e-04 2?10 = 9.77e-04
binary32 single precision float 2 24 (one bit is implicit) 2?24 = 5.96e-08 2?23 = 1.19e-07
binary64 double precision double 2 53 (one bit is implicit) 2?53 = 1.11e-16 2?52 = 2.22e-16
binary80 extended precision _float80[1] 2 64 2?64 = 5.42e-20 2?63 = 1.08e-19
binary128 quad(ruple) precision _float128[1] 2 113 (one bit is implicit) 2?113 = 9.63e-35 2?112 = 1.93e-34
decimal32 single precision decimal _Decimal32[2] 10 7 5 × 10?7 10?6
decimal64 double precision decimal _Decimal64[2] 10 16 5 × 10?16 10?15
decimal128 quad(ruple) precision decimal _Decimal128[2] 10 34 5 × 10?34 10?33

a according to Prof. Demmel,LAPACK,Scilabb
according to Prof. Higham; ISO C standard;C,
C++ and Python language constants; Mathematica, MATLAB and Octave; various textbooks - see below for the latter definition

如果使用了GMP/MPIR/MPFR之类的扩展软件工具来提高实际参与计算的精度, 用Pavel的C++ wrapper mpfrC++(很奇怪他的个人主页只涉及技术相关信息也被屏蔽了), 结合Eigen
C++ template library
是我的最爱.

https://code.google.com/p/gmpy/downloads/detail?name=full-src-mpir-mpfr-mpc-gmpy2-2.0.2.zip&can=2&q=

在Linux, MacOS上这类库的源代码直接编译通常没有问题, 在windows下稍微有些麻烦. 这里有一个修改后的,可以在visual studio下面直接编译成动态和静态链接库的项目文件的包,mpir,mpfr,mpc,gmpy都包括了. 我把下载所需资源分数设置为10,实际上,正常评论之后根据规则这个资源分都会自动返还而且会额外加分的.
所以下载的时候别有心理压力. 实在接受不了,可以到code.google.com的上面的链接中去下载. 没有任何问题.

时间: 2024-10-10 02:24:37

一个数值计算中通常很有用的数值的定义和计算的相关文章

closest()一个在评论里很有用的函数

实例 本例演示如何通过 closest() 完成事件委托.当被最接近的列表元素或其子后代元素被点击时,会切换黄色背景: $( document ).bind("click", function( e ) { $( e.target ).closest("li").toggleClass("hilight"); }); 定义和用法 closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上. 语法 .closest(s

SqlSever基础 SUM 查询一个表中的一列的数值总和

镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ 1 table 2 code 1 --创建一个数据库 2 create database helloworld1 3 4 use master 5 drop database helloworld1 6 7 --用helloworld1这个数据库 8 use helloworld1 9 10 --

VS编译linux项目生成静态库并在另一个项目中静态链接的方法

VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在windows下编写静态库并在另一个项目中引用很简单 新建项目的时候选择静态库,进去把代码撸好,即可编译出静态库*.lib 随后在希望使用该静态库的项目中设置一下链接器"附加库目录"为"../Debug"(和你的输出路径有关),然后添加"附加依赖项"静态库名.l

EF错误:无法加载关系xxx,因为类型xxx不可用。以下信息对于解决上一个错误可能很有用: 类型xxx中不存在必需属性xxx

工作中遇到下面错误: 指定的架构无效.错误: 无法加载关系“Centria.ABATracker.Domain.FK_ABC_TherapySession_SessionId”,因为类型“Centria.ABATracker.Domain.TherapySession”不可用. 以下信息对于解决上一个错误可能很有用: 类型“Centria.ABATracker.Domain.TherapySession”中不存在必需属性“SessionTargetTARecord”. 无法加载关系“Centri

Web 开发中 20 个很有用的 CSS 库

转自:http://www.oschina.net/translate/css-libraries-for-developers 在过去的几年中,CSS已经成为一大部分开发者和设计者的最爱,因为它提供了一系列功能和特性.每个月都有无数个围绕CSS的工具被开发者发布以简化WEB开发.像CSS 库,框架,应用这样的工具能够为开发者做很多事,而且可以使开发者创造出创新立异的WEB应用. 在这篇文件章中我们找到了一系列对开发者有用的CSS库,它们能帮助开发者在一定的期限内取得有创造性和创新性的成果.我们

WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇]

原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[下篇] 在<上篇>中,我通过使用Delegate的方式解决了服务调用过程中的异常处理以及对服务代理的关闭.对于<WCF技术剖析(卷1)>的读者,应该会知道在第7章中我通过类似于AOP的方式解决了相似的问题,现在我们来讨论这个解决方案. 通过<服务代理不能得到及时关闭会有什么后果?>的介绍,我们知道了及时关闭服务代理的重要意义,并且给出了正确的编程方式.如果严格按照上面的编程方式,就意味着对于每一个服务调用,都要

WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇]

原文:WCF技术剖析之三十:一个很有用的WCF调用编程技巧[上篇] 在进行基于会话信道的WCF服务调用中,由于受到并发信道数量的限制,我们需要及时的关闭信道:当遇到某些异常,我们需要强行中止(Abort)信道,相关的原理,可以参考我的文章<服务代理不能得到及时关闭会有什么后果?>.在真正的企业级开发中,正如我们一般不会让开发人员手工控制数据库连接的开启和关闭一样,我们一般也不会让开发人员手工去创建.开启.中止和关闭信道,这些工作是框架应该完成的操作.这篇文章,我们就来介绍如果通过一些编程技巧,

一个很有用的辅助类 -- 门槛类实现

门(槛)是个很有特点的事物,只要它没有上锁,你一推就进.如上了锁,你就要先开了锁才能进.如果很不幸的这个门有多把锁,就要把上面所有的锁都打开才行. 下面我们就来用c#实现门(槛)类: 一.分析 门类:它有个状态--开着/关闭,有人会说那用一个bool变量不就行了. NO No,我这个门是可以上锁的,而且上锁的数量是不限的.第把锁都只有用对应的key的才能打开. 所以我这个是只要上一把锁就是关上了:要打开的话,却要解开所有已加在这个门上的锁.当然有时候你也可破门而入.这是不是和bool变量不一样呢

在网站开中很有用的8个 jQuery 效果【附源码】

jQuery 作为最优秀 JavaScript 库之一,改变了很多人编写 JavaScript 的方式.它简化了 HTML 文档遍历,事件处理,动画和 Ajax 交互,而且有成千上万的成熟 jQuery 插件可供使用.看看下面这些惊人的功能和效果,我相信你会发现一些很有用的东西. 基于 jQuery 实现的 Ajax 异步分页 jPages 是一款非常不错的客户端分页插件,有很多特色,例如自动播放.按键翻页.延迟加载等等 源码下载      在线演示 老牌的响应式 jQuery 幻灯片效果 Sl