11* > \brief \b STRSYL3
22*
3- * Definition:
4- * ===========
5- *
6- *
7- * > \par Purpose
3+ * Definition:
4+ * ===========
5+ *
6+ * SUBROUTINE STRSYL3( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB,
7+ * C, LDC, SCALE, IWORK, LIWORK, SWORK,
8+ * LDSWORK, INFO )
9+ *
10+ * .. Scalar Arguments ..
11+ * CHARACTER TRANA, TRANB
12+ * INTEGER INFO, ISGN, LDA, LDB, LDC, M, N,
13+ * LIWORK, LDSWORK
14+ * REAL SCALE
15+ * ..
16+ * .. Array Arguments ..
17+ * INTEGER IWORK( * )
18+ * REAL A( LDA, * ), B( LDB, * ), C( LDC, * ),
19+ * SWORK( LDSWORK, * )
20+ * ..
21+ *
22+ *
23+ * > \par Purpose:
824* =============
925* >
1026* > \verbatim
2743* > This is the block version of the algorithm.
2844* > \endverbatim
2945*
30- * Arguments
31- * =========
46+ * Arguments:
47+ * ==========
3248*
3349* > \param[in] TRANA
3450* > \verbatim
161177* > A and B are unchanged).
162178* > \endverbatim
163179*
180+ * > \ingroup trsyl3
181+ *
164182* =====================================================================
165183* References:
166184* E. S. Quintana-Orti and R. A. Van De Geijn (2003). Formal derivation of
175193* Angelika Schwarz, Umea University, Sweden.
176194*
177195* =====================================================================
178- SUBROUTINE STRSYL3 ( TRANA , TRANB , ISGN , M , N , A , LDA , B , LDB , C ,
179- $ LDC , SCALE , IWORK , LIWORK , SWORK , LDSWORK ,
180- $ INFO )
196+ SUBROUTINE STRSYL3 ( TRANA , TRANB , ISGN , M , N , A , LDA , B , LDB ,
197+ $ C , LDC , SCALE , IWORK , LIWORK , SWORK ,
198+ $ LDSWORK , INFO )
181199 IMPLICIT NONE
182200*
183201* .. Scalar Arguments ..
@@ -209,10 +227,12 @@ SUBROUTINE STRSYL3( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
209227 LOGICAL LSAME
210228 INTEGER ILAENV
211229 REAL SLANGE, SLAMCH, SLARMM
212- EXTERNAL SLANGE, SLAMCH, SLARMM, ILAENV, LSAME
230+ EXTERNAL SLANGE, SLAMCH, SLARMM, ILAENV,
231+ $ LSAME
213232* ..
214233* .. External Subroutines ..
215- EXTERNAL SGEMM, SLASCL, SSCAL, STRSYL, XERBLA
234+ EXTERNAL SGEMM, SLASCL, SSCAL, STRSYL,
235+ $ XERBLA
216236* ..
217237* .. Intrinsic Functions ..
218238 INTRINSIC ABS, EXPONENT, MAX, MIN, REAL
@@ -239,9 +259,8 @@ SUBROUTINE STRSYL3( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
239259 LQUERY = ( LIWORK.EQ. - 1 .OR. LDSWORK.EQ. - 1 )
240260 IWORK( 1 ) = NBA + NBB + 2
241261 IF ( LQUERY ) THEN
242- LDSWORK = 2
243- SWORK( 1 , 1 ) = MAX ( NBA, NBB )
244- SWORK( 2 , 1 ) = 2 * NBB + NBA
262+ SWORK( 1 , 1 ) = REAL ( MAX ( NBA, NBB ) )
263+ SWORK( 2 , 1 ) = REAL ( 2 * NBB + NBA )
245264 END IF
246265*
247266* Test the input arguments
@@ -1171,8 +1190,8 @@ SUBROUTINE STRSYL3( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
11711190* form (1/SCALE)*X if SCALE is REAL. Set SCALE to zero and give up.
11721191*
11731192 IWORK(1 ) = NBA + NBB + 2
1174- SWORK(1 ,1 ) = MAX ( NBA, NBB )
1175- SWORK(2 ,1 ) = 2 * NBB + NBA
1193+ SWORK(1 ,1 ) = REAL ( MAX ( NBA, NBB ) )
1194+ SWORK(2 ,1 ) = REAL ( 2 * NBB + NBA )
11761195 RETURN
11771196 END IF
11781197*
@@ -1223,7 +1242,8 @@ SUBROUTINE STRSYL3( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
12231242*
12241243 SCALOC = MIN ( BIGNUM / SCAL, ONE / BUF )
12251244 BUF = BUF * SCALOC
1226- CALL SLASCL( ' G' , - 1 , - 1 , ONE, SCALOC, M, N, C, LDC, IWORK(1 ) )
1245+ CALL SLASCL( ' G' , - 1 , - 1 , ONE, SCALOC, M, N, C, LDC,
1246+ $ IWORK(1 ) )
12271247 END IF
12281248*
12291249* Combine with buffer scaling factor. SCALE will be flushed if
@@ -1234,8 +1254,8 @@ SUBROUTINE STRSYL3( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C,
12341254* Restore workspace dimensions
12351255*
12361256 IWORK(1 ) = NBA + NBB + 2
1237- SWORK(1 ,1 ) = MAX ( NBA, NBB )
1238- SWORK(2 ,1 ) = 2 * NBB + NBA
1257+ SWORK(1 ,1 ) = REAL ( MAX ( NBA, NBB ) )
1258+ SWORK(2 ,1 ) = REAL ( 2 * NBB + NBA )
12391259*
12401260 RETURN
12411261*
0 commit comments