Although it is important to understand the way algorithms work, and especially to understand their limitations, there is no point in recreating code when acceptable code already exists. The physics department maintains a library of a few of the popular public domain and proprietary scientific subroutine packages. They are listed here:
The IMSL and ESSL routines are proprietary. IMSL is sold by Visual Numerics (formerly IMSL) and ESSL by IBM Corporation. We buy a license to use them on some of our machines. They contain a wide variety of standard numerical analysis routines. Documentation is hard copy. The LINPACK and EISPACK routines are less general, but they are public domain (free), and there is crude on-line documentation. The LINPACK routines are mostly standard linear albebra routines and the EISPACK routines deal with eigenvalue problems. The source code is found in the same directory cluster as the documentation. In each library both single and double precision versions are available. The LINPACK routines are organized into single, double, single complex and double complex source codes. The EISPACK routines are grouped in single and double precision libraries. In the case of LINPACK the routines have distinct names, so the compiled versions are assembled in a single library linpack. In the case of EISPACK the routines with different precision have the same name, so you must link from the appropriate library: eispacks for single precision and eispackd for double precision. The department will soon have LAPACK that merges the capabilities of EISPACK and LINPACK into a single library.