The electronic version of the book

46
Appendix A The electronic version of the book The electronic version of this book is available free of charge at http://www.jjj.de/fxt/#fxtbook, it is identical to the printed version. Copyright and license Copyright c org Arndt. The electronic version is distributed under the terms and conditions of the Creative Commons license “Attribution-Noncommercial-No Derivative Works 3.0”. You are free to copy, distribute and transmit this book under the following conditions: Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Noncommercial. You may not use this work for commercial purposes. No Derivative Works. You may not alter, transform, or build upon this work. For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to the web page below. Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this license impairs or restricts the author’s moral rights. For more information about the license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/. How to make the hyperlinks work on your computer The hyperlink showing as [FXT: bits/revbin.h] points to file:.fxtdir/src/bits/revbin.h. To make this work on your machine you may want to create (in the directory where the viewer is started) a soft-link to the directory of the FXT sources. For example, assuming that the package is located at ~/work/fxt, execute the following statement: ln -sv ~/work/fxt ~/.fxtdir Similarly, for hfloat, do ln -sv ~/work/hfloat ~/.hfloatdir Test with the hyperlink [hfloat: src/hf/funcsrt.cc] which points to file:.hfloatdir/src/hf/funcsrt.cc. For xdvi you may want to add the following lines to your file: ~ /.mailcap: text/plain;/usr/bin/emacs -no-site-file %s & text/x-csrc;/usr/bin/emacs -no-site-file %s & text/x-chdr;/usr/bin/emacs -no-site-file %s & text/x-c++src;/usr/bin/emacs -no-site-file %s & text/x-c++hdr;/usr/bin/emacs -no-site-file %s & Here the editor emacs is used for viewing plain text, C and C++ sources and headers. Mozilla based browsers do not handle local links correctly, so you may want to use an alternative browser for this book, expecially with the pdf files.

Transcript of The electronic version of the book

Appendix A

The electronic version of the book

The electronic version of this book is available free of charge at http://www.jjj.de/fxt/#fxtbook, itis identical to the printed version.

Copyright and license

Copyright c© Jorg Arndt.

The electronic version is distributed under the terms and conditions of the Creative Commons license“Attribution-Noncommercial-No Derivative Works 3.0”. You are free to copy, distribute and transmitthis book under the following conditions:

• Attribution. You must attribute the work in the manner specified by the author or licensor (butnot in any way that suggests that they endorse you or your use of the work).

• Noncommercial. You may not use this work for commercial purposes.

• No Derivative Works. You may not alter, transform, or build upon this work.

For any reuse or distribution, you must make clear to others the license terms of this work. The bestway to do this is with a link to the web page below. Any of the above conditions can be waived if youget permission from the copyright holder. Nothing in this license impairs or restricts the author’s moralrights.

For more information about the license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/.

How to make the hyperlinks work on your computer

The hyperlink showing as [FXT: bits/revbin.h] points to file:.fxtdir/src/bits/revbin.h. To makethis work on your machine you may want to create (in the directory where the viewer is started) a soft-linkto the directory of the FXT sources. For example, assuming that the package is located at ~/work/fxt,execute the following statement:ln -sv ~/work/fxt ~/.fxtdir

Similarly, for hfloat, doln -sv ~/work/hfloat ~/.hfloatdir

Test with the hyperlink [hfloat: src/hf/funcsrt.cc] which points tofile:.hfloatdir/src/hf/funcsrt.cc.For xdvi you may want to add the following lines to your file:~/.mailcap:

text/plain;/usr/bin/emacs -no-site-file %s &text/x-csrc;/usr/bin/emacs -no-site-file %s &text/x-chdr;/usr/bin/emacs -no-site-file %s &text/x-c++src;/usr/bin/emacs -no-site-file %s &text/x-c++hdr;/usr/bin/emacs -no-site-file %s &

Here the editor emacs is used for viewing plain text, C and C++ sources and headers.

Mozilla based browsers do not handle local links correctly, so you may want to use an alternative browserfor this book, expecially with the pdf files.

Appendix B

Machine used for benchmarking

The machine used for performance measurements is an AMD64 (Athlon64) clocked at 2.2 GHz with dualchannel double data rate (DDR) clocked at 200 MHz (‘800 MHz’). It has 512 kB (16-way associative)second level cache and separate first level caches for data and instructions, each 64 kB (and 2-wayassociative). Cache lines are 64 bytes (8 words, 512 bits). The memory controller is integrated in theCPU.

The CPU has 16 general purpose (64 bit) registers that are addressable as byte, 16 bit word, 32 bit word,or 64 bit (full) word. These are used for integer operations and for passing integer function arguments.There are 16 (128 bit, SSE) registers that are used for floating-point operations and for passing floating-point function arguments. The SSE registers are SIMD registers. Additionally, there are 8 (legacy, x87)FPU registers.

The parts of the information reported by the CPUID instruction that are relevant for performance are:Vendor: AuthenticAMDName: AMD Athlon(tm) 64 Processor 3500+

Family: 15, Model: 47, Stepping: 2Level 1 cache (data): 64 kB, 2-way associative.

64 bytes per line, lines per tag: 1.Level 1 cache (instr): 64 kB, 2-way associative.

64 bytes per line, lines per tag: 1.Level 2 cache: 512 kB, 16-way associative

64 bytes per line, lines per tag: 1.

Max virtual addr width: 48Max physical addr width: 40Features:

lm: Long Mode (64-bit mode)nx: No-Execute Page Protectionmtrr: Memory Type Range Registerstsc: Time Stamp Counterfpu: x87 FPU3dnow: AMD 3DNow! instructions3dnowext: AMD Extensions to 3DNow!mmx: Multimedia Extensionsmmxext: AMD Extensions to MMXsse: Streaming SIMD Extensionssse2: Streaming SIMD Extensions-2sse3: Streaming SIMD Extensions-3cmov: CMOV instruction (plus FPU FCMOVCC and FCOMI)cx8: CMPXCHG8 instructionfxsr: FXSAVE and FXRSTOR instructionsffxsr: fast FXSAVE and FXRSTOR instructionslmlahf: load/store flags to ah (LAHF/SAHF) in 64-bit mode

Special instructions as SIMD, prefetch and non-temporal moves are not used unless explicitly noted.

See [169] for a comparison of instruction latencies and throughput for various x86 CPU cores. You dowant to study the cited document before buying an x86-based system.

The compiler used was the GNU (C and C++) compiler [146].

Appendix C

The GP language

We give a short introduction to GP, the language of the pari calculator [266]. From the manual page(slightly edited):NAME gp - PARI calculator

SYNOPSIS gp [-emacs] [-f] [-test] [-q] [-s stacksize] [-p primelimit]

DESCRIPTIONInvokes the PARI-GP calculator. This is an advanced programmable calcu-lator, which computes symbolically as long as possible, numericallywhere needed, and contains a wealth of number-theoretic functions(elliptic curves, class field theory...). Its basic data types are

integers, real numbers, exact rational numbers, algebraic numbers,p-adic numbers, complex numbers,modular integers,polynomials and rational functions,power series,binary quadratic forms,matrices, vectors, lists,character strings,and recursive combinations of these.

Interactive usage

To use GP interactively, just type gp at your command line prompt. A startup message like the followingwill appear:

GP/PARI CALCULATOR Version 2.3.4 (released)amd64 running linux (x86-64 kernel) 64-bit version

compiled: Oct 14 2008, gcc-4.2.1 (SUSE Linux)(readline v5.2 enabled, extended help available)

Copyright (C) 2000-2006 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, andcomes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.Type ?12 for how to get moral (and possibly technical) support.

parisize = 8000000, primelimit = 500000?

The question mark in the last line is a prompt, the program is waiting for your input.? 1+1%1 = 2

Here we successfully computed one plus one. Next we compute a factorial:? 44!%2 = 2658271574788448768043625811014615890319638528000000000

Integers are of unlimited precision, the practical limit is the amount of physical RAM. For floating-pointnumbers, the precision (number of decimal digits) can be set as follows

? default(realprecision,55)%3 = 55? sin(1.5)%4 = 0.9974949866040544309417233711414873227066514259221158219

The history numbers %N (where N is a number) can be used to recall the result of a prior computation:

924 Chapter C: The GP language

? %4%5 = 0.9974949866040544309417233711414873227066514259221158219

The output of the result of a calculation can be suppressed using a semicolon at the end of the command.This is useful for timing purposes:? default(realprecision,10000)%5 = 10000? sin(2.5);? ##

*** last result computed in 100 ms.

The command ## gives the time used for the last computation.

The printing format can be set independently of the precision used:? default(realprecision,10000);? default(format,"g.15");? sin(2.5)%6 = 0.598472144103956

Command line completion is available, typing si, then the tab-key, gives a list of built-in functions whosenames start with si:? si

sigma sign simplify sin sinh sizebyte sizedigit

You can get the help text by using the question mark, followed by the help topic:? ?sinh

sinh(x): hyperbolic sine of x.

A help overview is invoked by a single question mark? ?Help topics: for a list of relevant subtopics, type ?n for n in

0: user-defined identifiers (variable, alias, function)1: Standard monadic or dyadic OPERATORS2: CONVERSIONS and similar elementary functions3: TRANSCENDENTAL functions4: NUMBER THEORETICAL functions5: Functions related to ELLIPTIC CURVES6: Functions related to general NUMBER FIELDS7: POLYNOMIALS and power series8: Vectors, matrices, LINEAR ALGEBRA and sets9: SUMS, products, integrals and similar functions10: GRAPHIC functions11: PROGRAMMING under GP12: The PARI community

Select a section by its number:? ?7

O deriv eval factorpadicintformal padicappr polcoeff polcyclopoldegree poldisc poldiscreduced polhenselliftpolinterpolate polisirreducible pollead pollegendrepolrecip polresultant polroots polrootsmodpolrootspadic polsturm polsubcyclo polsylvestermatrixpolsym poltchebi polzagier serconvolserlaplace serreverse subst substpolsubstvec taylor thue thueinit

You should try both of the following? ??tutorial

displaying ’tutorial.dvi’.? ??

displaying ’users.dvi’.

A short overview (which you may want to print) of most functions can be obtained via? ??refcard

displaying ’refcard.dvi’.

A session can be ended by either entering quit or just hitting control-d.

925

Built-in operators and basic functions

There are the ‘usual’ operators +, -, *, /, ^ (powering), and % (modulo). The operator \ gives the integerquotient without remainder. The assignment operator is =. C-style shortcuts are available, for examplet+=3 is the same as t=t+3.

The increment by 1 can be abbreviated as t++, the decrement as t--. [Technical note: these behave asthe C-language pre-increment (and pre-decrement), that is, the expression evaluates to t+1, not t. Thereis no post-increment or post-decrement in GP.]

Comparison operators are ==, != (alternatively <>), >, >=, <, and <=. Logical operators are && (and),(or), and ! (not)

Bit-wise operations for integers arebitand bitneg bitnegimply bitor bittest bitxor

andshift(x,n): shift x left n bits if n>=0, right -n bits if n<0.shiftmul(x,n): multiply x by 2^n (n>=0 or n<0)

One can also use the operators >> and <<, as in the C-language, and the shortcuts >>= and <<=.

An overview of basic functions is obtained as? ?2

Col List Mat Mod Pol Polrev QfbSer Set Str Strchr Strexpand Strtex VecVecsmall binary bitand bitneg bitnegimply bitor bittestbitxor ceil centerlift changevar component conj conjvecdenominator floor frac imag length lift normnorml2 numerator numtoperm padicprec permtonum precision randomreal round simplify sizebyte sizedigit truncate valuationvariable

Here are a few:sign(x): sign of x, of type integer, real or fraction.max(x,y): maximum of x and y.min(x,y): minimum of x and y.abs(x): absolute value (or modulus) of x.

floor(x): floor of x = largest integer<=x.ceil(x): ceiling of x=smallest integer>=x.frac(x): fractional part of x = x-floor(x)

An overview of sums, products, and some numerical functions:? ?9

intcirc intfouriercos intfourierexp intfouriersinintfuncinit intlaplaceinv intmellininv intmellininvshortintnum intnuminit intnuminitgen intnumrombintnumstep prod prodeuler prodinfsolve sum sumalt sumdivsuminf sumnum sumnumalt sumnuminitsumpos

For example:sum(X=a,b,expr,{x=0}): x plus the sum (X goes from a to b) of expression expr.prod(X=a,b,expr,{x=1}): x times the product (X runs from a to b) of expression.

Basic data types

Strings:? a="good day!"

"good day!"

Integers, floating-point numbers (real or complex), and complex integers:

? factor(239+5*I)[-I 1][1 + I 1][117 + 122*I 1]

926 Chapter C: The GP language

Exact rationals:? 2/3+4/5

22/15

Modular integers:? Mod(3,239)^77

Mod(128, 239)

Vectors and matrices:? v=vector(5,j,j^2)

[1, 4, 9, 16, 25]? m=matrix(5,5,r,c,r+c)

[2 3 4 5 6][3 4 5 6 7][4 5 6 7 8][5 6 7 8 9][6 7 8 9 10]

The vector is a row vector, trying to right-multiply it with the matrix fails:? t=m*v

*** impossible multiplication t_MAT * t_VEC.

The operator ~ transposes vectors (and matrices), we multiply with the column vector:? t=m*v~%14 = [280, 335, 390, 445, 500]~

The result is a column vector, note the tilde at the end of the line.

Vector indices start with one:? t[1]%15 = 280

Symbolic computations

Univariate polynomials:? (1+x)^7

x^7 + 7*x^6 + 21*x^5 + 35*x^4 + 35*x^3 + 21*x^2 + 7*x + 1? factor((1+x)^6+1)

[x^2 + 2*x + 2 1][x^4 + 4*x^3 + 5*x^2 + 2*x + 1 1]

Power series:? (1+x+O(x^4))^7

1 + 7*x + 21*x^2 + 35*x^3 + O(x^4)? log((1+x+O(x^4))^7)

7*x - 7/2*x^2 + 7/3*x^3 + O(x^4)

Types can be nested, here we compute modulo the polynomial 1 + x+ x7 with coefficients over GF(2):

? t=Mod(1+x, Mod(1,2)*(1+x+x^7))^77Mod(Mod(1, 2)*x^3 + Mod(1, 2)*x + Mod(1, 2), Mod(1, 2)*x^7 + Mod(1, 2)*x + Mod(1, 2))

? lift(t) \\ discard modulo polynomialMod(1, 2)*x^3 + Mod(1, 2)*x + Mod(1, 2)

? lift(lift(t)) \\ discard modulo polynomial, then modulus 2 with coefficientx^3 + x + 1

Symbolic computations are limited when compared to a computer algebra system: for example, multi-variate polynomials cannot (yet) be factored and there is no symbolic solver for polynomials.

An uninitialized variable evaluates to itself, as a symbol:? hello

hello

To create a symbol, prepend a tick:? w=3

3? hello=’w /* the symbol w, not the value of w */

w

Here is a method to create symbols:

927

? sym(k)=eval(Str("A", k))? t=vector(5, j, sym(j-1))

[A0, A1, A2, A3, A4]

The ingredients are eval() and Str():eval(x): evaluation of x, replacing variables by their value.Str({str}*): concatenates its (string) argument into a single string.

Some more trickery to think about:sym(k)=eval(Str("A", k))t=vector(5, j, sym(j-1)); print("1: t=", t);{ for (k=1, 5,

sy = sym(k-1);v = 1/k^2;/* assign to the symbol that sy evaluates to, the value of v: */eval( Str( Str( sy ), "=", Str( v) ) );

); }print("2: t=", t); /* no lazy evaluation with GP */t=eval(t); print("3: t=", t);

The output of this script is1: t=[A0, A1, A2, A3, A4]2: t=[A0, A1, A2, A3, A4]3: t=[1, 1/4, 1/9, 1/16, 1/25]

More built-in functions

The following constants and transcendental functions are available:? ?3

Euler I Pi abs acos acosh agm argasin asinh atan atanh bernfrac bernreal bernvec besselh1besselh2 besseli besselj besseljh besselk besseln cos coshcotan dilog eint1 erfc eta exp gamma gammahhyperu incgam incgamc lngamma log polylog psi sinsinh sqr sqrt sqrtn tan tanh teichmuller thetathetanullk weber zeta

To obtain information about a particular function, use a question mark:? ?sinh

sinh(x): hyperbolic sine of x.

Transcendental functions will also work with complex arguments and symbolically, returning a powerseries:? sinh(x)%9 = x + 1/6*x^3 + 1/120*x^5 + 1/5040*x^7 + 1/362880*x^9 \

+ 1/39916800*x^11 + 1/6227020800*x^13 + 1/1307674368000*x^15 + O(x^17)

The line break (and the backslash indicating it) was manually entered for layout reasons. The ‘precision’(that is default order) of power series can be set by the user:

? default(seriesprecision,9);? sinh(x)%11 = x + 1/6*x^3 + 1/120*x^5 + 1/5040*x^7 + 1/362880*x^9 + O(x^10)

One can also manually give the O(xN ) term:

? sinh(x+O(x^23))%12 = x + 1/6*x^3 + 1/120*x^5 + 1/5040*x^7 + \

[--snip--] \+ 1/121645100408832000*x^19 + 1/51090942171709440000*x^21 + O(x^23)

Functions operating on matrices are (type mat, then hit the tab-key)matadjoint matalgtobasis matbasistoalg matcompanionmatdet matdetint matdiagonal mateigenmatfrobenius mathess mathilbert mathnfmathnfmod mathnfmodid matid matimagematimagecompl matindexrank matintersect matinverseimagematisdiagonal matker matkerint matmuldiagonalmatmultodiagonal matpascal matrank matrixmatrixqz matsize matsnf matsolvematsolvemod matsupplement mattranspose

928 Chapter C: The GP language

Built-in number theoretical functions are? ?4

addprimes bestappr bezout bezoutres bigomega binomialchinese content contfrac contfracpnqn core corediscdirdiv direuler dirmul divisors eulerphi factorfactorback factorcantor factorff factorial factorint factormodffinit fibonacci gcd hilbert isfundamental ispowerisprime ispseudoprime issquare issquarefree kronecker lcmmoebius nextprime numbpart numdiv omega precprimeprime primepi primes qfbclassno qfbcompraw qfbhclassnoqfbnucomp qfbnupow qfbpowraw qfbprimeform qfbred qfbsolvequadclassunit quaddisc quadgen quadhilbert quadpoly quadrayquadregulator quadunit removeprimes sigma sqrtint zncoppersmithznlog znorder znprimroot znstar

Functions related to polynomials and power series are? ?7

O deriv eval factorpadicintformal padicappr polcoeff polcyclopoldegree poldisc poldiscreduced polhenselliftpolinterpolate polisirreducible pollead pollegendrepolrecip polresultant polroots polrootsmodpolrootspadic polsturm polsubcyclo polsylvestermatrixpolsym poltchebi polzagier serconvolserlaplace serreverse subst substpolsubstvec taylor thue thueinit

