pub fn half_coset(coset: Self) -> Self {
        Coset {
            log_2_size: coset.log_2_size - 1,
            shift: coset.shift,
        }
    }
Given a standard coset g_2n + <g_n>, returns the subcoset with half size g_2n + <g_{n/2}>
crates/math/src/circle/cosets.rs