69 parameter( nmax = 4, lw = nmax )
73 INTEGER I, INFO, J, NT
76 REAL D( NMAX ), E( NMAX ), RW( 4*NMAX )
77 COMPLEX A( NMAX, NMAX ), TP( NMAX ), TQ( NMAX ),
78 $ U( NMAX, NMAX ), V( NMAX, NMAX ), W( LW )
94 COMMON / infoc / infot, nout, ok, lerr
95 COMMON / srnamc / srnamt
103 WRITE( nout, fmt = * )
110 a( i, j ) = 1. / real( i+j )
118 IF( lsamen( 2, c2,
'BD' ) )
THEN
124 CALL cgebrd( -1, 0, a, 1, d, e, tq, tp, w, 1, info )
125 CALL chkxer(
'CGEBRD', infot, nout, lerr, ok )
127 CALL cgebrd( 0, -1, a, 1, d, e, tq, tp, w, 1, info )
128 CALL chkxer(
'CGEBRD', infot, nout, lerr, ok )
130 CALL cgebrd( 2, 1, a, 1, d, e, tq, tp, w, 2, info )
131 CALL chkxer(
'CGEBRD', infot, nout, lerr, ok )
133 CALL cgebrd( 2, 1, a, 2, d, e, tq, tp, w, 1, info )
134 CALL chkxer(
'CGEBRD', infot, nout, lerr, ok )
141 CALL cgebd2( -1, 0, a, 1, d, e, tq, tp, w, info )
142 CALL chkxer(
'CGEBD2', infot, nout, lerr, ok )
144 CALL cgebd2( 0, -1, a, 1, d, e, tq, tp, w, info )
145 CALL chkxer(
'CGEBD2', infot, nout, lerr, ok )
147 CALL cgebd2( 2, 1, a, 1, d, e, tq, tp, w, info )
148 CALL chkxer(
'CGEBD2', infot, nout, lerr, ok )
155 CALL cungbr(
'/', 0, 0, 0, a, 1, tq, w, 1, info )
156 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
158 CALL cungbr(
'Q', -1, 0, 0, a, 1, tq, w, 1, info )
159 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
161 CALL cungbr(
'Q', 0, -1, 0, a, 1, tq, w, 1, info )
162 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
164 CALL cungbr(
'Q', 0, 1, 0, a, 1, tq, w, 1, info )
165 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
167 CALL cungbr(
'Q', 1, 0, 1, a, 1, tq, w, 1, info )
168 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
170 CALL cungbr(
'P', 1, 0, 0, a, 1, tq, w, 1, info )
171 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
173 CALL cungbr(
'P', 0, 1, 1, a, 1, tq, w, 1, info )
174 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
176 CALL cungbr(
'Q', 0, 0, -1, a, 1, tq, w, 1, info )
177 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
179 CALL cungbr(
'Q', 2, 1, 1, a, 1, tq, w, 1, info )
180 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
182 CALL cungbr(
'Q', 2, 2, 1, a, 2, tq, w, 1, info )
183 CALL chkxer(
'CUNGBR', infot, nout, lerr, ok )
190 CALL cunmbr(
'/',
'L',
'T', 0, 0, 0, a, 1, tq, u, 1, w, 1,
192 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
194 CALL cunmbr(
'Q',
'/',
'T', 0, 0, 0, a, 1, tq, u, 1, w, 1,
196 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
198 CALL cunmbr(
'Q',
'L',
'/', 0, 0, 0, a, 1, tq, u, 1, w, 1,
200 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
202 CALL cunmbr(
'Q',
'L',
'C', -1, 0, 0, a, 1, tq, u, 1, w, 1,
204 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
206 CALL cunmbr(
'Q',
'L',
'C', 0, -1, 0, a, 1, tq, u, 1, w, 1,
208 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
210 CALL cunmbr(
'Q',
'L',
'C', 0, 0, -1, a, 1, tq, u, 1, w, 1,
212 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
214 CALL cunmbr(
'Q',
'L',
'C', 2, 0, 0, a, 1, tq, u, 2, w, 1,
216 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
218 CALL cunmbr(
'Q',
'R',
'C', 0, 2, 0, a, 1, tq, u, 1, w, 1,
220 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
222 CALL cunmbr(
'P',
'L',
'C', 2, 0, 2, a, 1, tq, u, 2, w, 1,
224 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
226 CALL cunmbr(
'P',
'R',
'C', 0, 2, 2, a, 1, tq, u, 1, w, 1,
228 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
230 CALL cunmbr(
'Q',
'R',
'C', 2, 0, 0, a, 1, tq, u, 1, w, 1,
232 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
234 CALL cunmbr(
'Q',
'L',
'C', 0, 2, 0, a, 1, tq, u, 1, w, 0,
236 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
238 CALL cunmbr(
'Q',
'R',
'C', 2, 0, 0, a, 1, tq, u, 2, w, 0,
240 CALL chkxer(
'CUNMBR', infot, nout, lerr, ok )
247 CALL cbdsqr(
'/', 0, 0, 0, 0, d, e, v, 1, u, 1, a, 1, rw,
249 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
251 CALL cbdsqr(
'U', -1, 0, 0, 0, d, e, v, 1, u, 1, a, 1, rw,
253 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
255 CALL cbdsqr(
'U', 0, -1, 0, 0, d, e, v, 1, u, 1, a, 1, rw,
257 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
259 CALL cbdsqr(
'U', 0, 0, -1, 0, d, e, v, 1, u, 1, a, 1, rw,
261 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
263 CALL cbdsqr(
'U', 0, 0, 0, -1, d, e, v, 1, u, 1, a, 1, rw,
265 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
267 CALL cbdsqr(
'U', 2, 1, 0, 0, d, e, v, 1, u, 1, a, 1, rw,
269 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
271 CALL cbdsqr(
'U', 0, 0, 2, 0, d, e, v, 1, u, 1, a, 1, rw,
273 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
275 CALL cbdsqr(
'U', 2, 0, 0, 1, d, e, v, 1, u, 1, a, 1, rw,
277 CALL chkxer(
'CBDSQR', infot, nout, lerr, ok )
284 WRITE( nout, fmt = 9999 )path, nt
286 WRITE( nout, fmt = 9998 )path
289 9999
FORMAT( 1x, a3,
' routines passed the tests of the error exits (',
290 $ i3,
' tests done)' )
291 9998
FORMAT(
' *** ', a3,
' routines failed the tests of the error ',
subroutine chkxer(srnamt, infot, nout, lerr, ok)
subroutine cerrbd(path, nunit)
CERRBD
subroutine cbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, rwork, info)
CBDSQR
subroutine cgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
CGEBD2 reduces a general matrix to bidiagonal form using an unblocked algorithm.
subroutine cgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
CGEBRD
subroutine cungbr(vect, m, n, k, a, lda, tau, work, lwork, info)
CUNGBR
subroutine cunmbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
CUNMBR