Apply ROUNDUP_LWORK (Reference-LAPACK PR 904)

This commit is contained in:
Martin Kroeker 2023-11-12 14:42:52 +01:00 committed by GitHub
parent f5664740cd
commit 2ce67e2ada
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 414 additions and 357 deletions

View File

@ -119,7 +119,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unghr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE SORGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
@ -150,7 +150,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, MIN INTRINSIC MAX, MIN
@ -177,7 +178,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
NB = ILAENV( 1, 'SORGQR', ' ', NH, NH, NH, -1 ) NB = ILAENV( 1, 'SORGQR', ' ', NH, NH, NH, -1 )
LWKOPT = MAX( 1, NH )*NB LWKOPT = MAX( 1, NH )*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -229,7 +230,7 @@
CALL SORGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ), CALL SORGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ),
$ WORK, LWORK, IINFO ) $ WORK, LWORK, IINFO )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORGHR * End of SORGHR

View File

@ -120,7 +120,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unglq
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE SORGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
@ -155,7 +155,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -164,7 +165,7 @@
INFO = 0 INFO = 0
NB = ILAENV( 1, 'SORGLQ', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'SORGLQ', ' ', M, N, K, -1 )
LWKOPT = MAX( 1, M )*NB LWKOPT = MAX( 1, M )*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
LQUERY = ( LWORK.EQ.-1 ) LQUERY = ( LWORK.EQ.-1 )
IF( M.LT.0 ) THEN IF( M.LT.0 ) THEN
INFO = -1 INFO = -1
@ -278,7 +279,7 @@
50 CONTINUE 50 CONTINUE
END IF END IF
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of SORGLQ * End of SORGLQ

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup ungql
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE SORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
@ -156,7 +156,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -181,7 +182,7 @@
NB = ILAENV( 1, 'SORGQL', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'SORGQL', ' ', M, N, K, -1 )
LWKOPT = N*NB LWKOPT = N*NB
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
INFO = -8 INFO = -8
@ -285,7 +286,7 @@
50 CONTINUE 50 CONTINUE
END IF END IF
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of SORGQL * End of SORGQL

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup ungqr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE SORGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
@ -156,7 +156,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -165,7 +166,7 @@
INFO = 0 INFO = 0
NB = ILAENV( 1, 'SORGQR', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'SORGQR', ' ', M, N, K, -1 )
LWKOPT = MAX( 1, N )*NB LWKOPT = MAX( 1, N )*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
LQUERY = ( LWORK.EQ.-1 ) LQUERY = ( LWORK.EQ.-1 )
IF( M.LT.0 ) THEN IF( M.LT.0 ) THEN
INFO = -1 INFO = -1
@ -279,7 +280,7 @@
50 CONTINUE 50 CONTINUE
END IF END IF
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of SORGQR * End of SORGQR

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup ungrq
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORGRQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE SORGRQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
@ -156,7 +156,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -181,7 +182,7 @@
NB = ILAENV( 1, 'SORGRQ', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'SORGRQ', ' ', M, N, K, -1 )
LWKOPT = M*NB LWKOPT = M*NB
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MAX( 1, M ) .AND. .NOT.LQUERY ) THEN
INFO = -8 INFO = -8
@ -285,7 +286,7 @@
50 CONTINUE 50 CONTINUE
END IF END IF
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of SORGRQ * End of SORGRQ

View File

@ -116,7 +116,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup ungtr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE SORGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
@ -146,7 +146,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SORGQL, SORGQR, XERBLA EXTERNAL SORGQL, SORGQR, XERBLA
@ -178,7 +179,7 @@
NB = ILAENV( 1, 'SORGQR', ' ', N-1, N-1, N-1, -1 ) NB = ILAENV( 1, 'SORGQR', ' ', N-1, N-1, N-1, -1 )
END IF END IF
LWKOPT = MAX( 1, N-1 )*NB LWKOPT = MAX( 1, N-1 )*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -244,7 +245,7 @@
$ LWORK, IINFO ) $ LWORK, IINFO )
END IF END IF
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORGTR * End of SORGTR

View File

@ -157,7 +157,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup singleOTHERcomputational *> \ingroup ungtsqr
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -196,11 +196,15 @@
LOGICAL LQUERY LOGICAL LQUERY
INTEGER IINFO, LDC, LWORKOPT, LC, LW, NBLOCAL, J INTEGER IINFO, LDC, LWORKOPT, LC, LW, NBLOCAL, J
* .. * ..
* .. External Functions ..
REAL SROUNDUP_LWORK
EXTERNAL SROUNDUP_LWORK
* ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SLAMTSQR, SLASET, XERBLA EXTERNAL SCOPY, SLAMTSQR, SLASET, XERBLA
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, MAX, MIN INTRINSIC MAX, MIN
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -257,14 +261,14 @@
CALL XERBLA( 'SORGTSQR', -INFO ) CALL XERBLA( 'SORGTSQR', -INFO )
RETURN RETURN
ELSE IF ( LQUERY ) THEN ELSE IF ( LQUERY ) THEN
WORK( 1 ) = REAL( LWORKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
RETURN RETURN
END IF END IF
* *
* Quick return if possible * Quick return if possible
* *
IF( MIN( M, N ).EQ.0 ) THEN IF( MIN( M, N ).EQ.0 ) THEN
WORK( 1 ) = REAL( LWORKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
RETURN RETURN
END IF END IF
* *
@ -297,7 +301,7 @@
CALL SCOPY( M, WORK( (J-1)*LDC + 1 ), 1, A( 1, J ), 1 ) CALL SCOPY( M, WORK( (J-1)*LDC + 1 ), 1, A( 1, J ), 1 )
END DO END DO
* *
WORK( 1 ) = REAL( LWORKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
RETURN RETURN
* *
* End of SORGTSQR * End of SORGTSQR

View File

@ -169,7 +169,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup sigleOTHERcomputational *> \ingroup ungtsqr_row
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -213,11 +213,15 @@
* .. Local Arrays .. * .. Local Arrays ..
REAL DUMMY( 1, 1 ) REAL DUMMY( 1, 1 )
* .. * ..
* .. External Functions ..
REAL SROUNDUP_LWORK
EXTERNAL SROUNDUP_LWORK
* ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLARFB_GETT, SLASET, XERBLA EXTERNAL SLARFB_GETT, SLASET, XERBLA
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, MAX, MIN INTRINSIC MAX, MIN
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -255,14 +259,14 @@
CALL XERBLA( 'SORGTSQR_ROW', -INFO ) CALL XERBLA( 'SORGTSQR_ROW', -INFO )
RETURN RETURN
ELSE IF ( LQUERY ) THEN ELSE IF ( LQUERY ) THEN
WORK( 1 ) = REAL( LWORKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
RETURN RETURN
END IF END IF
* *
* Quick return if possible * Quick return if possible
* *
IF( MIN( M, N ).EQ.0 ) THEN IF( MIN( M, N ).EQ.0 ) THEN
WORK( 1 ) = REAL( LWORKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
RETURN RETURN
END IF END IF
* *
@ -371,7 +375,7 @@
* *
END DO END DO
* *
WORK( 1 ) = REAL( LWORKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWORKOPT )
RETURN RETURN
* *
* End of SORGTSQR_ROW * End of SORGTSQR_ROW

View File

@ -155,7 +155,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unm22
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORM22( SIDE, TRANS, M, N, N1, N2, Q, LDQ, C, LDC, SUBROUTINE SORM22( SIDE, TRANS, M, N, N1, N2, Q, LDQ, C, LDC,
@ -187,13 +187,14 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMM, SLACPY, STRMM, XERBLA EXTERNAL SGEMM, SLACPY, STRMM, XERBLA
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, MAX, MIN INTRINSIC MAX, MIN
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -237,7 +238,7 @@
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
LWKOPT = M*N LWKOPT = M*N
WORK( 1 ) = REAL( LWKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -430,7 +431,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = REAL( LWKOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWKOPT )
RETURN RETURN
* *
* End of SORM22 * End of SORM22

View File

@ -188,7 +188,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmbr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, SUBROUTINE SORMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
@ -217,7 +217,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SORMLQ, SORMQR, XERBLA EXTERNAL SORMLQ, SORMQR, XERBLA
@ -285,7 +286,7 @@
END IF END IF
END IF END IF
LWKOPT = NW*NB LWKOPT = NW*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -363,7 +364,7 @@
$ TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO ) $ TAU, C( I1, I2 ), LDC, WORK, LWORK, IINFO )
END IF END IF
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMBR * End of SORMBR

View File

@ -171,7 +171,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmhr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C, SUBROUTINE SORMHR( SIDE, TRANS, M, N, ILO, IHI, A, LDA, TAU, C,
@ -199,7 +199,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SORMQR, XERBLA EXTERNAL SORMQR, XERBLA
@ -253,7 +254,7 @@
NB = ILAENV( 1, 'SORMQR', SIDE // TRANS, M, NH, NH, -1 ) NB = ILAENV( 1, 'SORMQR', SIDE // TRANS, M, NH, NH, -1 )
END IF END IF
LWKOPT = NW*NB LWKOPT = NW*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -285,7 +286,7 @@
CALL SORMQR( SIDE, TRANS, MI, NI, NH, A( ILO+1, ILO ), LDA, CALL SORMQR( SIDE, TRANS, MI, NI, NH, A( ILO+1, ILO ), LDA,
$ TAU( ILO ), C( I1, I2 ), LDC, WORK, LWORK, IINFO ) $ TAU( ILO ), C( I1, I2 ), LDC, WORK, LWORK, IINFO )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMHR * End of SORMHR

View File

@ -160,7 +160,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmlq
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, SUBROUTINE SORMLQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
@ -195,7 +195,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLARFB, SLARFT, SORML2, XERBLA EXTERNAL SLARFB, SLARFT, SORML2, XERBLA
@ -246,7 +247,7 @@
NB = MIN( NBMAX, ILAENV( 1, 'SORMLQ', SIDE // TRANS, M, N, K, NB = MIN( NBMAX, ILAENV( 1, 'SORMLQ', SIDE // TRANS, M, N, K,
$ -1 ) ) $ -1 ) )
LWKOPT = NW*NB + TSIZE LWKOPT = NW*NB + TSIZE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -338,7 +339,7 @@
$ C( IC, JC ), LDC, WORK, LDWORK ) $ C( IC, JC ), LDC, WORK, LDWORK )
10 CONTINUE 10 CONTINUE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMLQ * End of SORMLQ

View File

@ -160,7 +160,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmql
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, SUBROUTINE SORMQL( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
@ -194,7 +194,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLARFB, SLARFT, SORM2L, XERBLA EXTERNAL SLARFB, SLARFT, SORM2L, XERBLA
@ -249,7 +250,7 @@
$ K, -1 ) ) $ K, -1 ) )
LWKOPT = NW*NB + TSIZE LWKOPT = NW*NB + TSIZE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -330,7 +331,7 @@
$ WORK, LDWORK ) $ WORK, LDWORK )
10 CONTINUE 10 CONTINUE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMQL * End of SORMQL

