LAPACK 3.12.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ serrqr()

subroutine serrqr ( character*3  path,
integer  nunit 
)

SERRQR

Purpose:
 SERRQR tests the error exits for the REAL routines
 that use the QR decomposition of a general matrix.
Parameters
[in]PATH
          PATH is CHARACTER*3
          The LAPACK path name for the routines to be tested.
[in]NUNIT
          NUNIT is INTEGER
          The unit number for output.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

Definition at line 54 of file serrqr.f.

55*
56* -- LAPACK test routine --
57* -- LAPACK is a software package provided by Univ. of Tennessee, --
58* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
59*
60* .. Scalar Arguments ..
61 CHARACTER*3 PATH
62 INTEGER NUNIT
63* ..
64*
65* =====================================================================
66*
67* .. Parameters ..
68 INTEGER NMAX
69 parameter( nmax = 2 )
70* ..
71* .. Local Scalars ..
72 INTEGER I, INFO, J
73* ..
74* .. Local Arrays ..
75 REAL A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
76 $ W( NMAX ), X( NMAX )
77* ..
78* .. External Subroutines ..
79 EXTERNAL alaesm, chkxer, sgeqr2, sgeqr2p, sgeqrf,
81 $ sormqr
82* ..
83* .. Scalars in Common ..
84 LOGICAL LERR, OK
85 CHARACTER*32 SRNAMT
86 INTEGER INFOT, NOUT
87* ..
88* .. Common blocks ..
89 COMMON / infoc / infot, nout, ok, lerr
90 COMMON / srnamc / srnamt
91* ..
92* .. Intrinsic Functions ..
93 INTRINSIC real
94* ..
95* .. Executable Statements ..
96*
97 nout = nunit
98 WRITE( nout, fmt = * )
99*
100* Set the variables to innocuous values.
101*
102 DO 20 j = 1, nmax
103 DO 10 i = 1, nmax
104 a( i, j ) = 1. / real( i+j )
105 af( i, j ) = 1. / real( i+j )
106 10 CONTINUE
107 b( j ) = 0.
108 w( j ) = 0.
109 x( j ) = 0.
110 20 CONTINUE
111 ok = .true.
112*
113* Error exits for QR factorization
114*
115* SGEQRF
116*
117 srnamt = 'SGEQRF'
118 infot = 1
119 CALL sgeqrf( -1, 0, a, 1, b, w, 1, info )
120 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
121 infot = 2
122 CALL sgeqrf( 0, -1, a, 1, b, w, 1, info )
123 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
124 infot = 4
125 CALL sgeqrf( 2, 1, a, 1, b, w, 1, info )
126 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
127 infot = 7
128 CALL sgeqrf( 1, 2, a, 1, b, w, 1, info )
129 CALL chkxer( 'SGEQRF', infot, nout, lerr, ok )
130*
131* SGEQRFP
132*
133 srnamt = 'SGEQRFP'
134 infot = 1
135 CALL sgeqrfp( -1, 0, a, 1, b, w, 1, info )
136 CALL chkxer( 'SGEQRFP', infot, nout, lerr, ok )
137 infot = 2
138 CALL sgeqrfp( 0, -1, a, 1, b, w, 1, info )
139 CALL chkxer( 'SGEQRFP', infot, nout, lerr, ok )
140 infot = 4
141 CALL sgeqrfp( 2, 1, a, 1, b, w, 1, info )
142 CALL chkxer( 'SGEQRFP', infot, nout, lerr, ok )
143 infot = 7
144 CALL sgeqrfp( 1, 2, a, 1, b, w, 1, info )
145 CALL chkxer( 'SGEQRFP', infot, nout, lerr, ok )
146*
147* SGEQR2
148*
149 srnamt = 'SGEQR2'
150 infot = 1
151 CALL sgeqr2( -1, 0, a, 1, b, w, info )
152 CALL chkxer( 'SGEQR2', infot, nout, lerr, ok )
153 infot = 2
154 CALL sgeqr2( 0, -1, a, 1, b, w, info )
155 CALL chkxer( 'SGEQR2', infot, nout, lerr, ok )
156 infot = 4
157 CALL sgeqr2( 2, 1, a, 1, b, w, info )
158 CALL chkxer( 'SGEQR2', infot, nout, lerr, ok )
159*
160* SGEQR2P
161*
162 srnamt = 'SGEQR2P'
163 infot = 1
164 CALL sgeqr2p( -1, 0, a, 1, b, w, info )
165 CALL chkxer( 'SGEQR2P', infot, nout, lerr, ok )
166 infot = 2
167 CALL sgeqr2p( 0, -1, a, 1, b, w, info )
168 CALL chkxer( 'SGEQR2P', infot, nout, lerr, ok )
169 infot = 4
170 CALL sgeqr2p( 2, 1, a, 1, b, w, info )
171 CALL chkxer( 'SGEQR2P', infot, nout, lerr, ok )
172*
173* SORGQR
174*
175 srnamt = 'SORGQR'
176 infot = 1
177 CALL sorgqr( -1, 0, 0, a, 1, x, w, 1, info )
178 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
179 infot = 2
180 CALL sorgqr( 0, -1, 0, a, 1, x, w, 1, info )
181 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
182 infot = 2
183 CALL sorgqr( 1, 2, 0, a, 1, x, w, 2, info )
184 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
185 infot = 3
186 CALL sorgqr( 0, 0, -1, a, 1, x, w, 1, info )
187 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
188 infot = 3
189 CALL sorgqr( 1, 1, 2, a, 1, x, w, 1, info )
190 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
191 infot = 5
192 CALL sorgqr( 2, 2, 0, a, 1, x, w, 2, info )
193 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
194 infot = 8
195 CALL sorgqr( 2, 2, 0, a, 2, x, w, 1, info )
196 CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
197*
198* SORG2R
199*
200 srnamt = 'SORG2R'
201 infot = 1
202 CALL sorg2r( -1, 0, 0, a, 1, x, w, info )
203 CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
204 infot = 2
205 CALL sorg2r( 0, -1, 0, a, 1, x, w, info )
206 CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
207 infot = 2
208 CALL sorg2r( 1, 2, 0, a, 1, x, w, info )
209 CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
210 infot = 3
211 CALL sorg2r( 0, 0, -1, a, 1, x, w, info )
212 CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
213 infot = 3
214 CALL sorg2r( 2, 1, 2, a, 2, x, w, info )
215 CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
216 infot = 5
217 CALL sorg2r( 2, 1, 0, a, 1, x, w, info )
218 CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
219*
220* SORMQR
221*
222 srnamt = 'SORMQR'
223 infot = 1
224 CALL sormqr( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
225 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
226 infot = 2
227 CALL sormqr( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
228 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
229 infot = 3
230 CALL sormqr( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
231 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
232 infot = 4
233 CALL sormqr( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
234 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
235 infot = 5
236 CALL sormqr( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, 1, info )
237 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
238 infot = 5
239 CALL sormqr( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, 1, info )
240 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
241 infot = 5
242 CALL sormqr( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
243 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
244 infot = 7
245 CALL sormqr( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
246 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
247 infot = 7
248 CALL sormqr( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
249 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
250 infot = 10
251 CALL sormqr( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
252 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
253 infot = 12
254 CALL sormqr( 'L', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
255 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
256 infot = 12
257 CALL sormqr( 'R', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
258 CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
259*
260* SORM2R
261*
262 srnamt = 'SORM2R'
263 infot = 1
264 CALL sorm2r( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, info )
265 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
266 infot = 2
267 CALL sorm2r( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, info )
268 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
269 infot = 3
270 CALL sorm2r( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, info )
271 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
272 infot = 4
273 CALL sorm2r( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, info )
274 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
275 infot = 5
276 CALL sorm2r( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, info )
277 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
278 infot = 5
279 CALL sorm2r( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, info )
280 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
281 infot = 5
282 CALL sorm2r( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, info )
283 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
284 infot = 7
285 CALL sorm2r( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, info )
286 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
287 infot = 7
288 CALL sorm2r( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, info )
289 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
290 infot = 10
291 CALL sorm2r( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, info )
292 CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
293*
294* Print a summary line.
295*
296 CALL alaesm( path, ok, nout )
297*
298 RETURN
299*
300* End of SERRQR
301*
subroutine alaesm(path, ok, nout)
ALAESM
Definition alaesm.f:63
subroutine chkxer(srnamt, infot, nout, lerr, ok)
Definition cblat2.f:3224
subroutine sgeqr2(m, n, a, lda, tau, work, info)
SGEQR2 computes the QR factorization of a general rectangular matrix using an unblocked algorithm.
Definition sgeqr2.f:130
subroutine sgeqr2p(m, n, a, lda, tau, work, info)
SGEQR2P computes the QR factorization of a general rectangular matrix with non-negative diagonal elem...
Definition sgeqr2p.f:134
subroutine sgeqrf(m, n, a, lda, tau, work, lwork, info)
SGEQRF
Definition sgeqrf.f:146
subroutine sgeqrfp(m, n, a, lda, tau, work, lwork, info)
SGEQRFP
Definition sgeqrfp.f:149
subroutine sorg2r(m, n, k, a, lda, tau, work, info)
SORG2R generates all or part of the orthogonal matrix Q from a QR factorization determined by sgeqrf ...
Definition sorg2r.f:114
subroutine sorgqr(m, n, k, a, lda, tau, work, lwork, info)
SORGQR
Definition sorgqr.f:128
subroutine sorm2r(side, trans, m, n, k, a, lda, tau, c, ldc, work, info)
SORM2R multiplies a general matrix by the orthogonal matrix from a QR factorization determined by sge...
Definition sorm2r.f:159
subroutine sormqr(side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
SORMQR
Definition sormqr.f:168
Here is the call graph for this function:
Here is the caller graph for this function: