parity_test.c
来自「GFLIB - C Procedures for Galois Field Ar」· C语言 代码 · 共 97 行
C
97 行
/*Procedures and Programs for Galois-Field Arithmetic and Reed-Solomon Coding. Copyright (C) 2003 James S. PlankThis library is free software; you can redistribute it and/ormodify it under the terms of the GNU Lesser General PublicLicense as published by the Free Software Foundation; eitherversion 2.1 of the License, or (at your option) any later version.This library is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNULesser General Public License for more details.You should have received a copy of the GNU Lesser General PublicLicense along with this library; if not, write to the Free SoftwareFoundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA---------------------------------------------------------------------------Please see http://www.cs.utk.edu/~plank/plank/gflibfor instruction on how to use this library.Jim Plankplank@cs.utk.eduhttp://www.cs.utk.edu/~plankAssociate ProfessorDepartment of Computer ScienceUniversity of Tennessee203 Claxton Complex1122 Volunteer Blvd.Knoxville, TN 37996-3450 865-974-4397Fax: 865-974-4404$Revision: 1.2 $*/#include <stdio.h>#include "gflib.h"#include <sys/time.h>main(int argc, char **argv){ char *y; char *x; char *z; int i, size, iterations, check_end; struct timeval tv1, tv2; struct timezone tz1, tz2; if (argc != 4) { fprintf(stderr, "usage: parity_test buffer-size iterations check-at-end(Y/N)\n"); exit(1); } size = atoi(argv[1]); iterations = atoi(argv[2]); check_end = (argv[3][0] == 'Y' || argv[3][0] == 'y'); srand48(); y = (char *) malloc(size); x = (char *) malloc(size); z = (char *) malloc(size); for (i = 0; i < size; i++) { y[i] = lrand48()%256; x[i] = lrand48()%256; z[i] = y[i]; } gettimeofday(&tv1, &tz1); for (i = 0; i < iterations; i++) { gf_add_parity(x, y, size); } gettimeofday(&tv2, &tz2); tv2.tv_sec -= tv1.tv_sec; tv2.tv_usec -= tv1.tv_usec; if (tv2.tv_usec < 0) { tv2.tv_sec--; tv2.tv_usec += 1000000; } printf("%6d.%06d\n", tv2.tv_sec, tv2.tv_usec); if (check_end) { for (i = 0; i < size; i++) { if (z[i] != y[i]) printf("Error in byte %d\n", i); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?