Useful places to look for numerical mathematics routine: ======== GSL reference manual: http://www.gnu.org/software/gsl/manual/html_node/ GAMS: http://gams.nist.gov/ NetLib: http://www.netlib.org/ SciLab -- free numerical mathematics package http://www.scilab.org How to use debuggers ======== If you have C or Fortran code under linux, ddd is probably already installed and lets you easily walk through your code. The easiest thing to do is to compile with `-g': gfortran -Wall -g foo.f -o foo or gcc -Wall -g foo.c -o foo The -g flag, pretty universally used with different compilers, turns on lots of labelling needed by debuggers. It also disables most optimizations. Then run ddd on the executable: ddd ./foo and you'll be thrown into the debugger. What to do next? DDD/debugging tutorials: http://heather.cs.ucdavis.edu/~matloff/Debug/Debug.pdf http://www.gnu.org/manual/ddd/html_mono/ddd.html Valgrind ======== Valgrind is a programming tool for memory debugging, memory leak finding, and profiling. It's essentially a virtual machine which runs your program (you don't even *need* to compile -g; just whatever executable you have will work just fine) and can keep track of things like the use of invalid memory usages, which can be very difficult to find other ways. In addition it can do some sorts of profiling. But beware; because you're essentially running a simulation of a computer running your program, the program will routinely run ~20x slower under valgrind than it would normally. But for finding that hard-to-find memory issue, there's really nothing else like it. http://www.valgrind.org http://www.faqs.org/docs/Linux-HOWTO/Valgrind-HOWTO.html