From 1c26d436cb3600ae8d34a954d5aa153906747261 Mon Sep 17 00:00:00 2001 From: Kyungmin Lee Date: Tue, 28 Apr 2026 20:39:23 -0700 Subject: [PATCH] fix missing II update in NPROW=1 branch of p?lanhs In the NPROW=1 path of PCLANHS/PDLANHS/PSLANHS/PZLANHS, II was not incremented by JB after processing the first (alignment) block of columns. As a result, the row bound MIN(II+LL-JJ+1, IIA+NP-1) used inside the subsequent column-block loop tracked the Hessenberg diagonal at the wrong row, causing upper-triangle entries past the first block to be skipped and the computed norm to be incorrect. Add II = II + JB after the first-block END IF in each of the four norm branches (M, 1, I, F), matching the equivalent update already present in the NPROW>1 branch. --- SRC/pclanhs.f | 4 ++++ SRC/pdlanhs.f | 4 ++++ SRC/pslanhs.f | 4 ++++ SRC/pzlanhs.f | 4 ++++ 4 files changed, 16 insertions(+) diff --git a/SRC/pclanhs.f b/SRC/pclanhs.f index 7891c126..eb2cda86 100644 --- a/SRC/pclanhs.f +++ b/SRC/pclanhs.f @@ -222,6 +222,7 @@ REAL FUNCTION PCLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -344,6 +345,7 @@ REAL FUNCTION PCLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -492,6 +494,7 @@ REAL FUNCTION PCLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -631,6 +634,7 @@ REAL FUNCTION PCLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns diff --git a/SRC/pdlanhs.f b/SRC/pdlanhs.f index 94dff98c..889cf8ef 100644 --- a/SRC/pdlanhs.f +++ b/SRC/pdlanhs.f @@ -221,6 +221,7 @@ DOUBLE PRECISION FUNCTION PDLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -343,6 +344,7 @@ DOUBLE PRECISION FUNCTION PDLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -491,6 +493,7 @@ DOUBLE PRECISION FUNCTION PDLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -630,6 +633,7 @@ DOUBLE PRECISION FUNCTION PDLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns diff --git a/SRC/pslanhs.f b/SRC/pslanhs.f index bb9869a0..dab307f0 100644 --- a/SRC/pslanhs.f +++ b/SRC/pslanhs.f @@ -221,6 +221,7 @@ REAL FUNCTION PSLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -343,6 +344,7 @@ REAL FUNCTION PSLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -491,6 +493,7 @@ REAL FUNCTION PSLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -630,6 +633,7 @@ REAL FUNCTION PSLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns diff --git a/SRC/pzlanhs.f b/SRC/pzlanhs.f index 7b097da0..6aea09c1 100644 --- a/SRC/pzlanhs.f +++ b/SRC/pzlanhs.f @@ -222,6 +222,7 @@ DOUBLE PRECISION FUNCTION PZLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -344,6 +345,7 @@ DOUBLE PRECISION FUNCTION PZLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -492,6 +494,7 @@ DOUBLE PRECISION FUNCTION PZLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns @@ -631,6 +634,7 @@ DOUBLE PRECISION FUNCTION PZLANHS( NORM, N, A, IA, JA, DESCA, JJ = JJ + JB END IF * + II = II + JB IACOL = MOD( IACOL+1, NPCOL ) * * Loop over remaining block of columns