LAPACK  3.10.0
LAPACK: Linear Algebra PACKage

◆ 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 * SGEQRS
174 *
175  srnamt = 'SGEQRS'
176  infot = 1
177  CALL sgeqrs( -1, 0, 0, a, 1, x, b, 1, w, 1, info )
178  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
179  infot = 2
180  CALL sgeqrs( 0, -1, 0, a, 1, x, b, 1, w, 1, info )
181  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
182  infot = 2
183  CALL sgeqrs( 1, 2, 0, a, 2, x, b, 2, w, 1, info )
184  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
185  infot = 3
186  CALL sgeqrs( 0, 0, -1, a, 1, x, b, 1, w, 1, info )
187  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
188  infot = 5
189  CALL sgeqrs( 2, 1, 0, a, 1, x, b, 2, w, 1, info )
190  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
191  infot = 8
192  CALL sgeqrs( 2, 1, 0, a, 2, x, b, 1, w, 1, info )
193  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
194  infot = 10
195  CALL sgeqrs( 1, 1, 2, a, 1, x, b, 1, w, 1, info )
196  CALL chkxer( 'SGEQRS', infot, nout, lerr, ok )
197 *
198 * SORGQR
199 *
200  srnamt = 'SORGQR'
201  infot = 1
202  CALL sorgqr( -1, 0, 0, a, 1, x, w, 1, info )
203  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
204  infot = 2
205  CALL sorgqr( 0, -1, 0, a, 1, x, w, 1, info )
206  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
207  infot = 2
208  CALL sorgqr( 1, 2, 0, a, 1, x, w, 2, info )
209  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
210  infot = 3
211  CALL sorgqr( 0, 0, -1, a, 1, x, w, 1, info )
212  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
213  infot = 3
214  CALL sorgqr( 1, 1, 2, a, 1, x, w, 1, info )
215  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
216  infot = 5
217  CALL sorgqr( 2, 2, 0, a, 1, x, w, 2, info )
218  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
219  infot = 8
220  CALL sorgqr( 2, 2, 0, a, 2, x, w, 1, info )
221  CALL chkxer( 'SORGQR', infot, nout, lerr, ok )
222 *
223 * SORG2R
224 *
225  srnamt = 'SORG2R'
226  infot = 1
227  CALL sorg2r( -1, 0, 0, a, 1, x, w, info )
228  CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
229  infot = 2
230  CALL sorg2r( 0, -1, 0, a, 1, x, w, info )
231  CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
232  infot = 2
233  CALL sorg2r( 1, 2, 0, a, 1, x, w, info )
234  CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
235  infot = 3
236  CALL sorg2r( 0, 0, -1, a, 1, x, w, info )
237  CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
238  infot = 3
239  CALL sorg2r( 2, 1, 2, a, 2, x, w, info )
240  CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
241  infot = 5
242  CALL sorg2r( 2, 1, 0, a, 1, x, w, info )
243  CALL chkxer( 'SORG2R', infot, nout, lerr, ok )
244 *
245 * SORMQR
246 *
247  srnamt = 'SORMQR'
248  infot = 1
249  CALL sormqr( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
250  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
251  infot = 2
252  CALL sormqr( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, 1, info )
253  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
254  infot = 3
255  CALL sormqr( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, 1, info )
256  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
257  infot = 4
258  CALL sormqr( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, 1, info )
259  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
260  infot = 5
261  CALL sormqr( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, 1, info )
262  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
263  infot = 5
264  CALL sormqr( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, 1, info )
265  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
266  infot = 5
267  CALL sormqr( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, 1, info )
268  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
269  infot = 7
270  CALL sormqr( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
271  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
272  infot = 7
273  CALL sormqr( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
274  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
275  infot = 10
276  CALL sormqr( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, 1, info )
277  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
278  infot = 12
279  CALL sormqr( 'L', 'N', 1, 2, 0, a, 1, x, af, 1, w, 1, info )
280  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
281  infot = 12
282  CALL sormqr( 'R', 'N', 2, 1, 0, a, 1, x, af, 2, w, 1, info )
283  CALL chkxer( 'SORMQR', infot, nout, lerr, ok )
284 *
285 * SORM2R
286 *
287  srnamt = 'SORM2R'
288  infot = 1
289  CALL sorm2r( '/', 'N', 0, 0, 0, a, 1, x, af, 1, w, info )
290  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
291  infot = 2
292  CALL sorm2r( 'L', '/', 0, 0, 0, a, 1, x, af, 1, w, info )
293  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
294  infot = 3
295  CALL sorm2r( 'L', 'N', -1, 0, 0, a, 1, x, af, 1, w, info )
296  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
297  infot = 4
298  CALL sorm2r( 'L', 'N', 0, -1, 0, a, 1, x, af, 1, w, info )
299  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
300  infot = 5
301  CALL sorm2r( 'L', 'N', 0, 0, -1, a, 1, x, af, 1, w, info )
302  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
303  infot = 5
304  CALL sorm2r( 'L', 'N', 0, 1, 1, a, 1, x, af, 1, w, info )
305  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
306  infot = 5
307  CALL sorm2r( 'R', 'N', 1, 0, 1, a, 1, x, af, 1, w, info )
308  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
309  infot = 7
310  CALL sorm2r( 'L', 'N', 2, 1, 0, a, 1, x, af, 2, w, info )
311  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
312  infot = 7
313  CALL sorm2r( 'R', 'N', 1, 2, 0, a, 1, x, af, 1, w, info )
314  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
315  infot = 10
316  CALL sorm2r( 'L', 'N', 2, 1, 0, a, 2, x, af, 1, w, info )
317  CALL chkxer( 'SORM2R', infot, nout, lerr, ok )
318 *
319 * Print a summary line.
320 *
321  CALL alaesm( path, ok, nout )
322 *
323  RETURN
324 *
325 * End of SERRQR
326 *
subroutine chkxer(SRNAMT, INFOT, NOUT, LERR, OK)
Definition: cblat2.f:3196
subroutine alaesm(PATH, OK, NOUT)
ALAESM
Definition: alaesm.f:63
subroutine sgeqrfp(M, N, A, LDA, TAU, WORK, LWORK, INFO)
SGEQRFP
Definition: sgeqrfp.f:149
subroutine sgeqrf(M, N, A, LDA, TAU, WORK, LWORK, INFO)
SGEQRF
Definition: sgeqrf.f:145
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 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 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 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 sormqr(SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, LWORK, INFO)
SORMQR
Definition: sormqr.f:168
subroutine sgeqrs(M, N, NRHS, A, LDA, TAU, B, LDB, WORK, LWORK, INFO)
SGEQRS
Definition: sgeqrs.f:121
Here is the call graph for this function:
Here is the caller graph for this function: