Skip to content

*evr, *stevr: use fast CSTEMR path for partial eigenvalue ranges on I…#1295

Open
jschueller wants to merge 1 commit into
Reference-LAPACK:masterfrom
jschueller:issue1277
Open

*evr, *stevr: use fast CSTEMR path for partial eigenvalue ranges on I…#1295
jschueller wants to merge 1 commit into
Reference-LAPACK:masterfrom
jschueller:issue1277

Conversation

@jschueller

Copy link
Copy Markdown
Contributor

…EEE machines

The *evr and *stevr routines now call CSTEMR/DSTEMR/SSTEMR with the user-specified RANGE argument on IEEE-754 compliant machines, instead of only using the fast path when the full spectrum is requested (ALLEIG or IL=1, IU=N). Partial eigenvalue ranges with eigenvectors now also benefit from the faster algorithm.

Fix a bug where WANTZ=.FALSE. with a partial range on IEEE machines would incorrectly set M=N and skip the DSTEBZ fallback, because INFO remained 0 from initialization when SSTERF was skipped (it can only compute all eigenvalues). The IF(INFO.EQ.0) success check is now moved inside each computational branch so it only triggers when SSTERF or CSTEMR was actually called and succeeded.

Closes #1277

@jschueller jschueller force-pushed the issue1277 branch 2 times, most recently from c1d527c to cb488f6 Compare June 13, 2026 10:27
…EEE machines

The *evr and *stevr routines now call CSTEMR/DSTEMR/SSTEMR with the
user-specified RANGE argument on IEEE-754 compliant machines, instead of
only using the fast path when the full spectrum is requested
(ALLEIG or IL=1, IU=N). Partial eigenvalue ranges with eigenvectors
now also benefit from the faster algorithm.

Fix a bug where WANTZ=.FALSE. with a partial range on IEEE machines
would incorrectly set M=N and skip the DSTEBZ fallback, because INFO
remained 0 from initialization when SSTERF was skipped (it can only
compute all eigenvalues). The IF(INFO.EQ.0) success check is now
moved inside each computational branch so it only triggers when
SSTERF or CSTEMR was actually called and succeeded.

Closes Reference-LAPACK#1277
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DSYEVR should call DSTEMR for RANGE="V" or "I"

1 participant