use crate::kernel::Float;
use crate::rdft::solvers::{
dct1 as r2r_dct1, dct2 as r2r_dct2, dct3 as r2r_dct3, dct4 as r2r_dct4,
};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum DctType {
I,
II,
III,
IV,
}
pub fn dct_ii<T: Float>(input: &[T], output: &mut [T]) {
r2r_dct2(input, output);
}
pub fn dct_iii<T: Float>(input: &[T], output: &mut [T]) {
r2r_dct3(input, output);
}
pub fn dct_i<T: Float>(input: &[T], output: &mut [T]) {
r2r_dct1(input, output);
}
pub fn dct_iv<T: Float>(input: &[T], output: &mut [T]) {
r2r_dct4(input, output);
}