⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 turbo_arq.cpp

📁 该程序是用C语言编写的
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//Turbo encoder
void decoding()
{
	int i,j,k,iter,ss;
	int cc1[20],cc2[20],cc3[20],cc4[20],cc5[20],cc6[20];
	float ld[20][500],lh1[50][500],sign1[50][500],sign2[20][500];
	float gamma1[2500][50],gamma2[2500][50],gammae1[2500][50],gammae2[2500][50];
    float dgamma1[2500][50],dgamma2[2500][50],dgammae1[2500][50],dgammae2[2500][50];
	float aldev[5000],daldev[5000],ipunc3[2000];

//Trellis state
//uk=0
	for(ss=1;ss<9;ss++)
		cc1[ss]=-1;
    for(ss=1;ss<3;ss++)
		cc2[ss]=-1;
    for(ss=3;ss<7;ss++)
		cc2[ss]=1;
    for(ss=7;ss<9;ss++)
		cc2[ss]=-1;
    for(ss=1;ss<5;ss++)
		cc3[ss]=-1;
    for(ss=5;ss<9;ss++)
		cc3[ss]=1;

//uk=1

    for(ss=1;ss<9;ss++)
		cc4[ss]=1;
    for(ss=1;ss<3;ss++)
		cc5[ss]=1;
    for(ss=7;ss<9;ss++)
		cc5[ss]=1;
    for(ss=3;ss<7;ss++)
		cc5[ss]=-1;
    for(ss=1;ss<5;ss++)
		cc6[ss]=1;
    for(ss=5;ss<9;ss++)
		cc6[ss]=-1;
	iter=1;

//first extrinsic values must be set to zero in intial
	for(i=1;i<m+1;i++)
		pred[1][i]=0;
	while(iter<9)
	{
//first MAP decoder
		for(pun=0;pun<m;pun+=mm)
		{
			//uk=0
			for(i=1;i<m+1;i++);
			{
			
				Lre2[i+pun]=pred[iter][i+pun];  //extrinsic values from the second decoder

			
			for(ss=0;ss<9;ss++)
			{
				gamma1[i+pun][ss]=exp(0.5*(Lre2[i+pun]*cc1[ss]+dpunc1[i+pun]*cc1[ss]
					+dpunc2[i+pun]*cc2[ss]+dpunc3[i+pun]*cc3[ss]));
				gammae1[i+pun][ss]=exp(0.5*(dpunc2[i+pun]*cc2[ss]+dpunc3[i+pun]*cc3[ss]));

			}
		}
//uk=1
		for(i=1;i<m+1;i++)
		{
			for(ss=0;ss<9;ss++)
			{
				gamma2[i+pun][ss]=exp(0.5*(Lre2[i+pun]*cc4[ss]+dpunc1[i+pun]*cc4[ss]
					+dpunc2[i+pun]*cc5[ss]+dpunc3[i+pun]*cc6[ss]));
				gammae2[i+pun][ss]=exp(0.5*(dpunc2[i+pun]*cc5[ss]+dpunc3[i+pun]*cc6[ss]));
			}
		}
//Forward condition probability alpha
		alpha[0+pun][1]=1;
		for(ss=2;ss<9;ss++)
			alpha[0+pun][ss]=0;
		for(i=1;i<m+1;i++)
		{
			aldev[i+pun]=(alpha[i-1+pun][1]*(gamma1[i+pun][1]+gamma2[i+pun][1])
				+alpha[i-1+pun][2]*(gamma1[i+pun][2]+gamma2[i+pun][2])
				+alpha[i-1+pun][3]*(gamma1[i+pun][3]+gamma2[i+pun][3])
				+alpha[i-1+pun][4]*(gamma1[i+pun][4]+gamma2[i+pun][4])
				+alpha[i-1+pun][5]*(gamma1[i+pun][5]+gamma2[i+pun][5])
				+alpha[i-1+pun][6]*(gamma1[i+pun][6]+gamma2[i+pun][6])
				+alpha[i-1+pun][7]*(gamma1[i+pun][7]+gamma2[i+pun][7])
				+alpha[i-1+pun][8]*(gamma1[i+pun][8]+gamma2[i+pun][8]));
			alpha[i+pun][1]=(alpha[i-1+pun][1]*gamma1[i+pun][1]+alpha[i-1+pun][2]*gamma2[i+pun][2])/aldev[i+pun];
            alpha[i+pun][2]=(alpha[i-1+pun][4]*gamma1[i+pun][4]+alpha[i-1+pun][3]*gamma2[i+pun][3])/aldev[i+pun];
			alpha[i+pun][3]=(alpha[i-1+pun][5]*gamma1[i+pun][5]+alpha[i-1+pun][6]*gamma2[i+pun][6])/aldev[i+pun];
			alpha[i+pun][4]=(alpha[i-1+pun][8]*gamma1[i+pun][8]+alpha[i-1+pun][7]*gamma2[i+pun][7])/aldev[i+pun];
			alpha[i+pun][5]=(alpha[i-1+pun][2]*gamma1[i+pun][2]+alpha[i-1+pun][1]*gamma2[i+pun][1])/aldev[i+pun];
			alpha[i+pun][6]=(alpha[i-1+pun][3]*gamma1[i+pun][3]+alpha[i-1+pun][4]*gamma2[i+pun][4])/aldev[i+pun];
			alpha[i+pun][7]=(alpha[i-1+pun][6]*gamma1[i+pun][6]+alpha[i-1+pun][5]*gamma2[i+pun][5])/aldev[i+pun];
			alpha[i+pun][8]=(alpha[i-1+pun][7]*gamma1[i+pun][7]+alpha[i-1+pun][8]*gamma2[i+pun][8])/aldev[i+pun];

		}
//backward condition probability beta
		for(ss=1;ss<9;ss++)
			beta[mm+pun][ss]=0.125;
		for(i=mm-1;i>0;i--)
		{
			beta[i+pun][1]=(beta[i+1+pun][1]*gamma1[i+1+pun][1]+beta[i+1+pun][5]*gamma2[i+1+pun][1])/aldev[i+1+pun];
			beta[i+pun][2]=(beta[i+1+pun][5]*gamma1[i+1+pun][2]+beta[i+1+pun][1]*gamma2[i+1+pun][2])/aldev[i+1+pun];
			beta[i+pun][3]=(beta[i+1+pun][6]*gamma1[i+1+pun][3]+beta[i+1+pun][2]*gamma2[i+1+pun][3])/aldev[i+1+pun];
			beta[i+pun][4]=(beta[i+1+pun][2]*gamma1[i+1+pun][4]+beta[i+1+pun][6]*gamma2[i+1+pun][4])/aldev[i+1+pun];
			beta[i+pun][5]=(beta[i+1+pun][3]*gamma1[i+1+pun][5]+beta[i+1+pun][7]*gamma2[i+1+pun][5])/aldev[i+1+pun];
			beta[i+pun][6]=(beta[i+1+pun][7]*gamma1[i+1+pun][6]+beta[i+1+pun][3]*gamma2[i+1+pun][6])/aldev[i+1+pun];
			beta[i+pun][7]=(beta[i+1+pun][8]*gamma1[i+1+pun][7]+beta[i+1+pun][4]*gamma2[i+1+pun][7])/aldev[i+1+pun];
            beta[i+pun][8]=(beta[i+1+pun][4]*gamma1[i+1+pun][8]+beta[i+1+pun][8]*gamma2[i+1+pun][8])/aldev[i+1+pun];
		}
//the log a posteriori operations
//uk=0
		for(i=1;i<mm+1;i++)
		{
			sigma1[i+pun][1]=alpha[i-1+pun][1]*gammae1[i+pun][1]*beta[i+pun][1];
			sigma1[i+pun][2]=alpha[i-1+pun][4]*gammae1[i+pun][4]*beta[i+pun][2];
			sigma1[i+pun][3]=alpha[i-1+pun][5]*gammae1[i+pun][5]*beta[i+pun][3];
			sigma1[i+pun][4]=alpha[i-1+pun][8]*gammae1[i+pun][8]*beta[i+pun][4];
			sigma1[i+pun][5]=alpha[i-1+pun][2]*gammae1[i+pun][2]*beta[i+pun][5];
			sigma1[i+pun][6]=alpha[i-1+pun][3]*gammae1[i+pun][3]*beta[i+pun][6];
			sigma1[i+pun][7]=alpha[i-1+pun][6]*gammae1[i+pun][6]*beta[i+pun][7];
			sigma1[i+pun][8]=alpha[i-1+pun][7]*gammae1[i+pun][7]*beta[i+pun][8];
		}
//uk=1
		for(i=1;i<mm+1;i++)
		{
			sigma2[i+pun][1]=alpha[i-1+pun][2]*gammae2[i+pun][2]*beta[i+pun][1];
			sigma2[i+pun][2]=alpha[i-1+pun][3]*gammae2[i+pun][3]*beta[i+pun][2];
			sigma2[i+pun][3]=alpha[i-1+pun][6]*gammae2[i+pun][6]*beta[i+pun][3];
			sigma2[i+pun][4]=alpha[i-1+pun][7]*gammae2[i+pun][7]*beta[i+pun][4];
			sigma2[i+pun][5]=alpha[i-1+pun][1]*gammae2[i+pun][1]*beta[i+pun][5];
			sigma2[i+pun][6]=alpha[i-1+pun][4]*gammae2[i+pun][4]*beta[i+pun][6];
			sigma2[i+pun][7]=alpha[i-1+pun][5]*gammae2[i+pun][5]*beta[i+pun][7];
			sigma2[i+pun][8]=alpha[i-1+pun][8]*gammae2[i+pun][8]*beta[i+pun][8];
		}
//extrinsic value by the log a posteriori probability ratio
		for(i=1;i<mm+1;i++)
		{
			Lre1[i+pun]=log(sigma2[i+pun][1]+sigma2[i+pun][2]+sigma2[i+pun][3]+
				sigma2[i+pun][4]+sigma2[i+pun][5]+sigma2[i+pun][6]+
				sigma2[i+pun][7]+sigma2[i+pun][8])-log(sigma1[i+pun][1]+sigma1[i+pun][2]+
				sigma1[i+pun][3]+sigma1[i+pun][4]+sigma1[i+pun][5]+sigma1[i+pun][6]+
				sigma1[i+pun][7]+sigma1[i+pun][8]);
		}
	}
//interleaving (dounc1,Lre12)
    sranint();
	for(i=1;i<m+1;i++)
	{
		indat[i-1]=dpunc1[i];
		slre[i-1]=Lre1[i];
	}
	for(i=0;i<m;i++)
	{
		sintv[i]=indat[index[i]];
		smlre[i]=slre[index[i]];
	}
	for(i=0;i<m;i++)
	{
		intv1[i+1]=sintv[i];    //information bits interleaved
		Lre12[i+1]=smlre[i];   //extrinsic values interleaved
	}

//second MAP decoder
	for(pun=0;pun<m;pun+=mm)
	{
		//transition probability gamma when uk=0
		for(i=1;i<mm+1;i++)
		{
			for(ss=1;ss<9;ss++)
			{
				dgamma1[i+pun][ss]=exp(0.5*(Lre12[i+pun]*cc1[ss]+intv1[i+pun]*cc1[ss]+dpunc4[i+pun]*cc2[ss]
					+dpunc5[i+pun]*cc3[ss]));
				dgammae1[i+pun][ss]=exp(0.5*(dpunc4[i+pun]*cc2[ss]+dpunc5[i+pun]*cc3[ss]));
			}
		}
	    //transition probalitity gamma when uk=1
        for(i=1;i<mm+1;i++)
		{
			for(ss=1;ss<9;ss++)
			{
				dgamma2[i+pun][ss]=exp(0.5*(Lre12[i+pun]*cc4[ss]+intv1[i+pun]*cc4[ss]+dpunc4[i+pun]*cc5[ss]
					+dpunc5[i+pun]*cc6[ss]));
				dgammae2[i+pun][ss]=exp(0.5*(dpunc4[i+pun]*cc5[ss]+dpunc5[i+pun]*cc6[ss]));
			}
		}


//forward conditional probability alpha
		dalpha[0+pun][1]=1;
		for(ss=2;ss<9;ss++)
			dalpha[0+pun][ss]=0;
		for(i=1;i<mm+1;i++)
		{
			daldev[i+pun]=(dalpha[i-1+pun][1]*(dgamma1[i+pun][1]+dgamma2[i+pun][1])
				+dalpha[i-1+pun][2]*(dgamma1[i+pun][2]+dgamma2[i+pun][2])
				+dalpha[i-1+pun][3]*(dgamma1[i+pun][3]+dgamma2[i+pun][3])
				+dalpha[i-1+pun][4]*(dgamma1[i+pun][4]+dgamma2[i+pun][4])
				+dalpha[i-1+pun][5]*(dgamma1[i+pun][5]+dgamma2[i+pun][5])
				+dalpha[i-1+pun][6]*(dgamma1[i+pun][6]+dgamma2[i+pun][6])
				+dalpha[i-1+pun][7]*(dgamma1[i+pun][7]+dgamma2[i+pun][7])
				+dalpha[i-1+pun][8]*(dgamma1[i+pun][8]+dgamma2[i+pun][8]));


			dalpha[i+pun][1]=(dalpha[i-1+pun][1]*dgamma1[i+pun][1]
				+dalpha[i-1+pun][2]*dgamma2[i+pun][2])/daldev[i+pun];

            dalpha[i+pun][2]=(dalpha[i-1+pun][4]*dgamma1[i+pun][4]
				+dalpha[i-1+pun][3]*dgamma2[i+pun][3])/daldev[i+pun];

			dalpha[i+pun][3]=(dalpha[i-1+pun][5]*dgamma1[i+pun][5]
				+dalpha[i-1+pun][6]*dgamma2[i+pun][6])/daldev[i+pun];

			dalpha[i+pun][4]=(dalpha[i-1+pun][8]*dgamma1[i+pun][8]
				+dalpha[i-1+pun][7]*dgamma2[i+pun][7])/daldev[i+pun];

			dalpha[i+pun][5]=(dalpha[i-1+pun][2]*dgamma1[i+pun][2]
				+dalpha[i-1+pun][1]*dgamma2[i+pun][1])/daldev[i+pun];

			dalpha[i+pun][6]=(dalpha[i-1+pun][3]*dgamma1[i+pun][3]
				+dalpha[i-1+pun][4]*dgamma2[i+pun][4])/daldev[i+pun];

			dalpha[i+pun][7]=(dalpha[i-1+pun][6]*dgamma1[i+pun][6]
				+dalpha[i-1+pun][5]*dgamma2[i+pun][5])/daldev[i+pun];

			dalpha[i+pun][8]=(dalpha[i-1+pun][7]*dgamma1[i+pun][7]
				+dalpha[i-1+pun][8]*dgamma2[i+pun][8])/daldev[i+pun];
		}

//backward conditional probability beta
		for(ss=1;ss<9;ss++)
			dbeta[mm+pun][ss]=0.125;
		for(i=mm-1;i>0;i--)
		{
			dbeta[i+pun][1]=(dbeta[i+1+pun][1]*dgamma1[i+1+pun][1]
				+dbeta[i+1+pun][5]*dgamma2[i+1+pun][1])/daldev[i+1+pun];

			dbeta[i+pun][2]=(dbeta[i+1+pun][5]*dgamma1[i+1+pun][2]
				+dbeta[i+1+pun][1]*dgamma2[i+1+pun][2])/daldev[i+1+pun];

			dbeta[i+pun][3]=(dbeta[i+1+pun][6]*dgamma1[i+1+pun][3]
				+dbeta[i+1+pun][2]*dgamma2[i+1+pun][3])/daldev[i+1+pun];

			dbeta[i+pun][4]=(dbeta[i+1+pun][2]*dgamma1[i+1+pun][4]
				+dbeta[i+1+pun][6]*dgamma2[i+1+pun][4])/daldev[i+1+pun];

			dbeta[i+pun][5]=(dbeta[i+1+pun][3]*dgamma1[i+1+pun][5]
				+dbeta[i+1+pun][7]*dgamma2[i+1+pun][5])/daldev[i+1+pun];

			dbeta[i+pun][6]=(dbeta[i+1+pun][7]*dgamma1[i+1+pun][6]
				+dbeta[i+1+pun][3]*dgamma2[i+1+pun][6])/daldev[i+1+pun];

			dbeta[i+pun][7]=(dbeta[i+1+pun][8]*dgamma1[i+1+pun][7]
				+dbeta[i+1+pun][4]*dgamma2[i+1+pun][7])/daldev[i+1+pun];

			dbeta[i+pun][8]=(dbeta[i+1+pun][4]*dgamma1[i+1+pun][8]
				+dbeta[i+1+pun][8]*dgamma2[i+1+pun][8])/daldev[i+1+pun];
		}

//log a posteriori operation
//uk=0
		for(i=1;i<mm+1;i++)
		{
			dsigma1[i+pun][1]=dalpha[i-1+pun][1]*dgammae1[i+pun][1]*dbeta[i+pun][1];
			dsigma1[i+pun][2]=dalpha[i-1+pun][4]*dgammae1[i+pun][4]*dbeta[i+pun][2];
			dsigma1[i+pun][3]=dalpha[i-1+pun][5]*dgammae1[i+pun][5]*dbeta[i+pun][3];
			dsigma1[i+pun][4]=dalpha[i-1+pun][8]*dgammae1[i+pun][8]*dbeta[i+pun][4];
			dsigma1[i+pun][5]=dalpha[i-1+pun][2]*dgammae1[i+pun][2]*dbeta[i+pun][5];
			dsigma1[i+pun][6]=dalpha[i-1+pun][3]*dgammae1[i+pun][3]*dbeta[i+pun][6];
			dsigma1[i+pun][7]=dalpha[i-1+pun][6]*dgammae1[i+pun][6]*dbeta[i+pun][7];
			dsigma1[i+pun][8]=dalpha[i-1+pun][7]*dgammae1[i+pun][7]*dbeta[i+pun][8];
		}
//uk=1
		for(i=1;i<mm+1;i++)
		{
			dsigma2[i+pun][1]=dalpha[i-1+pun][2]*dgammae2[i+pun][2]*dbeta[i+pun][1];
			dsigma2[i+pun][2]=dalpha[i-1+pun][3]*dgammae2[i+pun][3]*dbeta[i+pun][2];
			dsigma2[i+pun][3]=dalpha[i-1+pun][6]*dgammae2[i+pun][6]*dbeta[i+pun][3];
			dsigma2[i+pun][4]=dalpha[i-1+pun][7]*dgammae2[i+pun][7]*dbeta[i+pun][4];
			dsigma2[i+pun][5]=dalpha[i-1+pun][1]*dgammae2[i+pun][1]*dbeta[i+pun][5];
			dsigma2[i+pun][6]=dalpha[i-1+pun][4]*dgammae2[i+pun][4]*dbeta[i+pun][6];
			dsigma2[i+pun][7]=dalpha[i-1+pun][5]*dgammae2[i+pun][5]*dbeta[i+pun][7];
			dsigma2[i+pun][8]=dalpha[i-1+pun][8]*dgammae2[i+pun][8]*dbeta[i+pun][8];
		}

//extrinsic values at the second decoder by the log a posteriori probability ratio

		for(i=1;i<mm+1;i++)
		{
			Lre21[i+pun]=log(dsigma2[i+pun][1]+dsigma2[i+pun][2]+dsigma2[i+pun][3]+
				dsigma2[i+pun][4]+dsigma2[i+pun][5]+dsigma2[i+pun][6]+
				dsigma2[i+pun][7]+dsigma2[i+pun][8])-log(dsigma1[i+pun][1]+
				dsigma1[i+pun][2]+dsigma1[i+pun][3]+dsigma1[i+pun][4]+dsigma1[i+pun][5]+
				dsigma1[i+pun][6]+dsigma1[i+pun][7]+dsigma1[i+pun][8]);
		}

	}


//deinterleaving
         sranint();
		 for(i=1;i<m+1;i++)
			 slre21[i-1]=Lre21[i];
		 for(i=0;i<m;i++)
			 sran[index[i]]=slre21[i];
		 for(i=0;i<m;i++)
		 {
			 Le21[i+1]=sran[i];
			 
		 }
		 iter++;   //increment the number of iteration
		 for(i=1;i<m+1;i++)
			 pred[iter][i]=Le21[i];   //introduced extrinsic values fron decoder2 to decoder1
}//end of iteration routine

//final decision
        for(i=1;i<m+1;i++)
		{
			Lre[i]=dpunc1[i]+Lre1[i]+Le21[i];
			final[i-1]=Lre[i];
		}
		for(i=0;i<m;i++)
		{
			if(final[i]>0)
				decision[i]=1;
			if(final[i]<0)
				decision[i]=0;
		}


//counting bit errors in a frame
		error1=0;
		for(i=0;i<m;i++)
		{
			if(y[i]!=decision[i])
				error1=error1+1;
			zz[j][i]=decision[i];    //data for crc decoder
		}

//check and count if a frame has error
		celer=0.0;
		if(error1!=0)
			celer=celer+1;
}