View File

@ -160,7 +160,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmqr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, SUBROUTINE SORMQR( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
@ -194,7 +194,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLARFB, SLARFT, SORM2R, XERBLA EXTERNAL SLARFB, SLARFT, SORM2R, XERBLA
@ -245,7 +246,7 @@
NB = MIN( NBMAX, ILAENV( 1, 'SORMQR', SIDE // TRANS, M, N, K, NB = MIN( NBMAX, ILAENV( 1, 'SORMQR', SIDE // TRANS, M, N, K,
$ -1 ) ) $ -1 ) )
LWKOPT = NW*NB + TSIZE LWKOPT = NW*NB + TSIZE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -331,7 +332,7 @@
$ C( IC, JC ), LDC, WORK, LDWORK ) $ C( IC, JC ), LDC, WORK, LDWORK )
10 CONTINUE 10 CONTINUE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMQR * End of SORMQR

View File

@ -160,7 +160,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmrq
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC, SUBROUTINE SORMRQ( SIDE, TRANS, M, N, K, A, LDA, TAU, C, LDC,
@ -195,7 +195,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLARFB, SLARFT, SORMR2, XERBLA EXTERNAL SLARFB, SLARFT, SORMR2, XERBLA
@ -250,7 +251,7 @@
$ K, -1 ) ) $ K, -1 ) )
LWKOPT = NW*NB + TSIZE LWKOPT = NW*NB + TSIZE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -337,7 +338,7 @@
$ WORK, LDWORK ) $ WORK, LDWORK )
10 CONTINUE 10 CONTINUE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMRQ * End of SORMRQ

View File

@ -168,7 +168,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmrz
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -213,7 +213,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLARZB, SLARZT, SORMR3, XERBLA EXTERNAL SLARZB, SLARZT, SORMR3, XERBLA
@ -271,7 +272,7 @@
$ K, -1 ) ) $ K, -1 ) )
LWKOPT = NW*NB + TSIZE LWKOPT = NW*NB + TSIZE
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -367,7 +368,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -164,7 +164,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup unmtr
* *
* ===================================================================== * =====================================================================
SUBROUTINE SORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, SUBROUTINE SORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC,
@ -192,7 +192,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SORMQL, SORMQR, XERBLA EXTERNAL SORMQL, SORMQR, XERBLA
@ -256,7 +257,7 @@
END IF END IF
END IF END IF
LWKOPT = NW*NB LWKOPT = NW*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -301,7 +302,7 @@
CALL SORMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU, CALL SORMQR( SIDE, TRANS, MI, NI, NQ-1, A( 2, 1 ), LDA, TAU,
$ C( I1, I2 ), LDC, WORK, LWORK, IINFO ) $ C( I1, I2 ), LDC, WORK, LWORK, IINFO )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SORMTR * End of SORMTR

View File

@ -131,7 +131,7 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The length of the array WORK. LWORK >= 1, when N <= 1; *> The length of the array WORK. LWORK >= 1, when N <= 1;
*> otherwise *> otherwise
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, dimension) where *> LWORK = MAX(1, dimension) where
*> dimension = (2KD+1)*N + KD*NTHREADS + N *> dimension = (2KD+1)*N + KD*NTHREADS + N
@ -164,7 +164,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hbev_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -182,7 +182,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -190,11 +190,11 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
@ -232,12 +232,13 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, SLANSB REAL SLAMCH, SLANSB, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASCL, SSCAL, SSTEQR, SSTERF, XERBLA, EXTERNAL SLASCL, SSCAL, SSTEQR, SSTERF, XERBLA,
$ SSYTRD_SB2ST $ SSYTRD_SB2ST
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC SQRT INTRINSIC SQRT
@ -268,7 +269,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
IF( N.LE.1 ) THEN IF( N.LE.1 ) THEN
LWMIN = 1 LWMIN = 1
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
ELSE ELSE
IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ, IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ,
$ N, KD, -1, -1 ) $ N, KD, -1, -1 )
@ -277,7 +278,7 @@
LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ, LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ,
$ N, KD, IB, -1 ) $ N, KD, IB, -1 )
LWMIN = N + LHTRD + LWTRD LWMIN = N + LHTRD + LWTRD
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
ENDIF ENDIF
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY )
@ -343,7 +344,7 @@
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W, CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W,
$ WORK( INDE ), WORK( INDHOUS ), LHTRD, $ WORK( INDE ), WORK( INDHOUS ), LHTRD,
$ WORK( INDWRK ), LLWORK, IINFO ) $ WORK( INDWRK ), LLWORK, IINFO )
* *
* For eigenvalues only, call SSTERF. For eigenvectors, call SSTEQR. * For eigenvalues only, call SSTERF. For eigenvectors, call SSTEQR.
@ -368,7 +369,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -179,7 +179,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hbevd
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, SUBROUTINE SSBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK,
@ -213,8 +213,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLAMCH, SLANSB REAL SLAMCH, SLANSB, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSB EXTERNAL LSAME, SLAMCH, SLANSB, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMM, SLACPY, SLASCL, SSBTRD, SSCAL, SSTEDC, EXTERNAL SGEMM, SLACPY, SLASCL, SSBTRD, SSCAL, SSTEDC,
@ -259,7 +259,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -342,7 +342,7 @@
IF( ISCALE.EQ.1 ) IF( ISCALE.EQ.1 )
$ CALL SSCAL( N, ONE / SIGMA, W, 1 ) $ CALL SSCAL( N, ONE / SIGMA, W, 1 )
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN
* *

