C#相当于matlab中的eps(X)函数

时间:2013-08-13 16:42:29

标签: c# matlab floating-point floating-accuracy

我正在尝试将一些matlab代码转换为C#并遇到问题。它是一个数值算法,matlab设置了一个基于eps()函数的容差。

matlab文档(http://www.mathworks.co.uk/help/matlab/ref/eps.html)说:

d = eps(X)是从abs(X)到下一个更大的浮点数的正距离,其精度与X相同.X可以是双精度或单精度

据我所知,没有本地C#函数可以做同样的事情。我是一名物理学家,所以浮点运算的复杂性并不是我真正了解的。有人能指出我正确的方向吗?

tl; dr:如何计算C#中eps(x)的等价物?

1 个答案:

答案 0 :(得分:0)

为了完整起见,您可以在matlab中自行计算eps,如下所示:

x=1; p=0; y=1; z=x+y;
while x~=z
   y=y/2; p=p+1; z=x+y; 
end
eps_ = y*2
eps

输出:

eps_ =

  2.2204e-016


ans =

  2.2204e-016

代码来自:科学计算导论,C。F. van Loan