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