F03 – Determinants

This chapter is concerned with the calculation of determinants of square matrices.

The routines in this chapter compute the determinant of a square matrix A . The matrix is assumued to have first been decomposed into triangular factors

using routines from Chapter F07.

If A is positive definite, then U = L T , and the determinant is the product of the squares of the diagonal elements of L . Otherwise, the routines in this chapter use the Dolittle form of the L U decomposition, where L has unit elements on its diagonal. The determinant is then the product of the diagonal elements of U , taking account of possible sign changes due to row interchanges.

To avoid overflow or underflow in the computation of the determinant, some scaling is associated with each multiplication in the product of the relevant diagonal elements. The final value is represented by

where d 2 is an integer and

For complex valued determinants the real and imaginary parts are scaled separately.

Most of the original routines of the chapter were based on those published in the book edited by Wilkinson and Reinsch (1971). We are very grateful to the late Dr J H Wilkinson FRS for his help and interest during the implementation of this chapter of the Library.

It is extremely wasteful of computer time and storage to use an inappropriate routine, for example to use a routine requiring a complex matrix when A is real. Most programmers will know whether their matrix is real or complex, but may be less certain whether or not a real symmetric matrix A is positive definite, i.e., all eigenvalues of A > 0 . A real symmetric matrix A not known to be positive definite must be treated as a general real matrix.
In all other cases either the band routine or the general routines must be used.

The routines in this chapter are general purpose routines. These give the value of the determinant in its scaled form, d 1 and d 2 , given the triangular decomposition of the matrix from a suitable routine from Chapter F07.

Is |
_ yes |
Is |
_ yes |
Is |
_ yes |
F07HDF and F03BHF |

| | | | no | |
||||

| | | | F07FDF and F03BFF | ||||

| | no | |
|||||

| | F07ADF and F03BAF | |||||

no | |
||||||

F07ARF and F03BNF |

None.

WithdrawnRoutine | Mark ofWithdrawal | Replacement Routine(s) |

F03AAF | 25 | F07ADF (DGETRF) and F03BAF |

F03ABF | 25 | F07FDF (DPOTRF) and F03BFF |

F03ACF | 25 | F07HDF (DPBTRF) and F03BHF |

F03ADF | 25 | F07ARF (ZGETRF) and F03BNF |

F03AEF | 25 | F07FDF (DPOTRF) and F03BFF |

F03AFF | 25 | F07ADF (DGETRF) and F03BAF |

F03AGF | 17 | F07HDF (DPBTRF) |

F03AHF | 17 | F07ARF (ZGETRF) |

F03AMF | 17 | No replacement; see Chapter F03 |

Wilkinson J H and Reinsch C (1971) *Handbook for Automatic Computation II, Linear Algebra* Springer–Verlag