 LAPACK 3.11.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches

## ◆ zckgqr()

 subroutine zckgqr ( integer NM, integer, dimension( * ) MVAL, integer NP, integer, dimension( * ) PVAL, integer NN, integer, dimension( * ) NVAL, integer NMATS, integer, dimension( 4 ) ISEED, double precision THRESH, integer NMAX, complex*16, dimension( * ) A, complex*16, dimension( * ) AF, complex*16, dimension( * ) AQ, complex*16, dimension( * ) AR, complex*16, dimension( * ) TAUA, complex*16, dimension( * ) B, complex*16, dimension( * ) BF, complex*16, dimension( * ) BZ, complex*16, dimension( * ) BT, complex*16, dimension( * ) BWK, complex*16, dimension( * ) TAUB, complex*16, dimension( * ) WORK, double precision, dimension( * ) RWORK, integer NIN, integer NOUT, integer INFO )

ZCKGQR

Purpose:
``` ZCKGQR tests
ZGGQRF: GQR factorization for N-by-M matrix A and N-by-P matrix B,
ZGGRQF: GRQ factorization for M-by-N matrix A and P-by-N matrix B.```
Parameters
 [in] NM ``` NM is INTEGER The number of values of M contained in the vector MVAL.``` [in] MVAL ``` MVAL is INTEGER array, dimension (NM) The values of the matrix row(column) dimension M.``` [in] NP ``` NP is INTEGER The number of values of P contained in the vector PVAL.``` [in] PVAL ``` PVAL is INTEGER array, dimension (NP) The values of the matrix row(column) dimension P.``` [in] NN ``` NN is INTEGER The number of values of N contained in the vector NVAL.``` [in] NVAL ``` NVAL is INTEGER array, dimension (NN) The values of the matrix column(row) dimension N.``` [in] NMATS ``` NMATS is INTEGER The number of matrix types to be tested for each combination of matrix dimensions. If NMATS >= NTYPES (the maximum number of matrix types), then all the different types are generated for testing. If NMATS < NTYPES, another input line is read to get the numbers of the matrix types to be used.``` [in,out] ISEED ``` ISEED is INTEGER array, dimension (4) On entry, the seed of the random number generator. The array elements should be between 0 and 4095, otherwise they will be reduced mod 4096, and ISEED(4) must be odd. On exit, the next seed in the random number sequence after all the test matrices have been generated.``` [in] THRESH ``` THRESH is DOUBLE PRECISION The threshold value for the test ratios. A result is included in the output file if RESULT >= THRESH. To have every test ratio printed, use THRESH = 0.``` [in] NMAX ``` NMAX is INTEGER The maximum value permitted for M or N, used in dimensioning the work arrays.``` [out] A ` A is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] AF ` AF is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] AQ ` AQ is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] AR ` AR is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] TAUA ` TAUA is COMPLEX*16 array, dimension (NMAX)` [out] B ` B is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] BF ` BF is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] BZ ` BZ is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] BT ` BT is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] BWK ` BWK is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] TAUB ` TAUB is COMPLEX*16 array, dimension (NMAX)` [out] WORK ` WORK is COMPLEX*16 array, dimension (NMAX*NMAX)` [out] RWORK ` RWORK is DOUBLE PRECISION array, dimension (NMAX)` [in] NIN ``` NIN is INTEGER The unit number for input.``` [in] NOUT ``` NOUT is INTEGER The unit number for output.``` [out] INFO ``` INFO is INTEGER = 0 : successful exit > 0 : If ZLATMS returns an error code, the absolute value of it is returned.```

Definition at line 208 of file zckgqr.f.

211*
212* -- LAPACK test routine --
213* -- LAPACK is a software package provided by Univ. of Tennessee, --
214* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
215*
216* .. Scalar Arguments ..
217 INTEGER INFO, NIN, NM, NMATS, NMAX, NN, NOUT, NP
218 DOUBLE PRECISION THRESH
219* ..
220* .. Array Arguments ..
221 INTEGER ISEED( 4 ), MVAL( * ), NVAL( * ), PVAL( * )
222 DOUBLE PRECISION RWORK( * )
223 COMPLEX*16 A( * ), AF( * ), AQ( * ), AR( * ), B( * ),
224 \$ BF( * ), BT( * ), BWK( * ), BZ( * ), TAUA( * ),
225 \$ TAUB( * ), WORK( * )
226* ..
227*
228* =====================================================================
229*
230* .. Parameters ..
231 INTEGER NTESTS
232 parameter( ntests = 7 )
233 INTEGER NTYPES
234 parameter( ntypes = 8 )
235* ..
236* .. Local Scalars ..
237 LOGICAL FIRSTT
238 CHARACTER DISTA, DISTB, TYPE
239 CHARACTER*3 PATH
240 INTEGER I, IINFO, IM, IMAT, IN, IP, KLA, KLB, KUA, KUB,
241 \$ LDA, LDB, LWORK, M, MODEA, MODEB, N, NFAIL,
242 \$ NRUN, NT, P
243 DOUBLE PRECISION ANORM, BNORM, CNDNMA, CNDNMB
244* ..
245* .. Local Arrays ..
246 LOGICAL DOTYPE( NTYPES )
247 DOUBLE PRECISION RESULT( NTESTS )
248* ..
249* .. External Subroutines ..
250 EXTERNAL alahdg, alareq, alasum, dlatb9, zgqrts, zgrqts,
251 \$ zlatms
252* ..
253* .. Intrinsic Functions ..
254 INTRINSIC abs
255* ..
256* .. Executable Statements ..
257*
258* Initialize constants.
259*
260 path( 1: 3 ) = 'GQR'
261 info = 0
262 nrun = 0
263 nfail = 0
264 firstt = .true.
265 CALL alareq( path, nmats, dotype, ntypes, nin, nout )
266 lda = nmax
267 ldb = nmax
268 lwork = nmax*nmax
269*
270* Do for each value of M in MVAL.
271*
272 DO 60 im = 1, nm
273 m = mval( im )
274*
275* Do for each value of P in PVAL.
276*
277 DO 50 ip = 1, np
278 p = pval( ip )
279*
280* Do for each value of N in NVAL.
281*
282 DO 40 in = 1, nn
283 n = nval( in )
284*
285 DO 30 imat = 1, ntypes
286*
287* Do the tests only if DOTYPE( IMAT ) is true.
288*
289 IF( .NOT.dotype( imat ) )
290 \$ GO TO 30
291*
292* Test ZGGRQF
293*
294* Set up parameters with DLATB9 and generate test
295* matrices A and B with ZLATMS.
296*
297 CALL dlatb9( 'GRQ', imat, m, p, n, TYPE, KLA, KUA,
298 \$ KLB, KUB, ANORM, BNORM, MODEA, MODEB,
299 \$ CNDNMA, CNDNMB, DISTA, DISTB )
300*
301 CALL zlatms( m, n, dista, iseed, TYPE, RWORK, MODEA,
302 \$ CNDNMA, ANORM, KLA, KUA, 'No packing', A,
303 \$ LDA, WORK, IINFO )
304 IF( iinfo.NE.0 ) THEN
305 WRITE( nout, fmt = 9999 )iinfo
306 info = abs( iinfo )
307 GO TO 30
308 END IF
309*
310 CALL zlatms( p, n, distb, iseed, TYPE, RWORK, MODEB,
311 \$ CNDNMB, BNORM, KLB, KUB, 'No packing', B,
312 \$ LDB, WORK, IINFO )
313 IF( iinfo.NE.0 ) THEN
314 WRITE( nout, fmt = 9999 )iinfo
315 info = abs( iinfo )
316 GO TO 30
317 END IF
318*
319 nt = 4
320*
321 CALL zgrqts( m, p, n, a, af, aq, ar, lda, taua, b, bf,
322 \$ bz, bt, bwk, ldb, taub, work, lwork,
323 \$ rwork, result )
324*
325* Print information about the tests that did not
326* pass the threshold.
327*
328 DO 10 i = 1, nt
329 IF( result( i ).GE.thresh ) THEN
330 IF( nfail.EQ.0 .AND. firstt ) THEN
331 firstt = .false.
332 CALL alahdg( nout, 'GRQ' )
333 END IF
334 WRITE( nout, fmt = 9998 )m, p, n, imat, i,
335 \$ result( i )
336 nfail = nfail + 1
337 END IF
338 10 CONTINUE
339 nrun = nrun + nt
340*
341* Test ZGGQRF
342*
343* Set up parameters with DLATB9 and generate test
344* matrices A and B with ZLATMS.
345*
346 CALL dlatb9( 'GQR', imat, m, p, n, TYPE, KLA, KUA,
347 \$ KLB, KUB, ANORM, BNORM, MODEA, MODEB,
348 \$ CNDNMA, CNDNMB, DISTA, DISTB )
349*
350 CALL zlatms( n, m, dista, iseed, TYPE, RWORK, MODEA,
351 \$ CNDNMA, ANORM, KLA, KUA, 'No packing', A,
352 \$ LDA, WORK, IINFO )
353 IF( iinfo.NE.0 ) THEN
354 WRITE( nout, fmt = 9999 )iinfo
355 info = abs( iinfo )
356 GO TO 30
357 END IF
358*
359 CALL zlatms( n, p, distb, iseed, TYPE, RWORK, MODEA,
360 \$ CNDNMA, BNORM, KLB, KUB, 'No packing', B,
361 \$ LDB, WORK, IINFO )
362 IF( iinfo.NE.0 ) THEN
363 WRITE( nout, fmt = 9999 )iinfo
364 info = abs( iinfo )
365 GO TO 30
366 END IF
367*
368 nt = 4
369*
370 CALL zgqrts( n, m, p, a, af, aq, ar, lda, taua, b, bf,
371 \$ bz, bt, bwk, ldb, taub, work, lwork,
372 \$ rwork, result )
373*
374* Print information about the tests that did not
375* pass the threshold.
376*
377 DO 20 i = 1, nt
378 IF( result( i ).GE.thresh ) THEN
379 IF( nfail.EQ.0 .AND. firstt ) THEN
380 firstt = .false.
381 CALL alahdg( nout, path )
382 END IF
383 WRITE( nout, fmt = 9997 )n, m, p, imat, i,
384 \$ result( i )
385 nfail = nfail + 1
386 END IF
387 20 CONTINUE
388 nrun = nrun + nt
389*
390 30 CONTINUE
391 40 CONTINUE
392 50 CONTINUE
393 60 CONTINUE
394*
395* Print a summary of the results.
396*
397 CALL alasum( path, nout, nfail, nrun, 0 )
398*
399 9999 FORMAT( ' ZLATMS in ZCKGQR: INFO = ', i5 )
400 9998 FORMAT( ' M=', i4, ' P=', i4, ', N=', i4, ', type ', i2,
401 \$ ', test ', i2, ', ratio=', g13.6 )
402 9997 FORMAT( ' N=', i4, ' M=', i4, ', P=', i4, ', type ', i2,
403 \$ ', test ', i2, ', ratio=', g13.6 )
404 RETURN
405*
406* End of ZCKGQR
407*
subroutine alareq(PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT)
ALAREQ
Definition: alareq.f:90
subroutine alahdg(IOUNIT, PATH)
ALAHDG
Definition: alahdg.f:62
subroutine alasum(TYPE, NOUT, NFAIL, NRUN, NERRS)
ALASUM
Definition: alasum.f:73
subroutine zgrqts(M, P, N, A, AF, Q, R, LDA, TAUA, B, BF, Z, T, BWK, LDB, TAUB, WORK, LWORK, RWORK, RESULT)
ZGRQTS
Definition: zgrqts.f:176
subroutine zgqrts(N, M, P, A, AF, Q, R, LDA, TAUA, B, BF, Z, T, BWK, LDB, TAUB, WORK, LWORK, RWORK, RESULT)
ZGQRTS
Definition: zgqrts.f:176
subroutine zlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
ZLATMS
Definition: zlatms.f:332
subroutine dlatb9(PATH, IMAT, M, P, N, TYPE, KLA, KUA, KLB, KUB, ANORM, BNORM, MODEA, MODEB, CNDNMA, CNDNMB, DISTA, DISTB)
DLATB9
Definition: dlatb9.f:170
Here is the call graph for this function:
Here is the caller graph for this function: