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 + -
显示快捷键?