 LAPACK  3.10.1 LAPACK: Linear Algebra PACKage

## ◆ zla_lin_berr()

 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.```

Definition at line 100 of file zla_lin_berr.f.

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