1SPBSVX(1)             LAPACK driver routine (version 3.2)            SPBSVX(1)
2
3
4

NAME

6       SPBSVX  -  uses  the Cholesky factorization A = U**T*U or A = L*L**T to
7       compute the solution to a real system of linear equations  A * X = B,
8

SYNOPSIS

10       SUBROUTINE SPBSVX( FACT, UPLO, N,  KD,  NRHS,  AB,  LDAB,  AFB,  LDAFB,
11                          EQUED,  S,  B, LDB, X, LDX, RCOND, FERR, BERR, WORK,
12                          IWORK, INFO )
13
14           CHARACTER      EQUED, FACT, UPLO
15
16           INTEGER        INFO, KD, LDAB, LDAFB, LDB, LDX, N, NRHS
17
18           REAL           RCOND
19
20           INTEGER        IWORK( * )
21
22           REAL           AB( LDAB, * ), AFB( LDAFB, * ), B( LDB, * ), BERR( *
23                          ), FERR( * ), S( * ), WORK( * ), X( LDX, * )
24

PURPOSE

26       SPBSVX uses the Cholesky factorization A = U**T*U or A = L*L**T to com‐
27       pute the solution to a real system of linear equations
28          A * X = B, where A is an N-by-N  symmetric  positive  definite  band
29       matrix and X and B are N-by-NRHS matrices.
30       Error  bounds  on  the  solution and a condition estimate are also pro‐
31       vided.
32

DESCRIPTION

34       The following steps are performed:
35       1. If FACT = 'E', real scaling factors are computed to equilibrate
36          the system:
37             diag(S) * A * diag(S) * inv(diag(S)) * X = diag(S) * B
38          Whether or not the system will be equilibrated depends on the
39          scaling of the matrix A, but if equilibration is used, A is
40          overwritten by diag(S)*A*diag(S) and B by diag(S)*B.
41       2. If FACT = 'N' or 'E', the Cholesky decomposition is used to
42          factor the matrix A (after equilibration if FACT = 'E') as
43             A = U**T * U,  if UPLO = 'U', or
44             A = L * L**T,  if UPLO = 'L',
45          where U is an upper triangular band matrix, and L is a lower
46          triangular band matrix.
47       3. If the leading i-by-i principal minor is not positive definite,
48          then the routine returns with INFO = i. Otherwise, the factored
49          form of A is used to estimate the condition number of the matrix
50          A.  If the reciprocal of the condition number is less than machine
51          precision, INFO = N+1 is returned as a warning, but the routine
52          still goes on to solve for X and compute error bounds as
53          described below.
54       4. The system of equations is solved for X using the factored form
55          of A.
56       5. Iterative refinement is applied to improve the computed solution
57          matrix and calculate error bounds and backward error estimates
58          for it.
59       6. If equilibration was used, the matrix X is premultiplied by
60          diag(S) so that it solves the original system before
61          equilibration.
62

ARGUMENTS

64       FACT    (input) CHARACTER*1
65               Specifies whether or not the factored form of the matrix  A  is
66               supplied  on  entry, and if not, whether the matrix A should be
67               equilibrated before it is factored.  = 'F':  On entry, AFB con‐
68               tains the factored form of A.  If EQUED = 'Y', the matrix A has
69               been equilibrated with scaling factors given by S.  AB and  AFB
70               will  not  be modified.  = 'N':  The matrix A will be copied to
71               AFB and factored.
72               = 'E':  The matrix A will be equilibrated  if  necessary,  then
73               copied to AFB and factored.
74
75       UPLO    (input) CHARACTER*1
76               = 'U':  Upper triangle of A is stored;
77               = 'L':  Lower triangle of A is stored.
78
79       N       (input) INTEGER
80               The  number  of linear equations, i.e., the order of the matrix
81               A.  N >= 0.
82
83       KD      (input) INTEGER
84               The number of superdiagonals of the matrix A if UPLO = 'U',  or
85               the number of subdiagonals if UPLO = 'L'.  KD >= 0.
86
87       NRHS    (input) INTEGER
88               The  number of right-hand sides, i.e., the number of columns of
89               the matrices B and X.  NRHS >= 0.
90
91       AB      (input/output) REAL array, dimension (LDAB,N)
92               On entry, the upper or lower triangle  of  the  symmetric  band
93               matrix A, stored in the first KD+1 rows of the array, except if
94               FACT = 'F' and EQUED = 'Y', then A  must  contain  the  equili‐
95               brated  matrix  diag(S)*A*diag(S).   The  j-th  column  of A is
96               stored in the j-th column of the array AB as follows: if UPLO =
97               'U',  AB(KD+1+i-j,j)  = A(i,j) for max(1,j-KD)<=i<=j; if UPLO =
98               'L', AB(1+i-j,j)    = A(i,j) for j<=i<=min(N,j+KD).  See  below
99               for further details.  On exit, if FACT = 'E' and EQUED = 'Y', A
100               is overwritten by diag(S)*A*diag(S).
101
102       LDAB    (input) INTEGER
103               The leading dimension of the array A.  LDAB >= KD+1.
104
105       AFB     (input or output) REAL array, dimension (LDAFB,N)
106               If FACT = 'F', then AFB is an input argument and on entry  con‐
107               tains the triangular factor U or L from the Cholesky factoriza‐
108               tion A = U**T*U or A = L*L**T of the band matrix A, in the same
109               storage  format as A (see AB).  If EQUED = 'Y', then AFB is the
110               factored form of the equilibrated matrix A.   If  FACT  =  'N',
111               then AFB is an output argument and on exit returns the triangu‐
112               lar factor U or L from the Cholesky factorization A = U**T*U or
113               A  = L*L**T.  If FACT = 'E', then AFB is an output argument and
114               on exit returns the triangular factor U or L from the  Cholesky
115               factorization  A  =  U**T*U  or  A = L*L**T of the equilibrated
116               matrix A (see the description of A for the form of the  equili‐
117               brated matrix).
118
119       LDAFB   (input) INTEGER
120               The leading dimension of the array AFB.  LDAFB >= KD+1.
121
122       EQUED   (input or output) CHARACTER*1
123               Specifies  the form of equilibration that was done.  = 'N':  No
124               equilibration (always true if FACT = 'N').
125               = 'Y':  Equilibration was done, i.e., A has  been  replaced  by
126               diag(S)  *  A  * diag(S).  EQUED is an input argument if FACT =
127               'F'; otherwise, it is an output argument.
128
129       S       (input or output) REAL array, dimension (N)
130               The scale factors for A; not accessed if EQUED = 'N'.  S is  an
131               input  argument  if FACT = 'F'; otherwise, S is an output argu‐
132               ment.  If FACT = 'F' and EQUED = 'Y', each element of S must be
133               positive.
134
135       B       (input/output) REAL array, dimension (LDB,NRHS)
136               On  entry, the N-by-NRHS right hand side matrix B.  On exit, if
137               EQUED = 'N', B is not modified; if EQUED = 'Y', B is  overwrit‐
138               ten by diag(S) * B.
139
140       LDB     (input) INTEGER
141               The leading dimension of the array B.  LDB >= max(1,N).
142
143       X       (output) REAL array, dimension (LDX,NRHS)
144               If  INFO  = 0 or INFO = N+1, the N-by-NRHS solution matrix X to
145               the original system of equations.  Note that if EQUED = 'Y',  A
146               and  B  are  modified  on exit, and the solution to the equili‐
147               brated system is inv(diag(S))*X.
148
149       LDX     (input) INTEGER
150               The leading dimension of the array X.  LDX >= max(1,N).
151
152       RCOND   (output) REAL
153               The estimate of the reciprocal condition number of the matrix A
154               after  equilibration  (if  done).   If  RCOND  is less than the
155               machine precision (in particular, if RCOND = 0), the matrix  is
156               singular  to working precision.  This condition is indicated by
157               a return code of INFO > 0.
158
159       FERR    (output) REAL array, dimension (NRHS)
160               The estimated forward error bound for each solution vector X(j)
161               (the  j-th  column  of the solution matrix X).  If XTRUE is the
162               true solution corresponding to X(j), FERR(j)  is  an  estimated
163               upper bound for the magnitude of the largest element in (X(j) -
164               XTRUE) divided by the magnitude of the largest element in X(j).
165               The  estimate  is as reliable as the estimate for RCOND, and is
166               almost always a slight overestimate of the true error.
167
168       BERR    (output) REAL array, dimension (NRHS)
169               The componentwise relative backward error of each solution vec‐
170               tor  X(j) (i.e., the smallest relative change in any element of
171               A or B that makes X(j) an exact solution).
172
173       WORK    (workspace) REAL array, dimension (3*N)
174
175       IWORK   (workspace) INTEGER array, dimension (N)
176
177       INFO    (output) INTEGER
178               = 0:  successful exit
179               < 0:  if INFO = -i, the i-th argument had an illegal value
180               > 0:  if INFO = i, and i is
181               <= N:  the leading minor of order i of A is not positive  defi‐
182               nite,  so  the  factorization  could  not be completed, and the
183               solution has not been computed. RCOND = 0 is returned.  =  N+1:
184               U  is  nonsingular,  but  RCOND is less than machine precision,
185               meaning that the matrix is singular to working precision.  Nev‐
186               ertheless,  the  solution and error bounds are computed because
187               there are a number of situations where  the  computed  solution
188               can be more accurate than the value of RCOND would suggest.
189

FURTHER DETAILS

191       The band storage scheme is illustrated by the following example, when N
192       = 6, KD = 2, and UPLO = 'U':
193       Two-dimensional storage of the symmetric matrix A:
194          a11  a12  a13
195               a22  a23  a24
196                    a33  a34  a35
197                         a44  a45  a46
198                              a55  a56
199          (aij=conjg(aji))         a66
200       Band storage of the upper triangle of A:
201           *    *   a13  a24  a35  a46
202           *   a12  a23  a34  a45  a56
203          a11  a22  a33  a44  a55  a66
204       Similarly, if UPLO = 'L' the format of A is as follows:
205          a11  a22  a33  a44  a55  a66
206          a21  a32  a43  a54  a65   *
207          a31  a42  a53  a64   *    *
208       Array elements marked * are not used by the routine.
209
210
211
212 LAPACK driver routine (version 3.N2o)vember 2008                       SPBSVX(1)
Impressum