1DGERFSX(1) LAPACK routine (version 3.2)                             DGERFSX(1)
2
3
4

NAME

6       DGERFSX  -  DGERFSX improve the computed solution to a system of linear
7       equations and provides error bounds and backward error  estimates   for
8       the solution
9

SYNOPSIS

11       SUBROUTINE DGERFSX( TRANS,  EQUED,  N, NRHS, A, LDA, AF, LDAF, IPIV, R,
12                           C,  B,  LDB,  X,  LDX,  RCOND,  BERR,   N_ERR_BNDS,
13                           ERR_BNDS_NORM,   ERR_BNDS_COMP,   NPARAMS,  PARAMS,
14                           WORK, IWORK, INFO )
15
16           IMPLICIT        NONE
17
18           CHARACTER       TRANS, EQUED
19
20           INTEGER         INFO,  LDA,  LDAF,  LDB,  LDX,  N,  NRHS,  NPARAMS,
21                           N_ERR_BNDS
22
23           DOUBLE          PRECISION RCOND
24
25           INTEGER         IPIV( * ), IWORK( * )
26
27           DOUBLE          PRECISION  A( LDA, * ), AF( LDAF, * ), B( LDB, * ),
28                           X( LDX , * ), WORK( * )
29
30           DOUBLE          PRECISION R( * ), C( * ), PARAMS( * ), BERR(  *  ),
31                           ERR_BNDS_NORM( NRHS, * ), ERR_BNDS_COMP( NRHS, * )
32

PURPOSE

34          DGERFSX improves the computed solution to a system of linear
35          equations and provides error bounds and backward error estimates
36          for the solution.  In addition to normwise error bound, the code
37          provides maximum componentwise error bound if possible.  See
38          comments for ERR_BNDS_N and ERR_BNDS_C for details of the error
39          bounds.
40          The original system of linear equations may have been equilibrated
41          before calling this routine, as described by arguments EQUED, R
42          and C below. In this case, the solution and error bounds returned
43          are for the original unequilibrated system.
44

ARGUMENTS

