1*> \brief \b ZERRQR 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 ZERRQR( PATH, NUNIT ) 12* 13* .. Scalar Arguments .. 14* CHARACTER*3 PATH 15* INTEGER NUNIT 16* .. 17* 18* 19*> \par Purpose: 20* ============= 21*> 22*> \verbatim 23*> 24*> ZERRQR tests the error exits for the COMPLEX*16 routines 25*> that use the QR decomposition of a general matrix. 26*> \endverbatim 27* 28* Arguments: 29* ========== 30* 31*> \param[in] PATH 32*> \verbatim 33*> PATH is CHARACTER*3 34*> The LAPACK path name for the routines to be tested. 35*> \endverbatim 36*> 37*> \param[in] NUNIT 38*> \verbatim 39*> NUNIT is INTEGER 40*> The unit number for output. 41*> \endverbatim 42* 43* Authors: 44* ======== 45* 46*> \author Univ. of Tennessee 47*> \author Univ. of California Berkeley 48*> \author Univ. of Colorado Denver 49*> \author NAG Ltd. 50* 51*> \date December 2016 52* 53*> \ingroup complex16_lin 54* 55* ===================================================================== 56 SUBROUTINE ZERRQR( PATH, NUNIT ) 57* 58* -- LAPACK test routine ((version 3.7.0) -- 59* -- LAPACK is a software package provided by Univ. of Tennessee, -- 60* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 61* December 2016 62* 63* .. Scalar Arguments .. 64 CHARACTER*3 PATH 65 INTEGER NUNIT 66* .. 67* 68* ===================================================================== 69* 70* .. Parameters .. 71 INTEGER NMAX 72 PARAMETER ( NMAX = 2 ) 73* .. 74* .. Local Scalars .. 75 INTEGER I, INFO, J 76* .. 77* .. Local Arrays .. 78 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ), 79 $ W( NMAX ), X( NMAX ) 80* .. 81* .. External Subroutines .. 82 EXTERNAL ALAESM, CHKXER, ZGEQR2, ZGEQR2P, ZGEQRF, 83 $ ZGEQRFP, ZGEQRS, ZUNG2R, ZUNGQR, ZUNM2R, 84 $ ZUNMQR 85* .. 86* .. Scalars in Common .. 87 LOGICAL LERR, OK 88 CHARACTER*32 SRNAMT 89 INTEGER INFOT, NOUT 90* .. 91* .. Common blocks .. 92 COMMON / INFOC / INFOT, NOUT, OK, LERR 93 COMMON / SRNAMC / SRNAMT 94* .. 95* .. Intrinsic Functions .. 96 INTRINSIC DBLE, DCMPLX 97* .. 98* .. Executable Statements .. 99* 100 NOUT = NUNIT 101 WRITE( NOUT, FMT = * ) 102* 103* Set the variables to innocuous values. 104* 105 DO 20 J = 1, NMAX 106 DO 10 I = 1, NMAX 107 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 108 $ -1.D0 / DBLE( I+J ) ) 109 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 110 $ -1.D0 / DBLE( I+J ) ) 111 10 CONTINUE 112 B( J ) = 0.D0 113 W( J ) = 0.D0 114 X( J ) = 0.D0 115 20 CONTINUE 116 OK = .TRUE. 117* 118* Error exits for QR factorization 119* 120* ZGEQRF 121* 122 SRNAMT = 'ZGEQRF' 123 INFOT = 1 124 CALL ZGEQRF( -1, 0, A, 1, B, W, 1, INFO ) 125 CALL CHKXER( 'ZGEQRF', INFOT, NOUT, LERR, OK ) 126 INFOT = 2 127 CALL ZGEQRF( 0, -1, A, 1, B, W, 1, INFO ) 128 CALL CHKXER( 'ZGEQRF', INFOT, NOUT, LERR, OK ) 129 INFOT = 4 130 CALL ZGEQRF( 2, 1, A, 1, B, W, 1, INFO ) 131 CALL CHKXER( 'ZGEQRF', INFOT, NOUT, LERR, OK ) 132 INFOT = 7 133 CALL ZGEQRF( 1, 2, A, 1, B, W, 1, INFO ) 134 CALL CHKXER( 'ZGEQRF', INFOT, NOUT, LERR, OK ) 135* 136* ZGEQRFP 137* 138 SRNAMT = 'ZGEQRFP' 139 INFOT = 1 140 CALL ZGEQRFP( -1, 0, A, 1, B, W, 1, INFO ) 141 CALL CHKXER( 'ZGEQRFP', INFOT, NOUT, LERR, OK ) 142 INFOT = 2 143 CALL ZGEQRFP( 0, -1, A, 1, B, W, 1, INFO ) 144 CALL CHKXER( 'ZGEQRFP', INFOT, NOUT, LERR, OK ) 145 INFOT = 4 146 CALL ZGEQRFP( 2, 1, A, 1, B, W, 1, INFO ) 147 CALL CHKXER( 'ZGEQRFP', INFOT, NOUT, LERR, OK ) 148 INFOT = 7 149 CALL ZGEQRFP( 1, 2, A, 1, B, W, 1, INFO ) 150 CALL CHKXER( 'ZGEQRFP', INFOT, NOUT, LERR, OK ) 151* 152* ZGEQR2 153* 154 SRNAMT = 'ZGEQR2' 155 INFOT = 1 156 CALL ZGEQR2( -1, 0, A, 1, B, W, INFO ) 157 CALL CHKXER( 'ZGEQR2', INFOT, NOUT, LERR, OK ) 158 INFOT = 2 159 CALL ZGEQR2( 0, -1, A, 1, B, W, INFO ) 160 CALL CHKXER( 'ZGEQR2', INFOT, NOUT, LERR, OK ) 161 INFOT = 4 162 CALL ZGEQR2( 2, 1, A, 1, B, W, INFO ) 163 CALL CHKXER( 'ZGEQR2', INFOT, NOUT, LERR, OK ) 164* 165* ZGEQR2P 166* 167 SRNAMT = 'ZGEQR2P' 168 INFOT = 1 169 CALL ZGEQR2P( -1, 0, A, 1, B, W, INFO ) 170 CALL CHKXER( 'ZGEQR2P', INFOT, NOUT, LERR, OK ) 171 INFOT = 2 172 CALL ZGEQR2P( 0, -1, A, 1, B, W, INFO ) 173 CALL CHKXER( 'ZGEQR2P', INFOT, NOUT, LERR, OK ) 174 INFOT = 4 175 CALL ZGEQR2P( 2, 1, A, 1, B, W, INFO ) 176 CALL CHKXER( 'ZGEQR2P', INFOT, NOUT, LERR, OK ) 177* 178* ZGEQRS 179* 180 SRNAMT = 'ZGEQRS' 181 INFOT = 1 182 CALL ZGEQRS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO ) 183 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 184 INFOT = 2 185 CALL ZGEQRS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO ) 186 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 187 INFOT = 2 188 CALL ZGEQRS( 1, 2, 0, A, 2, X, B, 2, W, 1, INFO ) 189 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 190 INFOT = 3 191 CALL ZGEQRS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO ) 192 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 193 INFOT = 5 194 CALL ZGEQRS( 2, 1, 0, A, 1, X, B, 2, W, 1, INFO ) 195 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 196 INFOT = 8 197 CALL ZGEQRS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO ) 198 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 199 INFOT = 10 200 CALL ZGEQRS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO ) 201 CALL CHKXER( 'ZGEQRS', INFOT, NOUT, LERR, OK ) 202* 203* ZUNGQR 204* 205 SRNAMT = 'ZUNGQR' 206 INFOT = 1 207 CALL ZUNGQR( -1, 0, 0, A, 1, X, W, 1, INFO ) 208 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 209 INFOT = 2 210 CALL ZUNGQR( 0, -1, 0, A, 1, X, W, 1, INFO ) 211 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 212 INFOT = 2 213 CALL ZUNGQR( 1, 2, 0, A, 1, X, W, 2, INFO ) 214 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 215 INFOT = 3 216 CALL ZUNGQR( 0, 0, -1, A, 1, X, W, 1, INFO ) 217 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 218 INFOT = 3 219 CALL ZUNGQR( 1, 1, 2, A, 1, X, W, 1, INFO ) 220 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 221 INFOT = 5 222 CALL ZUNGQR( 2, 2, 0, A, 1, X, W, 2, INFO ) 223 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 224 INFOT = 8 225 CALL ZUNGQR( 2, 2, 0, A, 2, X, W, 1, INFO ) 226 CALL CHKXER( 'ZUNGQR', INFOT, NOUT, LERR, OK ) 227* 228* ZUNG2R 229* 230 SRNAMT = 'ZUNG2R' 231 INFOT = 1 232 CALL ZUNG2R( -1, 0, 0, A, 1, X, W, INFO ) 233 CALL CHKXER( 'ZUNG2R', INFOT, NOUT, LERR, OK ) 234 INFOT = 2 235 CALL ZUNG2R( 0, -1, 0, A, 1, X, W, INFO ) 236 CALL CHKXER( 'ZUNG2R', INFOT, NOUT, LERR, OK ) 237 INFOT = 2 238 CALL ZUNG2R( 1, 2, 0, A, 1, X, W, INFO ) 239 CALL CHKXER( 'ZUNG2R', INFOT, NOUT, LERR, OK ) 240 INFOT = 3 241 CALL ZUNG2R( 0, 0, -1, A, 1, X, W, INFO ) 242 CALL CHKXER( 'ZUNG2R', INFOT, NOUT, LERR, OK ) 243 INFOT = 3 244 CALL ZUNG2R( 2, 1, 2, A, 2, X, W, INFO ) 245 CALL CHKXER( 'ZUNG2R', INFOT, NOUT, LERR, OK ) 246 INFOT = 5 247 CALL ZUNG2R( 2, 1, 0, A, 1, X, W, INFO ) 248 CALL CHKXER( 'ZUNG2R', INFOT, NOUT, LERR, OK ) 249* 250* ZUNMQR 251* 252 SRNAMT = 'ZUNMQR' 253 INFOT = 1 254 CALL ZUNMQR( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 255 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 256 INFOT = 2 257 CALL ZUNMQR( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 258 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 259 INFOT = 3 260 CALL ZUNMQR( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 261 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 262 INFOT = 4 263 CALL ZUNMQR( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO ) 264 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 265 INFOT = 5 266 CALL ZUNMQR( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO ) 267 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 268 INFOT = 5 269 CALL ZUNMQR( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO ) 270 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 271 INFOT = 5 272 CALL ZUNMQR( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO ) 273 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 274 INFOT = 7 275 CALL ZUNMQR( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO ) 276 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 277 INFOT = 7 278 CALL ZUNMQR( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO ) 279 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 280 INFOT = 10 281 CALL ZUNMQR( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO ) 282 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 283 INFOT = 12 284 CALL ZUNMQR( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO ) 285 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 286 INFOT = 12 287 CALL ZUNMQR( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO ) 288 CALL CHKXER( 'ZUNMQR', INFOT, NOUT, LERR, OK ) 289* 290* ZUNM2R 291* 292 SRNAMT = 'ZUNM2R' 293 INFOT = 1 294 CALL ZUNM2R( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO ) 295 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 296 INFOT = 2 297 CALL ZUNM2R( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO ) 298 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 299 INFOT = 3 300 CALL ZUNM2R( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO ) 301 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 302 INFOT = 4 303 CALL ZUNM2R( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO ) 304 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 305 INFOT = 5 306 CALL ZUNM2R( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO ) 307 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 308 INFOT = 5 309 CALL ZUNM2R( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO ) 310 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 311 INFOT = 5 312 CALL ZUNM2R( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO ) 313 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 314 INFOT = 7 315 CALL ZUNM2R( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, INFO ) 316 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 317 INFOT = 7 318 CALL ZUNM2R( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, INFO ) 319 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 320 INFOT = 10 321 CALL ZUNM2R( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, INFO ) 322 CALL CHKXER( 'ZUNM2R', INFOT, NOUT, LERR, OK ) 323* 324* Print a summary line. 325* 326 CALL ALAESM( PATH, OK, NOUT ) 327* 328 RETURN 329* 330* End of ZERRQR 331* 332 END 333