From e94cb0f1c16090230965c56a36ee7570a0b856dc Mon Sep 17 00:00:00 2001 From: Igor Zhuravlov Date: Tue, 2 Jun 2020 10:12:14 +1000 Subject: [PATCH] code fixed and unified: NW lower bound limited - to avoide possible divide by zero (LDWORK) in xxxMLQ, xxxMQR, xxxMRZ - to unify code with ZUNMRZ, xxxMQL, xxxMRQ --- SRC/cunmbr.f | 13 +++++-------- SRC/cunmhr.f | 8 ++++---- SRC/cunmlq.f | 8 ++++---- SRC/cunmqr.f | 8 ++++---- SRC/cunmrz.f | 2 +- SRC/cunmtr.f | 8 ++++---- SRC/dormbr.f | 8 ++++---- SRC/dormhr.f | 8 ++++---- SRC/dormlq.f | 8 ++++---- SRC/dormqr.f | 8 ++++---- SRC/dormrz.f | 2 +- SRC/dormtr.f | 8 ++++---- SRC/sormbr.f | 8 ++++---- SRC/sormhr.f | 8 ++++---- SRC/sormlq.f | 8 ++++---- SRC/sormqr.f | 8 ++++---- SRC/sormrz.f | 2 +- SRC/sormtr.f | 8 ++++---- SRC/zunmbr.f | 13 +++++-------- SRC/zunmhr.f | 8 ++++---- SRC/zunmlq.f | 8 ++++---- SRC/zunmqr.f | 8 ++++---- SRC/zunmtr.f | 8 ++++---- 23 files changed, 85 insertions(+), 91 deletions(-) diff --git a/SRC/cunmbr.f b/SRC/cunmbr.f index d9401e3c8e..cef6025b02 100644 --- a/SRC/cunmbr.f +++ b/SRC/cunmbr.f @@ -240,13 +240,10 @@ SUBROUTINE CUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M - END IF - IF( M.EQ.0 .OR. N.EQ.0 ) THEN - NW = 0 + NW = MAX( 1, M ) END IF IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN INFO = -1 @@ -266,12 +263,12 @@ SUBROUTINE CUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * IF( INFO.EQ.0 ) THEN - IF( NW.GT.0 ) THEN + IF( M.GT.0 .AND. N.GT.0 ) THEN IF( APPLYQ ) THEN IF( LEFT ) THEN NB = ILAENV( 1, 'CUNMQR', SIDE // TRANS, M-1, N, M-1, @@ -289,7 +286,7 @@ SUBROUTINE CUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW*NB ) + LWKOPT = NW*NB ELSE LWKOPT = 1 END IF diff --git a/SRC/cunmhr.f b/SRC/cunmhr.f index c0672bbd54..af3140d5f3 100644 --- a/SRC/cunmhr.f +++ b/SRC/cunmhr.f @@ -220,10 +220,10 @@ SUBROUTINE CUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -242,7 +242,7 @@ SUBROUTINE CUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * @@ -252,7 +252,7 @@ SUBROUTINE CUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, ELSE NB = ILAENV( 1, 'CUNMQR', SIDE // TRANS, M, NH, NH, -1 ) END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/cunmlq.f b/SRC/cunmlq.f index 02af764e55..3975b000b0 100644 --- a/SRC/cunmlq.f +++ b/SRC/cunmlq.f @@ -216,10 +216,10 @@ SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -235,7 +235,7 @@ SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -248,7 +248,7 @@ SUBROUTINE CUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, ELSE NB = MIN( NBMAX, ILAENV( 1, 'CUNMLQ', SIDE // TRANS, M, N, $ K, -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE END IF WORK( 1 ) = LWKOPT END IF diff --git a/SRC/cunmqr.f b/SRC/cunmqr.f index 9e3b6a4a6c..23624222c1 100644 --- a/SRC/cunmqr.f +++ b/SRC/cunmqr.f @@ -215,10 +215,10 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -234,7 +234,7 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -244,7 +244,7 @@ SUBROUTINE CUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'CUNMQR', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/cunmrz.f b/SRC/cunmrz.f index fdcef9d819..76f8ef6cba 100644 --- a/SRC/cunmrz.f +++ b/SRC/cunmrz.f @@ -256,7 +256,7 @@ SUBROUTINE CUNMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * diff --git a/SRC/cunmtr.f b/SRC/cunmtr.f index 1bc2d245b5..097dba91e7 100644 --- a/SRC/cunmtr.f +++ b/SRC/cunmtr.f @@ -213,10 +213,10 @@ SUBROUTINE CUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -233,7 +233,7 @@ SUBROUTINE CUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -255,7 +255,7 @@ SUBROUTINE CUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/dormbr.f b/SRC/dormbr.f index e2ee448961..86abb10072 100644 --- a/SRC/dormbr.f +++ b/SRC/dormbr.f @@ -237,10 +237,10 @@ SUBROUTINE DORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN INFO = -1 @@ -260,7 +260,7 @@ SUBROUTINE DORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * @@ -282,7 +282,7 @@ SUBROUTINE DORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/dormhr.f b/SRC/dormhr.f index 57f4f51846..1cf1731743 100644 --- a/SRC/dormhr.f +++ b/SRC/dormhr.f @@ -218,10 +218,10 @@ SUBROUTINE DORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -240,7 +240,7 @@ SUBROUTINE DORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * @@ -250,7 +250,7 @@ SUBROUTINE DORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, ELSE NB = ILAENV( 1, 'DORMQR', SIDE // TRANS, M, NH, NH, -1 ) END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/dormlq.f b/SRC/dormlq.f index 98d0f016fd..b93e6e28b2 100644 --- a/SRC/dormlq.f +++ b/SRC/dormlq.f @@ -214,10 +214,10 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -233,7 +233,7 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -243,7 +243,7 @@ SUBROUTINE DORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'DORMLQ', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/dormqr.f b/SRC/dormqr.f index 0500471f98..4403421b6f 100644 --- a/SRC/dormqr.f +++ b/SRC/dormqr.f @@ -213,10 +213,10 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -232,7 +232,7 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -242,7 +242,7 @@ SUBROUTINE DORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'DORMQR', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/dormrz.f b/SRC/dormrz.f index fc77fee439..3ec12aaa18 100644 --- a/SRC/dormrz.f +++ b/SRC/dormrz.f @@ -256,7 +256,7 @@ SUBROUTINE DORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * diff --git a/SRC/dormtr.f b/SRC/dormtr.f index 37c4d9a0b9..1f664d63cc 100644 --- a/SRC/dormtr.f +++ b/SRC/dormtr.f @@ -211,10 +211,10 @@ SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -231,7 +231,7 @@ SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -253,7 +253,7 @@ SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/sormbr.f b/SRC/sormbr.f index 8ef6115d54..efe5be41a8 100644 --- a/SRC/sormbr.f +++ b/SRC/sormbr.f @@ -239,10 +239,10 @@ SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN INFO = -1 @@ -262,7 +262,7 @@ SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * @@ -284,7 +284,7 @@ SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/sormhr.f b/SRC/sormhr.f index 99d3dd8b2f..2d2053af4c 100644 --- a/SRC/sormhr.f +++ b/SRC/sormhr.f @@ -220,10 +220,10 @@ SUBROUTINE SORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -242,7 +242,7 @@ SUBROUTINE SORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * @@ -252,7 +252,7 @@ SUBROUTINE SORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, ELSE NB = ILAENV( 1, 'SORMQR', SIDE // TRANS, M, NH, NH, -1 ) END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/sormlq.f b/SRC/sormlq.f index 53392ab14f..679a3a28e4 100644 --- a/SRC/sormlq.f +++ b/SRC/sormlq.f @@ -216,10 +216,10 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -235,7 +235,7 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -245,7 +245,7 @@ SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'SORMLQ', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/sormqr.f b/SRC/sormqr.f index 574fdb60d3..828ab7d426 100644 --- a/SRC/sormqr.f +++ b/SRC/sormqr.f @@ -215,10 +215,10 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -234,7 +234,7 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -244,7 +244,7 @@ SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'SORMQR', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/sormrz.f b/SRC/sormrz.f index 6bb82fdeac..522cb2fce7 100644 --- a/SRC/sormrz.f +++ b/SRC/sormrz.f @@ -256,7 +256,7 @@ SUBROUTINE SORMRZ( SIDE, TRANS, M, N, K, L, A, LDA, TAU, C, LDC, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * diff --git a/SRC/sormtr.f b/SRC/sormtr.f index f11f044c4e..3ba749fee6 100644 --- a/SRC/sormtr.f +++ b/SRC/sormtr.f @@ -213,10 +213,10 @@ SUBROUTINE SORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -233,7 +233,7 @@ SUBROUTINE SORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -255,7 +255,7 @@ SUBROUTINE SORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/zunmbr.f b/SRC/zunmbr.f index a0aec828ac..b43e881b29 100644 --- a/SRC/zunmbr.f +++ b/SRC/zunmbr.f @@ -238,13 +238,10 @@ SUBROUTINE ZUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M - END IF - IF( M.EQ.0 .OR. N.EQ.0 ) THEN - NW = 0 + NW = MAX( 1, M ) END IF IF( .NOT.APPLYQ .AND. .NOT.LSAME( VECT, 'P' ) ) THEN INFO = -1 @@ -264,12 +261,12 @@ SUBROUTINE ZUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * IF( INFO.EQ.0 ) THEN - IF( NW.GT.0 ) THEN + IF( M.GT.0 .AND. N.GT.0 ) THEN IF( APPLYQ ) THEN IF( LEFT ) THEN NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M-1, N, M-1, @@ -287,7 +284,7 @@ SUBROUTINE ZUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW*NB ) + LWKOPT = NW*NB ELSE LWKOPT = 1 END IF diff --git a/SRC/zunmhr.f b/SRC/zunmhr.f index f14a1b9ee1..9ece71c5e7 100644 --- a/SRC/zunmhr.f +++ b/SRC/zunmhr.f @@ -218,10 +218,10 @@ SUBROUTINE ZUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -240,7 +240,7 @@ SUBROUTINE ZUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, INFO = -8 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -11 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -13 END IF * @@ -250,7 +250,7 @@ SUBROUTINE ZUNMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, ELSE NB = ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, NH, NH, -1 ) END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/zunmlq.f b/SRC/zunmlq.f index 5a7950d5b5..c67ee50e06 100644 --- a/SRC/zunmlq.f +++ b/SRC/zunmlq.f @@ -214,10 +214,10 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -233,7 +233,7 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -243,7 +243,7 @@ SUBROUTINE ZUNMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'ZUNMLQ', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/zunmqr.f b/SRC/zunmqr.f index 6e56427c6c..48fc7e2ece 100644 --- a/SRC/zunmqr.f +++ b/SRC/zunmqr.f @@ -213,10 +213,10 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -232,7 +232,7 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -242,7 +242,7 @@ SUBROUTINE ZUNMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, * NB = MIN( NBMAX, ILAENV( 1, 'ZUNMQR', SIDE // TRANS, M, N, K, $ -1 ) ) - LWKOPT = MAX( 1, NW )*NB + TSIZE + LWKOPT = NW*NB + TSIZE WORK( 1 ) = LWKOPT END IF * diff --git a/SRC/zunmtr.f b/SRC/zunmtr.f index 23231e5623..441a7c2bcc 100644 --- a/SRC/zunmtr.f +++ b/SRC/zunmtr.f @@ -211,10 +211,10 @@ SUBROUTINE ZUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, * IF( LEFT ) THEN NQ = M - NW = N + NW = MAX( 1, N ) ELSE NQ = N - NW = M + NW = MAX( 1, M ) END IF IF( .NOT.LEFT .AND. .NOT.LSAME( SIDE, 'R' ) ) THEN INFO = -1 @@ -231,7 +231,7 @@ SUBROUTINE ZUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, INFO = -7 ELSE IF( LDC.LT.MAX( 1, M ) ) THEN INFO = -10 - ELSE IF( LWORK.LT.MAX( 1, NW ) .AND. .NOT.LQUERY ) THEN + ELSE IF( LWORK.LT.NW .AND. .NOT.LQUERY ) THEN INFO = -12 END IF * @@ -253,7 +253,7 @@ SUBROUTINE ZUNMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, $ -1 ) END IF END IF - LWKOPT = MAX( 1, NW )*NB + LWKOPT = NW*NB WORK( 1 ) = LWKOPT END IF *