1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
pub fn advanced_abstract() -> [i32; 5] {
let buffer: &mut [i32] = &mut [3; 10];
let coefficients: [i64; 12] = [1; 12];
let qlp_shift: i16 = 1;
for i in 12..buffer.len() {
let prediction = coefficients.iter()
.zip(&buffer[i - 12.. i])
.map(|(&c, &s)| c * s as i64)
.sum::<i64>() >> qlp_shift;
let delta = buffer[i];
buffer[i] = prediction as i32 + delta;
}
[3; 5]
}
#[test]
fn test_advanced_abstract() {
assert_eq!(advanced_abstract(), [3,3,3,3,3]);
}