46       Some  optional  parameters are bundled in the PARAMS array.  These set‐
47       tings determine how refinement is performed, but often the defaults are
48       acceptable.  If the defaults are acceptable, users can pass NPARAMS = 0
49       which prevents the source code from accessing the PARAMS argument.
50
51       TRANS   (input) CHARACTER*1
52               Specifies the form of the system of equations:
53               = 'N':  A * X = B     (No transpose)
54               = 'T':  A**T * X = B  (Transpose)
55               = 'C':  A**H * X = B  (Conjugate transpose = Transpose)
56
57       EQUED   (input) CHARACTER*1
58               Specifies the form of equilibration that was done to  A  before
59               calling  this  routine.  This is needed to compute the solution
60               and error bounds correctly.  = 'N':  No equilibration
61               = 'R':  Row equilibration, i.e., A has  been  premultiplied  by
62               diag(R).   = 'C':  Column equilibration, i.e., A has been post‐
63               multiplied by diag(C).  = 'B':  Both row and column  equilibra‐
64               tion,  i.e., A has been replaced by diag(R) * A * diag(C).  The
65               right hand side B has been changed accordingly.
66
67       N       (input) INTEGER
68               The order of the matrix A.  N >= 0.
69
70       NRHS    (input) INTEGER
71               The number of right hand sides, i.e., the number of columns  of
72               the matrices B and X.  NRHS >= 0.
73
74       A       (input) DOUBLE PRECISION array, dimension (LDA,N)
75               The original N-by-N matrix A.
76
77       LDA     (input) INTEGER
78               The leading dimension of the array A.  LDA >= max(1,N).
79
80       AF      (input) DOUBLE PRECISION array, dimension (LDAF,N)
81               The  factors  L  and U from the factorization A = P*L*U as com‐
82               puted by DGETRF.
83
84       LDAF    (input) INTEGER
85               The leading dimension of the array AF.  LDAF >= max(1,N).
86
87       IPIV    (input) INTEGER array, dimension (N)
88               The pivot indices from DGETRF; for 1<=i<=N, row i of the matrix
89               was interchanged with row IPIV(i).
90
91       R       (input or output) DOUBLE PRECISION array, dimension (N)
92               The  row scale factors for A.  If EQUED = 'R' or 'B', A is mul‐
93               tiplied on the left by diag(R); if EQUED = 'N' or 'C', R is not
94               accessed.   R  is an input argument if FACT = 'F'; otherwise, R
95               is an output argument.  If FACT = 'F' and EQUED = 'R'  or  'B',
96               each  element of R must be positive.  If R is output, each ele‐
97               ment of R is a power of the radix.  If R is input, each element
98               of  R should be a power of the radix to ensure a reliable solu‐
99               tion and error estimates. Scaling by powers of the  radix  does
100               not cause rounding errors unless the result underflows or over‐
101               flows. Rounding errors during scaling lead to refining  with  a
102               matrix  that  is  not equivalent to the input matrix, producing
103               error estimates that may not be reliable.
104
105       C       (input or output) DOUBLE PRECISION array, dimension (N)
106               The column scale factors for A.  If EQUED = 'C' or  'B',  A  is
107               multiplied on the right by diag(C); if EQUED = 'N' or 'R', C is
108               not accessed.  C is an input argument if FACT = 'F'; otherwise,
109               C is an output argument.  If FACT = 'F' and EQUED = 'C' or 'B',
110               each element of C must be positive.  If C is output, each  ele‐
111               ment of C is a power of the radix.  If C is input, each element
112               of C should be a power of the radix to ensure a reliable  solu‐
113               tion  and  error estimates. Scaling by powers of the radix does
114               not cause rounding errors unless the result underflows or over‐
115               flows.  Rounding  errors during scaling lead to refining with a
116               matrix that is not equivalent to the  input  matrix,  producing
117               error estimates that may not be reliable.
118
119       B       (input) DOUBLE PRECISION array, dimension (LDB,NRHS)
120               The right hand side matrix B.
121
122       LDB     (input) INTEGER
123               The leading dimension of the array B.  LDB >= max(1,N).
124
125       X       (input/output) DOUBLE PRECISION array, dimension (LDX,NRHS)
126               On  entry,  the  solution  matrix X, as computed by DGETRS.  On
127               exit, the improved solution matrix X.
128
129       LDX     (input) INTEGER
130               The leading dimension of the array X.  LDX >= max(1,N).
131
132       RCOND   (output) DOUBLE PRECISION
133               Reciprocal scaled condition number.  This is an estimate of the
134               reciprocal Skeel condition number of the matrix A after equili‐
135               bration (if done).  If this is less than the machine  precision
136               (in particular, if it is zero), the matrix is singular to work‐
137               ing precision.  Note that the error may still be small even  if
138               this  number  is  very small and the matrix appears ill- condi‐
139               tioned.
140
141       BERR    (output) DOUBLE PRECISION array, dimension (NRHS)
142               Componentwise relative backward error.  This is the  component‐
143               wise  relative  backward  error  of  each  solution vector X(j)
144               (i.e., the smallest relative change in any element of  A  or  B
145               that makes X(j) an exact solution).  N_ERR_BNDS (input) INTEGER
146               Number of error bounds to return for each right hand  side  and
147               each  type  (normwise or componentwise).  See ERR_BNDS_NORM and
148               ERR_BNDS_COMP below.
149
150       ERR_BNDS_NORM   (output)  DOUBLE  PRECISION  array,  dimension   (NRHS,
151       N_ERR_BNDS)
152                      For  each  right-hand side, this array contains informa‐
153                      tion about various error bounds  and  condition  numbers
154                      corresponding  to  the normwise relative error, which is
155                      defined as follows: Normwise relative error in  the  ith
156                      solution   vector:   max_j  (abs(XTRUE(j,i)  -  X(j,i)))
157                      ------------------------------  max_j  abs(X(j,i))   The
158                      array  is  indexed  by  the type of error information as
159                      described below. There currently are up to three  pieces
160                      of   information   returned.    The   first   index   in
161                      ERR_BNDS_NORM(i,:) corresponds  to  the  ith  right-hand
162                      side.  The second index in ERR_BNDS_NORM(:,err) contains
163                      the following three fields: err = 1 "Trust/don't  trust"
164                      boolean.  Trust  the  answer if the reciprocal condition
165                      number  is   less   than   the   threshold   sqrt(n)   *
166                      dlamch('Epsilon').   err  =  2 "Guaranteed" error bound:
167                      The estimated forward error, almost certainly  within  a
168                      factor of 10 of the true error so long as the next entry
169                      is   greater    than    the    threshold    sqrt(n)    *
170                      dlamch('Epsilon').  This  error  bound  should  only  be
171                      trusted if the  previous  boolean  is  true.   err  =  3
172                      Reciprocal condition number: Estimated normwise recipro‐
173                      cal  condition  number.   Compared  with  the  threshold
174                      sqrt(n)  *  dlamch('Epsilon')  to determine if the error
175                      estimate is  "guaranteed".  These  reciprocal  condition
176                      numbers  are  1  /  (norm(Z^{-1},inf) * norm(Z,inf)) for
177                      some appropriately scaled matrix Z.  Let Z = S*A,  where
178                      S  scales  each row by a power of the radix so all abso‐
179                      lute row sums of Z  are  approximately  1.   See  Lapack
180                      Working Note 165 for further details and extra cautions.
181
182       ERR_BNDS_COMP    (output)  DOUBLE  PRECISION  array,  dimension  (NRHS,
183       N_ERR_BNDS)
184                      For each right-hand side, this array  contains  informa‐
185                      tion  about  various  error bounds and condition numbers
186                      corresponding to the componentwise relative error, which
187                      is  defined  as follows: Componentwise relative error in
188                      the ith solution vector: abs(XTRUE(j,i) - X(j,i))  max_j
189                      ----------------------  abs(X(j,i)) The array is indexed
190                      by the right-hand side i  (on  which  the  componentwise
191                      relative  error depends), and the type of error informa‐
192                      tion as described below. There currently are up to three
193                      pieces of information returned for each right-hand side.
194                      If componentwise accuracy is not requested (PARAMS(3)  =
195                      0.0), then ERR_BNDS_COMP is not accessed.  If N_ERR_BNDS
196                      .LT. 3, then at most the  first  (:,N_ERR_BNDS)  entries
197                      are  returned.   The  first  index in ERR_BNDS_COMP(i,:)
198                      corresponds to the  ith  right-hand  side.   The  second
199                      index  in  ERR_BNDS_COMP(:,err)  contains  the following
200                      three fields: err = 1 "Trust/don't trust" boolean. Trust
201                      the  answer  if  the reciprocal condition number is less
202                      than the threshold sqrt(n) * dlamch('Epsilon').  err = 2
203                      "Guaranteed"  error  bound: The estimated forward error,
204                      almost certainly within a factor of 10 of the true error
205                      so  long as the next entry is greater than the threshold
206                      sqrt(n) * dlamch('Epsilon').  This  error  bound  should
207                      only  be trusted if the previous boolean is true.  err =
208                      3  Reciprocal condition number: Estimated  componentwise
209                      reciprocal  condition number.  Compared with the thresh‐
210                      old sqrt(n) *  dlamch('Epsilon')  to  determine  if  the
211                      error  estimate is "guaranteed". These reciprocal condi‐
212                      tion numbers are 1 /  (norm(Z^{-1},inf)  *  norm(Z,inf))
213                      for  some  appropriately  scaled  matrix  Z.   Let  Z  =
214                      S*(A*diag(x)), where x is the solution for  the  current
215                      right-hand  side and S scales each row of A*diag(x) by a
216                      power of the radix so all absolute row  sums  of  Z  are
217                      approximately  1.   See Lapack Working Note 165 for fur‐
218                      ther details and extra cautions.  NPARAMS (input)  INTE‐
219                      GER  Specifies  the  number of parameters set in PARAMS.
220                      If .LE. 0, the PARAMS  array  is  never  referenced  and
221                      default values are used.
222
223       PARAMS  (input / output) DOUBLE PRECISION array, dimension NPARAMS
224               Specifies  algorithm parameters.  If an entry is .LT. 0.0, then
225               that entry will be filled with  default  value  used  for  that
226               parameter.  Only positions up to NPARAMS are accessed; defaults
227               are      used       for       higher-numbered       parameters.
228               PARAMS(LA_LINRX_ITREF_I  =  1)  :  Whether to perform iterative
229               refinement or not.  Default: 1.0D+0
230               = 0.0 : No refinement is performed, and  no  error  bounds  are
231               computed.   =  1.0  : Use the double-precision refinement algo‐
232               rithm, possibly with doubled-single computations if the  compi‐
233               lation  environment  does not support DOUBLE PRECISION.  (other
234               values are reserved for future use) PARAMS(LA_LINRX_ITHRESH_I =
235               2)  :  Maximum  number  of  residual  computations  allowed for
236               refinement.  Default: 10
237               Aggressive: Set to 100 to permit convergence using  approximate
238               factorizations  or factorizations other than LU. If the factor‐
239               ization uses a technique other than Gaussian  elimination,  the
240               guarantees  in err_bnds_norm and err_bnds_comp may no longer be
241               trustworthy.  PARAMS(LA_LINRX_CWISE_I = 3) :  Flag  determining
242               if  the  code will attempt to find a solution with small compo‐
243               nentwise relative  error  in  the  double-precision  algorithm.
244               Positive  is  true, 0.0 is false.  Default: 1.0 (attempt compo‐
245               nentwise convergence)
246
247       WORK    (workspace) DOUBLE PRECISION array, dimension (4*N)
248
249       IWORK   (workspace) INTEGER array, dimension (N)
250
251       INFO    (output) INTEGER
252               = 0:  Successful exit. The solution to every right-hand side is
253               guaranteed.  < 0:  If INFO = -i, the i-th argument had an ille‐
254               gal value
255               > 0 and <= N:  U(INFO,INFO) is exactly zero.  The factorization
256               has  been  completed,  but the factor U is exactly singular, so
257               the solution and error bounds could not be computed. RCOND =  0
258               is  returned.   =  N+J:  The  solution corresponding to the Jth
259               right-hand side is not guaranteed. The solutions  corresponding
260               to  other  right- hand sides K with K > J may not be guaranteed
261               as well, but only the first such right-hand side  is  reported.
262               If  a  small  componentwise error is not requested (PARAMS(3) =
263               0.0) then the Jth right-hand side is the first with a  normwise
264               error  bound  that  is not guaranteed (the smallest J such that
265               ERR_BNDS_NORM(J,1) = 0.0). By default (PARAMS(3) = 1.0) the Jth
266               right-hand  side  is the first with either a normwise or compo‐
267               nentwise error bound that is not  guaranteed  (the  smallest  J
268               such that either ERR_BNDS_NORM(J,1) = 0.0 or ERR_BNDS_COMP(J,1)
269               =  0.0).  See  the   definition   of   ERR_BNDS_NORM(:,1)   and
270               ERR_BNDS_COMP(:,1).  To get information about all of the right-
271               hand sides check ERR_BNDS_NORM or ERR_BNDS_COMP.
272
273
274
275    LAPACK routine (version 3.2) November 2008                      DGERFSX(1)
Impressum