if ((voicing<.3f && non_st < .2f && pow_ener < 1.2f*noise_level) || (voicing<.3f && non_st < .05f && pow_ener < 1.5f*noise_level) || (voicing<.4f && non_st < .05f && pow_ener < 1.2f*noise_level) || (voicing<0 && non_st < .05f))
if ((voicing < 0.3f && non_st < 0.2f  && pow_ener < 1.2f * noise_level) || (voicing < 0.3f && non_st < 0.05f && pow_ener < 1.5f * noise_level) || (voicing < 0.4f && non_st < 0.05f && pow_ener < 1.2f * noise_level) || (voicing < 0    && non_st < 0.05f))
  public float analysis(final float[] sig,                        final int len,                        final int pitch,                        final float pitch_coef)  {    int i;    float ener=0, ener1=0, ener2=0;    float qual=7;    int va;    float log_energy;    float non_st=0;    float voicing;    float pow_ener;    for (i=0; i<len>>1; i++)      ener1 += sig[i]*sig[i];    for (i=len>>1; i<len; i++)      ener2 += sig[i]*sig[i];    ener=ener1+ener2;    log_energy = (float) Math.log(ener+MIN_ENERGY);    for (i=0; i<VBR_MEMORY_SIZE; i++)      non_st += (log_energy-last_log_energy[i])*(log_energy-last_log_energy[i]);    non_st = non_st/(30*VBR_MEMORY_SIZE);    if (non_st>1)      non_st=1;    voicing = 3*(pitch_coef-.4f)*Math.abs(pitch_coef-.4f);    average_energy = (1-energy_alpha)*average_energy + energy_alpha*ener;    noise_level=noise_accum/noise_accum_count;    pow_ener = (float) Math.pow(ener,NOISE_POW);    if (noise_accum_count<.06f && ener>MIN_ENERGY)      noise_accum = .05f*pow_ener;    if ((voicing<.3f && non_st < .2f && pow_ener < 1.2f*noise_level)       || (voicing<.3f && non_st < .05f && pow_ener < 1.5f*noise_level)       || (voicing<.4f && non_st < .05f && pow_ener < 1.2f*noise_level)       || (voicing<0 && non_st < .05f))    {      float tmp;      va = 0;      consec_noise++;      if (pow_ener > 3*noise_level)        tmp = 3*noise_level;      else         tmp = pow_ener;      if (consec_noise>=4) {         noise_accum = .95f*noise_accum + .05f*tmp;         noise_accum_count = .95f*noise_accum_count + .05f;      }    } else {      va = 1;      consec_noise=0;    }    if (pow_ener < noise_level && ener>MIN_ENERGY) {      noise_accum = .95f*noise_accum + .05f*pow_ener;      noise_accum_count = .95f*noise_accum_count + .05f;    }    /* Checking for very low absolute energy */    if (ener < 30000)    {      qual -= .7f;      if (ener < 10000)        qual-=.7f;      if (ener < 3000)        qual-=.7f;    } else {      float short_diff, long_diff;      short_diff = (float) Math.log((ener+1)/(1+last_energy));      long_diff = (float) Math.log((ener+1)/(1+average_energy));      /*fprintf (stderr, "%f %f\n", short_diff, long_diff);*/      if (long_diff<-5)        long_diff=-5;      if (long_diff>2)        long_diff=2;      if (long_diff>0)        qual += .6f*long_diff;      if (long_diff<0)        qual += .5f*long_diff;      if (short_diff>0)      {        if (short_diff>5)          short_diff=5;        qual += .5f*short_diff;      }      /* Checking for energy increases */      if (ener2 > 1.6f*ener1)         qual += .5f;    }    last_energy = ener;    soft_pitch = .6f*soft_pitch + .4f*pitch_coef;    qual += 2.2f*((pitch_coef-.4) + (soft_pitch-.4));    if (qual < last_quality)      qual = .5f*qual + .5f*last_quality;    if (qual<4)      qual=4;    if (qual>10)      qual=10;       /*    if (consec_noise>=2)       qual-=1.3f;    if (consec_noise>=5)      qual-=1.3f;    if (consec_noise>=12)       qual-=1.3f;    */    if (consec_noise>=3)      qual=4;    if (consec_noise != 0)      qual -= (float)(1.0 * (Math.log(3.0 + consec_noise)-Math.log(3)));    if (qual<0)      qual=0;       if (ener<60000)    {      if (consec_noise>2)        qual-=(float)(0.5*(Math.log(3.0 + consec_noise)-Math.log(3)));      if (ener<10000&&consec_noise>2)        qual-=(float)(0.5*(Math.log(3.0 + consec_noise)-Math.log(3)));      if (qual<0)        qual=0;      qual += (float)(.3*Math.log(ener/60000.0));    }    if (qual<-1)      qual=-1;    last_pitch_coef = pitch_coef;    last_quality = qual;    for (i=VBR_MEMORY_SIZE-1; i>0; i--)      last_log_energy[i] = last_log_energy[i-1];    last_log_energy[0] = log_energy;    return qual;  }