Computer algebra is a relatively new field providing a framework for developing code that finds exact solutions to equations. Obviously, many problems do not have exact solutions at all, such as in quantum chemistry and physics. Others, such as meteorology models, do yield exact solutions, but they are so computationally expensive that approximate solutions are typically preferred.
This book presents a foundation for the mathematical engine underlying any computer algebra system. Most of the material is fairly fundamental and thus technology independent. The authors group the algorithms into five sections named for the mathematicians who established the underlying theory: Euclid, Newton, Gauss, Fermat, and Hilbert. Euclid algorithms span chapters 2 to 7; Newton, chapters 8 to 13; Gauss, chapters 14 to 17; Fermat, chapters 18 to 20; and Hilbert, chapters 21 to 24. This organization adds flexibility to the reading of the book: in fact, the text could be selectively used in various courses at both the undergraduate and graduate levels. For example, one could combine the basic arithmetic algorithms in the Euclid section with number theory from chapter 9 in the Newton section and Fermat algorithms from chapter 18. Integration techniques could be covered with a mix of Euclidian algorithms featured in chapters 4 and 6 and those discussed in chapter 22, in the Hilbert section. A graduate course could explore more advanced topics using the majority of the Hilbert section.
Each part of the book includes topics that are rarely covered in such detail in other similar books. For example, in the Euclid section, chapter 6 deals with resultant and greatest common divisor (gcd) computation. In the Newton section, chapter 12 discusses fast linear algebra, and the Gauss section includes factorization in chapter 14. Other special features include a detailed discussion of algorithms in terms of time analysis, and examples and applications of these algorithms in chemistry, coding, cryptography, and other areas. The book provides strict, precise, and clear mathematical proofs of the underlying mathematical apparatus. Extra value is added by the abundant examples and the numerous exercises at the end of each chapter. The book concludes with an appendix (chapter 25) on fundamental concepts such as big O notation, polynomial fields, and complexity.
In the end, I have to say that not only can one apply the book as a flexible textbook for many courses, but it’s comprehensiveness and clear style also make it an excellent reference text for computer science researchers and grad students, and anyone else interested in developing exact solution codes.