69 parameter( nmax = 4, lw = nmax )
70 DOUBLE PRECISION ZERO, ONE
71 parameter( zero = 0.0d0, one = 1.0d0 )
75 INTEGER I, INFO, J, NS, NT
78 INTEGER IQ( NMAX, NMAX ), IW( NMAX )
79 DOUBLE PRECISION A( NMAX, NMAX ), D( NMAX ), E( NMAX ),
80 $ Q( NMAX, NMAX ), S( NMAX ), TP( NMAX ),
81 $ TQ( NMAX ), U( NMAX, NMAX ),
82 $ V( NMAX, NMAX ), W( LW )
98 COMMON / infoc / infot, nout, ok, lerr
99 COMMON / srnamc / srnamt
107 WRITE( nout, fmt = * )
114 a( i, j ) = 1.d0 / dble( i+j )
122 IF( lsamen( 2, c2,
'BD' ) )
THEN
128 CALL dgebrd( -1, 0, a, 1, d, e, tq, tp, w, 1, info )
129 CALL chkxer(
'DGEBRD', infot, nout, lerr, ok )
131 CALL dgebrd( 0, -1, a, 1, d, e, tq, tp, w, 1, info )
132 CALL chkxer(
'DGEBRD', infot, nout, lerr, ok )
134 CALL dgebrd( 2, 1, a, 1, d, e, tq, tp, w, 2, info )
135 CALL chkxer(
'DGEBRD', infot, nout, lerr, ok )
137 CALL dgebrd( 2, 1, a, 2, d, e, tq, tp, w, 1, info )
138 CALL chkxer(
'DGEBRD', infot, nout, lerr, ok )
145 CALL dgebd2( -1, 0, a, 1, d, e, tq, tp, w, info )
146 CALL chkxer(
'DGEBD2', infot, nout, lerr, ok )
148 CALL dgebd2( 0, -1, a, 1, d, e, tq, tp, w, info )
149 CALL chkxer(
'DGEBD2', infot, nout, lerr, ok )
151 CALL dgebd2( 2, 1, a, 1, d, e, tq, tp, w, info )
152 CALL chkxer(
'DGEBD2', infot, nout, lerr, ok )
159 CALL dorgbr(
'/', 0, 0, 0, a, 1, tq, w, 1, info )
160 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
162 CALL dorgbr(
'Q', -1, 0, 0, a, 1, tq, w, 1, info )
163 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
165 CALL dorgbr(
'Q', 0, -1, 0, a, 1, tq, w, 1, info )
166 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
168 CALL dorgbr(
'Q', 0, 1, 0, a, 1, tq, w, 1, info )
169 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
171 CALL dorgbr(
'Q', 1, 0, 1, a, 1, tq, w, 1, info )
172 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
174 CALL dorgbr(
'P', 1, 0, 0, a, 1, tq, w, 1, info )
175 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
177 CALL dorgbr(
'P', 0, 1, 1, a, 1, tq, w, 1, info )
178 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
180 CALL dorgbr(
'Q', 0, 0, -1, a, 1, tq, w, 1, info )
181 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
183 CALL dorgbr(
'Q', 2, 1, 1, a, 1, tq, w, 1, info )
184 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
186 CALL dorgbr(
'Q', 2, 2, 1, a, 2, tq, w, 1, info )
187 CALL chkxer(
'DORGBR', infot, nout, lerr, ok )
194 CALL dormbr(
'/',
'L',
'T', 0, 0, 0, a, 1, tq, u, 1, w, 1,
196 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
198 CALL dormbr(
'Q',
'/',
'T', 0, 0, 0, a, 1, tq, u, 1, w, 1,
200 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
202 CALL dormbr(
'Q',
'L',
'/', 0, 0, 0, a, 1, tq, u, 1, w, 1,
204 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
206 CALL dormbr(
'Q',
'L',
'T', -1, 0, 0, a, 1, tq, u, 1, w, 1,
208 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
210 CALL dormbr(
'Q',
'L',
'T', 0, -1, 0, a, 1, tq, u, 1, w, 1,
212 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
214 CALL dormbr(
'Q',
'L',
'T', 0, 0, -1, a, 1, tq, u, 1, w, 1,
216 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
218 CALL dormbr(
'Q',
'L',
'T', 2, 0, 0, a, 1, tq, u, 2, w, 1,
220 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
222 CALL dormbr(
'Q',
'R',
'T', 0, 2, 0, a, 1, tq, u, 1, w, 1,
224 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
226 CALL dormbr(
'P',
'L',
'T', 2, 0, 2, a, 1, tq, u, 2, w, 1,
228 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
230 CALL dormbr(
'P',
'R',
'T', 0, 2, 2, a, 1, tq, u, 1, w, 1,
232 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
234 CALL dormbr(
'Q',
'R',
'T', 2, 0, 0, a, 1, tq, u, 1, w, 1,
236 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
238 CALL dormbr(
'Q',
'L',
'T', 0, 2, 0, a, 1, tq, u, 1, w, 1,
240 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
242 CALL dormbr(
'Q',
'R',
'T', 2, 0, 0, a, 1, tq, u, 2, w, 1,
244 CALL chkxer(
'DORMBR', infot, nout, lerr, ok )
251 CALL dbdsqr(
'/', 0, 0, 0, 0, d, e, v, 1, u, 1, a, 1, w, info )
252 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
254 CALL dbdsqr(
'U', -1, 0, 0, 0, d, e, v, 1, u, 1, a, 1, w,
256 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
258 CALL dbdsqr(
'U', 0, -1, 0, 0, d, e, v, 1, u, 1, a, 1, w,
260 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
262 CALL dbdsqr(
'U', 0, 0, -1, 0, d, e, v, 1, u, 1, a, 1, w,
264 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
266 CALL dbdsqr(
'U', 0, 0, 0, -1, d, e, v, 1, u, 1, a, 1, w,
268 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
270 CALL dbdsqr(
'U', 2, 1, 0, 0, d, e, v, 1, u, 1, a, 1, w, info )
271 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
273 CALL dbdsqr(
'U', 0, 0, 2, 0, d, e, v, 1, u, 1, a, 1, w, info )
274 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
276 CALL dbdsqr(
'U', 2, 0, 0, 1, d, e, v, 1, u, 1, a, 1, w, info )
277 CALL chkxer(
'DBDSQR', infot, nout, lerr, ok )
284 CALL dbdsdc(
'/',
'N', 0, d, e, u, 1, v, 1, q, iq, w, iw,
286 CALL chkxer(
'DBDSDC', infot, nout, lerr, ok )
288 CALL dbdsdc(
'U',
'/', 0, d, e, u, 1, v, 1, q, iq, w, iw,
290 CALL chkxer(
'DBDSDC', infot, nout, lerr, ok )
292 CALL dbdsdc(
'U',
'N', -1, d, e, u, 1, v, 1, q, iq, w, iw,
294 CALL chkxer(
'DBDSDC', infot, nout, lerr, ok )
296 CALL dbdsdc(
'U',
'I', 2, d, e, u, 1, v, 1, q, iq, w, iw,
298 CALL chkxer(
'DBDSDC', infot, nout, lerr, ok )
300 CALL dbdsdc(
'U',
'I', 2, d, e, u, 2, v, 1, q, iq, w, iw,
302 CALL chkxer(
'DBDSDC', infot, nout, lerr, ok )
309 CALL dbdsvdx(
'X',
'N',
'A', 1, d, e, zero, one, 0, 0,
310 $ ns, s, q, 1, w, iw, info)
311 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
313 CALL dbdsvdx(
'U',
'X',
'A', 1, d, e, zero, one, 0, 0,
314 $ ns, s, q, 1, w, iw, info)
315 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
317 CALL dbdsvdx(
'U',
'V',
'X', 1, d, e, zero, one, 0, 0,
318 $ ns, s, q, 1, w, iw, info)
319 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
321 CALL dbdsvdx(
'U',
'V',
'A', -1, d, e, zero, one, 0, 0,
322 $ ns, s, q, 1, w, iw, info)
323 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
325 CALL dbdsvdx(
'U',
'V',
'V', 2, d, e, -one, zero, 0, 0,
326 $ ns, s, q, 1, w, iw, info)
327 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
329 CALL dbdsvdx(
'U',
'V',
'V', 2, d, e, one, zero, 0, 0,
330 $ ns, s, q, 1, w, iw, info)
331 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
333 CALL dbdsvdx(
'L',
'V',
'I', 2, d, e, zero, zero, 0, 2,
334 $ ns, s, q, 1, w, iw, info)
335 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
337 CALL dbdsvdx(
'L',
'V',
'I', 4, d, e, zero, zero, 5, 2,
338 $ ns, s, q, 1, w, iw, info)
339 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
341 CALL dbdsvdx(
'L',
'V',
'I', 4, d, e, zero, zero, 3, 2,
342 $ ns, s, q, 1, w, iw, info)
343 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
345 CALL dbdsvdx(
'L',
'V',
'I', 4, d, e, zero, zero, 3, 5,
346 $ ns, s, q, 1, w, iw, info)
347 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
349 CALL dbdsvdx(
'L',
'V',
'A', 4, d, e, zero, zero, 0, 0,
350 $ ns, s, q, 0, w, iw, info)
351 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
353 CALL dbdsvdx(
'L',
'V',
'A', 4, d, e, zero, zero, 0, 0,
354 $ ns, s, q, 2, w, iw, info)
355 CALL chkxer(
'DBDSVDX', infot, nout, lerr, ok )
362 WRITE( nout, fmt = 9999 )path, nt
364 WRITE( nout, fmt = 9998 )path
367 9999
FORMAT( 1x, a3,
' routines passed the tests of the error exits',
368 $
' (', i3,
' tests done)' )
369 9998
FORMAT(
' *** ', a3,
' routines failed the tests of the error ',
subroutine chkxer(srnamt, infot, nout, lerr, ok)
subroutine derrbd(path, nunit)
DERRBD
subroutine dbdsdc(uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork, info)
DBDSDC
subroutine dbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work, info)
DBDSQR
subroutine dbdsvdx(uplo, jobz, range, n, d, e, vl, vu, il, iu, ns, s, z, ldz, work, iwork, info)
DBDSVDX
subroutine dgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
DGEBD2 reduces a general matrix to bidiagonal form using an unblocked algorithm.
subroutine dgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
DGEBRD
subroutine dorgbr(vect, m, n, k, a, lda, tau, work, lwork, info)
DORGBR
subroutine dormbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
DORMBR