From 4e013d710c496ff3ea2a6c81b209d2e026cfc1de Mon Sep 17 00:00:00 2001 From: NAKATA Maho Date: Tue, 24 Mar 2026 18:21:30 +0900 Subject: [PATCH] fix(eig): pass IINFO instead of INFO to xSPGVX/xHPGVX in *drvsg2stg In cdrvsg2stg.f, ddrvsg2stg.f, sdrvsg2stg.f, and zdrvsg2stg.f, the three RANGE='A'/'V'/'I' calls to CHPGVX, DSPGVX, SSPGVX, and ZHPGVX were passing INFO as the output error argument instead of IINFO. The error-check block immediately following each call tests IINFO.NE.0, but IINFO was never updated by the routine, so errors were silently ignored. Additionally, the block sets INFO = ABS(IINFO), which would overwrite the value ZHPGVX/xSPGVX had written into INFO with the stale value of IINFO. All other driver calls in these files (ZHEGV, ZHEGVD, ZHEGVX, ZHPGV, ZHPGVD, ZHBGV, ZHBGVD, ZHBGVX and their s/d/c equivalents) correctly use IINFO. This commit brings the xSPGVX/xHPGVX calls into line with the established pattern. Affected routines (3 call sites each): CHPGVX in cdrvsg2stg.f DSPGVX in ddrvsg2stg.f SSPGVX in sdrvsg2stg.f ZHPGVX in zdrvsg2stg.f --- TESTING/EIG/cdrvsg2stg.f | 6 +++--- TESTING/EIG/ddrvsg2stg.f | 6 +++--- TESTING/EIG/sdrvsg2stg.f | 6 +++--- TESTING/EIG/zdrvsg2stg.f | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/TESTING/EIG/cdrvsg2stg.f b/TESTING/EIG/cdrvsg2stg.f index f7d323247..77f3865e0 100644 --- a/TESTING/EIG/cdrvsg2stg.f +++ b/TESTING/EIG/cdrvsg2stg.f @@ -1009,7 +1009,7 @@ C $ LDZ, D, WORK, RWORK, RESULT( NTEST ) ) * CALL CHPGVX( IBTYPE, 'V', 'A', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ RWORK, IWORK( N+1 ), IWORK, INFO ) + $ RWORK, IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'CHPGVX(V,A' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1055,7 +1055,7 @@ C $ LDZ, D, WORK, RWORK, RESULT( NTEST ) ) VU = ANORM CALL CHPGVX( IBTYPE, 'V', 'V', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ RWORK, IWORK( N+1 ), IWORK, INFO ) + $ RWORK, IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'CHPGVX(V,V' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1099,7 +1099,7 @@ C $ LDZ, D, WORK, RWORK, RESULT( NTEST ) ) * CALL CHPGVX( IBTYPE, 'V', 'I', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ RWORK, IWORK( N+1 ), IWORK, INFO ) + $ RWORK, IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'CHPGVX(V,I' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD diff --git a/TESTING/EIG/ddrvsg2stg.f b/TESTING/EIG/ddrvsg2stg.f index 0fe31cab1..68ca74270 100644 --- a/TESTING/EIG/ddrvsg2stg.f +++ b/TESTING/EIG/ddrvsg2stg.f @@ -989,7 +989,7 @@ C $ LDZ, D, WORK, RESULT( NTEST ) ) * CALL DSPGVX( IBTYPE, 'V', 'A', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ IWORK( N+1 ), IWORK, INFO ) + $ IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'DSPGVX(V,A' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1035,7 +1035,7 @@ C $ LDZ, D, WORK, RESULT( NTEST ) ) VU = ANORM CALL DSPGVX( IBTYPE, 'V', 'V', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ IWORK( N+1 ), IWORK, INFO ) + $ IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'DSPGVX(V,V' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1079,7 +1079,7 @@ C $ LDZ, D, WORK, RESULT( NTEST ) ) * CALL DSPGVX( IBTYPE, 'V', 'I', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ IWORK( N+1 ), IWORK, INFO ) + $ IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'DSPGVX(V,I' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD diff --git a/TESTING/EIG/sdrvsg2stg.f b/TESTING/EIG/sdrvsg2stg.f index 38ed61628..5a5e9d8da 100644 --- a/TESTING/EIG/sdrvsg2stg.f +++ b/TESTING/EIG/sdrvsg2stg.f @@ -990,7 +990,7 @@ C $ LDZ, D, WORK, RESULT( NTEST ) ) * CALL SSPGVX( IBTYPE, 'V', 'A', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ IWORK( N+1 ), IWORK, INFO ) + $ IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'SSPGVX(V,A' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1036,7 +1036,7 @@ C $ LDZ, D, WORK, RESULT( NTEST ) ) VU = ANORM CALL SSPGVX( IBTYPE, 'V', 'V', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ IWORK( N+1 ), IWORK, INFO ) + $ IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'SSPGVX(V,V' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1080,7 +1080,7 @@ C $ LDZ, D, WORK, RESULT( NTEST ) ) * CALL SSPGVX( IBTYPE, 'V', 'I', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ IWORK( N+1 ), IWORK, INFO ) + $ IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'SSPGVX(V,I' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD diff --git a/TESTING/EIG/zdrvsg2stg.f b/TESTING/EIG/zdrvsg2stg.f index c5ef4ce70..19419409b 100644 --- a/TESTING/EIG/zdrvsg2stg.f +++ b/TESTING/EIG/zdrvsg2stg.f @@ -1009,7 +1009,7 @@ C $ LDZ, D, WORK, RWORK, RESULT( NTEST ) ) * CALL ZHPGVX( IBTYPE, 'V', 'A', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ RWORK, IWORK( N+1 ), IWORK, INFO ) + $ RWORK, IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'ZHPGVX(V,A' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1055,7 +1055,7 @@ C $ LDZ, D, WORK, RWORK, RESULT( NTEST ) ) VU = ANORM CALL ZHPGVX( IBTYPE, 'V', 'V', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ RWORK, IWORK( N+1 ), IWORK, INFO ) + $ RWORK, IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'ZHPGVX(V,V' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD @@ -1099,7 +1099,7 @@ C $ LDZ, D, WORK, RWORK, RESULT( NTEST ) ) * CALL ZHPGVX( IBTYPE, 'V', 'I', UPLO, N, AP, BP, VL, $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK, - $ RWORK, IWORK( N+1 ), IWORK, INFO ) + $ RWORK, IWORK( N+1 ), IWORK, IINFO ) IF( IINFO.NE.0 ) THEN WRITE( NOUNIT, FMT = 9999 )'ZHPGVX(V,I' // UPLO // $ ')', IINFO, N, JTYPE, IOLDSD