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

Name

Description

n

The 96‐bit signed dividend, encoded as a (high, low) pair.

d

The strictly positive 32‐bit divisor.

round_down

Whether to round towards negative infinity (true) or positive infinity (false).

Created with MrDocs