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

ZLA_LIN_BERR computes a component-wise relative backward error.

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

Purpose:
    ZLA_LIN_BERR computes componentwise 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 componentwise 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 COMPLEX*16 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 zla_gerfsx_extended.f).
[out]BERR
          BERR is DOUBLE PRECISION array, dimension (NRHS)
     The componentwise relative backward error from the formula above.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Date
June 2016

Definition at line 103 of file zla_lin_berr.f.

103 *
104 * -- LAPACK computational routine (version 3.6.1) --
105 * -- LAPACK is a software package provided by Univ. of Tennessee, --
106 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
107 * June 2016
108 *
109 * .. Scalar Arguments ..
110  INTEGER n, nz, nrhs
111 * ..
112 * .. Array Arguments ..
113  DOUBLE PRECISION ayb( n, nrhs ), berr( nrhs )
114  COMPLEX*16 res( n, nrhs )
115 * ..
116 *
117 * =====================================================================
118 *
119 * .. Local Scalars ..
120  DOUBLE PRECISION tmp
121  INTEGER i, j
122  COMPLEX*16 cdum
123 * ..
124 * .. Intrinsic Functions ..
125  INTRINSIC abs, REAL, dimag, max
126 * ..
127 * .. External Functions ..
128  EXTERNAL dlamch
129  DOUBLE PRECISION dlamch
130  DOUBLE PRECISION safe1
131 * ..
132 * .. Statement Functions ..
133  COMPLEX*16 cabs1
134 * ..
135 * .. Statement Function Definitions ..
136  cabs1( cdum ) = abs( dble( cdum ) ) + abs( dimag( cdum ) )
137 * ..
138 * .. Executable Statements ..
139 *
140 * Adding SAFE1 to the numerator guards against spuriously zero
141 * residuals. A similar safeguard is in the CLA_yyAMV routine used
142 * to compute AYB.
143 *
144  safe1 = dlamch( 'Safe minimum' )
145  safe1 = (nz+1)*safe1
146 
147  DO j = 1, nrhs
148  berr(j) = 0.0d+0
149  DO i = 1, n
150  IF (ayb(i,j) .NE. 0.0d+0) THEN
151  tmp = (safe1 + cabs1(res(i,j)))/ayb(i,j)
152  berr(j) = max( berr(j), tmp )
153  END IF
154 *
155 * If AYB is exactly 0.0 (and if computed by CLA_yyAMV), then we know
156 * the true residual also must be exactly 0.0.
157 *
158  END DO
159  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: