Bibliography

[AES] Advanced Encryption Standard (AES), National Institute of Standards and Technology, FIPS PUB 197 (November 2001). Available at http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf.

[Alv] Alverson, Robert. "Integer Division Using Reciprocals." In Proceedings IEEE 10th Symposium on Computer Arithmetic, June 26-28, 1991, Grenoble, France, 186-190.

[Aus1] Found in a REXX interpreter subroutine written by Marc A. Auslander.

[Aus2] Auslander, Marc A. Private communication.

[Bern] Bernstein, Robert. "Multiplication by Integer Constants." Software桺ractice and Experience 16, 7 (July 1986), 641-652.

[BGN] Burks, Arthur W., Goldstine, Herman H., and von Neumann, John. "Preliminary Discussion of the Logical Design of an Electronic Computing Instrument, Second Edition" (1947). In Papers of John von Neumann on Computing and Computing Theory, Volume 12 in the Charles Babbage Institute Reprint Series for the History of Computing, MIT Press, 1987.

[CJS] Stephenson, Christopher J. Private communication.

[Cohen] These rules were pointed out by Norman H. Cohen.

[Cut] Cutland, Nigel J. Computability: An Introduction to Recursive Function Theory. Cambridge University Press, 1980.

[CWG] Hoxey, Karim, Hay, and Warren (Editors). The PowerPC Compiler Writer's Guide. Warthman Associates, 1996.

[DES] Data Encryption Standard (DES), National Institute of Standards and Technology, FIPS PUB 46-2 (December 1993). Available at http://www.itl.nist.gov/fipspubs/fip46-2.htm.

[Dewd] Dewdney, A. K. The Turing Omnibus. Computer Science Press, 1989.

[Dud] Dudley, Underwood. "History of a Formula for Primes." American Mathematics Monthly 76 (1969), 23-28.

[EL] Ercegovac, Milo D. and Lang, Tom醩. Division and Square Root: Digit-Recurrence Algorithms and Implementations. Kluwer Academic Publishers, 1994.

[Gard] Gardner, Martin. "Mathematical Games" column in Scientific American, 227 2 (August 1972), 106-109.

[GGS] Gregoire, Dennis G., Groves, Randall D., and Schmookler, Martin S. Single Cycle Merge/Logic Unit, US Patent No. 4,903,228, February 20, 1990.

[GK] Granlund, Torbj鰎n and Kenner, Richard. "Eliminating Branches Using a Superoptimizer and the GNU C Compiler." In Proceedings of the 5th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), July 1992, 341-352.

[GKP] Graham, Ronald L., Knuth, Donald E., and Patashnik, Oren. Concrete Mathematics: A Foundation for Computer Science, Second Edition. Addison-Wesley, 1994.

[GLS1] Steele, Guy L., Jr. Private communication.

[GLS2] Steele, Guy L., Jr. "Arithmetic Shifting Considered Harmful." AI Memo 378, MIT Artificial Intelligence Laboratory (September 1976); also in SIGPLAN Notices 12, 11 (November 1977), 61-69.

[GM] Granlund, Torbj鰎n and Montgomery, Peter L. "Division by Invariant Integers Using Multiplication." In Proceedings of the ACM SIGPLAN '94 Conference on Programming Language Design and Implementation (PLDI), August 1994, 61-72.

[Gold] The second expression is due to Richard Goldberg.

[Good] Goodstein, Prof. R. L. "Formulae for Primes." The Mathematical Gazette 51 (1967), 35-36.

[GSO] Found by the GNU Superoptimizer.

[HAK] Beeler, M., Gosper, R. W., and Schroeppel, R. HAKMEM, MIT Artificial Intelligence Laboratory AIM 239 February 1972.

[Hay1] Hay, R. W. Private communication.

[Hay2] The first expression was found in a compiler subroutine written by R. W. Hay..

[Hil] Hilbert, David. "Ueber die stetige Abbildung einer Linie auf ein Fl鋍henst點k." Mathematischen Annalen 38 (1891), 459-460.

[Hop] Hopkins, Martin E. Private communication..

[HS] Hillis, W. Daniel and Steele, Guy L., Jr. "Data Parallel Algorithms." Comm. ACM 29, 12 (December 1986) 1170-1183.

[H&P] Hennessy, John L. and Patterson, David A. Computer Architecture: A Quantitative Approach. Morgan Kaufmann, 1990.

[H&S] Harbison, Samuel P. and Steele, Guy L., Jr. C: A Reference Manual, Fourth Edition. Prentice-Hall, 1995.