View File

@ -134,7 +134,7 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The length of the array WORK. LWORK >= 1, when N <= 1; *> The length of the array WORK. LWORK >= 1, when N <= 1;
*> otherwise *> otherwise
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, dimension) where *> LWORK = MAX(1, dimension) where
*> dimension = (2KD+1)*N + KD*NTHREADS + N *> dimension = (2KD+1)*N + KD*NTHREADS + N
@ -188,7 +188,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hbevd_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -206,7 +206,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -214,11 +214,11 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
@ -258,8 +258,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, SLANSB REAL SLAMCH, SLANSB, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMM, SLACPY, SLASCL, SSCAL, SSTEDC, EXTERNAL SGEMM, SLACPY, SLASCL, SSCAL, SSTEDC,
@ -307,7 +308,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -374,7 +375,7 @@
LLWRK2 = LWORK - INDWK2 + 1 LLWRK2 = LWORK - INDWK2 + 1
* *
CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W, CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W,
$ WORK( INDE ), WORK( INDHOUS ), LHTRD, $ WORK( INDE ), WORK( INDHOUS ), LHTRD,
$ WORK( INDWRK ), LLWORK, IINFO ) $ WORK( INDWRK ), LLWORK, IINFO )
* *
* For eigenvalues only, call SSTERF. For eigenvectors, call SSTEDC. * For eigenvalues only, call SSTERF. For eigenvectors, call SSTEDC.
@ -394,7 +395,7 @@
IF( ISCALE.EQ.1 ) IF( ISCALE.EQ.1 )
$ CALL SSCAL( N, ONE / SIGMA, W, 1 ) $ CALL SSCAL( N, ONE / SIGMA, W, 1 )
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN
* *

View File

@ -235,7 +235,7 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The length of the array WORK. LWORK >= 1, when N <= 1; *> The length of the array WORK. LWORK >= 1, when N <= 1;
*> otherwise *> otherwise
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, 7*N, dimension) where *> LWORK = MAX(1, 7*N, dimension) where
*> dimension = (2KD+1)*N + KD*NTHREADS + 2*N *> dimension = (2KD+1)*N + KD*NTHREADS + 2*N
@ -281,7 +281,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hbevx_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -299,7 +299,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -307,11 +307,11 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
@ -357,8 +357,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, SLANSB REAL SLAMCH, SLANSB, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SGEMV, SLACPY, SLASCL, SSCAL, EXTERNAL SCOPY, SGEMV, SLACPY, SLASCL, SSCAL,
@ -414,7 +415,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
IF( N.LE.1 ) THEN IF( N.LE.1 ) THEN
LWMIN = 1 LWMIN = 1
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
ELSE ELSE
IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ, IB = ILAENV2STAGE( 2, 'SSYTRD_SB2ST', JOBZ,
$ N, KD, -1, -1 ) $ N, KD, -1, -1 )
@ -423,7 +424,7 @@
LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ, LWTRD = ILAENV2STAGE( 4, 'SSYTRD_SB2ST', JOBZ,
$ N, KD, IB, -1 ) $ N, KD, IB, -1 )
LWMIN = 2*N + LHTRD + LWTRD LWMIN = 2*N + LHTRD + LWTRD
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
ENDIF ENDIF
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY )
@ -513,7 +514,7 @@
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, WORK( INDD ), CALL SSYTRD_SB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, WORK( INDD ),
$ WORK( INDE ), WORK( INDHOUS ), LHTRD, $ WORK( INDE ), WORK( INDHOUS ), LHTRD,
$ WORK( INDWRK ), LLWORK, IINFO ) $ WORK( INDWRK ), LLWORK, IINFO )
* *
* If all eigenvalues are desired and ABSTOL is less than or equal * If all eigenvalues are desired and ABSTOL is less than or equal
@ -624,7 +625,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -208,7 +208,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hbgvd
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -247,7 +247,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMM, SLACPY, SPBSTF, SSBGST, SSBTRD, SSTEDC, EXTERNAL SGEMM, SLACPY, SPBSTF, SSBGST, SSBTRD, SSTEDC,
@ -292,7 +293,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -353,7 +354,7 @@
CALL SLACPY( 'A', N, N, WORK( INDWK2 ), N, Z, LDZ ) CALL SLACPY( 'A', N, N, WORK( INDWK2 ), N, Z, LDZ )
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -164,7 +164,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hpevd
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, SUBROUTINE SSPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK,
@ -198,8 +198,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLAMCH, SLANSP REAL SLAMCH, SLANSP, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSP EXTERNAL LSAME, SLAMCH, SLANSP, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SOPMTR, SSCAL, SSPTRD, SSTEDC, SSTERF, XERBLA EXTERNAL SOPMTR, SSCAL, SSPTRD, SSTEDC, SSTERF, XERBLA
@ -240,7 +240,7 @@
END IF END IF
END IF END IF
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
INFO = -9 INFO = -9
@ -319,7 +319,7 @@
IF( ISCALE.EQ.1 ) IF( ISCALE.EQ.1 )
$ CALL SSCAL( N, ONE / SIGMA, W, 1 ) $ CALL SSCAL( N, ONE / SIGMA, W, 1 )
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN
* *

View File

@ -191,7 +191,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup hpgvd
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -225,7 +225,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SPPTRF, SSPEVD, SSPGST, STPMV, STPSV, XERBLA EXTERNAL SPPTRF, SSPEVD, SSPGST, STPMV, STPSV, XERBLA
@ -267,7 +268,7 @@
LWMIN = 2*N LWMIN = 2*N
END IF END IF
END IF END IF
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
INFO = -11 INFO = -11
@ -345,7 +346,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -167,7 +167,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup auxOTHERcomputational *> \ingroup stedc
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -208,8 +208,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANST REAL SLAMCH, SLANST, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SLAMCH, SLANST EXTERNAL ILAENV, LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMM, SLACPY, SLAED0, SLASCL, SLASET, SLASRT, EXTERNAL SGEMM, SLACPY, SLAED0, SLASCL, SLASET, SLASRT,
@ -268,7 +268,7 @@
LIWMIN = 3 + 5*N LIWMIN = 3 + 5*N
END IF END IF
END IF END IF
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT. LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT. LQUERY ) THEN
@ -463,7 +463,7 @@
END IF END IF
* *
50 CONTINUE 50 CONTINUE
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -359,8 +359,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLAMCH, SLANST REAL SLAMCH, SLANST, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANST EXTERNAL LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SLAE2, SLAEV2, SLARRC, SLARRE, SLARRJ, EXTERNAL SCOPY, SLAE2, SLAEV2, SLARRC, SLARRE, SLARRJ,
@ -443,7 +443,7 @@
RMAX = MIN( SQRT( BIGNUM ), ONE / SQRT( SQRT( SAFMIN ) ) ) RMAX = MIN( SQRT( BIGNUM ), ONE / SQRT( SQRT( SAFMIN ) ) )
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( WANTZ .AND. ALLEIG ) THEN IF( WANTZ .AND. ALLEIG ) THEN
@ -782,7 +782,7 @@
ENDIF ENDIF
* *
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN
* *

View File

