LAPACK  3.6.1
LAPACK: Linear Algebra PACKage
subroutine dla_lin_berr ( integer  N,
integer  NZ,
integer  NRHS,
double precision, dimension( n, nrhs )  RES,
double precision, dimension( n, nrhs )  AYB,
double precision, dimension( nrhs )  BERR 
)

DLA_LIN_BERR computes a component-wise relative backward error.

Download DLA_LIN_BERR + dependencies [TGZ] [ZIP] [TXT]

Purpose:
    DLA_LIN_BERR computes component-wise relative backward error from
    the formula
        max(i) ( abs(R(i)) / ( abs(op(A_s))*abs(Y) + abs(B_s) )(i) )
    where abs(Z) is the component-wise absolute value of the matrix
    or vector Z.
Parameters
[in]N
          N is INTEGER
     The number of linear equations, i.e., the order of the
     matrix A.  N >= 0.
[in]NZ
          NZ is INTEGER
     We add (NZ+1)*SLAMCH( 'Safe minimum' ) to R(i) in the numerator to
     guard against spuriously zero residuals. Default value is N.
[in]NRHS
          NRHS is INTEGER
     The number of right hand sides, i.e., the number of columns
     of the matrices AYB, RES, and BERR.  NRHS >= 0.
[in]RES
          RES is DOUBLE PRECISION array, dimension (N,NRHS)
     The residual matrix, i.e., the matrix R in the relative backward
     error formula above.
[in]AYB
          AYB is DOUBLE PRECISION array, dimension (N, NRHS)
     The denominator in the relative backward error formula above, i.e.,
     the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
     are from iterative refinement (see dla_gerfsx_extended.f).
[out]BERR
          BERR is DOUBLE PRECISION array, dimension (NRHS)
     The component-wise relative backward error from the formula above.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
September 2012

Definition at line 103 of file dla_lin_berr.f.

103 *
104 * -- LAPACK computational routine (version 3.4.2) --
105 * -- LAPACK is a software package provided by Univ. of Tennessee, --
106 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
107 * September 2012
108 *
109 * .. Scalar Arguments ..
110  INTEGER n, nz, nrhs
111 * ..
112 * .. Array Arguments ..
113  DOUBLE PRECISION ayb( n, nrhs ), berr( nrhs )
114  DOUBLE PRECISION res( n, nrhs )
115 * ..
116 *
117 * =====================================================================
118 *
119 * .. Local Scalars ..
120  DOUBLE PRECISION tmp
121  INTEGER i, j
122 * ..
123 * .. Intrinsic Functions ..
124  INTRINSIC abs, max
125 * ..
126 * .. External Functions ..
127  EXTERNAL dlamch
128  DOUBLE PRECISION dlamch
129  DOUBLE PRECISION safe1
130 * ..
131 * .. Executable Statements ..
132 *
133 * Adding SAFE1 to the numerator guards against spuriously zero
134 * residuals. A similar safeguard is in the SLA_yyAMV routine used
135 * to compute AYB.
136 *
137  safe1 = dlamch( 'Safe minimum' )
138  safe1 = (nz+1)*safe1
139 
140  DO j = 1, nrhs
141  berr(j) = 0.0d+0
142  DO i = 1, n
143  IF (ayb(i,j) .NE. 0.0d+0) THEN
144  tmp = (safe1+abs(res(i,j)))/ayb(i,j)
145  berr(j) = max( berr(j), tmp )
146  END IF
147 *
148 * If AYB is exactly 0.0 (and if computed by SLA_yyAMV), then we know
149 * the true residual also must be exactly 0.0.
150 *
151  END DO
152  END DO
double precision function dlamch(CMACH)
DLAMCH
Definition: dlamch.f:65

Here is the call graph for this function:

Here is the caller graph for this function: