Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
f46d51b
Add algorithms of skew-symmetric matrix
sh-zheng Aug 20, 2024
39d70a4
Add testcases for skew-symmetric algorithm
sh-zheng Aug 20, 2024
c17ac0a
Add cblas and lapacke interfaces for skew-symmetric subroutines
sh-zheng Aug 21, 2024
f9096df
Add cblas testcases for skew-symmetric subroutines
sh-zheng Aug 22, 2024
08a4705
Use blas subroutines to perform transformation in *kyeqr
sh-zheng Sep 3, 2024
63b8293
Update CMakelists
sh-zheng Sep 3, 2024
3275c32
Fix fortran text overflow in *kteqr
sh-zheng Sep 4, 2024
ace1953
Add missing subroutine parameter checks for linear solver
sh-zheng Sep 5, 2024
58ce56e
Fix a typo and resolve a conflict in BLAS/TESTING
sh-zheng Feb 8, 2025
ae2ea5d
Merge branch 'master' into skew-symmetric-new
sh-zheng Feb 9, 2025
b9b2875
Keep consistency with pr 1101
sh-zheng Feb 10, 2025
6731c0f
Delete unnecessary work buffer usage of *ktev and *kteqr in lapacke
sh-zheng Apr 10, 2025
b15a164
Remove redundant *lagky in TESTING/
sh-zheng May 7, 2025
2bb3d99
Merge branch 'master' into skew-symmetric-new
sh-zheng Jun 15, 2025
020cd26
Call *lasr to update eigenvector instead of *rot
sh-zheng Jul 3, 2025
fcbee19
Fix compiler error of column limit
sh-zheng Jul 4, 2025
eb160c9
Fix compiler error of column limit, supplementary submission
sh-zheng Jul 6, 2025
38f90b3
Update contributors information, and doxygen doc
sh-zheng Jul 6, 2025
30042e4
Merge branch 'Reference-LAPACK:master' into skew-symmetric-new
sh-zheng Aug 1, 2025
98d9c6a
implicit none of skew-symmetric subroutines, keep consistency with pr…
sh-zheng Sep 1, 2025
eec055e
Merge branch 'Reference-LAPACK:master' into skew-symmetric-new
sh-zheng Sep 1, 2025
ec0c276
End with newline in BLAS/TESTING
sh-zheng Sep 4, 2025
c9a448b
Add expert driver subroutines *kysvx, *kycon and *kyrfs
sh-zheng Oct 11, 2025
ff8bcde
Update doc and comment
sh-zheng Oct 12, 2025
9261f0f
Fix potential distrub of diagonal elements
sh-zheng Oct 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add testcases for skew-symmetric algorithm
  • Loading branch information
