The documentation for the routines uses the generic name and omits the prefix, and hence the entire suite of routines for that subject is documented under the generic name.
Examples that appear in the documentation also use the generic name. To further illustrate this principle, note the LIN_SOL_GEN documentation (see Chapter 1, “Linear Systems”), for solving general systems of linear algebraic equations. A description is provided for just one data type. There are four documented routines in this subject area: s_lin_sol_gen, d_lin_sol_gen, c_lin_sol_gen, and z_lin_sol_gen.
These routines constitute single-precision, double-precision, complex, and double-complex precision versions of the code.
The Fortran 90 compiler identifies the appropriate routine. Use of a module is required with the routines. The naming convention for modules joins the suffix “_int” to the generic routine name. Thus, the line “use lin_sol_gen_int” is inserted near the top of any routine that calls the subprogram “lin_sol_gen”. More inclusive modules are also available, such as imsl_libraries and numerical libraries. To avoid name conflicts, Fortran 90 permits re-labeling names defined in modules so they do not conflict with names of routines or variables in the user’s program. The user can also restrict access to names defined in IMSL Library modules by use of the “: ONLY, <list of names>” qualifier.
When dealing with a complex matrix, all references to the transpose of a matrix, , are replaced by the adjoint matrix
where the overstrike denotes complex conjugation. IMSL Fortran Numerical Library linear algebra software uses this convention to conserve the utility of generic documentation for that code subject. All references to orthogonal matrices are to be replaced by their complex counterparts, unitary matrices. Thus, an n×n orthogonal matrix Q satisfies the condition . An n×n unitary matrix V satisfies the analogous condition for complex matrices, .