LAPACK
3.9.0
LAPACK: Linear Algebra PACKage
claqsp.f
Go to the documentation of this file.
1
*> \brief \b CLAQSP scales a symmetric/Hermitian matrix in packed storage, using scaling factors computed by sppequ.
2
*
3
* =========== DOCUMENTATION ===========
4
*
5
* Online html documentation available at
6
* http://www.netlib.org/lapack/explore-html/
7
*
8
*> \htmlonly
9
*> Download CLAQSP + dependencies
10
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/claqsp.f">
11
*> [TGZ]</a>
12
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/claqsp.f">
13
*> [ZIP]</a>
14
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/claqsp.f">
15
*> [TXT]</a>
16
*> \endhtmlonly
17
*
18
* Definition:
19
* ===========
20
*
21
* SUBROUTINE CLAQSP( UPLO, N, AP, S, SCOND, AMAX, EQUED )
22
*
23
* .. Scalar Arguments ..
24
* CHARACTER EQUED, UPLO
25
* INTEGER N
26
* REAL AMAX, SCOND
27
* ..
28
* .. Array Arguments ..
29
* REAL S( * )
30
* COMPLEX AP( * )
31
* ..
32
*
33
*
34
*> \par Purpose:
35
* =============
36
*>
37
*> \verbatim
38
*>
39
*> CLAQSP equilibrates a symmetric matrix A using the scaling factors
40
*> in the vector S.
41
*> \endverbatim
42
*
43
* Arguments:
44
* ==========
45
*
46
*> \param[in] UPLO
47
*> \verbatim
48
*> UPLO is CHARACTER*1
49
*> Specifies whether the upper or lower triangular part of the
50
*> symmetric matrix A is stored.
51
*> = 'U': Upper triangular
52
*> = 'L': Lower triangular
53
*> \endverbatim
54
*>
55
*> \param[in] N
56
*> \verbatim
57
*> N is INTEGER
58
*> The order of the matrix A. N >= 0.
59
*> \endverbatim
60
*>
61
*> \param[in,out] AP
62
*> \verbatim
63
*> AP is COMPLEX array, dimension (N*(N+1)/2)
64
*> On entry, the upper or lower triangle of the symmetric matrix
65
*> A, packed columnwise in a linear array. The j-th column of A
66
*> is stored in the array AP as follows:
67
*> if UPLO = 'U', AP(i + (j-1)*j/2) = A(i,j) for 1<=i<=j;
68
*> if UPLO = 'L', AP(i + (j-1)*(2n-j)/2) = A(i,j) for j<=i<=n.
69
*>
70
*> On exit, the equilibrated matrix: diag(S) * A * diag(S), in
71
*> the same storage format as A.
72
*> \endverbatim
73
*>
74
*> \param[in] S
75
*> \verbatim
76
*> S is REAL array, dimension (N)
77
*> The scale factors for A.
78
*> \endverbatim
79
*>
80
*> \param[in] SCOND
81
*> \verbatim
82
*> SCOND is REAL
83
*> Ratio of the smallest S(i) to the largest S(i).
84
*> \endverbatim
85
*>
86
*> \param[in] AMAX
87
*> \verbatim
88
*> AMAX is REAL
89
*> Absolute value of largest matrix entry.
90
*> \endverbatim
91
*>
92
*> \param[out] EQUED
93
*> \verbatim
94
*> EQUED is CHARACTER*1
95
*> Specifies whether or not equilibration was done.
96
*> = 'N': No equilibration.
97
*> = 'Y': Equilibration was done, i.e., A has been replaced by
98
*> diag(S) * A * diag(S).
99
*> \endverbatim
100
*
101
*> \par Internal Parameters:
102
* =========================
103
*>
104
*> \verbatim
105
*> THRESH is a threshold value used to decide if scaling should be done
106
*> based on the ratio of the scaling factors. If SCOND < THRESH,
107
*> scaling is done.
108
*>
109
*> LARGE and SMALL are threshold values used to decide if scaling should
110
*> be done based on the absolute size of the largest matrix element.
111
*> If AMAX > LARGE or AMAX < SMALL, scaling is done.
112
*> \endverbatim
113
*
114
* Authors:
115
* ========
116
*
117
*> \author Univ. of Tennessee
118
*> \author Univ. of California Berkeley
119
*> \author Univ. of Colorado Denver
120
*> \author NAG Ltd.
121
*
122
*> \date December 2016
123
*
124
*> \ingroup complexOTHERauxiliary
125
*
126
* =====================================================================
127
SUBROUTINE
claqsp
( UPLO, N, AP, S, SCOND, AMAX, EQUED )
128
*
129
* -- LAPACK auxiliary routine (version 3.7.0) --
130
* -- LAPACK is a software package provided by Univ. of Tennessee, --
131
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
132
* December 2016
133
*
134
* .. Scalar Arguments ..
135
CHARACTER
EQUED, UPLO
136
INTEGER
N
137
REAL
AMAX, SCOND
138
* ..
139
* .. Array Arguments ..
140
REAL
S( * )
141
COMPLEX
AP( * )
142
* ..
143
*
144
* =====================================================================
145
*
146
* .. Parameters ..
147
REAL
ONE, THRESH
148
parameter( one = 1.0e+0, thresh = 0.1e+0 )
149
* ..
150
* .. Local Scalars ..
151
INTEGER
I, J, JC
152
REAL
CJ, LARGE, SMALL
153
* ..
154
* .. External Functions ..
155
LOGICAL
LSAME
156
REAL
SLAMCH
157
EXTERNAL
lsame, slamch
158
* ..
159
* .. Executable Statements ..
160
*
161
* Quick return if possible
162
*
163
IF
( n.LE.0 )
THEN
164
equed =
'N'
165
RETURN
166
END IF
167
*
168
* Initialize LARGE and SMALL.
169
*
170
small = slamch(
'Safe minimum'
) / slamch(
'Precision'
)
171
large = one / small
172
*
173
IF
( scond.GE.thresh .AND. amax.GE.small .AND. amax.LE.large )
THEN
174
*
175
* No equilibration
176
*
177
equed =
'N'
178
ELSE
179
*
180
* Replace A by diag(S) * A * diag(S).
181
*
182
IF
( lsame( uplo,
'U'
) )
THEN
183
*
184
* Upper triangle of A is stored.
185
*
186
jc = 1
187
DO
20 j = 1, n
188
cj = s( j )
189
DO
10 i = 1, j
190
ap( jc+i-1 ) = cj*s( i )*ap( jc+i-1 )
191
10
CONTINUE
192
jc = jc + j
193
20
CONTINUE
194
ELSE
195
*
196
* Lower triangle of A is stored.
197
*
198
jc = 1
199
DO
40 j = 1, n
200
cj = s( j )
201
DO
30 i = j, n
202
ap( jc+i-j ) = cj*s( i )*ap( jc+i-j )
203
30
CONTINUE
204
jc = jc + n - j + 1
205
40
CONTINUE
206
END IF
207
equed =
'Y'
208
END IF
209
*
210
RETURN
211
*
212
* End of CLAQSP
213
*
214
END
claqsp
subroutine claqsp(UPLO, N, AP, S, SCOND, AMAX, EQUED)
CLAQSP scales a symmetric/Hermitian matrix in packed storage, using scaling factors computed by sppeq...
Definition:
claqsp.f:128
SRC
claqsp.f
Generated on Wed May 5 2021 15:10:38 for LAPACK by
1.8.16