亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bch_decoder.c

?? 鎂光的ECC編碼方案和解碼方案
?? C
?? 第 1 頁 / 共 2 頁
字號:
					fprintf(stdout,"  0x%x", elp[u][i]);
				fprintf(stdout,"\n");
				fprintf(stdout,"     deg(elp) = %2d --> elp(%2d):", L[u+2], u+2);
				for (i=0; i<=L[u+2]; i++)
					fprintf(stdout,"  0x%x", elp[u+2][i]);
				fprintf(stdout,"\n");
				fprintf(stdout,"     u_L[%2d] = %2d\n", u, u_L[u]);
				fprintf(stdout,"     u_L[%2d] = %2d\n", u+2, u_L[u+2]);
			}

		} while ((u < (ttx2-1)) && (L[u + 2] <= tt)); 
		if (Verbose) fprintf(stdout,"\n");
		u=u+2;
		L[ttx2-1] = L[u];
		
		if (L[ttx2-1] > tt) 
			decode_flag = 0;
		else {
			// Chien's search to find roots of the error location polynomial
			// Ref: L&C pp.216, Fig.6.1
			if (Verbose) fprintf(stdout,"Chien Search:  L[%d]=%d=%x\n", ttx2-1,L[ttx2-1],L[ttx2-1]);
			if (Verbose) fprintf(stdout,"Sigma(x) = \n");

			if (Verbose) 
				for (i = 0; i <= L[u]; i++) 
					if (elp[u][i] != 0)
						fprintf(stdout,"    %4d (%4d)\n", elp[u][i], index_of[elp[u][i]]);
					else
						fprintf(stdout,"     0\n");

			for (i = 1; i <= L[ttx2-1]; i++) {
				reg[i] = index_of[elp[u][i]];
				if (Verbose) fprintf(stdout,"  reg[%d]=%d=%x\n", i,reg[i],reg[i]);
			}
			count = 0 ;
			// Begin chien search 
			for (i = 1; i <= nn; i++) {
			 	elp_sum = 1 ;
				for (j = 1; j <= L[ttx2-1]; j++) 
					if (reg[j] != -1) {
					 	reg[j] = (reg[j] + j) % nn ;
						elp_sum ^= alpha_to[reg[j]] ;
					}

				// store root and error location number indices
				if (!elp_sum) {
					location[count] = nn - i ;
					if (Verbose) fprintf(stdout,"count: %d location: %d L[ttx2-1] %d\n",
							count,location[count],L[ttx2-1]);
					count++ ;
				}
			}
			
			// Number of roots = degree of elp hence <= tt errors
			if (count == L[ttx2-1]) {   
				decode_flag = 1 ;
				// Correct errors by flipping the error bit
				for (i = 0; i < L[ttx2-1]; i++) 
				 	recd[location[i]] ^= 1 ;	
			}
			// Number of roots != degree of ELP => >tt errors and cannot solve
			else 
				decode_flag = 0 ;
		}
	}
}

