void ff_flac_compute_autocorr(const int32_t *data, int len, int lag,

                              double *autoc)

{

    int i, j;

    double tmp[len + lag + 1];

    double *data1= tmp + lag;



    apply_welch_window(data, len, data1);



    for(j=0; j<lag; j++)

        data1[j-lag]= 0.0;

    data1[len] = 0.0;



    for(j=0; j<lag; j+=2){

        double sum0 = 1.0, sum1 = 1.0;

        for(i=0; i<len; i++){

            sum0 += data1[i] * data1[i-j];

            sum1 += data1[i] * data1[i-j-1];

        }

        autoc[j  ] = sum0;

        autoc[j+1] = sum1;

    }



    if(j==lag){

        double sum = 1.0;

        for(i=0; i<len; i+=2){

            sum += data1[i  ] * data1[i-j  ]

                 + data1[i+1] * data1[i-j+1];

        }

        autoc[j] = sum;

    }

}

void ff_flac_compute_autocorr(const int32_t *data, int len, int lag,

                              double *autoc)

{

    int i, j;

    double tmp[len + lag + 1];

    double *data1= tmp + lag;



    apply_welch_window(data, len, data1);



    for(j=0; j<lag; j++)

        data1[j-lag]= 0.0;

    data1[len] = 0.0;



    for(j=0; j<lag; j+=2){

        double sum0 = 1.0, sum1 = 1.0;

        for(i=0; i<len; i++){

            sum0 += data1[i] * data1[i-j];

            sum1 += data1[i] * data1[i-j-1];

        }

        autoc[j  ] = sum0;

        autoc[j+1] = sum1;

    }



    if(j==lag){

        double sum = 1.0;

        for(i=0; i<len; i+=2){

            sum += data1[i  ] * data1[i-j  ]

                 + data1[i+1] * data1[i-j+1];

        }

        autoc[j] = sum;

    }

}

void FUNC_0(const int32_t *VAR_0, int VAR_1, int VAR_2,

                              double *VAR_3)

{

    int VAR_4, VAR_5;

    double VAR_6[VAR_1 + VAR_2 + 1];

    double *VAR_7= VAR_6 + VAR_2;



    apply_welch_window(VAR_0, VAR_1, VAR_7);



    for(VAR_5=0; VAR_5<VAR_2; VAR_5++)

        VAR_7[VAR_5-VAR_2]= 0.0;

    VAR_7[VAR_1] = 0.0;



    for(VAR_5=0; VAR_5<VAR_2; VAR_5+=2){

        double VAR_8 = 1.0, VAR_9 = 1.0;

        for(VAR_4=0; VAR_4<VAR_1; VAR_4++){

            VAR_8 += VAR_7[VAR_4] * VAR_7[VAR_4-VAR_5];

            VAR_9 += VAR_7[VAR_4] * VAR_7[VAR_4-VAR_5-1];

        }

        VAR_3[VAR_5  ] = VAR_8;

        VAR_3[VAR_5+1] = VAR_9;

    }



    if(VAR_5==VAR_2){

        double VAR_10 = 1.0;

        for(VAR_4=0; VAR_4<VAR_1; VAR_4+=2){

            VAR_10 += VAR_7[VAR_4  ] * VAR_7[VAR_4-VAR_5  ]

                 + VAR_7[VAR_4+1] * VAR_7[VAR_4-VAR_5+1];

        }

        VAR_3[VAR_5] = VAR_10;

    }

}

void FUNC_0(const int32_t *VAR_0, int VAR_1, int VAR_2,
double *VAR_3)
{ int VAR_4, VAR_5; double VAR_6[VAR_1 + VAR_2 + 1]; double *VAR_7= VAR_6 + VAR_2; apply_welch_window(VAR_0, VAR_1, VAR_7); for(VAR_5=0; VAR_5<VAR_2; VAR_5++) VAR_7[VAR_5-VAR_2]= 0.0; VAR_7[VAR_1] = 0.0; for(VAR_5=0; VAR_5<VAR_2; VAR_5+=2){ double VAR_8 = 1.0, VAR_9 = 1.0; for(VAR_4=0; VAR_4<VAR_1; VAR_4++){ VAR_8 += VAR_7[VAR_4] * VAR_7[VAR_4-VAR_5]; VAR_9 += VAR_7[VAR_4] * VAR_7[VAR_4-VAR_5-1]; } VAR_3[VAR_5  ] = VAR_8; VAR_3[VAR_5+1] = VAR_9; } if(VAR_5==VAR_2){ double VAR_10 = 1.0; for(VAR_4=0; VAR_4<VAR_1; VAR_4+=2){ VAR_10 += VAR_7[VAR_4  ] * VAR_7[VAR_4-VAR_5  ]
+ VAR_7[VAR_4+1] * VAR_7[VAR_4-VAR_5+1]; } VAR_3[VAR_5] = VAR_10; } }