69
69
* > ZLQ 8 List types on next line if 0 < NTYPES < 8
70
70
* > ZQL 8 List types on next line if 0 < NTYPES < 8
71
71
* > ZQP 6 List types on next line if 0 < NTYPES < 6
72
+ * > ZQK 19 List types on next line if 0 < NTYPES < 19
72
73
* > ZTZ 3 List types on next line if 0 < NTYPES < 3
73
74
* > ZLS 6 List types on next line if 0 < NTYPES < 6
74
75
* > ZEQ
@@ -153,12 +154,11 @@ PROGRAM ZCHKAA
153
154
$ NBVAL( MAXIN ), NBVAL2( MAXIN ),
154
155
$ NSVAL( MAXIN ), NVAL( MAXIN ), NXVAL( MAXIN ),
155
156
$ RANKVAL( MAXIN ), PIV( NMAX )
156
- DOUBLE PRECISION S( 2 * NMAX )
157
157
COMPLEX * 16 E( NMAX )
158
158
*
159
159
* .. Allocatable Arrays ..
160
160
INTEGER AllocateStatus
161
- DOUBLE PRECISION , DIMENSION (:), ALLOCATABLE:: RWORK
161
+ DOUBLE PRECISION , DIMENSION (:), ALLOCATABLE:: RWORK, S
162
162
COMPLEX * 16 , DIMENSION (:,:), ALLOCATABLE:: A, B, WORK
163
163
* ..
164
164
* .. External Functions ..
@@ -170,8 +170,8 @@ PROGRAM ZCHKAA
170
170
EXTERNAL ALAREQ, ZCHKEQ, ZCHKGB, ZCHKGE, ZCHKGT, ZCHKHE,
171
171
$ ZCHKHE_ROOK, ZCHKHE_RK, ZCHKHE_AA, ZCHKHP,
172
172
$ ZCHKLQ, ZCHKUNHR_COL, ZCHKPB, ZCHKPO, ZCHKPS,
173
- $ ZCHKPP, ZCHKPT, ZCHKQ3, ZCHKQL, ZCHKQR, ZCHKRQ ,
174
- $ ZCHKSP, ZCHKSY, ZCHKSY_ROOK, ZCHKSY_RK,
173
+ $ ZCHKPP, ZCHKPT, ZCHKQ3, ZCHKQP3RK, ZCHKQL, ZCHKQR ,
174
+ $ ZCHKRQ, ZCHKSP, ZCHKSY, ZCHKSY_ROOK, ZCHKSY_RK,
175
175
$ ZCHKSY_AA, ZCHKTB, ZCHKTP, ZCHKTR, ZCHKTZ,
176
176
$ ZDRVGB, ZDRVGE, ZDRVGT, ZDRVHE, ZDRVHE_ROOK,
177
177
$ ZDRVHE_RK, ZDRVHE_AA, ZDRVHE_AA_2STAGE, ZDRVHP,
@@ -197,14 +197,16 @@ PROGRAM ZCHKAA
197
197
DATA THREQ / 2.0D0 / , INTSTR / ' 0123456789' /
198
198
*
199
199
* .. Allocate memory dynamically ..
200
- ALLOCATE (RWORK( 150 * NMAX+2 * MAXRHS ), STAT = AllocateStatus)
201
- IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
202
200
ALLOCATE (A ((KDMAX+1 ) * NMAX, 7 ), STAT = AllocateStatus)
203
201
IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
204
202
ALLOCATE (B (NMAX * MAXRHS, 4 ), STAT = AllocateStatus)
205
203
IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
206
204
ALLOCATE (WORK (NMAX, NMAX+ MAXRHS+10 ), STAT = AllocateStatus)
207
205
IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
206
+ ALLOCATE (S( 2 * NMAX ), STAT = AllocateStatus)
207
+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
208
+ ALLOCATE (RWORK( 150 * NMAX+2 * MAXRHS ), STAT = AllocateStatus)
209
+ IF (AllocateStatus /= 0 ) STOP " *** Not enough memory ***"
208
210
* ..
209
211
* .. Executable Statements ..
210
212
*
@@ -1109,6 +1111,23 @@ PROGRAM ZCHKAA
1109
1111
ELSE
1110
1112
WRITE ( NOUT, FMT = 9989 )PATH
1111
1113
END IF
1114
+ *
1115
+ ELSE IF ( LSAMEN( 2 , C2, ' QK' ) ) THEN
1116
+ *
1117
+ * QK: truncated QR factorization with pivoting
1118
+ *
1119
+ NTYPES = 19
1120
+ CALL ALAREQ( PATH, NMATS, DOTYPE, NTYPES, NIN, NOUT )
1121
+ *
1122
+ IF ( TSTCHK ) THEN
1123
+ CALL ZCHKQP3RK( DOTYPE, NM, MVAL, NN, NVAL, NNS, NSVAL,
1124
+ $ NNB, NBVAL, NXVAL, THRESH, A( 1 , 1 ),
1125
+ $ A( 1 , 2 ), B( 1 , 1 ), B( 1 , 2 ),
1126
+ $ S( 1 ), B( 1 , 4 ),
1127
+ $ WORK, RWORK, IWORK, NOUT )
1128
+ ELSE
1129
+ WRITE ( NOUT, FMT = 9989 )PATH
1130
+ END IF
1112
1131
*
1113
1132
ELSE IF ( LSAMEN( 2 , C2, ' LS' ) ) THEN
1114
1133
*
0 commit comments