1*> \brief \b ZERRLQ 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 ZERRLQ( 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*> ZERRLQ tests the error exits for the COMPLEX*16 routines 25*> that use the LQ 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*> \ingroup complex16_lin 52* 53* ===================================================================== 54 SUBROUTINE ZERRLQ( PATH, NUNIT ) 55* 56* -- LAPACK test routine -- 57* -- LAPACK is a software package provided by Univ. of Tennessee, -- 58* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 59* 60* .. Scalar Arguments .. 61 CHARACTER*3 PATH 62 INTEGER NUNIT 63* .. 64* 65* ===================================================================== 66* 67* .. Parameters .. 68 INTEGER NMAX 69 PARAMETER ( NMAX = 2 ) 70* .. 71* .. Local Scalars .. 72 INTEGER I, INFO, J 73* .. 74* .. Local Arrays .. 75 COMPLEX*16 A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ), 76 $ W( NMAX ), X( NMAX ) 77* .. 78* .. External Subroutines .. 79 EXTERNAL ALAESM, CHKXER, ZGELQ2, ZGELQF, ZGELQS, ZUNGL2, 80 $ ZUNGLQ, ZUNML2, ZUNMLQ 81* .. 82* .. Scalars in Common .. 83 LOGICAL LERR, OK 84 CHARACTER*32 SRNAMT 85 INTEGER INFOT, NOUT 86* .. 87* .. Common blocks .. 88 COMMON / INFOC / INFOT, NOUT, OK, LERR 89 COMMON / SRNAMC / SRNAMT 90* .. 91* .. Intrinsic Functions .. 92 INTRINSIC DBLE, DCMPLX 93* .. 94* .. Executable Statements .. 95* 96 NOUT = NUNIT 97 WRITE( NOUT, FMT = * ) 98* 99* Set the variables to innocuous values. 100* 101 DO 20 J = 1, NMAX 102 DO 10 I = 1, NMAX 103 A( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 104 $ -1.D0 / DBLE( I+J ) ) 105 AF( I, J ) = DCMPLX( 1.D0 / DBLE( I+J ), 106 $ -1.D0 / DBLE( I+J ) ) 107 10 CONTINUE 108 B( J ) = 0.D0 109 W( J ) = 0.D0 110 X( J ) = 0.D0 111 20 CONTINUE 112 OK = .TRUE. 113* 114* Error exits for LQ factorization 115* 116* ZGELQF 117* 118 SRNAMT = 'ZGELQF' 119 INFOT = 1 120 CALL ZGELQF( -1, 0, A, 1, B, W, 1, INFO ) 121 CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK ) 122 INFOT = 2 123 CALL ZGELQF( 0, -1, A, 1, B, W, 1, INFO ) 124 CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK ) 125 INFOT = 4 126 CALL ZGELQF( 2, 1, A, 1, B, W, 2, INFO ) 127 CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK ) 128 INFOT = 7 129 CALL ZGELQF( 2, 1, A, 2, B, W, 1, INFO ) 130 CALL CHKXER( 'ZGELQF', INFOT, NOUT, LERR, OK ) 131* 132* ZGELQ2 133* 134 SRNAMT = 'ZGELQ2' 135 INFOT = 1 136 CALL ZGELQ2( -1, 0, A, 1, B, W, INFO ) 137 CALL CHKXER( 'ZGELQ2', INFOT, NOUT, LERR, OK ) 138 INFOT = 2 139 CALL ZGELQ2( 0, -1, A, 1, B, W, INFO ) 140 CALL CHKXER( 'ZGELQ2', INFOT, NOUT, LERR, OK ) 141 INFOT = 4 142 CALL ZGELQ2( 2, 1, A, 1, B, W, INFO ) 143 CALL CHKXER( 'ZGELQ2', INFOT, NOUT, LERR, OK ) 144* 145* ZGELQS 146* 147 SRNAMT = 'ZGELQS' 148 INFOT = 1 149 CALL ZGELQS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO ) 150 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 151 INFOT = 2 152 CALL ZGELQS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO ) 153 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 154 INFOT = 2 155 CALL ZGELQS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO ) 156 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 157 INFOT = 3 158 CALL ZGELQS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO ) 159 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 160 INFOT = 5 161 CALL ZGELQS( 2, 2, 0, A, 1, X, B, 2, W, 1, INFO ) 162 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 163 INFOT = 8 164 CALL ZGELQS( 1, 2, 0, A, 1, X, B, 1, W, 1, INFO ) 165 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 166 INFOT = 10 167 CALL ZGELQS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO ) 168 CALL CHKXER( 'ZGELQS', INFOT, NOUT, LERR, OK ) 169* 170* ZUNGLQ 171* 172 SRNAMT = 'ZUNGLQ' 173 INFOT = 1 174 CALL ZUNGLQ( -1, 0, 0, A, 1, X, W, 1, INFO ) 175 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 176 INFOT = 2 177 CALL ZUNGLQ( 0, -1, 0, A, 1, X, W, 1, INFO ) 178 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 179 INFOT = 2 180 CALL ZUNGLQ( 2, 1, 0, A, 2, X, W, 2, INFO ) 181 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 182 INFOT = 3 183 CALL ZUNGLQ( 0, 0, -1, A, 1, X, W, 1, INFO ) 184 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 185 INFOT = 3 186 CALL ZUNGLQ( 1, 1, 2, A, 1, X, W, 1, INFO ) 187 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 188 INFOT = 5 189 CALL ZUNGLQ( 2, 2, 0, A, 1, X, W, 2, INFO ) 190 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 191 INFOT = 8 192 CALL ZUNGLQ( 2, 2, 0, A, 2, X, W, 1, INFO ) 193 CALL CHKXER( 'ZUNGLQ', INFOT, NOUT, LERR, OK ) 194* 195* ZUNGL2 196* 197 SRNAMT = 'ZUNGL2' 198 INFOT = 1 199 CALL ZUNGL2( -1, 0, 0, A, 1, X, W, INFO ) 200 CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK ) 201 INFOT = 2 202 CALL ZUNGL2( 0, -1, 0, A, 1, X, W, INFO ) 203 CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK ) 204 INFOT = 2 205 CALL ZUNGL2( 2, 1, 0, A, 2, X, W, INFO ) 206 CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK ) 207 INFOT = 3 208 CALL ZUNGL2( 0, 0, -1, A, 1, X, W, INFO ) 209 CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK ) 210 INFOT = 3 211 CALL ZUNGL2( 1, 1, 2, A, 1, X, W, INFO ) 212 CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK ) 213 INFOT = 5 214 CALL ZUNGL2( 2, 2, 0, A, 1, X, W, INFO ) 215 CALL CHKXER( 'ZUNGL2', INFOT, NOUT, LERR, OK ) 216* 217* ZUNMLQ 218* 219 SRNAMT = 'ZUNMLQ' 220 INFOT = 1 221 CALL ZUNMLQ( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 222 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 223 INFOT = 2 224 CALL ZUNMLQ( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 225 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 226 INFOT = 3 227 CALL ZUNMLQ( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO ) 228 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 229 INFOT = 4 230 CALL ZUNMLQ( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO ) 231 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 232 INFOT = 5 233 CALL ZUNMLQ( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO ) 234 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 235 INFOT = 5 236 CALL ZUNMLQ( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO ) 237 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 238 INFOT = 5 239 CALL ZUNMLQ( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO ) 240 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 241 INFOT = 7 242 CALL ZUNMLQ( 'L', 'N', 2, 0, 2, A, 1, X, AF, 2, W, 1, INFO ) 243 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 244 INFOT = 7 245 CALL ZUNMLQ( 'R', 'N', 0, 2, 2, A, 1, X, AF, 1, W, 1, INFO ) 246 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 247 INFOT = 10 248 CALL ZUNMLQ( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO ) 249 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 250 INFOT = 12 251 CALL ZUNMLQ( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO ) 252 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 253 INFOT = 12 254 CALL ZUNMLQ( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO ) 255 CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, LERR, OK ) 256* 257* ZUNML2 258* 259 SRNAMT = 'ZUNML2' 260 INFOT = 1 261 CALL ZUNML2( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO ) 262 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 263 INFOT = 2 264 CALL ZUNML2( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO ) 265 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 266 INFOT = 3 267 CALL ZUNML2( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO ) 268 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 269 INFOT = 4 270 CALL ZUNML2( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO ) 271 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 272 INFOT = 5 273 CALL ZUNML2( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO ) 274 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 275 INFOT = 5 276 CALL ZUNML2( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO ) 277 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 278 INFOT = 5 279 CALL ZUNML2( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO ) 280 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 281 INFOT = 7 282 CALL ZUNML2( 'L', 'N', 2, 1, 2, A, 1, X, AF, 2, W, INFO ) 283 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 284 INFOT = 7 285 CALL ZUNML2( 'R', 'N', 1, 2, 2, A, 1, X, AF, 1, W, INFO ) 286 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 287 INFOT = 10 288 CALL ZUNML2( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, INFO ) 289 CALL CHKXER( 'ZUNML2', INFOT, NOUT, LERR, OK ) 290* 291* Print a summary line. 292* 293 CALL ALAESM( PATH, OK, NOUT ) 294* 295 RETURN 296* 297* End of ZERRLQ 298* 299 END 300