public final void unquant(float[] exc, int es, int nsf, Bits bits)
  {
    int i,j;

    /* Decode codewords and gains */
    for (i=0; i<nb_subvect; i++) {
      if (have_sign!=0)
        signs[i] = bits.unpack(1);
      else
        signs[i] = 0;
      ind[i] = bits.unpack(shape_bits);
    }

    /* Compute decoded excitation */
    for (i=0; i<nb_subvect; i++) {
      float s=1.0f;
      if (signs[i]!=0)
        s=-1.0f;
      for (j=0; j<subvect_size; j++){
        exc[es+subvect_size*i+j]+=s*0.03125f*(float)shape_cb[ind[i]*subvect_size+j]; 
      }
    }
  }