sh-zheng committed Aug 20, 2024
commit 39d70a4a25c2b124b76f150616a673295622bc09
176 changes: 127 additions & 49 deletions BLAS/TESTING/dblat2.f

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions BLAS/TESTING/dblat2.in
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ DSYR T PUT F FOR NO TEST. SAME COLUMNS.
DSPR T PUT F FOR NO TEST. SAME COLUMNS.
DSYR2 T PUT F FOR NO TEST. SAME COLUMNS.
DSPR2 T PUT F FOR NO TEST. SAME COLUMNS.
DKYMV T PUT F FOR NO TEST. SAME COLUMNS.
DKYR2 T PUT F FOR NO TEST. SAME COLUMNS.
287 changes: 242 additions & 45 deletions BLAS/TESTING/dblat3.f

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions BLAS/TESTING/dblat3.in
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ DTRSM T PUT F FOR NO TEST. SAME COLUMNS.
DSYRK T PUT F FOR NO TEST. SAME COLUMNS.
DSYR2K T PUT F FOR NO TEST. SAME COLUMNS.
DGEMMTR T PUT F FOR NO TEST. SAME COLUMNS.
DKYMM T PUT F FOR NO TEST. SAME COLUMNS.
DKYR2K T PUT F FOR NO TEST. SAME COLUMNS.
176 changes: 127 additions & 49 deletions BLAS/TESTING/sblat2.f

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions BLAS/TESTING/sblat2.in
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ SSYR T PUT F FOR NO TEST. SAME COLUMNS.
SSPR T PUT F FOR NO TEST. SAME COLUMNS.
SSYR2 T PUT F FOR NO TEST. SAME COLUMNS.
SSPR2 T PUT F FOR NO TEST. SAME COLUMNS.
SKYMV T PUT F FOR NO TEST. SAME COLUMNS.
SKYR2 T PUT F FOR NO TEST. SAME COLUMNS.
287 changes: 242 additions & 45 deletions BLAS/TESTING/sblat3.f

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions BLAS/TESTING/sblat3.in
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ STRSM T PUT F FOR NO TEST. SAME COLUMNS.
SSYRK T PUT F FOR NO TEST. SAME COLUMNS.
SSYR2K T PUT F FOR NO TEST. SAME COLUMNS.
SGEMMTR T PUT F FOR NO TEST. SAME COLUMNS.
SKYMM T PUT F FOR NO TEST. SAME COLUMNS.
SKYR2K T PUT F FOR NO TEST. SAME COLUMNS.
28 changes: 14 additions & 14 deletions TESTING/EIG/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,19 @@ SCIGTST = slafts.o slahd2.o slasum.o slatb9.o sstech.o sstect.o \
SEIGTST = schkee.o \
sbdt01.o sbdt02.o sbdt03.o sbdt04.o sbdt05.o \
schkbb.o schkbd.o schkbk.o schkbl.o schkec.o \
schkgg.o schkgk.o schkgl.o schkhs.o schksb.o schkst.o schkst2stg.o schksb2stg.o \
schkgg.o schkgk.o schkgl.o schkhs.o schksb.o schkst.o schkkt.o schkst2stg.o schksb2stg.o \
sckcsd.o sckglm.o sckgqr.o sckgsv.o scklse.o scsdts.o \
sdrges.o sdrgev.o sdrges3.o sdrgev3.o sdrgsx.o sdrgvx.o \
sdrvbd.o sdrves.o sdrvev.o sdrvsg.o sdrvsg2stg.o \
sdrvst.o sdrvst2stg.o sdrvsx.o sdrvvx.o \
serrbd.o serrec.o serred.o serrgg.o serrhs.o serrst.o \
sdrvbd.o sdrves.o sdrvev.o sdrvsg.o sdrvsg2stg.o sdrvkg2stg.o \
sdrvst.o sdrvkt.o sdrvst2stg.o sdrvsx.o sdrvvx.o \
serrbd.o serrec.o serred.o serrgg.o serrhs.o serrst.o serrkt.o \
sget02.o sget10.o sget22.o sget23.o sget24.o sget31.o \
sget32.o sget33.o sget34.o sget35.o sget36.o \
sget37.o sget38.o sget39.o sget40.o sget51.o sget52.o sget53.o \
sget54.o sglmts.o sgqrts.o sgrqts.o sgsvts3.o \
shst01.o slarfy.o slarhs.o slatm4.o slctes.o slctsx.o slsets.o sort01.o \
sort03.o ssbt21.o ssgt01.o sslect.o sspt21.o sstt21.o \
sstt22.o ssyl01.o ssyt21.o ssyt22.o
shst01.o slarfy.o slarfyk.o slarhs.o slatm4.o slctes.o slctsx.o slsets.o sort01.o \
sort03.o ssbt21.o ssgt01.o skgt01.o sslect.o sspt21.o sstt21.o sktt21.o \
sstt22.o ssyl01.o ssyt21.o skyt21.o ssyt22.o

SDMDEIGTST = schkdmd.o

