Skip to content

Commit 833cd58

Browse files
committed
Test [sd]trsyl3
1 parent cda8a83 commit 833cd58

File tree

8 files changed

+724
-30
lines changed

8 files changed

+724
-30
lines changed

TESTING/EIG/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ set(SEIGTST schkee.F
4040
sget54.f sglmts.f sgqrts.f sgrqts.f sgsvts3.f
4141
shst01.f slarfy.f slarhs.f slatm4.f slctes.f slctsx.f slsets.f sort01.f
4242
sort03.f ssbt21.f ssgt01.f sslect.f sspt21.f sstt21.f
43-
sstt22.f ssyt21.f ssyt22.f)
43+
sstt22.f ssyl01.f ssyt21.f ssyt22.f)
4444

4545
set(CEIGTST cchkee.F
4646
cbdt01.f cbdt02.f cbdt03.f cbdt05.f

TESTING/EIG/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ SEIGTST = schkee.o \
6262
sget54.o sglmts.o sgqrts.o sgrqts.o sgsvts3.o \
6363
shst01.o slarfy.o slarhs.o slatm4.o slctes.o slctsx.o slsets.o sort01.o \
6464
sort03.o ssbt21.o ssgt01.o sslect.o sspt21.o sstt21.o \
65-
sstt22.o ssyt21.o ssyt22.o
65+
sstt22.o ssyl01.o ssyt21.o ssyt22.o
6666

6767
CEIGTST = cchkee.o \
6868
cbdt01.o cbdt02.o cbdt03.o cbdt05.o \

TESTING/EIG/dchkec.f

Lines changed: 34 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,23 @@ SUBROUTINE DCHKEC( THRESH, TSTERR, NIN, NOUT )
9090
LOGICAL OK
9191
CHARACTER*3 PATH
9292
INTEGER KLAEXC, KLALN2, KLANV2, KLAQTR, KLASY2, KTREXC,
93-
$ KTRSEN, KTRSNA, KTRSYL, LLAEXC, LLALN2, LLANV2,
94-
$ LLAQTR, LLASY2, LTREXC, LTRSYL, NLANV2, NLAQTR,
95-
$ NLASY2, NTESTS, NTRSYL, KTGEXC, LTGEXC
93+
$ KTRSEN, KTRSNA, KTRSYL, KTRSYL3, LLAEXC,
94+
$ LLALN2, LLANV2, LLAQTR, LLASY2, LTREXC, LTRSYL,
95+
$ NLANV2, NLAQTR, NLASY2, NTESTS, NTRSYL, KTGEXC,
96+
$ LTGEXC
9697
DOUBLE PRECISION EPS, RLAEXC, RLALN2, RLANV2, RLAQTR, RLASY2,
97-
$ RTREXC, RTRSYL, SFMIN, RTGEXC
98+
$ RTREXC, SFMIN, RTGEXC
9899
* ..
99100
* .. Local Arrays ..
100-
INTEGER LTRSEN( 3 ), LTRSNA( 3 ), NLAEXC( 2 ),
101-
$ NLALN2( 2 ), NTGEXC( 2 ), NTREXC( 3 ),
102-
$ NTRSEN( 3 ), NTRSNA( 3 )
103-
DOUBLE PRECISION RTRSEN( 3 ), RTRSNA( 3 )
101+
INTEGER FTRSYL( 3 ), ITRSYL( 2 ), LTRSEN( 3 ),
102+
$ LTRSNA( 3 ), NLAEXC( 2 ), NLALN2( 2 ),
103+
$ NTGEXC( 2 ), NTREXC( 3 ), NTRSEN( 3 ),
104+
$ NTRSNA( 3 )
105+
DOUBLE PRECISION RTRSEN( 3 ), RTRSNA( 3 ), RTRSYL( 2 )
104106
* ..
105107
* .. External Subroutines ..
106108
EXTERNAL DERREC, DGET31, DGET32, DGET33, DGET34, DGET35,
107-
$ DGET36, DGET37, DGET38, DGET39, DGET40
109+
$ DGET36, DGET37, DGET38, DGET39, DGET40, DSYL01
108110
* ..
109111
* .. External Functions ..
110112
DOUBLE PRECISION DLAMCH
@@ -153,10 +155,24 @@ SUBROUTINE DCHKEC( THRESH, TSTERR, NIN, NOUT )
153155
WRITE( NOUT, FMT = 9996 )RLAEXC, LLAEXC, NLAEXC, KLAEXC
154156
END IF
155157
*
156-
CALL DGET35( RTRSYL, LTRSYL, NTRSYL, KTRSYL )
157-
IF( RTRSYL.GT.THRESH ) THEN
158+
CALL DGET35( RTRSYL( 1 ), LTRSYL, NTRSYL, KTRSYL )
159+
IF( RTRSYL( 1 ).GT.THRESH ) THEN
158160
OK = .FALSE.
159-
WRITE( NOUT, FMT = 9995 )RTRSYL, LTRSYL, NTRSYL, KTRSYL
161+
WRITE( NOUT, FMT = 9995 )RTRSYL( 1 ), LTRSYL, NTRSYL, KTRSYL
162+
END IF
163+
*
164+
CALL DSYL01( THRESH, FTRSYL, RTRSYL, ITRSYL, KTRSYL3 )
165+
IF( FTRSYL( 1 ).GT.0 ) THEN
166+
OK = .FALSE.
167+
WRITE( NOUT, FMT = 9970 )FTRSYL( 1 ), RTRSYL( 1 ), THRESH
168+
END IF
169+
IF( FTRSYL( 2 ).GT.0 ) THEN
170+
OK = .FALSE.
171+
WRITE( NOUT, FMT = 9971 )FTRSYL( 2 ), RTRSYL( 2 ), THRESH
172+
END IF
173+
IF( FTRSYL( 3 ).GT.0 ) THEN
174+
OK = .FALSE.
175+
WRITE( NOUT, FMT = 9972 )FTRSYL( 3 )
160176
END IF
161177
*
162178
CALL DGET36( RTREXC, LTREXC, NTREXC, KTREXC, NIN )
@@ -228,6 +244,12 @@ SUBROUTINE DCHKEC( THRESH, TSTERR, NIN, NOUT )
228244
$ 's than', F8.2, / / )
229245
9986 FORMAT( ' Error in DTGEXC: RMAX =', D12.3, / ' LMAX = ', I8, ' N',
230246
$ 'INFO=', 2I8, ' KNT=', I8 )
247+
9972 FORMAT( 'DTRSYL and DTRSYL3 compute an inconsistent result ',
248+
$ 'factor in ', I8, ' tests.')
249+
9971 FORMAT( 'Error in DTRSYL3: ', I8, ' tests fail the threshold.', /
250+
$ 'Maximum test ratio =', D12.3, ' threshold =', D12.3 )
251+
9970 FORMAT( 'Error in DTRSYL: ', I8, ' tests fail the threshold.', /
252+
$ 'Maximum test ratio =', D12.3, ' threshold =', D12.3 )
231253
*
232254
* End of DCHKEC
233255
*

