DBSTRF factors a real symmetric indefinite matrix A. The matrix A, stored in upper- or lower-packed storage mode, is factored using the Bunch-Kaufman diagonal pivoting method, where A is expressed as:
where:
To solve a system of equations with one or more right-hand sides, follow
the call to this subroutine with one or more calls to DBSTRS.
| A | ipvt | Subroutine |
| Long-precision real | Integer | DBSTRF |
| Fortran | CALL DBSTRF (uplo, n, ap, ipvt, nsinfo) |
| C and C++ | dbstrf (uplo, n, ap, ipvt, nsinfo); |
| PL/I | CALL DBSTRF (uplo, n, ap, ipvt, nsinfo); |
If uplo = 'U', A is stored in upper-packed storage mode.
If uplo = 'L', A is stored in lower-packed storage mode.
Specified as: a single character. It must be 'U' or 'L'.
Specified as: a fullword integer; n >= 0.
Specified as: a one-dimensional array of length nsinfo, containing numbers of the data type indicated in Table 98. See Notes.
If n <= nco, nsinfo = n(n + 1) / 2
Where:

#include <sys/systemcfg.h>
int ics;
.
.
.
ics=_system_configuration.dcache_size/8;
Otherwise, to determine a sufficient amount of storage, use the following processor-independent formula:
To determine the minimal amount of storage see Notes.
Specified as: a fullword integer; nsinfo > 0.
If nsinfo >= 0 and n > nco, additional information that can be used to obtain a minimum nsinfo is stored in AP(1). See Notes and Function.
Returned as: a one-dimensional array, containing numbers of the data type indicated in Table 98.
Returned as: a one-dimensional array of (at least) length n, containing numbers of the data type indicated in Table 98.
Specified as: a fullword integer.
REAL*8 AP(NSINFO)
INTEGER API(2)
EQUIVALENCE(API, AP)
.
.
.
NSINFOMIN = API(2)
A real symmetric indefinite matrix A, stored in upper- or lower-packed storage mode, is factored using the Bunch-Kaufman diagonal pivoting method, where A is expressed as:
where:
If n is 0, no computation is performed and the subroutine returns after doing some parameter checking.
None.
Matrix A is singular.
This example shows a factorization of a symmetric indefinite matrix A of order 8, stored in lower-packed storage mode, where on input matrix A is:
* *
| 3.0 5.0 -2.0 2.0 3.0 -5.0 -2.0 -3.0 |
| 5.0 3.0 2.0 -2.0 5.0 -3.0 2.0 -5.0 |
| -2.0 2.0 0.0 0.0 -2.0 2.0 0.0 6.0 |
| 2.0 -2.0 0.0 8.0 -6.0 -10.0 -8.0 -14.0 |
| 3.0 5.0 -2.0 -6.0 12.0 6.0 8.0 6.0 |
| -5.0 -3.0 2.0 -10.0 6.0 16.0 8.0 20.0 |
| -2.0 2.0 0.0 -8.0 8.0 8.0 6.0 18.0 |
| -3.0 -5.0 6.0 -14.0 6.0 20.0 18.0 34.0 |
* *
UPLO N AP IPVT NSINFO
| | | | |
CALL DBSTRF ( 'L', 8, AP, IPVT, 36 )
AP = ( 3.0, 5.0, -2.0, 2.0, 3.0, -5.0, -2.0, -3.0,
3.0, 2.0, -2.0, 5.0, -3.0, 2.0, -5.0,
0.0, 0.0, -2.0, 2.0, 0.0, 6.0,
8.0, -6.0,-10.0, -8.0,-14.0,
12.0, 6.0, 8.0, 6.0,
16.0, 8.0, 20.0,
6.0, 18.0,
34.0 )
NSINFO = 0
This example shows a factorization of a symmetric indefinite matrix A of order 8, stored in upper-packed storage mode, where on input matrix A is:
* *
| 34.0 18.0 17.0 6.0 -14.0 6.0 -5.0 -3.0 |
| 18.0 6.0 6.0 8.0 -8.0 0.0 2.0 -2.0 |
| 17.0 6.0 9.0 9.0 -8.0 0.0 2.0 -2.0 |
| 6.0 8.0 9.0 12.0 -6.0 -2.0 5.0 3.0 |
|-14.0 -8.0 -8.0 -6.0 8.0 0.0 -2.0 2.0 |
| 6.0 0.0 0.0 -2.0 0.0 0.0 2.0 -2.0 |
| -5.0 2.0 2.0 5.0 -2.0 2.0 3.0 5.0 |
| -3.0 -2.0 -2.0 3.0 2.0 -2.0 5.0 3.0 |
* *
UPLO N AP IPVT NSINFO
| | | | |
CALL DBSTRF ( 'U', 8, AP, IPVT, 36 )
AP = ( 34.0,
18.0, 6.0,
17.0, 6.0, 9.0,
6.0, 8.0, 9.0, 12.0,
-14.0, -8.0, -8.0, -6.0, 8.0,
6.0, 0.0, 0.0, -2.0, 0.0, 0.0,
-5.0, 2.0, 2.0, 5.0, -2.0, 2.0, 3.0,
-3.0, -2.0, -2.0, 3.0, 2.0, -2.0, 5.0, 3.0 )
NSINFO = 0