/* ignore that we may take no all lines into account, max. 3 lines at the upper end of the spectrum can be missed (if lg is not a multiple of 4, happens also in SQGain()*/
#ifdef FIX_1464_SQ_GAIN_PRECISION
e_tmp=s_min(8,sub(L_norm_arr(xL_fx,lg),2));
e_xL=sub(e_xL,e_tmp);
FOR(q=0;q<lg_4;q++)
{
ener_fx=BASOP_Util_Add_Mant32Exp(21474836/*0.01 in Q15*/,0,Mpy_32_32(xL_fx[i],xL_fx[i]),e_xL*2,&e_ener);/* Q31-e_ener */
ener_fx=L_shr(21474836/* 0.01 */,shl(e_xL,1));
tmp_32=L_shl(xL_fx[i+0],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
tmp_32=L_shl(xL_fx[i+1],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
tmp_32=L_shl(xL_fx[i+2],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
tmp_32=L_shl(xL_fx[i+3],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
en_fx[q]=BASOP_Util_Log2(ener_fx);/* saves a MAC */
move32();
en_fx[q]=Mpy_32_16_1(L_add(2*e_xL*ONE_IN_Q25,en_fx[q]),9864/* log10(2) in Q15 */);// Q(25)
move32();
i=add(i,4);
}
e_tmp=s_min(8,sub(L_norm_arr(xR_fx,lg),2));
e_xR=sub(e_xR,e_tmp);
i=0;
FOR(;q<lg2_4;q++)
{
ener_fx=L_shr(21474836/* 0.01 */,shl(e_xR,1));
tmp_32=L_shl(xR_fx[i+0],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
tmp_32=L_shl(xR_fx[i+1],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
tmp_32=L_shl(xR_fx[i+2],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
tmp_32=L_shl(xR_fx[i+3],e_tmp);
ener_fx=L_add(ener_fx,Mpy_32_32(tmp_32,tmp_32));
en_fx[q]=BASOP_Util_Log2(ener_fx);/* saves a MAC */
move32();
en_fx[q]=Mpy_32_16_1(L_add(2*e_xR*ONE_IN_Q25,en_fx[q]),9864/* log10(2) in Q15 */);// Q(25)
move32();
i=add(i,4);
}
#else
FOR(q=0;q<lg_4;q++)
{
ener_fx=BASOP_Util_Add_Mant32Exp(21474836/*0.01 in Q31*/,0,Mpy_32_32(xL_fx[i],xL_fx[i]),e_xL*2,&e_ener);/* Q31-e_ener */