LAPACK  3.10.0
LAPACK: Linear Algebra PACKage

◆ 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.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.

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: