summaryrefslogtreecommitdiff
path: root/TESTING/EIG/zerrbd.f
diff options
context:
space:
mode:
authorjason <jason@8a072113-8704-0410-8d35-dd094bca7971>2008-10-28 01:38:50 +0000
committerjason <jason@8a072113-8704-0410-8d35-dd094bca7971>2008-10-28 01:38:50 +0000
commitbaba851215b44ac3b60b9248eb02bcce7eb76247 (patch)
tree8c0f5c006875532a30d4409f5e94b0f310ff00a7 /TESTING/EIG/zerrbd.f
downloadlapack-baba851215b44ac3b60b9248eb02bcce7eb76247.tar.gz
lapack-baba851215b44ac3b60b9248eb02bcce7eb76247.tar.bz2
lapack-baba851215b44ac3b60b9248eb02bcce7eb76247.zip
Move LAPACK trunk into position.
Diffstat (limited to 'TESTING/EIG/zerrbd.f')
-rw-r--r--TESTING/EIG/zerrbd.f244
1 files changed, 244 insertions, 0 deletions
diff --git a/TESTING/EIG/zerrbd.f b/TESTING/EIG/zerrbd.f
new file mode 100644
index 00000000..f8eeafe6
--- /dev/null
+++ b/TESTING/EIG/zerrbd.f
@@ -0,0 +1,244 @@
+ SUBROUTINE ZERRBD( PATH, NUNIT )
+*
+* -- LAPACK test routine (version 3.1) --
+* Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
+* November 2006
+*
+* .. Scalar Arguments ..
+ CHARACTER*3 PATH
+ INTEGER NUNIT
+* ..
+*
+* Purpose
+* =======
+*
+* ZERRBD tests the error exits for ZGEBRD, ZUNGBR, ZUNMBR, and ZBDSQR.
+*
+* Arguments
+* =========
+*
+* PATH (input) CHARACTER*3
+* The LAPACK path name for the routines to be tested.
+*
+* NUNIT (input) INTEGER
+* The unit number for output.
+*
+* =====================================================================
+*
+* .. Parameters ..
+ INTEGER NMAX, LW
+ PARAMETER ( NMAX = 4, LW = NMAX )
+* ..
+* .. Local Scalars ..
+ CHARACTER*2 C2
+ INTEGER I, INFO, J, NT
+* ..
+* .. Local Arrays ..
+ DOUBLE PRECISION D( NMAX ), E( NMAX ), RW( 4*NMAX )
+ COMPLEX*16 A( NMAX, NMAX ), TP( NMAX ), TQ( NMAX ),
+ $ U( NMAX, NMAX ), V( NMAX, NMAX ), W( LW )
+* ..
+* .. External Functions ..
+ LOGICAL LSAMEN
+ EXTERNAL LSAMEN
+* ..
+* .. External Subroutines ..
+ EXTERNAL CHKXER, ZBDSQR, ZGEBRD, ZUNGBR, ZUNMBR
+* ..
+* .. Scalars in Common ..
+ LOGICAL LERR, OK
+ CHARACTER(32) SRNAMT
+ INTEGER INFOT, NOUT
+* ..
+* .. Common blocks ..
+ COMMON / INFOC / INFOT, NOUT, OK, LERR
+ COMMON / SRNAMC / SRNAMT
+* ..
+* .. Intrinsic Functions ..
+ INTRINSIC DBLE
+* ..
+* .. Executable Statements ..
+*
+ NOUT = NUNIT
+ WRITE( NOUT, FMT = * )
+ C2 = PATH( 2: 3 )
+*
+* Set the variables to innocuous values.
+*
+ DO 20 J = 1, NMAX
+ DO 10 I = 1, NMAX
+ A( I, J ) = 1.D0 / DBLE( I+J )
+ 10 CONTINUE
+ 20 CONTINUE
+ OK = .TRUE.
+ NT = 0
+*
+* Test error exits of the SVD routines.
+*
+ IF( LSAMEN( 2, C2, 'BD' ) ) THEN
+*
+* ZGEBRD
+*
+ SRNAMT = 'ZGEBRD'
+ INFOT = 1
+ CALL ZGEBRD( -1, 0, A, 1, D, E, TQ, TP, W, 1, INFO )
+ CALL CHKXER( 'ZGEBRD', INFOT, NOUT, LERR, OK )
+ INFOT = 2
+ CALL ZGEBRD( 0, -1, A, 1, D, E, TQ, TP, W, 1, INFO )
+ CALL CHKXER( 'ZGEBRD', INFOT, NOUT, LERR, OK )
+ INFOT = 4
+ CALL ZGEBRD( 2, 1, A, 1, D, E, TQ, TP, W, 2, INFO )
+ CALL CHKXER( 'ZGEBRD', INFOT, NOUT, LERR, OK )
+ INFOT = 10
+ CALL ZGEBRD( 2, 1, A, 2, D, E, TQ, TP, W, 1, INFO )
+ CALL CHKXER( 'ZGEBRD', INFOT, NOUT, LERR, OK )
+ NT = NT + 4
+*
+* ZUNGBR
+*
+ SRNAMT = 'ZUNGBR'
+ INFOT = 1
+ CALL ZUNGBR( '/', 0, 0, 0, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 2
+ CALL ZUNGBR( 'Q', -1, 0, 0, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZUNGBR( 'Q', 0, -1, 0, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZUNGBR( 'Q', 0, 1, 0, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZUNGBR( 'Q', 1, 0, 1, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZUNGBR( 'P', 1, 0, 0, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZUNGBR( 'P', 0, 1, 1, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 4
+ CALL ZUNGBR( 'Q', 0, 0, -1, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 6
+ CALL ZUNGBR( 'Q', 2, 1, 1, A, 1, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ INFOT = 9
+ CALL ZUNGBR( 'Q', 2, 2, 1, A, 2, TQ, W, 1, INFO )
+ CALL CHKXER( 'ZUNGBR', INFOT, NOUT, LERR, OK )
+ NT = NT + 10
+*
+* ZUNMBR
+*
+ SRNAMT = 'ZUNMBR'
+ INFOT = 1
+ CALL ZUNMBR( '/', 'L', 'T', 0, 0, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 2
+ CALL ZUNMBR( 'Q', '/', 'T', 0, 0, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZUNMBR( 'Q', 'L', '/', 0, 0, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 4
+ CALL ZUNMBR( 'Q', 'L', 'C', -1, 0, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 5
+ CALL ZUNMBR( 'Q', 'L', 'C', 0, -1, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 6
+ CALL ZUNMBR( 'Q', 'L', 'C', 0, 0, -1, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 8
+ CALL ZUNMBR( 'Q', 'L', 'C', 2, 0, 0, A, 1, TQ, U, 2, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 8
+ CALL ZUNMBR( 'Q', 'R', 'C', 0, 2, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 8
+ CALL ZUNMBR( 'P', 'L', 'C', 2, 0, 2, A, 1, TQ, U, 2, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 8
+ CALL ZUNMBR( 'P', 'R', 'C', 0, 2, 2, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 11
+ CALL ZUNMBR( 'Q', 'R', 'C', 2, 0, 0, A, 1, TQ, U, 1, W, 1,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 13
+ CALL ZUNMBR( 'Q', 'L', 'C', 0, 2, 0, A, 1, TQ, U, 1, W, 0,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ INFOT = 13
+ CALL ZUNMBR( 'Q', 'R', 'C', 2, 0, 0, A, 1, TQ, U, 2, W, 0,
+ $ INFO )
+ CALL CHKXER( 'ZUNMBR', INFOT, NOUT, LERR, OK )
+ NT = NT + 13
+*
+* ZBDSQR
+*
+ SRNAMT = 'ZBDSQR'
+ INFOT = 1
+ CALL ZBDSQR( '/', 0, 0, 0, 0, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 2
+ CALL ZBDSQR( 'U', -1, 0, 0, 0, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 3
+ CALL ZBDSQR( 'U', 0, -1, 0, 0, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 4
+ CALL ZBDSQR( 'U', 0, 0, -1, 0, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 5
+ CALL ZBDSQR( 'U', 0, 0, 0, -1, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 9
+ CALL ZBDSQR( 'U', 2, 1, 0, 0, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 11
+ CALL ZBDSQR( 'U', 0, 0, 2, 0, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ INFOT = 13
+ CALL ZBDSQR( 'U', 2, 0, 0, 1, D, E, V, 1, U, 1, A, 1, RW,
+ $ INFO )
+ CALL CHKXER( 'ZBDSQR', INFOT, NOUT, LERR, OK )
+ NT = NT + 8
+ END IF
+*
+* Print a summary line.
+*
+ IF( OK ) THEN
+ WRITE( NOUT, FMT = 9999 )PATH, NT
+ ELSE
+ WRITE( NOUT, FMT = 9998 )PATH
+ END IF
+*
+ 9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits (',
+ $ I3, ' tests done)' )
+ 9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ',
+ $ 'exits ***' )
+*
+ RETURN
+*
+* End of ZERRBD
+*
+ END