1use std::f64::consts::PI;
2
3use super::Function;
4use {Precision};
5
6pub struct Nuttall;
8
9const ALPHA0: Precision = 0.355768;
10const ALPHA1: Precision = 0.487396;
11const ALPHA2: Precision = 0.144232;
12const ALPHA3: Precision = 0.012604;
13
14const PI2: Precision = (PI * 2.0) as Precision;
15const PI4: Precision = (PI * 4.0) as Precision;
16const PI6: Precision = (PI * 6.0) as Precision;
17
18impl Function for Nuttall {
19 fn compute(n: Precision, N: Precision) -> Precision {
20 ALPHA0 -
21 ALPHA1 * ((PI2 * n) / (N - 1.0)).cos() +
22 ALPHA2 * ((PI4 * n) / (N - 1.0)).cos() -
23 ALPHA3 * ((PI6 * n) / (N - 1.0)).cos()
24 }
25}