小编kyl*_*yle的帖子

用C++实现Matlab的eps(x)函数

我正在尝试eps(x)用C++ 实现Matlab的功能

例如,在Matlab中:

>> eps(587.3888)
ans = 1.1369e-13
>> eps(single(587.3888))
ans = 6.1035e-05
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在C++中执行此操作时,我无法获得正确的单精度答案.

#include <limits>
#include <iostream>
#include <math.h>

#define DEBUG(x) do { std::cerr << x << std::endl; } while (0)
#define DEBUG2(x) do { std::cerr << #x << ": " << x << std::endl; } while (0)

int main() {

    float epsf = std::numeric_limits<float>::epsilon();
    DEBUG2(epsf);
    double epsd = std::numeric_limits<double>::epsilon();
    DEBUG2(epsd);

    float espxf = nextafter(float(587.3888), epsf) - float(587.3888);
    double espxd = nextafter(double(587.3888), epsd) - double(587.3888);
    DEBUG2(espxf);
    DEBUG2(espxd); …
Run Code Online (Sandbox Code Playgroud)

c++ matlab epsilon

6
推荐指数
1
解决办法
1699
查看次数

标签 统计

c++ ×1

epsilon ×1

matlab ×1