TESTING/EIG/derrec.f

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
*>
2424
*> DERREC tests the error exits for the routines for eigen- condition
2525
*> estimation for DOUBLE PRECISION matrices:
26-
*> DTRSYL, DTREXC, DTRSNA and DTRSEN.
26+
*> DTRSYL, DTRSYL3, DTREXC, DTRSNA and DTRSEN.
2727
*> \endverbatim
2828
*
2929
* Arguments:
@@ -82,7 +82,7 @@ SUBROUTINE DERREC( PATH, NUNIT )
8282
$ WI( NMAX ), WORK( NMAX ), WR( NMAX )
8383
* ..
8484
* .. External Subroutines ..
85-
EXTERNAL CHKXER, DTREXC, DTRSEN, DTRSNA, DTRSYL
85+
EXTERNAL CHKXER, DTREXC, DTRSEN, DTRSNA, DTRSYL, DTRSYL3
8686
* ..
8787
* .. Scalars in Common ..
8888
LOGICAL LERR, OK
@@ -141,6 +141,43 @@ SUBROUTINE DERREC( PATH, NUNIT )
141141
CALL CHKXER( 'DTRSYL', INFOT, NOUT, LERR, OK )
142142
NT = NT + 8
143143
*
144+
* Test DTRSYL3
145+
*
146+
SRNAMT = 'DTRSYL3'
147+
INFOT = 1
148+
CALL DTRSYL3( 'X', 'N', 1, 0, 0, A, 1, B, 1, C, 1, SCALE,
149+
$ IWORK, NMAX, WORK, NMAX, INFO )
150+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
151+
INFOT = 2
152+
CALL DTRSYL3( 'N', 'X', 1, 0, 0, A, 1, B, 1, C, 1, SCALE,
153+
$ IWORK, NMAX, WORK, NMAX, INFO )
154+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
155+
INFOT = 3
156+
CALL DTRSYL3( 'N', 'N', 0, 0, 0, A, 1, B, 1, C, 1, SCALE,
157+
$ IWORK, NMAX, WORK, NMAX, INFO )
158+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
159+
INFOT = 4
160+
CALL DTRSYL3( 'N', 'N', 1, -1, 0, A, 1, B, 1, C, 1, SCALE,
161+
$ IWORK, NMAX, WORK, NMAX, INFO )
162+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
163+
INFOT = 5
164+
CALL DTRSYL3( 'N', 'N', 1, 0, -1, A, 1, B, 1, C, 1, SCALE,
165+
$ IWORK, NMAX, WORK, NMAX, INFO )
166+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
167+
INFOT = 7
168+
CALL DTRSYL3( 'N', 'N', 1, 2, 0, A, 1, B, 1, C, 2, SCALE,
169+
$ IWORK, NMAX, WORK, NMAX, INFO )
170+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
171+
INFOT = 9
172+
CALL DTRSYL3( 'N', 'N', 1, 0, 2, A, 1, B, 1, C, 1, SCALE,
173+
$ IWORK, NMAX, WORK, NMAX, INFO )
174+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
175+
INFOT = 11
176+
CALL DTRSYL3( 'N', 'N', 1, 2, 0, A, 2, B, 1, C, 1, SCALE,
177+
$ IWORK, NMAX, WORK, NMAX, INFO )
178+
CALL CHKXER( 'DTRSYL3', INFOT, NOUT, LERR, OK )
179+
NT = NT + 8
180+
*
144181
* Test DTREXC
145182
*
146183
SRNAMT = 'DTREXC'

0 commit comments

Comments
 (0)