LAPACK
3.4.2
LAPACK: Linear Algebra PACKage
Main Page
Modules
Files
File List
File Members
All
Files
Functions
Groups
sla_lin_berr.f
Go to the documentation of this file.
1
*> \brief \b SLA_LIN_BERR computes a component-wise relative backward error.
2
*
3
* =========== DOCUMENTATION ===========
4
*
5
* Online html documentation available at
6
* http://www.netlib.org/lapack/explore-html/
7
*
8
*> \htmlonly
9
*> Download SLA_LIN_BERR + dependencies
10
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/sla_lin_berr.f">
11
*> [TGZ]</a>
12
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/sla_lin_berr.f">
13
*> [ZIP]</a>
14
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/sla_lin_berr.f">
15
*> [TXT]</a>
16
*> \endhtmlonly
17
*
18
* Definition:
19
* ===========
20
*
21
* SUBROUTINE SLA_LIN_BERR ( N, NZ, NRHS, RES, AYB, BERR )
22
*
23
* .. Scalar Arguments ..
24
* INTEGER N, NZ, NRHS
25
* ..
26
* .. Array Arguments ..
27
* REAL AYB( N, NRHS ), BERR( NRHS )
28
* REAL RES( N, NRHS )
29
* ..
30
*
31
*
32
*> \par Purpose:
33
* =============
34
*>
35
*> \verbatim
36
*>
37
*> SLA_LIN_BERR computes componentwise relative backward error from
38
*> the formula
39
*> max(i) ( abs(R(i)) / ( abs(op(A_s))*abs(Y) + abs(B_s) )(i) )
40
*> where abs(Z) is the componentwise absolute value of the matrix
41
*> or vector Z.
42
*> \endverbatim
43
*
44
* Arguments:
45
* ==========
46
*
47
*> \param[in] N
48
*> \verbatim
49
*> N is INTEGER
50
*> The number of linear equations, i.e., the order of the
51
*> matrix A. N >= 0.
52
*> \endverbatim
53
*>
54
*> \param[in] NZ
55
*> \verbatim
56
*> NZ is INTEGER
57
*> We add (NZ+1)*SLAMCH( 'Safe minimum' ) to R(i) in the numerator to
58
*> guard against spuriously zero residuals. Default value is N.
59
*> \endverbatim
60
*>
61
*> \param[in] NRHS
62
*> \verbatim
63
*> NRHS is INTEGER
64
*> The number of right hand sides, i.e., the number of columns
65
*> of the matrices AYB, RES, and BERR. NRHS >= 0.
66
*> \endverbatim
67
*>
68
*> \param[in] RES
69
*> \verbatim
70
*> RES is REAL array, dimension (N,NRHS)
71
*> The residual matrix, i.e., the matrix R in the relative backward
72
*> error formula above.
73
*> \endverbatim
74
*>
75
*> \param[in] AYB
76
*> \verbatim
77
*> AYB is REAL array, dimension (N, NRHS)
78
*> The denominator in the relative backward error formula above, i.e.,
79
*> the matrix abs(op(A_s))*abs(Y) + abs(B_s). The matrices A, Y, and B
80
*> are from iterative refinement (see sla_gerfsx_extended.f).
81
*> \endverbatim
82
*>
83
*> \param[out] BERR
84
*> \verbatim
85
*> BERR is REAL array, dimension (NRHS)
86
*> The componentwise relative backward error from the formula above.
87
*> \endverbatim
88
*
89
* Authors:
90
* ========
91
*
92
*> \author Univ. of Tennessee
93
*> \author Univ. of California Berkeley
94
*> \author Univ. of Colorado Denver
95
*> \author NAG Ltd.
96
*
97
*> \date September 2012
98
*
99
*> \ingroup realOTHERcomputational
100
*
101
* =====================================================================
102
SUBROUTINE
sla_lin_berr
( N, NZ, NRHS, RES, AYB, BERR )
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
REAL
ayb( n, nrhs ), berr( nrhs )
114
REAL
res( n, nrhs )
115
* ..
116
*
117
* =====================================================================
118
*
119
* .. Local Scalars ..
120
REAL
tmp
121
INTEGER
i, j
122
* ..
123
* .. Intrinsic Functions ..
124
INTRINSIC
abs, max
125
* ..
126
* .. External Functions ..
127
EXTERNAL
slamch
128
REAL
slamch
129
REAL
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 =
slamch
(
'Safe minimum'
)
138
safe1 = (nz+1)*safe1
139
140
DO
j = 1, nrhs
141
berr(j) = 0.0
142
DO
i = 1, n
143
IF
(ayb(i,j) .NE. 0.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
153
END
SRC
sla_lin_berr.f
Generated on Tue Sep 25 2012 16:27:55 for LAPACK by
1.8.1.1