From 989ffdd779258dddc8cb2090091147c7cf41dcf6 Mon Sep 17 00:00:00 2001 From: NAKATA Maho Date: Tue, 24 Mar 2026 13:22:39 +0900 Subject: [PATCH] Fix LDSWORK being overwritten during workspace query in xTRSYL3 Remove the erroneous "LDSWORK = 2" assignment inside the LQUERY branch of STRSYL3, DTRSYL3, CTRSYL3, and ZTRSYL3. The assignment overwrites the caller's input argument, which is declared as intent(in) in the documentation. The assignment was unnecessary because SWORK(1,1) and SWORK(2,1) access column 1 only, making the leading dimension irrelevant for these stores (offset = (i-1) + (j-1)*LDSWORK, j=1). --- SRC/ctrsyl3.f | 1 - SRC/dtrsyl3.f | 1 - SRC/strsyl3.f | 1 - SRC/ztrsyl3.f | 1 - 4 files changed, 4 deletions(-) diff --git a/SRC/ctrsyl3.f b/SRC/ctrsyl3.f index 5bf90f242..0538a36e4 100644 --- a/SRC/ctrsyl3.f +++ b/SRC/ctrsyl3.f @@ -229,7 +229,6 @@ INFO = 0 LQUERY = ( LDSWORK.EQ.-1 ) IF( LQUERY ) THEN - LDSWORK = 2 SWORK(1,1) = REAL( MAX( NBA, NBB ) ) SWORK(2,1) = REAL( 2 * NBB + NBA ) END IF diff --git a/SRC/dtrsyl3.f b/SRC/dtrsyl3.f index 79fcf4a01..f0805e584 100644 --- a/SRC/dtrsyl3.f +++ b/SRC/dtrsyl3.f @@ -260,7 +260,6 @@ LQUERY = ( LIWORK.EQ.-1 .OR. LDSWORK.EQ.-1 ) IWORK( 1 ) = NBA + NBB + 2 IF( LQUERY ) THEN - LDSWORK = 2 SWORK( 1, 1 ) = MAX( NBA, NBB ) SWORK( 2, 1 ) = 2 * NBB + NBA END IF diff --git a/SRC/strsyl3.f b/SRC/strsyl3.f index 5f1d70dbb..4189adb78 100644 --- a/SRC/strsyl3.f +++ b/SRC/strsyl3.f @@ -259,7 +259,6 @@ LQUERY = ( LIWORK.EQ.-1 .OR. LDSWORK.EQ.-1 ) IWORK( 1 ) = NBA + NBB + 2 IF( LQUERY ) THEN - LDSWORK = 2 SWORK( 1, 1 ) = REAL( MAX( NBA, NBB ) ) SWORK( 2, 1 ) = REAL( 2 * NBB + NBA ) END IF diff --git a/SRC/ztrsyl3.f b/SRC/ztrsyl3.f index 0a2fc99dc..648e4d1d6 100644 --- a/SRC/ztrsyl3.f +++ b/SRC/ztrsyl3.f @@ -230,7 +230,6 @@ INFO = 0 LQUERY = ( LDSWORK.EQ.-1 ) IF( LQUERY ) THEN - LDSWORK = 2 SWORK(1,1) = MAX( NBA, NBB ) SWORK(2,1) = 2 * NBB + NBA END IF