@ -149,7 +149,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup stevd
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSTEVD( JOBZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK, SUBROUTINE SSTEVD( JOBZ, N, D, E, Z, LDZ, WORK, LWORK, IWORK,
@ -182,8 +182,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLAMCH, SLANST REAL SLAMCH, SLANST, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANST EXTERNAL LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SSCAL, SSTEDC, SSTERF, XERBLA EXTERNAL SSCAL, SSTEDC, SSTERF, XERBLA
@ -215,7 +215,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -283,7 +283,7 @@
IF( ISCALE.EQ.1 ) IF( ISCALE.EQ.1 )
$ CALL SSCAL( N, ONE / SIGMA, D, 1 ) $ CALL SSCAL( N, ONE / SIGMA, D, 1 )
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -287,7 +287,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHEReigen *> \ingroup stevr
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -336,8 +336,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANST REAL SLAMCH, SLANST, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SLAMCH, SLANST EXTERNAL LSAME, ILAENV, SLAMCH, SLANST, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTEMR, SSTEIN, SSTERF, EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTEMR, SSTEIN, SSTERF,
@ -389,7 +389,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -570,7 +570,7 @@
* IF (wantz .and. INDEIG ) Z( 1,1) = Z(1,1) / 1.002 + .002 * IF (wantz .and. INDEIG ) Z( 1,1) = Z(1,1) / 1.002 + .002
* *
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN
* *

View File

@ -125,7 +125,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heev
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO ) SUBROUTINE SSYEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, INFO )
@ -158,8 +158,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF, SSYTRD, EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF, SSYTRD,
@ -190,7 +190,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, ( NB+2 )*N ) LWKOPT = MAX( 1, ( NB+2 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.MAX( 1, 3*N-1 ) .AND. .NOT.LQUERY ) IF( LWORK.LT.MAX( 1, 3*N-1 ) .AND. .NOT.LQUERY )
$ INFO = -8 $ INFO = -8
@ -274,7 +274,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -20,7 +20,7 @@
* Definition: * Definition:
* =========== * ===========
* *
* SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, * SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK,
* INFO ) * INFO )
* *
* IMPLICIT NONE * IMPLICIT NONE
@ -105,12 +105,12 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The length of the array WORK. LWORK >= 1, when N <= 1; *> The length of the array WORK. LWORK >= 1, when N <= 1;
*> otherwise *> otherwise
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, dimension) where *> LWORK = MAX(1, dimension) where
*> dimension = max(stage1,stage2) + (KD+1)*N + 2*N *> dimension = max(stage1,stage2) + (KD+1)*N + 2*N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + 2*N *> + (KD+1)*N + 2*N
*> where KD is the blocking size of the reduction, *> where KD is the blocking size of the reduction,
*> FACTOPTNB is the blocking used by the QR or LQ *> FACTOPTNB is the blocking used by the QR or LQ
@ -143,7 +143,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heev_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -161,7 +161,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -169,16 +169,16 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, SUBROUTINE SSYEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK,
$ INFO ) $ INFO )
* *
IMPLICIT NONE IMPLICIT NONE
@ -211,8 +211,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF, EXTERNAL SLASCL, SORGTR, SSCAL, SSTEQR, SSTERF,
@ -305,7 +306,7 @@
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK( INDE ), CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, W, WORK( INDE ),
$ WORK( INDTAU ), WORK( INDHOUS ), LHTRD, $ WORK( INDTAU ), WORK( INDHOUS ), LHTRD,
$ WORK( INDWRK ), LLWORK, IINFO ) $ WORK( INDWRK ), LLWORK, IINFO )
* *
* For eigenvalues only, call SSTERF. For eigenvectors, first call * For eigenvalues only, call SSTERF. For eigenvectors, first call
@ -336,7 +337,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -160,7 +160,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heevd
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -204,8 +204,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLACPY, SLASCL, SORMTR, SSCAL, SSTEDC, SSTERF, EXTERNAL SLACPY, SLASCL, SORMTR, SSCAL, SSTEDC, SSTERF,
@ -251,7 +251,7 @@
$ N*ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) ) $ N*ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) )
LIOPT = LIWMIN LIOPT = LIWMIN
END IF END IF
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -335,7 +335,7 @@
IF( ISCALE.EQ.1 ) IF( ISCALE.EQ.1 )
$ CALL SSCAL( N, ONE / SIGMA, W, 1 ) $ CALL SSCAL( N, ONE / SIGMA, W, 1 )
* *
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *
RETURN RETURN

View File

