macro_rules! impl_delegate {
    (
        $fn:ident, // name of the unsigned division function
        $zero_div_fn:ident, // function called when division by zero is attempted
        $half_normalization_shift:ident, // function for finding the normalization shift of $uX
        $half_division:ident, // function for division of a $uX by a $uX
        $n_h:expr, // the number of bits in $iH or $uH
        $uH:ident, // unsigned integer with half the bit width of $uX
        $uX:ident, // unsigned integer with half the bit width of $uD.
        $uD:ident, // unsigned integer type for the inputs and outputs of `$fn`
        $iD:ident // signed integer type with the same bitwidth as `$uD`
    ) => { ... };
}
Expand description

Creates an unsigned division function that uses a combination of hardware division and binary long division to divide integers larger than what hardware division by itself can do. This function is intended for microarchitectures that have division hardware, but not fast enough multiplication hardware for impl_trifecta to be faster.