use std::f32;
use std::f32::consts::PI;
pub type WindowFn = fn(usize, usize) -> f32;
pub fn rectangular(_n: usize, _samples: usize) -> f32 {
1.0
}
pub fn hann_function(n: usize, samples: usize) -> f32 {
0.5 * (1.0 - f32::cos((2.0 * PI * n as f32) / (samples as f32 - 1.0)))
}
pub fn blackman_harris(n: usize, samples: usize) -> f32 {
const A0: f32 = 0.35875;
const A1: f32 = 0.48829;
const A2: f32 = 0.14128;
const A3: f32 = 0.01168;
let arg = 2.0 * PI * n as f32 / (samples as f32 - 1.0);
A0 - A1 * f32::cos(arg) + A2 * f32::cos(2.0 * arg) - A3 * f32::cos(3.0 * arg)
}