(arr: &[f64], window: usize)
| 51 | } |
| 52 | |
| 53 | fn rolling_max(arr: &[f64], window: usize) -> Vec<f64> { |
| 54 | let mut out = vec![NAN; arr.len()]; |
| 55 | if window == 0 { |
| 56 | return out; |
| 57 | } |
| 58 | for i in 0..arr.len() { |
| 59 | if i + 1 < window { |
| 60 | continue; |
| 61 | } |
| 62 | let start = i + 1 - window; |
| 63 | let max_v = arr[start..=i].iter().fold(f64::NEG_INFINITY, |m, v| m.max(*v)); |
| 64 | out[i] = max_v; |
| 65 | } |
| 66 | out |
| 67 | } |
| 68 | |
| 69 | fn rolling_min(arr: &[f64], window: usize) -> Vec<f64> { |
| 70 | let mut out = vec![NAN; arr.len()]; |