Conversation
Ruinique
force-pushed
the
stebr-pr
branch
2 times, most recently
from
September 20, 2026 11:48
1bd43e5 to
15d215d
Compare
DSTEBR and SSTEBR compute all eigenvalues of a real symmetric
tridiagonal matrix with a values-only divide-and-conquer method.
Only the first and last boundary rows of each local eigenvector
block are propagated across merge levels, so no *LAEDA-style
full-block store/replay is needed.
The workspace is O(N): LWORK >= 16*N and LIWORK >= 7*N for
N > SMLSIZ; blocks with N <= SMLSIZ fall back to *STERF. DSTEBR
and SSTEBR are new routines and do not change the behavior of
*STEDC or *STERF.
Private helpers: *LAED0_BR, *LAED4_BR, *LAED7_BR/*LAED8_BR and
*LAED9_BR.
DCHKST and SCHKST gain test (38):
| D1 - D5 | / ( |D1| ulp ), with D1 from *STEQR('V').
LAPACKE gains LAPACKE_dstebr, LAPACKE_sstebr and their _work
variants (workspace query, LP64 and ILP64).
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1424 +/- ##
==========================================
- Coverage 69.36% 69.20% -0.16%
==========================================
Files 6122 6136 +14
Lines 486711 487909 +1198
Branches 23268 23282 +14
==========================================
+ Hits 337584 337662 +78
- Misses 148689 149809 +1120
Partials 438 438
Continue to review full report in Codecov by Harness.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This adds two new routines,
DSTEBRandSSTEBR, that compute alleigenvalues of a real symmetric tridiagonal matrix with a values-only
divide-and-conquer method.
Only the first and last boundary rows of each local eigenvector block are
propagated across merge levels, instead of storing complete secular
eigenvector blocks for
*LAEDA-style replay. The workspace is thereforeO(N):
LWORK >= 16*N,LIWORK >= 7*NforN > SMLSIZN <= SMLSIZfall back to*STERFSTEBR= Symmetric Tridiagonal Eigenvalues, Boundary-Row DC.New files
SRC/dstebr.f,SRC/sstebr.f— public driversSRC/dlaed0_br.f/SRC/slaed0_br.fSRC/dlaed4_br.f/SRC/slaed4_br.fSRC/dlaed7_br.f/SRC/slaed7_br.f(contains*LAED8_BR)SRC/dlaed9_br.f/SRC/slaed9_br.fLAPACKE/src/lapacke_dstebr.c,lapacke_sstebr.cand their_workvariantsUpdated files
SRC/Makefile,SRC/CMakeLists.txt(SCLAUX,DZLAUX)TESTING/EIG/dchkst.f,TESTING/EIG/schkst.f: new test (38),| D1 - D5 | / ( |D1| ulp )withD1from*STEQR('V'), same style astests (12) and (26)
LAPACKE/include/lapack.h,LAPACKE/include/lapacke.h,LAPACKE/include/lapacke_64.h,LAPACKE/src/Makefile,LAPACKE/src/CMakeLists.txtDOCS/groups-usr.dox: newstebrgroupTesting
Built with
gfortranusingmake.inc.example, run with the standardTESTINGdrivers and summarized withlapack_testing.py:dsep.out/ssep.outnow report 4560 DST/SST tests per NB setting(4440 before test (38)), all passing
Test (38) only enters the new code for
N > SMLSIZ.TESTING/sep.intopsout at
N = 20, so there it exercises the*STERFfallback; with anenlarged input (
N = 64, 128) test (38) does exercise*LAED0_BR, andfails as expected when
DSTEBRis deliberately perturbed.The new sources compile clean with the CI flag sets
(
-Werror=conversion,-fimplicit-none,-fcheck=all,-pedantic), theC wrappers with
-Wall -pedantic-errors, and the routines pass-fcheck=allat run time. The only remaining warning is-Wmaybe-uninitializedonJLAM, whichSRC/dlaed8.fproduces as well.Compatibility
No existing public interface changes, and no change to
*STEDCor*STERFbehavior.
Checklist