eps
MATLAB中的例程实质上返回浮点数之间的正距离.它也可以采用可选参数.
我的问题:MATLAB如何计算这个值?(它是使用查找表,还是使用某种算法在运行时计算它,或其他什么......?)
相关:在给定浮点数的情况下,如何以任何提供位访问的语言计算?
WIkipedia上有相当多的页面
特别是对于MATLAB,它是2 ^( - 53),因为MATLAB默认使用双精度.这是图表: 它是符号的一位,指数的11位和分数的其余位.
关于浮点数的MATLAB文档也显示了这一点.
d = eps(x)
,其中x
数据类型为single或double,返回正距离abs(x)
到下一个相同精度的较大浮点数x
.
由于并非所有分数在数字线上的间距相等,因此不同分数将在相同精度内显示到下一个浮点的不同距离.他们的位代表是:
1.0 = 0 01111111111 0000000000000000000000000000000000000000000000000000 0.9 = 0 01111111110 1100110011001100110011001100110011001100110011001101
两者的符号都是正(0
),指数不相等,当然它们的分数差别很大.这意味着下一个浮点数将是:
dec2bin(typecast(eps(1.0), 'uint64'), 64) = 0 01111001011 0000000000000000000000000000000000000000000000000000 dec2bin(typecast(eps(0.9), 'uint64'), 64) = 0 01111001010 0000000000000000000000000000000000000000000000000000
因此,它们不一样eps(0.9)~=eps(1.0)
.