PLASMA  2.4.5
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
zerrlq.f
Go to the documentation of this file.
1  SUBROUTINE zerrlq( PATH, NUNIT )
2 *
3  include 'plasmaf.h'
4 *
5 * -- LAPACK test routine (version 3.1) --
6 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
7 * November 2006
8 *
9 * .. Scalar Arguments ..
10  CHARACTER*3 path
11  INTEGER nunit
12 * ..
13 *
14 * Purpose
15 * =======
16 *
17 * ZERRLQ tests the error exits for the COMPLEX*16 routines
18 * that use the LQ decomposition of a general matrix.
19 *
20 * Arguments
21 * =========
22 *
23 * PATH (input) CHARACTER*3
24 * The LAPACK path name for the routines to be tested.
25 *
26 * NUNIT (input) INTEGER
27 * The unit number for output.
28 *
29 * =====================================================================
30 *
31 * .. Parameters ..
32  INTEGER nmax
33  parameter( nmax = 2 )
34 * ..
35 * .. Local Scalars ..
36  INTEGER i, info, j
37 * ..
38 * .. Local Arrays ..
39  COMPLEX*16 a( nmax, nmax ), af( nmax, nmax ), b( nmax ),
40  $ w( nmax ), x( nmax )
41  INTEGER ht( 2 )
42 * ..
43 * .. External Subroutines ..
44  EXTERNAL alaesm, chkxer, zgelq2, zgelqf, zungl2,
45  $ zunglq, zunml2, zunmlq
46 * ..
47 * .. Scalars in Common ..
48  LOGICAL lerr, ok
49  CHARACTER*32 srnamt
50  INTEGER infot, nout
51 * ..
52 * .. Common blocks ..
53  common / infoc / infot, nout, ok, lerr
54  common / srnamc / srnamt
55 * ..
56 * .. Intrinsic Functions ..
57  INTRINSIC dble, dcmplx
58 * ..
59 * .. Executable Statements ..
60 *
61  nout = nunit
62  WRITE( nout, fmt = * )
63 *
64 * Set the variables to innocuous values.
65 *
66  DO 20 j = 1, nmax
67  DO 10 i = 1, nmax
68  a( i, j ) = dcmplx( 1.d0 / dble( i+j ),
69  $ -1.d0 / dble( i+j ) )
70  af( i, j ) = dcmplx( 1.d0 / dble( i+j ),
71  $ -1.d0 / dble( i+j ) )
72  10 continue
73  b( j ) = 0.d0
74  w( j ) = 0.d0
75  x( j ) = 0.d0
76  20 continue
77  ok = .true.
78 *
79 * Disable PLASMA warnings/errors
80 *
81  CALL plasma_disable( plasma_warnings, info )
82  CALL plasma_disable( plasma_errors, info )
83 *
84 * Allocate HT
85 *
86  CALL plasma_alloc_workspace_zgelqf( 2, 2, ht, info )
87 *
88 * Error exits for LQ factorization
89 *
90 * ZGELQF
91 *
92  srnamt = 'ZGELQF'
93  infot = 1
94  CALL plasma_zgelqf( -1, 0, a, 1, ht, info )
95  CALL chkxer( 'ZGELQF', infot, nout, info, ok )
96  infot = 2
97  CALL plasma_zgelqf( 0, -1, a, 1, ht, info )
98  CALL chkxer( 'ZGELQF', infot, nout, info, ok )
99  infot = 4
100  CALL plasma_zgelqf( 2, 1, a, 1, ht, info )
101  CALL chkxer( 'ZGELQF', infot, nout, info, ok )
102 *
103 * PLASMA_ZGELQS
104 *
105  srnamt = 'ZGELQS'
106  infot = 1
107  CALL plasma_zgelqs( -1, 0, 0, a, 1, ht, b, 1, info )
108  CALL chkxer( 'ZGELQS', infot, nout, info, ok )
109  infot = 2
110  CALL plasma_zgelqs( 0, -1, 0, a, 1, ht, b, 1, info )
111  CALL chkxer( 'ZGELQS', infot, nout, info, ok )
112  infot = 2
113  CALL plasma_zgelqs( 2, 1, 0, a, 2, ht, b, 1, info )
114  CALL chkxer( 'ZGELQS', infot, nout, info, ok )
115  infot = 3
116  CALL plasma_zgelqs( 0, 0, -1, a, 1, ht, b, 1, info )
117  CALL chkxer( 'ZGELQS', infot, nout, info, ok )
118  infot = 5
119  CALL plasma_zgelqs( 2, 2, 0, a, 1, ht, b, 2, info )
120  CALL chkxer( 'ZGELQS', infot, nout, info, ok )
121  infot = 8
122  CALL plasma_zgelqs( 1, 2, 0, a, 1, ht, b, 1, info )
123  CALL chkxer( 'ZGELQS', infot, nout, info, ok )
124 *
125 * ZUNGLQ
126 *
127  srnamt = 'ZUNGLQ'
128  infot = 1
129  CALL plasma_zunglq( -1, 0, 0, a, 1, ht, w, 1, info )
130  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
131  infot = 2
132  CALL plasma_zunglq( 0, -1, 0, a, 1, ht, w, 1, info )
133  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
134  infot = 2
135  CALL plasma_zunglq( 2, 1, 0, a, 2, ht, w, 1, info )
136  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
137  infot = 3
138  CALL plasma_zunglq( 0, 0, -1, a, 1, ht, w, 1, info )
139  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
140  infot = 3
141  CALL plasma_zunglq( 1, 1, 2, a, 1, ht, w, 1, info )
142  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
143  infot = 5
144  CALL plasma_zunglq( 2, 2, 0, a, 1, ht, w, 1, info )
145  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
146  infot = 8
147  CALL plasma_zunglq( 2, 2, 0, a, 2, ht, w, 1, info )
148  CALL chkxer( 'ZUNGLQ', infot, nout, info, ok )
149 *
150 * ZUNMLQ
151 *
152  srnamt = 'ZUNMLQ'
153  infot = 1
154  CALL plasma_zunmlq( '/', plasmaconjtrans, 0, 0, 0, a, 1, x, af, 1,
155  $ info )
156  CALL chkxer( 'ZUNMLQ', infot, nout, info, ok )
157  infot = 2
158  CALL plasma_zunmlq( plasmaleft, '/', 0, 0, 0, a, 1, x, af, 1,
159  $ info )
160  CALL chkxer( 'ZUNMLQ', infot, nout, info, ok )
161  infot = 3
162  CALL plasma_zunmlq( plasmaleft, plasmaconjtrans, -1, 0, 0, a, 1,
163  $ x, af, 1, info )
164  CALL chkxer( 'ZUNMLQ', infot, nout, info, ok )
165  infot = 4
166  CALL plasma_zunmlq( plasmaleft, plasmaconjtrans, 0, -1, 0, a, 1,
167  $ x, af, 1, info )
168  CALL chkxer( 'ZUNMLQ', infot, nout, info, ok )
169  infot = 5
170  CALL plasma_zunmlq( plasmaleft, plasmaconjtrans, 0, 0, -1, a, 1,
171  $ x, af, 1, info )
172  CALL chkxer( 'ZUNMLQ', infot, nout, info, ok )
173 * INFOT = 5
174 * CALL PLASMA_ZUNMLQ( PLASMALEFT, PLASMACONJTRANS, 0, 1, 1, A, 1, X, AF, 1, INFO )
175 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
176 * INFOT = 5
177 * CALL PLASMA_ZUNMLQ( PLASMARIGHT, PLASMACONJTRANS, 1, 0, 1, A, 1, X, AF, 1, INFO )
178 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
179 * INFOT = 7
180 * CALL PLASMA_ZUNMLQ( PLASMALEFT, PLASMACONJTRANS, 2, 0, 2, A, 1, X, AF, 2, INFO )
181 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
182 * INFOT = 7
183 * CALL PLASMA_ZUNMLQ( PLASMARIGHT, PLASMACONJTRANS, 0, 2, 2, A, 1, X, AF, 1, INFO )
184 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
185 * INFOT = 10
186 * CALL PLASMA_ZUNMLQ( PLASMALEFT, PLASMACONJTRANS, 2, 1, 0, A, 2, X, AF, 1, INFO )
187 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
188 * INFOT = 12
189 * CALL PLASMA_ZUNMLQ( PLASMALEFT, PLASMACONJTRANS, 1, 2, 0, A, 1, X, AF, 1, INFO )
190 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
191 * INFOT = 12
192 * CALL PLASMA_ZUNMLQ( PLASMARIGHT, PLASMACONJTRANS, 2, 1, 0, A, 1, X, AF, 2, INFO )
193 * CALL CHKXER( 'ZUNMLQ', INFOT, NOUT, INFO, OK )
194 *
195 * Print a summary line.
196 *
197  CALL alaesm( path, ok, nout )
198 *
199 *
200 * Deallocate HT
201 *
202  CALL plasma_dealloc_handle( ht, info )
203 *
204 * Enable PLASMA warnings/errors
205 *
206  CALL plasma_enable( plasma_warnings, info )
207  CALL plasma_enable( plasma_errors, info )
208 *
209 * Enable PLASMA warnings/errors
210 *
211  CALL plasma_enable( plasma_warnings, info )
212  CALL plasma_enable( plasma_errors, info )
213 *
214  return
215 *
216 * End of ZERRLQ
217 *
218  END