//CRC decoder and ARQ processor
void cdecode()
{
	int i,j;
	int s[17];
	for(j=si;j<w-ei;j++)//si=0,w=1,ei=0
	{
		//windows size is set to 1
		for(dc=1;dc<n+1;dc++)//n=368
		{
			//start of residue generation
			if(zz[j][0]==1)
			{
				for(i=0;i<kk;i++)  //kk=17
					s[i]=zz[j][i]^p[i];
				for(i=0;i<kk;i++)
					zz[j][i]=s[i+1];
				for(i=kk;i<m;i++)  //m=384
					zz[j][i-1]=zz[j][i];
			}
			else if(zz[j][0]==0)
			{
				for(i=0;i<kk;i++)
					zz[j][i]=zz[j][i+1];
				for(i=kk;i<m;i++)
					zz[j][i-1]=zz[j][i];
			}
		}
		//end of residue generation at decoder
	}
}

//ARQ process
void selective()
{
	int i,j;
	int bk=0;
	for(j=0;j<w;j++)//w=1
	{
		//windows size
		for(i=0;i<kk-1;i++)
		{
			if(zz[j][i]!=0)
			{
				//check if the snydrome is '0'
				done=0;   //retransmission requested if the snydrome is not '0'
				dd++;     //increment the order of a frame for parity bits
				vc=vc+1;  //count the number of frames transmitted
				if(dd==5)
					dd=1; //back to source information after the parent code rate is used
				break;
			}
			else if(zz[j][i]==0)
				bk=bk+1;  //check 16 bits in the snydrome
		}

	}
//the number of retransmission is limited to 3
	if(bk==16||vc>4)
		done=1;   //do not request retransmission if the snydrome is zero
	if(vc>4)
		vc=4;
}


