| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE | |||||
| REAL SLAMCH, SLANSB, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSB | |||||
| REAL SLAMCH, SLANSB, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE | |||||
| REAL SLAMCH, SLANSB, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSB, ILAENV2STAGE | |||||
| REAL SLAMCH, SLANSB, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSP | |||||
| REAL SLAMCH, SLANSP, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | ||||
| @@ -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 | |||||
| EXTERNAL ILAENV, LSAME, SLAMCH, SLANST | |||||
| REAL SLAMCH, SLANST, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -359,8 +359,8 @@ | |||||
| * .. | * .. | ||||
| * .. External Functions .. | * .. External Functions .. | ||||
| LOGICAL LSAME | LOGICAL LSAME | ||||
| REAL SLAMCH, SLANST | |||||
| EXTERNAL LSAME, SLAMCH, SLANST | |||||
| REAL SLAMCH, SLANST, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANST | |||||
| REAL SLAMCH, SLANST, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, ILAENV, SLAMCH, SLANST | |||||
| REAL SLAMCH, SLANST, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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) | |||||
| *> + max(2*KD*KD, KD*NTHREADS) | |||||
| *> = N*KD + N*max(KD+1,FACTOPTNB) | |||||
| *> + 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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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) | |||||
| *> + max(2*KD*KD, KD*NTHREADS) | |||||
| *> = N*KD + N*max(KD+1,FACTOPTNB) | |||||
| *> + 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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV, ILAENV2STAGE | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, ILAENV, SLAMCH, SLANSY | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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) | |||||
| *> + max(2*KD*KD, KD*NTHREADS) | |||||
| *> = N*KD + N*max(KD+1,FACTOPTNB) | |||||
| *> + 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 | |||||
| EXTERNAL LSAME, SLAMCH, SLANSY, ILAENV2STAGE | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | ||||
| @@ -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) | |||||
| *> + max(2*KD*KD, KD*NTHREADS) | |||||
| *> = N*KD + N*max(KD+1,FACTOPTNB) | |||||
| *> + 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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL ILAENV, LSAME, SLAMCH, SLANSY | |||||
| REAL SLAMCH, SLANSY, SROUNDUP_LWORK | |||||
| 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 | ||||
| * | * | ||||
| @@ -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 | ||||
| @@ -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. | |||||
| *> In other term this routine is called as standalone. | |||||
| *> = 'Y': "Yes": to mention that the stage 1 of the | |||||
| *> reduction from dense to band using the ssytrd_sy2sb | |||||
| *> was not called before this routine to reproduce AB. | |||||
| *> In other term this routine is called as standalone. | |||||
| *> = 'Y': "Yes": to mention that the stage 1 of the | |||||
| *> 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 | |||||
| *> either generate or to apply Q later on, | |||||
| *> = 'V': the Householder representation is needed to | |||||
| *> 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 | |||||
| EXTERNAL LSAME, ILAENV2STAGE | |||||
| INTEGER 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: | |||||
| * The matrix is diagonal. We just copy it (convert to "real" for | |||||
| * real because D is double and the imaginary part should be 0) | |||||
| * and store it in D. A sequential code here is better or | |||||
| * | |||||
| * Case KD=0: | |||||
| * The matrix is diagonal. We just copy it (convert to "real" for | |||||
| * real because D is double and the imaginary part should be 0) | |||||
| * 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: | |||||
| * The matrix is already Tridiagonal. We have to make diagonal | |||||
| * | |||||
| * Case KD=1: | |||||
| * 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 | |||||
| * to D and E while for the COMPLEX case the bulge chasing is | |||||
| * performed to convert the hermetian tridiagonal to symmetric | |||||
| * tridiagonal. A simpler conversion formula might be used, but then | |||||
| * For that, for real precision just copy the diag and offdiag | |||||
| * to D and E while for the COMPLEX case the bulge chasing is | |||||
| * performed to convert the hermetian tridiagonal to symmetric | |||||
| * 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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | ||||
| @@ -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 | |||||
| EXTERNAL SLAMCH | |||||
| REAL SLAMCH, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SDOT, SLAMCH, SLAPY2, SNRM2 | |||||
| REAL SDOT, SLAMCH, SLAPY2, SNRM2, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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 | ||||
| * | * | ||||
| @@ -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 | |||||
| EXTERNAL LSAME, SLANGE | |||||
| REAL SLANGE, SROUNDUP_LWORK | |||||
| 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 | ||||
| @@ -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 | ||||
| * | * | ||||