home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 4
/
AACD04.ISO
/
AACD
/
Sound
/
LAME
/
Source
/
mdct.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-06-01
|
19KB
|
509 lines
/**********************************************************************
* ISO MPEG Audio Subgroup Software Simulation Group (1996)
* ISO 13818-3 MPEG-2 Audio Encoder - Lower Sampling Frequency Extension
*
* $Id: mdct.c,v 1.1 1996/02/14 04:04:23 rowlands Exp $
*
* $Log: mdct.c,v $
* Revision 1.1 1996/02/14 04:04:23 rowlands
* Initial revision
*
* Received from Mike Coleman
**********************************************************************/
#include "common.h"
#include "l3side.h"
#include "mdct.h"
double ca[8], cs[8];
/*
This is table B.9: coefficients for aliasing reduction
*/
static double c[8] = { -0.6,-0.535,-0.33,-0.185,-0.095,-0.041,-0.0142, -0.0037 };
void mdct_sub( L3SBS (*sb_sample), double (*mdct_freq)[2][576], int stereo, III_side_info_t *l3_side, int mode_gr )
{
gr_info *cod_info;
double mdct_in[36];
int ch,gr,band,k,j;
double bu,bd;
static int init = 0;
int block_type;
double (*mdct_enc)[2][32][18] = (double (*)[2][32][18]) mdct_freq;
if ( init == 0 )
{
/* prepare the aliasing reduction butterflies */
for ( k = 0; k < 8; k++ )
{
double sq;
sq = sqrt( 1.0 + c[k] * c[k] );
ca[k] = c[k] / sq;
cs[k] = 1.0 / sq;
}
init++;
}
for ( gr = 0; gr < mode_gr; gr++ )
for ( ch = 0; ch < stereo; ch++ )
{
cod_info = (gr_info *) &(l3_side->gr[gr].ch[ch]) ;
block_type = cod_info->block_type;
/*
Compensate for inversion in the analysis filter
*/
for ( band = 1; band < 32; band+=2 )
for ( k = 1; k < 18; k+=2 )
(*sb_sample)[ch][gr+1][k][band] *= -1.0;
/*
Perform imdct of 18 previous subband samples
+ 18 current subband samples
*/
for ( band = 0; band < 32; band++ )
{
for ( k = 0; k < 18; k++ )
{
mdct_in[k] = (*sb_sample)[ch][ gr ][k][band];
mdct_in[k+18] = (*sb_sample)[ch][gr+1][k][band];
}
#ifdef ALLOW_MIXED
if ( cod_info->mixed_block_flag && (band < 2) )
block_type = 0;
#endif
mdct( mdct_in, &mdct_enc[gr][ch][band][0], block_type );
}
/*
Perform aliasing reduction butterfly
on long blocks
*/
if ( block_type != 2 )
for ( band = 0; band < 31; band++ )
for ( k = 0; k < 8; k++ )
{
bu = mdct_enc[gr][ch][band][17-k] * cs[k] + mdct_enc[gr][ch][band+1][k] * ca[k];
bd = mdct_enc[gr][ch][band+1][k] * cs[k] - mdct_enc[gr][ch][band][17-k] * ca[k];
mdct_enc[gr][ch][band][17-k] = bu;
mdct_enc[gr][ch][band+1][k] = bd;
}
}
/*
Save latest granule's subband samples to be used in
the next mdct call
*/
for ( ch = 0; ch < stereo; ch++ )
for ( j = 0; j < 18; j++ )
for ( band = 0; band < 32; band++ )
(*sb_sample)[ch][0][j][band] = (*sb_sample)[ch][mode_gr][j][band];
}
void mdct( double *in, double *out, int block_type )
{
/*-------------------------------------------------------------------*/
/* */
/* Function: Calculation of the MDCT */
/* In the case of long blocks ( block_type 0,1,3 ) there are */
/* 36 coefficents in the time domain and 18 in the frequency */
/* domain. */
/* In the case of short blocks (block_type 2 ) there are 3 */
/* transformations with short length. This leads to 12 coefficents */
/* in the time and 6 in the frequency domain. In this case the */
/* results are stored side by side in the vector out[]. */
/* */
/* New layer3 */
/* */
/*-------------------------------------------------------------------*/
int l,k,i,m,N;
double sum;
static double win[4][36];
static int init = 0;
static double cos_s[6][12], cos_l[18][18];
static double fin[18];
static double *cos_l0;
if ( init == 0 )
{
/* type 0 */
for ( i = 0; i < 36; i++ )
win[0][i] = sin( PI/36 * (i + 0.5) );
/* type 1*/
for ( i = 0; i < 18; i++ )
win[1][i] = sin( PI/36 * (i + 0.5) );
for ( i = 18; i < 24; i++ )
win[1][i] = 1.0;
for ( i = 24; i < 30; i++ )
win[1][i] = sin( PI/12 * ( i + 0.5 - 18) );
for ( i = 30; i < 36; i++ )
win[1][i] = 0.0;
/* type 3*/
for ( i = 0; i < 6; i++ )
win[3][i] = 0.0;
for ( i = 6; i < 12; i++ )
win[3][i] = sin( PI/12 * (i + 0.5 - 6) );
for ( i = 12; i < 18; i++ )
win[3][i] = 1.0;
for ( i = 18; i < 36; i++ )
win[3][i] = sin( PI/36 * (i + 0.5) );
N = 12;
for ( m = 0; m < N / 2; m++ )
for ( k = 0; k < N; k++ )
cos_s[m][k] = cos( (PI /(2 * N)) * (2 * k + 1 + N / 2) *
(2 * m + 1) ) / (N / 4) * sin( PI/12 * (k + 0.5) );
N = 36;
for ( m = 0; m < N / 2; m++ )
{
for ( k = 0; k < 9; k++ )
{
cos_l[m][k] = cos( (PI / (2 * N)) * (2 * k + 1 + N / 2) *
(2 * m + 1) ) / (N / 4);
cos_l[m][9+k] = cos( (PI / (2 * N)) * (2 * (18 + k) + 1 + N / 2) *
(2 * m + 1) ) / (N / 4);
}
}
init++;
}
if ( block_type == 2)
{
N = 12;
for ( l = 0; l < 3; l++ )
{
for ( m = 0; m < N / 2; m++ )
{
for ( sum = 0.0, k = 0; k < N; k++ )
sum += in[k + 6 * l + 6] * cos_s[m][k];
out[ 3 * m + l] = sum;
}
}
}
else
{
for (k=0;k<9;k++)
{
fin[k] = win[block_type][k] * in[k] - win[block_type][17-k] * in[17-k];
fin[9+k] = win[block_type][18+k] * in[18+k] + win[block_type][35-k] * in[35-k];
}
/* 0 */
cos_l0= &cos_l[0][0];
sum = ( fin[0] ) * *cos_l0; /* 17 */
sum += ( fin[1] ) * *++cos_l0; /* 15 */
sum += ( fin[2] ) * *++cos_l0; /* 13 */
sum += ( fin[3] ) * *++cos_l0; /* 11 */
sum += ( fin[4] ) * *++cos_l0; /* 9 */
sum += ( fin[5] ) * *++cos_l0; /* 7 */
sum += ( fin[6] ) * *++cos_l0; /* 5 */
sum += ( fin[7] ) * *++cos_l0; /* 3 */
sum += ( fin[8] ) * *++cos_l0; /* 1 */
sum += ( fin[9] ) * *++cos_l0; /* 19*/
sum += ( fin[10] ) * *++cos_l0; /* 21 */
sum += ( fin[11] ) * *++cos_l0; /* 23 */
sum += ( fin[12] ) * *++cos_l0; /*25 */
sum += ( fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[14] ) * *++cos_l0; /* 29 */
sum += ( fin[15] ) * *++cos_l0; /* 31*/
sum += ( fin[16] ) * *++cos_l0; /* 33 */
sum += ( fin[17] ) * *++cos_l0; /* 35 */
out[0]=sum;
/* 1 */
sum = ( fin[2]+fin[3]+fin[17] ) * cos_l[1][2]; /* mfc=3 2*/
sum += ( fin[1]+fin[4]+fin[16] ) * cos_l[1][1]; /* mfc=9 1*/
sum += ( fin[0]+fin[5]+fin[15] ) * *++cos_l0; /* mfc=15 0*/
sum += ( fin[6]-fin[9]+fin[14] ) * *(cos_l0+=6); /* mfc=21 6*/
sum += ( fin[7]-fin[10]+fin[13] ) * *++cos_l0; /* mfc=27 7*/
sum += ( fin[8]-fin[11]+fin[12] ) * *++cos_l0; /* mfc = 28 8*/
out[1]=sum;
/* 2 */
cos_l0= &cos_l[2][0];
sum = ( fin[0] ) * *cos_l0; /* mfc 23 */
sum += ( fin[1] ) * *++cos_l0; /* mfc 33 */
sum += ( fin[2] ) * *++cos_l0; /* mfc 29 */
sum += ( fin[3] ) * *++cos_l0; /* mfc 19 */
sum += ( fin[4] ) * *++cos_l0; /* mfc 9 */
sum += ( fin[5] ) * *++cos_l0; /* mfc 1 */
sum += ( fin[6] ) * *++cos_l0; /* mfc 11 */
sum += ( fin[7] ) * *++cos_l0; /* mfc 21 */
sum += ( fin[8] ) * *++cos_l0; /* mfc 31 */
sum += ( fin[9] ) * *++cos_l0; /* mfc 13 */
sum += ( fin[10] ) * *++cos_l0; /* mfc 3 */
sum += ( fin[11] ) * *++cos_l0; /* mfc 7 */
sum += ( fin[12] ) * *++cos_l0; /* mfc 17 */
sum += ( fin[13] ) * *++cos_l0; /* mfc 27 */
sum += ( fin[14] ) * *++cos_l0; /* mfc 35 */
sum += ( fin[15] ) * *++cos_l0; /* mfc 25 */
sum += ( fin[16] ) * *++cos_l0; /* mfc 15 */
sum += ( fin[17] ) * *++cos_l0; /* mfc 5 */
out[2]=sum;
/* 3 */;
sum = ( fin[0] ) * *++cos_l0; /* mfc 11 */
sum += ( fin[1] ) * *++cos_l0; /* mfc 3 */
sum += ( fin[2] ) * *++cos_l0; /* 17 */
sum += ( fin[3] ) * *++cos_l0; /* 31 */
sum += ( fin[4] ) * *++cos_l0; /* 27 */
sum += ( fin[5] ) * *++cos_l0; /* 13 */
sum += ( fin[6] ) * *++cos_l0; /* 1 */
sum += ( fin[7] ) * *++cos_l0; /* 15 */
sum += ( fin[8] ) * *++cos_l0; /* 29 */
sum += ( fin[9] ) * *++cos_l0; /* 25 */
sum += ( fin[10] ) * *++cos_l0; /* 33 */
sum += ( fin[11] ) * *++cos_l0; /* 19 */
sum += ( fin[12] ) * *++cos_l0; /* 5 */
sum += ( fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[14] ) * *++cos_l0; /* 23 */
sum += ( fin[15] ) * *++cos_l0; /* 35 */
sum += ( fin[16] ) * *++cos_l0; /* 21 */
sum += ( fin[17] ) * *++cos_l0; /* 7 */
out[3]=sum;
/* 4 */
/* mfc 27 */
sum = ( fin[0]-fin[1]-fin[4]+fin[5]+fin[8] \
-fin[11]+fin[12]+fin[15]-fin[16] ) * *++cos_l0;
/* mfc 9 */
sum += ( -fin[2]-fin[3]+fin[6]+fin[7]-fin[9]-fin[10] \
+fin[13]+fin[14]-fin[17] ) * cos_l[4][6];
out[4]=sum;
/* 5 */
cos_l0= &cos_l[5][0];
sum = ( fin[0] ) * *cos_l0; /* 7 */
sum += ( fin[1] ) * *++cos_l0; /* 15 */
sum += ( fin[2] ) * *++cos_l0; /* 35 */
sum += ( fin[3] ) * *++cos_l0; /* 13 */
sum += ( fin[4] ) * *++cos_l0; /* 9 */
sum += ( fin[5] ) * *++cos_l0; /* 31 */
sum += ( fin[6] ) * *++cos_l0; /* 19 */
sum += ( fin[7] ) * *++cos_l0; /* 3 */
sum += ( fin[8] ) * *++cos_l0; /* 8 */
sum += ( fin[9] ) * *++cos_l0; /* 29 */
sum += ( fin[10] ) * *++cos_l0; /* 21 */
sum += ( fin[11] ) * *++cos_l0; /* 1 */
sum += ( fin[12] ) * *++cos_l0; /* 23 */
sum += ( fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[14] ) * *++cos_l0; /* 5 */
sum += ( fin[15] ) * *++cos_l0; /* 17 */
sum += ( fin[16] ) * *++cos_l0; /* 33 */
sum += ( fin[17] ) * *++cos_l0; /* 11 */
out[5]=sum;
/* 6 */
sum = ( fin[0] ) * *++cos_l0; /* 31 */
sum += ( fin[1] ) * *++cos_l0; /* 15 */
sum += ( fin[2] ) * *++cos_l0; /* 11 */
sum += ( fin[3] ) * *++cos_l0; /* 35 */
sum += ( fin[4] ) * *++cos_l0; /* 9 */
sum += ( fin[5] ) * *++cos_l0; /* 17 */
sum += ( fin[6] ) * *++cos_l0; /* 29 */
sum += ( fin[7] ) * *++cos_l0; /* 3 */
sum += ( fin[8] ) * *++cos_l0; /* 23 */
sum += ( fin[9] ) * *++cos_l0; /* 5 */
sum += ( fin[10] ) * *++cos_l0; /* 21 */
sum += ( fin[11] ) * *++cos_l0; /* 25 */
sum += ( fin[12] ) * *++cos_l0; /* 1 */
sum += ( fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[14] ) * *++cos_l0; /* 19 */
sum += ( fin[15] ) * *++cos_l0; /* 7 */
sum += ( fin[16] ) * *++cos_l0; /* 33 */
sum += ( fin[17] ) * *++cos_l0; /* 13 */
out[6]=sum;
/* 7 */
sum = ( fin[0]+fin[5]+fin[15] ) * *++cos_l0; /* 3 */
sum += ( fin[1]+fin[4]+fin[16] ) * *++cos_l0; /* 27*/
sum += ( fin[2]+fin[3]+fin[17] ) * *++cos_l0; /* 15 */
sum += ( fin[6]-fin[9]+fin[14] ) * *(cos_l0+=4); /* 33 */
sum += ( fin[7]-fin[10]+fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[8]-fin[11]+fin[12] ) * *++cos_l0; /* 21 */
out[7]=sum;
/* 8 */
cos_l0= &cos_l[8][0];
sum = ( fin[0] ) * *cos_l0; /* 35 */
sum += ( fin[1] ) * *++cos_l0; /* 3 */
sum += ( fin[2] ) * *++cos_l0; /* 31 */
sum += ( fin[3] ) * *++cos_l0; /* 7 */
sum += ( fin[4] ) * *++cos_l0; /* 27*/
sum += ( fin[5] ) * *++cos_l0; /* 11 */
sum += ( fin[6] ) * *++cos_l0; /* 23 */
sum += ( fin[7] ) * *++cos_l0; /* 15*/
sum += ( fin[8] ) * *++cos_l0; /* 19 */
sum += ( fin[9] ) * *++cos_l0; /* 1 */
sum += ( fin[10] ) * *++cos_l0; /* 33 */
sum += ( fin[11] ) * *++cos_l0; /* 5 */
sum += ( fin[12] ) * *++cos_l0; /* 29*/
sum += ( fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[14] ) * *++cos_l0; /* 25 */
sum += ( fin[15] ) * *++cos_l0; /* 13*/
sum += ( fin[16] ) * *++cos_l0; /* 21 */
sum += ( fin[17] ) * *++cos_l0; /* 17 */
out[8]=sum;
/* 9 */
sum = ( fin[0] ) * *++cos_l0; /* 1 */
sum += ( fin[1] ) * *++cos_l0; /* 33 */
sum += ( fin[2] ) * *++cos_l0; /* 5 */
sum += ( fin[3] ) * *++cos_l0; /* 29*/
sum += ( fin[4] ) * *++cos_l0; /* 9 */
sum += ( fin[5] ) * *++cos_l0; /* 25 */
sum += ( fin[6] ) * *++cos_l0; /* 13 */
sum += ( fin[7] ) * *++cos_l0; /* 21*/
sum += ( fin[8] ) * *++cos_l0; /* 17 */
sum += ( fin[9] ) * *++cos_l0; /* 35*/
sum += ( fin[10] ) * *++cos_l0; /* 3 */
sum += ( fin[11] ) * *++cos_l0; /* 31 */
sum += ( fin[12] ) * *++cos_l0; /* 7 */
sum += ( fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[14] ) * *++cos_l0; /* 11 */
sum += ( fin[15] ) * *++cos_l0; /* 23*/
sum += ( fin[16] ) * *++cos_l0; /* 15 */
sum += ( fin[17] ) * *++cos_l0; /* 19 */
out[9]=sum;
/* 10 */
sum = ( fin[0]+fin[5]+fin[15] ) * *++cos_l0; /* 33 */
sum += ( fin[1]+fin[4]+fin[16] ) * *++cos_l0; /* 9 */
sum += ( fin[2]+fin[3]+fin[17] ) * *++cos_l0; /* 21 */
sum += ( fin[6]-fin[9]+fin[14] ) * *(cos_l0+=4); /* 3 */
sum += ( fin[7]-fin[10]+fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[8]-fin[11]+fin[12] ) * *++cos_l0; /* 15 */
out[10]=sum;
/* 11 */
cos_l0= &cos_l[11][0];
sum = ( fin[0] ) * *cos_l0; /* 5 */
sum += ( fin[1] ) * *++cos_l0; /* 21 */
sum += ( fin[2] ) * *++cos_l0; /* 25 */
sum += ( fin[3] ) * *++cos_l0; /* 1 */
sum += ( fin[4] ) * *++cos_l0; /*27 */
sum += ( fin[5] ) * *++cos_l0; /* 19 */
sum += ( fin[6] ) * *++cos_l0; /* 7 */
sum += ( fin[7] ) * *++cos_l0; /* 33*/
sum += ( fin[8] ) * *++cos_l0; /* 13 */
sum += ( fin[9] ) * *++cos_l0; /* 31*/
sum += ( fin[10] ) * *++cos_l0; /* 15 */
sum += ( fin[11] ) * *++cos_l0; /* 11 */
sum += ( fin[12] ) * *++cos_l0; /*35 */
sum += ( fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[14] ) * *++cos_l0; /* 17 */
sum += ( fin[15] ) * *++cos_l0; /* 29*/
sum += ( fin[16] ) * *++cos_l0; /* 3 */
sum += ( fin[17] ) * *++cos_l0; /* 23 */
out[11]=sum;
/* 12 */
sum = ( fin[0] ) * *++cos_l0; /* 29 */
sum += ( fin[1] ) * *++cos_l0; /* 21 */
sum += ( fin[2] ) * *++cos_l0; /* 1 */
sum += ( fin[3] ) * *++cos_l0; /* 23 */
sum += ( fin[4] ) * *++cos_l0; /*27 */
sum += ( fin[5] ) * *++cos_l0; /* 5 */
sum += ( fin[6] ) * *++cos_l0; /* 17 */
sum += ( fin[7] ) * *++cos_l0; /* 33*/
sum += ( fin[8] ) * *++cos_l0; /* 11 */
sum += ( fin[9] ) * *++cos_l0; /* 7 */
sum += ( fin[10] ) * *++cos_l0; /* 15 */
sum += ( fin[11] ) * *++cos_l0; /* 35 */
sum += ( fin[12] ) * *++cos_l0; /*13 */
sum += ( fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[14] ) * *++cos_l0; /* 31 */
sum += ( fin[15] ) * *++cos_l0; /* 19*/
sum += ( fin[16] ) * *++cos_l0; /* 3 */
sum += ( fin[17] ) * *++cos_l0; /* 25 */
out[12]=sum;
/* 13 */
sum = ( -fin[0]+fin[1]+fin[4]-fin[5]-fin[8]+fin[11]-fin[12] \
-fin[15]+fin[16] ) * -*++cos_l0; /* 9 */
sum += ( -fin[2]-fin[3]+fin[6]+fin[7]-fin[9]-fin[10]+fin[13] \
+fin[14]-fin[17] ) * -cos_l[13][2]; /* 27 */
out[13]=sum;
/* 14 */
cos_l0= &cos_l[14][0];
sum = ( fin[0] ) * *cos_l0; /* 25 */
sum += ( fin[1] ) * *++cos_l0; /* 33 */
sum += ( fin[2] ) * *++cos_l0; /* 19 */
sum += ( fin[3] ) * *++cos_l0; /* 5 */
sum += ( fin[4] ) * *++cos_l0; /* 9 */
sum += ( fin[5] ) * *++cos_l0; /* 23 */
sum += ( fin[6] ) * *++cos_l0; /* 35 */
sum += ( fin[7] ) * *++cos_l0; /* 21*/
sum += ( fin[8] ) * *++cos_l0; /* 7 */
sum += ( fin[9] ) * *++cos_l0; /* 11*/
sum += ( fin[10] ) * *++cos_l0; /* 3 */
sum += ( fin[11] ) * *++cos_l0; /* 17 */
sum += ( fin[12] ) * *++cos_l0; /*31 */
sum += ( fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[14] ) * *++cos_l0; /* 13 */
sum += ( fin[15] ) * *++cos_l0; /* 1 */
sum += ( fin[16] ) * *++cos_l0; /* 15 */
sum += ( fin[17] ) * *++cos_l0; /* 29 */
out[14]=sum;
/* 15 */
sum = ( fin[0] ) * *++cos_l0; /* 13 */
sum += ( fin[1] ) * *++cos_l0; /* 3 */
sum += ( fin[2] ) * *++cos_l0; /* 7 */
sum += ( fin[3] ) * *++cos_l0; /* 17 */
sum += ( fin[4] ) * *++cos_l0; /* 27*/
sum += ( fin[5] ) * *++cos_l0; /* 35 */
sum += ( fin[6] ) * *++cos_l0; /* 25 */
sum += ( fin[7] ) * *++cos_l0; /* 15*/
sum += ( fin[8] ) * *++cos_l0; /* 5 */
sum += ( fin[9] ) * *++cos_l0; /* 23*/
sum += ( fin[10] ) * *++cos_l0; /* 33 */
sum += ( fin[11] ) * *++cos_l0; /* 29 */
sum += ( fin[12] ) * *++cos_l0; /*19 */
sum += ( fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[14] ) * *++cos_l0; /* 1 */
sum += ( fin[15] ) * *++cos_l0; /* 11*/
sum += ( fin[16] ) * *++cos_l0; /* 21 */
sum += ( fin[17] ) * *++cos_l0; /* 31 */
out[15]=sum;
/* 16 */
sum = ( fin[0]+fin[5]+fin[15] ) * *++cos_l0; /* 21 */
sum += ( fin[1]+fin[4]+fin[16] ) * *++cos_l0; /* 27 */
sum += ( fin[2]+fin[3]+fin[17] ) * *++cos_l0; /* 33 */
sum += ( fin[6]-fin[9]+fin[14] ) * *(cos_l0+=4); /* 15 */
sum += ( fin[7]-fin[10]+fin[13] ) * *++cos_l0; /* 9 */
sum += ( fin[8]-fin[11]+fin[12] ) * *++cos_l0; /* 3 */
out[16]=sum;
/* 17 */
cos_l0= &cos_l[17][0];
sum = ( fin[0] ) * *cos_l0; /* 17 */
sum += ( fin[1] ) * *++cos_l0; /* 15 */
sum += ( fin[2] ) * *++cos_l0; /* 13 */
sum += ( fin[3] ) * *++cos_l0; /* 11 */
sum += ( fin[4] ) * *++cos_l0; /* 9 */
sum += ( fin[5] ) * *++cos_l0; /* 7 */
sum += ( fin[6] ) * *++cos_l0; /* 5 */
sum += ( fin[7] ) * *++cos_l0; /* 3 */
sum += ( fin[8] ) * *++cos_l0; /* 1 */
sum += ( fin[9] ) * *++cos_l0; /* 19*/
sum += ( fin[10] ) * *++cos_l0; /* 21 */
sum += ( fin[11] ) * *++cos_l0; /* 23 */
sum += ( fin[12] ) * *++cos_l0; /*25 */
sum += ( fin[13] ) * *++cos_l0; /* 27 */
sum += ( fin[14] ) * *++cos_l0; /* 29 */
sum += ( fin[15] ) * *++cos_l0; /* 31*/
sum += ( fin[16] ) * *++cos_l0; /* 33 */
sum += ( fin[17] ) * *++cos_l0; /* 35 */
out[17]=sum;
}
}