@ -317,7 +317,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heevr
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -368,8 +368,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN, EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN,
@ -428,7 +428,7 @@
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) ) NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) )
LWKOPT = MAX( ( NB+1 )*N, LWMIN ) LWKOPT = MAX( ( NB+1 )*N, LWMIN )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -677,7 +677,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -263,7 +263,7 @@
*> indicating the nonzero elements in Z. The i-th eigenvector *> indicating the nonzero elements in Z. The i-th eigenvector
*> is nonzero only in elements ISUPPZ( 2*i-1 ) through *> is nonzero only in elements ISUPPZ( 2*i-1 ) through
*> ISUPPZ( 2*i ). This is an output of SSTEMR (tridiagonal *> ISUPPZ( 2*i ). This is an output of SSTEMR (tridiagonal
*> matrix). The support of the eigenvectors of A is typically *> matrix). The support of the eigenvectors of A is typically
*> 1:N because of the orthogonal transformations applied by SORMTR. *> 1:N because of the orthogonal transformations applied by SORMTR.
*> Implemented only for RANGE = 'A' or 'I' and IU - IL = N - 1 *> Implemented only for RANGE = 'A' or 'I' and IU - IL = N - 1
*> \endverbatim *> \endverbatim
@ -277,12 +277,12 @@
*> \param[in] LWORK *> \param[in] LWORK
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The dimension of the array WORK. *> The dimension of the array WORK.
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, 26*N, dimension) where *> LWORK = MAX(1, 26*N, dimension) where
*> dimension = max(stage1,stage2) + (KD+1)*N + 5*N *> dimension = max(stage1,stage2) + (KD+1)*N + 5*N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + 5*N *> + (KD+1)*N + 5*N
*> where KD is the blocking size of the reduction, *> where KD is the blocking size of the reduction,
*> FACTOPTNB is the blocking used by the QR or LQ *> FACTOPTNB is the blocking used by the QR or LQ
@ -330,7 +330,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heevr_2stage
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -358,7 +358,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -366,11 +366,11 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
@ -416,8 +416,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV, ILAENV2STAGE INTEGER ILAENV, ILAENV2STAGE
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK, ILAENV,
$ ILAENV2STAGE
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN, EXTERNAL SCOPY, SORMTR, SSCAL, SSTEBZ, SSTEMR, SSTEIN,
@ -484,7 +485,7 @@
* NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) * NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
* NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) ) * NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) )
* LWKOPT = MAX( ( NB+1 )*N, LWMIN ) * LWKOPT = MAX( ( NB+1 )*N, LWMIN )
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
END IF END IF
* *
@ -608,7 +609,7 @@
* Call SSYTRD_2STAGE to reduce symmetric matrix to tridiagonal form. * Call SSYTRD_2STAGE to reduce symmetric matrix to tridiagonal form.
* *
* *
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ), CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ),
$ WORK( INDE ), WORK( INDTAU ), WORK( INDHOUS ), $ WORK( INDE ), WORK( INDTAU ), WORK( INDHOUS ),
$ LHTRD, WORK( INDWK ), LLWORK, IINFO ) $ LHTRD, WORK( INDWK ), LLWORK, IINFO )
* *
@ -732,7 +733,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -244,7 +244,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heevx
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, SUBROUTINE SSYEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU,
@ -285,8 +285,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ, EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ,
@ -338,13 +338,13 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
IF( N.LE.1 ) THEN IF( N.LE.1 ) THEN
LWKMIN = 1 LWKMIN = 1
WORK( 1 ) = LWKMIN WORK( 1 ) = SROUNDUP_LWORK(LWKMIN)
ELSE ELSE
LWKMIN = 8*N LWKMIN = 8*N
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) ) NB = MAX( NB, ILAENV( 1, 'SORMTR', UPLO, N, -1, -1, -1 ) )
LWKOPT = MAX( LWKMIN, ( NB + 3 )*N ) LWKOPT = MAX( LWKMIN, ( NB + 3 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY )
@ -542,7 +542,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -208,12 +208,12 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The length of the array WORK. LWORK >= 1, when N <= 1; *> The length of the array WORK. LWORK >= 1, when N <= 1;
*> otherwise *> otherwise
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, 8*N, dimension) where *> LWORK = MAX(1, 8*N, dimension) where
*> dimension = max(stage1,stage2) + (KD+1)*N + 3*N *> dimension = max(stage1,stage2) + (KD+1)*N + 3*N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + 3*N *> + (KD+1)*N + 3*N
*> where KD is the blocking size of the reduction, *> where KD is the blocking size of the reduction,
*> FACTOPTNB is the blocking used by the QR or LQ *> FACTOPTNB is the blocking used by the QR or LQ
@ -259,7 +259,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup heevx_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -277,7 +277,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -285,11 +285,11 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
@ -334,8 +334,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ, EXTERNAL SCOPY, SLACPY, SORGTR, SORMTR, SSCAL, SSTEBZ,
@ -388,7 +389,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
IF( N.LE.1 ) THEN IF( N.LE.1 ) THEN
LWMIN = 1 LWMIN = 1
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
ELSE ELSE
KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ, KD = ILAENV2STAGE( 1, 'SSYTRD_2STAGE', JOBZ,
$ N, -1, -1, -1 ) $ N, -1, -1, -1 )
@ -487,7 +488,7 @@
INDWRK = INDHOUS + LHTRD INDWRK = INDHOUS + LHTRD
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ), CALL SSYTRD_2STAGE( JOBZ, UPLO, N, A, LDA, WORK( INDD ),
$ WORK( INDE ), WORK( INDTAU ), WORK( INDHOUS ), $ WORK( INDE ), WORK( INDTAU ), WORK( INDHOUS ),
$ LHTRD, WORK( INDWRK ), LLWORK, IINFO ) $ LHTRD, WORK( INDWRK ), LLWORK, IINFO )
* *
@ -600,7 +601,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -167,7 +167,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup hegv
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, SUBROUTINE SSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,
@ -199,7 +199,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SPOTRF, SSYEV, SSYGST, STRMM, STRSM, XERBLA EXTERNAL SPOTRF, SSYEV, SSYGST, STRMM, STRSM, XERBLA
@ -234,7 +235,7 @@
LWKMIN = MAX( 1, 3*N - 1 ) LWKMIN = MAX( 1, 3*N - 1 )
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( LWKMIN, ( NB + 2 )*N ) LWKOPT = MAX( LWKMIN, ( NB + 2 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
INFO = -11 INFO = -11
@ -303,7 +304,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SSYGV * End of SSYGV

View File

@ -143,12 +143,12 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> The length of the array WORK. LWORK >= 1, when N <= 1; *> The length of the array WORK. LWORK >= 1, when N <= 1;
*> otherwise *> otherwise
*> If JOBZ = 'N' and N > 1, LWORK must be queried. *> If JOBZ = 'N' and N > 1, LWORK must be queried.
*> LWORK = MAX(1, dimension) where *> LWORK = MAX(1, dimension) where
*> dimension = max(stage1,stage2) + (KD+1)*N + 2*N *> dimension = max(stage1,stage2) + (KD+1)*N + 2*N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + 2*N *> + (KD+1)*N + 2*N
*> where KD is the blocking size of the reduction, *> where KD is the blocking size of the reduction,
*> FACTOPTNB is the blocking used by the QR or LQ *> FACTOPTNB is the blocking used by the QR or LQ
@ -186,7 +186,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup hegv_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -204,7 +204,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -212,11 +212,11 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
* *
@ -252,7 +252,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
EXTERNAL LSAME, ILAENV2STAGE REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SPOTRF, SSYGST, STRMM, STRSM, XERBLA, EXTERNAL SPOTRF, SSYGST, STRMM, STRSM, XERBLA,
@ -359,7 +360,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of SSYGV_2STAGE * End of SSYGV_2STAGE

View File

@ -197,7 +197,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup hegvd
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -245,7 +245,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SPOTRF, SSYEVD, SSYGST, STRMM, STRSM, XERBLA EXTERNAL SPOTRF, SSYEVD, SSYGST, STRMM, STRSM, XERBLA
@ -289,7 +290,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -361,7 +362,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *
RETURN RETURN

View File

@ -283,7 +283,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYeigen *> \ingroup hegvx
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -324,7 +324,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SPOTRF, SSYEVX, SSYGST, STRMM, STRSM, XERBLA EXTERNAL SPOTRF, SSYEVX, SSYGST, STRMM, STRSM, XERBLA
@ -380,7 +381,7 @@
LWKMIN = MAX( 1, 8*N ) LWKMIN = MAX( 1, 8*N )
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( LWKMIN, ( NB + 3 )*N ) LWKOPT = MAX( LWKMIN, ( NB + 3 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
INFO = -20 INFO = -20
@ -453,7 +454,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -163,7 +163,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYsolve *> \ingroup hesv
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, SUBROUTINE SSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
@ -190,7 +190,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, SSYTRF, SSYTRS, SSYTRS2 EXTERNAL XERBLA, SSYTRF, SSYTRS, SSYTRS2
@ -225,7 +226,7 @@
CALL SSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO ) CALL SSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
LWKOPT = INT( WORK( 1 ) ) LWKOPT = INT( WORK( 1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -258,7 +259,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -154,7 +154,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYsolve *> \ingroup hesv_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYSV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, SUBROUTINE SSYSV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
@ -181,7 +181,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, SSYTRS_AA, SSYTRF_AA EXTERNAL XERBLA, SSYTRS_AA, SSYTRF_AA
@ -216,7 +217,7 @@
$ -1, INFO ) $ -1, INFO )
LWKOPT_SYTRS = INT( WORK(1) ) LWKOPT_SYTRS = INT( WORK(1) )
LWKOPT = MAX( LWKOPT_SYTRF, LWKOPT_SYTRS ) LWKOPT = MAX( LWKOPT_SYTRF, LWKOPT_SYTRS )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -238,7 +239,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -178,7 +178,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYsolve *> \ingroup hesv_aa_2stage
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYSV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB, SUBROUTINE SSYSV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB,
@ -208,7 +208,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SSYTRF_AA_2STAGE, SSYTRS_AA_2STAGE, EXTERNAL SSYTRF_AA_2STAGE, SSYTRS_AA_2STAGE,
@ -268,7 +269,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -205,7 +205,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup singleSYsolve *> \ingroup hesv_rk
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -247,7 +247,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, SSYTRF_RK, SSYTRS_3 EXTERNAL XERBLA, SSYTRF_RK, SSYTRS_3
@ -282,7 +283,7 @@
CALL SSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO ) CALL SSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO )
LWKOPT = INT( WORK( 1 ) ) LWKOPT = INT( WORK( 1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -305,7 +306,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -181,7 +181,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYsolve *> \ingroup hesv_rook
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -223,7 +223,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, SSYTRF_ROOK, SSYTRS_ROOK EXTERNAL XERBLA, SSYTRF_ROOK, SSYTRS_ROOK
@ -258,7 +259,7 @@
CALL SSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO ) CALL SSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
LWKOPT = INT( WORK( 1 ) ) LWKOPT = INT( WORK( 1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -281,7 +282,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -275,7 +275,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYsolve *> \ingroup hesvx
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, SUBROUTINE SSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
@ -311,8 +311,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANSY REAL SLAMCH, SLANSY, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLACPY, SSYCON, SSYRFS, SSYTRF, SSYTRS, XERBLA EXTERNAL SLACPY, SSYCON, SSYRFS, SSYTRF, SSYTRS, XERBLA
@ -354,7 +354,7 @@
NB = ILAENV( 1, 'SSYTRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRF', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( LWKOPT, N*NB ) LWKOPT = MAX( LWKOPT, N*NB )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -404,7 +404,7 @@
IF( RCOND.LT.SLAMCH( 'Epsilon' ) ) IF( RCOND.LT.SLAMCH( 'Epsilon' ) )
$ INFO = N + 1 $ INFO = N + 1
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -139,7 +139,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrd
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -223,7 +223,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -248,7 +249,7 @@
* *
NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRD', UPLO, N, -1, -1, -1 )
LWKOPT = N*NB LWKOPT = N*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -365,7 +366,7 @@
$ TAU( I ), IINFO ) $ TAU( I ), IINFO )
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SSYTRD * End of SSYTRD

View File

@ -18,7 +18,7 @@
* Definition: * Definition:
* =========== * ===========
* *
* SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB, * SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
* D, E, HOUS, LHOUS, WORK, LWORK, INFO ) * D, E, HOUS, LHOUS, WORK, LWORK, INFO )
* *
* #if defined(_OPENMP) * #if defined(_OPENMP)
@ -53,12 +53,12 @@
*> \param[in] STAGE1 *> \param[in] STAGE1
*> \verbatim *> \verbatim
*> STAGE1 is CHARACTER*1 *> STAGE1 is CHARACTER*1
*> = 'N': "No": to mention that the stage 1 of the reduction *> = 'N': "No": to mention that the stage 1 of the reduction
*> from dense to band using the ssytrd_sy2sb routine *> from dense to band using the ssytrd_sy2sb routine
*> was not called before this routine to reproduce AB. *> was not called before this routine to reproduce AB.
*> In other term this routine is called as standalone. *> In other term this routine is called as standalone.
*> = 'Y': "Yes": to mention that the stage 1 of the *> = 'Y': "Yes": to mention that the stage 1 of the
*> reduction from dense to band using the ssytrd_sy2sb *> reduction from dense to band using the ssytrd_sy2sb
*> routine has been called to produce AB (e.g., AB is *> routine has been called to produce AB (e.g., AB is
*> the output of ssytrd_sy2sb. *> the output of ssytrd_sy2sb.
*> \endverbatim *> \endverbatim
@ -66,10 +66,10 @@
*> \param[in] VECT *> \param[in] VECT
*> \verbatim *> \verbatim
*> VECT is CHARACTER*1 *> VECT is CHARACTER*1
*> = 'N': No need for the Housholder representation, *> = 'N': No need for the Housholder representation,
*> and thus LHOUS is of size max(1, 4*N); *> and thus LHOUS is of size max(1, 4*N);
*> = 'V': the Householder representation is needed to *> = 'V': the Householder representation is needed to
*> either generate or to apply Q later on, *> either generate or to apply Q later on,
*> then LHOUS is to be queried and computed. *> then LHOUS is to be queried and computed.
*> (NOT AVAILABLE IN THIS RELEASE). *> (NOT AVAILABLE IN THIS RELEASE).
*> \endverbatim *> \endverbatim
@ -147,7 +147,7 @@
*> message related to LHOUS is issued by XERBLA. *> message related to LHOUS is issued by XERBLA.
*> LHOUS = MAX(1, dimension) where *> LHOUS = MAX(1, dimension) where
*> dimension = 4*N if VECT='N' *> dimension = 4*N if VECT='N'
*> not available now if VECT='H' *> not available now if VECT='H'
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] WORK *> \param[out] WORK
@ -188,7 +188,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup real16OTHERcomputational *> \ingroup hetrd_hb2st
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -208,7 +208,7 @@
*> http://doi.acm.org/10.1145/2063384.2063394 *> http://doi.acm.org/10.1145/2063384.2063394
*> *>
*> A. Haidar, J. Kurzak, P. Luszczek, 2013. *> A. Haidar, J. Kurzak, P. Luszczek, 2013.
*> An improved parallel singular value algorithm and its implementation *> An improved parallel singular value algorithm and its implementation
*> for multicore hardware, In Proceedings of 2013 International Conference *> for multicore hardware, In Proceedings of 2013 International Conference
*> for High Performance Computing, Networking, Storage and Analysis (SC '13). *> for High Performance Computing, Networking, Storage and Analysis (SC '13).
*> Denver, Colorado, USA, 2013. *> Denver, Colorado, USA, 2013.
@ -216,16 +216,16 @@
*> http://doi.acm.org/10.1145/2503210.2503292 *> http://doi.acm.org/10.1145/2503210.2503292
*> *>
*> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra. *> A. Haidar, R. Solca, S. Tomov, T. Schulthess and J. Dongarra.
*> A novel hybrid CPU-GPU generalized eigensolver for electronic structure *> A novel hybrid CPU-GPU generalized eigensolver for electronic structure
*> calculations based on fine-grained memory aware tasks. *> calculations based on fine-grained memory aware tasks.
*> International Journal of High Performance Computing Applications. *> International Journal of High Performance Computing Applications.
*> Volume 28 Issue 2, Pages 196-209, May 2014. *> Volume 28 Issue 2, Pages 196-209, May 2014.
*> http://hpc.sagepub.com/content/28/2/196 *> http://hpc.sagepub.com/content/28/2/196
*> *>
*> \endverbatim *> \endverbatim
*> *>
* ===================================================================== * =====================================================================
SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB, SUBROUTINE SSYTRD_SB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
$ D, E, HOUS, LHOUS, WORK, LWORK, INFO ) $ D, E, HOUS, LHOUS, WORK, LWORK, INFO )
* *
#if defined(_OPENMP) #if defined(_OPENMP)
@ -258,11 +258,11 @@
* .. * ..
* .. Local Scalars .. * .. Local Scalars ..
LOGICAL LQUERY, WANTQ, UPPER, AFTERS1 LOGICAL LQUERY, WANTQ, UPPER, AFTERS1
INTEGER I, M, K, IB, SWEEPID, MYID, SHIFT, STT, ST, INTEGER I, M, K, IB, SWEEPID, MYID, SHIFT, STT, ST,
$ ED, STIND, EDIND, BLKLASTIND, COLPT, THED, $ ED, STIND, EDIND, BLKLASTIND, COLPT, THED,
$ STEPERCOL, GRSIZ, THGRSIZ, THGRNB, THGRID, $ STEPERCOL, GRSIZ, THGRSIZ, THGRNB, THGRID,
$ NBTILES, TTYPE, TID, NTHREADS, DEBUG, $ NBTILES, TTYPE, TID, NTHREADS, DEBUG,
$ ABDPOS, ABOFDPOS, DPOS, OFDPOS, AWPOS, $ ABDPOS, ABOFDPOS, DPOS, OFDPOS, AWPOS,
$ INDA, INDW, APOS, SIZEA, LDA, INDV, INDTAU, $ INDA, INDW, APOS, SIZEA, LDA, INDV, INDTAU,
$ SISEV, SIZETAU, LDV, LHMIN, LWMIN $ SISEV, SIZETAU, LDV, LHMIN, LWMIN
* .. * ..
@ -274,8 +274,9 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
EXTERNAL LSAME, ILAENV2STAGE REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -315,7 +316,7 @@
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
HOUS( 1 ) = LHMIN HOUS( 1 ) = LHMIN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -355,7 +356,7 @@
ABDPOS = KD + 1 ABDPOS = KD + 1
ABOFDPOS = KD ABOFDPOS = KD
ELSE ELSE
APOS = INDA APOS = INDA
AWPOS = INDA + KD + 1 AWPOS = INDA + KD + 1
DPOS = APOS DPOS = APOS
OFDPOS = DPOS + 1 OFDPOS = DPOS + 1
@ -363,11 +364,11 @@
ABOFDPOS = 2 ABOFDPOS = 2
ENDIF ENDIF
* *
* Case KD=0: * Case KD=0:
* The matrix is diagonal. We just copy it (convert to "real" for * The matrix is diagonal. We just copy it (convert to "real" for
* real because D is double and the imaginary part should be 0) * real because D is double and the imaginary part should be 0)
* and store it in D. A sequential code here is better or * and store it in D. A sequential code here is better or
* in a parallel environment it might need two cores for D and E * in a parallel environment it might need two cores for D and E
* *
IF( KD.EQ.0 ) THEN IF( KD.EQ.0 ) THEN
@ -382,17 +383,17 @@
WORK( 1 ) = 1 WORK( 1 ) = 1
RETURN RETURN
END IF END IF
* *
* Case KD=1: * Case KD=1:
* The matrix is already Tridiagonal. We have to make diagonal * The matrix is already Tridiagonal. We have to make diagonal
* and offdiagonal elements real, and store them in D and E. * and offdiagonal elements real, and store them in D and E.
* For that, for real precision just copy the diag and offdiag * For that, for real precision just copy the diag and offdiag
* to D and E while for the COMPLEX case the bulge chasing is * to D and E while for the COMPLEX case the bulge chasing is
* performed to convert the hermetian tridiagonal to symmetric * performed to convert the hermetian tridiagonal to symmetric
* tridiagonal. A simpler conversion formula might be used, but then * tridiagonal. A simpler conversion formula might be used, but then
* updating the Q matrix will be required and based if Q is generated * updating the Q matrix will be required and based if Q is generated
* or not this might complicate the story. * or not this might complicate the story.
* *
IF( KD.EQ.1 ) THEN IF( KD.EQ.1 ) THEN
DO 50 I = 1, N DO 50 I = 1, N
D( I ) = ( AB( ABDPOS, I ) ) D( I ) = ( AB( ABDPOS, I ) )
@ -413,7 +414,7 @@
RETURN RETURN
END IF END IF
* *
* Main code start here. * Main code start here.
* Reduce the symmetric band of A to a tridiagonal matrix. * Reduce the symmetric band of A to a tridiagonal matrix.
* *
THGRSIZ = N THGRSIZ = N
@ -422,7 +423,7 @@
NBTILES = CEILING( REAL(N)/REAL(KD) ) NBTILES = CEILING( REAL(N)/REAL(KD) )
STEPERCOL = CEILING( REAL(SHIFT)/REAL(GRSIZ) ) STEPERCOL = CEILING( REAL(SHIFT)/REAL(GRSIZ) )
THGRNB = CEILING( REAL(N-1)/REAL(THGRSIZ) ) THGRNB = CEILING( REAL(N-1)/REAL(THGRSIZ) )
* *
CALL SLACPY( "A", KD+1, N, AB, LDAB, WORK( APOS ), LDA ) CALL SLACPY( "A", KD+1, N, AB, LDAB, WORK( APOS ), LDA )
CALL SLASET( "A", KD, N, ZERO, ZERO, WORK( AWPOS ), LDA ) CALL SLASET( "A", KD, N, ZERO, ZERO, WORK( AWPOS ), LDA )
* *
@ -431,7 +432,7 @@
* *
#if defined(_OPENMP) #if defined(_OPENMP)
!$OMP PARALLEL PRIVATE( TID, THGRID, BLKLASTIND ) !$OMP PARALLEL PRIVATE( TID, THGRID, BLKLASTIND )
!$OMP$ PRIVATE( THED, I, M, K, ST, ED, STT, SWEEPID ) !$OMP$ PRIVATE( THED, I, M, K, ST, ED, STT, SWEEPID )
!$OMP$ PRIVATE( MYID, TTYPE, COLPT, STIND, EDIND ) !$OMP$ PRIVATE( MYID, TTYPE, COLPT, STIND, EDIND )
!$OMP$ SHARED ( UPLO, WANTQ, INDV, INDTAU, HOUS, WORK) !$OMP$ SHARED ( UPLO, WANTQ, INDV, INDTAU, HOUS, WORK)
!$OMP$ SHARED ( N, KD, IB, NBTILES, LDA, LDV, INDA ) !$OMP$ SHARED ( N, KD, IB, NBTILES, LDA, LDV, INDA )
@ -440,7 +441,7 @@
#endif #endif
* *
* main bulge chasing loop * main bulge chasing loop
* *
DO 100 THGRID = 1, THGRNB DO 100 THGRID = 1, THGRNB
STT = (THGRID-1)*THGRSIZ+1 STT = (THGRID-1)*THGRSIZ+1
THED = MIN( (STT + THGRSIZ -1), (N-1)) THED = MIN( (STT + THGRSIZ -1), (N-1))
@ -451,7 +452,7 @@
ST = STT ST = STT
DO 130 SWEEPID = ST, ED DO 130 SWEEPID = ST, ED
DO 140 K = 1, GRSIZ DO 140 K = 1, GRSIZ
MYID = (I-SWEEPID)*(STEPERCOL*GRSIZ) MYID = (I-SWEEPID)*(STEPERCOL*GRSIZ)
$ + (M-1)*GRSIZ + K $ + (M-1)*GRSIZ + K
IF ( MYID.EQ.1 ) THEN IF ( MYID.EQ.1 ) THEN
TTYPE = 1 TTYPE = 1
@ -477,16 +478,16 @@
ENDIF ENDIF
* *
* Call the kernel * Call the kernel
* *
#if defined(_OPENMP) && _OPENMP >= 201307 #if defined(_OPENMP) && _OPENMP >= 201307
IF( TTYPE.NE.1 ) THEN IF( TTYPE.NE.1 ) THEN
!$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1)) !$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1))
!$OMP$ DEPEND(in:WORK(MYID-1)) !$OMP$ DEPEND(in:WORK(MYID-1))
!$OMP$ DEPEND(out:WORK(MYID)) !$OMP$ DEPEND(out:WORK(MYID))
TID = OMP_GET_THREAD_NUM() TID = OMP_GET_THREAD_NUM()
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE, CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
$ STIND, EDIND, SWEEPID, N, KD, IB, $ STIND, EDIND, SWEEPID, N, KD, IB,
$ WORK ( INDA ), LDA, $ WORK ( INDA ), LDA,
$ HOUS( INDV ), HOUS( INDTAU ), LDV, $ HOUS( INDV ), HOUS( INDTAU ), LDV,
$ WORK( INDW + TID*KD ) ) $ WORK( INDW + TID*KD ) )
!$OMP END TASK !$OMP END TASK
@ -494,20 +495,20 @@
!$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1)) !$OMP TASK DEPEND(in:WORK(MYID+SHIFT-1))
!$OMP$ DEPEND(out:WORK(MYID)) !$OMP$ DEPEND(out:WORK(MYID))
TID = OMP_GET_THREAD_NUM() TID = OMP_GET_THREAD_NUM()
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE, CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
$ STIND, EDIND, SWEEPID, N, KD, IB, $ STIND, EDIND, SWEEPID, N, KD, IB,
$ WORK ( INDA ), LDA, $ WORK ( INDA ), LDA,
$ HOUS( INDV ), HOUS( INDTAU ), LDV, $ HOUS( INDV ), HOUS( INDTAU ), LDV,
$ WORK( INDW + TID*KD ) ) $ WORK( INDW + TID*KD ) )
!$OMP END TASK !$OMP END TASK
ENDIF ENDIF
#else #else
CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE, CALL SSB2ST_KERNELS( UPLO, WANTQ, TTYPE,
$ STIND, EDIND, SWEEPID, N, KD, IB, $ STIND, EDIND, SWEEPID, N, KD, IB,
$ WORK ( INDA ), LDA, $ WORK ( INDA ), LDA,
$ HOUS( INDV ), HOUS( INDTAU ), LDV, $ HOUS( INDV ), HOUS( INDTAU ), LDV,
$ WORK( INDW ) ) $ WORK( INDW ) )
#endif #endif
IF ( BLKLASTIND.GE.(N-1) ) THEN IF ( BLKLASTIND.GE.(N-1) ) THEN
STT = STT + 1 STT = STT + 1
EXIT EXIT
@ -522,14 +523,14 @@
!$OMP END MASTER !$OMP END MASTER
!$OMP END PARALLEL !$OMP END PARALLEL
#endif #endif
* *
* Copy the diagonal from A to D. Note that D is REAL thus only * Copy the diagonal from A to D. Note that D is REAL thus only
* the Real part is needed, the imaginary part should be zero. * the Real part is needed, the imaginary part should be zero.
* *
DO 150 I = 1, N DO 150 I = 1, N
D( I ) = ( WORK( DPOS+(I-1)*LDA ) ) D( I ) = ( WORK( DPOS+(I-1)*LDA ) )
150 CONTINUE 150 CONTINUE
* *
* Copy the off diagonal from A to E. Note that E is REAL thus only * Copy the off diagonal from A to E. Note that E is REAL thus only
* the Real part is needed, the imaginary part should be zero. * the Real part is needed, the imaginary part should be zero.
* *
@ -544,10 +545,10 @@
ENDIF ENDIF
* *
HOUS( 1 ) = LHMIN HOUS( 1 ) = LHMIN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of SSYTRD_SB2ST * End of SSYTRD_SB2ST
* *
END END

