2 out of 2 people found the following review helpful:
Great compilation of numerical routines for C programmersFriday, December 17, 2004
I found this book indispensible in my effort to develop profitable trading systems for futures and options and in my research in factor analysis and, more recently, in chronic fatigue syndrome and fibromyalgia. Anyone who programs in C or C++ and works with mathematics must have this book. It covers a surprisingly wide range of algorithms: routines are included for everything from handling Julian dates and solving systems of linear equations to determining eigenvectors and singular value decompositions, solving differential equations, doing numerical integration (quadrature), not to mention calculating fast fourier transforms, lomb periodograms and maximum entropy spectral analyses. While not always state-of-the-art, the routines are quite reliable (when used correctly), clearly-written, and easy to understand and use. I would strongly recommend this book (and the companion software) to anyone who programs in C and is literate in mathematics. I always keep a copy nearby.
Jeffrey Owen Katz, Ph.D.
Author: "The Encyclopedia of Trading Strategies" (McGraw Hill, 2000)
2 out of 2 people found the following review helpful:
A nice classicFriday, August 13, 2004
What I didn't like: the license for the source code is very
restrictive. Some things might have been implemented otherwise
(better?, oh well). Arrays use a 1-offset instead of 0 offset
as is the convention in C.
What I did like: the exposition and organization. It may not
provide the best solutions, but the ones provided are good enough
and readable.
30 out of 32 people found the following review helpful:
Check GNU Scientific Library firstSunday, September 21, 2003
I give the book 4 stars to maintain the current level. I own a Fortran copy of NR, but like the other authors, I like NR for the explanations of algorithms, but not for the code.
There is a VERY good alternative to Numerical Recipes in C, namely GNU Scientific Library. You can find the source code and manual from:
http://sources.redhat.com/gsl/
or
http://www.gnu.org/software/gsl
As typical GNU software, GSL is licensed under GNU General Public License, so it is ABSOLUTELY free ! You can download it, modify it, linked it with your own code, without feeling guilty of copyright violation (Not in the case of NR, NR comes with a copyright license to prohibit modification and linking).
GSL is written in C from scratch by its author. The design is modern, much better than NR in C, and also allowed linking with C++ or modern scripting language like Python. Some of the leading authors have background in theoretical physics and astrophysics, just like NR authors.
Check it out. You lose nothing to check GSL first, you may ended up saving some $$$.
10 out of 10 people found the following review helpful:
Excellent reference, but poor writing style and licenseTuesday, June 24, 2003
I had to endure reading this book for 2 long semesters, and I've come to know some parts of it pretty well. I'll try to be short and say that the book is an excellent reference for the practicioner (and for the poor student:) - however, the ill-placed "jokes" have terribly annoyed me and my fellow class mates. Entire pagagraphs in almost every section dedicated to some second-tier humor were not so helpful in solving numerical problems.
The license for the code is just bad and I found it rather pointless, given the cost of the book (for me it's expensive; and I know it's downloadable). The authors should maybe reconsider this at a later stage...
PS: The GNU Scientific Library implements most, if not all, of the NR routines. It might be worth checking out, since it's also in plain C.
20 out of 20 people found the following review helpful:
Proprietary source the Achilles' heel for non-studentsWednesday, December 04, 2002
I first bought the FORTRAN version of this text in 1994 while doing scientific programming for graduate school work. I've been able to do a lot of basic research quickly with NR codes, and I still occasionally use NR's routines. The authors have certainly done a good job assimilating a lot of material in the NR series. Since other reviewers have done well to highlight the importance and utility of this landmark series, there is no need to repeat those sentiments here. I also agree with earlier reviewers applauding this title more as a survey or reference work and less as a library of source code. However, to this title's detriment, the authors actually consider the NR series to be a proprietary library of source code more valuable than the explanatory text surrounding it (one can in fact download the text on-line from the publisher though it's hardly worth the hassle). This perception is ironic since the authors confess that "the lineage of many programs in common circulation is often unclear," and many details of presentation, ideas, and algorithms are clearly "borrowed" from other excellent (some now out-of-print) numerical methods books or journals.
Unfortunately, much of the source code in the 1993 C edition appears FORTRANish and is not very efficient as far as the C language goes (one would hope that improvements are coming in the new C edition, ISBN 0521574382). However, even the original FORTRAN NR routines occasionally adopted bizarre and/or obviously inefficient programming structures - over time I decided that this was probably done to make these algorithms appear as so not to obviously plagerize other published material.
Many programmers try to get around this by reworking the NR codes. Apparently the authors consider modification of their sometimes inefficient code "derivative works" (even bug fixes) which cannot be legally redistributed or even used on more than one machine at a time without purchasing a new license or book. As a student, NR's legal disclaimers regarding derivative works never bothered me and I was willing to overlook the sometimes unpolished source code insofar as it functioned properly. But as a professional, I now find the lack of fair-use provisions on uncompiled, derivative source way too restrictive to rely on them in good conscience. I have since expanded my numerical methods library to other references supporting true public-domain codes. With an expanded basis of comparison, I regret to say that I am becoming less and less impressed with NR's implementations and explanations. I am finding some of NR's algorithms to be inefficient or unnecessarily approximate, and - on rare occasion - buggy. There have been quite a few bugs uncovered over the years, although the NR web site has done a good job of keeping track of them.
In closing, this book is excellent for students wanting a good reference for quick and dirty types of analyses or scientific computing. Professional programmers, scientists, engineers, specialists or analysts performing research would be well advised to reference this title, but ultimately they will likely need to rely other resources if they require efficient and/or unrestricted (public-domain) source codes for their work.