//Random data generation
//generation of float random data from 0 to 1
double rnd(void)
{
	return(1.0/(RAND_MAX+1.0))*(rand()+0.5);
}

//guassian random data generatiom
double norndl(void)
{
	static int i=0;
	static int temp,u;
	if(i==0)
	{
		i++;
		temp=sqrt(-2*log(rnd()));
		u=2*PI*rnd();
		return temp*cos(u);

	}
	else
	{
		i=0;
		return temp*sin(u);
	}
}


//s-random interleaving


//double sranint(void)
void sranint(void)
{
	int i,j,k;
	ii=0;
    idex1=1;
	tt=0;

//selected interleaver parameters from n to 5
while(idex1<17)
{
	//representing 16 rows in a block size of 512 positions
	//initialize MSBs and LSBs
	for(i=1;i<5;i++)
		sy[i]=0;   //set 4 bits of MSBs to 0
	    sy[0]=1;   //add '1' to MSBs
	for(i=0;i<5;i++)
		lsb[i]=0;  //initialize LSBs
	idex=0;        //first column in a row
	while(idex<32)
	{
		//representing 32 rows in a block size of 512 positions
		count=(idex1+invalue[idex])%16;  //16 modular operation
		for(i=0;i<9;i++)
			sz[i]=0;      //initialize (n+5) bits
		k=1;
		//multiply and select nLSBs
		while(k<=count)
		{
			for(i=1;i<4;i++)
				sy[i]=0;
			sy[0]=1;
			for(j=0;j<3;j++)
			{
				if(sz[0+j]==1&&sy[0+j]==1)
					sy[1+j]=1;
			}
			for(i=0;i<4;i++)
			{
				sz[i]=sz[i]^sy[i];
			}
			k++;
		}

//bit reverse of LSBs
		for(i=0;i<5;i++)
			reverse[8-i]=lsb[i];
		for(i=0;i<4;i++)
			reverse[i]=sz[i];
		sz1[idex+tt]=0;

//transfor the value of modular 2 to decimal value
		for(i=0;i<9;i++)
		{
			sz1[idex+tt]=sz1[idex+tt]+reverse[i]*pow(2,i);
		}

//decide the output address
		if(sz1[idex+tt]<m)
		{
			index[ii]=sz1[idex+tt];
            ii++;
		}

//LSBs for the next column
		for(i=1;i<5;i++)
			syy[i]=0;
		syy[0]=1;
		for(j=0;j<4;j++)
		{
			if(lsb[0+j]==1&&syy[0+j]==1)
				syy[1+j]=1;
		}
		for(i=0;i<5;i++)
		{
			lsb[i]=lsb[i]^syy[i];
			//return lsb[i];
		}
		idex++;  //increment the order of column
		
	}   //end of a column operation with the table index

	tt=tt+32;
	idex1++;   //increment the order of row

}
//return 1;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -