1DGTSVX(1) LAPACK routine (version 3.2) DGTSVX(1)
2
3
4
6 DGTSVX - uses the LU factorization to compute the solution to a real
7 system of linear equations A * X = B or A**T * X = B,
8
10 SUBROUTINE DGTSVX( FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2,
11 IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK,
12 IWORK, INFO )
13
14 CHARACTER FACT, TRANS
15
16 INTEGER INFO, LDB, LDX, N, NRHS
17
18 DOUBLE PRECISION RCOND
19
20 INTEGER IPIV( * ), IWORK( * )
21
22 DOUBLE PRECISION B( LDB, * ), BERR( * ), D( * ), DF( * ),
23 DL( * ), DLF( * ), DU( * ), DU2( * ), DUF( * ),
24 FERR( * ), WORK( * ), X( LDX, * )
25
27 DGTSVX uses the LU factorization to compute the solution to a real sys‐
28 tem of linear equations A * X = B or A**T * X = B, where A is a tridi‐
29 agonal matrix of order N 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
34 The following steps are performed:
35 1. If FACT = 'N', the LU decomposition is used to factor the matrix A
36 as A = L * U, where L is a product of permutation and unit lower
37 bidiagonal matrices and U is upper triangular with nonzeros in
38 only the main diagonal and first two superdiagonals.
39 2. If some U(i,i)=0, so that U is exactly singular, then the routine
40 returns with INFO = i. Otherwise, the factored form of A is used
41 to estimate the condition number of the matrix A. If the
42 reciprocal of the condition number is less than machine precision,
43 INFO = N+1 is returned as a warning, but the routine still goes on
44 to solve for X and compute error bounds as described below. 3. The
45 system of equations is solved for X using the factored form
46 of A.
47 4. Iterative refinement is applied to improve the computed solution
48 matrix and calculate error bounds and backward error estimates
49 for it.
50
52 FACT (input) CHARACTER*1
53 Specifies whether or not the factored form of A has been sup‐
54 plied on entry. = 'F': DLF, DF, DUF, DU2, and IPIV contain
55 the factored form of A; DL, D, DU, DLF, DF, DUF, DU2 and IPIV
56 will not be modified. = 'N': The matrix will be copied to
57 DLF, DF, and DUF and factored.
58
59 TRANS (input) CHARACTER*1
60 Specifies the form of the system of equations:
61 = 'N': A * X = B (No transpose)
62 = 'T': A**T * X = B (Transpose)
63 = 'C': A**H * X = B (Conjugate transpose = Transpose)
64
65 N (input) INTEGER
66 The order of the matrix A. N >= 0.
67
68 NRHS (input) INTEGER
69 The number of right hand sides, i.e., the number of columns of
70 the matrix B. NRHS >= 0.
71
72 DL (input) DOUBLE PRECISION array, dimension (N-1)
73 The (n-1) subdiagonal elements of A.
74
75 D (input) DOUBLE PRECISION array, dimension (N)
76 The n diagonal elements of A.
77
78 DU (input) DOUBLE PRECISION array, dimension (N-1)
79 The (n-1) superdiagonal elements of A.
80
81 DLF (input or output) DOUBLE PRECISION array, dimension (N-1)
82 If FACT = 'F', then DLF is an input argument and on entry con‐
83 tains the (n-1) multipliers that define the matrix L from the
84 LU factorization of A as computed by DGTTRF. If FACT = 'N',
85 then DLF is an output argument and on exit contains the (n-1)
86 multipliers that define the matrix L from the LU factorization
87 of A.
88
89 DF (input or output) DOUBLE PRECISION array, dimension (N)
90 If FACT = 'F', then DF is an input argument and on entry con‐
91 tains the n diagonal elements of the upper triangular matrix U
92 from the LU factorization of A. If FACT = 'N', then DF is an
93 output argument and on exit contains the n diagonal elements of
94 the upper triangular matrix U from the LU factorization of A.
95
96 DUF (input or output) DOUBLE PRECISION array, dimension (N-1)
97 If FACT = 'F', then DUF is an input argument and on entry con‐
98 tains the (n-1) elements of the first superdiagonal of U. If
99 FACT = 'N', then DUF is an output argument and on exit contains
100 the (n-1) elements of the first superdiagonal of U.
101
102 DU2 (input or output) DOUBLE PRECISION array, dimension (N-2)
103 If FACT = 'F', then DU2 is an input argument and on entry con‐
104 tains the (n-2) elements of the second superdiagonal of U. If
105 FACT = 'N', then DU2 is an output argument and on exit contains
106 the (n-2) elements of the second superdiagonal of U.
107
108 IPIV (input or output) INTEGER array, dimension (N)
109 If FACT = 'F', then IPIV is an input argument and on entry con‐
110 tains the pivot indices from the LU factorization of A as com‐
111 puted by DGTTRF. If FACT = 'N', then IPIV is an output argu‐
112 ment and on exit contains the pivot indices from the LU factor‐
113 ization of A; row i of the matrix was interchanged with row
114 IPIV(i). IPIV(i) will always be either i or i+1; IPIV(i) = i
115 indicates a row interchange was not required.
116
117 B (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
118 The N-by-NRHS right hand side matrix B.
119
120 LDB (input) INTEGER
121 The leading dimension of the array B. LDB >= max(1,N).
122
123 X (output) DOUBLE PRECISION array, dimension (LDX,NRHS)
124 If INFO = 0 or INFO = N+1, the N-by-NRHS solution matrix X.
125
126 LDX (input) INTEGER
127 The leading dimension of the array X. LDX >= max(1,N).
128
129 RCOND (output) DOUBLE PRECISION
130 The estimate of the reciprocal condition number of the matrix
131 A. If RCOND is less than the machine precision (in particular,
132 if RCOND = 0), the matrix is singular to working precision.
133 This condition is indicated by a return code of INFO > 0.
134
135 FERR (output) DOUBLE PRECISION array, dimension (NRHS)
136 The estimated forward error bound for each solution vector X(j)
137 (the j-th column of the solution matrix X). If XTRUE is the
138 true solution corresponding to X(j), FERR(j) is an estimated
139 upper bound for the magnitude of the largest element in (X(j) -
140 XTRUE) divided by the magnitude of the largest element in X(j).
141 The estimate is as reliable as the estimate for RCOND, and is
142 almost always a slight overestimate of the true error.
143
144 BERR (output) DOUBLE PRECISION array, dimension (NRHS)
145 The componentwise relative backward error of each solution vec‐
146 tor X(j) (i.e., the smallest relative change in any element of
147 A or B that makes X(j) an exact solution).
148
149 WORK (workspace) DOUBLE PRECISION array, dimension (3*N)
150
151 IWORK (workspace) INTEGER array, dimension (N)
152
153 INFO (output) INTEGER
154 = 0: successful exit
155 < 0: if INFO = -i, the i-th argument had an illegal value
156 > 0: if INFO = i, and i is
157 <= N: U(i,i) is exactly zero. The factorization has not been
158 completed unless i = N, but the factor U is exactly singular,
159 so the solution and error bounds could not be computed. RCOND
160 = 0 is returned. = N+1: U is nonsingular, but RCOND is less
161 than machine precision, meaning that the matrix is singular to
162 working precision. Nevertheless, the solution and error bounds
163 are computed because there are a number of situations where the
164 computed solution can be more accurate than the value of RCOND
165 would suggest.
166
167
168
169 LAPACK routine (version 3.2) November 2008 DGTSVX(1)