1use crate::kernel::Float;
11use crate::rdft::solvers::{
12 dct1 as r2r_dct1, dct2 as r2r_dct2, dct3 as r2r_dct3, dct4 as r2r_dct4,
13};
14
15#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
17#[non_exhaustive]
18pub enum DctType {
19 I,
21 II,
23 III,
25 IV,
27}
28
29pub fn dct_ii<T: Float>(input: &[T], output: &mut [T]) {
31 r2r_dct2(input, output);
32}
33
34pub fn dct_iii<T: Float>(input: &[T], output: &mut [T]) {
36 r2r_dct3(input, output);
37}
38
39pub fn dct_i<T: Float>(input: &[T], output: &mut [T]) {
41 r2r_dct1(input, output);
42}
43
44pub fn dct_iv<T: Float>(input: &[T], output: &mut [T]) {
46 r2r_dct4(input, output);
47}