### Blame view

examples/gf_example_1.c 1.24 KB
 `1` ``````/* `````` ```2 3 4 5``` `````` * GF-Complete: A Comprehensive Open Source Library for Galois Field Arithmetic * James S. Plank, Ethan L. Miller, Kevin M. Greenan, * Benjamin A. Arnold, John A. Burnum, Adam W. Disney, Allen C. McBride. * `````` ```6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58``` `````` * gf_example_1.c * * Demonstrates using the procedures for examples in GF(2^w) for w <= 32. */ #include #include #include #include #include #include #include "gf_complete.h" #include "gf_rand.h" void usage(char *s) { fprintf(stderr, "usage: gf_example_1 w - w must be between 1 and 32\n"); exit(1); } int main(int argc, char **argv) { uint32_t a, b, c; int w; gf_t gf; if (argc != 2) usage(NULL); w = atoi(argv[1]); if (w <= 0 || w > 32) usage("Bad w"); /* Get two random numbers in a and b */ MOA_Seed(time(0)); a = MOA_Random_W(w, 0); b = MOA_Random_W(w, 0); /* Create the proper instance of the gf_t object using defaults: */ gf_init_easy(&gf, w); /* And multiply a and b using the galois field: */ c = gf.multiply.w32(&gf, a, b); printf("%u * %u = %u\n", a, b, c); /* Divide the product by a and b */ printf("%u / %u = %u\n", c, a, gf.divide.w32(&gf, c, a)); printf("%u / %u = %u\n", c, b, gf.divide.w32(&gf, c, b)); exit(0); } ``````