1*> \brief \b ZCHKQRT
2*
3*  =========== DOCUMENTATION ===========
4*
5* Online html documentation available at
6*            http://www.netlib.org/lapack/explore-html/
7*
8*  Definition:
9*  ===========
10*
11*       SUBROUTINE ZCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
12*                           NBVAL, NOUT )
13*       .. Scalar Arguments ..
14*       LOGICAL            TSTERR
15*       INTEGER            NM, NN, NNB, NOUT
16*       DOUBLE PRECISION   THRESH
17*       ..
18*       .. Array Arguments ..
19*       INTEGER            MVAL( * ), NBVAL( * ), NVAL( * )
20*
21*> \par Purpose:
22*  =============
23*>
24*> \verbatim
25*>
26*> ZCHKQRT tests ZGEQRT and ZGEMQRT.
27*> \endverbatim
28*
29*  Arguments:
30*  ==========
31*
32*> \param[in] THRESH
33*> \verbatim
34*>          THRESH is DOUBLE PRECISION
35*>          The threshold value for the test ratios.  A result is
36*>          included in the output file if RESULT >= THRESH.  To have
37*>          every test ratio printed, use THRESH = 0.
38*> \endverbatim
39*>
40*> \param[in] TSTERR
41*> \verbatim
42*>          TSTERR is LOGICAL
43*>          Flag that indicates whether error exits are to be tested.
44*> \endverbatim
45*>
46*> \param[in] NM
47*> \verbatim
48*>          NM is INTEGER
49*>          The number of values of M contained in the vector MVAL.
50*> \endverbatim
51*>
52*> \param[in] MVAL
53*> \verbatim
54*>          MVAL is INTEGER array, dimension (NM)
55*>          The values of the matrix row dimension M.
56*> \endverbatim
57*>
58*> \param[in] NN
59*> \verbatim
60*>          NN is INTEGER
61*>          The number of values of N contained in the vector NVAL.
62*> \endverbatim
63*>
64*> \param[in] NVAL
65*> \verbatim
66*>          NVAL is INTEGER array, dimension (NN)
67*>          The values of the matrix column dimension N.
68*> \endverbatim
69*>
70*> \param[in] NNB
71*> \verbatim
72*>          NNB is INTEGER
73*>          The number of values of NB contained in the vector NBVAL.
74*> \endverbatim
75*>
76*> \param[in] NBVAL
77*> \verbatim
78*>          NBVAL is INTEGER array, dimension (NBVAL)
79*>          The values of the blocksize NB.
80*> \endverbatim
81*>
82*> \param[in] NOUT
83*> \verbatim
84*>          NOUT is INTEGER
85*>          The unit number for output.
86*> \endverbatim
87*
88*  Authors:
89*  ========
90*
91*> \author Univ. of Tennessee
92*> \author Univ. of California Berkeley
93*> \author Univ. of Colorado Denver
94*> \author NAG Ltd.
95*
96*> \date December 2016
97*
98*> \ingroup complex16_lin
99*
100*  =====================================================================
101      SUBROUTINE ZCHKQRT( THRESH, TSTERR, NM, MVAL, NN, NVAL, NNB,
102     $                     NBVAL, NOUT )
103      IMPLICIT NONE
104*
105*  -- LAPACK test routine (version 3.7.0) --
106*  -- LAPACK is a software package provided by Univ. of Tennessee,    --
107*  -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
108*     December 2016
109*
110*     .. Scalar Arguments ..
111      LOGICAL            TSTERR
112      INTEGER            NM, NN, NNB, NOUT
113      DOUBLE PRECISION   THRESH
114*     ..
115*     .. Array Arguments ..
116      INTEGER            MVAL( * ), NBVAL( * ), NVAL( * )
117*     ..
118*
119*  =====================================================================
120*
121*     .. Parameters ..
122      INTEGER            NTESTS
123      PARAMETER          ( NTESTS = 6 )
124*     ..
125*     .. Local Scalars ..
126      CHARACTER*3        PATH
127      INTEGER            I, J, K, T, M, N, NB, NFAIL, NERRS, NRUN,
128     $                   MINMN
129*     ..
130*     .. Local Arrays ..
131      DOUBLE PRECISION   RESULT( NTESTS )
132*     ..
133*     .. External Subroutines ..
134      EXTERNAL           ALAERH, ALAHD, ALASUM, ZERRQRT, ZQRT04
135*     ..
136*     .. Scalars in Common ..
137      LOGICAL            LERR, OK
138      CHARACTER*32       SRNAMT
139      INTEGER            INFOT, NUNIT
140*     ..
141*     .. Common blocks ..
142      COMMON             / INFOC / INFOT, NUNIT, OK, LERR
143      COMMON             / SRNAMC / SRNAMT
144*     ..
145*     .. Executable Statements ..
146*
147*     Initialize constants
148*
149      PATH( 1: 1 ) = 'Z'
150      PATH( 2: 3 ) = 'QT'
151      NRUN = 0
152      NFAIL = 0
153      NERRS = 0
154*
155*     Test the error exits
156*
157      IF( TSTERR ) CALL ZERRQRT( PATH, NOUT )
158      INFOT = 0
159*
160*     Do for each value of M in MVAL.
161*
162      DO I = 1, NM
163         M = MVAL( I )
164*
165*        Do for each value of N in NVAL.
166*
167         DO J = 1, NN
168            N = NVAL( J )
169*
170*        Do for each possible value of NB
171*
172            MINMN = MIN( M, N )
173            DO K = 1, NNB
174               NB = NBVAL( K )
175*
176*              Test ZGEQRT and ZGEMQRT
177*
178               IF( (NB.LE.MINMN).AND.(NB.GT.0) ) THEN
179                  CALL ZQRT04( M, N, NB, RESULT )
180*
181*                 Print information about the tests that did not
182*                 pass the threshold.
183*
184                  DO T = 1, NTESTS
185                     IF( RESULT( T ).GE.THRESH ) THEN
186                        IF( NFAIL.EQ.0 .AND. NERRS.EQ.0 )
187     $                      CALL ALAHD( NOUT, PATH )
188                        WRITE( NOUT, FMT = 9999 )M, N, NB,
189     $                         T, RESULT( T )
190                        NFAIL = NFAIL + 1
191                     END IF
192                  END DO
193                  NRUN = NRUN + NTESTS
194               END IF
195            END DO
196         END DO
197      END DO
198*
199*     Print a summary of the results.
200*
201      CALL ALASUM( PATH, NOUT, NFAIL, NRUN, NERRS )
202*
203 9999 FORMAT( ' M=', I5, ', N=', I5, ', NB=', I4,
204     $      ' test(', I2, ')=', G12.5 )
205      RETURN
206*
207*     End of ZCHKQRT
208*
209      END
210