#include #include template T ulp_up(T x) { T infty = std::numeric_limits::infinity(); T above = std::nextafter(x, infty); return above - x; } template T ulp_down(T x) { T infty = std::numeric_limits::infinity(); T below = std::nextafter(x, -infty); return x - below; }