Browse Source

Put headers on the C files.

master
Jim Plank 8 years ago
parent
commit
b0e2ae07ab
  1. 3
      License.txt
  2. 4
      gf.c
  3. 4
      gf_add.c
  4. 4
      gf_example_1.c
  5. 4
      gf_example_2.c
  6. 4
      gf_example_3.c
  7. 4
      gf_example_4.c
  8. 4
      gf_example_5.c
  9. 4
      gf_example_6.c
  10. 4
      gf_example_7.c
  11. 4
      gf_general.c
  12. 4
      gf_inline_time.c
  13. 4
      gf_method.c
  14. 6
      gf_methods.c
  15. 4
      gf_mult.c
  16. 85
      gf_poly.c
  17. 4
      gf_rand.c
  18. 4
      gf_time.c
  19. 4
      gf_unit.c
  20. 4
      gf_w128.c
  21. 4
      gf_w16.c
  22. 4
      gf_w32.c
  23. 4
      gf_w4.c
  24. 4
      gf_w64.c
  25. 4
      gf_w8.c
  26. 4
      gf_wgen.c

3
License.txt

@ -1,4 +1,5 @@
Copyright (c) 2013, James S. Plank, Ethan L. Miller, William B. Houston
Copyright (c) 2013, James S. Plank, Ethan L. Miller, Kevin M. Greenan,
Benjamin A. Arnold, John A. Burnum, Adam W. Disney, Allen C. McBride
All rights reserved.
Redistribution and use in source and binary forms, with or without

4
gf.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf.c
*
* Generic routines for Galois fields

4
gf_add.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_add.c
*
* Adds two numbers in gf_2^w

4
gf_example_1.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_1.c
*
* Demonstrates using the procedures for examples in GF(2^w) for w <= 32.

4
gf_example_2.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_2.c
*
* Demonstrates using the procedures for examples in GF(2^w) for w <= 32.

4
gf_example_3.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_3.c
*
* Identical to example_2 except it works in GF(2^64)

4
gf_example_4.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_4.c
*
* Identical to example_3 except it works in GF(2^128)

4
gf_example_5.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_5.c
*
* Demonstrating altmap and extract_word

4
gf_example_6.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_6.c
*
* Demonstrating altmap and extract_word

4
gf_example_7.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_example_7.c
*
* Demonstrating extract_word and Cauchy

4
gf_general.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_general.c
*
* This file has helper routines for doing basic GF operations with any

4
gf_inline_time.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_inline_time.c
*
* Times inline single multiplication when w = 4, 8 or 16

4
gf_method.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_method.c
*
* Parses argv to figure out the mult_type and arguments. Returns the gf.

6
gf_methods.c

@ -1,7 +1,11 @@
/*
* 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.
*
* gf_methods.c
*
* Lists supported methods (incomplete w.r.t. GROUP and COMPOSITE
* Lists supported methods (incomplete w.r.t. GROUP and COMPOSITE)
*/
#include <stdio.h>

4
gf_mult.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_mult.c
*
* Multiplies two numbers in gf_2^w

85
gf_poly.c

@ -1,45 +1,48 @@
/*
gf_poly.c - program to help find irreducible polynomials in composite fields,
using the Ben-Or algorithm.
James S. Plank
Please see the following paper for a
description of the Ben-Or algorithm:
author S. Gao and D. Panario
title Tests and Constructions of Irreducible Polynomials over Finite Fields
booktitle Foundations of Computational Mathematics
year 1997
publisher Springer Verlag
pages 346-361
The basic technique is this. You have a polynomial f(x) whose coefficients are
in a base field GF(2^w). The polynomial is of degree n. You need to do the
following for all i from 1 to n/2:
Construct x^(2^w)^i modulo f. That will be a polynomial of maximum degree n-1
with coefficients in GF(2^w). You construct that polynomial by starting with x
and doubling it w times, each time taking the result modulo f. Then you
multiply that by itself i times, again each time taking the result modulo f.
When you're done, you need to "subtract" x -- since addition = subtraction =
XOR, that means XOR x.
Now, find the GCD of that last polynomial and f, using Euclid's algorithm. If
the GCD is not one, then f is reducible. If it is not reducible for each of
those i, then it is irreducible.
In this code, I am using a gf_general_t to represent elements of GF(2^w). This
is so that I can use base fields that are GF(2^64) or GF(2^128).
I have two main procedures. The first is x_to_q_to_i_minus_x, which calculates
x^(2^w)^i - x, putting the result into a gf_general_t * called retval.
The second is gcd_one, which takes a polynomial of degree n and a second one
of degree n-1, and uses Euclid's algorithm to decide if their GCD == 1.
These can be made faster (e.g. calculate x^(2^w) once and store it).
* 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.
*
* gf_poly.c - program to help find irreducible polynomials in composite fields,
* using the Ben-Or algorithm.
*
* (This one was written by Jim)
*
* Please see the following paper for a description of the Ben-Or algorithm:
*
* author S. Gao and D. Panario
* title Tests and Constructions of Irreducible Polynomials over Finite Fields
* booktitle Foundations of Computational Mathematics
* year 1997
* publisher Springer Verlag
* pages 346-361
*
* The basic technique is this. You have a polynomial f(x) whose coefficients are
* in a base field GF(2^w). The polynomial is of degree n. You need to do the
* following for all i from 1 to n/2:
*
* Construct x^(2^w)^i modulo f. That will be a polynomial of maximum degree n-1
* with coefficients in GF(2^w). You construct that polynomial by starting with x
* and doubling it w times, each time taking the result modulo f. Then you
* multiply that by itself i times, again each time taking the result modulo f.
*
* When you're done, you need to "subtract" x -- since addition = subtraction =
* XOR, that means XOR x.
*
* Now, find the GCD of that last polynomial and f, using Euclid's algorithm. If
* the GCD is not one, then f is reducible. If it is not reducible for each of
* those i, then it is irreducible.
*
* In this code, I am using a gf_general_t to represent elements of GF(2^w). This
* is so that I can use base fields that are GF(2^64) or GF(2^128).
*
* I have two main procedures. The first is x_to_q_to_i_minus_x, which calculates
* x^(2^w)^i - x, putting the result into a gf_general_t * called retval.
*
* The second is gcd_one, which takes a polynomial of degree n and a second one
* of degree n-1, and uses Euclid's algorithm to decide if their GCD == 1.
*
* These can be made faster (e.g. calculate x^(2^w) once and store it).
*/
#include "gf_complete.h"

4
gf_rand.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_rand.c -- Random number generator.
*/

4
gf_time.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_time.c
*
* Performs timing for gf arithmetic

4
gf_unit.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_unit.c
*
* Performs unit testing for gf arithmetic

4
gf_w128.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_w128.c
*
* Routines for 128-bit Galois fields

4
gf_w16.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_w16.c
*
* Routines for 16-bit Galois fields

4
gf_w32.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_w32.c
*
* Routines for 32-bit Galois fields

4
gf_w4.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_w4.c
*
* Routines for 4-bit Galois fields

4
gf_w64.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_w64.c
*
* Routines for 64-bit Galois fields

4
gf_w8.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_w8.c
*
* Routines for 8-bit Galois fields

4
gf_wgen.c

@ -1,4 +1,8 @@
/*
* 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.
*
* gf_wgen.c
*
* Routines for Galois fields for general w < 32. For specific w,

Loading…
Cancel
Save