1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
pub fn div_rem<T: ::std::ops::Div<Output=T> + ::std::ops::Rem<Output=T> + Copy>(x: T, y: T) -> (T, T) {
let quot = x / y;
let rem = x % y;
(quot, rem)
}
///Convert input to a linear scale
pub fn log2lin(log_gain: u32) -> u32 {
let i = ((log_gain>>7)<<1) as i32;
let f = (log_gain&127) as i32;
(i + ((-174 * f * (128 - f)>>16) + f) * (i>>7)) as u32
}