SPBCO(3F)SPBCO(3F)NAMESPBCO - SPBCO factors a real symmetric positive definite matrix stored
in band form and estimates the condition of the matrix.
If RCOND is not needed, SPBFA is slightly faster. To solve A*X = B ,
follow SPBCO by SPBSL. To compute INVERSE(A)*C , follow SPBCO by SPBSL.
To compute DETERMINANT(A) , follow SPBCO by SPBDI.
SYNOPSYS
SUBROUTINE SPBCO(ABD,LDA,N,M,RCOND,Z,INFO)
DESCRIPTION
On Entry
ABD REAL(LDA, N)
the matrix to be factored. The columns of the upper
triangle are stored in the columns of ABD and the
diagonals of the upper triangle are stored in the
rows of ABD . See the comments below for details.
LDA INTEGER
the leading dimension of the array ABD .
LDA must be .GE. M + 1 .
N INTEGER
the order of the matrix A .
M INTEGER
the number of diagonals above the main diagonal.
0 .LE. M .LT. N . On Return
ABD an upper triangular matrix R , stored in band
form, so that A = TRANS(R)*R .
If INFO .NE. 0 , the factorization is not complete.
RCOND REAL
an estimate of the reciprocal condition of A .
For the system A*X = B , relative perturbations
in A and B of size EPSILON may cause
relative perturbations in X of size EPSILON/RCOND .
If RCOND is so small that the logical expression
1.0 + RCOND .EQ. 1.0
is true, then A may be singular to working
precision. In particular, RCOND is zero if
exact singularity is detected or the estimate
underflows. If INFO .NE. 0 , RCOND is unchanged.
Z REAL(N)
a work vector whose contents are usually unimportant.
If A is singular to working precision, then Z is
an approximate null vector in the sense that
Page 1
SPBCO(3F)SPBCO(3F)
NORM(A*Z) = RCOND*NORM(A)*NORM(Z) .
If INFO .NE. 0 , Z is unchanged.
INFO INTEGER
= 0 for normal return.
= K signals an error condition. The leading minor
of order K is not positive definite. Band Storage
If A is a symmetric positive definite band matrix,
the following program segment will set up the input.
M = (band width above diagonal)
DO 20 J = 1, N
I1 = MAX0(1, J-M)
DO 10 I = I1, J
K = I-J+M+1
ABD(K,J) = A(I,J)
10 CONTINUE
20 CONTINUE
This uses M + 1 rows of A , except for the M by M
upper left triangle, which is ignored. Example: If the original
matrix is
11 12 13 0 0 0
12 22 23 24 0 0
13 23 33 34 35 0
0 24 34 44 45 46
0 0 35 45 55 56
0 0 0 46 56 66 then N = 6 , M = 2 and ABD should contain
* * 13 24 35 46
* 12 23 34 45 56
11 22 33 44 55 66 LINPACK. This version dated 08/14/78 . Cleve
Moler, University of New Mexico, Argonne National Lab. Subroutines and
Functions LINPACK SPBFA BLAS SAXPY,SDOT,SSCAL,SASUM Fortran
ABS,AMAX1,MAX0,MIN0,REAL,SIGN
Page 2