From ca9fa5a016bd1a21b69dfdc11919ca96b98d152e Mon Sep 17 00:00:00 2001 From: Angelika Schwarz Date: Wed, 12 Oct 2022 18:22:51 +0200 Subject: [PATCH] Fix lower triangular band matrix generation Closes #343 --- TESTING/LIN/clatb4.f | 9 +++++---- TESTING/LIN/dlatb4.f | 9 +++++---- TESTING/LIN/dlattb.f | 2 +- TESTING/LIN/dlattp.f | 2 +- TESTING/LIN/dlattr.f | 2 +- TESTING/LIN/slatb4.f | 9 +++++---- TESTING/LIN/zlatb4.f | 9 +++++---- TESTING/LIN/zlattb.f | 2 +- TESTING/LIN/zlattr.f | 2 +- 9 files changed, 25 insertions(+), 21 deletions(-) diff --git a/TESTING/LIN/clatb4.f b/TESTING/LIN/clatb4.f index eeb0f03a96..4fc7f1ba21 100644 --- a/TESTING/LIN/clatb4.f +++ b/TESTING/LIN/clatb4.f @@ -517,17 +517,18 @@ SUBROUTINE CLATB4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, * * Set the norm and condition number. * - IF( IMAT.EQ.2 .OR. IMAT.EQ.8 ) THEN + MAT = ABS( IMAT ) + IF( MAT.EQ.2 .OR. MAT.EQ.8 ) THEN CNDNUM = BADC1 - ELSE IF( IMAT.EQ.3 .OR. IMAT.EQ.9 ) THEN + ELSE IF( MAT.EQ.3 .OR. MAT.EQ.9 ) THEN CNDNUM = BADC2 ELSE CNDNUM = TWO END IF * - IF( IMAT.EQ.4 ) THEN + IF( MAT.EQ.4 ) THEN ANORM = SMALL - ELSE IF( IMAT.EQ.5 ) THEN + ELSE IF( MAT.EQ.5 ) THEN ANORM = LARGE ELSE ANORM = ONE diff --git a/TESTING/LIN/dlatb4.f b/TESTING/LIN/dlatb4.f index 8825d13e75..791f44de2e 100644 --- a/TESTING/LIN/dlatb4.f +++ b/TESTING/LIN/dlatb4.f @@ -518,17 +518,18 @@ SUBROUTINE DLATB4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, * * Set the norm and condition number. * - IF( IMAT.EQ.2 .OR. IMAT.EQ.8 ) THEN + MAT = ABS( IMAT ) + IF( MAT.EQ.2 .OR. MAT.EQ.8 ) THEN CNDNUM = BADC1 - ELSE IF( IMAT.EQ.3 .OR. IMAT.EQ.9 ) THEN + ELSE IF( MAT.EQ.3 .OR. MAT.EQ.9 ) THEN CNDNUM = BADC2 ELSE CNDNUM = TWO END IF * - IF( IMAT.EQ.4 ) THEN + IF( MAT.EQ.4 ) THEN ANORM = SMALL - ELSE IF( IMAT.EQ.5 ) THEN + ELSE IF( MAT.EQ.5 ) THEN ANORM = LARGE ELSE ANORM = ONE diff --git a/TESTING/LIN/dlattb.f b/TESTING/LIN/dlattb.f index e3f8c9c345..e0289249e8 100644 --- a/TESTING/LIN/dlattb.f +++ b/TESTING/LIN/dlattb.f @@ -195,7 +195,7 @@ SUBROUTINE DLATTB( IMAT, UPLO, TRANS, DIAG, ISEED, N, KD, AB, IF( N.LE.0 ) $ RETURN * -* Call DLATB4 to set parameters for SLATMS. +* Call DLATB4 to set parameters for DLATMS. * UPPER = LSAME( UPLO, 'U' ) IF( UPPER ) THEN diff --git a/TESTING/LIN/dlattp.f b/TESTING/LIN/dlattp.f index fef888859a..9c537d486a 100644 --- a/TESTING/LIN/dlattp.f +++ b/TESTING/LIN/dlattp.f @@ -187,7 +187,7 @@ SUBROUTINE DLATTP( IMAT, UPLO, TRANS, DIAG, ISEED, N, A, B, WORK, IF( N.LE.0 ) $ RETURN * -* Call DLATB4 to set parameters for SLATMS. +* Call DLATB4 to set parameters for DLATMS. * UPPER = LSAME( UPLO, 'U' ) IF( UPPER ) THEN diff --git a/TESTING/LIN/dlattr.f b/TESTING/LIN/dlattr.f index 03f9bfae4c..3cb74bbcca 100644 --- a/TESTING/LIN/dlattr.f +++ b/TESTING/LIN/dlattr.f @@ -193,7 +193,7 @@ SUBROUTINE DLATTR( IMAT, UPLO, TRANS, DIAG, ISEED, N, A, LDA, B, IF( N.LE.0 ) $ RETURN * -* Call DLATB4 to set parameters for SLATMS. +* Call DLATB4 to set parameters for DLATMS. * UPPER = LSAME( UPLO, 'U' ) IF( UPPER ) THEN diff --git a/TESTING/LIN/slatb4.f b/TESTING/LIN/slatb4.f index 94d29db403..a1df964272 100644 --- a/TESTING/LIN/slatb4.f +++ b/TESTING/LIN/slatb4.f @@ -518,17 +518,18 @@ SUBROUTINE SLATB4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, * * Set the norm and condition number. * - IF( IMAT.EQ.2 .OR. IMAT.EQ.8 ) THEN + MAT = ABS( IMAT ) + IF( MAT.EQ.2 .OR. MAT.EQ.8 ) THEN CNDNUM = BADC1 - ELSE IF( IMAT.EQ.3 .OR. IMAT.EQ.9 ) THEN + ELSE IF( MAT.EQ.3 .OR. MAT.EQ.9 ) THEN CNDNUM = BADC2 ELSE CNDNUM = TWO END IF * - IF( IMAT.EQ.4 ) THEN + IF( MAT.EQ.4 ) THEN ANORM = SMALL - ELSE IF( IMAT.EQ.5 ) THEN + ELSE IF( MAT.EQ.5 ) THEN ANORM = LARGE ELSE ANORM = ONE diff --git a/TESTING/LIN/zlatb4.f b/TESTING/LIN/zlatb4.f index a6977f4e9c..6973dc0c85 100644 --- a/TESTING/LIN/zlatb4.f +++ b/TESTING/LIN/zlatb4.f @@ -517,17 +517,18 @@ SUBROUTINE ZLATB4( PATH, IMAT, M, N, TYPE, KL, KU, ANORM, MODE, * * Set the norm and condition number. * - IF( IMAT.EQ.2 .OR. IMAT.EQ.8 ) THEN + MAT = ABS( IMAT ) + IF( MAT.EQ.2 .OR. MAT.EQ.8 ) THEN CNDNUM = BADC1 - ELSE IF( IMAT.EQ.3 .OR. IMAT.EQ.9 ) THEN + ELSE IF( MAT.EQ.3 .OR. MAT.EQ.9 ) THEN CNDNUM = BADC2 ELSE CNDNUM = TWO END IF * - IF( IMAT.EQ.4 ) THEN + IF( MAT.EQ.4 ) THEN ANORM = SMALL - ELSE IF( IMAT.EQ.5 ) THEN + ELSE IF( MAT.EQ.5 ) THEN ANORM = LARGE ELSE ANORM = ONE diff --git a/TESTING/LIN/zlattb.f b/TESTING/LIN/zlattb.f index 62b4bfa981..288a428531 100644 --- a/TESTING/LIN/zlattb.f +++ b/TESTING/LIN/zlattb.f @@ -204,7 +204,7 @@ SUBROUTINE ZLATTB( IMAT, UPLO, TRANS, DIAG, ISEED, N, KD, AB, IF( N.LE.0 ) $ RETURN * -* Call ZLATB4 to set parameters for CLATMS. +* Call ZLATB4 to set parameters for ZLATMS. * UPPER = LSAME( UPLO, 'U' ) IF( UPPER ) THEN diff --git a/TESTING/LIN/zlattr.f b/TESTING/LIN/zlattr.f index 0b3857f02c..884eb02758 100644 --- a/TESTING/LIN/zlattr.f +++ b/TESTING/LIN/zlattr.f @@ -201,7 +201,7 @@ SUBROUTINE ZLATTR( IMAT, UPLO, TRANS, DIAG, ISEED, N, A, LDA, B, IF( N.LE.0 ) $ RETURN * -* Call ZLATB4 to set parameters for CLATMS. +* Call ZLATB4 to set parameters for ZLATMS. * UPPER = LSAME( UPLO, 'U' ) IF( UPPER ) THEN