From ede714af1eb0abbee5582521bfa4ad9fca4ee30c Mon Sep 17 00:00:00 2001 From: Weslley da Silva Pereira Date: Wed, 27 Apr 2022 11:59:37 -0600 Subject: [PATCH 1/2] Add a test related to the fix #625 --- TESTING/EIG/schkee.F | 51 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/TESTING/EIG/schkee.F b/TESTING/EIG/schkee.F index bf04b5e5b6..871d2c856a 100644 --- a/TESTING/EIG/schkee.F +++ b/TESTING/EIG/schkee.F @@ -1111,7 +1111,7 @@ PROGRAM SCHKEE $ SDRGEV, SDRGSX, SDRGVX, SDRVBD, SDRVES, SDRVEV, $ SDRVSG, SDRVST, SDRVSX, SDRVVX, SERRBD, $ SERRED, SERRGG, SERRHS, SERRST, ILAVER, XLAENV, - $ SDRGES3, SDRGEV3, + $ SDRGES3, SDRGEV3, SLARRV, SCOPY, $ SCHKST2STG, SDRVST2STG, SCHKSB2STG, SDRVSG2STG * .. * .. Intrinsic Functions .. @@ -1884,6 +1884,52 @@ PROGRAM SCHKEE CALL OMP_SET_NUM_THREADS(N_THREADS) #endif END IF +* +* Test if SLARRV returns INFO=0 and do not modify the output when +* (N.LE.0).OR.(M.LE.0) +* +* These tests are related to the fix: +* https://github.com/Reference-LAPACK/lapack/pull/625 +* +* Test M = 0 on SLARRV: +* + CALL SCOPY( 8, A, 1, WORK, 1 ) + IWORK(1) = 100 + CALL SLARRV( 1, 1.0E0, 1.0E0, A(1,1), A(2,1), + $ 1.0E0, IWORK(2), 0, + $ 1, 0, 1.0E0, 1.0E0, 1.0E0, + $ A(3,1), A(4,1), A(5,1), IWORK(2), + $ IWORK(2), A(6,1), A(8,1), 5, + $ IWORK(2), A(9,1), IWORK(2), INFO ) + IF( INFO.NE.0 ) THEN + WRITE( NOUT, FMT = 9959 )INFO, 'M' + ELSE + DO K = 1, 8 + IF( A(K,1) .NE. WORK(K) ) THEN + WRITE( NOUT, FMT = 9958 )'M' + EXIT + END IF + END DO + END IF +* +* Test N = 0 on SLARRV: +* + CALL SCOPY( 1, A, 1, WORK, 1 ) + IWORK(1) = 100 + CALL SLARRV( 0, 1.0E0, 1.0E0, A, A, + $ 1.0E0, IWORK(2), 1, + $ 1, 0, 1.0E0, 1.0E0, 1.0E0, + $ A, A, A, IWORK(2), + $ IWORK(2), A, A(1,1), 5, + $ IWORK(2), A(2,1), IWORK(2), INFO ) + IF( INFO.NE.0 ) THEN + WRITE( NOUT, FMT = 9959 )INFO, 'N' + ELSE + IF( A(1,1) .NE. WORK(1) ) THEN + WRITE( NOUT, FMT = 9958 )'N' + END IF + END IF +* DO 290 I = 1, NPARMS CALL XLAENV( 1, NBVAL( I ) ) CALL XLAENV( 2, NBMIN( I ) ) @@ -2534,6 +2580,9 @@ PROGRAM SCHKEE $ ', INWIN =', I4, ', INIBL =', I4, ', ISHFTS =', I4, $ ', IACC22 =', I4) 9960 FORMAT( / ' Tests of the CS Decomposition routines' ) + 9959 FORMAT( ' SLARRV returned INFO ', I4, ' WHEN ', A, ' = 0' ) + 9958 FORMAT( ' SLARRV returned INFO 0 but modified the input WHEN ' + $ , A, ' = 0' ) * * End of SCHKEE * From 351f5ac823213d4de927f02df21c65b2207826cd Mon Sep 17 00:00:00 2001 From: Weslley da Silva Pereira Date: Mon, 7 Nov 2022 15:42:10 -0700 Subject: [PATCH 2/2] Testing old behavior --- SRC/slarrv.f | 2 +- TESTING/EIG/schkee.F | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/SRC/slarrv.f b/SRC/slarrv.f index 95f94fd1bd..9d72b339a9 100644 --- a/SRC/slarrv.f +++ b/SRC/slarrv.f @@ -350,7 +350,7 @@ SUBROUTINE SLARRV( N, VL, VU, D, L, PIVMIN, * * Quick return if possible * - IF( (N.LE.0).OR.(M.LE.0) ) THEN + IF( N.LE.0 ) THEN RETURN END IF * diff --git a/TESTING/EIG/schkee.F b/TESTING/EIG/schkee.F index 871d2c856a..7b208eb37d 100644 --- a/TESTING/EIG/schkee.F +++ b/TESTING/EIG/schkee.F @@ -1893,6 +1893,7 @@ PROGRAM SCHKEE * * Test M = 0 on SLARRV: * + WRITE( NOUT, FMT = 9958 )'M' CALL SCOPY( 8, A, 1, WORK, 1 ) IWORK(1) = 100 CALL SLARRV( 1, 1.0E0, 1.0E0, A(1,1), A(2,1), @@ -1907,7 +1908,6 @@ PROGRAM SCHKEE DO K = 1, 8 IF( A(K,1) .NE. WORK(K) ) THEN WRITE( NOUT, FMT = 9958 )'M' - EXIT END IF END DO END IF