FeeFrac::DivFallback

Helper function for 96/32 signed division, rounding towards negative infinity (if round_down) or positive infinity (if !round_down). This is a fallback version, separate so that it can be tested on platforms where it isn't actually needed.

Synopsis

Declared in <util/feefrac.h>

static
int64_t
DivFallback(
    std::pair<int64_t, uint32_t> n,
    int32_t d,
    bool round_down) noexcept;

Description

The exact behavior with negative n does not really matter, but this implementation chooses to be consistent for testability reasons.

The result must fit in an int64_t, and d must be strictly positive.

Return Value

The quotient, rounded as requested.

Parameters

NameDescription
nThe 96-bit signed dividend, encoded as a (high, low) pair.
dThe strictly positive 32-bit divisor.
round_downWhether to round towards negative infinity (true) or positive infinity (false).