View File

@ -158,7 +158,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrd_he2hb
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -283,7 +283,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
EXTERNAL LSAME, ILAENV2STAGE REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -313,7 +314,7 @@
CALL XERBLA( 'SSYTRD_SY2SB', -INFO ) CALL XERBLA( 'SSYTRD_SY2SB', -INFO )
RETURN RETURN
ELSE IF( LQUERY ) THEN ELSE IF( LQUERY ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
END IF END IF
* *
@ -506,7 +507,7 @@
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of SSYTRD_SY2SB * End of SSYTRD_SY2SB

View File

@ -135,7 +135,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -202,7 +202,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASYF, SSYTF2, XERBLA EXTERNAL SLASYF, SSYTF2, XERBLA
@ -233,7 +234,7 @@
* *
NB = ILAENV( 1, 'SSYTRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRF', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, N*NB ) LWKOPT = MAX( 1, N*NB )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -352,7 +353,7 @@
END IF END IF
* *
40 CONTINUE 40 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SSYTRF * End of SSYTRF

View File

@ -125,7 +125,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrf_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYTRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO) SUBROUTINE SSYTRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
@ -159,7 +159,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASYF_AA, SGEMV, SSCAL, SCOPY, SSWAP, SGEMM, EXTERNAL SLASYF_AA, SGEMV, SSCAL, SCOPY, SSWAP, SGEMM,
@ -191,7 +192,7 @@
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
LWKOPT = (NB+1)*N LWKOPT = (NB+1)*N
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -457,7 +458,7 @@
END IF END IF
* *
20 CONTINUE 20 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SSYTRF_AA * End of SSYTRF_AA

