Merge branch 'bugfix-243-dlsim' into feature-59-tm4
This commit is contained in:
@@ -5202,7 +5202,6 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
|
|||||||
if ((rnti==si_rnti) || (rnti==p_rnti) || (rnti==ra_rnti))
|
if ((rnti==si_rnti) || (rnti==p_rnti) || (rnti==ra_rnti))
|
||||||
{
|
{
|
||||||
pdlsch0_harq->round = 0;
|
pdlsch0_harq->round = 0;
|
||||||
pdlsch0_harq->first_tx = 1;
|
|
||||||
pdlsch0_harq->status = ACTIVE;
|
pdlsch0_harq->status = ACTIVE;
|
||||||
}
|
}
|
||||||
else //CRNTI
|
else //CRNTI
|
||||||
@@ -5214,28 +5213,37 @@ void prepare_dl_decoding_format1_1A(DCI_format_t dci_format,
|
|||||||
rnti,harq_pid,pdlsch0_harq->DCINdi);
|
rnti,harq_pid,pdlsch0_harq->DCINdi);
|
||||||
}
|
}
|
||||||
|
|
||||||
// DCI has been toggled or this is the first transmission
|
// NDI has been toggled or this is the first transmission
|
||||||
if (ndi1!=pdlsch0_harq->DCINdi)
|
if ((ndi1!=pdlsch0_harq->DCINdi) || (pdlsch0_harq->first_tx==1))
|
||||||
{
|
{
|
||||||
pdlsch0_harq->round = 0;
|
pdlsch0_harq->round = 0;
|
||||||
pdlsch0_harq->first_tx = 1;
|
|
||||||
pdlsch0_harq->status = ACTIVE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ((ndi1 == pdlsch0_harq->DCINdi) && (pdlsch0_harq->round == 0) && (pdlsch0_harq->first_tx!=1)) ||
|
|
||||||
((rv1 != 0) && (pdlsch0_harq->round == 0))
|
|
||||||
)
|
|
||||||
{
|
|
||||||
LOG_D(PHY,"skip pdsch decoding and report ack\n");
|
|
||||||
// skip pdsch decoding and report ack
|
|
||||||
pdlsch0_harq->status = SCH_IDLE;
|
|
||||||
pdlsch0->active = 0;
|
|
||||||
pdlsch0->harq_ack[subframe].ack = 1;
|
|
||||||
pdlsch0->harq_ack[subframe].harq_id = harq_pid;
|
|
||||||
pdlsch0->harq_ack[subframe].send_harq_status = 1;
|
|
||||||
|
|
||||||
pdlsch0_harq->first_tx = 0;
|
pdlsch0_harq->first_tx = 0;
|
||||||
|
pdlsch0_harq->status = ACTIVE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (rv1 != 0 )
|
||||||
|
//NDI has not been toggled but rv was increased by eNB: retransmission
|
||||||
|
{
|
||||||
|
if (pdlsch0_harq->status == SCH_IDLE)
|
||||||
|
//packet was actually decoded in previous transmission (ACK was missed by eNB)
|
||||||
|
//However, the round is not a good check as it might have been decoded in a retransmission prior to this one.
|
||||||
|
{
|
||||||
|
LOG_D(PHY,"skip pdsch decoding and report ack\n");
|
||||||
|
// skip pdsch decoding and report ack
|
||||||
|
//pdlsch0_harq->status = SCH_IDLE;
|
||||||
|
pdlsch0->active = 0;
|
||||||
|
pdlsch0->harq_ack[subframe].ack = 1;
|
||||||
|
pdlsch0->harq_ack[subframe].harq_id = harq_pid;
|
||||||
|
pdlsch0->harq_ack[subframe].send_harq_status = 1;
|
||||||
|
|
||||||
|
//pdlsch0_harq->first_tx = 0;
|
||||||
|
}
|
||||||
|
else //normal retransmission
|
||||||
|
{
|
||||||
|
// nothing special to do
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pdlsch0_harq->DCINdi = ndi1;
|
pdlsch0_harq->DCINdi = ndi1;
|
||||||
@@ -5820,17 +5828,19 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
|
|||||||
LOG_D(PHY,"Format 2 DCI First TX0: Clearing flag\n");
|
LOG_D(PHY,"Format 2 DCI First TX0: Clearing flag\n");
|
||||||
dlsch0_harq->first_tx = 0;
|
dlsch0_harq->first_tx = 0;
|
||||||
}
|
}
|
||||||
}else{
|
}
|
||||||
if(dlsch0_harq->round == 0) {
|
else if (rv1 != 0 )
|
||||||
#if 0
|
//NDI has not been toggled but rv was increased by eNB: retransmission
|
||||||
// skip pdsch decoding and report ack
|
{
|
||||||
pdlsch0->active = 0;
|
if(dlsch0_harq->status == SCH_IDLE) {
|
||||||
pdlsch0->harq_ack[subframe].ack = 1;
|
// skip pdsch decoding and report ack
|
||||||
pdlsch0->harq_ack[subframe].harq_id = harq_pid;
|
//dlsch0_harq->status = SCH_IDLE;
|
||||||
pdlsch0->harq_ack[subframe].send_harq_status = 1;
|
pdlsch0->active = 0;
|
||||||
#endif
|
pdlsch0->harq_ack[subframe].ack = 1;
|
||||||
}
|
pdlsch0->harq_ack[subframe].harq_id = harq_pid;
|
||||||
|
pdlsch0->harq_ack[subframe].send_harq_status = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
|
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
|
||||||
// PDCCH for the same trasport block using Imcs in [0 .. 28]
|
// PDCCH for the same trasport block using Imcs in [0 .. 28]
|
||||||
@@ -5852,7 +5862,6 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
|
|||||||
else if (mcs1<=31)
|
else if (mcs1<=31)
|
||||||
dlsch0_harq->Qm = (mcs1-28)<<1;
|
dlsch0_harq->Qm = (mcs1-28)<<1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// printf("[DCI UE 3]: dlsch0_harq status %d , dlsch1_harq status %d\n", dlsch0_harq->status, dlsch1_harq->status);
|
// printf("[DCI UE 3]: dlsch0_harq status %d , dlsch1_harq status %d\n", dlsch0_harq->status, dlsch1_harq->status);
|
||||||
|
|
||||||
@@ -5866,18 +5875,19 @@ void prepare_dl_decoding_format2_2A(DCI_format_t dci_format,
|
|||||||
LOG_D(PHY,"Format 2 DCI First TX1: Clearing flag\n");
|
LOG_D(PHY,"Format 2 DCI First TX1: Clearing flag\n");
|
||||||
dlsch1_harq->first_tx = 0;
|
dlsch1_harq->first_tx = 0;
|
||||||
}
|
}
|
||||||
}else{
|
|
||||||
#if 0
|
|
||||||
if(dlsch1_harq->round == 0) {
|
|
||||||
// skip pdsch decoding and report ack
|
|
||||||
// printf("Switching to IDLE\n");
|
|
||||||
pdlsch1->active = 0;
|
|
||||||
pdlsch1->harq_ack[subframe].ack = 1;
|
|
||||||
pdlsch1->harq_ack[subframe].harq_id = harq_pid;
|
|
||||||
pdlsch1->harq_ack[subframe].send_harq_status = 1;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
else if (rv1 != 0 )
|
||||||
|
//NDI has not been toggled but rv was increased by eNB: retransmission
|
||||||
|
{
|
||||||
|
if(dlsch1_harq->status == SCH_IDLE) {
|
||||||
|
// skip pdsch decoding and report ack
|
||||||
|
//dlsch1_harq->status = SCH_IDLE;
|
||||||
|
pdlsch1->active = 0;
|
||||||
|
pdlsch1->harq_ack[subframe].ack = 1;
|
||||||
|
pdlsch1->harq_ack[subframe].harq_id = harq_pid;
|
||||||
|
pdlsch1->harq_ack[subframe].send_harq_status = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
|
// if Imcs in [29..31] TBS is assumed to be as determined from DCI transported in the latest
|
||||||
// PDCCH for the same trasport block using Imcs in [0 .. 28]
|
// PDCCH for the same trasport block using Imcs in [0 .. 28]
|
||||||
@@ -6974,11 +6984,15 @@ int generate_ue_dlsch_params_from_dci(int frame,
|
|||||||
dlsch0_harq->mimo_mode = SISO;
|
dlsch0_harq->mimo_mode = SISO;
|
||||||
|
|
||||||
|
|
||||||
if (dlsch0_harq->DCINdi != ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->ndi) {
|
if ((dlsch0_harq->DCINdi != ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->ndi) ||
|
||||||
|
(dlsch0_harq->first_tx==1)) {
|
||||||
|
|
||||||
dlsch0_harq->round = 0;
|
dlsch0_harq->round = 0;
|
||||||
|
dlsch0_harq->first_tx = 0;
|
||||||
dlsch0_harq->status = ACTIVE;
|
dlsch0_harq->status = ACTIVE;
|
||||||
} else if (dlsch0_harq->status == SCH_IDLE) { // we got an Ndi = 0 for a previously decoded process,
|
}
|
||||||
|
/*
|
||||||
|
else if (dlsch0_harq->status == SCH_IDLE) { // we got same ndi for a previously decoded process,
|
||||||
// this happens if either another harq process in the same
|
// this happens if either another harq process in the same
|
||||||
// is NAK or an ACK was not received
|
// is NAK or an ACK was not received
|
||||||
|
|
||||||
@@ -6988,6 +7002,7 @@ int generate_ue_dlsch_params_from_dci(int frame,
|
|||||||
dlsch0->active = 0;
|
dlsch0->active = 0;
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
dlsch0_harq->DCINdi = ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->ndi;
|
dlsch0_harq->DCINdi = ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->ndi;
|
||||||
dlsch0_harq->mcs = ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->mcs;
|
dlsch0_harq->mcs = ((DCI1E_5MHz_2A_M10PRB_TDD_t *)dci_pdu)->mcs;
|
||||||
|
|||||||
@@ -3410,7 +3410,7 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
|
|||||||
|
|
||||||
short rb;
|
short rb;
|
||||||
unsigned char aatx,aarx,nre=12,symbol_mod;
|
unsigned char aatx,aarx,nre=12,symbol_mod;
|
||||||
__m128i *dl_ch128, avg128D, coeff128;
|
__m128i *dl_ch128, avg128D;
|
||||||
|
|
||||||
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
|
symbol_mod = (symbol>=(7-frame_parms->Ncp)) ? symbol-(7-frame_parms->Ncp) : symbol;
|
||||||
|
|
||||||
@@ -3421,11 +3421,10 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
|
|||||||
else
|
else
|
||||||
nre=12;
|
nre=12;
|
||||||
|
|
||||||
double one_over_nb_re = 0.0;
|
//nb_rb*nre = y * 2^x
|
||||||
one_over_nb_re = 1/((double)(nb_rb*nre));
|
int16_t x = factor2(nb_rb*nre);
|
||||||
int16_t one_over_nb_re_q1_15 = (int16_t)(one_over_nb_re * (double)(1<<15) );
|
int16_t y = (nb_rb*nre)/(1<<x);
|
||||||
coeff128 = _mm_set_epi16(one_over_nb_re_q1_15,one_over_nb_re_q1_15,one_over_nb_re_q1_15,one_over_nb_re_q1_15,
|
//printf("nb_rb*nre = %d = %d * 2^(%d)\n",nb_rb*nre,y,x);
|
||||||
one_over_nb_re_q1_15,one_over_nb_re_q1_15,one_over_nb_re_q1_15,one_over_nb_re_q1_15);
|
|
||||||
|
|
||||||
for (aatx=0; aatx<frame_parms->nb_antenna_ports_eNB; aatx++)
|
for (aatx=0; aatx<frame_parms->nb_antenna_ports_eNB; aatx++)
|
||||||
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
for (aarx=0; aarx<frame_parms->nb_antennas_rx; aarx++) {
|
||||||
@@ -3438,14 +3437,18 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
|
|||||||
for (rb=0;rb<nb_rb;rb++) {
|
for (rb=0;rb<nb_rb;rb++) {
|
||||||
// printf("rb %d : ",rb);
|
// printf("rb %d : ",rb);
|
||||||
// print_shorts("ch",&dl_ch128[0]);
|
// print_shorts("ch",&dl_ch128[0]);
|
||||||
avg128D = _mm_add_epi32(avg128D,_mm_madd_epi16(dl_ch128[0],_mm_srai_epi16(_mm_mulhi_epi16(dl_ch128[0], coeff128),15)));
|
avg128D = _mm_add_epi32(avg128D,_mm_srai_epi16(_mm_madd_epi16(dl_ch128[0],dl_ch128[0]),x));
|
||||||
avg128D = _mm_add_epi32(avg128D,_mm_madd_epi16(dl_ch128[1],_mm_srai_epi16(_mm_mulhi_epi16(dl_ch128[1], coeff128),15)));
|
avg128D = _mm_add_epi32(avg128D,_mm_srai_epi16(_mm_madd_epi16(dl_ch128[1],dl_ch128[1]),x));
|
||||||
|
|
||||||
|
//avg128D = _mm_add_epi32(avg128D,_mm_madd_epi16(dl_ch128[0],_mm_srai_epi16(_mm_mulhi_epi16(dl_ch128[0], coeff128),15)));
|
||||||
|
//avg128D = _mm_add_epi32(avg128D,_mm_madd_epi16(dl_ch128[1],_mm_srai_epi16(_mm_mulhi_epi16(dl_ch128[1], coeff128),15)));
|
||||||
|
|
||||||
if (((symbol_mod == 0) || (symbol_mod == (frame_parms->Ncp-1)))&&(frame_parms->mode1_flag==0)) {
|
if (((symbol_mod == 0) || (symbol_mod == (frame_parms->Ncp-1)))&&(frame_parms->mode1_flag==0)) {
|
||||||
dl_ch128+=2;
|
dl_ch128+=2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
avg128D = _mm_add_epi32(avg128D,_mm_madd_epi16(dl_ch128[2],_mm_srai_epi16(_mm_mulhi_epi16(dl_ch128[2], coeff128),15)));
|
avg128D = _mm_add_epi32(avg128D,_mm_srai_epi16(_mm_madd_epi16(dl_ch128[2],dl_ch128[2]),x));
|
||||||
|
//avg128D = _mm_add_epi32(avg128D,_mm_madd_epi16(dl_ch128[2],_mm_srai_epi16(_mm_mulhi_epi16(dl_ch128[2], coeff128),15)));
|
||||||
dl_ch128+=3;
|
dl_ch128+=3;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@@ -3457,11 +3460,11 @@ void dlsch_channel_level(int **dl_ch_estimates_ext,
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
avg[(aatx<<1)+aarx] =(((int32_t*)&avg128D)[0] +
|
avg[(aatx<<1)+aarx] = (((int32_t*)&avg128D)[0] +
|
||||||
((int32_t*)&avg128D)[1] +
|
((int32_t*)&avg128D)[1] +
|
||||||
((int32_t*)&avg128D)[2] +
|
((int32_t*)&avg128D)[2] +
|
||||||
((int32_t*)&avg128D)[3]);
|
((int32_t*)&avg128D)[3])/y;
|
||||||
// printf("Channel level : %d\n",avg[(aatx<<1)+aarx]);
|
//printf("Channel level : %d\n",avg[(aatx<<1)+aarx]);
|
||||||
}
|
}
|
||||||
|
|
||||||
_mm_empty();
|
_mm_empty();
|
||||||
|
|||||||
@@ -338,6 +338,9 @@ uint8_t log2_approx64(unsigned long long int x);
|
|||||||
int16_t invSqrt(int16_t x);
|
int16_t invSqrt(int16_t x);
|
||||||
uint32_t angle(struct complex16 perrror);
|
uint32_t angle(struct complex16 perrror);
|
||||||
|
|
||||||
|
/// computes the number of factors 2 in x
|
||||||
|
unsigned char factor2(unsigned int x);
|
||||||
|
|
||||||
/*!\fn int32_t phy_phase_compensation_top (uint32_t pilot_type, uint32_t initial_pilot,
|
/*!\fn int32_t phy_phase_compensation_top (uint32_t pilot_type, uint32_t initial_pilot,
|
||||||
uint32_t last_pilot, int32_t ignore_prefix);
|
uint32_t last_pilot, int32_t ignore_prefix);
|
||||||
Compensate the phase rotation of the RF. WARNING: This function is currently unused. It has not been tested!
|
Compensate the phase rotation of the RF. WARNING: This function is currently unused. It has not been tested!
|
||||||
|
|||||||
@@ -37,6 +37,26 @@ unsigned char log2_approx(unsigned int x)
|
|||||||
return(l2);
|
return(l2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned char factor2(unsigned int x)
|
||||||
|
{
|
||||||
|
|
||||||
|
int i;
|
||||||
|
unsigned char l2;
|
||||||
|
|
||||||
|
l2=0;
|
||||||
|
|
||||||
|
for (i=0; i<31; i++)
|
||||||
|
if ((x&(1<<i)) != 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
l2 = i;
|
||||||
|
|
||||||
|
//printf("factor2(%d) = %d\n",x,l2);
|
||||||
|
return(l2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
unsigned char log2_approx64(unsigned long long int x)
|
unsigned char log2_approx64(unsigned long long int x)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -1396,6 +1396,7 @@ int main(int argc, char **argv)
|
|||||||
int DLSCH_RB_ALLOC = 0;
|
int DLSCH_RB_ALLOC = 0;
|
||||||
|
|
||||||
int log_level = LOG_ERR;
|
int log_level = LOG_ERR;
|
||||||
|
int dci_received;
|
||||||
|
|
||||||
#if defined(__arm__)
|
#if defined(__arm__)
|
||||||
FILE *proc_fd = NULL;
|
FILE *proc_fd = NULL;
|
||||||
@@ -2330,10 +2331,10 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
//if (trials%100==0)
|
//if (trials%100==0)
|
||||||
eNB2UE[0]->first_run = 1;
|
eNB2UE[0]->first_run = 1;
|
||||||
|
UE->dlsch[subframe&0x1][eNB_id][0]->harq_ack[subframe].ack = 0;
|
||||||
|
UE->dlsch[subframe&0x1][eNB_id][1]->harq_ack[subframe].ack = 0;
|
||||||
|
|
||||||
UE->dlsch_errors[0] = 1;
|
while ((round < num_rounds) && (UE->dlsch[subframe&0x1][eNB_id][0]->harq_ack[subframe].ack == 0)) {
|
||||||
|
|
||||||
while ((round < num_rounds) && (UE->dlsch_errors[0] > 0)) {
|
|
||||||
// printf("Trial %d, round %d\n",trials,round);
|
// printf("Trial %d, round %d\n",trials,round);
|
||||||
round_trials[round]++;
|
round_trials[round]++;
|
||||||
|
|
||||||
@@ -2509,7 +2510,7 @@ int main(int argc, char **argv)
|
|||||||
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[subframe&1];
|
UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[subframe&1];
|
||||||
proc->subframe_rx = subframe;
|
proc->subframe_rx = subframe;
|
||||||
UE->UE_mode[0] = PUSCH;
|
UE->UE_mode[0] = PUSCH;
|
||||||
UE->dlsch_errors[0] = 0;
|
|
||||||
// first symbol has to be done separately in one-shot mode
|
// first symbol has to be done separately in one-shot mode
|
||||||
slot_fep(UE,
|
slot_fep(UE,
|
||||||
0,
|
0,
|
||||||
@@ -2550,12 +2551,15 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dci_received = UE->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->dci_received;
|
||||||
|
|
||||||
phy_procedures_UE_RX(UE,proc,0,0,dci_flag,normal_txrx,no_relay,NULL);
|
phy_procedures_UE_RX(UE,proc,0,0,dci_flag,normal_txrx,no_relay,NULL);
|
||||||
|
|
||||||
if (UE->dlsch[subframe&0x1][0][0]->active == 0) {
|
dci_received = dci_received - UE->pdcch_vars[proc->subframe_rx & 0x1][eNB_id]->dci_received;
|
||||||
|
|
||||||
|
if (dci_flag && (dci_received == 0)) {
|
||||||
//printf("DCI not received\n");
|
//printf("DCI not received\n");
|
||||||
dci_errors[round]++;
|
dci_errors[round]++;
|
||||||
UE->dlsch_errors[0] = 1;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
|
write_output("pdcchF0_ext.m","pdcchF_ext", UE->pdcch_vars[eNB_id]->rxdataF_ext[0],2*3*UE->frame_parms.ofdm_symbol_size,1,1);
|
||||||
@@ -2626,7 +2630,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (UE->dlsch_errors[0] == 0) {
|
if (UE->dlsch[subframe&0x1][eNB_id][0]->harq_ack[subframe].ack == 1) {
|
||||||
|
|
||||||
avg_iter += UE->dlsch[subframe&0x1][eNB_id][0]->last_iteration_cnt;
|
avg_iter += UE->dlsch[subframe&0x1][eNB_id][0]->last_iteration_cnt;
|
||||||
iter_trials++;
|
iter_trials++;
|
||||||
@@ -2906,15 +2910,15 @@ int main(int argc, char **argv)
|
|||||||
errs2[0],
|
errs2[0],
|
||||||
round_trials[0],
|
round_trials[0],
|
||||||
errs[1],
|
errs[1],
|
||||||
round_trials[0],
|
round_trials[1],
|
||||||
errs[2],
|
errs[2],
|
||||||
round_trials[0],
|
round_trials[2],
|
||||||
errs[3],
|
errs[3],
|
||||||
round_trials[0],
|
round_trials[3],
|
||||||
(double)errs[0]/(round_trials[0]),
|
(double)errs[0]/(round_trials[0]),
|
||||||
(double)errs[1]/(round_trials[0]),
|
(double)errs[1]/(round_trials[1]),
|
||||||
(double)errs[2]/(round_trials[0]),
|
(double)errs[2]/(round_trials[2]),
|
||||||
(double)errs[3]/(round_trials[0]),
|
(double)errs[3]/(round_trials[3]),
|
||||||
dci_errors[0]+dci_errors[1]+dci_errors[2]+dci_errors[3],
|
dci_errors[0]+dci_errors[1]+dci_errors[2]+dci_errors[3],
|
||||||
round_trials[0]+round_trials[1]+round_trials[2]+round_trials[3],
|
round_trials[0]+round_trials[1]+round_trials[2]+round_trials[3],
|
||||||
(double)(dci_errors[0]+dci_errors[1]+dci_errors[2]+dci_errors[3])/(round_trials[0]+round_trials[1]+round_trials[2]+round_trials[3]),
|
(double)(dci_errors[0]+dci_errors[1]+dci_errors[2]+dci_errors[3])/(round_trials[0]+round_trials[1]+round_trials[2]+round_trials[3]),
|
||||||
|
|||||||
Reference in New Issue
Block a user