[H&W] Hardy, G. H. and Wright, E. M. An Introduction to the Theory of Numbers, Fourth Edition. Oxford University Press, 1960.

[IBM] From an IBM programming course, 1961.

[Irvine] Irvine, M. M. "Early Digital Computers at Bell Telephone Laboratories." IEEE Annals of the History of Computing 23, 3 (July-September 2001), 22-42.

[JVN] von Neumann, John. "First Draft of a Report on the EDVAC." In Papers of John von Neumann on Computing and Computing Theory, Volume 12 in the Charles Babbage Institute Reprint Series for the History of Computing, MIT Press, 1987.

[Ken] Found in a GNU C compiler for the RS/6000 that was ported by Richard Kenner. He attributes this to a 1992 PLDI conference paper by him and Torbj鰎n Granlund.

[Knu1] Knuth, Donald E. The Art of Computer Programming, Volume 1, Third Edition: Fundamental Algorithms. Addison-Wesley, 1997.

[Knu2] Knuth, Donald E. The Art of Computer Programming, Volume 2, Third Edition: Seminumerical Algorithms. Addison-Wesley, 1998.

[Knu3] The idea of using a negative integer as the base of a number system for arithmetic has been independently discovered by many people. The earliest reference given by Knuth is to Vittorio Gr黱wald in 1885. Knuth himself submitted a paper on the subject in 1955 to a "science talent search" for high-school seniors. For other early references, see Knuth, Volume 2.

[KRS] Kruskal, Clyde P., Rudolph, Larry, and Snir, Marc. "The Power of Parallel Prefix." IEEE Transactions on Computers C-34, 10 (October 1985), 965-968.

[Lamp] Lamport, Leslie. "Multiple Byte Processing with Full-Word Instructions." Communications of the ACM 18, 8 (August 1975), 471-475.

[LSY] Lee, Ruby B., Shi, Zhijie, and Yang, Xiao. "Efficient Permutation Instructions for Fast Software Cryptography." IEEE Micro 21, 6 (November/December 2001), 56-69.

[L&S] Lam, Warren M. and Shapiro, Jerome M. "A Class of Fast Algorithms for the Peano-Hilbert Space-Filling Curve." In Proceedings ICIP 94, 1 (1994), 638-641.

[MD] Denneau, Monty. Private communication.

[MIPS] Kane, Gerry and Heinrich, Joe. MIPS RISC Architecture. Prentice-Hall, 1992.

[MM] Morton, Mike. "Quibbles & Bits." Computer Language 7, 12 (December 1990), 45-55.

[MMIX] Part of a forthcoming edition of The Art of Computer Programming. Available at http://www-cs-faculty.stanford.edu/~knuth/taocp.html.

[NZM] Niven, Ivan, Zuckerman, Herbert S., and Montgomery, Hugh L. An Introduction to the Theory of Numbers, Fifth Edition. John Wiley & Sons, Inc., 1991.

[PB] Purdom, Paul Walton Jr., and Brown, Cynthia A. The Analysis of Algorithms. Holt, Rinehart and Winston, 1985.

[PHO] Oden, Peter H. Private communication.

[PL8] I learned this trick from the PL.8 compiler.

[Rib] Ribenboim, Paulo. The Little Book of Big Primes. Springer-Verlag, 1991.

[RND] Reingold, Edward M., Nievergelt, Jurg, and Deo, Narsingh. Combinatorial Algorithms: Theory and Practice. Prentice-Hall, 1977.

[Sagan] Sagan, Hans. Space-Filling Curves. Springer-Verlag, 1994. A wonderful book, thoroughly recommended to anyone even slightly interested in the subject.

[Shep] Shepherd, Arvin D. Private communication.

[Stall] Stallman, Richard M. Using and Porting GNU CC. Free Software Foundation, 1998.

[Voor] Voorhies, Douglas. "Space-Filling Curves and a Measure of Coherence." Graphics Gems II, AP Professional (1991).

[War] Warren, H. S., Jr. "Functions Realizable with Word-Parallel Logical and Two's-Complement Addition Instructions." Communications of the ACM 20, 6 (June 1977), 439-441.

[Weg] The earliest reference to this that I know of is: Wegner, P. A. "A Tech-nique for Counting Ones in a Binary Computer." Communications of the ACM 3, 5 (May 1960), 322.

[Wells] Wells, David. The Penguin Dictionary of Curious and Interesting Numbers. Penguin Books, 1997.

[Will] Willans, C. P. "On Formulae for the nth Prime Number." The Mathematical Gazette 48 (1964), 413-415.

[Wor] Wormell, C. P. "Formulae for Primes." The Mathematical Gazette 51 (1967), 36-38.