View File

@ -152,7 +152,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrf_aa_2stage
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV, SUBROUTINE SSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
@ -187,7 +187,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, SCOPY, SLACPY, EXTERNAL XERBLA, SCOPY, SLACPY,
@ -230,7 +231,7 @@
TB( 1 ) = (3*NB+1)*N TB( 1 ) = (3*NB+1)*N
END IF END IF
IF( WQUERY ) THEN IF( WQUERY ) THEN
WORK( 1 ) = N*NB WORK( 1 ) = SROUNDUP_LWORK(N*NB)
END IF END IF
END IF END IF
IF( TQUERY .OR. WQUERY ) THEN IF( TQUERY .OR. WQUERY ) THEN

View File

@ -229,7 +229,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup singleSYcomputational *> \ingroup hetrf_rk
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -280,7 +280,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASYF_RK, SSYTF2_RK, SSWAP, XERBLA EXTERNAL SLASYF_RK, SSYTF2_RK, SSWAP, XERBLA
@ -311,7 +312,7 @@
* *
NB = ILAENV( 1, 'SSYTRF_RK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRF_RK', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, N*NB ) LWKOPT = MAX( 1, N*NB )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -487,7 +488,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SSYTRF_RK * End of SSYTRF_RK

View File

@ -146,7 +146,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrf_rook
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -228,7 +228,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLASYF_ROOK, SSYTF2_ROOK, XERBLA EXTERNAL SLASYF_ROOK, SSYTF2_ROOK, XERBLA
@ -259,7 +260,7 @@
* *
NB = ILAENV( 1, 'SSYTRF_ROOK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'SSYTRF_ROOK', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, N*NB ) LWKOPT = MAX( 1, N*NB )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -382,7 +383,7 @@
END IF END IF
* *
40 CONTINUE 40 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of SSYTRF_ROOK * End of SSYTRF_ROOK

View File

@ -152,7 +152,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup singleSYcomputational *> \ingroup hetri_3
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -190,7 +190,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SSYTRI_3X, XERBLA EXTERNAL SSYTRI_3X, XERBLA
@ -225,7 +226,7 @@
CALL XERBLA( 'SSYTRI_3', -INFO ) CALL XERBLA( 'SSYTRI_3', -INFO )
RETURN RETURN
ELSE IF( LQUERY ) THEN ELSE IF( LQUERY ) THEN
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
END IF END IF
* *
@ -236,7 +237,7 @@
* *
CALL SSYTRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO ) CALL SSYTRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -123,7 +123,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup hetrs_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE SSYTRS_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, SUBROUTINE SSYTRS_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB,
@ -155,7 +155,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGTSV, SSWAP, SLACPY, STRSM, XERBLA EXTERNAL SGTSV, SSWAP, SLACPY, STRSM, XERBLA
@ -186,7 +187,7 @@
RETURN RETURN
ELSE IF( LQUERY ) THEN ELSE IF( LQUERY ) THEN
LWKOPT = (3*N-2) LWKOPT = (3*N-2)
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
END IF END IF
* *

