The DBSSV subroutine solves a system of linear equations AX = B for X, where A is a real symmetric indefinite matrix, and X and B are real general matrices.
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:
| A, B | ipvt | Subroutine |
| Long-precision real | Integer | DBSSV |
| Fortran | CALL DBSSV (uplo, n, nrhs, ap, ipvt, b, ldb, nsinfo) |
| C and C++ | dbssv (uplo, n, nrhs, ap, ipvt, b, ldb, nsinfo); |
| PL/I | CALL DBSSV (uplo, n, nrhs, ap, ipvt, b, ldb, 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 fullword integer; nrhs >= 0.
Specified as: a one-dimensional array of length nsinfo, containing numbers of the data type indicated in Table 97. See Notes.
Specified as: an ldb by (at least) nrhs array, containing numbers of the data type indicated in Table 97.
Specified as: a fullword integer; ldb > 0 and ldb >= n.
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 97.
Returned as: a one-dimensional array of (at least) length n, containing numbers of the data type indicated in Table 97.
Returned as: an ldb by (at least) nrhs array, containing numbers of the data type indicated in Table 97.
Specified as: a fullword integer.
REAL*8 AP(NSINFO)
INTEGER API(2)
EQUIVALENCE(API, AP)
.
.
.
NSINFOMIN = API(2)
The system AX = B is solved for X, where A is a real symmetric indefinite matrix, and X and B are real general matrices.
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:
If n or nrhs is 0, no computation is performed and the subroutine returns after doing some parameter checking.
None.
Matrix A is singular.
This example shows how to solve the system AX = B, for three right-hand sides, where matrix A is a real symmetric indefinite matrix of order 8, stored in lower-packed storage mode, and X and B are real general matrices.
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 |
A = | 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 NRHS AP IPVT B LDB NSINFO
| | | | | | | |
CALL DBSSV ( 'L', 8, 3, AP, IPVT, B, 8, 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 )
* *
| 1.0 -38.0 47.0 |
| 7.0 -10.0 73.0 |
| 6.0 52.0 2.0 |
B = | -30.0 -228.0 -42.0 |
| 32.0 183.0 105.0 |
| 34.0 297.0 9.0 |
| 32.0 244.0 44.0 |
| 62.0 497.0 61.0 |
* *
* *
| 1.0 1.0 8.0 |
| 1.0 2.0 7.0 |
| 1.0 3.0 6.0 |
B = | 1.0 4.0 5.0 |
| 1.0 5.0 4.0 |
| 1.0 6.0 3.0 |
| 1.0 7.0 2.0 |
| 1.0 8.0 1.0 |
* *
NSINFO = 0
This example shows how to solve the system AX = B, for three right-hand sides, where matrix A is a real symmetric indefinite matrix of order 8, stored in upper-packed storage mode, and X and B are real general matrices.
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 NRHS AP IPVT B LDB NSINFO
| | | | | | | |
CALL DBSSV ( 'U', 8, 3, AP, IPVT, B, 8, 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 )
* *
| 59.0 52.0 479.0 |
| 30.0 38.0 232.0 |
| 33.0 50.0 247.0 |
B = | 35.0 114.0 201.0 |
| -28.0 -36.0 -216.0 |
| 4.0 -4.0 40.0 |
| 12.0 88.0 20.0 |
| 4.0 56.0 -20.0 |
* *
* *
| 1.0 1.0 8.0 |
| 1.0 2.0 7.0 |
| 1.0 3.0 6.0 |
B = | 1.0 4.0 5.0 |
| 1.0 5.0 4.0 |
| 1.0 6.0 3.0 |
| 1.0 7.0 2.0 |
| 1.0 8.0 1.0 |
* *
NSINFO = 0