69 parameter( nmax = 4, lw = nmax )
71 parameter( zero = 0.0e0, one = 1.0e0 )
75 INTEGER I, INFO, J, NS, NT
78 INTEGER IQ( NMAX, NMAX ), IW( NMAX )
79 REAL 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. / real( i+j )
122 IF( lsamen( 2, c2,
'BD' ) )
THEN
128 CALL sgebrd( -1, 0, a, 1, d, e, tq, tp, w, 1, info )
129 CALL chkxer(
'SGEBRD', infot, nout, lerr, ok )
131 CALL sgebrd( 0, -1, a, 1, d, e, tq, tp, w, 1, info )
132 CALL chkxer(
'SGEBRD', infot, nout, lerr, ok )
134 CALL sgebrd( 2, 1, a, 1, d, e, tq, tp, w, 2, info )
135 CALL chkxer(
'SGEBRD', infot, nout, lerr, ok )
137 CALL sgebrd( 2, 1, a, 2, d, e, tq, tp, w, 1, info )
138 CALL chkxer(
'SGEBRD', infot, nout, lerr, ok )
145 CALL sgebd2( -1, 0, a, 1, d, e, tq, tp, w, info )
146 CALL chkxer(
'SGEBD2', infot, nout, lerr, ok )
148 CALL sgebd2( 0, -1, a, 1, d, e, tq, tp, w, info )
149 CALL chkxer(
'SGEBD2', infot, nout, lerr, ok )
151 CALL sgebd2( 2, 1, a, 1, d, e, tq, tp, w, info )
152 CALL chkxer(
'SGEBD2', infot, nout, lerr, ok )
159 CALL sorgbr(
'/', 0, 0, 0, a, 1, tq, w, 1, info )
160 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
162 CALL sorgbr(
'Q', -1, 0, 0, a, 1, tq, w, 1, info )
163 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
165 CALL sorgbr(
'Q', 0, -1, 0, a, 1, tq, w, 1, info )
166 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
168 CALL sorgbr(
'Q', 0, 1, 0, a, 1, tq, w, 1, info )
169 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
171 CALL sorgbr(
'Q', 1, 0, 1, a, 1, tq, w, 1, info )
172 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
174 CALL sorgbr(
'P', 1, 0, 0, a, 1, tq, w, 1, info )
175 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
177 CALL sorgbr(
'P', 0, 1, 1, a, 1, tq, w, 1, info )
178 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
180 CALL sorgbr(
'Q', 0, 0, -1, a, 1, tq, w, 1, info )
181 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
183 CALL sorgbr(
'Q', 2, 1, 1, a, 1, tq, w, 1, info )
184 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
186 CALL sorgbr(
'Q', 2, 2, 1, a, 2, tq, w, 1, info )
187 CALL chkxer(
'SORGBR', infot, nout, lerr, ok )
194 CALL sormbr(
'/',
'L',
'T', 0, 0, 0, a, 1, tq, u, 1, w, 1,
196 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
198 CALL sormbr(
'Q',
'/',
'T', 0, 0, 0, a, 1, tq, u, 1, w, 1,
200 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
202 CALL sormbr(
'Q',
'L',
'/', 0, 0, 0, a, 1, tq, u, 1, w, 1,
204 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
206 CALL sormbr(
'Q',
'L',
'T', -1, 0, 0, a, 1, tq, u, 1, w, 1,
208 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
210 CALL sormbr(
'Q',
'L',
'T', 0, -1, 0, a, 1, tq, u, 1, w, 1,
212 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
214 CALL sormbr(
'Q',
'L',
'T', 0, 0, -1, a, 1, tq, u, 1, w, 1,
216 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
218 CALL sormbr(
'Q',
'L',
'T', 2, 0, 0, a, 1, tq, u, 2, w, 1,
220 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
222 CALL sormbr(
'Q',
'R',
'T', 0, 2, 0, a, 1, tq, u, 1, w, 1,
224 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
226 CALL sormbr(
'P',
'L',
'T', 2, 0, 2, a, 1, tq, u, 2, w, 1,
228 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
230 CALL sormbr(
'P',
'R',
'T', 0, 2, 2, a, 1, tq, u, 1, w, 1,
232 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
234 CALL sormbr(
'Q',
'R',
'T', 2, 0, 0, a, 1, tq, u, 1, w, 1,
236 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
238 CALL sormbr(
'Q',
'L',
'T', 0, 2, 0, a, 1, tq, u, 1, w, 1,
240 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
242 CALL sormbr(
'Q',
'R',
'T', 2, 0, 0, a, 1, tq, u, 2, w, 1,
244 CALL chkxer(
'SORMBR', infot, nout, lerr, ok )
251 CALL sbdsqr(
'/', 0, 0, 0, 0, d, e, v, 1, u, 1, a, 1, w, info )
252 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
254 CALL sbdsqr(
'U', -1, 0, 0, 0, d, e, v, 1, u, 1, a, 1, w,
256 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
258 CALL sbdsqr(
'U', 0, -1, 0, 0, d, e, v, 1, u, 1, a, 1, w,
260 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
262 CALL sbdsqr(
'U', 0, 0, -1, 0, d, e, v, 1, u, 1, a, 1, w,
264 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
266 CALL sbdsqr(
'U', 0, 0, 0, -1, d, e, v, 1, u, 1, a, 1, w,
268 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
270 CALL sbdsqr(
'U', 2, 1, 0, 0, d, e, v, 1, u, 1, a, 1, w, info )
271 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
273 CALL sbdsqr(
'U', 0, 0, 2, 0, d, e, v, 1, u, 1, a, 1, w, info )
274 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
276 CALL sbdsqr(
'U', 2, 0, 0, 1, d, e, v, 1, u, 1, a, 1, w, info )
277 CALL chkxer(
'SBDSQR', infot, nout, lerr, ok )
284 CALL sbdsdc(
'/',
'N', 0, d, e, u, 1, v, 1, q, iq, w, iw,
286 CALL chkxer(
'SBDSDC', infot, nout, lerr, ok )
288 CALL sbdsdc(
'U',
'/', 0, d, e, u, 1, v, 1, q, iq, w, iw,
290 CALL chkxer(
'SBDSDC', infot, nout, lerr, ok )
292 CALL sbdsdc(
'U',
'N', -1, d, e, u, 1, v, 1, q, iq, w, iw,
294 CALL chkxer(
'SBDSDC', infot, nout, lerr, ok )
296 CALL sbdsdc(
'U',
'I', 2, d, e, u, 1, v, 1, q, iq, w, iw,
298 CALL chkxer(
'SBDSDC', infot, nout, lerr, ok )
300 CALL sbdsdc(
'U',
'I', 2, d, e, u, 2, v, 1, q, iq, w, iw,
302 CALL chkxer(
'SBDSDC', infot, nout, lerr, ok )
309 CALL sbdsvdx(
'X',
'N',
'A', 1, d, e, zero, one, 0, 0,
310 $ ns, s, q, 1, w, iw, info)
311 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
313 CALL sbdsvdx(
'U',
'X',
'A', 1, d, e, zero, one, 0, 0,
314 $ ns, s, q, 1, w, iw, info)
315 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
317 CALL sbdsvdx(
'U',
'V',
'X', 1, d, e, zero, one, 0, 0,
318 $ ns, s, q, 1, w, iw, info)
319 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
321 CALL sbdsvdx(
'U',
'V',
'A', -1, d, e, zero, one, 0, 0,
322 $ ns, s, q, 1, w, iw, info)
323 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
325 CALL sbdsvdx(
'U',
'V',
'V', 2, d, e, -one, zero, 0, 0,
326 $ ns, s, q, 1, w, iw, info)
327 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
329 CALL sbdsvdx(
'U',
'V',
'V', 2, d, e, one, zero, 0, 0,
330 $ ns, s, q, 1, w, iw, info)
331 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
333 CALL sbdsvdx(
'L',
'V',
'I', 2, d, e, zero, zero, 0, 2,
334 $ ns, s, q, 1, w, iw, info)
335 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
337 CALL sbdsvdx(
'L',
'V',
'I', 4, d, e, zero, zero, 5, 2,
338 $ ns, s, q, 1, w, iw, info)
339 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
341 CALL sbdsvdx(
'L',
'V',
'I', 4, d, e, zero, zero, 3, 2,
342 $ ns, s, q, 1, w, iw, info)
343 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
345 CALL sbdsvdx(
'L',
'V',
'I', 4, d, e, zero, zero, 3, 5,
346 $ ns, s, q, 1, w, iw, info)
347 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
349 CALL sbdsvdx(
'L',
'V',
'A', 4, d, e, zero, zero, 0, 0,
350 $ ns, s, q, 0, w, iw, info)
351 CALL chkxer(
'SBDSVDX', infot, nout, lerr, ok )
353 CALL sbdsvdx(
'L',
'V',
'A', 4, d, e, zero, zero, 0, 0,
354 $ ns, s, q, 2, w, iw, info)
355 CALL chkxer(
'SBDSVDX', 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 sbdsdc(uplo, compq, n, d, e, u, ldu, vt, ldvt, q, iq, work, iwork, info)
SBDSDC
subroutine sbdsqr(uplo, n, ncvt, nru, ncc, d, e, vt, ldvt, u, ldu, c, ldc, work, info)
SBDSQR
subroutine sbdsvdx(uplo, jobz, range, n, d, e, vl, vu, il, iu, ns, s, z, ldz, work, iwork, info)
SBDSVDX
subroutine sgebd2(m, n, a, lda, d, e, tauq, taup, work, info)
SGEBD2 reduces a general matrix to bidiagonal form using an unblocked algorithm.
subroutine sgebrd(m, n, a, lda, d, e, tauq, taup, work, lwork, info)
SGEBRD
subroutine sorgbr(vect, m, n, k, a, lda, tau, work, lwork, info)
SORGBR
subroutine sormbr(vect, side, trans, m, n, k, a, lda, tau, c, ldc, work, lwork, info)
SORMBR
subroutine serrbd(path, nunit)
SERRBD