ГОСТ Р 54712―2011
71
gain_0 = 10 * lg (1/(1– sqr(ct1c)));
gain_1 = 10 * lg (1/(1– sqr(ct2c)));
gain_2 = 10 * lg (1/(1– sqr(ct1ls)));
gain_3 = 10 * lg (1/(1– sqr(ct2rs)));
temp = sqr(sc) – 2*(coef_x0*ct1c*st1*sc) – 2*(coef_x1*ct2c*st2*sc)+
+ 2*(coef_x0*coef_x1*ct1t2*st1*st2) + sqr(coef_x0*st1)+
+ sqr(coef_x1*st2);
gain_01 = 10 * lg (sqr(sc) / temp);
/* вычисление информации о выборе предсказателя/
maxgain = 0;
maxmode = 0;
if (gain_0 – SI_COEF/numsb > maxgain) {
maxgain = gain_0 – SI_COEF/numsb;
maxmode = 1;
}
if (gain_1 – SI_COEF/numsb > maxgain) {
maxgain = gain_1 – SI_COEF/numsb;
maxmode = 2;
}
if (gain_01 – 2*SI_COEF/numsb > maxgain) {
maxgain = gain_01 – 2*SI_COEF/numsb;
maxmode = 3;
}
switch (maxmode){
case 0 :
temp_pred_gain[0] = 0;
predsi[0] = ’0’;
predsi[1] = ’0’;
break;
case 1 :
temp_pred_gain[0] = gain_0;
predsi[0] = ’1’;
predsi[1] = ’0’;
pred_coef[sbgr][0] = coef_0;
break;
case 2 :
temp_pred_gain[0] = gain_1;
predsi[0] = ’0’;
predsi[1] = ’1’;
pred_coef[sbgr][1] = coef_1;
break;
case 3 :
temp_pred_gain[0] = gain_01;
predsi[0] = ’1’;
predsi[1] = ’1’;
pred_coef[sbgr][0] = coef_x0;
pred_coef[sbgr][1] = coef_x1;
break;
}
if (gain_2 > SI_COEF/numsb){
temp_pred_gain[1] = gain_2;
predsi[2] = ’1’;
pred_coef[sbgr][2] = coef_2;
}
else{
temp_pred_gain[1] = 0;
predsi[2] = ’0’;
}
if (gain_3 > SI_COEF/numsb){
temp_pred_gain[2] = gain_3;
predsi[3] = ’1’;