in src/dp.rs [39:79]
fn coef(msg: &[u8], index: usize, bitlength: usize) -> u8 {
match bitlength {
8 => msg[index],
4 => {
let ix = index / 2;
let byte = msg[ix];
match index % 2 {
0 => byte >> 4,
1 => byte & 0xf,
_ => unreachable!(),
}
}
2 => {
let ix = index / 4;
let byte = msg[ix];
match index % 4 {
0 => byte >> 6,
1 => (byte >> 4) & 0x3,
2 => (byte >> 2) & 0x3,
3 => byte & 0x3,
_ => unreachable!(),
}
}
1 => {
let ix = index / 8;
let byte = msg[ix];
match index % 8 {
0 => byte >> 7,
1 => (byte >> 6) & 0x1,
2 => (byte >> 5) & 0x1,
3 => (byte >> 4) & 0x1,
4 => (byte >> 3) & 0x1,
5 => (byte >> 2) & 0x1,
6 => (byte >> 1) & 0x1,
7 => byte & 0x1,
_ => unreachable!(),
}
}
_ => unimplemented!(),
}
}