Skip to content

Commit 750c1f8

Browse files
committed
xGESVDQ tests of the error exits
Adding the first set of tests for xGESVDQ
1 parent dc24565 commit 750c1f8

File tree

4 files changed

+232
-4
lines changed

4 files changed

+232
-4
lines changed

TESTING/EIG/cerred.f

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*> CGEJSV compute SVD of an M-by-N matrix A where M >= N
3737
*> CGESVDX compute SVD of an M-by-N matrix A(by bisection
3838
*> and inverse iteration)
39+
*> CGESVDQ compute SVD of an M-by-N matrix A(with a
40+
*> QR-Preconditioned )
3941
*> \endverbatim
4042
*
4143
* Arguments:
@@ -101,7 +103,7 @@ SUBROUTINE CERRED( PATH, NUNIT )
101103
* ..
102104
* .. External Subroutines ..
103105
EXTERNAL CHKXER, CGEES, CGEESX, CGEEV, CGEEVX, CGEJSV,
104-
$ CGESDD, CGESVD
106+
$ CGESDD, CGESVD, CGESVDX, CGESVDQ
105107
* ..
106108
* .. External Functions ..
107109
LOGICAL LSAMEN, CSLECT
@@ -495,6 +497,61 @@ SUBROUTINE CERRED( PATH, NUNIT )
495497
ELSE
496498
WRITE( NOUT, FMT = 9998 )
497499
END IF
500+
*
501+
* Test CGESVDQ
502+
*
503+
SRNAMT = 'CGESVDQ'
504+
INFOT = 1
505+
CALL CGESVDQ( 'X', 'P', 'T', 'A', 'A', 0, 0, A, 1, S, U,
506+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
507+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
508+
INFOT = 2
509+
CALL CGESVDQ( 'A', 'X', 'T', 'A', 'A', 0, 0, A, 1, S, U,
510+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
511+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
512+
INFOT = 3
513+
CALL CGESVDQ( 'A', 'P', 'X', 'A', 'A', 0, 0, A, 1, S, U,
514+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
515+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
516+
INFOT = 4
517+
CALL CGESVDQ( 'A', 'P', 'T', 'X', 'A', 0, 0, A, 1, S, U,
518+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
519+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
520+
INFOT = 5
521+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'X', 0, 0, A, 1, S, U,
522+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
523+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
524+
INFOT = 6
525+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'A', -1, 0, A, 1, S, U,
526+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
527+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
528+
INFOT = 7
529+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'A', 0, 1, A, 1, S, U,
530+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
531+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
532+
INFOT = 9
533+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 0, S, U,
534+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
535+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
536+
INFOT = 12
537+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
538+
$ -1, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
539+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
540+
INFOT = 14
541+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
542+
$ 1, VT, -1, NS, IW, 1, W, 1, RW, 1, INFO )
543+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
544+
INFOT = 17
545+
CALL CGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
546+
$ 1, VT, 1, NS, IW, -5, W, 1, RW, 1, INFO )
547+
CALL CHKXER( 'CGESVDQ', INFOT, NOUT, LERR, OK )
548+
NT = 11
549+
IF( OK ) THEN
550+
WRITE( NOUT, FMT = 9999 )SRNAMT( 1:LEN_TRIM( SRNAMT ) ),
551+
$ NT
552+
ELSE
553+
WRITE( NOUT, FMT = 9998 )
554+
END IF
498555
END IF
499556
*
500557
* Print a summary line.

TESTING/EIG/derred.f

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*> DGEJSV compute SVD of an M-by-N matrix A where M >= N
3737
*> DGESVDX compute SVD of an M-by-N matrix A(by bisection
3838
*> and inverse iteration)
39+
*> DGESVDQ compute SVD of an M-by-N matrix A(with a
40+
*> QR-Preconditioned )
3941
*> \endverbatim
4042
*
4143
* Arguments:
@@ -100,7 +102,7 @@ SUBROUTINE DERRED( PATH, NUNIT )
100102
* ..
101103
* .. External Subroutines ..
102104
EXTERNAL CHKXER, DGEES, DGEESX, DGEEV, DGEEVX, DGEJSV,
103-
$ DGESDD, DGESVD
105+
$ DGESDD, DGESVD, DGESVDX, DGESVQ
104106
* ..
105107
* .. External Functions ..
106108
LOGICAL DSLECT, LSAMEN
@@ -486,6 +488,61 @@ SUBROUTINE DERRED( PATH, NUNIT )
486488
ELSE
487489
WRITE( NOUT, FMT = 9998 )
488490
END IF
491+
*
492+
* Test DGESVDQ
493+
*
494+
SRNAMT = 'DGESVDQ'
495+
INFOT = 1
496+
CALL DGESVDQ( 'X', 'P', 'T', 'A', 'A', 0, 0, A, 1, S, U,
497+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
498+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
499+
INFOT = 2
500+
CALL DGESVDQ( 'A', 'X', 'T', 'A', 'A', 0, 0, A, 1, S, U,
501+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
502+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
503+
INFOT = 3
504+
CALL DGESVDQ( 'A', 'P', 'X', 'A', 'A', 0, 0, A, 1, S, U,
505+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
506+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
507+
INFOT = 4
508+
CALL DGESVDQ( 'A', 'P', 'T', 'X', 'A', 0, 0, A, 1, S, U,
509+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
510+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
511+
INFOT = 5
512+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'X', 0, 0, A, 1, S, U,
513+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
514+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
515+
INFOT = 6
516+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'A', -1, 0, A, 1, S, U,
517+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
518+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
519+
INFOT = 7
520+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'A', 0, 1, A, 1, S, U,
521+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
522+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
523+
INFOT = 9
524+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 0, S, U,
525+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
526+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
527+
INFOT = 12
528+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
529+
$ -1, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
530+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
531+
INFOT = 14
532+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
533+
$ 1, VT, -1, NS, IW, 1, W, 1, W, 1, INFO )
534+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
535+
INFOT = 17
536+
CALL DGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
537+
$ 1, VT, 1, NS, IW, -5, W, 1, W, 1, INFO )
538+
CALL CHKXER( 'DGESVDQ', INFOT, NOUT, LERR, OK )
539+
NT = 11
540+
IF( OK ) THEN
541+
WRITE( NOUT, FMT = 9999 )SRNAMT( 1:LEN_TRIM( SRNAMT ) ),
542+
$ NT
543+
ELSE
544+
WRITE( NOUT, FMT = 9998 )
545+
END IF
489546
END IF
490547
*
491548
* Print a summary line.

TESTING/EIG/serred.f

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*> SGEJSV compute SVD of an M-by-N matrix A where M >= N
3737
*> SGESVDX compute SVD of an M-by-N matrix A(by bisection
3838
*> and inverse iteration)
39+
*> SGESVDQ compute SVD of an M-by-N matrix A(with a
40+
*> QR-Preconditioned )
3941
*> \endverbatim
4042
*
4143
* Arguments:
@@ -100,7 +102,7 @@ SUBROUTINE SERRED( PATH, NUNIT )
100102
* ..
101103
* .. External Subroutines ..
102104
EXTERNAL CHKXER, SGEES, SGEESX, SGEEV, SGEEVX, SGEJSV,
103-
$ SGESDD, SGESVD
105+
$ SGESDD, SGESVD, SGESVDX, SGESVDQ
104106
* ..
105107
* .. External Functions ..
106108
LOGICAL SSLECT, LSAMEN
@@ -486,6 +488,61 @@ SUBROUTINE SERRED( PATH, NUNIT )
486488
ELSE
487489
WRITE( NOUT, FMT = 9998 )
488490
END IF
491+
*
492+
* Test SGESVDQ
493+
*
494+
SRNAMT = 'SGESVDQ'
495+
INFOT = 1
496+
CALL SGESVDQ( 'X', 'P', 'T', 'A', 'A', 0, 0, A, 1, S, U,
497+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
498+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
499+
INFOT = 2
500+
CALL SGESVDQ( 'A', 'X', 'T', 'A', 'A', 0, 0, A, 1, S, U,
501+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
502+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
503+
INFOT = 3
504+
CALL SGESVDQ( 'A', 'P', 'X', 'A', 'A', 0, 0, A, 1, S, U,
505+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
506+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
507+
INFOT = 4
508+
CALL SGESVDQ( 'A', 'P', 'T', 'X', 'A', 0, 0, A, 1, S, U,
509+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
510+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
511+
INFOT = 5
512+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'X', 0, 0, A, 1, S, U,
513+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
514+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
515+
INFOT = 6
516+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'A', -1, 0, A, 1, S, U,
517+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
518+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
519+
INFOT = 7
520+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'A', 0, 1, A, 1, S, U,
521+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
522+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
523+
INFOT = 9
524+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 0, S, U,
525+
$ 0, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
526+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
527+
INFOT = 12
528+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
529+
$ -1, VT, 0, NS, IW, 1, W, 1, W, 1, INFO )
530+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
531+
INFOT = 14
532+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
533+
$ 1, VT, -1, NS, IW, 1, W, 1, W, 1, INFO )
534+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
535+
INFOT = 17
536+
CALL SGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
537+
$ 1, VT, 1, NS, IW, -5, W, 1, W, 1, INFO )
538+
CALL CHKXER( 'SGESVDQ', INFOT, NOUT, LERR, OK )
539+
NT = 11
540+
IF( OK ) THEN
541+
WRITE( NOUT, FMT = 9999 )SRNAMT( 1:LEN_TRIM( SRNAMT ) ),
542+
$ NT
543+
ELSE
544+
WRITE( NOUT, FMT = 9998 )
545+
END IF
489546
END IF
490547
*
491548
* Print a summary line.

TESTING/EIG/zerred.f

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
*> ZGEJSV compute SVD of an M-by-N matrix A where M >= N
3737
*> ZGESVDX compute SVD of an M-by-N matrix A(by bisection
3838
*> and inverse iteration)
39+
*> ZGESVDQ compute SVD of an M-by-N matrix A(with a
40+
*> QR-Preconditioned )
3941
*> \endverbatim
4042
*
4143
* Arguments:
@@ -101,7 +103,7 @@ SUBROUTINE ZERRED( PATH, NUNIT )
101103
* ..
102104
* .. External Subroutines ..
103105
EXTERNAL CHKXER, ZGEES, ZGEESX, ZGEEV, ZGEEVX, ZGESVJ,
104-
$ ZGESDD, ZGESVD
106+
$ ZGESDD, ZGESVD, ZGESVDX, ZGESVQ
105107
* ..
106108
* .. External Functions ..
107109
LOGICAL LSAMEN, ZSLECT
@@ -495,6 +497,61 @@ SUBROUTINE ZERRED( PATH, NUNIT )
495497
ELSE
496498
WRITE( NOUT, FMT = 9998 )
497499
END IF
500+
*
501+
* Test ZGESVDQ
502+
*
503+
SRNAMT = 'ZGESVDQ'
504+
INFOT = 1
505+
CALL ZGESVDQ( 'X', 'P', 'T', 'A', 'A', 0, 0, A, 1, S, U,
506+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
507+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
508+
INFOT = 2
509+
CALL ZGESVDQ( 'A', 'X', 'T', 'A', 'A', 0, 0, A, 1, S, U,
510+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
511+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
512+
INFOT = 3
513+
CALL ZGESVDQ( 'A', 'P', 'X', 'A', 'A', 0, 0, A, 1, S, U,
514+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
515+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
516+
INFOT = 4
517+
CALL ZGESVDQ( 'A', 'P', 'T', 'X', 'A', 0, 0, A, 1, S, U,
518+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
519+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
520+
INFOT = 5
521+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'X', 0, 0, A, 1, S, U,
522+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
523+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
524+
INFOT = 6
525+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'A', -1, 0, A, 1, S, U,
526+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
527+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
528+
INFOT = 7
529+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'A', 0, 1, A, 1, S, U,
530+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
531+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
532+
INFOT = 9
533+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 0, S, U,
534+
$ 0, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
535+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
536+
INFOT = 12
537+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
538+
$ -1, VT, 0, NS, IW, 1, W, 1, RW, 1, INFO )
539+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
540+
INFOT = 14
541+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
542+
$ 1, VT, -1, NS, IW, 1, W, 1, RW, 1, INFO )
543+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
544+
INFOT = 17
545+
CALL ZGESVDQ( 'A', 'P', 'T', 'A', 'A', 1, 1, A, 1, S, U,
546+
$ 1, VT, 1, NS, IW, -5, W, 1, RW, 1, INFO )
547+
CALL CHKXER( 'ZGESVDQ', INFOT, NOUT, LERR, OK )
548+
NT = 11
549+
IF( OK ) THEN
550+
WRITE( NOUT, FMT = 9999 )SRNAMT( 1:LEN_TRIM( SRNAMT ) ),
551+
$ NT
552+
ELSE
553+
WRITE( NOUT, FMT = 9998 )
554+
END IF
498555
END IF
499556
*
500557
* Print a summary line.

0 commit comments

Comments
 (0)