View File

@ -195,7 +195,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realGEcomputational *> \ingroup tgexc
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -241,6 +241,10 @@
LOGICAL LQUERY LOGICAL LQUERY
INTEGER HERE, LWMIN, NBF, NBL, NBNEXT INTEGER HERE, LWMIN, NBF, NBL, NBNEXT
* .. * ..
* .. External Functions ..
REAL SROUNDUP_LWORK
EXTERNAL SROUNDUP_LWORK
* ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL STGEX2, XERBLA EXTERNAL STGEX2, XERBLA
* .. * ..
@ -533,7 +537,7 @@
$ GO TO 20 $ GO TO 20
END IF END IF
ILST = HERE ILST = HERE
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of STGEXC * End of STGEXC

View File

@ -304,7 +304,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup tgsen
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -490,8 +490,8 @@
$ XERBLA $ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SLAMCH REAL SLAMCH, SROUNDUP_LWORK
EXTERNAL SLAMCH EXTERNAL SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, SIGN, SQRT INTRINSIC MAX, SIGN, SQRT
@ -571,7 +571,7 @@
LIWMIN = 1 LIWMIN = 1
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
@ -852,7 +852,7 @@
END IF END IF
70 CONTINUE 70 CONTINUE
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -230,7 +230,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup tgsna
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -416,8 +416,9 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SDOT, SLAMCH, SLAPY2, SNRM2 REAL SDOT, SLAMCH, SLAPY2, SNRM2, SROUNDUP_LWORK
EXTERNAL LSAME, SDOT, SLAMCH, SLAPY2, SNRM2 EXTERNAL LSAME, SDOT, SLAMCH, SLAPY2, SNRM2,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMV, SLACPY, SLAG2, STGEXC, STGSYL, XERBLA EXTERNAL SGEMV, SLACPY, SLAG2, STGEXC, STGSYL, XERBLA
@ -490,7 +491,7 @@
ELSE ELSE
LWMIN = N LWMIN = N
END IF END IF
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
IF( MM.LT.M ) THEN IF( MM.LT.M ) THEN
INFO = -15 INFO = -15
@ -689,7 +690,7 @@
$ KS = KS + 1 $ KS = KS + 1
* *
20 CONTINUE 20 CONTINUE
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of STGSNA * End of STGSNA

View File

@ -261,7 +261,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realSYcomputational *> \ingroup tgsyl
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -331,7 +331,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
EXTERNAL LSAME, ILAENV REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SGEMM, SLACPY, SLASET, SSCAL, STGSY2, XERBLA EXTERNAL SGEMM, SLACPY, SLASET, SSCAL, STGSY2, XERBLA
@ -384,7 +385,7 @@
ELSE ELSE
LWMIN = 1 LWMIN = 1
END IF END IF
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) THEN
INFO = -20 INFO = -20
@ -670,7 +671,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -231,7 +231,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup trsen
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -346,8 +346,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLANGE REAL SLANGE, SROUNDUP_LWORK
EXTERNAL LSAME, SLANGE EXTERNAL LSAME, SLANGE, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLACN2, SLACPY, STREXC, STRSYL, XERBLA EXTERNAL SLACN2, SLACPY, STREXC, STRSYL, XERBLA
@ -427,7 +427,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
END IF END IF
* *
@ -558,7 +558,7 @@
END IF END IF
60 CONTINUE 60 CONTINUE
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -116,7 +116,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup realOTHERcomputational *> \ingroup tzrzf
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -179,7 +179,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -207,7 +208,7 @@
LWKOPT = M*NB LWKOPT = M*NB
LWKMIN = MAX( 1, M ) LWKMIN = MAX( 1, M )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) THEN
INFO = -7 INFO = -7
@ -301,7 +302,7 @@
IF( MU.GT.0 ) IF( MU.GT.0 )
$ CALL SLATRZ( MU, N, N-M, A, LDA, TAU, WORK ) $ CALL SLATRZ( MU, N, N-M, A, LDA, TAU, WORK )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *