From 269c3f19461296381c84012bb5f901bd7869fd24 Mon Sep 17 00:00:00 2001 From: scr2016 Date: Mon, 18 Nov 2019 15:09:12 -0800 Subject: [PATCH] renamed SLAORHR_GETRFNP into SLAORHR_COL_GETRFNP, and SLAORHR_GETRFNP2 into SLAORHR_COL_GETRFNP2 --- SRC/CMakeLists.txt | 2 +- SRC/Makefile | 2 +- ...laorhr_getrfnp.f => slaorhr_col_getrfnp.f} | 66 +++++++++---------- ...orhr_getrfnp2.f => slaorhr_col_getrfnp2.f} | 64 +++++++++--------- SRC/sorhr_col.f | 4 +- TESTING/LIN/schkaa.f | 18 +++-- TESTING/LIN/serrorhr_col.f | 10 ++- TESTING/LIN/sorhr_col01.f | 2 +- 8 files changed, 82 insertions(+), 86 deletions(-) rename SRC/{slaorhr_getrfnp.f => slaorhr_col_getrfnp.f} (75%) rename SRC/{slaorhr_getrfnp2.f => slaorhr_col_getrfnp2.f} (79%) diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt index 61fac1f439..f19bdd3027 100644 --- a/SRC/CMakeLists.txt +++ b/SRC/CMakeLists.txt @@ -148,7 +148,7 @@ set(SLASRC sgetsls.f sgeqr.f slatsqr.f slamtsqr.f sgemqr.f sgelq.f slaswlq.f slamswlq.f sgemlq.f stplqt.f stplqt2.f stpmlqt.f - sorhr_col.f slaorhr_getrfnp.f slaorhr_getrfnp2.f + sorhr_col.f slaorhr_col_getrfnp.f slaorhr_col_getrfnp2.f ssytrd_2stage.f ssytrd_sy2sb.f ssytrd_sb2st.F ssb2st_kernels.f ssyevd_2stage.f ssyev_2stage.f ssyevx_2stage.f ssyevr_2stage.f ssbev_2stage.f ssbevx_2stage.f ssbevd_2stage.f ssygv_2stage.f diff --git a/SRC/Makefile b/SRC/Makefile index ec60cb2619..250d7f60f4 100644 --- a/SRC/Makefile +++ b/SRC/Makefile @@ -176,7 +176,7 @@ SLASRC = \ sgetsls.o sgeqr.o slatsqr.o slamtsqr.o sgemqr.o \ sgelq.o slaswlq.o slamswlq.o sgemlq.o \ stplqt.o stplqt2.o stpmlqt.o \ - sorhr_col.o slaorhr_getrfnp.o slaorhr_getrfnp2.o \ + sorhr_col.o slaorhr_col_getrfnp.o slaorhr_col_getrfnp2.o \ ssytrd_2stage.o ssytrd_sy2sb.o ssytrd_sb2st.o ssb2st_kernels.o \ ssyevd_2stage.o ssyev_2stage.o ssyevx_2stage.o ssyevr_2stage.o \ ssbev_2stage.o ssbevx_2stage.o ssbevd_2stage.o ssygv_2stage.o \ diff --git a/SRC/slaorhr_getrfnp.f b/SRC/slaorhr_col_getrfnp.f similarity index 75% rename from SRC/slaorhr_getrfnp.f rename to SRC/slaorhr_col_getrfnp.f index 07de45ae43..6cc59e5381 100644 --- a/SRC/slaorhr_getrfnp.f +++ b/SRC/slaorhr_col_getrfnp.f @@ -1,4 +1,4 @@ -*> \brief \b SLAORHR_GETRFNP +*> \brief \b SLAORHR_COL_GETRFNP * * =========== DOCUMENTATION =========== * @@ -6,19 +6,19 @@ * http://www.netlib.org/lapack/explore-html/ * *> \htmlonly -*> Download SLAORHR_GETRFNP + dependencies -*> +*> Download SLAORHR_COL_GETRFNP + dependencies +*> *> [TGZ] -*> +*> *> [ZIP] -*> +*> *> [TXT] *> \endhtmlonly * * Definition: * =========== * -* SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) +* SUBROUTINE SLAORHR_COL_GETRFNP( M, N, A, LDA, D, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, M, N @@ -33,8 +33,8 @@ *> *> \verbatim *> -*> SLAORHR_GETRFNP computes the modified LU factorization without -*> pivoting of a general M-by-N matrix A. The factorization has +*> SLAORHR_COL_GETRFNP computes the modified LU factorization without +*> pivoting of a real general M-by-N matrix A. The factorization has *> the form: *> *> A - S = L * U, @@ -48,27 +48,27 @@ *> at least one in absolute value (so that division-by-zero not *> not possible during the division by the diagonal element); *> -*> L is a m-by-n lower triangular matrix with unit diagonal elements -*> (lower trapezoidal if m > n); +*> L is a M-by-N lower triangular matrix with unit diagonal elements +*> (lower trapezoidal if M > N); *> -*> and U is a m-by-n upper triangular matrix -*> (upper trapezoidal if m < n). +*> and U is a M-by-N upper triangular matrix +*> (upper trapezoidal if M < N). *> *> This routine is an auxiliary routine used in the Householder -*> reconstruction routine SORHR. In SORHR, this routine is applied -*> to an orthonormal M-by-N matrix A, where each element is bounded -*> by one in absolute value. With the choice of the matrix S above, -*> one can show that the diagonal element at each step of Gaussian -*> elimination is the largest (in absolute value) in the column -*> on or below the diagonal, so that no pivoting is required for -*> numerical stability [1]. +*> reconstruction routine SORHR_COL. In SORHR_COL, this routine is +*> applied to an M-by-N matrix A with orthonormal columns, where each +*> element is bounded by one in absolute value. With the choice of +*> the matrix S above, one can show that the diagonal element at each +*> step of Gaussian elimination is the largest (in absolute value) in +*> the column on or below the diagonal, so that no pivoting is required +*> for numerical stability [1]. *> *> For more details on the Householder reconstruction algorithm, *> including the modified LU factorization, see [1]. *> *> This is the blocked right-looking version of the algorithm, *> calling Level 3 BLAS to update the submatrix. To factorize a block, -*> this routine calls the recursive routine SLAORHR_GETRFNP2. +*> this routine calls the recursive routine SLAORHR_COL_GETRFNP2. *> *> [1] "Reconstructing Householder vectors from tall-skinny QR", *> G. Ballard, J. Demmel, L. Grigori, M. Jacquelin, H.D. Nguyen, @@ -128,7 +128,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \date June 2019 +*> \date November 2019 * *> \ingroup realGEcomputational * @@ -137,20 +137,20 @@ *> *> \verbatim *> -*> June 2019, Igor Kozachenko, -*> Computer Science Division, -*> University of California, Berkeley +*> November 2019, Igor Kozachenko, +*> Computer Science Division, +*> University of California, Berkeley *> *> \endverbatim * * ===================================================================== - SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) + SUBROUTINE SLAORHR_COL_GETRFNP( M, N, A, LDA, D, INFO ) IMPLICIT NONE * * -- LAPACK computational routine (version 3.9.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* June 2019 +* November 2019 * * .. Scalar Arguments .. INTEGER INFO, LDA, M, N @@ -169,7 +169,7 @@ SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) INTEGER IINFO, J, JB, NB * .. * .. External Subroutines .. - EXTERNAL SGEMM, SLAORHR_GETRFNP2, STRSM, XERBLA + EXTERNAL SGEMM, SLAORHR_COL_GETRFNP2, STRSM, XERBLA * .. * .. External Functions .. INTEGER ILAENV @@ -191,7 +191,7 @@ SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) INFO = -4 END IF IF( INFO.NE.0 ) THEN - CALL XERBLA( 'SLAORHR_GETRFNP', -INFO ) + CALL XERBLA( 'SLAORHR_COL_GETRFNP', -INFO ) RETURN END IF * @@ -203,13 +203,13 @@ SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) * Determine the block size for this environment. * - NB = ILAENV( 1, 'SLAORHR_GETRFNP', ' ', M, N, -1, -1 ) + NB = ILAENV( 1, 'SLAORHR_COL_GETRFNP', ' ', M, N, -1, -1 ) IF( NB.LE.1 .OR. NB.GE.MIN( M, N ) ) THEN * * Use unblocked code. * - CALL SLAORHR_GETRFNP2( M, N, A, LDA, D, INFO ) + CALL SLAORHR_COL_GETRFNP2( M, N, A, LDA, D, INFO ) ELSE * * Use blocked code. @@ -219,8 +219,8 @@ SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) * * Factor diagonal and subdiagonal blocks. * - CALL SLAORHR_GETRFNP2( M-J+1, JB, A( J, J ), LDA, D( J ), - $ IINFO ) + CALL SLAORHR_COL_GETRFNP2( M-J+1, JB, A( J, J ), LDA, + $ D( J ), IINFO ) * IF( J+JB.LE.N ) THEN * @@ -243,6 +243,6 @@ SUBROUTINE SLAORHR_GETRFNP( M, N, A, LDA, D, INFO ) END IF RETURN * -* End of SLAORHR_GETRFNP +* End of SLAORHR_COL_GETRFNP * END \ No newline at end of file diff --git a/SRC/slaorhr_getrfnp2.f b/SRC/slaorhr_col_getrfnp2.f similarity index 79% rename from SRC/slaorhr_getrfnp2.f rename to SRC/slaorhr_col_getrfnp2.f index a85a0be7a3..de604602f1 100644 --- a/SRC/slaorhr_getrfnp2.f +++ b/SRC/slaorhr_col_getrfnp2.f @@ -1,4 +1,4 @@ -*> \brief \b SLAORHR_GETRFNP2 +*> \brief \b SLAORHR_COL_GETRFNP2 * * =========== DOCUMENTATION =========== * @@ -7,18 +7,18 @@ * *> \htmlonly *> Download DLAORHR_GETRF2NP + dependencies -*> +*> *> [TGZ] -*> +*> *> [ZIP] -*> +*> *> [TXT] *> \endhtmlonly * * Definition: * =========== * -* RECURSIVE SUBROUTINE SLAORHR_GETRFNP2( M, N, A, LDA, D, INFO ) +* RECURSIVE SUBROUTINE SLAORHR_COL_GETRFNP2( M, N, A, LDA, D, INFO ) * * .. Scalar Arguments .. * INTEGER INFO, LDA, M, N @@ -33,8 +33,8 @@ *> *> \verbatim *> -*> SLAORHR_GETRFNP2 computes the modified LU factorization without -*> pivoting of a general M-by-N matrix A. The factorization has +*> SLAORHR_COL_GETRFNP2 computes the modified LU factorization without +*> pivoting of a real general M-by-N matrix A. The factorization has *> the form: *> *> A - S = L * U, @@ -48,20 +48,20 @@ *> least one in absolute value (so that division-by-zero not *> possible during the division by the diagonal element); *> -*> L is a m-by-n lower triangular matrix with unit diagonal elements -*> (lower trapezoidal if m > n); +*> L is a M-by-N lower triangular matrix with unit diagonal elements +*> (lower trapezoidal if M > N); *> -*> and U is a m-by-n upper triangular matrix -*> (upper trapezoidal if m < n). +*> and U is a M-by-N upper triangular matrix +*> (upper trapezoidal if M < N). *> *> This routine is an auxiliary routine used in the Householder -*> reconstruction routine SORHR. In SORHR, this routine is applied -*> to an orthonormal M-by-N matrix A, where each element is bounded -*> by one in absolute value. With the choice of the matrix S above, -*> one can show that the diagonal element at each step of Gaussian -*> elimination is the largest (in absolute value) in the column -*> on or below the diagonal, so that no pivoting is required for -*> numerical stability [1]. +*> reconstruction routine SORHR_COL. In SORHR_COL, this routine is +*> applied to an M-by-N matrix A with orthonormal columns, where each +*> element is bounded by one in absolute value. With the choice of +*> the matrix S above, one can show that the diagonal element at each +*> step of Gaussian elimination is the largest (in absolute value) in +*> the column on or below the diagonal, so that no pivoting is required +*> for numerical stability [1]. *> *> For more details on the Householder reconstruction algorithm, *> including the modified LU factorization, see [1]. @@ -82,10 +82,10 @@ *> *> For more details on the recursive LU algorithm, see [2]. *> -*> SLAORHR_GETRFNP2 is called to factorize a block by the blocked -*> routine SLAORHR_GETRFNP, which uses blocked code calling -*. Level 3 BLAS to update the submatrix. However, SLAORHR_GETRFNP2 -*> is self-sufficient and can be used without SLAORHR_GETRFNP. +*> SLAORHR_COL_GETRFNP2 is called to factorize a block by the blocked +*> routine SLAORHR_COL_GETRFNP, which uses blocked code calling +*. Level 3 BLAS to update the submatrix. However, SLAORHR_COL_GETRFNP2 +*> is self-sufficient and can be used without SLAORHR_COL_GETRFNP. *> *> [1] "Reconstructing Householder vectors from tall-skinny QR", *> G. Ballard, J. Demmel, L. Grigori, M. Jacquelin, H.D. Nguyen, @@ -149,7 +149,7 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \date June 2019 +*> \date November 2019 * *> \ingroup realGEcomputational * @@ -158,20 +158,20 @@ *> *> \verbatim *> -*> June 2019, Igor Kozachenko, -*> Computer Science Division, -*> University of California, Berkeley +*> November 2019, Igor Kozachenko, +*> Computer Science Division, +*> University of California, Berkeley *> *> \endverbatim * * ===================================================================== - RECURSIVE SUBROUTINE SLAORHR_GETRFNP2( M, N, A, LDA, D, INFO ) + RECURSIVE SUBROUTINE SLAORHR_COL_GETRFNP2( M, N, A, LDA, D, INFO ) IMPLICIT NONE * * -- LAPACK computational routine (version 3.9.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* June 2019 +* November 2019 * * .. Scalar Arguments .. INTEGER INFO, LDA, M, N @@ -213,7 +213,7 @@ RECURSIVE SUBROUTINE SLAORHR_GETRFNP2( M, N, A, LDA, D, INFO ) INFO = -4 END IF IF( INFO.NE.0 ) THEN - CALL XERBLA( 'SLAORHR_GETRFNP2', -INFO ) + CALL XERBLA( 'SLAORHR_COL_GETRFNP2', -INFO ) RETURN END IF * @@ -274,7 +274,7 @@ RECURSIVE SUBROUTINE SLAORHR_GETRFNP2( M, N, A, LDA, D, INFO ) * * Factor B11, recursive call * - CALL SLAORHR_GETRFNP2( N1, N1, A, LDA, D, IINFO ) + CALL SLAORHR_COL_GETRFNP2( N1, N1, A, LDA, D, IINFO ) * * Solve for B21 * @@ -294,12 +294,12 @@ RECURSIVE SUBROUTINE SLAORHR_GETRFNP2( M, N, A, LDA, D, INFO ) * * Factor B22, recursive call * - CALL SLAORHR_GETRFNP2( M-N1, N2, A( N1+1, N1+1 ), LDA, + CALL SLAORHR_COL_GETRFNP2( M-N1, N2, A( N1+1, N1+1 ), LDA, $ D( N1+1 ), IINFO ) * END IF RETURN * -* End of SLAORHR_GETRFNP2 +* End of SLAORHR_COL_GETRFNP2 * END diff --git a/SRC/sorhr_col.f b/SRC/sorhr_col.f index fdb14ded25..38976245c2 100644 --- a/SRC/sorhr_col.f +++ b/SRC/sorhr_col.f @@ -282,7 +282,7 @@ SUBROUTINE SORHR_COL( M, N, NB, A, LDA, T, LDT, D, INFO ) $ NPLUSONE * .. * .. External Subroutines .. - EXTERNAL SCOPY, SLAORHR_GETRFNP, SSCAL, STRSM, XERBLA + EXTERNAL SCOPY, SLAORHR_COL_GETRFNP, SSCAL, STRSM, XERBLA * .. * .. Intrinsic Functions .. INTRINSIC MAX, MIN @@ -330,7 +330,7 @@ SUBROUTINE SORHR_COL( M, N, NB, A, LDA, T, LDT, D, INFO ) * * (1-1) Factor V1 and U. - CALL SLAORHR_GETRFNP( N, N, A, LDA, D, IINFO ) + CALL SLAORHR_COL_GETRFNP( N, N, A, LDA, D, IINFO ) * * (1-2) Solve for V2. * diff --git a/TESTING/LIN/schkaa.f b/TESTING/LIN/schkaa.f index 3c31566ebc..a9c13e4421 100644 --- a/TESTING/LIN/schkaa.f +++ b/TESTING/LIN/schkaa.f @@ -114,7 +114,7 @@ PROGRAM SCHKAA * -- LAPACK test routine (version 3.9.0) -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- -* June 2019 +* November 2019 * * ===================================================================== * @@ -152,7 +152,7 @@ PROGRAM SCHKAA $ RANKVAL( MAXIN ), PIV( NMAX ) REAL A( ( KDMAX+1 )*NMAX, 7 ), B( NMAX*MAXRHS, 4 ), $ E( NMAX ), RWORK( 5*NMAX+2*MAXRHS ), - $ S( 2*NMAX ), WORK( NMAX, 3*NMAX+MAXRHS+30 ) + $ S( 2*NMAX ), WORK( NMAX, NMAX+MAXRHS+30 ) * .. * .. External Functions .. LOGICAL LSAME, LSAMEN @@ -721,10 +721,9 @@ PROGRAM SCHKAA $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), $ WORK, RWORK, IWORK, NOUT ) - ELSE - WRITE( NOUT, FMT = 9988 )PATH - END IF -* + ELSE + WRITE( NOUT, FMT = 9988 )PATH + END IF * ELSE IF( LSAMEN( 2, C2, 'S2' ) ) THEN * @@ -750,10 +749,9 @@ PROGRAM SCHKAA $ LDA, A( 1, 1 ), A( 1, 2 ), A( 1, 3 ), $ B( 1, 1 ), B( 1, 2 ), B( 1, 3 ), $ WORK, RWORK, IWORK, NOUT ) - ELSE - WRITE( NOUT, FMT = 9988 )PATH - END IF -* + ELSE + WRITE( NOUT, FMT = 9988 )PATH + END IF * ELSE IF( LSAMEN( 2, C2, 'SP' ) ) THEN * diff --git a/TESTING/LIN/serrorhr_col.f b/TESTING/LIN/serrorhr_col.f index 8a76be59df..e8d81a99c0 100644 --- a/TESTING/LIN/serrorhr_col.f +++ b/TESTING/LIN/serrorhr_col.f @@ -21,9 +21,9 @@ *> *> \verbatim *> -*> SERRORHR_COL tests the error exits for DORHR that does Householder -*> reconstruction from the ouput of tall-skinny factorization SLATSQR. -*> +*> SERRORHR_COL tests the error exits for SORHR_COL that does +*> Householder reconstruction from the ouput of tall-skinny +*> factorization SLATSQR. *> \endverbatim * * Arguments: @@ -77,8 +77,7 @@ SUBROUTINE SERRORHR_COL( PATH, NUNIT ) INTEGER I, INFO, J * .. * .. Local Arrays .. - REAL A( NMAX, NMAX ), T( NMAX, NMAX ), - $ R( NMAX, NMAX ), D(NMAX) + REAL A( NMAX, NMAX ), T( NMAX, NMAX ), D(NMAX) * .. * .. External Subroutines .. EXTERNAL ALAESM, CHKXER, SORHR_COL @@ -105,7 +104,6 @@ SUBROUTINE SERRORHR_COL( PATH, NUNIT ) DO J = 1, NMAX DO I = 1, NMAX A( I, J ) = 1.E+0 / REAL( I+J ) - R( I, J ) = 1.E+0 / REAL( I+J ) T( I, J ) = 1.E+0 / REAL( I+J ) END DO D( J ) = 0.E+0 diff --git a/TESTING/LIN/sorhr_col01.f b/TESTING/LIN/sorhr_col01.f index 9bdda0285c..02429041be 100644 --- a/TESTING/LIN/sorhr_col01.f +++ b/TESTING/LIN/sorhr_col01.f @@ -278,7 +278,7 @@ SUBROUTINE SORHR_COL01( M, N, MB1, NB1, NB2, RESULT ) * Compute |I - (Q**T)*Q| / ( eps * m ) and store in RESULT(2) * CALL SLASET( 'Full', M, M, ZERO, ONE, R, M ) - CALL SSYRK( 'U', 'C', M, M, -ONE, Q, M, ONE, R, M ) + CALL SSYRK( 'U', 'T', M, M, -ONE, Q, M, ONE, R, M ) RESID = SLANSY( '1', 'Upper', M, R, M, RWORK ) RESULT( 2 ) = RESID / ( EPS * MAX( 1, M ) ) *