From c5cd266fff78986a43971bb79738a173e9890ff5 Mon Sep 17 00:00:00 2001 From: Martin Kroeker Date: Wed, 24 Jun 2026 20:44:27 +0200 Subject: [PATCH] Reduce workspace demand for tiny M,N,K sizes (Reference-LAPACK PR 1292) --- lapack-netlib/SRC/cunmlq.f | 4 ++-- lapack-netlib/SRC/cunmql.f | 19 +++++++++++-------- lapack-netlib/SRC/cunmqr.f | 22 +++++++++++++--------- lapack-netlib/SRC/cunmrq.f | 16 +++++++++------- lapack-netlib/SRC/dormlq.f | 21 ++++++++++++--------- lapack-netlib/SRC/dormql.f | 21 ++++++++++++--------- lapack-netlib/SRC/dormqr.f | 24 ++++++++++++++---------- lapack-netlib/SRC/dormrq.f | 18 ++++++++++-------- lapack-netlib/SRC/sormlq.f | 19 +++++++++++-------- lapack-netlib/SRC/sormql.f | 19 +++++++++++-------- lapack-netlib/SRC/sormqr.f | 22 +++++++++++++--------- lapack-netlib/SRC/sormrq.f | 16 +++++++++------- lapack-netlib/SRC/zunmlq.f | 21 ++++++++++++--------- lapack-netlib/SRC/zunmql.f | 21 ++++++++++++--------- lapack-netlib/SRC/zunmqr.f | 24 ++++++++++++++---------- lapack-netlib/SRC/zunmrq.f | 18 ++++++++++-------- 16 files changed, 175 insertions(+), 130 deletions(-) diff --git a/lapack-netlib/SRC/cunmlq.f b/lapack-netlib/SRC/cunmlq.f index d80e31758a..41e2ec2765 100644 --- a/lapack-netlib/SRC/cunmlq.f +++ b/lapack-netlib/SRC/cunmlq.f @@ -246,7 +246,7 @@ SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, NB = MIN( NBMAX, ILAENV( 1, 'CUNMLQ', SIDE // TRANS, M, N, $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF * @@ -270,7 +270,7 @@ SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK + NB = LWORK / (LDWORK + LDT) NBMIN = MAX( 2, ILAENV( 2, 'CUNMLQ', SIDE // TRANS, M, N, $ K, $ -1 ) ) diff --git a/lapack-netlib/SRC/cunmql.f b/lapack-netlib/SRC/cunmql.f index 84fc29d327..299b8f9194 100644 --- a/lapack-netlib/SRC/cunmql.f +++ b/lapack-netlib/SRC/cunmql.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download CUNMQL + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -246,9 +245,10 @@ SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'CUNMQL', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'CUNMQL', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF @@ -272,8 +272,9 @@ SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'CUNMQL', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'CUNMQL', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -282,7 +283,8 @@ SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL CUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL CUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -328,7 +330,8 @@ SUBROUTINE CUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**H * - CALL CLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI, + CALL CLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, + $ NI, $ IB, A( 1, I ), LDA, WORK( IWT ), LDT, C, LDC, $ WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/cunmqr.f b/lapack-netlib/SRC/cunmqr.f index 7d85a861fa..1f3bbdedb4 100644 --- a/lapack-netlib/SRC/cunmqr.f +++ b/lapack-netlib/SRC/cunmqr.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download CUNMQR + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -243,9 +242,10 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'CUNMQR', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'CUNMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF * @@ -267,8 +267,9 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'CUNMQR', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'CUNMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -277,7 +278,8 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL CUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL CUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -309,7 +311,8 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * - CALL CLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ), + CALL CLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, + $ I ), $ LDA, TAU( I ), WORK( IWT ), LDT ) IF( LEFT ) THEN * @@ -327,7 +330,8 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**H * - CALL CLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI, + CALL CLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, + $ NI, $ IB, A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/cunmrq.f b/lapack-netlib/SRC/cunmrq.f index f02cfd9a99..0b1e069360 100644 --- a/lapack-netlib/SRC/cunmrq.f +++ b/lapack-netlib/SRC/cunmrq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download CUNMRQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -247,9 +246,10 @@ SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'CUNMRQ', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'CUNMRQ', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF @@ -271,8 +271,9 @@ SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'CUNMRQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'CUNMRQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -281,7 +282,8 @@ SUBROUTINE CUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL CUNMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL CUNMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * diff --git a/lapack-netlib/SRC/dormlq.f b/lapack-netlib/SRC/dormlq.f index ef039285ab..9d8b8aac8e 100644 --- a/lapack-netlib/SRC/dormlq.f +++ b/lapack-netlib/SRC/dormlq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download DORMLQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup doubleOTHERcomputational +*> \ingroup unmlq * * ===================================================================== SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -241,9 +240,10 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = LWKOPT END IF * @@ -265,8 +265,9 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'DORMLQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'DORMLQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -275,7 +276,8 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL DORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL DORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -331,7 +333,8 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**T * - CALL DLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, IB, + CALL DLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, + $ IB, $ A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/dormql.f b/lapack-netlib/SRC/dormql.f index 7c9f189e0d..07d8d4467f 100644 --- a/lapack-netlib/SRC/dormql.f +++ b/lapack-netlib/SRC/dormql.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download DORMQL + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup doubleOTHERcomputational +*> \ingroup unmql * * ===================================================================== SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -243,9 +242,10 @@ SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'DORMQL', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'DORMQL', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = LWKOPT END IF @@ -267,8 +267,9 @@ SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'DORMQL', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'DORMQL', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -277,7 +278,8 @@ SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL DORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -323,7 +325,8 @@ SUBROUTINE DORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**T * - CALL DLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI, + CALL DLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, + $ NI, $ IB, A( 1, I ), LDA, WORK( IWT ), LDT, C, LDC, $ WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/dormqr.f b/lapack-netlib/SRC/dormqr.f index 4d0bae3a5f..85797bd0be 100644 --- a/lapack-netlib/SRC/dormqr.f +++ b/lapack-netlib/SRC/dormqr.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download DORMQR + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup doubleOTHERcomputational +*> \ingroup unmqr * * ===================================================================== SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -240,9 +239,10 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = LWKOPT END IF * @@ -264,8 +264,9 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'DORMQR', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'DORMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -274,7 +275,8 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL DORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -306,7 +308,8 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * - CALL DLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ), + CALL DLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, + $ I ), $ LDA, TAU( I ), WORK( IWT ), LDT ) IF( LEFT ) THEN * @@ -324,7 +327,8 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**T * - CALL DLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI, + CALL DLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, + $ NI, $ IB, A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/dormrq.f b/lapack-netlib/SRC/dormrq.f index 43422f9583..1f31fd7424 100644 --- a/lapack-netlib/SRC/dormrq.f +++ b/lapack-netlib/SRC/dormrq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download DORMRQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup doubleOTHERcomputational +*> \ingroup unmrq * * ===================================================================== SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -244,9 +243,10 @@ SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'DORMRQ', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = LWKOPT END IF @@ -268,8 +268,9 @@ SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'DORMRQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'DORMRQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -278,7 +279,8 @@ SUBROUTINE DORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL DORMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL DORMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * diff --git a/lapack-netlib/SRC/sormlq.f b/lapack-netlib/SRC/sormlq.f index 1a32568b6d..b1dbd5f1b5 100644 --- a/lapack-netlib/SRC/sormlq.f +++ b/lapack-netlib/SRC/sormlq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download SORMLQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -244,9 +243,10 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'SORMLQ', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'SORMLQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF * @@ -268,8 +268,9 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'SORMLQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'SORMLQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -278,7 +279,8 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL SORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL SORML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -334,7 +336,8 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**T * - CALL SLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, IB, + CALL SLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, + $ IB, $ A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/sormql.f b/lapack-netlib/SRC/sormql.f index 9564d41414..ba8cf6b992 100644 --- a/lapack-netlib/SRC/sormql.f +++ b/lapack-netlib/SRC/sormql.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download SORMQL + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -246,9 +245,10 @@ SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'SORMQL', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'SORMQL', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF @@ -270,8 +270,9 @@ SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'SORMQL', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'SORMQL', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -280,7 +281,8 @@ SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL SORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL SORM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -326,7 +328,8 @@ SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**T * - CALL SLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI, + CALL SLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, + $ NI, $ IB, A( 1, I ), LDA, WORK( IWT ), LDT, C, LDC, $ WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/sormqr.f b/lapack-netlib/SRC/sormqr.f index adb1203dfb..34f1bd4ecc 100644 --- a/lapack-netlib/SRC/sormqr.f +++ b/lapack-netlib/SRC/sormqr.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download SORMQR + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -243,9 +242,10 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'SORMQR', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'SORMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF * @@ -267,8 +267,9 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'SORMQR', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'SORMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -277,7 +278,8 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL SORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL SORM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -309,7 +311,8 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * - CALL SLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ), + CALL SLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, + $ I ), $ LDA, TAU( I ), WORK( IWT ), LDT ) IF( LEFT ) THEN * @@ -327,7 +330,8 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**T * - CALL SLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI, + CALL SLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, + $ NI, $ IB, A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/sormrq.f b/lapack-netlib/SRC/sormrq.f index f091f05078..a7376ddb52 100644 --- a/lapack-netlib/SRC/sormrq.f +++ b/lapack-netlib/SRC/sormrq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download SORMRQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -165,6 +163,7 @@ * ===================================================================== SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -247,9 +246,10 @@ SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'SORMRQ', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'SORMRQ', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = SROUNDUP_LWORK(LWKOPT) END IF @@ -271,8 +271,9 @@ SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'SORMRQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'SORMRQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -281,7 +282,8 @@ SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL SORMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL SORMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * diff --git a/lapack-netlib/SRC/zunmlq.f b/lapack-netlib/SRC/zunmlq.f index f2fb315440..450697660e 100644 --- a/lapack-netlib/SRC/zunmlq.f +++ b/lapack-netlib/SRC/zunmlq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download ZUNMLQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup complex16OTHERcomputational +*> \ingroup unmlq * * ===================================================================== SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -241,9 +240,10 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'ZUNMLQ', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'ZUNMLQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = LWKOPT END IF * @@ -265,8 +265,9 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'ZUNMLQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'ZUNMLQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -275,7 +276,8 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL ZUNML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL ZUNML2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -331,7 +333,8 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**H * - CALL ZLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, IB, + CALL ZLARFB( SIDE, TRANST, 'Forward', 'Rowwise', MI, NI, + $ IB, $ A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/zunmql.f b/lapack-netlib/SRC/zunmql.f index 06353a0c75..9a6193aaaf 100644 --- a/lapack-netlib/SRC/zunmql.f +++ b/lapack-netlib/SRC/zunmql.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download ZUNMQL + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup complex16OTHERcomputational +*> \ingroup unmql * * ===================================================================== SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -243,9 +242,10 @@ SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQL', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQL', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = LWKOPT END IF @@ -267,8 +267,9 @@ SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQL', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQL', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -277,7 +278,8 @@ SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL ZUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL ZUNM2L( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -323,7 +325,8 @@ SUBROUTINE ZUNMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**H * - CALL ZLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, NI, + CALL ZLARFB( SIDE, TRANS, 'Backward', 'Columnwise', MI, + $ NI, $ IB, A( 1, I ), LDA, WORK( IWT ), LDT, C, LDC, $ WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/zunmqr.f b/lapack-netlib/SRC/zunmqr.f index 2ae205f4fd..c29966ffc5 100644 --- a/lapack-netlib/SRC/zunmqr.f +++ b/lapack-netlib/SRC/zunmqr.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download ZUNMQR + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup complex16OTHERcomputational +*> \ingroup unmqr * * ===================================================================== SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -240,9 +239,10 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Compute the workspace requirements * - NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N, K, + NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB WORK( 1 ) = LWKOPT END IF * @@ -264,8 +264,9 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQR', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'ZUNMQR', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -274,7 +275,8 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL ZUNM2R( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE * @@ -306,7 +308,8 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * Form the triangular factor of the block reflector * H = H(i) H(i+1) . . . H(i+ib-1) * - CALL ZLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, I ), + CALL ZLARFT( 'Forward', 'Columnwise', NQ-I+1, IB, A( I, + $ I ), $ LDA, TAU( I ), WORK( IWT ), LDT ) IF( LEFT ) THEN * @@ -324,7 +327,8 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Apply H or H**H * - CALL ZLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, NI, + CALL ZLARFB( SIDE, TRANS, 'Forward', 'Columnwise', MI, + $ NI, $ IB, A( I, I ), LDA, WORK( IWT ), LDT, $ C( IC, JC ), LDC, WORK, LDWORK ) 10 CONTINUE diff --git a/lapack-netlib/SRC/zunmrq.f b/lapack-netlib/SRC/zunmrq.f index e14e93bf2e..b98e82bf3c 100644 --- a/lapack-netlib/SRC/zunmrq.f +++ b/lapack-netlib/SRC/zunmrq.f @@ -5,7 +5,6 @@ * Online html documentation available at * http://www.netlib.org/lapack/explore-html/ * -*> \htmlonly *> Download ZUNMRQ + dependencies *> *> [TGZ] @@ -13,7 +12,6 @@ *> [ZIP] *> *> [TXT] -*> \endhtmlonly * * Definition: * =========== @@ -159,11 +157,12 @@ *> \author Univ. of Colorado Denver *> \author NAG Ltd. * -*> \ingroup complex16OTHERcomputational +*> \ingroup unmrq * * ===================================================================== SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, $ WORK, LWORK, INFO ) + IMPLICIT NONE * * -- LAPACK computational routine -- * -- LAPACK is a software package provided by Univ. of Tennessee, -- @@ -244,9 +243,10 @@ SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, IF( M.EQ.0 .OR. N.EQ.0 ) THEN LWKOPT = 1 ELSE - NB = MIN( NBMAX, ILAENV( 1, 'ZUNMRQ', SIDE // TRANS, M, N, + NB = MIN( NBMAX, ILAENV( 1, 'ZUNMRQ', SIDE // TRANS, M, + $ N, $ K, -1 ) ) - LWKOPT = NW*NB + TSIZE + LWKOPT = NW*NB + LDT*NB END IF WORK( 1 ) = LWKOPT END IF @@ -268,8 +268,9 @@ SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, LDWORK = NW IF( NB.GT.1 .AND. NB.LT.K ) THEN IF( LWORK.LT.LWKOPT ) THEN - NB = (LWORK-TSIZE) / LDWORK - NBMIN = MAX( 2, ILAENV( 2, 'ZUNMRQ', SIDE // TRANS, M, N, K, + NB = LWORK / (LDWORK + LDT) + NBMIN = MAX( 2, ILAENV( 2, 'ZUNMRQ', SIDE // TRANS, M, N, + $ K, $ -1 ) ) END IF END IF @@ -278,7 +279,8 @@ SUBROUTINE ZUNMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * * Use unblocked code * - CALL ZUNMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, WORK, + CALL ZUNMR2( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, + $ WORK, $ IINFO ) ELSE *