Plenty to explore!

Control structures for programming

Some loop constructs available arewhile(a,seq): while a is nonzero evaluate the expression sequence seq. Otherwise 0.

until(a,seq): evaluate the expression sequence seq until a is nonzero.

for(X=a,b,seq): the sequence is evaluated, X going from a up to b.

forstep(X=a,b,s,seq): the sequence is evaluated, X going from a to b in steps of s(can be a vector of steps)

forprime(X=a,b,seq): the sequence is evaluated, X running over the primes between aand b.

fordiv(n,X,seq): the sequence is evaluated, X running over the divisors of n.

The expression seq is a list of statements:

for ( k=1, 10, stat1; stat2; stat3; ) /* last semicolon optional */for ( k=1, 10, stat1; )for ( k=1, 10, ; ) /* zero statements (do nothing, ten times) */

(The comments enclosed in /* */ were added manually.)

The loop-variable is local to the loop:? for(k=1,10, ; ) /* do nothing, ten times */? k

k /* not initialized in global scope ==> returned as symbol */

A global variable of the same name is not changed:? k=7

7? for(k=1,3, print(" k=",k))

k=1k=2k=3

? k7 /* global variable k not modified */

For the sake of clarity, avoid using global and loop-local variables of the same name.

A loop can be aborted with the statement break(). The n enclosing loops are aborted by break(n).With next(), the next iteration of a loop is started (and the statements until the end of the loop areskipped). With break(n) the same is done for the n-th enclosing loop.

929

And yes, there is an if statement:if(a,seq1,seq2): if a is nonzero, seq1 is evaluated, otherwise seq2. seq1 and seq2

are optional, and if seq2 is omitted, the preceding comma can be omitted also.

To have more than one statement in the branches use semicolons between the statements:if ( a==3, /* then */

b=b+1;c=7;, /* else */b=b-1;c=0;

);

Non-interactive usage (scripts)

Usually one will create scripts that are fed into gp (at the command line):gp -q < myscript.gp

The option -q suppresses the startup message and the history numbers %N.

If the script contains just the lineexp(2.0)

the output would be7.3890560989306502272304274605750078131

To also see the commands in the output, add a default(echo,1); to the top of the file. Then the outputis? exp(2.0)

7.3890560989306502272304274605750078131

You should use comments in your scripts, there are two types of them:\\ a line comment, started with backslashes/* a block comment

can stretch over several lines, as in the C-language */

Comments are not visible in the output. With the scriptdefault(echo, 1);\\ sum of square numbers:s=0; for (k=1, 10, s=s+k*k); s

the output would be? default(echo,1);? s=0;for(k=1,10,s=s+k*k);s

385

Note that all blanks are removed (on input) and are therefore missing in the output.

A command can be broken into several lines if it is enclosed within a pair of braces:{ for (k=1, 10,

s=s+k*k;print(k,": s=", s);

); }

This is equivalent to the one-linerfor (k=1, 10, s=s+k*k; print(k,": s=", s); );

User-defined Functions

Now we define a function:powsum(n, p)={ /* return the sum 1^p+2^p+3^p+...+n^p */

local(t);t = 0;for (k=1, n,

t = t+k^p); \\ ’^’ is the powering operator

930 Chapter C: The GP language

return( t );}

The statement local(t); makes sure that no global variable named t (if it exists) would be changedby the function. It must be the first statement in the function. The variable k in the for()-loop isautomatically local and should not be listed with the locals. Note that each statement is terminated witha semicolon. The output would be? powsum(n,p)=local(t);t=0;for(k=1,n,t=t+k^p);return(t);? powsum(10,2)

385

Note how the function definition is changed to a one-liner in the output.

If you have to use global variables, list them at the beginning of your script as follows:global(var1, var2, var3);

Any attempt to use the listed names as names of function arguments or local variables in functions willtrigger an error. Note the use of global() is deprecated in later versions of GP.

Arguments are passed by value. There is no mechanism for passing by reference, global variables can bea workaround for this.Arguments can have defaults, as inpowsum(n, p=2)= /* etc */

Calling the function as either powsum(9) or powsum(9,) would compute the number of the first 9 squares.Defaults can appear anywhere in the argument list, as inabcsum(a, b=3, c)= return( a+b+c );

So abcsum(1,,1) would return 5.

All arguments are implicitly given the default zero, so the sequence of statementsfoo(a, b, c)= print(a,":",b,":",c);foo(,,)foo()foo

will print three times 0:0:0. This feature is rarely useful and does lead to obscure errors. It will hopefullybe removed in future versions of GP.

Bibliography

A

[1] Milton Abramowitz, Irene A. Stegun, (eds.): Handbook of Mathematical Functions, NationalBureau of Standards, 1964, third printing, (1965). 277, 604, 686, 687, 689, 691, 696, 697

[2] Ramesh C. Agarwal, James W. Cooley: New algorithms for digital convolution, IEEETransactions on Acoustics, Speech, and Signal Processing, vol.ASSP-25, pp.392-410,(October-1977). 551

[3] Simon Joseph Agou, Marc Deleglise, Jean-Louis Nicolas: Short Polynomial Representations forSquare Roots Modulo p, Designs, Codes and Cryptography, vol.28, pp.33-44, (2003). 784

[4] Manindra Agrawal, Neeraj Kayal, Nitin Saxena: PRIMES is in P, Annals of Mathematics,vol.160, no.2, pp.781-793, (September-2004). URL:http://annals.math.princeton.edu/annals/2004/160-2/p12.xhtml. 804

[5] Omran Ahmadi, Alfred Menezes: On the number of trace-one elements in polynomial basesfor F2n , Designs, Codes and Cryptography, vol.37, no.3, pp.493-507, (December-2005). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.5.2051. 896

[6] Omran Ahmadi, Alfred Menezes: Irreducible polynomials of maximum weight, UtilitasMathematica, vol.72, pp.111-123, (2007). URL:http://www.math.uwaterloo.ca/~ajmeneze/research.html. 853

[7] W. R. Alford, Andrew Granville, Carl Pomerance: There are infinitely many Carmichaelnumbers, Annals of Mathematics, vol.139, pp.703-722, (1994). 786

[8] Jean-Paul Allouche, Jeffrey Shallit: The ubiquitous Prouhet-Thue-Morse sequence, In: C.Ding, T. Helleseth, H. Niederreiter, (eds.), Sequences and Their Applications: Proceedings ofSETA’98, pp.1-16, Springer-Verlag, (1999). URL:http://www.cs.uwaterloo.ca/~shallit/papers.html. 44, 729

[9] Jean-Paul Allouche, Michael Cosnard: The Komornik-Loreti constant is transcendental, Amer.Math. Monthly, vol.107, pp.448-449, (2000). URL: http://www.lri.fr/~allouche/. 729

[10] Advanced Micro Devices (AMD) Inc.: AMD Athlon Processor, x86 code optimization guide,Publication no.22007, Revision K, (February-2002). URL: http://www.amd.com/. 19

[11] Advanced Micro Devices (AMD) Inc.: Software Optimization Guide for AMD64 Processors,Publication no.25112, Revision 3.06, (September-2005). URL: http://www.amd.com/. 6

[12] Advanced Micro Devices (AMD) Inc.: Software Optimization Guide for AMD Family 10hProcessors, Publication no.40546, Revision 3.1, (May-2009). URL: http://www.amd.com/. 6

[13] Advanced Micro Devices (AMD) Inc.: AMD64 Architecture Programmer’s Manual. Volume 3:General-Purpose and System Instructions, Publication no.24594, Revision 3.15,(November-2009). URL: http://www.amd.com/. 26

[14] Ray Andraka: A survey of CORDIC algorithms for FPGA based computers, In: Proceedingsof the Sixth ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA’98), ACM, pp.191-200, (1998). URL: http://www.andraka.com/papers.htm. 650

[15] George E. Andrews: The theory of partitions, Addison-Wesley, (1976). 344

932 BIBLIOGRAPHY

[16] George E. Andrews: Euler’s Pentagonal Number Theorem, Mathematics Magazine, vol.56,no.5, pp.279-284, (November-1983). 346

[17] George E. Andrews, Richard Askey, Ranjan Roy: Special functions, Cambridge University Press,(1999). 346, 348, 589, 686, 692, 702

[18] Francois Arnault: Rabin-Miller Primality Test: Composite Numbers Which Pass It,Mathematics of Computation, vol.64, no.209, pp.355-361, (January-1995). 791

[19] Jorg Arndt, Christoph Haenel: Pi – Unleashed, Springer-Verlag, (2000). Translation of: Pi.Algorithmen, Computer, Arithmetik, (1998). 615

[20] Jorg Arndt: Arctan relations for Pi, (May-2006). URL:http://www.jjj.de/arctan/arctanpage.html. 639

[21] Jorg Arndt: FXT, a library of algorithms, (1996-2009). URL: http://www.jjj.de/fxt/. xi

[22] Jorg Arndt: hfloat, a library for high precision computations, (1995-2009). URL:http://www.jjj.de/hfloat/. xi, 530

[23] Jorg Arndt: Testing polynomial irreducibility without GCDs, INRIA research report RR-6542,Nancy, France, (May-2008). URL: http://hal.inria.fr/inria-00281614/en/. 839, 840

[24] Jorg Arndt: Generating Random Permutations, PhD thesis, Australian National University,Camberra, Australia, (10-March-2010). URL: http://www.jjj.de/pub/. 117

[25] Mikhail J. Atallah, Samuel S. Wagstaff, Jr.: Watermarking With Quadratic Residues, In: Proc.of IS-T/SPIE Conf. on Security and Watermarking of Multimedia Contents, SPIE vol.3657,pp.283-288, (1999). URL: http://homes.cerias.purdue.edu/~ssw/water.html. 784

[26] Roberto Maria Avanzi: Another Look at Square Roots (and Other Less CommonOperations) in Fields of Even Characteristic, Lecture Notes in Computer Science, vol.4876,pp.138-154, (2007). 889

B

[27] John C. Baez: The Octonions, Bulletin of the American Mathematical Society, vol.39, no.2,pp.145-205, (2002). URL: http://www.ams.org/journals/bull/2002-39-02/home.html. 816

[28] David H. Bailey: FFTs in External or Hierarchical Memory, Journal of Supercomputing, vol.4,no.1, pp.23-35, (March-1990). URL: http://crd.lbl.gov/~dhbailey/dhbpapers/. 438

[29] David H. Bailey, P. N. Swarztrauber: The Fractional Fourier Transform and Applications,SIAM Review, vol.33, no.3, pp.389-404, (September-1991). URL:http://crd.lbl.gov/~dhbailey/dhbpapers/. 456

[30] David H. Bailey, Jonathan M. Borwein, Peter B. Borwein, Simon Plouffe: The Quest for Pi, TheMathematical Intelligencer, vol.19, no.1, pp.50-57, (January-1997). URL:http://crd.lbl.gov/~dhbailey/dhbpapers/. 617, 618

[31] David H. Bailey, Richard E. Crandall: On the Random Character of Fundamental ConstantExpansions, Experimental Mathematics, vol.10, no.2, pp.175-190, (June-2001). URL:http://www.expmath.org/. 626

[32] David H. Bailey: Some Background on Kanada’s Recent Pi Calculation, manuscript,(16-May-2003). URL: http://crd.lbl.gov/~dhbailey/dhbpapers/dhb-kanada.pdf. 640

[33] Wilfrid Norman Bailey: Products of generalized hypergeometric series, Proceedings of theLondon Mathematical Society, Series 2, vol.s2-28, no.1, pp.242-254, (1928). 693

[34] Wilfrid Norman Bailey: Generalized hypergeometric series, Cambridge University Press,(1935). 692

[35] Robert Baillie, S. Wagstaff, Jr.: Lucas Pseudoprimes. Mathematics of Computation, vol.35,no.152, pp.1391-1417, (October-1980). 801

[36] Jean-Claude Bajard, Sylvanus Kla, Jean-Michel Muller: BKM: A New Hardware Algorithm forComplex Elementary Functions, IEEE Transactions on Computers, vol.43, no.8, (August-1994).URL: http://perso.ens-lyon.fr/jean-michel.muller/BKM94.pdf. 650

BIBLIOGRAPHY 933

[37] Dominique Roelants van Baronaigien: A Loopless Gray-Code Algorithm for Listing k-aryTrees, Journal of Algorithms, vol.35, pp.100-107, (2000). 333

[38] Friedrich L. Bauer: An Infinite Product for Square-Rooting with Cubic Convergence, TheMathematical Intelligencer, vol.20, pp.12-13, (1998). 684

[39] M. Beeler, R. W. Gosper, R. Schroeppel: HAKMEM, MIT AI Memo 239, (29-February-1972).Retyped and converted to html by Henry Baker, (April-1995). URL:http://home.pipeline.com/~hbaker1/hakmem/hakmem.html. 59, 63, 85, 86, 672, 727

[40] Hacene Belbachir, Farid Bencherif: Linear Recurrent Sequences and Powers of a SquareMatrix, INTEGERS: The Electronic Journal of Combinatorial Number Theory, vol.6, (2006).URL: http://www.integers-ejcnt.org/vol6.html. 667

[41] Jordan Bell: Euler and the pentagonal number theorem, arXiv:math/0510054v2 [math.HO],(17-August-2006). URL: http://arxiv.org/abs/math.HO/0510054. 346

[42] Fabrice Bellard: Computation of 2700 billion decimal digits of Pi using a Desktop Computer,technical notes, (11-February-2010). URL: http://bellard.org/pi/pi2700e9/. 454

[43] A. A. Bennett: The four term Diophantine arccotangent relation, Annals of Mathematics,Second Series, vol.27, no.1, pp.21-24, (September-1925). 638

[44] F. Bergeron, J. Berstel, S. Brlek: Efficient computation of addition chains, Journal de Theoriedes Nombres de Bordeaux, vol.6, no.1, pp.21-38, (1994). URL:http://www.numdam.org/numdam-bin/item?id=JTNB_1994__6_1_21_0. 565

[45] Lennart Berggren, Jonathan Borwein, Peter Borwein, (eds.): Pi: A Source Book,Springer-Verlag, (1997). 615

[46] E. R. Berlekamp: Factoring polynomials over finite fields, Bell System Technical Journal,vol.46, pp.1853-1859, (1967). 858

[47] Bruce C. Berndt, S. Bahrgava, Frank G. Garvan: Ramanujan’s Theories of Elliptic Functionsto Alternative Bases, Transactions of the American Mathematical Society, vol.347, no.11,pp.4163-4244, (1995). URL: http://www.math.ufl.edu/~frank/publist.html. 613

[48] Bruce C. Berndt: Flowers which we cannot yet see growing in Ramanujan’s garden ofhypergeometric series, elliptic functions and q’s, In: J. Bustoz, M. E. H. Ismail, S. K. Suslov,(eds.): Special Functions 2000: Current Perspective and Future Directions Kluwer, Dordrecht,pp.61-85, (2001). URL: http://www.math.uiuc.edu/~berndt/publications.html 612

[49] Pedro Berrizbeitia, T. G. Berry: Generalized Strong Pseudoprime tests and applications,Journal of Symbolic Computation, no.11, (1999). 792

[50] Eli Biham, Rafi Chen: Near-Collisions of SHA-0, Advances in Cryptology - CRYPTO’04,Lecture Notes in Computer Science, vol.3152, pp.290-305, (2004). URL:http://eprint.iacr.org/2004/146.ps. 870

[51] Eli Biham, Rafi Chen, Antoine Joux, Patrick Carribault, Christophe Lemuet, William Jalby:Collisions of SHA-0 and Reduced SHA-1, Lecture Notes in Computer Science, vol.3494,pp.36-57, (2005). 870

[52] James R. Bitner, Gideon Ehrlich, Edward M. Reingold: Efficient generation of the binaryreflected Gray code and its applications, Communications of the ACM, vol.19, no.9,pp.517-521, (September-1976). 207

[53] Andreas Bjorklund, Thore Husfeldt, Petteri Kaski, Mikko Koivisto: Fourier meets Mobius: fastsubset convolution, Proceedings of the thirty-ninth annual ACM Symposium on Theory ofComputing, San Diego, California, USA, pp.67-74, (2007). URL:http://arxiv.org/abs/cs.DS/0611101. 496

[54] Ian F. Blake, Shuhong Gao, Ronald C. Mullin: Explicit Factorization of x2k

+ 1 over Fp withPrime p ≡ 3 mod 4, Applicable Algebra in Engineering, Communication and Computation 4,pp.89-94, (1993). URL: http://www.math.clemson.edu/~sgao/pub.html. 807

[55] Ian F. Blake, Shuhong Gao, Robert J. Lambert: Construction and Distribution Problems forIrreducible Trinomials over Finite Fields, In: D. Gollmann, (ed.): Applications of finite fields,pp.19-32, (1996). URL: http://www.math.clemson.edu/~sgao/pub.html. 851

934 BIBLIOGRAPHY

[56] Leo I. Bluestein: A linear filtering approach to the computation of the discrete Fouriertransform, IEEE Transactions on Audio and Electroacoustics, vol.18, pp.451-455,(December-1970). 455

[57] Antonia W. Bluher: A Swan-like theorem, Finite Fields and Their Applications, vol.12,pp.128-138, (28-June-2006). URL: http://arxiv.org/abs/math/0406538v2. 896

[58] Arnaud Bodin: Number of irreducible polynomials in several variables over finite fields,arXiv:0706.0157v2 [math.AC], (11-June-2007). URL: http://arxiv.org/abs/0706.0157v2. 843

[59] Marco Bodrato: Towards Optimal Toom-Cook Multiplication for Univariate andMultivariate Polynomials in Characteristic 2 and 0, Lecture Notes in Computer Science,vol.4547, pp.116-133, (2007). URL: http://bodrato.it/papers/.831, 896

[60] Marco Bodrato, Alberto Zanoni: What About Toom-Cook Matrices Optimality?, TechnicalReport 605, Centro Vito Volterra, Universita di Roma Tor Vergata, (October-2006). URL:http://bodrato.it/papers/. 552, 555

[61] Marco Bodrato, Alberto Zanoni: Integer and Polynomial Multiplication: Towards OptimalToom-Cook Matrices, Proceedings of the 2007 International Symposium on Symbolic andAlgebraic Computation, pp.17-24, (2007). URL:http://portal.acm.org/citation.cfm?id=1277548.1277552. 553, 555

[62] Miklos Bona: Combinatorics of Permutations, Chapman & Hall/CRC, (2004). 278

[63] J. M. Borwein, P. B. Borwein: Cubic and higher order algorithms for π, CanadianMathematical Bulletin, vol.27, no.4, pp.436-443, (1984). URL:http://www.cecm.sfu.ca/~pborwein/PAPERS/papers.html. 619

