Fix uniform_floating_point_distribution for unit ranges

This commit is contained in:
Martin Hořeňovský
2023-12-10 16:26:07 +01:00
parent ae4fe16b81
commit cb07ff9a7e
3 changed files with 23 additions and 3 deletions

View File

@@ -31,7 +31,7 @@ namespace Catch {
"gamma returns the largest ULP magnitude within "
"floating point range [a, b]. This only makes sense "
"for floating point types" );
assert( a < b );
assert( a <= b );
const auto gamma_up = Catch::nextafter( a, std::numeric_limits<FloatType>::infinity() ) - a;
const auto gamma_down = b - Catch::nextafter( b, -std::numeric_limits<FloatType>::infinity() );
@@ -69,7 +69,7 @@ namespace Catch {
template <typename FloatType>
DistanceType<FloatType>
count_equidistant_floats( FloatType a, FloatType b, FloatType distance ) {
assert( a < b );
assert( a <= b );
// We get distance as gamma for our uniform float distribution,
// so this will round perfectly.
const auto ag = a / distance;

View File

@@ -97,7 +97,7 @@ public:
m_max_steps_in_one_go( Detail::calculate_max_steps_in_one_go(m_ulp_magnitude)),
m_a_has_leq_magnitude(std::fabs(m_a) <= std::fabs(m_b))
{
assert( a < b );
assert( a <= b );
}
template <typename Generator>