Expand Down Expand Up @@ -91,19 +91,19 @@ DZIGTST = dlafts.o dlahd2.o dlasum.o dlatb9.o dstech.o dstect.o \
DEIGTST = dchkee.o \
dbdt01.o dbdt02.o dbdt03.o dbdt04.o dbdt05.o \
dchkbb.o dchkbd.o dchkbk.o dchkbl.o dchkec.o \
dchkgg.o dchkgk.o dchkgl.o dchkhs.o dchksb.o dchkst.o dchkst2stg.o dchksb2stg.o \
dchkgg.o dchkgk.o dchkgl.o dchkhs.o dchksb.o dchkst.o dchkkt.o dchkst2stg.o dchksb2stg.o \
dckcsd.o dckglm.o dckgqr.o dckgsv.o dcklse.o dcsdts.o \
ddrges.o ddrgev.o ddrges3.o ddrgev3.o ddrgsx.o ddrgvx.o \
ddrvbd.o ddrves.o ddrvev.o ddrvsg.o ddrvsg2stg.o \
ddrvst.o ddrvst2stg.o ddrvsx.o ddrvvx.o \
derrbd.o derrec.o derred.o derrgg.o derrhs.o derrst.o \
ddrvbd.o ddrves.o ddrvev.o ddrvsg.o ddrvsg2stg.o ddrvkg2stg.o \
ddrvst.o ddrvkt.o ddrvst2stg.o ddrvsx.o ddrvvx.o \
derrbd.o derrec.o derred.o derrgg.o derrhs.o derrst.o derrkt.o \
dget02.o dget10.o dget22.o dget23.o dget24.o dget31.o \
dget32.o dget33.o dget34.o dget35.o dget36.o \
dget37.o dget38.o dget39.o dget40.o dget51.o dget52.o dget53.o \
dget54.o dglmts.o dgqrts.o dgrqts.o dgsvts3.o \
dhst01.o dlarfy.o dlarhs.o dlatm4.o dlctes.o dlctsx.o dlsets.o dort01.o \
dort03.o dsbt21.o dsgt01.o dslect.o dspt21.o dstt21.o \
dstt22.o dsyl01.o dsyt21.o dsyt22.o
dhst01.o dlarfy.o dlarfyk.o dlarhs.o dlatm4.o dlctes.o dlctsx.o dlsets.o dort01.o \
dort03.o dsbt21.o dsgt01.o dkgt01.o dslect.o dspt21.o dstt21.o dktt21.o \
dstt22.o dsyl01.o dsyt21.o dkyt21.o dsyt22.o

DDMDEIGTST = dchkdmd.o

