pub fn imdct36(x: &[f32], y: &mut [f32; 36]) {
        debug_assert!(x.len() == 18);

        let mut dct = [0f32; 18];

        dct_iv(x, &mut dct);

        // Mapping of DCT-IV to IMDCT
        //
        //  0            9                       27           36
        //  +------------+------------------------+------------+
        //  | dct[9..18] | -dct[0..18].rev()      | -dct[0..9] |
        //  +------------+------------------------+------------+
        //
        // where dct[] is the DCT-IV of x.

        // First 9 IMDCT values are values 9..18 in the DCT-IV.
        for i in 0..9 {
            y[i] = dct[9 + i];
        }

        // Next 18 IMDCT values are negated and /reversed/ values 0..18 in the DCT-IV.
        for i in 9..27 {
            y[i] = -dct[27 - i - 1];
        }

        // Last 9 IMDCT values are negated values 0..9 in the DCT-IV.
        for i in 27..36 {
            y[i] = -dct[i - 27];
        }
    }
/// Performs an Inverse Modified Discrete Cosine Transform (IMDCT) transforming 18
/// frequency-domain input samples, into 36 time-domain output samples.
///
/// This is a straight-forward implementation of the IMDCT using Szu-Wei Lee's algorithm
/// published in article [1].
///
/// [1] Szu-Wei Lee, "Improved algorithm for efficient computation of the forward and backward
/// MDCT in MPEG audio coder", IEEE Transactions on Circuits and Systems II: Analog and Digital
/// Signal Processing, vol. 48, no. 10, pp. 990-994, 2001.
///
/// https://ieeexplore.ieee.org/document/974789
Performs an Inverse Modified Discrete Cosine Transform (IMDCT) transforming 18
frequency-domain input samples, into 36 time-domain output samples.

This is a straight-forward implementation of the IMDCT using Szu-Wei Lee's algorithm
published in article [1].

[1] Szu-Wei Lee, "Improved algorithm for efficient computation of the forward and backward
MDCT in MPEG audio coder", IEEE Transactions on Circuits and Systems II: Analog and Digital
Signal Processing, vol. 48, no. 10, pp.


Performs an Inverse Modified Discrete Cosine Transform ( IMDCT ) transforming 18 frequency - domain input samples into 36 time - domain output samples . This is a straight - forward implementation of the IMDCT using Szu - Wei Lee ' s algorithm published in article [ 1 ] . [ 1 ] Szu - Wei Lee " Improved algorithm for efficient computation of the forward and backward MDCT in MPEG audio coder " IEEE Transactions on Circuits and Systems II : Analog and Digital Signal Processing vol . 48 no . 10 pp .
pub fn imdct36(x: &[f32], y: &mut [f32; 36]) {
        debug_assert!(x.len() == 18);
        let mut dct = [0f32; 18];
        dct_iv(x, &mut dct);
        // Mapping of DCT-IV to IMDCT
        //
        //  0            9                       27           36
        //  +------------+------------------------+------------+
        //  | dct[9..18] | -dct[0..18].rev()      | -dct[0..9] |
        //  +------------+------------------------+------------+
        //
        // where dct[] is the DCT-IV of x.
        // First 9 IMDCT values are values 9..18 in the DCT-IV.
        for i in 0..9 {
            y[i] = dct[9 + i];
        }
        // Next 18 IMDCT values are negated and /reversed/ values 0..18 in the DCT-IV.
        for i in 9..27 {
            y[i] = -dct[27 - i - 1];
        }
        // Last 9 IMDCT values are negated values 0..9 in the DCT-IV.
        for i in 27..36 {
            y[i] = -dct[i - 27];
        }
    }
pub fn imdct36 ( x : & [ f32 ] , y : & mut [ f32 ; 36 ] ) { debug_assert ! ( x len ( ) 18 ) ; let mut dct = [ 0f32 ; 18 ] ; dct_iv ( x , & mut dct ) ; // Mapping of DCT-IV to IMDCT // //  0            9                       27           36 //  +------------+------------------------+------------+ //  | dct[9..18] | -dct[0..18].rev()      | -dct[0..9] | //  +------------+------------------------+------------+ // // where dct[] is the DCT-IV of x. // First 9 IMDCT values are values 9..18 in the DCT-IV. for i in 0 .. 9 { y [ i ] = dct [ 9 + i ] ; } // Next 18 IMDCT values are negated and /reversed/ values 0..18 in the DCT-IV. for i in 9 .. 27 { y [ i ] = - dct [ 27 - i - 1 ] ; } // Last 9 IMDCT values are negated values 0..9 in the DCT-IV. for i in 27 .. 36 { y [ i ] = - dct [ i - 27 ] ; } }
Performs an Inverse Modified Discrete Cosine Transform (IMDCT) transforming 18
frequency-domain input samples, into 36 time-domain output samples.
Performs an Inverse Modified Discrete Cosine Transform ( IMDCT ) transforming 18 frequency - domain input samples into 36 time - domain output samples .
x
&[f32]
y
&mut [f32; 36]
x
&[f32]
y
&mut [f32; 36]