[64] J. M. Borwein, P. B. Borwein: More quadratically converging Algorithms for π, Mathematicsof Computation, vol.46, no.173, pp.247-253, (January-1986). URL:http://www.cecm.sfu.ca/~pborwein/PAPERS/papers.html. 615

[65] J. M. Borwein, P. B. Borwein: An explicit cubic iteration for π, BIT Numerical Mathematics,vol.26, no.1, (March-1986). URL: http://www.cecm.sfu.ca/~pborwein/PAPERS/papers.html.620

[66] J. M. Borwein, P. B. Borwein: Pi and the AGM, Wiley, (1987). 601, 606, 616, 617, 621, 622,692, 702

[67] J. M. Borwein, P. B. Borwein: On the Mean Iteration (a, b)←`a+3b

4,√ab+b2

´, Mathematics of

Computation, vol.53, no.187, pp.311-326, (July-1989). URL:http://www.cecm.sfu.ca/~pborwein/PAPERS/papers.html. 611, 621

[68] J. M. Borwein, P. B. Borwein: A cubic counterpart of Jacobi’s Identity and the AGM,Transactions of the American Mathematical Society, vol.323, no.2, pp.691-701, (February-1991).URL: http://www.cecm.sfu.ca/~pborwein/PAPERS/papers.html. 611, 619

[69] J. M. Borwein, P. B. Borwein, F. Garvan: Hypergeometric Analogues of theArithmetic-Geometric Mean Iteration, Constructive Approximation, vol.9, no.4, pp.509-523,(1993). URL: http://www.cecm.sfu.ca/~pborwein/PAPERS/papers.html. 611, 614

[70] J. M. Borwein, P. B. Borwein, F. G. Garvan: Some cubic modular identities of Ramanujan,Transactions of the American Mathematical Society, vol.343, no.1, pp.35-47, (May-1994). URL:http://www.math.ufl.edu/~frank/publist.html. 617

[71] J. M. Borwein, F. G. Garvan: Approximations to π via the Dedekind eta function, CMSConference Proceedings, vol.20, pp.89-115, (1997). URL:http://www.math.ufl.edu/~frank/publist.html. 619, 620

[72] R. N. Bracewell, O. Buneman, H. Hao, J. Villasenor: Fast Two-Dimensional HartleyTransform, Proceedings of the IEEE, vol.74, no.9, pp.1282-1283, (September-1986). 530

[73] Florian Braun, Marcel Waldvogel: Fast Incremental CRC Updates for IP over ATMNetworks, In: Proceedings of the 2001 IEEE Workshop on High Performance Switching andRouting, (2001). URL: http://marcel.wanda.ch/Publications/braun01fast. 871

[74] Richard P. Brent: Algorithms for minimization without derivatives, Prentice-Hall, (1973) (outof print). 588

BIBLIOGRAPHY 935

[75] Richard P. Brent: Fast multiple-precision evaluation of elementary functions, Journal of theACM (JACM), vol.23, no.2, pp.242-251, (April-1976). URL: http://www.rpbrent.com/. 615

[76] Richard P. Brent: On computing factors of cyclotomic polynomials, Mathematics ofComputation, vol.61, no.203, pp.131-149, (July-1993). URL: http://www.rpbrent.com/. 802,896

[77] Richard P. Brent: On the periods of generalized Fibonacci recurrences, Mathematics ofComputation, vol.63, no.207, pp.389-401, (July-1994). URL:http://wwwmaths.anu.edu.au/~brent/pub/pubsall.html. 669

[78] Richard P. Brent: Computing Aurifeuillian factors, in: Computational Algebra and NumberTheory, Mathematics and its Applications, vol.325, Kluwer Academic Publishers, Boston,pp.201-212, (1995). URL: http://www.rpbrent.com/. 802

[79] Richard P. Brent, Alfred J. van der Poorten, Herman J. J. te Riele: A comparative Study ofAlgorithms for Computing Continued Fractions of Algebraic Numbers, Lecture Notes inComputer Science, vol.1122, pp.35-47, (1996). URL:http://wwwmaths.anu.edu.au/~brent/pub/pubsall.html. 719

[80] Richard P. Brent, Samuli Larvala, Paul Zimmermann: A Fast Algorithm for TestingIrreducibility of Trinomials mod 2 and some new primitive trinomials of degree 3021377,Mathematics of Computation, vol.72, pp.1443-1452, (2003). URL: http://www.rpbrent.com/.842

[81] Richard P. Brent: Primality Testing, Slides of talk to the Oxford University Invariant Society,(25-November-2003). URL: http://wwwmaths.anu.edu.au/~brent/talks.html. 804

[82] Richard P. Brent, Paul Zimmermann: Algorithms for finding almost irreducible and almostprimitive trinomials, in: Primes and Misdemeanours: Lectures in Honour of the SixtiethBirthday of Hugh Cowie Williams, Fields Institute Communication FIC/41, The Fields Institute,Toronto, pp.91-102, (2004). URL: http://www.rpbrent.com/. 850

[83] Richard P. Brent: Fast Algorithms for High-Precision Computation of Elementary Functions,slides of talk at RNC7, Nancy, (12-July-2006). URL:http://wwwmaths.anu.edu.au/~brent/talks.html. 658

[84] Richard P. Brent, Paul Zimmermann: A Multi-level Blocking Distinct Degree FactorizationAlgorithm, Finite Fields and Applications: Contemporary Mathematics, vol.461, pp.47-58,(2008). URL: http://www.rpbrent.com/. 842

[85] Richard P. Brent, Pierrick Gaudry, Emmanuel Thome, Paul Zimmermann: Faster Multiplicationin GF(2)[x], INRIA Technical Report RR-6359, (November-2007). URL:http://hal.inria.fr/inria-00188261/ or http://www.rpbrent.com/. 832

[86] Dany Breslauer, Devdatt P. Dubhashi: Combinatorics for Computer Scientists, BRICS LectureSeries, LS-95-4, (August-1995). URL:http://www.brics.dk/LS/95/4/BRICS-LS-95-4/BRICS-LS-95-4.html. 707

[87] David M. Bressoud: A generalization of the Rogers-Ramanujan identities for all moduli,Journal of Combinatorial Theory, Series A, vol.27, no.1, pp.64-68, (July-1979). 347

[88] John Brillhart, Derrick H. Lehmer, John L. Selfridge: New primality criteria and factorizationsof 2m ± 1, Mathematics of Computation, vol.29, no.130, pp.620-647, (April-1975). 795

[89] J. Brillhart, D. H. Lehmer, J. L. Selfridge, B. Tuckerman, S. S. Wagstaff, Jr.: Factorizations ofbn ± 1 b = 2, 3, 5, 6, 10, 11 up to high powers, Contemporary Mathematics, vol.22, second edition,American Mathematical Society, (1988). URL: http://www.ams.org/. 797, 804, 842

[90] Bette Bultena, Frank Ruskey: An Eades-McKay Algorithm for Well-Formed ParenthesesStrings, Information Processing Letters, vol.68, no.5, pp.255-259, (1998). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 329

[91] Ronald Joseph Burthe, Jr.: Further Investigations with the Strong Probable Prime Test,Mathematics of Computation, vol.65, no.213, pp.373-381, (January-1996). 790

C

936 BIBLIOGRAPHY

[92] David G. Cantor: On arithmetical algorithms over finite fields, Journal of CombinatorialTheory, Series A, vol.50, no.2, pp.285-300, (March-1989). 832

[93] K. Cattel, S. Zhang, X. Sun, M. Serra, J. C. Muzio, D. M. Miller: One-Dimensional LinearHybrid Cellular Automata: Their Synthesis, Properties, and Applications in VLSI Testing,tutorial paper, (2009). URL: http://webhome.cs.uvic.ca/~mserra/CA.html. 882

[94] Kevin Cattel, Shujian Zhang: Minimal Cost One-Dimensional Linear Hybrid CellularAutomata of Degree Through 500, Journal of Electronic Testing: Theory and Applications,vol.6, pp.255-258, (1995). URL: http://www.cs.uvic.ca/~mserra/CA.html. 878

[95] Kevin Cattell, Frank Ruskey, Joe Sawada, Micaela Serra, C. Robert Miers: Fast Algorithms toGenerate Necklaces, Unlabeled Necklaces, and Irreducible Polynomials over GF(2), Journalof Algorithms, vol.37, pp.267-282, (2000). URL:http://www.cis.uoguelph.ca/~sawada/pub.html. 374, 856

[96] Heng Huat Chan: On Ramanujan’s cubic transformation formula for 2F1(13, 2

3; 1; z),

Mathematical Proceedings of the Cambridge Philosophical Society, vol.124, pp.193-204,(September-1998). 611

[97] Heng Huat Chan, Kok Seng Chua, Patrick Sole: Quadratic iterations to π associated withelliptic functions to the cubic and septic base, Transactions of the American MathematicalSociety, vol.355, pp.1505-1520, (2003). URL:http://www.ams.org/tran/2003-355-04/S0002-9947-02-03192-6/. 611, 620, 621

[98] W. Chaundy: On Clausen’s hypergeometric identity, The Quarterly Journal of Mathematics,Oxford, vol.9, no.1, pp.265-274, (1958). 692

[99] William Y. C. Chen, Amy M. Fu: Cauchy augmentation for basic hypergeometric series,Bulletin of the London Mathematical Society, vol.36, pp.169-175, (2004). 344

[100] Howard Cheng, Guillaume Hanrot, Emmanuel Thome, Eugene Zima, Paul Zimmermann: Time-and Space-Efficient Evaluation of Some Hypergeometric Constants, International Symposiumon Symbolic and Algebraic Computation, ISSAC’07, pp.85-91, (2007). URL:http://hal.inria.fr/inria-00177850/. 656

[101] Busiso P. Chisala: A Quick Cayley-Hamilton, The American Mathematical Monthly, vol.105,no.9, pp.842-844, (November-1998). 900

[102] D. V. Chudnovsky, G. V. Chudnovsky: The computation of classical constants, Proceedings ofthe National Academy of Sciences of the United States of America, vol.86, no.21, pp.8178-8182,(1-November-1989). 651

[103] Fan Chung, Persi Diaconis, Ronald Graham: Universal cycles for combinatorial structures,Discrete Mathematics, vol.11, pp.43-59, (1992). URL:http://www-stat.stanford.edu/~cgates/PERSI/papers/92_06_universal_cycles.pdf. 875

[104] Jaewook Chung, M. Anwar Hasan: Asymmetric Squaring Formulae, Centre for AppliedCryptographic Research, University of Waterloo, Ontario, Canada, (3-August-2006). URL:http://www.cacr.math.uwaterloo.ca/tech_reports.html. 551, 553, 557

[105] Frederick Chyzak, Peter Paule, Otmar Scherzer, Armin Schoisswohl, Burkhard Zimmermann:The construction of orthonormal wavelets using symbolic methods and a matrix analyticalapproach for wavelets on the interval, Experimental Mathematics, vol.10, no.1, pp.67-86,(2001). 547

[106] Mathieu Ciet, Jean-Jacques Quisquater, Francesco Sica: A Short Note on IrreducibleTrinomials in Binary Fields, (2002). URL:http://www.dice.ucl.ac.be/crypto/publications/2002/poly.ps. 850

[107] Douglas W. Clark, Lih-Jyh Weng: Maximal and Near-Maximal Shift Register Sequences:Efficient Event Counters and Easy Discrete Logarithms, IEEE Transactions on Computers,vol.43, no.5, pp.560-568, (May-1994). 850

[108] Thomas Clausen: Ueber die Falle, wenn die Reihe von der Form y = 1 + α1· βγx+

α.α+11.2

· β.β+1γ.γ+1

x2+ etc. ein Quadrat von der Form z = 1 + α′

1· β′

γ′ ·δ′

ε′ x+α′.α′+1

1.2· β′.β′+1γ′.γ′+1

· δ′.δ′+1ε′.ε′+1

x2+

etc. hat, Journal fur die reine und angewandte Mathematik, vol.3, pp.89-91, (1828). URL:http://www.digizeitschriften.de/main/dms/toc/?PPN=PPN243919689_0003. 691

BIBLIOGRAPHY 937

[109] Thomas Clausen: Beitrag zur Theorie der Reihen, Journal fur die reine und angewandteMathematik, vol.3, pp.92-95, (1828). URL:http://www.digizeitschriften.de/main/dms/toc/?PPN=PPN243919689_0003. 708

[110] Henri Cohen: A Course in Computational Algebraic Number Theory, Springer-Verlag, (1993).Online errata list at http://www.ufr-mi.u-bordeaux.fr/~cohen/. 13, 636, 782, 784, 795, 804,860, 863, 883

[111] Henri Cohen, Fernando Rodriguez Villegas, Don Zagier: Convergence acceleration ofalternating series, Experimental Mathematics, vol.9, no.1, pp.3-12, (2000). URL:http://www.expmath.org/. 662

[112] Henri Cohen: Analysis of the sliding window powering method, Journal of Cryptology, vol.18,no.1, pp.63-76, (January-2005). Preprint titled “Analysis of the flexible window powering method”URL: http://www.math.u-bordeaux.fr/~cohen/. 565

[113] Stephen D. Cohen: The Explicit Construction of Irreducible Polynomials Over Finite Fields,Designs, Codes and Cryptography, vol.2, no.2, pp.169-174, (June-1992). 855

[114] Stephen A. Cook: On the minimum computation time of functions, PhD thesis, Department ofMathematics, Harvard University, (1966). URL: http://www.cs.toronto.edu/~sacook/. 551

[115] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein: Introduction toAlgorithms, MIT Press, second edition, (2001). 134, 579

[116] Richard Crandall, Barry Fagin: Discrete Weighted Transforms and Large-Integer Arithmetic,Mathematics of Computation, vol.62, no.205, pp.305-324, (January-1994). 449

[117] Richard E. Crandall, Ernst W. Mayer, Jason S. Papadopoulos: The twenty-fourth Fermatnumber is composite, Mathematics of Computation, vol.72, no.243, pp.1555-1572,(6-December-2002). 795

[118] Richard Crandall, Carl Pomerance: Prime Numbers: A Computational Perspective, secondedition, Springer-Verlag, (2005). 792, 804

[119] Reiner Creutzburg, Manfred Tasche: Parameter Determination for ComplexNumber-Theoretic Transforms Using Cyclotomic Polynomials, Mathematics of Computation,vol.52, no.185, pp.189-200, (January-1989). 808

D

[120] Ricardo Dahab, Darrel Hankerson, Fei Hu, Men Long, Julio Lopez, Alfred Menezes: SoftwareMultiplication using Normal Bases, IEEE Transactions on Computers, vol.55, pp.974-984,(2006). Online as technical report CACR 2004-12 at http://www.cacr.math.uwaterloo.ca/. 902

[121] Ivan B. Damgard, Peter Landrock, Carl Pomerance: Average case error estimates for thestrong probable prime test, Mathematics of Computation, vol.61, no.203, pp.177-194,(July-1993). 790

[122] Ivan B. Damgard, Gudmund Skovbjerg Frandsen: An extended quadratic Frobenius primalitytest with average and worst case error estimates, IEEE Transactions on Computers, vol.19,pp.783-793, (February-2003). URL: http://www.brics.dk/RS/03/9/index.html. 792

[123] Leonard Eugene Dickson: History of the Theory of Numbers, vol.I, Divisibility and Primality,Carnegie Institute of Washington, 1919, unaltered reprint of the AMS, vol.1-3, (2002). 342, 707

[124] Alfred Cardew Dixon: The elementary properties of the elliptic functions, with examples,Macmillan, (1894). URL: http://www.archive.org/details/117736039. 604

[125] Geoffrey Dixon: Division Algebras, Galois Fields, Quadratic Residues, Acta ApplicandaeMathematicae, vol.50, no.1-2, pp.111-120, (January-1998). URL:http://arxiv.org/abs/hep-th/9302113. 818

[126] Christophe Doche: Redundant Trinomials for Finite Fields of Characteristic 2, Lecture Notesin Computer Science, vol.3574, pp.122-133, (2005). URL:http://www.ics.mq.edu.au/~doche/redundant.pdf. 850

[127] R. W. Doran: The Gray Code, Journal of Universal Computer Science, vol.13, no.11,pp.1573-1597, (2007). URL: http://www.jucs.org/jucs_13_11/the_gray_code/. 44

938 BIBLIOGRAPHY

[128] Gabriele Drauschke, Manfred Tasche: Prime factorizations of values of cyclotomic polynomialsin Z[i], Archiv der Mathematik, vol.49, no.4, pp.292-300, (October-1987). 802

[129] P. Duhamel, H. Hollmann: Split radix FFT algorithm, Electronics Letters, vol.20, no.1,pp.14-16, (5-January-1984). 427

[130] Pierre Duhamel: Implementation of “split-radix” FFT algorithms for complex, real andreal-symmetric data, IEEE Transactions on Acoustics, Speech and Signal Processing, vol.34pp.285-295, (1986). 434

[131] G. Duhamel, M. Vetterli: Fast Fourier transforms: a tutorial review and a state of the art,Signal Processing, vol.19, no.4, pp.259-299, (1990). 458

[132] Richard Durstenfeld: Algorithm 235: random permutation, Communications of the ACM,vol.7, no.7, p.420, (July-1964). 111

[133] Jacques Dutka: On Square Roots and Their Representations, Archive for History of ExactSciences, vol.36, no.1, pp.21-39, (March-1986). 684

E

[134] Peter Eades, Brendan McKay: An algorithm for generating subsets of fixed size with a strongminimal change property, Information Processing Letters, vol.19, p.131-133, (19-October-1984).183

[135] H.-D. Ebbinghaus, H. Hermes, F. Hirzebruch, M. Koecher, K. Mainzer, J. Neukirch, A. Prestel,R. Remmert: Zahlen, second edition. English translation: Numbers, Springer-Verlag, (1988). 58,816, 818

[136] Karen Egiazarian, Jaako Astola: Discrete Orthogonal Transforms Based on Fibonacci-typerecursions, IEEE Digital Signal Processing Workshop Proceedings, pp.405-408, (September-1996).URL: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.3844. 513

[137] Gideon Ehrlich: Loopless Algorithms for Generating Permutations, Combinations, and OtherCombinatorial Configurations, Journal of the ACM, vol.20, no.3, pp.500-513, (July-1973). 254

[138] Doron Zeilberger (‘Shalosh B.EKHAD’): Forty “Strange” Computer-DiscoveredHypergeometric Series Evaluations, (12-October-2004). URL:http://www.math.rutgers.edu/~zeilberg/pj.html. 687

[139] Arthur Erdelyi, Wilhelm Magnus, Fritz Oberhettinger, Francesco G. Tricomi: HigherTranscendental Functions, McGraw–Hill, New York, vol.1-3, (1953). 686, 691, 693, 702, 705, 706

F

[140] Steven R. Finch: Mathematical Constants, Cambridge University Press, (2003). List of errataonline at http://algo.inria.fr/bsolve/. 692, 744

[141] N. J. Fine: Binomial Coefficients Modulo a Prime, The American Mathematical Monthly,vol.54, no.10, pp.589-592, (December-1947). 914

[142] N. J. Fine: Infinite Products for k-th Roots, The American Mathematical Monthly, vol.84, no.8.pp.629-630, (October-1977). 684

[143] Philippe Flajolet, Robert Sedgewick: Analytic Combinatorics, Cambridge University Press,(2009). URL: http://algo.inria.fr/flajolet/Publications/AnaCombi/anacombi.html. 173

[144] Agner Fog: Software optimization resources, (2010). URL: http://www.agner.org/optimize/.6

[145] K. Fong, D. Hankerson, J. Lopez, A. Menezes: Field inversion and point halving revisited,Technical Report, CORR 2003-18, Department of Combinatorics and Optimization, University ofWaterloo, Canada, (2003). URL:http://www.cacr.math.uwaterloo.ca/techreports/2003/tech_reports2003.html. 888

[146] The Free Software Foundation (FSF): GCC, the GNU Compiler Collection, version 4.2.1. URL:http://gcc.gnu.org/. 21, 922

BIBLIOGRAPHY 939

[147] The Free Software Foundation (FSF): Other built-in functions provided by GCC, section 5.47of the documentation for GCC version 4.2.1. URL:http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/Other-Builtins.html. 21

G

[148] Yves Gallot: Cyclotomic polynomials and prime numbers, Note, revised version,(5-January-2001). URL: http://perso.wanadoo.fr/yves.gallot/papers/cyclotomic.html802

[149] Shuhong Gao: Normal Bases over Finite Fields, PhD thesis, University of Waterloo, Ontario,Canada, (1993). URL: http://www.math.clemson.edu/~sgao/pub.html. 807, 855

[150] Shuhong Gao, Daniel Panario: Tests and Constructions of Irreducible polynomials over FiniteFields, In: F. Cucker, M. Shub, (eds.): Foundations of Computational Mathematics,Springer-Verlag, pp.346-361, (1997). URL: http://www.math.clemson.edu/~sgao/pub.html.839

[151] Frank Garvan: Cubic modular identities of Ramanujan, hypergeometric functions andanalogues of the arithmetic-geometric mean iteration, Contemporary Mathematics, vol.166,pp.245-264, (1993). URL: http://www.math.ufl.edu/~frank/publist.html. 611

[152] Frank Garvan: Ramanujan’s theories of elliptic functions to alternative bases – a symbolicexcursion, J. Symbolic Computation, vol.20, no.5-6, pp.517-536, (1995). Revised16-December-2005 edition URL: http://www.math.ufl.edu/~frank/publist.html. 614

[153] Joachim von zur Gathen, Victor Shoup: Computing Frobenius maps and factoringpolynomials, Computational Complexity, vol.2, pp.187-224, (1992). URL:http://www.shoup.net/papers/. 896

[154] Joachim von zur Gathen, Jurgen Gerhard: Modern Computer Algebra, Cambridge UniversityPress, second edition, (2003). List of errata URL: http://www-math.upb.de/mca/. 704, 804, 863

[155] Pierrick Gaudry, Alexander Kruppa, Paul Zimmermann: A GMP-based implementation ofSchonhage-Strassen’s large integer multiplication algorithm, Proceedings of the 2007International Symposium on Symbolic and Algebraic Computation (ISSAC’07), Waterloo,Ontario, Canada, pp.167-174, (2007). URL:http://portal.acm.org/citation.cfm?id=1277548.1277572 andhttp://www.loria.fr/~gaudry/publis/issac07.pdf. 561

[156] Willi Geiselmann, Dieter Gollmann: Self-dual bases in Fqn , Designs, Codes and Cryptography,vol.3, pp.333-345, (1993). 910

[157] S. Georgiou, C. Koukouvinos, J. Seberry: Hadamard matrices, orthogonal designs andconstruction algorithms, in: Designs 2002: Further Combinatorial and Constructive DesignTheory, Kluwer Academic Publishers, Norwell, Massachusetts, pp.133-205, (2002). URL:http://works.bepress.com/jseberry/75/. 390

[158] (GMP developers): GNU MP: The GNU Multiple Precision Arithmetic Library, ver.4.3.0,(14-April-2009). URL: http://gmplib.org/. 681

[159] Solomon W. Golomb: Cyclotomic Polynomials and Factorization Theorems, The AmericanMathematical Monthly, vol.85, no.9, pp.734-737, (November-1978). 802

[160] Daniel M. Gordon: A survey of fast exponentiation methods, Journal of Algorithms, vol.27,no.1, pp.129-146, (1998). URL: http://www.ccrwest.org/gordon/jalg.pdf. 565

[161] J. A. Gordon: Very simple method to find the minimum [sic] polynomial of an arbitrarynonzero element of a finite field, Electronics Letters, vol.12, no.25, pp.663-664,(9-December-1976). 894

[162] Mark Goresky, Andrew Klapper: Fibonacci and Galois Representations of Feedback withCarry Shift Registers, IEEE Transactions on Information Theory, vol.48, no.11, pp.2826-2836,(November-2002). URL: http://www.math.ias.edu/~goresky/. 877

940 BIBLIOGRAPHY

[163] Edouard Goursat: Sur l’equation differentielle lineaire, qui admet pour integrale la serie

hypergeometrique, Annales scientifiques de l’Ecole Normale Superieure, Ser.2, vol.10, pp.3-142(supplement), (1881). URL: http://www.numdam.org/item?id=ASENS_1881_2_10__S3_0. 691

[164] Edouard Goursat: Memoire sur les fonctions hypergeometriques d’ordre superieur (seconde

partie), Annales scientifiques de l’Ecole Normale Superieure, Ser.2, vol.12, pp.395-430, (1883).URL: http://www.numdam.org/item?id=ASENS_1883_2_12__395_0. 692

[165] Johannes Grabmeier, Alfred Scheerhorn: Finite Fields in AXIOM, AXIOM Technical Reportno.ATR/5, (1992). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.46.7813. 904

[166] R. L. Graham, D. E. Knuth, O. Patashnik: Concrete Mathematics, second printing,Addison-Wesley, New York, (1988). 173, 277, 278, 331, 686, 689, 725, 754

[167] R. L. Graham, M. Grotschel, L. Lovasz (eds.): Handbook of combinatorics, Elsevier, (1995). 173

[168] Torbjorn Granlund, Peter L. Montgomery: Division by Invariant Integers using Multiplication,SIGPLAN Notices, vol.29, pp.61-72, (June-1994). URL: http://gmplib.org/~tege/. 3

[169] Torbjorn Granlund: Instruction latencies and throughput for AMD and Intel x86 processors,(18-November-2009). URL: http://gmplib.org/~tege/x86-timing.pdf. 922

[170] Andrew Granville: It is easy to determine whether a given integer is prime, Bulletin of theAmerican Mathematical Society, vol.42, no.1, pp.3-38, (2005). URL:http://www.ams.org/journals/bull/2005-42-01/. 804

[171] David Gries, Jinyun Xue: Generating a random cyclic permutation, BIT NumericalMathematics, vol.28, no.3, pp.569-572, (September-1988). 112

[172] S. Gudvangen: Practical Applications of Number Theoretic Transforms, NORSIG-99,Norwegian Signal Processing Symposium, (1999). URL:http://www.ux.uis.no/norsig/norsig99/Articles/gudvangen.pdf. 542

[173] Jesus Guillera: Easy Proofs of Some Borwein Algorithms for π, arXiv:0803.0991v1 [math.NT],(7-March-2008). URL: http://arxiv.org/abs/0803.0991v1. 616

H

[174] Bruno Haible: CLN, a class library for numbers, (1996). URL: http://www.ginac.de/CLN/.656

[175] Bruno Haible, Thomas Papanikolaou: Fast multiprecision evaluation of series of rationalnumbers, Technical Report, no. TI-7/97, (18-March-1997). URL:http://www.informatik.th-darmstadt.de/TI/Veroeffentlichung/TR/Welcome.html. 655

[176] G. H. Hardy, E. M. Wright: An Introduction to the Theory of Numbers, Oxford UniversityPress, fifth edition, (1979). 346, 347, 707

[177] R. V. L. Hartley: A More Symmetrical Fourier Analysis Applied to Transmission Problems,Proceedings of the IRE, vol.30, pp.144-150, (March-1942). 515

[178] B. R. Heap: Permutations by Interchanges, The Computer Journal, vol.6, pp.293-294, (1963).URL: http://comjnl.oxfordjournals.org/cgi/content/abstract/6/3/293. 249

[179] Gerben J. Hekstra, Ed F. A. Deprettere: Floating Point Cordic (extended version), TechnicalReport ET/NT 93.15, Delft University of Technology, (8-March-1993). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.7269. 650

[180] Nicholas J. Higham: The Matrix Sign Decomposition and its Relation to the PolarDecomposition, Linear Algebra and its Applications, 212-213, pp.3-20, (1994). URL:http://www.maths.manchester.ac.uk/~higham/papers/matrix-functions.php. 579

[181] Nicholas J. Higham: Stable Iterations for the Matrix Square Root, Numerical Algorithms,vol.15, no.2, pp.227-242, (1997). URL:http://www.maths.manchester.ac.uk/~higham/papers/matrix-functions.php. 579

BIBLIOGRAPHY 941

[182] David Hilbert: Ueber die stetige Abbildung einer Linie auf ein Flachenstuck, MathematischeAnnalen, vol.38, pp.459-460, (1891). 83

[183] Charles A. R. Hoare: Quicksort, The Computer Journal, vol.5, no.1, pp.10-16, (1962). URL:http://comjnl.oxfordjournals.org/cgi/content/abstract/5/1/10. 135

[184] Christian W. Hoffmann: π und das arithmetisch-geometrische Mittel, Swiss Federal ResearchInstitute WSL, (9-April-2002). URL: http://www.wsl.ch/staff/christian.hoffmann/pi.pdf.620

[185] Alston S. Householder: Polynomial Iterations to Roots of Algebraic Equations, Proceedings ofthe American Mathematical Society, vol.2, no.5, pp.718-719, (October-1951). 586

[186] Alston S. Householder: The Numerical Treatment of a Single Nonlinear Equation,McGraw-Hill, (1970). 587, 588, 589, 592, 593, 598

[187] Thomas D. Howell, Jean-Claude Lafon: The Complexity of the Quaternion Product, TechnicalReport TR-75-245, Department of Computer Science, Cornell University, Ithaca, NY,(June-1975). URL: http://home.pipeline.com/~hbaker1/. 818

[188] Glenn Hurlbert, Garth Isaak: On the de Bruijn Torus problem, Journal of CombinatorialTheory, Series A, vol.64, no.1, pp.50-62, (September-1993). URL:http://math.la.asu.edu/~hurlbert/papers/DBTP.pdf. 875

I J

[189] F. M. Ives: Permutation enumeration: four new permutation algorithms, Communications ofthe ACM, vol.19, no.2, pp.68-72, (February-1976). 270

[190] Michael J. Jacobson, Hugh C. Williams: Solving the Pell equation, Springer-Verlag, (2009). 815

[191] Gerhard Jaeschke: On strong pseudoprimes to several bases, Mathematics of Computation,vol.61, no.204, pp.915-926, (October-1993). 789

[192] T. A. Jenkyns: Loopless Gray Code Algorithms, Technical Report CS-95-03, Brock University,Canada, (July-1995). URL: http://www.cosc.brocku.ca/Department/Research/TR/cs9503.ps.206, 214

[193] Selmer M. Johnson: Generation of permutations by adjacent transposition, Mathematics ofComputation, vol.17, no.83, pp.282-285, (July-1963). 254

[194] W. P. Johnson: How Cauchy Missed Ramanujan’s 1ψ1 Summation, American MathematicalMonthly, vol.111, no.9, pp.791-800, (November-2004). 344

[195] Dieter Jungnickel, Alfred J. Menezes, Scott A. Vanstone: On the Number of Self-Dual Bases ofGF(qm) Over GF(q), Proceedings of the American Mathematical Society, vol.109, no.1, pp.23-29,(May-1990). URL: http://www.math.uwaterloo.ca/~ajmenezes/publications/sdb.pdf. 909

K

[196] Bahman Kalantari, Jurgen Gerlach: Newton’s Method and Generation of a DeterminantalFamily of Iteration Functions, Technical Report DCS-TR 371, Dept. of Computer Science,Rutgers University, New Brunswick, NJ, (1998). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.55.2629. 592

[197] Bahman Kalantari, Y. Yin: On Extraneous Fixed-Points of the Basic Family of IterationFunctions, BIT Numerical Mathematics, vol.43, no.2, pp.453-458, (June-2003). 593

[198] Dan Kalman: A Singularly Valuable Decomposition: The SVD of a Matrix, preprint, CollegeMath Journal, vol.27, no.1, (January-1996). URL: http://www.american.edu/academic.depts/cas/mathstat/People/kalman/pdffiles/index.html.581

[199] K. Karamanos: From symbolic dynamics to a digital approach, International Journal ofBifurcation and Chaos, vol.11, no.6, pp.1683-1694, (2001). 735

942 BIBLIOGRAPHY

[200] Anatoly A. Karatsuba, Y. Ofman: Multiplication of multidigit numbers on automata, SovietPhysics Doklady, vol.7, no.7, pp.595-596, (January-1963). Translated from Doklady AkademiiNauk SSSR, vol.145, no.2, pp.293-294, (July-1962). 550

[201] Richard Kaye: A Gray Code For Set Partitions, Information Processing Letters, vol.5, no.6,pp.171-173, (December-1976). URL: http://www.kaye.to/rick/. 357

[202] Wilfried Keller: Fermat factoring status, (prime factors k · 2n+ 1 of Fermat numbers Fm andcomplete factoring status). URL: http://www.prothsearch.net/fermat.html. 796

[203] Adalbert Kerber: A matrix of combinatorial numbers related to the symmetric groups,Discrete Mathematics, vol.21, no.3, pp.319-321, (1978). 368

[204] Yong Sup Kim, Arjun K. Rathie: A generalization of Preece’s identity, Communications of theKorean Mathematical Society, vol.14, no.1, pp.217-222, (1999). URL:http://www.mathnet.or.kr/mathnet/kms_tex/64609.pdf. 693

[205] Andrew King: Generating Indecomposable Permutations, Discrete Mathematics, vol.306, no.5,pp.508-518, (2006). 281

[206] Louis V. King: On the Direct Numerical Calculation of Elliptic Functions and Integrals,Cambridge University Press, (1924). URL:http://www.archive.org/details/ondirectnumerica00kinguoft.606, 615, 627

[207] V. Kislenkov, V. Mitrofanov, E. Zima: How fast can we compute products?, in ISSAC:Proceedings of the ACM SIGSAM International Symposium on Symbolic and AlgebraicComputation, (1999). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.27.9121. 565

[208] Andrew Klapper, Mark Goresky: Feedback Shift Registers, 2-Adic Span and Combiners WithMemory, Journal of Cryptology, vol.10, pp.111-147, (1997). URL:http://www.math.ias.edu/~goresky/EngPubl.html. 58, 878

[209] Konrad Knopp: Theorie und Anwendung der unendlichen Reihen, fifth edition,Springer-Verlag, (1964). URL:http://gdz.sub.uni-goettingen.de/no_cache/dms/load/img/?IDDOC=264078. Englishtranslation: Theory And Application Of Infinite Series, (1954). URL:http://www.archive.org/details/theoryandapplica031692mbp. 709, 712

[210] Donald E. Knuth: Structured programming with go to statements, ACM Computing Surveys,vol.6, no.4, (December-1974). 147

[211] Donald E. Knuth: Efficient representation of perm groups, Combinatorica, vol.11, no.1,pp.33-44, (1991). URL: http://www-cs-staff.stanford.edu/~knuth/. 323

[212] Donald E. Knuth: The Art of Computer Programming, third edition, Volume 1: FundamentalAlgorithms, Addison-Wesley, (1997). Online errata list athttp://www-cs-staff.stanford.edu/~knuth/. 644

[213] Donald E. Knuth: The Art of Computer Programming, third edition, Volume 2: SeminumericalAlgorithms, Addison-Wesley, (1997). Online errata list athttp://www-cs-staff.stanford.edu/~knuth/. 58, 60, 111, 560, 565, 589, 595, 768, 860

[214] Donald E. Knuth: The Art of Computer Programming, second edition, Volume 3: Sorting andSearching, Addison-Wesley, (1997). Online errata list athttp://www-cs-staff.stanford.edu/~knuth/. 134, 708, 709

[215] Donald E. Knuth: The Art of Computer Programming, pre-fascicles for Volume 4. URL:http://www-cs-staff.stanford.edu/~knuth/. 16, 18, 55, 80, 183, 191, 222, 224, 257, 266, 278,343, 874

[216] Wolfram Koepf: Orthogonal Polynomials and Computer Algebra, In: R. P. Gilbert et al.,(eds.): Recent Developments in Complex Analysis and Computer Algebra, Kluwer, pp.205-234,(1999). URL: http://www.mathematik.uni-kassel.de/~koepf/Publikationen/index.html.612

[217] Kenji Koike, Hironori Shiga: A three terms Arithmetic-Geometric mean, Journal of NumberTheory, vol.124, pp.123-141, (2007). 611

BIBLIOGRAPHY 943

[218] D. Kolba, T. Parks: A prime factor FFT algorithm using high-speed convolution, IEEETransactions on Acoustics, Speech and Signal Processing, vol.25, no.4, pp.281-294, (August-1977).458

[219] Richard B. Kreckel: decimal(γ) ≈ 0.57721566[0− 9]{1001262760}39288477, online note,(19-January-2008). URL:http://www.ginac.de/~kreckel/news.html#EulerConstantOneBillionDigits. 656

[220] Donald L. Kreher, Douglas R. Stinson.: Combinatorial algorithms: generation, enumeration,and search, CRC Press, (1998). 391

[221] Ramanujachary Kumanduri, Cristina Romero: Number theory with computer applications,Prentice-Hall, (1998). 718, 784, 787, 812

[222] Ernst Eduard Kummer: Uber die hypergeometrische Reihe y = 1 + α.β1.γ

x+ α(α+1)β(β+1)1.2.γ(γ+1)

x2+α(α+1)(α+2)β(β+1)(β+2)

1.2.3.γ(γ+1)(γ+2)x3+ . . ., Journal fur die reine und angewandte Mathematik, vol.15, pp.39-83

and pp.127-172, (1863). URL:http://www.digizeitschriften.de/resolveppn/GDZPPN00214056X andhttp://www.digizeitschriften.de/resolveppn/GDZPPN002140616. 602, 691, 700, 701

L

[223] Clement W. H. Lam, Leonard H. Soicher: Three new combination algorithms with the minimalchange property, Communications of the ACM, vol.25, no.8, pp.555-559, (August-1982). 183

[224] Susan Landau, Neil Immermann: The Similarities (and Differences) between Polynomials andIntegers, International Conference on Number Theoretic and Algebraic Methods in ComputerScience (1993), pp.57-59, version of (8-August-1996). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.42.7692. 560

[225] Glen G. Langdon, Jr.: An algorithm for generating permutations, Communications of theACM, vol.10, no.5, pp.298-299, (May-1967). 266

[226] D. H. Lehmer: On arccotangent relations for π, American Mathematical Monthly, vol.45,pp.657-664, (1938). 638

[227] D. H. Lehmer: Interesting series involving the central binomial coefficient, AmericanMathematical Monthly, vol.92, no.7, pp.449-457, (1985). 338

[228] Charles E. Leiserson, Harald Prokop, Keith H. Randall: Using de Bruijn Sequences to Index a1 in a Computer Word, MIT Lab for Computer Science, Cambridge, MA, (June-1998). URL:http://supertech.csail.mit.edu/papers.html. 14

[229] Abraham Lempel, Marcelo J. Weinberger: Self-complementary normal bases in finite fields,SIAM Journal on Discrete Mathematics, vol.1, no.2, pp.193-198, (May-1988). 910

[230] Arjen K. Lenstra: Integer Factoring, Designs, Codes and Cryptogaphy, vol.19, pp.101-128,(2000). URL: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.93.5587. 804

[231] H. W. Lenstra, Jr., R. J. Schoof: Primitive Normal Bases for Finite Fields, Mathematics ofComputation, vol.48, no.177, pp.217-231, (January-1987). 904

[232] Qun Ying Liao, Qi Sun: Normal bases and their dual-bases over finite fields, ActaMathematica Sinica, English Series, vol.22, no.3, pp.845-848, (May-2006). 910

[233] Rudolf Lidl, Harald Niederreiter: Introduction to finite fields and their applications,Cambridge University Press, revised edition, (1994). 842

[234] J. H. van Lint, R. M. Wilson: A Course in Combinatorics, Cambridge University Press, (1992).390, 874

[235] W. Lipski, Jr.: More on permutation generation methods, Computing, vol.23, no.4,pp.357-365, (December-1979). 250

[236] Charles Van Loan: Computational Frameworks for the Fast Fourier Transform, SIAM, (1992).465

944 BIBLIOGRAPHY

[237] Daniel Loebenberger: A Simple Derivation for the Frobenius Pseudoprime Test, CryptologyePrint Archive, entry 2008/124, (17-March-2008). URL:http://eprint.iacr.org/2008/124.pdf. 792

[238] Lisa Lorentzen, Haakon Waadeland: Continued Fractions and Applications, North-Holland,(1992). 624, 725

[239] Ya Yan Lu: Computing the Logarithm of a Symmetric Positive Definite Matrix, AppliedNumerical Mathematics: Transactions of IMACS, vol.26, no.4, pp.483-496, (1998). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.37.759. 624

M

[240] Robert S. Maier: A generalization of Euler’s hypergeometric transform,arXiv:math/0302084v4 [math.CA], (14-March-2006). URL:http://arxiv.org/abs/math.CA/0302084. 689, 691

[241] Robert S. Maier: Algebraic hypergeometric transformations of modular origin,arXiv:math/0501425v3 [math.NT], (24-March-2006). URL:http://arxiv.org/abs/math.NT/0501425. 611, 614

[242] Robert S. Maier: On rationally parametrized modular equations, arXiv:math.NT/0611041v4,(7-July-2008). 614

[243] Robert S. Maier: P-symbols, Heun identities, and 3F2 identities, arXiv:0712.4299v2 [math.CA],(30-December-2007). URL: http://arxiv.org/abs/0712.4299. 689

[244] Kei Makita, Yasuyuki Nogami, Tatsuo Sugimura: Generating prime degree irreduciblepolynomials by using irreducible all-one polynomial over F2, Electronics and Communicationsin Japan (Part III: Fundamental Electronic Science), vol.88, no.7, pp.23-32, (2005). 847

[245] Conrado Martınez, Alois Panholzer, Helmut Prodinger: Generating random derangements,Proceedings of the 10th ACM-SIAM Workshop on Algorithm Engineering and Experiments(ALENEX) and the 5th ACM-SIAM Workshop on Analytic Algorithmics and Combinatorics(ANALCO), pp.234-240, (2008). URL:http://www.siam.org/proceedings/analco/2008/analco08.php. 117

[246] Keith Matthews: Solving Ax2 −By2 = N in integers, where A > 0, B > 0 and D = AB is not aperfect square and gcd(A,B) = gcd(A,N) = 1, online note, (13-September-2007). URL:http://www.numbertheory.org/notes.html. 813

[247] M. D. McIlroy: A Killer Adversary for Quicksort, Software Practice and Experience, vol.29,p.1-4, (1999). 136

[248] James Mc Laughlin, Andrew V. Sills, Peter Zimmer: Rogers-Ramanujan-Slater TypeIdentities, The Electronic Journal of Combinatorics, dynamic survey no.15, (2008). URL:http://www.combinatorics.org/Surveys/index.html. 344

[249] K. R. McLean: Divisibility Properties of Binomial Coefficients, The Mathematical Gazette,vol.58, no.403, pp.17-24, (March-1974). 914

[250] A. Menezes, P. van Oorschot, S. Vanstone: Handbook of Applied Cryptography, CRC Press,(1996). URL: http://www.cacr.math.uwaterloo.ca/hac/. 766

[251] Helmut Meyn, Werner Gotz: Self-reciprocal Polynomials Over Finite Fields, SeminaireLotharingien de Combinatoire, B21d, (1989). URL: http://www.emis.de/journals/SLC/. 847

[252] Peter L. Montgomery: Modular Multiplication Without Trial Division, Mathematics ofComputation, vol.44, no.170, pp.519-521, (April-1985). 766

[253] Peter L. Montgomery: A Survey of Modern Integer Factorization Algorithms, CWI Quarterly,vol.7, no.4, pp.337-365, (1994). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.32.2831. 804

[254] Eduardo Moreno: De Bruijn graphs and sequences in languages with restrictions, PhD thesis,Universidad de Chile, (May-2005). URL: http://emoreno.uai.cl/Publications.html. 875

[255] James A. Muir, Douglas R. Stinson: Minimality and Other Properties of the Width-wNonadjacent Form, Technical report CORR 2004-08, Centre for Applied Cryptographic Research

BIBLIOGRAPHY 945

(CACR) at the University of Waterloo, Canada, (2004). URL:http://www.cacr.math.uwaterloo.ca/techreports/2004/tech_reports2004.html. 62

[256] Jean-Michel Muller: Elementary Functions: algorithms and implementation, Birkhauser,(1997). 642, 650

[257] David R. Musser: Introspective Sorting and Selection Algorithms, Software Practice andExperience, vol.8, pp.983-993, (1997). 136

[258] Wendy Myrvold, Frank Ruskey: Ranking and unranking permutations in linear time,Information Processing Letters, vol.79, pp.281-284, (2001). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 239

N O

[259] Eugen Netto: Lehrbuch der Combinatorik, Teubner Verlag, (1901). URL:http://www.archive.org/details/lehrbuchdercomb00nettgoog. 267

[260] Harald Niederreiter: An enumeration formula for certain irreducible polynomials with anapplication to the construction of irreducible polynomials over the binary field, ApplicableAlgebra in Engineering, Communication and Computing, vol.1, no.2, pp.119-124(September-1990). 855

[261] Albert Nijenhuis, Herbert S. Wilf: Combinatorial Algorithms for Computers and Calculators,Academic Press, second edition, (1978). URL:http://www.math.upenn.edu/~wilf/website/CombAlgDownld.html. 354

[262] Henri J. Nussbaumer: Fast Fourier Transform and Convolution Algorithms, second edition,Springer-Verlag, (1982) (out of print). 451

[263] Carl Douglas Olds: Continued Fractions, Random House (1963), republished as vol.9 of the NewMathematics Library, the Mathematical Association of America, (1977) (out of print). 725, 812

[264] Michael Orchard: Fast bit-reversal algorithms based on index representations in GF(2n),IEEE International Symposium on Circuits and Systems, (1989), vol.3, pp.1903-1906, (1989). 873

P

[265] Igor Pak: Partition Bijections, a Survey, Ramanujan Journal, vol.12, pp.5-75, (2006). URL:http://www.math.umn.edu/~pak/research.htm. 349

[266] The PARI Group (PARI): PARI/GP, version 2.3.5, (5-February-2010). URL:http://pari.math.u-bordeaux.fr/. 923

[267] Michael S. Paterson, Larry J. Stockmeyer: On the number of nonscalar multiplicationsnecessary to evaluate polynomials, SIAM Journal on Computing, vol.2, no.1, pp.60-66,(March-1973). 658

[268] Peter Paule: On identities of the Rogers-Ramanujan type, Journal of Mathematical Analysisand Applications, vol.107, no.1, pp.255-284, (April-1985). 347

[269] W. H. Payne, F. M. Ives: Combination Generators, ACM Transactions on MathematicalSoftware (TOMS), vol.5, no.2, pp.163-172, (June-1979). 183

[270] Richard G. E. Pinch: Some primality testing algorithms, AMS Notices, vol.40, no.9,pp.1203-1210, (November-1993). Corrected version URL:http://www.chalcedon.demon.co.uk/rgep/publish.html#42. 804

[271] J. M. Pollard: The Fast Fourier Transform in a Finite Field, Mathematics of Computation,vol.25, no.114, pp.365-374, (April-1971). 542

[272] Carl Pomerance, J. L. Selfridge, S. Wagstaff, Jr.: The Pseudoprimes to 25 · 109. Mathematics ofComputation, vol.35, no.151, pp.1003-1026, (July-1980). 789, 801

[273] Peter John Potts: Computable Real Arithmetic Using Linear Fractional Transformations,Report, Department of Computing, Imperial College of Science, Technology and Medicine,London, (June-1996). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.24.7373. 687, 691

946 BIBLIOGRAPHY

[274] A. D. Poularikas: The Transforms and applications handbook, second edition, CRC Press,(2000). 456

[275] Helmut Prodinger: On Binary Representations of Integers with Digits -1, 0, +1, INTEGERS:The Electronic Journal of Combinatorial Number Theory, vol.0, (14-June-2000). URL:http://www.integers-ejcnt.org/vol0.html. 62

Q R

[276] Michael O. Rabin: Probabilistic algorithms in finite fields, Technical Report MIT-LCS-TR-213,Massachusetts Institute of Technology, (January-1979). URL:http://publications.csail.mit.edu/. 838

[277] Charles M. Rader: Discrete Fourier Transforms When the Number of Data Samples isPrime, Proceedings of the IEEE, vol.56, iss.6, pp.1107-1108, (June-1968). 458

[278] Janusz Rajski, Jerzy Tyszer: Primitive Polynomials Over GF(2) of Degree up to 660 withUniformly Distributed Coefficients, Journal of Electronic Testing: Theory and Applications,vol.19, pp.645-657, (2003). 853

[279] David Rasmussen, Carla D. Savage, Douglas B. West: Gray code enumeration of families ofinteger partitions, Journal of Combinatorial Theory, Series A, vol.70, no.2, pp.201-229, (1995).URL: http://www.csc.ncsu.edu/faculty/savage/papers.html. 343

[280] I. S. Reed, T. K. Truong: The use of finite fields to compute convolutions, IEEE Transactionson Information Theory, vol.21, no.2, pp.208-213, (March-1975). 808

[281] I. S. Reed, T. K. Truong, R. L. Miller: A new algorithm for computing primitive elements inthe field of Gaussian complex integers modulo a Mersenne prime, IEEE Transactions onAcoustics, Speech, and Signal Processing, vol.27, no.5, pp.561-563, (October-1979). 808

[282] Phillip A. Regalia, Sanjit K. Mitra: Kronecker Products, Unitary Matrices and SignalProcessing Applications, SIAM Review, vol.31, no.4, pp.586-613, (December-1989). 465

[283] Paulo Ribenboim: The Little Book of Bigger Primes, second Edition, Springer-Verlag, (2004).804

[284] Hans Riesel: Prime Numbers and Computer Methods for Factorization, Birkhauser, (1985).799, 804

[285] Kenneth H. Rosen, John G. Michaels, Jonathan L. Gross, Jerrold W. Grossman, Douglas R. Shier(eds.): Handbook of Discrete and Combinatorial Mathematics, CRC Press, (2000). 707

[286] Gian-Carlo Rota: On the foundations of combinatorial theory I. Theory of MobiusFunctions, Probability Theory and Related Fields, vol.2, no.4, pp.340-368, (January-1964). 707

[287] Frank Ruskey, Carla Savage, Terry MinYih Wang: Generating Necklaces, Journal of Algorithms,vol.13, pp.414-430, (1992). 377

[288] Frank Ruskey: Simple combinatorial Gray codes constructed by reversing sublists, LectureNotes in Computer Science, vol.762, pp.201-208, (1993). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 363

[289] Frank Ruskey, Joe Sawada: An Efficient Algorithm for Generating Necklaces with FixedDensity, SIAM Journal on Computing, vol.29, no.2, pp.671-684, (1999). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 383

[290] Frank Ruskey, Joe Sawada: Generating Necklaces and Strings with Forbidden Substrings,Lecture Notes in Computer Science, vol.1858, pp.330-339, (July-2000). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 383

[291] Frank Ruskey, Aaron Williams: Generating combinations by prefix shifts, Lecture Notes inComputer Science, vol.3595, pp.570-576, (2005). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 180

[292] Frank Ruskey, Aaron Williams: Generating Balanced Parentheses and Binary Trees by PrefixShifts, CATS 2008, Computing: The Australasian Theory Symposium, Wollongong, Australia,(2008). URL: http://www.cs.uvic.ca/~ruskey/Publications/. 330

BIBLIOGRAPHY 947

[293] Frank Ruskey, Aaron Williams: An explicit universal cycle for the (n− 1)-permutations of ann-set, ACM Transactions on Algorithms, (2008). URL:http://www.cs.uvic.ca/~ruskey/Publications/. 875

S

[294] Eugene Salamin: Computation of π Using Arithmetic-Geometric Mean, Mathematics ofComputation, vol.30, no.135, pp.565-570, (July-1976). 615

[295] Eugene Salamin: Application of Quaternions to Computation with Rotations, Working Paper,Stanford AI Lab, (1979). Edited and TeX-formatted by Henry G. Baker, (1995). URL:http://home.pipeline.com/~hbaker1/. 576

[296] Sandra Sattolo: An algorithm to generate a random cyclic permutation, InformationProcessing Letters, vol.22, no.6, pp.315-317, (1986). 112

[297] Carla Savage: Generating Permutations with k-Differences, SIAM Journal on DiscreteMathematics, vol.4, no.4, pp.561-573, (November-1990). 266

[298] Carla Savage: A Survey of Combinatorial Gray Codes, SIAM Review, vol.39, no.4, pp.605-629,(December-1997). URL: http://www.csc.ncsu.edu/faculty/savage/papers.html. 172, 264

[299] Joe Sawada: Generating Bracelets in Constant Amortized Time, SIAM Journal onComputing, vol.31, no.1, pp.259-268, (2001). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.6949. 371

[300] Joe Sawada: A fast algorithm to generate necklaces with fixed content, Theoretical ComputerScience, vol.301, no.1-3, pp.477-489, (May-2003). 383

[301] Fred Schneider, Keith Strickland: Planet Claire, in: The B52’s, (1979). 20

[302] Arnold Schonhage, Volker Strassen: Schnelle Multiplikation grosser Zahlen, Computing, vol.7,no.3-4, pp.281-292, (September-1971). 560

[303] Arnold Schonhage: Schnelle Multiplikation von Polynomen uber Korpern der Charakteristik2, Acta Informatica, vol.7, no.4, pp.395-398, (December-1977). 832, 896

[304] Ernst Schroder: Ueber unendlich viele Algorithmen zur Auflosung der Gleichungen,Mathematische Annalen, vol.2, no.2, (June-1870). English translation: On Infinitely ManyAlgorithms for Solving Equations, URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.22.1497. 588, 589

[305] Robert Sedgewick: Permutation Generation Methods, ACM Computing Surveys (CSUR), vol.9,no.2, pp.137-164, (June-1977). URL: http://www.princeton.edu/~rblee/ELE572Papers/. 250

[306] Robert Sedgewick: Algorithms in C++. Parts 1-4: Fundamentals, Data Structures, Sorting,Searching, third edition, Addison-Wesley, (1998). 134, 138

[307] Robert Sedgewick: Algorithms in C++. Part 5: Graph Algorithms, third edition,Addison-Wesley, (2001). 391

[308] Victor Shoup: A New Polynomial Factorization Algorithm and its Implementation, Journal ofSymbolic Computation, vol.20, pp.363-397, (1995). URL: http://www.shoup.net/papers/. 863

[309] Victor Shoup: A Computational Introduction to Number Theory and Algebra, CambridgeUniversity Press, (2005). Updated version URL: http://www.shoup.net/papers/. 784

[310] Andrew V. Sills: Finite Rogers-Ramanujan Type Identities, The Electronic Journal ofCombinatorics, vol.10, (2003). URL:http://www.combinatorics.org/Volume_10/v10i1toc.html. 349

[311] Lucy Joan Slater: Further Identities of the Rogers-Ramanujan Type, Proceedings of theLondon Mathematical Society, Series 2, vol.s2-54, no.2, pp.147-167, (1952). 347

[312] N. J. A. Sloane: The On-Line Encyclopedia of Integer Sequences, (2009). URL:http://oeis.org/classic/?blank=1. xii, 9, 10, 44, 45, 53, 59, 60, 62, 71, 72, 73, 74, 78, 88, 90,95, 99, 100, 119, 129, 151, 248, 257, 277, 279, 280, 281, 282, 309, 312, 314, 315, 318, 320, 321, 322,331, 337, 345, 346, 347, 348, 349, 350, 351, 352, 353, 358, 360, 366, 368, 369, 373, 380, 383, 389,390, 408, 493, 610, 627, 649, 703, 706, 708, 710, 726, 727, 728, 729, 730, 731, 732, 733, 735, 739,

948 BIBLIOGRAPHY

740, 742, 744, 745, 750, 753, 754, 755, 756, 758, 759, 776, 780, 784, 786, 788, 789, 797, 802, 813,817, 820, 840, 843, 848, 849, 850, 851, 853, 855, 874, 878, 885, 904, 909, 912, 914

[313] N. J. A. Sloane: A Library of Hadamard Matrices, online document, (2008). URL:http://www.research.att.com/~njas/hadamard/index.html. 390

[314] David M. Smith: Efficient multiple precision evaluation of elementary functions, Mathematicsof Computation, vol.52, pp.131-134, (1989). 658

[315] Jerome A. Solinas: Generalized Mersenne Numbers, Technical report CORR 99-39, Universityof Waterloo, Canada, (1999). URL: http://www.cacr.math.uwaterloo.ca/. 768

[316] Hong-Yeop Song: Examples and Constructions of Hadamard Matrices, Dept. of Electrical andElectronics Engineering, Yonsei University, Korea, (June-2002). URL:http://calliope.uwaterloo.ca/~ggong/710T4/Song-lecture.ps. 390

[317] H. Sorensen, D. Jones, C. Burrus, M. Heideman: On computing the discrete Hartleytransform, IEEE Trans. on Acoustics, Speech and Signal Processing, vol.33, no.5, pp.1231-1238,(October-1985). 524

[318] Henrik V. Sorensen, Douglas L. Jones, Michael T. Heideman, C. Sidney Burrus: Real-ValuedFast Fourier Transform Algorithms, IEEE Transactions on Acoustics, Speech and SignalProcessing, vol.35, no.6, pp.849-863, (June-1987). 434

[319] Richard P. Stanley: Enumerative combinatorics, Cambridge University Press, vol.1, (1997),vol.2, (1999). List of errata at http://math.mit.edu/~rstan/ec/. 173, 323

[320] Richard P. Stanley: Exercises on Catalan and Related Numbers, online note, (23-June-1998).URL: http://www-math.mit.edu/~rstan/ec/. 323

[321] Richard P. Stanley: Catalan Addendum, online note, (5-May-2010). URL:http://www-math.mit.edu/~rstan/ec/. 323

[322] Damien Stehle, Paul Zimmermann: A Binary Recursive Gcd Algorithm, INRIA research reportRR-5050, (December-2003). 768

[323] William Stein: Elementary Number Theory, Springer-Verlag, (November-2008). URL:http://wstein.org/ent/. 784

[324] Ralf Stephan: Divide-and-conquer generating functions. Part I. Elementary sequences,arXiv:math/0307027v1 [math.CO], (2003). URL: http://arxiv.org/abs/math.CO/0307027. 740

[325] Paul K. Stockmeyer: The Tower of Hanoi: A Bibliography, online note, (2005). URL:http://www.cs.wm.edu/~pkstoc/h_papers.html. 737

[326] Carl Størmer: Sur l’application de la theorie des nombres entiers complexes a la solution ennombres rationnels x1 x2 . . . xn c1 c2 . . . cn k de l’equation: c1 arc tg x1 + c2 arc tg x2 + . . . +cn arc tg xn = k π

4, Archiv for Mathematik og Naturvidenskab, B.XIX, Nr.3, (vol.19, no.3),

pp.1-96, (1896). 634

[327] Richard G. Swan: Factorization of polynomials over finite fields, Pacific Journal ofMathematics, vol.12, no.3, pp.1099-1106, (1962). 850

[328] Paul N. Swarztrauber: Bluestein’s FFT for Arbitrary N on the Hypercube, ParallelComputing, vol.17, pp.607-617, (1991). URL:http://www.cisl.ucar.edu/css/staff/pauls/papers/bluestein/bluestein.html. 455

T

[329] Tadao Takaoka, Stephen Violich: Combinatorial Generation by Fusing Loopless Algorithms,In: Computing: The Australasian Theory Symposium (CATS2006), Hobart, Australia.Conferences in Research and Practice in Information Technology (CRPIT), vol.51. Barry Jay,Joachim Gudmundsson, (eds.), (2006). 329

[330] M. A. Thornton, D. M. Miller, R. Drechsler: Transformations Amongst the Walsh, Haar,Arithmetic and Reed-Muller Spectral Domains, International Workshop on Applications of theReed-Muller Expansion in Circuit Design (RMW), pp.215-225, (2001). URL:http://engr.smu.edu/~mitch/publications.html. 486

BIBLIOGRAPHY 949

[331] John Todd: A problem on arc tangent relations, Amer. Math. Monthly, vol.56, no.8,pp.517-528, (October-1949). 638

[332] Mikko Tommila: apfloat, A High Performance Arbitrary Precision Arithmetic Package,(1996). URL: http://www.apfloat.org/. 809

[333] J. F. Traub: Iterative Methods for the Solution of Equations, Chelsea, (1964). 588, 589, 597

[334] H. F. Trotter: Algorithm 115: Perm, Communications of the ACM, vol.5, no.8, pp.434-435,(August-1962). 254

[335] H. W. Turnbull: Theory of Equations, fifth edition, Oliver and Boyd, Edinburgh, (1952). 895

U V

[336] Abraham Ungar: Generalized Hyperbolic Functions, The American Mathematical Monthly,vol.89, no.9, pp.688-691, (November-1982). 688

[337] Vincent Vajnovszki: Generating a Gray Code for P-Sequences, Journal of MathematicalModelling and Algorithms, vol.1, pp.31-41, (2002). 329

[338] Vincent Vajnovszki, Timothy R. Walsh: A loop-free two-close Gray-code algorithm for listingk-ary Dyck words, Journal of Discrete Algorithms, vol.4, no.4, pp.633-648, (December-2006). 333

[339] Raimundas Vidunas: Expressions for values of the gamma function, arXiv:math.CA/0403510,(30-March-2004). URL: http://arxiv.org/abs/math/0403510. 610

[340] San C. Vo: A Survey of Elliptic Cryptosystems, Part I: Introductory, NASA AdvancedSupercomputing (NAS) Division, (August-2003). URL:http://www.nas.nasa.gov/News/Techreports/2003/2003.html. 918

[341] Edward R. Vrscay, William J. Gilbert: Extraneous fixed points, basin boundaries and chaoticdynamics for Schroder and Konig rational iteration functions, Numerische Mathematik,vol.52, no.1, pp.1-16, (January-1987). 592, 593

W

[342] Timothy R. Walsh: The generalized Towers of Hanoi for space-deficient computers andforgetful humans, The Mathematical Intelligencer, vol.20, no.1, pp.32-38, (March-1998). 737

[343] Timothy Walsh: Generating Gray codes in O(1) worst-case time per word, In: DMTCS 2003,C. S. Calude et al. (eds.), Lecture Notes in Computer Science, vol.2731, pp.73-88, (2003). 172

[344] Xiaoyun Wang, Dengguo Feng, Xuejia Lai, Hongbo Yu: Collisions for Hash Functions MD4,MD5, HAVAL-128 and RIPEMD, Cryptology ePrint Archive, Report 2004/199, revised version,(17-August-2004). URL: http://eprint.iacr.org/2004/199/. 870

[345] Zhong-De Wang: New algorithm for the slant transform, IEEE Transactions on PatternAnalysis and Machine Intelligence, vol.4, no.5, pp.551-555, (September-1982). 483

[346] Henry S. Warren, Jr.: Hacker’s delight, Addison-Wesley, (2003). Additional material andrevisions at URL: http://www.hackersdelight.org/. 3

[347] Andre Weimerskirch, Christoph Paar: Generalizations of the Karatsuba Algorithm forPolynomial Multiplication, (March-2002). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.13.4028. 827, 831

[348] Andre Weimerskirch, Christoph Paar: Generalizations of the Karatsuba Algorithm forEfficient Implementations, Technical Report, Ruhr-Universitat-Bochum, Germany, correctedversion, (2003). URL: http://www.crypto.ruhr-uni-bochum.de/en_publications.html. 827

[349] Eric Weisstein: MathWorld. URL: http://mathworld.wolfram.com/. 338, 359, 610, 687, 914

[350] Mark B. Wells: Generation of Permutations by Transposition, Mathematics of Computation,vol.15, no.74, pp.192-195, (April-1961). 252

[351] Ernst Joachim Weniger: Nonlinear sequence transformations for the acceleration ofconvergence and the summation of divergent series, arXiv:math/0306302v1 [math.NA],(19-June-2003). URL: http://arxiv.org/abs/math/0306302v1. 665

950 BIBLIOGRAPHY

[352] Mark Weston, Vincent Vajnovszki: Gray codes for necklaces and Lyndon words of arbitrarybase, Pure Mathematics and Applications (PU.M.A.), vol.17, no.1-2, pp.175-182, (2006). URL:http://homelinux.capitano.unisi.it/~puma/. 375

[353] Michael Roby Wetherfield, Hwang Chien-lih: Lists of Machin-type (inverse integral cotangent)identities for Pi/4, URL: http://www.machination.eclipse.co.uk/. 638

[354] Michael Roby Wetherfield: The enhancement of Machin’s formula by Todd’s process, TheMathematical Gazette, vol.80, no.488, pp.333-344, (July-1996). 638

[355] Francis John Welsh Whipple: A fundamental relation between generalized hypergeometricseries, Journal of the London Mathematical Society, Series 1, vol.s1-1, no.3, pp.138-145, (1926).693

[356] E. T. Whittaker, G. N. Watson: A Course of Modern Analysis, Cambridge University Press,fourth edition, (1927), reprinted (1990). 608, 686, 687, 689, 692

[357] Mladen Victor Wickerhauser: Adapted Wavelet Analysis from Theory to Software, AK Peters,Wellesley, Massachusetts, (1994). 546

[358] (Wikipedia contributors): Wikipedia, The Free Encyclopedia, (2008). URL:http://en.wikipedia.org/. 2, 534, 560, 607, 874

[359] Herbert S. Wilf: generatingfunctionology, second edition, Academic Press, (1992). URL:http://www.math.upenn.edu/~wilf/DownldGF.html. 279

[360] Aaron Williams: Loopless Generation of Multiset Permutations using a Constant Number ofVariables by Prefix Shifts, ACM-SIAM Symposium on Discrete Algorithms (SODA09), (2009).URL: http://www.siam.org/proceedings/soda/2009/soda09.php. 299

[361] Hugh C. Williams: Eduard Lucas and primality testing, Wiley, (1989). 804

[362] Mark C. Wilson: Random and exhaustive generation of permutations and cycles,arXiv:math/0702753v1 [math.CO], (25-February-2007). URL:http://arxiv.org/abs/math/0702753. 112

X Y Z

[363] Limin Xiang, Kazuo Ushijima: On O(1) Time Algorithms for Combinatorial Generation, TheComputer Journal, vol.44, pp.292-302, (2001). 329

[364] Shmuel Zaks: A new algorithm for generation of permutations, BIT Numerical Mathematics,vol.24, no.2, pp.196-204, (June-1984). 245

[365] Zhenxiang Zhang: Finding strong pseudoprimes to several bases, Mathematics ofComputation, vol.70, no.234, pp.863-872, (April-2001). 791

[366] Zhenxiang Zhang, Min Tang: Finding strong pseudoprimes to several bases. II, Mathematicsof Computation, vol.72, no.244, pp.2058-2097, (30-May-2003). 791

[367] Pawe l Zielinski, Krystyna Zietak: The Polar Decomposition – Properties, Applications andAlgorithms, Annals of the Polish Mathematical Society, vol.38, (1995). URL:http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.50.3541. 577

[368] Neal Zierler: On a Theorem by Gleason and Marsh, Proceedings of the American MathematicalSociety, vol.9, no.2, pp.236-237, (April-1958). 842

Index

Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

−2 (minus two), representations with radix −2 582n-ions (hypercomplex numbers) 816999

, computation 454E, elliptic integral 603K, elliptic integral 601Θ2, Θ3, and Θ4 (theta functions) 604~, cyclic convolution 440~{v}, weighted convolution 449~lin, linear convolution 443π computation

– AGM vs. binary splitting, 656– iterative algorithms, 615– with arctan relations, 633

σe(n), sum of e-th powers of divisors of n 708ϕ(n), Euler’s totient function 776ii = exp(−π/2), computation 627zz, series for 702η-function (eta function) 344, 607, 711µ(n), Mobius function 705Wv [ ], weighted transform 448\ (d\n means “d divides n”) 5352D FHT 5302D Hilbert curve 83, 747

A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

AC (adjacent changes), Gray code 399acceleration of convergence, sumalt algorithm 662ACF (auto-correlation function) 445, 875acyclic (linear) convolution 443acyclic (linear) correlation 444addition, modulo m 764additive group, with a ring 775additive inverse, modulo m 767adjacency matrix of a graph 391adjacent changes (AC), Gray code 399adjacent nodes in a graph 391AGM

– (arithmetic-geometric mean), 599– 4th order variant, 600– and hypergeometric functions, 611– vs. binary splitting, 656

algebra 815all-ones polynomial 852, 912all-ones polynomials, trace vector 896all irredpoly (C++ class) 857alternating permutations 281alternating series, and continued fractions 722alternating series, sumalt algorithm 662AND-convolution 490applying a permutation to data, in-place 109approximations, initial, for iterations 575arbitrary length FFT 455arc (edge) of a digraph 391arctan relations for π 633arctan, computation by rectangular scheme 658argument reduction

– for arctan, 625– for cos, 629– for exp, 629– for log, 625

arithmetic transform– (definition), 483– convolution property, 489– reversed, 485– weighted, 492

arithmetic, modular 764arithmetic-geometric mean (AGM) 599arithmetical shift, of a binary word 3array notation 172array, of bits 164asm trick, with GCC 3, 532auto-correlation function (ACF) 445, 875average, of two integers, without overflow 5

B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

backtracking 391bag (multiset) 295base (radix) conversion 656base field 804, 886basis functions

– arithmetic transform, 483– blue, yellow, red, green transform, 488– Fibonacci-Haar transform, 513

952 Index

– Fibonacci-Walsh transform, 513– Haar transform, 498– in-place Haar transform, 499– Mersenne-Walsh transform, 514– prefix transform, 511– Reed-Muller transform, 486– reversed arithmetic transform, 485– reversed Haar transform, 505– Walsh transform (Walsh-Kacmarz), 474– Walsh transform (Walsh-Kronecker), 461– Walsh transform (Walsh-Paley), 473– weighted arithmetic transform, 493

Beatty sequence 756Bell numbers 151, 358Bell polynomials 359Ben-Or test for irreducibility 837Berlekamp’s Q-matrix algorithm 858Bhaskara equation 812big endian machine 2binary exponentiation 563binary finite field 804, 886binary GCD algorithm 767binary heap 160binary polynomial 822binary powering 563binary relation 148binary search 141binary splitting

– for rational series, 651– vs. AGM, 656– with continued fractions, 720

binary debruijn (C++ class) 208, 379binary necklace (C++ class) 373Binet form, of a recurrence 674binomial coefficient

– and type-2 ONB, 913– modulo a prime, 914– number of combinations, 176

bit combinations 62bit counting 18bit subsets, via sparse counting 68bit-array 164bit-array, fitting in a word 24bit-block boundaries, determination 12bit-reversal 34bit-reversal permutation 118bit-wise

– reversal, 33– rotation, 27– zip, 38

bit fibgray (C++ class) 76bit necklace (C++ class) 30bit subset (C++ class) 68bit subset gray (C++ class) 69bitarray (C++ class) 164

bitrev permutation 118BITS PER LONG 2bitset, testing for subset 23blocks of bits, counting 20blocks of bits, creation 11blocks, swapping via quadruple reversal 124blue code 49, 377blue code, fixed points 53bracelets, as equivalence classes 150branches, avoiding them 25bsearch 141bswap instruction 34built-ins, GCC 21butterfly diagram, for radix-2 transforms 460byte-wise Gray code and parity 42BYTES PER LONG 2

C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C++ class XYZ see XYZ (C++ class)C2RFT see real FFTC2RFT (complex to real FFT) 431carries with mixed radix counting 220carry, in multiplication 558CAT, constant amortized time 173catalan (C++ class) 325Catalan constant 663Catalan numbers 331, 589Catalan objects (combinatorial structures counted

by Catalan numbers) 323Cayley numbers 816Cayley-Dickson construction 815characteristic polynomial

– of a matrix, 899– of a recurrence relation, 666– with Fourier transform, 534

characteristic, of a field 886Chase’s sequence, for combinations 190Chebyshev polynomials

– (definition), 676– and Pell’s equation, 814– and products for the square root, 684– and recurrence for subsequences, 672– and square root approximants, 683– as hypergeometric functions, 695– fast computation, 680– with accelerated summation, 663

checking pair, of arctan relations 640Chinese Remainder Theorem (CRT) 772Chinese Remainder Theorem, for convolution 542chirp z-transform 455circuit in a graph 391circulant matrix 447, 905Clausen’s product 691CLHCA (cyclic LHCA) 883clz (Count Leading Zeros), GCC built-in 21

Index 953

co-lexicographic order– (definition), 172– for combinations, 177– for compositions, 194– for permutations, 243– for subsets of a multiset, 295– with bit combinations, 62

colex (co-lexicographic) order 172comb rec (C++ class) 191combination chase (C++ class) 191combination colex (C++ class) 178combination emk (C++ class) 185combination enup (C++ class) 188combination lex (C++ class) 177combination mod (C++ class) 186combination pref (C++ class) 180combination revdoor (C++ class) 183combinations (k-subsets) of a multiset 296combinations, Gray code, with binary words 66combinations, of k bits 62combinatorial Gray code 172companion matrix 667, 899comparison function, for sorting 145compiler, smarter than you thought 26complement, of a permutation 103complement-shift sequences 397complementary (dual) basis 908complementing the sequency of a binary word 48complete elliptic integral see elliptic integralcomplete graph 393complex numbers, construction 804complex numbers, mult. via 3 real mult. 806complex numbers, sorting 146composite modulus 776compositeness of an integer, test for 786composition of permutations 108composition, of permutations 105composition colex (C++ class) 195composition colex2 (C++ class) 195composition ex colex (C++ class) 196compositions 194computation of π, AGM vs. binary splitting 656conditional search, for paths in a graph 398conference matrix 386conjugates of an element in GF(2n) 892connected permutation 103, 281connected permutation, random 117connection polynomial 864constant

– Catalan, 663– CORDIC scaling, 647, 650– Fibonacci parity, 755– Golay-Rudin-Shapiro, 732– Gray code, 742– GRS, 732

– Komornik-Loreti, 729– paper-folding, 744– parity number, 726– Pell, 758– Pell Gray code, 762– Pell palindromic, 759– period-doubling, 735– rabbit, 753– revbin, 741– Roth’s, 731– ruler, 734– sum of Gray code digits, 744– sum-of-digits, 740– Thue, 731– weighted sum of Gray code digits, 747– weighted sum-of-digits, 741

constant amortized time (CAT) 173contiguous relations, for hypergeometric series 689continued fraction 716continued fractions, as matrix products 720convergent, of a continued fraction 716conversion, float to int 6conversion, of the radix (base) 656convolution

– acyclic (linear), 443– and Chinese Remainder Theorem, 542– and circulant matrices, 447– and multiplication, 558– AND-convolution, 490– by FFT, without revbin permutations, 442– by FHT, 525– cyclic, 440– cyclic, by FHT, 525– dyadic, 481– exact, 542– linear, 443– mass storage, 453– MAX-convolution, 491– negacyclic, 451, 528– OR-convolution, 489– property, of the Fourier transform, 441– right-angle, 450– skew circular, 451– weighted, 449– XOR-convolution, 481

cool-lex order see prefix shifts orderCooley-Tukey FFT algorithm 412coprime: a coprime to b ⇐⇒ gcd(a, b) = 1 535copying one bit 7CORDIC algorithms 646correlation 444

and circulant matrices, 447cosine and cosh, as hypergeometric function 697cosine, by rectangular scheme 661cosine, CORDIC algorithm 646

954 Index

cosine, in a finite field 808counting bits of a sparse word 20counting bits of a word 18counting sort 136coupled iteration, for the square root 569CPU instructions, often missed 82CRC (cyclic redundancy check) 868crc32 (C++ class) 870crc64 (C++ class) 868Creutzburg-Tasche primitive root 808cross-correlation 445CRT (Chinese Remainder Theorem) 772ctz (Count Trailing Zeros), GCC built-in 21cube root extraction 569cubic convergence 587cycle in a graph 391cycle type, of a permutation 278cycle-leaders

– of the Gray permutation, 128, 376cycles, of a permutation 104cyclic convolution

– (definition), 440– computation via FFT, 442

cyclic correlation 444cyclic distance, with binary words 32cyclic group 778cyclic LHCA (CLHCA) 883cyclic period, of a binary word 30cyclic permutation 105cyclic permutation, random 112cyclic permutations 285cyclic redundancy check (CRC) 868cyclic XOR 32cyclic perm (C++ class) 287cyclotomic polynomials

– (definition), 704– and primes, 802– and primitive binary polynomials, 857

D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Daubechies wavelets 547De Bruijn graph 395De Bruijn sequence

– (definition), 873– for computing bit position, 14– lex-min DBS via necklaces, 377– number of DBSs, 874– with subsets, 208

De Bruijn sequence– as path in a graph, 395

debruijn (C++ class) 377decimation in frequency (DIF) FFT 414decimation in time (DIT) FFT 412delta sequence 447delta set 172

delta squared process 598demo-programs, and timing 175deque (C++ class) 158deque (double-ended queue) 158derangement 102, 280derangement order, for permutations 264derangement, random 115DFT (discrete Fourier transform) 410DIF (decimation in frequency) FFT 414difference sets, and correlation 447digraph 391digraph (C++ class) 392digraph paths (C++ class) 393directed graph 391discrete Fourier transform (DFT) 410discrete Hartley transform 515DIT (decimation in time) FFT 412divides: d\n means “d divides n” 535division

– algorithm using only multiplication, 567– CORDIC algorithm, 648– exact, by C = 2k ± 1, 57– exact, with polynomials over GF(2), 826

divisionless iterations for polynomial roots 586divisors (C++ class) 295divisors of n, sum of e-th powers, σe(n) 708Dobinski’s formula, for Bell numbers 359double buffer, for mass storage convolution 454double-ended queue (deque) 158dragon curve sequence 90dual basis 908dyadic convolution 481Dyck words

– k-ary, 333– binary, 323

dyck gray (C++ class) 333dyck gray2 (C++ class) 333dyck rgs (C++ class) 333

E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

E, elliptic integral 603Eades-McKay sequence, for combinations 183easy case, with combinatorial generation 174edge of a graph 391edge sorting, with graph search 402EGCD (extended GCD) 768, 836EGCD, to compute Pade approximant 595EGF (exponential generating function) 173eigenvectors of the Fourier transform 533eight-square identity 819element of order n 535elementary functions, as hypergeometric f. 694elliptic E (complete elliptic integral) 603elliptic K (complete elliptic integral) 601elliptic integrals, as hypergeometric functions 700

Index 955

endian-ness, of a computer 2endo (Even Numbers DOwn) order 186endo order, for mixed radix numbers 226enup (Even Numbers UP) order 187enup order for combinations 188enup order, with permutations 272equivalence classes 148equivalence relation 148equivalence relations, number of 151Eratosthenes, prime sieve 770eta function (η-function) 344, 607, 711Euclidean algorithm 767Euler numbers 282Euler’s identity, for hypergeometric functions 689Euler’s totient function 776exact convolution 542exact division 56exact division, by C = 2k ± 1 57exact division, with polynomials over GF(2) 826expect (with branch prediction), GCC built-in 21exponent, of a group 776exponential convergence 587exponential function

– as hypergeometric function, 696– bit-wise computation, 643– by rectangular scheme, 660– computation via q = exp(−πK ′/K), 627– iteration for, 627– of power series, 631

exponential generating function (EGF) 173exponentiation

– algorithms, 563– modulo m, 766

extended GCD (EGCD) 768, 836extended GCD, to compute Pade approximant 595extension field 804, 886external algorithms 453extraneous fixed point, of an iteration 593

F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

factorial number system 232factorial numbers, and cyclic permutations 289factorial, binsplit algorithm for 651factorial, rising factorial power 685factorization of binary polynomials 858falling factorial 176falling factorial base 232fast Fourier transform (FFT) 411fast Hartley transform (FHT) 515fcsr (C++ class) 876FCSR (feedback carry shift register) 876feedback carry shift register (FCSR) 876Fermat numbers 795Fermat primes 782Ferrers diagram (with integer partitions) 345

ffs (Find First Set), GCC built-in 21FFT

– as polynomial evaluation, 559– radix-2 DIF, 416– radix-2 DIT, 414– radix-4 DIF, 423– radix-4 DIT, 420– split-radix algorithm, 425

FFT (fast Fourier transform) 411FFT caching 564FFT, for multiplication 558FFT-primes 536FHT

– convolution by, 525– DIF step, 519– DIF, recursive, 519– DIT, recursive, 516– radix-2 DIF, 520– radix-2 DIT, 517– radix-2 DIT step, 516– shift operator, 516

FHT (fast Hartley transform) 515Fibbinary numbers 62, 755Fibonacci

– k-step sequence, 309– parity, 754– parity constant, 755– polynomials, 914– representation, 754– setup, of a shift register, 867– words, 305– words, Gray code, 76, 306– words, shifts-order, 210

Fibonacci numbers 754Fibonacci-Haar transform 512Fibonacci-Walsh transform 513field polynomial 886FIFO (first-in, first-out), queue 156filter, for wavelet transforms 544finite field 804finite field, binary 886finite field, with prime modulus 776Fisher-Yates shuffle 111fixed point, of a function 587fixed point, of an iteration, extraneous 593fixed points, of the blue code 53FKM algorithm 371FKM algorithm, for binary words 30four step FFT 438four-square identity 819Fourier shift operator 413Fourier transform 410Fourier transform, convolution property 441fractional (order) Fourier transform 533fractional Fourier transform 456

956 Index

free element (normal element) 901full path in a graph 391

G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Galois field 886Galois setup, of a shift register 867Gauss’ transformation 690Gaussian normal basis 914GCC, built-ins 21GCD (greatest common divisor), computation 767generalized subset-lex (gslex) order 224generating functions, for combinatorial objects 173generator in GF(2n) 889generator of a group 776generator, modulo p 457generator, program producing programs 531GF(2n) (binary finite field) 886GF2n (C++ class) 890, 910GNB (Gaussian normal basis) 914Golay-Rudin-Shapiro constant 732Golay-Rudin-Shapiro sequence 44, 731Goldschmidt algorithm 581Gray code

– and radix −2 representations, 59– binary, reversed, 45– combinatorial (minimal-change order), 172– constant, 742– for combinations, 182– for combinations of a binary word, 66– for Fibonacci words, 76, 306– for Lyndon words, 403– for mixed radix numbers, 220– for multiset permutations, 301– for Pell words, 313, 760– for sparse signed binary words, 315– for subsets of a bitset, 69– for subsets, with shifts-order, 209– of a binary word, 41– powers of, 48– single track, 403

Gray permutation 128gray cycle leaders (C++ class) 129greatest common divisor (GCD), computation 767green code 50ground field 804, 886group, cyclic 778GRS (Golay-Rudin-Shapiro) sequence 44, 731GRS constant 732gslex order, for mixed radix numbers 224

H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Haar transform 497Hadamard matrix 384, 817Hadamard transform 459half-trace, in GF(2n) with n odd 898

Halley’s formula 588, 592Hamiltonian cycle 391Hanoi, towers of, puzzle 735Hartley shift 516Hartley transform 515hashing, via CRC 868heap 160Heap’s algorithm for permutations 248heapsort 141Heighway dragon 90hexdragon 95high bits of a word, operations on 14Hilbert curve

– function encoding it, 747– moves, 83– turns, 85, 749

homogeneous moves, with combinations 183, 188homogenous moves, with k-subsets 215Householder’s iteration 592Householder’s method 588hybrid linear cellular automaton (LHCA) 878hyperbolic sine and cosine, by CORDIC 649hypercomplex numbers 816hypergeometric function

– (definition), 685– AGM algorithms, 611

hypergeometric series– (definition), 685– conversion to continued fraction, 724– transformations, 688

I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

identical permutation 102ii = exp(−π/2), computation 627in-place routine 413indecomposable permutation 103, 281indecomposable permutation, random 117index of an element modulo m 775index of the single set bit in a word 13index sort 142infinite products, from series 709inhomogeneous recurrence 670initial approximations, for iterations 575integer partitions 339integer sequence

– 1’s-counting seq., 739– Beatty seq. with Φ, 756– Bell numbers, 151, 358– Carmichael numbers, 786– Catalan numbers, 331, 589– connected permutations, 281– dragon curve seq., 90– Euler function ϕ(n), 776– Euler numbers, 282– F-increment RGS, 368

Index 957

– Feigenbaum symbolic seq., 735– Fibbinary numbers, 62, 755– Fibonacci numbers, 309, 312, 754– fixed points in lex-rev seq., 73– Golay-Rudin-Shapiro seq., 44, 731– Gray codes, 742– GRS (Golay-Rudin-Shapiro) seq., 44, 731– hypercomplex multiplication, 817– indecomposable permutations, 281– integer partitions, 345– involutions, 279– irreducible polynomials, 843– irreducible self-reciprocal polynomial, 846– irreducible trinomials, 848– K-increment RGS, 369– Kronecker symbol

(−1n

), 745

– Lyndon words, 843– max-increment RGS, 364– Mephisto Waltz seq., 730– Moser – De Bruijn sequence, 59, 750– necklaces, 380– non-generous primes, 780– number of XYZ, see number of, XYZ– optimal normal bases, type-1, 912– optimal normal bases, type-2, 912– paper-folding seq., 88, 744– paper-folding seq., signed, 745– paren words, 78– partitions into distinct parts, 348– partitions, of an integer, 345– Pell equation not solvable, 813– period-doubling seq., 10, 735– primes with primitive root 2, 852, 878– primitive roots of Mersenne primes, 373– primitive trinomials, 848– quadratic residues all non-prime, 784– rabbit seq., 513, 753– radix −2 representations, 60– restricted growth strings, 337– ruler function, 733– sparse signed binary words, 315– subfactorial numbers, 280– subset-lex words, 71– sum of binary digits, 739– sum of digits of binary Gray code, 744– swaps with revbin permutation, 119– Thue-Morse seq., 44, 461, 726, 817– trinomial, irreducible, 848– type-1 optimal normal bases, 912– type-2 optimal normal bases, 912– values of the Mobius function, 706– Wieferich primes, 780

integer sequence, by OEIS number– A000003, 610– A000005, 708

– A000009, 348– A000010, 776– A000011, 151– A000013, 151, 408– A000029, 151– A000031, 151, 380– A000041, 345– A000043, 797– A000045, 309, 312, 314, 318, 320, 627, 754– A000048, 408, 848– A000073, 309– A000078, 309– A000079, 282– A000085, 279– A000108, 331, 337– A000110, 151, 358, 368– A000111, 282– A000120, 493, 739– A000123, 728– A000129, 627, 758– A000166, 280– A000201, 756– A000203, 352– A000213, 312– A000255, 280– A000288, 312– A000296, 360– A000322, 312– A000383, 312– A000593, 352– A000695, 59, 750– A000700, 349– A001037, 380, 843– A001045, 315, 318– A001122, 878– A001220, 780– A001227, 708– A001262, 788– A001318, 346– A001333, 314, 758– A001470, 280– A001511, 9, 733– A001591, 309– A001592, 309– A001764, 337– A002293, 337– A002294, 337– A002450, 59– A002475, 850– A002812, 797– A002997, 786– A003010, 797– A003106, 347– A003114, 347, 350– A003188, 742

958 Index

– A003319, 281– A003462, 649– A003622, 754– A003688, 314– A003714, 62, 755, 756– A003849, 754– A004211, 368– A004212, 368– A004213, 368– A005011, 368– A005351, 60– A005352, 60– A005418, 151, 733– A005578, 315– A005614, 753– A005727, 703– A005797, 610– A005811, 90, 744– A006130, 318– A006131, 318– A006206, 710– A006498, 321– A006519, 9– A006945, 789– A007895, 754– A008275, 277– A008277, 358– A008683, 706– A010060, 44, 727– A011260, 843– A014565, 753– A014577, 88, 744– A014578, 731– A015440, 318– A015441, 318– A015442, 318– A015443, 318– A015448, 314– A015449, 315– A016031, 874– A019320, 802– A020229, 788– A020985, 44, 732– A022155, 45– A022342, 754– A025157, 350– A025158, 350– A025159, 350– A025160, 350– A025161, 350– A025162, 350– A027187, 347– A027193, 347– A027362, 904– A028859, 320

– A029883, 739– A031399, 813– A034448, 353– A034947, 745– A035263, 10, 735– A035457, 349– A036991, 78– A045687, 119– A046116, 390– A046699, 74– A048146, 353– A048250, 353– A051158, 740– A054639, 912, 914– A055578, 780– A055881, 248– A057460, 850– A057461, 850– A057463, 850– A057474, 850– A057496, 851– A061344, 389– A064990, 730– A065428, 784– A067659, 350– A067661, 350– A069925, 848– A071642, 853, 912, 914– A072226, 802– A072276, 788– A073571, 849– A073576, 351– A073639, 850– A073726, 849, 885– A074071, 731– A074710, 850– A079471, 73– A079559, 74– A079972, 322– A080337, 366– A080764, 758– A080846, 95– A086347, 320– A087188, 351– A091072, 88– A095076, 754– A096393, 373– A100661, 72– A101284, 914– A102467, 840– A103314, 383– A104521, 759– A106400, 726, 729– A106665, 90– A107220, 853

Index 959

– A107222, 904– A107877, 369– A108918, 71– A110981, 383– A114374, 351– A118666, 53– A118685, 817– A123400, 257– A125145, 320– A134337, 351– A134345, 351– A135488, 909– A135498, 909– A136250, 914– A136415, 914– A136416, 850– A137310, 914– A137311, 914– A137313, 914– A137314, 914– A138933, 802– A143347, 744– A159880, 257– A162296, 353– A164896, 383– A167654, 820– A175337, 95– A175338, 129– A175339, 129– A175390, 855– A176405, 99– A176416, 100

interleaving process– for set partitions, 354– for Trotter’s permutations, 254

interpolation binary search 142interpolation, linear 142inverse

– additive, modulo m, 767– by exponentiation, 888– cube root, iteration for, 569– in GF(Q), 888– iteration for, 567– modulo 2n (2-adic), 56– modulo m, by exponentiation, 781– multiplicative, modulo m, 767– of a circulant matrix, 906– permutation, 106– permutation, in-place computation, 106– power series over GF(2), 826– root, iteration for, 573– square root, iteration for, 568– XYZ transform, see XYZ transform

inversion formula, Lagrange 590inversion principle, Mobius 706

inversion table, of a permutation 232invertible modulo m 767involution (self-inverse permutation) 106, 279involution, random 114irreducible polynomial 837isolated ones or zeros in a word 11iteration

– and multiple roots, 593– divisionless, for polynomial roots, 586– for exp, 627– for inverse, 567– for inverse cube root, 569– for inverse root, 573– for inverse square root, 568– for logarithm, 623– for roots modulo pn, 569– for the zero of a function, 587– Goldschmidt, 581– Householder’s, 592– Schroder’s, 588– synthetic, 726– to compute π, 615

Ives’ algorithm for permutation generation 270

J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Jacobi matrix 548Jacobi’s identity 605

K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

K, elliptic integral 601k-ary

– Dyck words, 333– trees, 333

k-compositions of n 194k-permutations 291k-subset 210k-subsets (combinations) of a multiset 296Karatsuba multiplication

– for integers, 550– for polynomials, 827

keys, sorting by keys 144Knuth shuffle 111Komornik-Loreti constant 729Konig iteration functions 592kperm gray (C++ class) 293Kronecker product

– (definition), 463– of Hadamard matrices, 388

Kronecker symbol 782ksubset gray (C++ class) 213ksubset rec (C++ class) 210ksubset twoclose (C++ class) 215Kummer’s transformation 693

L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Lagrange inversion formula 590

960 Index

Lambert series 707, 738LCM, least common multiple 768least common multiple (LCM) 768left inversion, of a permutation 233left-right array 166left-right array, with Lehmer code 235left-to-right powering 564left right array (C++ class) 166Legendre symbol 782Legendre’s relation 604, 701Lehmer code, of a permutation 232lex (lexicographic) order 172lexicographic order

– (definition), 172– for bit combinations, 64– for combinations, 177– for multiset permutations, 296– for subsets, 202– for subsets of a binary word, 70– generalized, for mixed radix numbers, 224

lfsr (C++ class) 865LFSR (linear feedback shift register) 864LFSR, and Hadamard matrices 384LHCA (linear hybrid cellular automaton) 878LIFO (last-in, first-out), stack 153LIMB (super-digit) 560linear convolution 443linear correlation 444linear feedback shift register (LFSR) 864linear hybrid cellular automaton (LHCA) 878linear interpolation 142linear, function in a finite field 887Lipski’s Gray codes for permutations 250list recursions 304little endian machine 2localized Hartley transform algorithm 529localized Walsh transform algorithm 468logarithm

– as hypergeometric function, 696– bit-wise computation, 641, 644– computation by rectangular scheme, 659– computation via AGM, 622– computation via π/ log(q), 622– curious series for, 626– iteration using exp, 623– of power series, 630

logarithmic generating function (LGF) 352logical shift, of a binary word 3long division 567long multiplication 567loop in a graph 391loopless algorithm 173low bits, operations on 8LR-array (left-right array) 166Lucas test, for primality 799

Lucas-Lehmer test, for Mersenne numbers 796lucky path, in a graph 402Lunnon’s Gray code for multiset permutations 301Lyndon words

– (definition), 370– and irreducible binary polynomials, 856– and Mersenne primes, 373– binary, number of, 380– number of, 380– with even/odd weight, 382– with fixed content, 382– with fixed density, 382

Lyndon words, as binary word 30lyndon gray (C++ class) 406

M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

m-sequence 384, 873MAC (modular adjacent changes), Gray code 399mass storage convolution 453matrix Fourier algorithm (MFA) 438matrix square root, applications 576matrix transposition, and zip permutation 127matrix transposition, in-place 122MAX-convolution 491maximal order modulo m 774mean, arithmetic-geometric 599median of three elements 135Mephisto Waltz sequence 730merge sort 138Mersenne numbers, Lucas-Lehmer test 796Mersenne primes

– 2j-th roots, 807– and Lyndon words, 373– generalized, 768– Lucas-Lehmer test, 796

Mersenne-Walsh transform 513MFA (matrix Fourier algorithm) 438MFA convolution algorithm 452minimal polynomial, in GF(2n) 892minimal-change order see Gray codeminimum, among bit-wise rotations 29missing, CPU instructions 82mixed radix numbers 217mixedradix endo (C++ class) 226mixedradix endo gray (C++ class) 228mixedradix gray (C++ class) 220mixedradix gslex (C++ class) 224mixedradix gslex alt (C++ class) 226mixedradix lex (C++ class) 217mixedradix modular gray (C++ class) 224mixedradix modular gray2 (C++ class) 223mixedradix sod lex (C++ class) 229Mobius function 705Mobius inversion principle 706mod (C++ class) 537, 809

Index 961

mod m FFTs 535modular adjacent changes (MAC), Gray code 399modular arithmetic 764modular multiplication 765modular reduction, with structured primes 768modular square root 784modulo, as equivalence classes 149modulus

– composite, 776– prime, 776– prime, with NTTs, 535

moment conditions, for wavelet filters 546Moser – De Bruijn sequence 59, 750moves, of the Hilbert curve 83mpartition (C++ class) 343mset perm gray (C++ class) 301mset perm lex (C++ class) 298mset perm lex rec (C++ class) 297multi-dimensional Walsh transform 461multi-point iteration 597multigraph 391multinomial coefficient 296, 383multiple roots, iterations for 593multiplication

– by FFT, 558– carry, 558– integer vs. float, 6– is convolution, 558– Karatsuba, 550– modulo m, 765– of complex numbers via 3 real mult., 806– of hypercomplex numbers, 815– of octonions, 818– of polynomials, is linear convolution, 444– of quaternions, 818– sum-of-digits test, 562

multiplication matrix, for normal bases 901multiplication table, of an algebra 815multiplicative function 705, 777multiplicative group 777multiplicative group, with a ring 775multiplicative inverse, modulo m 767multisection of power series 688multiset 295

N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

N-polynomial (normal polynomial) 900n-set, a set with n elements 176NAF (nonadjacent form) 61NAF, Gray code 315necklace (C++ class) 372necklace2bitpol (C++ class) 856necklaces

– as equivalence classes, 149– binary, 30

– binary, number of, 379– definition, 370– with even/odd weight, 382– with fixed content, 382– with fixed density, 382

necklaces, as binary words 30negacyclic convolution 451, 528neighbors of a node in a graph 391Newton’s formula 895Newton’s iteration, for vector-valued functions 548node (vertex) of a graph 391non-generous primes 780non-residue (quadratic, modulo p) 781nonadjacent form (NAF) 61nonadjacent form (NAF), Gray code 315normal bases, for GF(2n) 900normal basis, optimal 912normal element (free element) 901normal polynomial 900NTT

– (number theoretic transforms), 535– radix-2 DIF, 538– radix-2 DIT, 537– radix-4, 540

number of– alternating permutations, 281– aperiodic necklaces, 380– binary necklaces, 379– binary partitions of even numbers, 728– binary reversible strings, 151– binary words with at most r consecutive

ones, 308– bracelets, 150– carries, 220– combinations, 176– connected permutations, 281– cycles in De Bruijn graph, 397– De Bruijn sequences, 874– derangements, 280– divisors, 708– equivalence relations, 151– F-increment RGS, 368– fixed density Lyndon words, 382– fixed density necklaces, 382– generators modulo n, 780– increment-i RGS, 337– indecomposable permutations, 281– integer partitions, 345– integers coprime to n, 776– inversions of a permutation, 236– invertible circulant matrices, 905– involutions, 279– irreducible polynomials, 843– irreducible SRPs, 847– K-increment RGS, 369

962 Index

– Lyndon words, 380, 843– m-sequences, 873– max-increment RGS, 364– necklaces, 150, 379– necklaces with even/odd weight, 382– normal polynomials, 904, 907– ones in binary Gray code, 744– parentheses pairs, 331– partitions into distinct parts, 348– partitions of a set, 358– partitions of an integer, 345– permutations of a multiset, 296– permutations whose order divides 3, 280– permutations with m cycles, 277– primitive normal polynomials, 904– primitive polynomials, 843– primitive SRPs, 848– self-dual normal bases, 909– set partitions, 151, 358– shift register sequences, 873– sparse signed binary words, 315– strings with fixed content, 383– swaps with revbin permutation, 118– units in GF(Q), 888– units modulo m, 777– unlabeled bracelets, 150– unlabeled necklaces, 150– zero-divisors of Cayley-Dickson algebras,

820number theoretic transforms (NTT) 535

O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

O(1) algorithm 173octonions 816OGF (ordinary generating function) 173ONB (optimal normal basis) 912one-point iteration 587optimal normal basis (ONB) 912optimization, with combinatorial generation 174OR-convolution 489OR-convolution, weighted 493order

– of a polynomial, 841– of an element modulo m, 774– of an iteration, 587

ordinary generating function (OGF) 173out of core algorithms 453

P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Pade approximants 595– for arctan, 624– for exp, 628– for the r-th root, 572– for the logarithm, 623– for the square root, 683

paper-folding sequence 88, 744parallel assignment (with pseudocode) 414parameters, of a hypergeometric series 685paren (C++ class) 323paren gray (C++ class) 329parentheses, and binary words 78parity

– number, 726, 739– of a binary word, 42– of a permutation, 105– random permutation with given parity, 112

parity (parity of a word), GCC built-in 21Parseval’s equation 411partial unrolling of a loop 148partition

– of a set, 354– of an integer, 339

partition (C++ class) 341partition gen (C++ class) 339partitioning, for quicksort 135Pascal’s triangle 177path in a graph 391pattern, length-n with p letters 361pcrc64 (C++ class) 871Pell

– constant, 758– equation, 812– Gray code constant, 762– palindromic constant, 759

Pell ruler function 760Pell words, Gray code 313, 760pentagonal number theorem 346pentanomial 851Pepin’s test, for Fermat numbers 795period of a polynomial 841period-doubling constant 735period-doubling sequence 10, 735perm colex (C++ class) 243perm derange (C++ class) 264perm gray ffact (C++ class) 259, 293perm gray ffact2 (C++ class) 258perm gray lipski (C++ class) 250perm gray rfact (C++ class) 260perm gray rot1 (C++ class) 263perm gray wells (C++ class) 252perm heap (C++ class) 249perm heap2 (C++ class) 249perm heap2 swaps (C++ class) 250perm involution (C++ class) 284perm ives (C++ class) 270perm lex (C++ class) 242perm mv0 (C++ class) 267perm rec (C++ class) 285perm restrpref (C++ class) 278perm rev (C++ class) 245

Index 963

perm rev2 (C++ class) 247perm rot (C++ class) 266perm st (C++ class) 271perm st gray (C++ class) 274perm star (C++ class) 257perm star swaps (C++ class) 257perm trotter (C++ class) 254perm trotter lg (C++ class) 256permutation

– alternating, 281– as path in the complete graph, 395– composition, 105– connected, 281– cycle type, 278– cycles, 104– cyclic, random, 112– derangement, 280– indecomposable, 281– inverse of, 106– involution, 106, 279– of a multiset, 296– random, 111– with m cycles, number of, 277– with prescribed parity, random, 112

Pfaff’s reflection law 689phi function, number theoretic 776π, computation 615pitfall, shifts in C 4pitfall, two’s complement 4Pocklington-Lehmer test, for primality 794pointer sort 144pointer, size of 2polar decomposition, of a matrix 578polynomial

– binary, 822– irreducible, 837– multiplication, is linear convolution, 444– multiplication, splitting schemes, 827– primitive, 841– roots, divisionless iterations for, 586– weight of a binary polynomial, 848

popcount (bit-count), GCC built-in 21power series

– computation of exponential function, 631– computation of logarithm, 630– reversion, 589

powering– left-to-right method, 564– modulo m, 766– of permutations, 108– of the binary Gray code, 48– right-to-left method, 563

Pratt’s certificate of primality 792prefetching a memory location, GCC built-in 21prefix convolution 511

prefix shifts, order for– combinations, 180– multiset permutations, 299– paren strings, 330

prefix transform 511prime length FFT, Rader’s algorithm 457primes

– and cyclotomic polynomials, 802– as modulus, 776– as modulus, with NTTs, 535– non-generous, 780– sieve of Eratosthenes, 770– structured, 768– Wieferich, 780– with primitive root 2, 878

primitive n-th root, modulo m 535primitive r-th root of unity 774primitive elements, of a group 776primitive polynomial 841primitive root

– (definition), 776– Creutzburg-Tasche, 808– in GF(2n), 889– of Mersenne primes, 373– with prime length FFT, 457

primitive trinomial 848, 885priority queue 162priority queue (C++ class) 162product form

– for a-th root, 583– for continued fractions, 720– for elliptic K, 602– for power series of exp, 631– for square root, 684– from series, 709

products of k out of n factors 179products, infinite, from series 709Proth’s theorem 795Prouhet-Thue-Morse constant 726pseudo graph 391pseudo-inverse, of a matrix 579pseudoprime 786pseudoprime, strong (SPP) 786

Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Q-matrix 858quadratic convergence 587quadratic equation, with binary finite fields 896quadratic reciprocity 782quadratic residue (square) modulo p 781quadratic residues, and Hadamard matrices 386quadruple reversal technique 124quartic convergence 587quaternions 816queue (C++ class) 157

964 Index

queue (FIFO) 156quicksort 135

R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

R2CFT see real FFTR2CFT (real to complex FFT) 431R5-dragon 95R7-dragon 95rabbit constant 753rabbit sequence 513, 753Rabin’s test for irreducibility 838Rabin-Miller test, for compositeness 787Rader’s algorithm, for prime length FFT 457radix −2 (minus two) representations 58radix (base) conversion 656radix permutation 121radix sort 138radix-r DIF FFT step 419radix-r DIT FFT step 419random permutation 111random selection 111ranking, with combinatorial objects 172rational, square root iterations 570re-orthogonalization, of a matrix 576real FFT

– by FHT, 523– split-radix algorithm, 434– with wrap routines, 432

reciprocal polynomial 845reciprocity, quadratic 782rectangular scheme

– for arctan and log, 658– for exp, sin, and cos, 660

recurrence– (definition), 666– inhomogeneous, 670– relation, 666– relation, for subsequences, 672

red code 50reduction

– modular, with structured primes, 768– modulo x2 + x+ 1 etc., 806

Reed-Muller transform– (definition), 486– and necklaces, 376

rejection method 117relation, binary 148representations, radix −2 (minus two) 58representatives, with equivalence classes 149residue (quadratic, modulo p) 781restricted growth strings (RGS)

– (definition), 325– for parentheses strings, 325– for set partitions, 357

revbin (bit-wise reversal) 33

revbin constant 741revbin pairs, via shift registers 873revbin permutation 118revbin permutation, and convolution by FFT 442reversal bit-wise 33reversal, of a permutation 103reversed arithmetic transform 485reversed Gray code 45reversed Gray permutation 131reversed Haar transform 505reversed Reed-Muller transform 487reversing the bits of a word 34reversion of power series

– (definition), 589– for Schroder’s formula, 591– with k-ary Dyck words, 337

RGS (restricted growth string) 325rgs fincr (C++ class) 366rgs maxincr (C++ class) 364right inversion, of a permutation 232right-angle convolution 450right-to-left powering 563ring buffer 155ringbuffer (C++ class) 155rising factorial base 232RLL (run-length limited) words 310Rogers-Ramanujan identities 347root

– extraction, 572– inverse, iteration for, 573– modulo pn (p-adic), 569– of a polynomial, divisionless iterations, 586– primitive, 776– primitive, in GF(2n), 889– primitive, modulo m, 535– primitive, of Mersenne primes, 373

roots of unity, having sum zero 383rotation, bit-wise 27rotation, by triple reversal 123row-column algorithm 437ruler constant 734ruler function 207, 733ruler func (C++ class) 207, 283run-length limited (RLL) words 310

S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Sande-Tukey FFT algorithm 414Sattolo’s algorithm 112scalar multiplication 886Schroder’s formula 588search, binary 141searching, with unsorted arrays 147secant method 587sedenions 816selection sort 134

Index 965

selection, of a random element 111self-correlation 445self-dual (basis over GF(2n)) 908self-inverse permutation, random 114self-reciprocal polynomial 846sentinel element 174sequence see integer sequencesequency 474sequency of a binary word, complementing 48sequency, of a binary word 46set partition 354setpart (C++ class) 356setpart p rgs lex (C++ class) 361setpart rgs gray (C++ class) 363setpart rgs lex (C++ class) 360shift operator, for Fourier transform 413shift operator, for Hartley transform 516shift register sequence (SRS) 864shift-and-add algorithms 641shifts in C, pitfall 4shifts, and division 3shifts-order

– for bit combinations, 64– for Fibonacci words, 210– for subsets, 208– Gray code, for subsets, 209

short division 567short multiplication 567sieve of Eratosthenes 770sign decomposition, of a matrix 579sign of a permutation 105sign of the Fourier transform 410signed binary representation 61signed binary words, sparse, Gray code 315simple continued fraction 717simple path in a graph 391simple zero-divisors 820sine and sinh, as hypergeometric function 697sine, CORDIC algorithm 646sine, in a finite field 808single track

– Gray code, 403– order for permutations, 271– order for subsets, 208

singular value decomposition (SVD) 577singular values, with elliptic K 609skew circular convolution 451slant transform 482slant transform, sequency-ordered 483smart, your compiler 26sorting by keys 144sorting, edges in a graph 402sparse counting, and bit subsets 68sparse signed binary representation 61sparse signed binary words, Gray code 315

sparse words, bit counting 20spectrum of a real number 756SPI (strong pseudo-irreducible) 839split-radix FFT algorithm 425splitting schemes for multiplication

– for integers, 550– for polynomials over GF(2), 827

splitting, binary, for rational series 651SPP (strong pseudoprime) 786square modulo p 781square of a permutation 107square root

– in GF(2n), 888– iteration for, 568– modulo 2n, 57– modulo p, 784– of a matrix, applications, 576

square-free factorization, with polynomials 863square-free polynomials 858square-free, partitions into such parts 351SRS (shift register sequence) 864stable sort 137stack (C++ class) 153stack (LIFO) 153star-transposition order, for permutations 257Stirling numbers

– of the first kind (cycle numbers), 277– of the second kind (set numbers), 358

strings with fixed content 383strong minimal-change order 172, 254, 329strong minimal-change order for combinations 183strong pseudo-irreducible (SPI) 839strong pseudoprime (SPP) 786structured primes 768subdegree of a polynomial 852subfactorial numbers 280subsequences, recurrence relations for 672subset convolution 493subset of bitset, testing 23subset debruijn (C++ class) 208subset deltalex (C++ class) 202subset gray (C++ class) 206subset gray delta (C++ class) 175, 204subset lex (C++ class) 203subsets

– of k bits (combinations), 62– of a binary word, 68, 70– of a multiset, 295

subtraction, modulo m 764sum of digits, with mixed radix numbers 229sum of Gray code digits constant 744sum of two squares 810sum-of-digits constant 740sum-of-digits test, with multiplication 562sumalt algorithm 662

966 Index

sums of divisors, and partitions 352super-linear iteration 587SVD (singular value decomposition) 577Swan’s theorem 850swapping blocks via quadruple reversal 124swapping two bits 8swapping variables without temporary 6symmetries

– of the Fourier transform, 428– of the revbin permutation, 119

synthetic iterations 726

T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

taps, with wavelet filter 543tcrc64 (C++ class) 871tensor product 463terdragon curve 92theta functions: Θ2, Θ3, and Θ4 604Thue constant 731Thue-Morse sequence 44, 461, 726, 817thue morse (C++ class) 44timing, with demo-programs 175TMFA (transposed matrix Fourier algorithm) 438toggle between two values 5Toom-Cook algorithm 551Toom-Cook algorithm for binary polynomials 831totient function 776towers of Hanoi 735trace

– of a polynomial, 900– of an element in GF(2n), 887– vector, fast computation, 895– vector, in finite field, 888

trace-orthonormal basis 908transformations, for elliptic K and E 700transformations, of hypergeometric series 688transforms, on binary words 49transition count, for a Gray code 403transposed matrix Fourier algorithm (TMFA) 438transposition of a matrix, and zip permutation 127transposition of a matrix, in-place 122transpositions of a permutation 105trigonometric recursion 417trinomial, primitive 848, 885triple reversal technique 123Trotter’s algorithm for permutations 254two’s complement, pitfall 4two-close order for k-subsets 215two-close order for combinations 188type, of a set partition 359type-1 optimal normal basis 912type-2 optimal normal basis 912type-t Gaussian normal basis 914

U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

unitary divisor 353

units (invertible elements) 767universal cycle (for combinatorial objects) 874unlabeled bracelets 150unranking, with combinatorial objects 172unrolling, of a loop 148unsorted arrays, searching 147unzip permutation 126

V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vertex, of a graph 391vertical addition 21

W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Walsh transform 459Walsh transform, multi-dimensional 461wavelet conditions 544wavelet filter 544wavelet transform 543wavelet filter (C++ class) 544, 546weight, of binary polynomial 848weighted arithmetic transform 492weighted convolution 449weighted MFA convolution algorithm 452weighted MFA convolution, mass storage 453weighted OR-convolution 493weighted sum of Gray code digits constant 747weighted sum-of-digits constant 741weighted transform 448Wells’ Gray code for permutations 252Whipple’s identity 690Wieferich primes 780

X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

XOR permutation 127XOR, cyclic 32XOR-convolution 481xx, series for 702

Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

yellow code 49, 376Young diagram (with integer partitions) 345

Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Z-order 87z-transform 454Zeckendorf representation 754zero bytes, finding 55zero divisors, of an algebra 815zero padding, for linear convolution 444zero-divisors of the sedenions 820zero-one transitions in a word 12zip permutation 125zip, bit-wise 38zz, series for 702