private void antialias(int ch, int gr)
	{
	   int sb18, ss, sb18lim;
	   gr_info_s gr_info = (si.ch[ch].gr[gr]);
	   // 31 alias-reduction operations between each pair of sub-bands
	   // with 8 butterflies between each pair

		if  ((gr_info.window_switching_flag !=0) && (gr_info.block_type == 2) &&
			 !(gr_info.mixed_block_flag != 0) )
	       return;

		if ((gr_info.window_switching_flag !=0) && (gr_info.mixed_block_flag != 0)&&
		    (gr_info.block_type == 2)) {
	      sb18lim = 18;
		} else {
			sb18lim = 558;
	   }

	   for (sb18=0; sb18 < sb18lim; sb18+=18) {
	      for (ss=0;ss<8;ss++) {
	      	int src_idx1 = sb18 + 17 - ss;
	         int src_idx2 = sb18 + 18 + ss;
	      	float bu = out_1d[src_idx1];
				float bd = out_1d[src_idx2];
				out_1d[src_idx1] = (bu * cs[ss]) - (bd * ca[ss]);
				out_1d[src_idx2] = (bd * cs[ss]) + (bu * ca[ss]);
	      }
   	  }
	}