1*> \brief \b ZERRRQ 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 ZERRRQ( 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*> ZERRRQ tests the error exits for the COMPLEX*16 routines 25*> that use the RQ 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 ZERRRQ( 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, ZGERQ2, ZGERQF, ZGERQS, ZUNGR2, 83 $ ZUNGRQ, ZUNMR2, ZUNMRQ 84* .. 85* .. Scalars in Common .. 86 LOGICAL LERR, OK 87 CHARACTER*32 SRNAMT 88 INTEGER INFOT, NOUT 89* .. 90* .. Common blocks .. 91 COMMON / INFOC / INFOT, NOUT, OK, LERR 92 COMMON / SRNAMC / SRNAMT 93* .. 94* .. Intrinsic Functions .. 95 INTRINSIC DBLE, DCMPLX 96* .. 97* .. Executable Statements .. 98* 99 NOUT = NUNIT 100 WRITE( NOUT, FMT = * ) 101* 102* Set the variables to innocuous values. 103* 104 DO 20 J = 1, NMAX 105 DO 10 I = 1, NMAX 106 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 107 $ -1.D0 / DBLE( I+J ) ) 108 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 109 $ -1.D0 / DBLE( I+J ) ) 110 10 CONTINUE 111 B( J ) = 0.D0 112 W( J ) = 0.D0 113 X( J ) = 0.D0 114 20 CONTINUE 115 OK = .TRUE. 116* 117* Error exits for RQ factorization 118* 119* ZGERQF 120* 121 SRNAMT = 'ZGERQF' 122 INFOT = 1 123 CALL ZGERQF( -1, 0, A, 1, B, W, 1, INFO ) 124 CALL CHKXER( 'ZGERQF', INFOT, NOUT, LERR, OK ) 125 INFOT = 2 126 CALL ZGERQF( 0, -1, A, 1, B, W, 1, INFO ) 127 CALL CHKXER( 'ZGERQF', INFOT, NOUT, LERR, OK ) 128 INFOT = 4 129 CALL ZGERQF( 2, 1, A, 1, B, W, 2, INFO ) 130 CALL CHKXER( 'ZGERQF', INFOT, NOUT, LERR, OK ) 131 INFOT = 7 132 CALL ZGERQF( 2, 1, A, 2, B, W, 1, INFO ) 133 CALL CHKXER( 'ZGERQF', INFOT, NOUT, LERR, OK ) 134* 135* ZGERQ2 136* 137 SRNAMT = 'ZGERQ2' 138 INFOT = 1 139 CALL ZGERQ2( -1, 0, A, 1, B, W, INFO ) 140 CALL CHKXER( 'ZGERQ2', INFOT, NOUT, LERR, OK ) 141 INFOT = 2 142 CALL ZGERQ2( 0, -1, A, 1, B, W, INFO ) 143 CALL CHKXER( 'ZGERQ2', INFOT, NOUT, LERR, OK ) 144 INFOT = 4 145 CALL ZGERQ2( 2, 1, A, 1, B, W, INFO ) 146 CALL CHKXER( 'ZGERQ2', INFOT, NOUT, LERR, OK ) 147* 148* ZGERQS 149* 150 SRNAMT = 'ZGERQS' 151 INFOT = 1 152 CALL ZGERQS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO ) 153 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 154 INFOT = 2 155 CALL ZGERQS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO ) 156 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 157 INFOT = 2 158 CALL ZGERQS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO ) 159 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 160 INFOT = 3 161 CALL ZGERQS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO ) 162 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 163 INFOT = 5 164 CALL ZGERQS( 2, 2, 0, A, 1, X, B, 2, W, 1, INFO ) 165 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 166 INFOT = 8 167 CALL ZGERQS( 2, 2, 0, A, 2, X, B, 1, W, 1, INFO ) 168 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 169 INFOT = 10 170 CALL ZGERQS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO ) 171 CALL CHKXER( 'ZGERQS', INFOT, NOUT, LERR, OK ) 172* 173* ZUNGRQ 174* 175 SRNAMT = 'ZUNGRQ' 176 INFOT = 1 177 CALL ZUNGRQ( -1, 0, 0, A, 1, X, W, 1, INFO ) 178 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 179 INFOT = 2 180 CALL ZUNGRQ( 0, -1, 0, A, 1, X, W, 1, INFO ) 181 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 182 INFOT = 2 183 CALL ZUNGRQ( 2, 1, 0, A, 2, X, W, 2, INFO ) 184 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 185 INFOT = 3 186 CALL ZUNGRQ( 0, 0, -1, A, 1, X, W, 1, INFO ) 187 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 188 INFOT = 3 189 CALL ZUNGRQ( 1, 2, 2, A, 1, X, W, 1, INFO ) 190 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 191 INFOT = 5 192 CALL ZUNGRQ( 2, 2, 0, A, 1, X, W, 2, INFO ) 193 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 194 INFOT = 8 195 CALL ZUNGRQ( 2, 2, 0, A, 2, X, W, 1, INFO ) 196 CALL CHKXER( 'ZUNGRQ', INFOT, NOUT, LERR, OK ) 197* 198* ZUNGR2 199* 200 SRNAMT = 'ZUNGR2' 201 INFOT = 1 202 CALL ZUNGR2( -1, 0, 0, A, 1, X, W, INFO ) 203 CALL CHKXER( 'ZUNGR2', INFOT, NOUT, LERR, OK ) 204 INFOT = 2 205 CALL ZUNGR2( 0, -1, 0, A, 1, X, W, INFO ) 206 CALL CHKXER( 'ZUNGR2', INFOT, NOUT, LERR, OK ) 207 INFOT = 2 208 CALL ZUNGR2( 2, 1, 0, A, 2, X, W, INFO ) 209 CALL CHKXER( 'ZUNGR2', INFOT, NOUT, LERR, OK ) 210 INFOT = 3 211 CALL ZUNGR2( 0, 0, -1, A, 1, X, W, INFO ) 212 CALL CHKXER( 'ZUNGR2', INFOT, NOUT, LERR, OK ) 213 INFOT = 3 214 CALL ZUNGR2( 1, 2, 2, A, 2, X, W, INFO ) 215 CALL CHKXER( 'ZUNGR2', INFOT, NOUT, LERR, OK ) 216 INFOT = 5 217 CALL ZUNGR2( 2, 2, 0, A, 1, X, W, INFO ) 218 CALL CHKXER( 'ZUNGR2', INFOT, NOUT, LERR, OK ) 219* 220* ZUNMRQ 221* 222 SRNAMT = 'ZUNMRQ' 223 INFOT = 1 224 CALL ZUNMRQ( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 225 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 226 INFOT = 2 227 CALL ZUNMRQ( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 228 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 229 INFOT = 3 230 CALL ZUNMRQ( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 231 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 232 INFOT = 4 233 CALL ZUNMRQ( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO ) 234 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 235 INFOT = 5 236 CALL ZUNMRQ( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO ) 237 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 238 INFOT = 5 239 CALL ZUNMRQ( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO ) 240 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 241 INFOT = 5 242 CALL ZUNMRQ( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO ) 243 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 244 INFOT = 7 245 CALL ZUNMRQ( 'L', 'N', 2, 1, 2, A, 1, X, AF, 2, W, 1, INFO ) 246 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 247 INFOT = 7 248 CALL ZUNMRQ( 'R', 'N', 1, 2, 2, A, 1, X, AF, 1, W, 1, INFO ) 249 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 250 INFOT = 10 251 CALL ZUNMRQ( 'L', 'N', 2, 1, 0, A, 1, X, AF, 1, W, 1, INFO ) 252 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 253 INFOT = 12 254 CALL ZUNMRQ( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO ) 255 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 256 INFOT = 12 257 CALL ZUNMRQ( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO ) 258 CALL CHKXER( 'ZUNMRQ', INFOT, NOUT, LERR, OK ) 259* 260* ZUNMR2 261* 262 SRNAMT = 'ZUNMR2' 263 INFOT = 1 264 CALL ZUNMR2( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO ) 265 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 266 INFOT = 2 267 CALL ZUNMR2( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO ) 268 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 269 INFOT = 3 270 CALL ZUNMR2( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO ) 271 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 272 INFOT = 4 273 CALL ZUNMR2( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO ) 274 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 275 INFOT = 5 276 CALL ZUNMR2( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO ) 277 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 278 INFOT = 5 279 CALL ZUNMR2( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO ) 280 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 281 INFOT = 5 282 CALL ZUNMR2( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO ) 283 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 284 INFOT = 7 285 CALL ZUNMR2( 'L', 'N', 2, 1, 2, A, 1, X, AF, 2, W, INFO ) 286 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 287 INFOT = 7 288 CALL ZUNMR2( 'R', 'N', 1, 2, 2, A, 1, X, AF, 1, W, INFO ) 289 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 290 INFOT = 10 291 CALL ZUNMR2( 'L', 'N', 2, 1, 0, A, 1, X, AF, 1, W, INFO ) 292 CALL CHKXER( 'ZUNMR2', INFOT, NOUT, LERR, OK ) 293* 294* Print a summary line. 295* 296 CALL ALAESM( PATH, OK, NOUT ) 297* 298 RETURN 299* 300* End of ZERRRQ 301* 302 END 303