numeric_limits::round_error is defined as fpm::fixed<B,I,F,R>(1) / 2 regardless of the R rounding mode. When rounding is disabled, round_error should be fpm::fixed<B,I,F,R>(1) .
numeric_limits::round_style is also hard-coded to std::round_to_nearest, whereas it should be std::round_toward_zero when rounding is disabled.