In many respects numerical computation is the heart of computational science, as much of computational science involves the numerical simulation of mathematical models. Good numerical facilities are therefore key. Traditionally available numerical facilities have consisted primarily of single and double precision real data types, complex data type (single precision only), and rich libraries of functions providing a wide range of specific numerical computations. Occasionally additional capabilities, such as double precision complex or quadruple precision real numeric data types, are encountered. These traditional numeric facilities are adequate for a great many computational science applications.
In some cases, however, better selection of the numeric precision of an operand, or more information about the current numeric implementation environment than is available from the traditional tools, is needed to guarantee convergence, yield the most accurate result, or provide some other form of robustness of the numerical computation. The first of these-better selection of numeric precision-is provided by the Fortran 90 ``type kind" mechanism and the ability to make user and implementation defined functions generic over different kinds of arguments. The second- information about the numeric environment-is provided by the numeric approximation model and the corresponding inquiry intrinsic functions that return environmental information related to this model. The next three subsections describe the first of these two enhancements to numerical robustness and the last two subsections describe the second one.