unsafe-libopus 0.2.0

libopus transpiled to rust by c2rust
Documentation
pub unsafe fn silk_warped_autocorrelation_FLP(
    corr: *mut f32,
    input: *const f32,
    warping: f32,
    length: i32,
    order: i32,
) {
    let mut n: i32 = 0;
    let mut i: i32 = 0;
    let mut tmp1: f64 = 0.;
    let mut tmp2: f64 = 0.;
    let mut state: [f64; 25] = [
        0 as f64, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.,
    ];
    let mut C: [f64; 25] = [
        0 as f64, 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0.,
    ];
    assert!(order & 1 == 0);
    n = 0;
    while n < length {
        tmp1 = *input.offset(n as isize) as f64;
        i = 0;
        while i < order {
            tmp2 = state[i as usize] + warping as f64 * (state[(i + 1) as usize] - tmp1);
            state[i as usize] = tmp1;
            C[i as usize] += state[0 as usize] * tmp1;
            tmp1 = state[(i + 1) as usize] + warping as f64 * (state[(i + 2) as usize] - tmp2);
            state[(i + 1) as usize] = tmp2;
            C[(i + 1) as usize] += state[0 as usize] * tmp2;
            i += 2;
        }
        state[order as usize] = tmp1;
        C[order as usize] += state[0 as usize] * tmp1;
        n += 1;
    }
    i = 0;
    while i < order + 1 {
        *corr.offset(i as isize) = C[i as usize] as f32;
        i += 1;
    }
}