Expand Down
141 changes: 130 additions & 11 deletions TESTING/EIG/dchkee.F
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@
*> and drivers DSYEV(X), DSBEV(X), DSPEV(X), DSTEV(X),
*> DSYEVD, DSBEVD, DSPEVD, DSTEVD
*>
*> KEP (Skew-symmetric Eigenvalue Problem):
*> Test DKYTRD, DSTEQR, and driver DSYEV, DSTEV
*>
*> SVD (Singular Value Decomposition):
*> Test DGEBRD, DORGBR, DBDSQR, DBDSDC
*> and the drivers DGESVD, DGESDD
Expand Down Expand Up @@ -62,6 +65,9 @@
*> Test DSYGST, DSYGV, DSYGVD, DSYGVX, DSPGST, DSPGV, DSPGVD,
*> DSPGVX, DSBGST, DSBGV, DSBGVD, and DSBGVX
*>
*> DKG (Skew-symmetric Generalized Eigenvalue Problem):
*> Test DKYGST, DKYGV
*>
*> DSB (Symmetric Band Eigenvalue Problem):
*> Test DSBTRD
*>
Expand Down Expand Up @@ -114,6 +120,8 @@
*> DHS or NEP 21 DCHKHS
*> DST or SEP 21 DCHKST (routines)
*> 18 DDRVST (drivers)
*> DKT or KEP 21 DCHKKT (routines)
*> 18 DDRVKT (drivers)
*> DBD or SVD 16 DCHKBD (routines)
*> 5 DDRVBD (drivers)
*> DEV 21 DDRVEV
Expand All @@ -126,6 +134,7 @@
*> DGV 26 DDRGEV
*> DXV 2 DDRGVX
*> DSG 21 DDRVSG
*> DKG 21 DDRVKG
*> DSB 15 DCHKSB
*> DBB 15 DCHKBB
*> DEC - DCHKEC
Expand Down Expand Up @@ -215,7 +224,7 @@
*>
*>-----------------------------------------------------------------------
*>
*> SEP or DSG input file:
*> SEP, KEP, DSG or DKG input file:
*>
*> line 2: NN, INTEGER
*> Number of values of N.
Expand Down Expand Up @@ -263,9 +272,9 @@
*> Four integer values for the random number seed.
*>
*> lines 13-EOF: Lines specifying matrix types, as for NEP.
*> The 3-character path names are 'SEP' or 'SST' for the
*> symmetric eigenvalue routines and driver routines, and
*> 'DSG' for the routines for the symmetric generalized
*> The 3-character path names are 'SEP', 'KEP', 'DST' or 'DKT' for
*> the (skew-)symmetric eigenvalue routines and driver routines, and
*> 'DSG', 'DKG' for the routines for the (skew-)symmetric generalized
*> eigenvalue problem.
*>
*>-----------------------------------------------------------------------
Expand Down Expand Up @@ -1068,9 +1077,9 @@ PROGRAM DCHKEE
* ..
* .. Local Scalars ..
LOGICAL CSD, DBB, DGG, DSB, FATAL, GLM, GQR, GSV, LSE,
$ NEP, DBK, DBL, SEP, DES, DEV, DGK, DGL, DGS,
$ DGV, DGX, DSX, SVD, DVX, DXV, TSTCHK, TSTDIF,
$ TSTDRV, TSTERR
$ NEP, DBK, DBL, SEP, KEP, DES, DEV, DGK, DGL,
$ DGS, DGV, DGX, DSX, SVD, DVX, DXV, TSTCHK,
$ TSTDIF, TSTDRV, TSTERR
CHARACTER C1
CHARACTER*3 C3, PATH
CHARACTER*32 VNAME
Expand Down Expand Up @@ -1111,7 +1120,7 @@ PROGRAM DCHKEE
$ DDRGEV, DDRGSX, DDRGVX, DDRVBD, DDRVES, DDRVEV,
$ DDRVSG, DDRVST, DDRVSX, DDRVVX, DERRBD,
$ DERRED, DERRGG, DERRHS, DERRST, ILAVER, XLAENV,
$ DDRGES3, DDRGEV3,
$ DDRGES3, DDRGEV3, DERRKT, DCHKKT, DDRVKT,
$ DCHKST2STG, DDRVST2STG, DCHKSB2STG, DDRVSG2STG
* ..
* .. Intrinsic Functions ..
Expand Down Expand Up @@ -1171,6 +1180,8 @@ PROGRAM DCHKEE
NEP = LSAMEN( 3, PATH, 'NEP' ) .OR. LSAMEN( 3, PATH, 'DHS' )
SEP = LSAMEN( 3, PATH, 'SEP' ) .OR. LSAMEN( 3, PATH, 'DST' ) .OR.
$ LSAMEN( 3, PATH, 'DSG' ) .OR. LSAMEN( 3, PATH, 'SE2' )
KEP = LSAMEN( 3, PATH, 'KEP' ) .OR. LSAMEN( 3, PATH, 'DKT' ) .OR.
$ LSAMEN( 3, PATH, 'DKG' )
SVD = LSAMEN( 3, PATH, 'SVD' ) .OR. LSAMEN( 3, PATH, 'DBD' )
DEV = LSAMEN( 3, PATH, 'DEV' )
DES = LSAMEN( 3, PATH, 'DES' )
Expand Down Expand Up @@ -1201,6 +1212,8 @@ PROGRAM DCHKEE
WRITE( NOUT, FMT = 9987 )
ELSE IF( SEP ) THEN
WRITE( NOUT, FMT = 9986 )
ELSE IF( KEP ) THEN
WRITE( NOUT, FMT = 9959 )
ELSE IF( SVD ) THEN
WRITE( NOUT, FMT = 9985 )
ELSE IF( DEV ) THEN
Expand Down Expand Up @@ -1492,7 +1505,7 @@ PROGRAM DCHKEE
*
* Read the values of NBMIN
*
IF( NEP .OR. SEP .OR. SVD .OR. DGG ) THEN
IF( NEP .OR. SEP .OR. KEP .OR. SVD .OR. DGG ) THEN
READ( NIN, FMT = * )( NBMIN( I ), I = 1, NPARMS )
DO 80 I = 1, NPARMS
IF( NBMIN( I ).LT.0 ) THEN
Expand All @@ -1513,7 +1526,7 @@ PROGRAM DCHKEE
*
* Read the values of NX
*
IF( NEP .OR. SEP .OR. SVD ) THEN
IF( NEP .OR. SEP .OR. KEP .OR. SVD ) THEN
READ( NIN, FMT = * )( NXVAL( I ), I = 1, NPARMS )
DO 100 I = 1, NPARMS
IF( NXVAL( I ).LT.0 ) THEN
Expand Down Expand Up @@ -1701,7 +1714,7 @@ PROGRAM DCHKEE
*
READ( NIN, FMT = * )THRESH
WRITE( NOUT, FMT = 9982 )THRESH
IF( SEP .OR. SVD .OR. DGG ) THEN
IF( SEP .OR. KEP .OR. SVD .OR. DGG ) THEN
*
* Read the flag that indicates whether to test LAPACK routines.
*
Expand Down Expand Up @@ -1936,6 +1949,67 @@ PROGRAM DCHKEE
$ WRITE( NOUT, FMT = 9980 )'DDRVST', INFO
END IF
290 CONTINUE
*
ELSE IF( LSAMEN( 3, C3, 'DKT' ) .OR. LSAMEN( 3, C3, 'KEP' ) ) THEN
*
* ----------------------------------
* KEP: Skew-symmetric Eigenvalue Problem
* ----------------------------------
* Vary the parameters
* NB = block size
* NBMIN = minimum block size
* NX = crossover point
*
MAXTYP = 21
NTYPES = MIN( MAXTYP, NTYPES )
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
CALL XLAENV( 1, 1 )
CALL XLAENV( 9, 25 )
IF( TSTERR ) THEN
#if defined(_OPENMP)
N_THREADS = OMP_GET_MAX_THREADS()
ONE_THREAD = 1
CALL OMP_SET_NUM_THREADS(ONE_THREAD)
#endif
CALL DERRKT( 'DKT', NOUT )
#if defined(_OPENMP)
CALL OMP_SET_NUM_THREADS(N_THREADS)
#endif
END IF
DO 400 I = 1, NPARMS
CALL XLAENV( 1, NBVAL( I ) )
CALL XLAENV( 2, NBMIN( I ) )
CALL XLAENV( 3, NXVAL( I ) )
*
IF( NEWSD.EQ.0 ) THEN
DO 390 K = 1, 4
ISEED( K ) = IOLDSD( K )
390 CONTINUE
END IF
WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ),
$ NXVAL( I )
IF( TSTCHK ) THEN
CALL DCHKKT( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
$ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), D( 1, 1 ),
$ D( 1, 2 ), D( 1, 3 ), D( 1, 4 ), D( 1, 5 ),
$ D( 1, 6 ), D( 1, 7 ), D( 1, 8 ), D( 1, 9 ),
$ D( 1, 10 ), D( 1, 11 ), A( 1, 3 ), NMAX,
$ A( 1, 4 ), A( 1, 5 ), D( 1, 12 ), A( 1, 6 ),
$ WORK, LWORK, IWORK, LIWORK, RESULT, INFO )
IF( INFO.NE.0 )
$ WRITE( NOUT, FMT = 9980 )'DCHKKT', INFO
END IF
IF( TSTDRV ) THEN
CALL DDRVKT( NN, NVAL, 18, DOTYPE, ISEED, THRESH,
$ NOUT, A( 1, 1 ), NMAX, D( 1, 3 ), D( 1, 4 ),
$ D( 1, 5 ), D( 1, 6 ), D( 1, 8 ), D( 1, 9 ),
$ D( 1, 10 ), D( 1, 11), A( 1, 2 ), NMAX,
$ A( 1, 3 ), D( 1, 12 ), A( 1, 4 ), WORK,
$ LWORK, IWORK, LIWORK, RESULT, INFO )
IF( INFO.NE.0 )
$ WRITE( NOUT, FMT = 9980 )'DDRVKT', INFO
END IF
400 CONTINUE
*
ELSE IF( LSAMEN( 3, C3, 'DSG' ) ) THEN
*
Expand Down Expand Up @@ -1979,6 +2053,49 @@ PROGRAM DCHKEE
$ WRITE( NOUT, FMT = 9980 )'DDRVSG', INFO
END IF
310 CONTINUE
*
ELSE IF( LSAMEN( 3, C3, 'DKG' ) ) THEN
*
* ----------------------------------------------
* DKG: Skew-symmetric Generalized Eigenvalue Problem
* ----------------------------------------------
* Vary the parameters
* NB = block size
* NBMIN = minimum block size
* NX = crossover point
*
MAXTYP = 21
NTYPES = MIN( MAXTYP, NTYPES )
CALL ALAREQ( C3, NTYPES, DOTYPE, MAXTYP, NIN, NOUT )
CALL XLAENV( 9, 25 )
DO 420 I = 1, NPARMS
CALL XLAENV( 1, NBVAL( I ) )
CALL XLAENV( 2, NBMIN( I ) )
CALL XLAENV( 3, NXVAL( I ) )
*
IF( NEWSD.EQ.0 ) THEN
DO 410 K = 1, 4
ISEED( K ) = IOLDSD( K )
410 CONTINUE
END IF
WRITE( NOUT, FMT = 9997 )C3, NBVAL( I ), NBMIN( I ),
$ NXVAL( I )
IF( TSTCHK ) THEN
* CALL DDRVSG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
* $ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), NMAX,
* $ D( 1, 3 ), A( 1, 3 ), NMAX, A( 1, 4 ),
* $ A( 1, 5 ), A( 1, 6 ), A( 1, 7 ), WORK,
* $ LWORK, IWORK, LIWORK, RESULT, INFO )
CALL DDRVKG2STG( NN, NVAL, MAXTYP, DOTYPE, ISEED, THRESH,
$ NOUT, A( 1, 1 ), NMAX, A( 1, 2 ), NMAX,
$ D( 1, 3 ), D( 1, 3 ), A( 1, 3 ), NMAX,
$ A( 1, 4 ), A( 1, 5 ), A( 1, 6 ),
$ A( 1, 7 ), WORK, LWORK, IWORK, LIWORK,
$ RESULT, INFO )
IF( INFO.NE.0 )
$ WRITE( NOUT, FMT = 9980 )'DDRVSG', INFO
END IF
420 CONTINUE
*
ELSE IF( LSAMEN( 3, C3, 'DBD' ) .OR. LSAMEN( 3, C3, 'SVD' ) ) THEN
*
Expand Down Expand Up @@ -2531,6 +2648,8 @@ PROGRAM DCHKEE
$ ', INWIN =', I4, ', INIBL =', I4, ', ISHFTS =', I4,
$ ', IACC22 =', I4)
9960 FORMAT( / ' Tests of the CS Decomposition routines' )
9959 FORMAT( ' Tests of the Skew-symmetric Eigenvalue Problem ',
$ 'routines' )
*
* End of DCHKEE
*
Expand Down
Loading