Algorithms for Programmers
About Algorithms for Programmers:
From the preface:
This is a book for the computationalist, whether a working programmer or anyone interested in methods
of computation. The focus is on material that does not usually appear in textbooks on algorithms.
Where necessary the underlying ideas are explained and the algorithms are given formally. It is assumed
that the reader is able to understand the given source code, it is considered part of the text. We use the
C++ programming language for low-level algorithms. However, only a minimal set of features beyond
plain C is used, most importantly classes and templates. For material where technicalities in the C++
code would obscure the underlying ideas we use either pseudocode or, with arithmetical algorithms, the
GP language. Appendix C gives an introduction to GP, the language for pseudocode is described in
appendix D.
Example computations are often given with an algorithm, these are usually made with the demo programs
referred to. Most of the listings and gures in this book were created with these programs. A recurring
topic is practical eciency of the implementations. Various optimization techniques are described and
the actual performance of many given implementations is indicated.
The accompanying software, the FXT [18] and the hfloat [19] libraries, are written for POSIX compliant
platforms such as the Linux and BSD operating systems. The license is the GNU General Public License
(GPL), version 3 or later, see http://www.gnu.org/licenses/gpl.html .
Individual chapters are self-contained where possible and references to related material are given where
needed. The symbol ` z ' marks sections that can be skipped at rst reading. These typically contain
excursions or more advanced material.
Each item in the bibliography is followed by a list of page numbers where citations occur. With papers
that are available for free download the respective URL is given. Note that the URL may point to a
preprint which can dier from the nal version of the paper.
The electronic version of this book is available for free anonymous download. It is identical to the printed
version. See appendix A for information about the license. Given the amount of material treated there
must be errors in this book. Corrections and suggestions for improvement are appreciated, the preferred
way of communication is electronic mail. A list of errata is online at http://www.jjj.de/fxt/#fxtbook .
This is a book for the computationalist, whether a working programmer or anyone interested in methods
of computation. The focus is on material that does not usually appear in textbooks on algorithms.
Where necessary the underlying ideas are explained and the algorithms are given formally. It is assumed
that the reader is able to understand the given source code, it is considered part of the text. We use the
C++ programming language for low-level algorithms. However, only a minimal set of features beyond
plain C is used, most importantly classes and templates. For material where technicalities in the C++
code would obscure the underlying ideas we use either pseudocode or, with arithmetical algorithms, the
GP language. Appendix C gives an introduction to GP, the language for pseudocode is described in
appendix D.
Example computations are often given with an algorithm, these are usually made with the demo programs
referred to. Most of the listings and gures in this book were created with these programs. A recurring
topic is practical eciency of the implementations. Various optimization techniques are described and
the actual performance of many given implementations is indicated.
The accompanying software, the FXT [18] and the hfloat [19] libraries, are written for POSIX compliant
platforms such as the Linux and BSD operating systems. The license is the GNU General Public License
(GPL), version 3 or later, see http://www.gnu.org/licenses/gpl.html .
Individual chapters are self-contained where possible and references to related material are given where
needed. The symbol ` z ' marks sections that can be skipped at rst reading. These typically contain
excursions or more advanced material.
Each item in the bibliography is followed by a list of page numbers where citations occur. With papers
that are available for free download the respective URL is given. Note that the URL may point to a
preprint which can dier from the nal version of the paper.
The electronic version of this book is available for free anonymous download. It is identical to the printed
version. See appendix A for information about the license. Given the amount of material treated there
must be errors in this book. Corrections and suggestions for improvement are appreciated, the preferred
way of communication is electronic mail. A list of errata is online at http://www.jjj.de/fxt/#fxtbook .