int main(int argc,  char** argv)
{	int i, j ;
	int Help ;
	int Input_kk, Output_Syndrome ;			// Input & Output switch
	int in_count, in_v, in_codeword;		// Input statistics
	int decode_success, decode_fail;		// Decoding statistics
	int code_success[kk_max], code_fail[kk_max];	// Decoded and failed words
	int codeword[kk_max], recd_data[kk_max], recd_parity[kk_max] ;
	char in_char;
	
	fprintf(stderr, "# Binary BCH decoder.  Use -h for details.\n\n");
	
	Verbose = 0;
	Input_kk = 0;
	Help = 0;
	mm = df_m;
	tt = df_t;
	Parallel = df_p;
	decode_success = 0; 
	decode_fail = 0;
	for (i=1; i < argc;i++) {
		if (argv[i][0] == '-') {
			switch (argv[i][1]) {
				case 'm': mm = atoi(argv[++i]);
					break;
				case 't': tt = atoi(argv[++i]);
					break;
				case 'p': Parallel = atoi(argv[++i]);
					break;
				case 'k': kk_shorten = atoi(argv[++i]);
					Input_kk = 1;
					if (kk_shorten % 4 != 0) {
						fprintf(stderr, "### k must divide 4.\n\n");
						Help = 1;
					}
					break;
				case 's': Output_Syndrome = 1;
					break;
				case 'v': Verbose = 1;
					break;
				default: Help = 1;
			}
		}
		else 
			Help = 1;
	}
	
	if (Help == 1) {
		fprintf(stdout,"# Usage %s:  BCH decoder\n",argv[0]);
		fprintf(stdout,"    -h:  This help message\n");
		fprintf(stdout,"    -m <field>:  Galois field, GF, for code.  Code length is 2^<field>-1.\n");
		fprintf(stdout,"         The default value is %d for a code length %d.  If the parameter is\n", df_m, (int)pow(2,df_m) - 1);
		fprintf(stdout,"         set to 0, the program will estimate the value based upon the values\n");
		fprintf(stdout,"         chosen for k and t.\n");
		fprintf(stdout,"    -t <correct>:  Correction power of the code.  Default = %d\n", df_t);
		fprintf(stdout,"    -k <data bits>:  Number of data bits to be encoded. Must divide 4.\n");
		fprintf(stdout,"         The default value is the maximum supported by the code which\n");
		fprintf(stdout,"         depends upon the field (-m) and the correction (-t) chosen.\n");
		fprintf(stdout,"    -p <parallel>:  Parallelism in decoder.  Does not effect results but\n");
		fprintf(stdout,"         does change the algorithm used to generate them.  Default = %d\n", df_p);
		fprintf(stdout,"    -s   Syndrome output after the decoded data.  Default disabled. \n");
		fprintf(stdout,"    -v   Verbose mode.  Output detailed information, such as encoded codeword,\n");
		fprintf(stdout,"         received codeword and decoded codeword.  Default disabled. \n");
		fprintf(stdout,"    <stdin>:  character string to decode in hex format.  All other \n");
		fprintf(stdout,"          characters are ignored.  Comments are enclosed in brackets:  { }.\n");
		fprintf(stdout,"          The hex values are converted to binary and taken <data bits> \n");
		fprintf(stdout,"          at a time.\n");
		fprintf(stdout,"    <stdout>:  resulting decoded character string in hex format.\n");
		fprintf(stdout,"    <stderr>:  information about the decode process as well as error messages.\n");
	}
	else {
		nn = (int)pow(2, mm) - 1;
		nn_shorten = nn;
		
		// generate the Galois Field GF(2**mm)
		generate_gf() ;
		
		// Compute the generator polynomial and lookahead matrix for BCH code
		gen_poly() ;
		
		// Check if code is shortened
		if (Input_kk == 1)
			nn_shorten = kk_shorten + rr ;
		else {
			kk_shorten = nn_shorten - rr ;
			// Make the shortened length divide 4
			kk_shorten = kk_shorten - kk_shorten % 4 ;
			nn_shorten = kk_shorten + rr ;
		}
		ttx2 = 2 * tt ;
		
		fprintf(stdout, "{# (m = %d, n = %d, k = %d, t = %d) Binary BCH code.}\n\n", mm, nn_shorten, kk_shorten, tt) ;
		
		// Set input data.	
		in_count = 0;
		in_codeword = 0;
		in_char = getchar();
		while (in_char != EOF) {
			if (in_char=='{') {
				while ((in_char != EOF) && ((char)in_char != '}'))
					in_char = getchar();
			}
			in_v = hextoint(in_char);		
			if (in_v != -1) {
				for (i = 3; i >= 0; i--) {
					if ((int)pow(2,i) & in_v)
						codeword[in_count] = 1 ;
					else
						codeword[in_count] = 0 ;
					in_count++;
				}
			}
			if (in_count == ceil(nn_shorten / (double)4) * 4) {
				in_codeword++ ;
				// Parity check bits
				for (j = kk_shorten; j < nn_shorten; j++)
					recd[j - kk_shorten] = codeword[j] ;
				// Data bits
				for (j = 0; j < kk_shorten; j++)
					recd[j + rr] = codeword[j] ;

				decode_bch() ;
				
				if ( decode_flag == 1 ) {
					decode_success++ ;
					code_success[decode_success] = in_codeword;
					if (count == 0) 
						fprintf(stdout, "{ Codeword %d: No errors.}\n", in_codeword) ;
					else {
						fprintf(stdout, "{ Codeword %d: %d errors found at location:", in_codeword, count) ;
						for (i = count - 1; i >= 0 ; i--)  {
							// Convert error location from systematic form to storage form 
							if (location[i] >= rr)
								location[i] = location[i] - rr;
							else
								location[i] = location[i] + kk_shorten;
							
							fprintf(stdout, " %d", location[i]) ;
						}
						fprintf(stdout, "}");

						printf("\n");
					}
				}
				else {
					decode_fail++ ;
					code_fail[decode_fail] = in_codeword;
					fprintf(stdout, "{ Codeword %d: Unable to decode!}", in_codeword) ;
					printf("\n");
				}
				// Convert decoded data into information data and parity checks
				for (i = 0; i < kk_shorten; i++)
					recd_data[i] = recd[i + rr];
				for (i = 0; i < rr; i++)
					recd_parity[i] = recd[i];
				print_hex_low(kk_shorten, recd_data, stdout);
				if (Output_Syndrome == 1) {
					fprintf(stdout, "    ");
					print_hex_low(rr, recd_parity, stdout);
					if (Verbose) fprintf(stdout,"rr: %d\n",rr);
				}
				fprintf(stdout, "\n\n");
				in_count = 0;
			}
			in_char = getchar();
		}
		
		fprintf(stdout, "{### %d codewords received.}\n", in_codeword) ;
		fprintf(stdout, "{@@@ %d codewords are decoded successfully:}\n{", decode_success) ;
		for (i = 1; i <= decode_success; i++)
			fprintf(stdout, " %d", code_success[i]);
		fprintf(stdout, " }\n");
		fprintf(stdout, "{!!! %d codewords are unable to correct:}\n{", decode_fail) ;
		for (i = 1; i <= decode_fail; i++)
			fprintf(stdout, " %d", code_fail[i]);
		fprintf(stdout, " }\n");
	}
	
	return(0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕亚洲成人| 欧美午夜精品免费| 国产一区二区三区最好精华液| 男人操女人的视频在线观看欧美| 激情综合网天天干| 9i看片成人免费高清| 欧美中文一区二区三区| 日韩精品一区二区三区中文精品| 久久久午夜精品理论片中文字幕| 亚洲精品国产视频| 久久激五月天综合精品| 欧美一区二区视频网站| 久久久久久久久蜜桃| 国产精品一级片| 日韩精品一区二区三区视频| 国产在线一区观看| 欧美精品一卡二卡| 亚洲视频免费在线| 成人黄色一级视频| 久久久91精品国产一区二区精品| 亚洲国产综合人成综合网站| 懂色av一区二区三区免费看| 精品伦理精品一区| 日本在线播放一区二区三区| 在线一区二区三区| 亚洲欧洲三级电影| 欧美一区永久视频免费观看| 国产精品1区2区3区| 一区二区三区欧美在线观看| 一道本成人在线| 国产精品伦一区| 国产盗摄一区二区三区| 精品国产免费人成电影在线观看四季| 日韩在线一二三区| 8v天堂国产在线一区二区| 亚洲国产日韩精品| 久久婷婷国产综合国色天香| 久久99九九99精品| 亚洲激情av在线| 亚洲精品一线二线三线| 在线欧美日韩精品| 丁香婷婷综合五月| 免费成人在线观看| 亚洲电影激情视频网站| 这里只有精品99re| 色一情一乱一乱一91av| 国产一区在线观看视频| 亚洲午夜免费视频| 国产精品久久久久永久免费观看 | 精品国产亚洲一区二区三区在线观看| 成人va在线观看| 精品一区二区免费| 日韩精品一卡二卡三卡四卡无卡| 国产精品九色蝌蚪自拍| 欧美成人一区二区三区在线观看| 91福利精品视频| 精品欧美久久久| 欧美午夜在线观看| 91一区在线观看| 亚洲午夜日本在线观看| 国产精品国产三级国产aⅴ无密码| 精品日韩一区二区三区免费视频| 欧美三级欧美一级| 麻豆精品一区二区三区| 国产女人aaa级久久久级| 99在线精品观看| 国产精品456露脸| 精久久久久久久久久久| 日产国产欧美视频一区精品 | 亚洲成av人片在线观看无码| 亚洲夂夂婷婷色拍ww47 | 国产91在线观看丝袜| 激情欧美一区二区| 美国十次了思思久久精品导航| 五月天久久比比资源色| 26uuu成人网一区二区三区| 欧美一区二区在线播放| 9191精品国产综合久久久久久| 欧美视频日韩视频| 欧美性色aⅴ视频一区日韩精品| 色先锋资源久久综合| 在线精品视频一区二区| 日本久久一区二区三区| 日本高清成人免费播放| 欧美中文字幕久久| 欧美精品国产精品| 日韩免费视频线观看| 制服.丝袜.亚洲.中文.综合| 91精品午夜视频| 精品日韩欧美一区二区| 久久青草国产手机看片福利盒子| 国产午夜精品美女毛片视频| 国产色产综合产在线视频| 中文字幕在线不卡| 亚洲黄色免费网站| 午夜av一区二区三区| 久久国产剧场电影| 国产成人精品影院| 一本大道av一区二区在线播放| 欧美性大战久久久久久久| 欧美高清激情brazzers| 久久综合网色—综合色88| 国产日产欧产精品推荐色| 亚洲免费成人av| 久久久精品黄色| 亚洲天堂福利av| 一区二区三区精品视频在线| 日韩精品电影在线| 国内精品久久久久影院一蜜桃| 成人av电影在线网| 欧美日韩一区二区欧美激情| 精品成人免费观看| 亚洲欧洲精品一区二区三区| 亚洲成人一区二区| 国产精品一区二区91| 欧美视频日韩视频| 久久精品亚洲精品国产欧美| 一区二区三区日韩精品视频| 黄一区二区三区| 欧洲精品在线观看| 中文字幕日韩精品一区| 婷婷夜色潮精品综合在线| 国产一区 二区| 91久久奴性调教| 欧美精品一区二区蜜臀亚洲| 亚洲激情在线激情| 国产一区二区三区精品欧美日韩一区二区三区 | 午夜国产不卡在线观看视频| 国产一区二区电影| 欧美日韩国产综合一区二区三区| 一本到高清视频免费精品| 日韩美女一区二区三区四区| 一区二区三区精品视频在线| 国产乱码一区二区三区| 欧美理论在线播放| 亚洲欧洲三级电影| 国产一区二区中文字幕| 欧美日韩一卡二卡| 国产精品亲子乱子伦xxxx裸| 免费高清视频精品| 在线观看日产精品| 中文字幕精品三区| 亚洲视频资源在线| 国产精品亚洲综合一区在线观看| 欧美日本在线观看| 亚洲欧美二区三区| 成人一区二区三区视频在线观看| 成人h动漫精品一区二区| 91精品久久久久久久99蜜桃| 亚洲私人黄色宅男| 成人综合在线视频| 欧美本精品男人aⅴ天堂| 午夜在线成人av| 色综合色狠狠天天综合色| 国产目拍亚洲精品99久久精品| 水蜜桃久久夜色精品一区的特点 | 一本色道亚洲精品aⅴ| 日本一区二区三区四区| 国产美女久久久久| 精品欧美一区二区三区精品久久| 日韩影院在线观看| 在线电影院国产精品| 樱花草国产18久久久久| 91美女视频网站| 麻豆久久久久久| 日韩亚洲欧美在线观看| 久久这里都是精品| 精品一区二区日韩| 久久久久国产免费免费 | 日本免费在线视频不卡一不卡二| 欧美天堂亚洲电影院在线播放| 亚洲激情六月丁香| 欧美在线免费播放| 香蕉成人啪国产精品视频综合网 | 一区二区在线免费| 欧洲精品在线观看| 视频一区欧美精品| 日韩久久久精品| 国产成人综合视频| 亚洲欧洲在线观看av| 色悠悠久久综合| 婷婷成人综合网| 日韩欧美123| 国产精品亚洲人在线观看| 国产欧美日韩另类一区| 不卡在线观看av| 一级精品视频在线观看宜春院 | 国内外精品视频| 国产视频在线观看一区二区三区| 成人综合在线观看| 一区二区成人在线| 欧美绝品在线观看成人午夜影视| 青青草成人在线观看| 国产欧美一区二区在线| aa级大片欧美| 丝袜美腿成人在线| 国产亚洲婷婷免费| 色婷婷精品久久二区二区蜜臀av| 亚洲成av人**亚洲成av**| 久久久蜜桃精品|