Put headers on the C files.

master
Jim Plank 2013-10-09 11:00:24 -04:00
parent 110523d6f3
commit b0e2ae07ab
26 changed files with 143 additions and 43 deletions

View File

@ -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
View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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.

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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>

View File

@ -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

View File

@ -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"

View File

@ -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.
*/

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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,