The Program irred
irred is a program which searches for irreducible trinomials
xr + xs + 1
of prime degree r over the finite field GF(2).
It is written in C
and runs under Linux, Solaris or other flavours of Unix
(not yet Windows).
There are optional assembler routines for IBM PCs
to take advantage of the
MMX
hardware available on such machines
(Pentium II, Pentium III etc). The MMX code is
significantly faster than the pure C code.
Availability
irred is available (free, but with absolutely no warranty)
as open-source software under the
GNU General Public License.
A gzipped tar file of irred version 3.15 is available
here (41 KB).
The earlier versions 1.35 and 1.50 are available
here (42 KB). These versions are slower than recent versions, but are
useful if the exponent s is
small (see below), and for checking purposes (since they use a different
algorithm).
Nate Begeman has ported
irred version 3.11 to Motorola's
AltiVec
ISA extension to the PowerPC,
which is found in all "G4" machines shipped by Apple Computer. This runs
extremely fast
(more than three times as fast as a 1GHz Athlon running the MMX code),
so if you have access to a suitable machine you should download
Begeman's code, which is available
here.
Restrictions on the exponents
Recent versions of irred assume
0 < s < r,
s > LIM,
r - s > LIM,
where LIM = 32, 64 or 256,
depending on the version and compilation options.
These restrictions permit certain loop optimisations.
Early versions (e.g. version 1.35 or version 1.50) can handle the
case s < LIM,
and the restriction
r - s > LIM
can be circumvented by replacing s by
r - s,
provided r > 2.LIM.
The case r < 2.LIM can be handled by
less efficient programs, or by looking up published tables.
irred assumes that r is prime - if not then
it performs a necessary (but not sufficient) test for irreducibility.
Recent versions (e.g. version 3.11) give a warning if r
is not prime. Earlier versions did not check primality of r.
Results obtained with irred
irred does not (in general) test primitivity, because this would
require knowledge of the factors of 2r - 1.
However, if
it is known that 2r - 1 is a
Mersenne prime,
then an irreducible trinomial of degree r is necessarily
primitive, so irred can be used to find primitive trinomials
of very high degree, e.g. 3021377.
More information is available here.
Note
irred is largely obsolete as our
factor program is much
faster on average when searching for irreducible trinomials. However,
irred is still used for checking irreducibility.
Return to Richard Brent's index page