The features of Fortran 90 and later to define operations for derived types, to use array operations, and, for Fortran 2003 and later, to store procedure pointers allow a high-level style of programming that can be likened to functional programming languages such as Lisp. We will discuss several examples: automatic differentiation, integer programming, Diophantine equations, and dynamic expressions.
When solving stiff differential equations or finding the roots of some function, you often use the first derivative of the functions involved. It is, of course, possible to implement the function and its derivative explicitly, but that is error-prone if the function is even mildly complicated. ...