fn iter_paritychecks_tm(&self) -> ParityIter {
        let m = self.submatrix_size();
        let phi = match m {
            128  => &self::compact_parity_checks::PHI_J_K_M128,
            256  => &self::compact_parity_checks::PHI_J_K_M256,
            512  => &self::compact_parity_checks::PHI_J_K_M512,
            1024 => &self::compact_parity_checks::PHI_J_K_M1024,
            2048 => &self::compact_parity_checks::PHI_J_K_M2048,
            4096 => &self::compact_parity_checks::PHI_J_K_M4096,
            8192 => &self::compact_parity_checks::PHI_J_K_M8192,
            _    => unreachable!(),
        };

        let prototype_cols = (self.n() + self.punctured_bits()) / m;
        let prototype = match prototype_cols {
            5  => &self::compact_parity_checks::TM_R12_H,
            7  => &self::compact_parity_checks::TM_R23_H,
            11 => &self::compact_parity_checks::TM_R45_H,
            _  => unreachable!(),
        };

        let subm = prototype[0][0][0];

        ParityIter {
            phi, prototype, m, logmd4: (m/4).trailing_zeros() as usize, modm: m-1, modmd4: (m/4)-1,
            rowidx: 0, colidx: 0, sub_mat_idx: 0, check: 0, sub_mat: subm, sub_mat_val: (subm & 0x3F) as usize,
        }
    }
/// Set up a ParityIter for a TM code
Set up a ParityIter for a TM code
Set up a ParityIter for a TM code
fn iter_paritychecks_tm(&self) -> ParityIter {
        let m = self.submatrix_size();
        let phi = match m {
            128  => &self::compact_parity_checks::PHI_J_K_M128,
            256  => &self::compact_parity_checks::PHI_J_K_M256,
            512  => &self::compact_parity_checks::PHI_J_K_M512,
            1024 => &self::compact_parity_checks::PHI_J_K_M1024,
            2048 => &self::compact_parity_checks::PHI_J_K_M2048,
            4096 => &self::compact_parity_checks::PHI_J_K_M4096,
            8192 => &self::compact_parity_checks::PHI_J_K_M8192,
            _    => unreachable!(),
        };
        let prototype_cols = (self.n() + self.punctured_bits()) / m;
        let prototype = match prototype_cols {
            5  => &self::compact_parity_checks::TM_R12_H,
            7  => &self::compact_parity_checks::TM_R23_H,
            11 => &self::compact_parity_checks::TM_R45_H,
            _  => unreachable!(),
        };
        let subm = prototype[0][0][0];
        ParityIter {
            phi, prototype, m, logmd4: (m/4).trailing_zeros() as usize, modm: m-1, modmd4: (m/4)-1,
            rowidx: 0, colidx: 0, sub_mat_idx: 0, check: 0, sub_mat: subm, sub_mat_val: (subm & 0x3F) as usize,
        }
    }
fn iter_paritychecks_tm ( & self ) -> ParityIter { let m = self . submatrix_size ( ) ; let phi = match m { 128 => & self :: compact_parity_checks :: PHI_J_K_M128 , 256 => & self :: compact_parity_checks :: PHI_J_K_M256 , 512 => & self :: compact_parity_checks :: PHI_J_K_M512 , 1024 => & self :: compact_parity_checks :: PHI_J_K_M1024 , 2048 => & self :: compact_parity_checks :: PHI_J_K_M2048 , 4096 => & self :: compact_parity_checks :: PHI_J_K_M4096 , 8192 => & self :: compact_parity_checks :: PHI_J_K_M8192 , _ => unreachable ! ( ) , } ; let prototype_cols = ( self . n ( ) + self . punctured_bits ( ) ) / m ; let prototype = match prototype_cols { 5 => & self :: compact_parity_checks :: TM_R12_H , 7 => & self :: compact_parity_checks :: TM_R23_H , 11 => & self :: compact_parity_checks :: TM_R45_H , _ => unreachable ! ( ) , } ; let subm = prototype [ 0 ] [ 0 ] [ 0 ] ; ParityIter { phi , prototype , m , logmd4 : ( m / 4 ) . trailing_zeros ( ) as usize , modm : m - 1 , modmd4 : ( m / 4 ) - 1 , rowidx : 0 , colidx : 0 , sub_mat_idx : 0 , check : 0 , sub_mat : subm , sub_mat_val : ( subm & 0x3F ) as usize , } }
Set up a ParityIter for a TM code
Set up a ParityIter for a TM code
&self