The Number Cruncher
Not only mathematicians have a large interest in numerical computations, as it is a very important tool for everyone involved in data analysis or simulation of various phenomena. Often it is unnecessary to write a complete computer program as many tools are available that provide functionality to ease a task, and Octave is one of them.
Octave comes with a command-line interface, however it can be launched from TeXmacs if you prefer a GUI variant. The first thing to note is the short startup time, which means that Octave qualifies as a desk calculator even for simple computing tasks. Commands such as 1 + 1 or sqrt(2) are entered in a C-style syntax and the answer is printed on the standard output. More complex tasks, e.g. self-written functions, are described in a special language, which is derived from the proprietary Matlab program. In fact, it is even possible to write code that runs both in Octave and in Matlab.
In contrast to symbolic computation involving abstract variables Octave is a numerical program. This means that all defined variables are stored as their actual value. Therefore, it is not possible to compute, say, the derivative of sin(x), however it is possible to compute the derivative at any arbitrary point, resulting in a floating-point number.
Many functions are available to play with, especially for statistics and data analysis. If the functions included with vanilla Octave do not suit your needs, there is an additional package called octave-forge, which provides many more features. It provides even rudimentary support for symbolic calculation, but this doesn't go beyond differentiation and a few other things.
The strengths of Octave lie mainly in other fields such as linear algebra. There are many functions for matrix generation and manipulation. The algorithms for matrix operations are fast and robust, leading to no noticeable drop in performance when compared to hand-optimized C++ programs. Another thing worth mentioning is the solver for nonlinear equations.
An interesting way to extend Octave is by dynamically adding your own functions written in C++ so that you can use them from the interactive interface. This even works the other way round, enabling you to use all of Octave's zillion functions in your C++ programs.
The documentation comes in the Texinfo format and is accessible from within Octave. All the functions are explained in terms of what they do and what parameters they expect, however additional information about the algorithms used is often sparse.
When it comes to plotting data, Octave relies on gnuplot for creating graphs. This means that in areas where gnuplot does not extremely well (e.g. contour plots) Octave will show the same problems. The plotting interface is somewhat difficult to use and offers less flexibility than gnuplot itself. A native gnuplot interface is available, however it has been marked deprecated in recent versions.
Octave is a very mature tool for numerical computations. It does well on almost everything from a single-line statement up to a quantum computer simulator.