Merge pull request #4310 from martin-frbg/lapack904

Apply rounding up to workspace calculations done with reals (Reference-LAPACK PR 904)
This commit is contained in:
Martin Kroeker 2023-11-12 16:45:10 +01:00 committed by GitHub
commit d58c88cf42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
216 changed files with 1334 additions and 1187 deletions

View File

@ -176,7 +176,8 @@ C>
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
@ -225,13 +226,13 @@ C>
* Optimal workspace for dlarfb = MAX(1,N)*NT * Optimal workspace for dlarfb = MAX(1,N)*NT
* *
LWKOPT = (LBWORK+LLWORK)*NB LWKOPT = (LBWORK+LLWORK)*NB
WORK( 1 ) = (LWKOPT+NT*NT) WORK( 1 ) = SROUNDUP_LWORK(LWKOPT+NT*NT)
ELSE ELSE
LBWORK = CEILING(REAL(K)/REAL(NB))*NB LBWORK = CEILING(REAL(K)/REAL(NB))*NB
LWKOPT = (LBWORK+LLWORK-NB)*NB LWKOPT = (LBWORK+LLWORK-NB)*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
@ -413,7 +414,7 @@ C>
END IF END IF
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGEQRF * End of CGEQRF

View File

@ -176,7 +176,8 @@ C>
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV DOUBLE PRECISION DROUNDUP_LWORK
EXTERNAL ILAENV, DROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
@ -225,13 +226,13 @@ C>
* Optimal workspace for dlarfb = MAX(1,N)*NT * Optimal workspace for dlarfb = MAX(1,N)*NT
* *
LWKOPT = (LBWORK+LLWORK)*NB LWKOPT = (LBWORK+LLWORK)*NB
WORK( 1 ) = (LWKOPT+NT*NT) WORK( 1 ) = DROUNDUP_LWORK(LWKOPT+NT*NT)
ELSE ELSE
LBWORK = CEILING(REAL(K)/REAL(NB))*NB LBWORK = CEILING(REAL(K)/REAL(NB))*NB
LWKOPT = (LBWORK+LLWORK-NB)*NB LWKOPT = (LBWORK+LLWORK-NB)*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = DROUNDUP_LWORK(LWKOPT)
END IF END IF
@ -413,7 +414,7 @@ C>
END IF END IF
WORK( 1 ) = IWS WORK( 1 ) = DROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of DGEQRF * End of DGEQRF

View File

@ -176,7 +176,8 @@ C>
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV DOUBLE PRECISION DROUNDUP_LWORK
EXTERNAL ILAENV, DROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
@ -225,13 +226,13 @@ C>
* Optimal workspace for dlarfb = MAX(1,N)*NT * Optimal workspace for dlarfb = MAX(1,N)*NT
* *
LWKOPT = (LBWORK+LLWORK)*NB LWKOPT = (LBWORK+LLWORK)*NB
WORK( 1 ) = (LWKOPT+NT*NT) WORK( 1 ) = DROUNDUP_LWORK(LWKOPT+NT*NT)
ELSE ELSE
LBWORK = CEILING(REAL(K)/REAL(NB))*NB LBWORK = CEILING(REAL(K)/REAL(NB))*NB
LWKOPT = (LBWORK+LLWORK-NB)*NB LWKOPT = (LBWORK+LLWORK-NB)*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = DROUNDUP_LWORK(LWKOPT)
END IF END IF
@ -413,7 +414,7 @@ C>
END IF END IF
WORK( 1 ) = IWS WORK( 1 ) = DROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of SGEQRF * End of SGEQRF

View File

@ -176,7 +176,8 @@ C>
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
@ -225,13 +226,13 @@ C>
* Optimal workspace for dlarfb = MAX(1,N)*NT * Optimal workspace for dlarfb = MAX(1,N)*NT
* *
LWKOPT = (LBWORK+LLWORK)*NB LWKOPT = (LBWORK+LLWORK)*NB
WORK( 1 ) = (LWKOPT+NT*NT) WORK( 1 ) = SROUNDUP_LWORK(LWKOPT+NT*NT)
ELSE ELSE
LBWORK = CEILING(REAL(K)/REAL(NB))*NB LBWORK = CEILING(REAL(K)/REAL(NB))*NB
LWKOPT = (LBWORK+LLWORK-NB)*NB LWKOPT = (LBWORK+LLWORK-NB)*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
@ -413,7 +414,7 @@ C>
END IF END IF
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of ZGEQRF * End of ZGEQRF

View File

@ -189,7 +189,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEeigen *> \ingroup gees
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS, SUBROUTINE CGEES( JOBVS, SORT, SELECT, N, A, LDA, SDIM, W, VS,
@ -230,13 +230,13 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CCOPY, CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY, EXTERNAL CCOPY, CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY,
$ CLASCL, CTRSEN, CUNGHR, SLABAD, XERBLA $ CLASCL, CTRSEN, CUNGHR, XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, SQRT INTRINSIC MAX, SQRT
@ -292,7 +292,7 @@
MAXWRK = MAX( MAXWRK, HSWORK ) MAXWRK = MAX( MAXWRK, HSWORK )
END IF END IF
END IF END IF
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -12 INFO = -12
@ -318,7 +318,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -413,7 +412,7 @@
CALL CCOPY( N, A, LDA+1, W, 1 ) CALL CCOPY( N, A, LDA+1, W, 1 )
END IF END IF
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
RETURN RETURN
* *
* End of CGEES * End of CGEES

View File

@ -230,7 +230,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEeigen *> \ingroup geesx
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGEESX( JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, W, SUBROUTINE CGEESX( JOBVS, SORT, SELECT, SENSE, N, A, LDA, SDIM, W,
@ -274,13 +274,13 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CCOPY, CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY, EXTERNAL CCOPY, CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY,
$ CLASCL, CTRSEN, CUNGHR, SLABAD, SLASCL, XERBLA $ CLASCL, CTRSEN, CUNGHR, SLASCL, XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, SQRT INTRINSIC MAX, SQRT
@ -350,7 +350,7 @@
IF( .NOT.WANTSN ) IF( .NOT.WANTSN )
$ LWRK = MAX( LWRK, ( N*N )/2 ) $ LWRK = MAX( LWRK, ( N*N )/2 )
END IF END IF
WORK( 1 ) = LWRK WORK( 1 ) = SROUNDUP_LWORK(LWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -15 INFO = -15
@ -376,7 +376,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -488,7 +487,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
RETURN RETURN
* *
* End of CGEESX * End of CGEESX

View File

@ -172,7 +172,7 @@
* *
* @generated from zgeev.f, fortran z -> c, Tue Apr 19 01:47:44 2016 * @generated from zgeev.f, fortran z -> c, Tue Apr 19 01:47:44 2016
* *
*> \ingroup complexGEeigen *> \ingroup geev
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR,
@ -212,14 +212,15 @@
REAL DUM( 1 ) REAL DUM( 1 )
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLABAD, XERBLA, CSSCAL, CGEBAK, CGEBAL, CGEHRD, EXTERNAL XERBLA, CSSCAL, CGEBAK, CGEBAL, CGEHRD,
$ CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3, CUNGHR $ CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3, CUNGHR
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ISAMAX, ILAENV INTEGER ISAMAX, ILAENV
REAL SLAMCH, SCNRM2, CLANGE REAL SLAMCH, SCNRM2, CLANGE, SROUNDUP_LWORK
EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE,
$ SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT
@ -291,7 +292,7 @@
HSWORK = INT( WORK(1) ) HSWORK = INT( WORK(1) )
MAXWRK = MAX( MAXWRK, HSWORK, MINWRK ) MAXWRK = MAX( MAXWRK, HSWORK, MINWRK )
END IF END IF
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -12 INFO = -12
@ -315,7 +316,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -493,7 +493,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
RETURN RETURN
* *
* End of CGEEV * End of CGEEV

View File

@ -279,7 +279,7 @@
* *
* @generated from zgeevx.f, fortran z -> c, Tue Apr 19 01:47:44 2016 * @generated from zgeevx.f, fortran z -> c, Tue Apr 19 01:47:44 2016
* *
*> \ingroup complexGEeigen *> \ingroup geevx
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL, SUBROUTINE CGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL,
@ -323,15 +323,16 @@
REAL DUM( 1 ) REAL DUM( 1 )
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SLABAD, SLASCL, XERBLA, CSSCAL, CGEBAK, CGEBAL, EXTERNAL SLASCL, XERBLA, CSSCAL, CGEBAK, CGEBAL,
$ CGEHRD, CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3, $ CGEHRD, CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3,
$ CTRSNA, CUNGHR $ CTRSNA, CUNGHR
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ISAMAX, ILAENV INTEGER ISAMAX, ILAENV
REAL SLAMCH, SCNRM2, CLANGE REAL SLAMCH, SCNRM2, CLANGE, SROUNDUP_LWORK
EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE,
$ SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT
@ -434,7 +435,7 @@
END IF END IF
MAXWRK = MAX( MAXWRK, MINWRK ) MAXWRK = MAX( MAXWRK, MINWRK )
END IF END IF
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -20 INFO = -20
@ -458,7 +459,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -657,7 +657,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
RETURN RETURN
* *
* End of CGEEVX * End of CGEEVX

View File

@ -120,7 +120,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup gehrd
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -201,7 +201,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -227,7 +228,7 @@
* *
NB = MIN( NBMAX, ILAENV( 1, 'CGEHRD', ' ', N, ILO, IHI, -1 ) ) NB = MIN( NBMAX, ILAENV( 1, 'CGEHRD', ' ', N, ILO, IHI, -1 ) )
LWKOPT = N*NB + TSIZE LWKOPT = N*NB + TSIZE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -344,7 +345,7 @@
* Use unblocked code to reduce the rest of the matrix * Use unblocked code to reduce the rest of the matrix
* *
CALL CGEHD2( N, I, IHI, A, LDA, TAU, WORK, IINFO ) CALL CGEHD2( N, I, IHI, A, LDA, TAU, WORK, IINFO )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -166,6 +166,8 @@
*> the LQ factorization. *> the LQ factorization.
*> \endverbatim *> \endverbatim
*> *>
*> \ingroup gelq
*>
* ===================================================================== * =====================================================================
SUBROUTINE CGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK, SUBROUTINE CGELQ( M, N, A, LDA, T, TSIZE, WORK, LWORK,
$ INFO ) $ INFO )
@ -190,7 +192,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGELQT, CLASWLQ, XERBLA EXTERNAL CGELQT, CLASWLQ, XERBLA
@ -292,9 +295,9 @@
T( 2 ) = MB T( 2 ) = MB
T( 3 ) = NB T( 3 ) = NB
IF( MINW ) THEN IF( MINW ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
ELSE ELSE
WORK( 1 ) = LWREQ WORK( 1 ) = SROUNDUP_LWORK(LWREQ)
END IF END IF
END IF END IF
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -319,7 +322,7 @@
$ LWORK, INFO ) $ LWORK, INFO )
END IF END IF
* *
WORK( 1 ) = LWREQ WORK( 1 ) = SROUNDUP_LWORK(LWREQ)
* *
RETURN RETURN
* *

View File

@ -118,7 +118,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup gelqf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -167,7 +167,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -176,7 +177,7 @@
INFO = 0 INFO = 0
NB = ILAENV( 1, 'CGELQF', ' ', M, N, -1, -1 ) NB = ILAENV( 1, 'CGELQF', ' ', M, N, -1, -1 )
LWKOPT = M*NB LWKOPT = 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
@ -266,7 +267,7 @@
$ CALL CGELQ2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK, $ CALL CGELQ2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
$ IINFO ) $ IINFO )
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGELQF * End of CGELQF

View File

@ -204,7 +204,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEsolve *> \ingroup gelsd
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -249,13 +249,13 @@
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEBRD, CGELQF, CGEQRF, CLACPY, EXTERNAL CGEBRD, CGELQF, CGEQRF, CLACPY,
$ CLALSD, CLASCL, CLASET, CUNMBR, $ CLALSD, CLASCL, CLASET, CUNMBR,
$ CUNMLQ, CUNMQR, SLABAD, SLASCL, $ CUNMLQ, CUNMQR, SLASCL,
$ SLASET, XERBLA $ SLASET, XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL CLANGE, SLAMCH, ILAENV EXTERNAL CLANGE, SLAMCH, ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC INT, LOG, MAX, MIN, REAL INTRINSIC INT, LOG, MAX, MIN, REAL
@ -367,7 +367,7 @@
END IF END IF
END IF END IF
MINWRK = MIN( MINWRK, MAXWRK ) MINWRK = MIN( MINWRK, MAXWRK )
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
IWORK( 1 ) = LIWORK IWORK( 1 ) = LIWORK
RWORK( 1 ) = LRWORK RWORK( 1 ) = LRWORK
* *
@ -396,7 +396,6 @@
SFMIN = SLAMCH( 'S' ) SFMIN = SLAMCH( 'S' )
SMLNUM = SFMIN / EPS SMLNUM = SFMIN / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
* *
* Scale A if max entry outside range [SMLNUM,BIGNUM]. * Scale A if max entry outside range [SMLNUM,BIGNUM].
* *
@ -647,7 +646,7 @@
END IF END IF
* *
10 CONTINUE 10 CONTINUE
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
IWORK( 1 ) = LIWORK IWORK( 1 ) = LIWORK
RWORK( 1 ) = LRWORK RWORK( 1 ) = LRWORK
RETURN RETURN

View File

@ -218,8 +218,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL ILAENV, CLANGE, SLAMCH EXTERNAL ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, MIN INTRINSIC MAX, MIN
@ -361,7 +361,7 @@
END IF END IF
MAXWRK = MAX( MINWRK, MAXWRK ) MAXWRK = MAX( MINWRK, MAXWRK )
END IF END IF
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY )
$ INFO = -12 $ INFO = -12
@ -758,7 +758,7 @@
CALL CLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO ) CALL CLASCL( 'G', 0, 0, BIGNUM, BNRM, N, NRHS, B, LDB, INFO )
END IF END IF
70 CONTINUE 70 CONTINUE
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
RETURN RETURN
* *
* End of CGELSS * End of CGELSS

View File

@ -176,7 +176,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEsolve *> \ingroup gelst
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -224,15 +224,15 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, CLANGE REAL SLAMCH, CLANGE, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SLAMCH, CLANGE EXTERNAL LSAME, ILAENV, SLAMCH, CLANGE, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGELQT, CGEQRT, CGEMLQT, CGEMQRT, SLABAD, EXTERNAL CGELQT, CGEQRT, CGEMLQT, CGEMQRT,
$ CLASCL, CLASET, CTRTRS, XERBLA $ CLASCL, CLASET, CTRTRS, XERBLA
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, MAX, MIN INTRINSIC MAX, MIN
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -270,7 +270,7 @@
* *
MNNRHS = MAX( MN, NRHS ) MNNRHS = MAX( MN, NRHS )
LWOPT = MAX( 1, (MN+MNNRHS)*NB ) LWOPT = MAX( 1, (MN+MNNRHS)*NB )
WORK( 1 ) = REAL( LWOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWOPT )
* *
END IF END IF
* *
@ -285,7 +285,7 @@
* *
IF( MIN( M, N, NRHS ).EQ.0 ) THEN IF( MIN( M, N, NRHS ).EQ.0 ) THEN
CALL CLASET( 'Full', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB ) CALL CLASET( 'Full', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB )
WORK( 1 ) = REAL( LWOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWOPT )
RETURN RETURN
END IF END IF
* *
@ -311,7 +311,6 @@
* *
SMLNUM = SLAMCH( 'S' ) / SLAMCH( 'P' ) SMLNUM = SLAMCH( 'S' ) / SLAMCH( 'P' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
* *
* Scale A, B if max element outside range [SMLNUM,BIGNUM] * Scale A, B if max element outside range [SMLNUM,BIGNUM]
* *
@ -334,7 +333,7 @@
* Matrix all zero. Return zero solution. * Matrix all zero. Return zero solution.
* *
CALL CLASET( 'Full', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB ) CALL CLASET( 'Full', MAX( M, N ), NRHS, CZERO, CZERO, B, LDB )
WORK( 1 ) = REAL( LWOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWOPT )
RETURN RETURN
END IF END IF
* *
@ -524,7 +523,7 @@
$ INFO ) $ INFO )
END IF END IF
* *
WORK( 1 ) = REAL( LWOPT ) WORK( 1 ) = SROUNDUP_LWORK( LWOPT )
* *
RETURN RETURN
* *

View File

@ -113,7 +113,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup geqlf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -162,7 +162,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -186,7 +187,7 @@
NB = ILAENV( 1, 'CGEQLF', ' ', M, N, -1, -1 ) NB = ILAENV( 1, 'CGEQLF', ' ', M, N, -1, -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 = -7 INFO = -7
@ -276,7 +277,7 @@
IF( MU.GT.0 .AND. NU.GT.0 ) IF( MU.GT.0 .AND. NU.GT.0 )
$ CALL CGEQL2( MU, NU, A, LDA, TAU, WORK, IINFO ) $ CALL CGEQL2( MU, NU, A, LDA, TAU, WORK, IINFO )
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGEQLF * End of CGEQLF

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup geqrf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -170,7 +170,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -199,7 +200,7 @@
ELSE ELSE
LWKOPT = N*NB LWKOPT = N*NB
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
END IF END IF
* *
@ -274,7 +275,7 @@
$ CALL CGEQR2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK, $ CALL CGEQR2( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
$ IINFO ) $ IINFO )
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGEQRF * End of CGEQRF

View File

@ -122,7 +122,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup geqrfp
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -173,7 +173,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -182,7 +183,7 @@
INFO = 0 INFO = 0
NB = ILAENV( 1, 'CGEQRF', ' ', M, N, -1, -1 ) NB = ILAENV( 1, 'CGEQRF', ' ', M, N, -1, -1 )
LWKOPT = N*NB LWKOPT = 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
@ -272,7 +273,7 @@
$ CALL CGEQR2P( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK, $ CALL CGEQR2P( M-I+1, N-I+1, A( I, I ), LDA, TAU( I ), WORK,
$ IINFO ) $ IINFO )
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGEQRFP * End of CGEQRFP

View File

@ -114,7 +114,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup gerqf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -163,7 +163,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -187,7 +188,7 @@
NB = ILAENV( 1, 'CGERQF', ' ', M, N, -1, -1 ) NB = ILAENV( 1, 'CGERQF', ' ', M, N, -1, -1 )
LWKOPT = M*NB LWKOPT = M*NB
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF ( .NOT.LQUERY ) THEN IF ( .NOT.LQUERY ) THEN
IF( LWORK.LE.0 .OR. ( N.GT.0 .AND. LWORK.LT.MAX( 1, M ) ) ) IF( LWORK.LE.0 .OR. ( N.GT.0 .AND. LWORK.LT.MAX( 1, M ) ) )
@ -278,7 +279,7 @@
IF( MU.GT.0 .AND. NU.GT.0 ) IF( MU.GT.0 .AND. NU.GT.0 )
$ CALL CGERQ2( MU, NU, A, LDA, TAU, WORK, IINFO ) $ CALL CGERQ2( MU, NU, A, LDA, TAU, WORK, IINFO )
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGERQF * End of CGERQF

View File

@ -206,7 +206,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEsing *> \ingroup gesvd
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, SUBROUTINE CGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,
@ -259,8 +259,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, MIN, SQRT INTRINSIC MAX, MIN, SQRT
@ -615,7 +615,7 @@
END IF END IF
END IF END IF
MAXWRK = MAX( MINWRK, MAXWRK ) MAXWRK = MAX( MINWRK, MAXWRK )
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -13 INFO = -13
@ -3694,7 +3694,7 @@
* *
* Return optimal workspace in WORK(1) * Return optimal workspace in WORK(1)
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
RETURN RETURN
* *

View File

@ -107,7 +107,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEcomputational *> \ingroup getri
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO ) SUBROUTINE CGETRI( N, A, LDA, IPIV, WORK, LWORK, INFO )
@ -138,7 +138,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEMM, CGEMV, CSWAP, CTRSM, CTRTRI, XERBLA EXTERNAL CGEMM, CGEMV, CSWAP, CTRSM, CTRTRI, XERBLA
@ -153,7 +154,7 @@
INFO = 0 INFO = 0
NB = ILAENV( 1, 'CGETRI', ' ', N, -1, -1, -1 ) NB = ILAENV( 1, 'CGETRI', ' ', N, -1, -1, -1 )
LWKOPT = N*NB LWKOPT = N*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
LQUERY = ( LWORK.EQ.-1 ) LQUERY = ( LWORK.EQ.-1 )
IF( N.LT.0 ) THEN IF( N.LT.0 ) THEN
INFO = -1 INFO = -1
@ -251,7 +252,7 @@
$ CALL CSWAP( N, A( 1, J ), 1, A( 1, JP ), 1 ) $ CALL CSWAP( N, A( 1, J ), 1, A( 1, JP ), 1 )
60 CONTINUE 60 CONTINUE
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CGETRI * End of CGETRI

View File

@ -154,7 +154,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEsolve *> \ingroup getsls
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGETSLS( TRANS, M, N, NRHS, A, LDA, B, LDB, SUBROUTINE CGETSLS( TRANS, M, N, NRHS, A, LDA, B, LDB,
@ -191,15 +191,15 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLAMCH, CLANGE REAL SLAMCH, CLANGE, SROUNDUP_LWORK
EXTERNAL LSAME, SLABAD, SLAMCH, CLANGE EXTERNAL LSAME, SLAMCH, CLANGE, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEQR, CGEMQR, CLASCL, CLASET, EXTERNAL CGEQR, CGEMQR, CLASCL, CLASET,
$ CTRTRS, XERBLA, CGELQ, CGEMLQ $ CTRTRS, XERBLA, CGELQ, CGEMLQ
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC REAL, MAX, MIN, INT INTRINSIC MAX, MIN, INT
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -265,7 +265,7 @@
INFO = -10 INFO = -10
END IF END IF
* *
WORK( 1 ) = REAL( WSIZEO ) WORK( 1 ) = SROUNDUP_LWORK( WSIZEO )
* *
END IF END IF
* *
@ -274,7 +274,7 @@
RETURN RETURN
END IF END IF
IF( LQUERY ) THEN IF( LQUERY ) THEN
IF( LWORK.EQ.-2 ) WORK( 1 ) = REAL( WSIZEM ) IF( LWORK.EQ.-2 ) WORK( 1 ) = SROUNDUP_LWORK( WSIZEM )
RETURN RETURN
END IF END IF
IF( LWORK.LT.WSIZEO ) THEN IF( LWORK.LT.WSIZEO ) THEN
@ -297,7 +297,6 @@
* *
SMLNUM = SLAMCH( 'S' ) / SLAMCH( 'P' ) SMLNUM = SLAMCH( 'S' ) / SLAMCH( 'P' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
* *
* Scale A, B if max element outside range [SMLNUM,BIGNUM] * Scale A, B if max element outside range [SMLNUM,BIGNUM]
* *
@ -485,7 +484,7 @@
END IF END IF
* *
50 CONTINUE 50 CONTINUE
WORK( 1 ) = REAL( TSZO + LWO ) WORK( 1 ) = SROUNDUP_LWORK( TSZO + LWO )
RETURN RETURN
* *
* End of CGETSLS * End of CGETSLS

View File

@ -261,7 +261,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEeigen *> \ingroup gges
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGGES( JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB, SUBROUTINE CGGES( JOBVSL, JOBVSR, SORT, SELCTG, N, A, LDA, B, LDB,
@ -312,14 +312,13 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY, EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY,
$ CLASCL, CLASET, CTGSEN, CUNGQR, CUNMQR, SLABAD, $ CLASCL, CLASET, CTGSEN, CUNGQR, CUNMQR, XERBLA
$ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, SQRT INTRINSIC MAX, SQRT
@ -390,7 +389,7 @@
LWKOPT = MAX( LWKOPT, N + LWKOPT = MAX( LWKOPT, N +
$ N*ILAENV( 1, 'CUNGQR', ' ', N, 1, N, -1 ) ) $ N*ILAENV( 1, 'CUNGQR', ' ', N, 1, N, -1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY )
$ INFO = -18 $ INFO = -18
@ -415,7 +414,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -587,7 +585,7 @@
* *
30 CONTINUE 30 CONTINUE
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -320,7 +320,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEeigen *> \ingroup ggesx
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGGESX( JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA, SUBROUTINE CGGESX( JOBVSL, JOBVSR, SORT, SELCTG, SENSE, N, A, LDA,
@ -373,14 +373,13 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY, EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY,
$ CLASCL, CLASET, CTGSEN, CUNGQR, CUNMQR, SLABAD, $ CLASCL, CLASET, CTGSEN, CUNGQR, CUNMQR, XERBLA
$ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC MAX, SQRT INTRINSIC MAX, SQRT
@ -476,7 +475,7 @@
MAXWRK = 1 MAXWRK = 1
LWRK = 1 LWRK = 1
END IF END IF
WORK( 1 ) = LWRK WORK( 1 ) = SROUNDUP_LWORK(LWRK)
IF( WANTSN .OR. N.EQ.0 ) THEN IF( WANTSN .OR. N.EQ.0 ) THEN
LIWMIN = 1 LIWMIN = 1
ELSE ELSE
@ -510,7 +509,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -705,7 +703,7 @@
* *
40 CONTINUE 40 CONTINUE
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -209,7 +209,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEeigen *> \ingroup ggev
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, SUBROUTINE CGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA,
@ -254,14 +254,13 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY, EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY,
$ CLASCL, CLASET, CTGEVC, CUNGQR, CUNMQR, SLABAD, $ CLASCL, CLASET, CTGEVC, CUNGQR, CUNMQR, XERBLA
$ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC ABS, AIMAG, MAX, REAL, SQRT INTRINSIC ABS, AIMAG, MAX, REAL, SQRT
@ -336,7 +335,7 @@
LWKOPT = MAX( LWKOPT, N + LWKOPT = MAX( LWKOPT, N +
$ N*ILAENV( 1, 'CUNGQR', ' ', N, 1, N, -1 ) ) $ N*ILAENV( 1, 'CUNGQR', ' ', N, 1, N, -1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWKMIN .AND. .NOT.LQUERY )
$ INFO = -15 $ INFO = -15
@ -359,7 +358,6 @@
EPS = SLAMCH( 'E' )*SLAMCH( 'B' ) EPS = SLAMCH( 'E' )*SLAMCH( 'B' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -547,7 +545,7 @@
IF( ILBSCL ) IF( ILBSCL )
$ CALL CLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR ) $ CALL CLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CGGEV * End of CGGEV

View File

@ -335,7 +335,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGEeigen *> \ingroup ggevx
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -416,13 +416,13 @@
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY, EXTERNAL CGEQRF, CGGBAK, CGGBAL, CGGHRD, CHGEQZ, CLACPY,
$ CLASCL, CLASET, CTGEVC, CTGSNA, CUNGQR, CUNMQR, $ CLASCL, CLASET, CTGEVC, CTGSNA, CUNGQR, CUNMQR,
$ SLABAD, SLASCL, XERBLA $ SLASCL, XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANGE, SLAMCH REAL CLANGE, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH EXTERNAL LSAME, ILAENV, CLANGE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC ABS, AIMAG, MAX, REAL, SQRT INTRINSIC ABS, AIMAG, MAX, REAL, SQRT
@ -521,7 +521,7 @@
$ N*ILAENV( 1, 'CUNGQR', ' ', N, 1, N, 0 ) ) $ N*ILAENV( 1, 'CUNGQR', ' ', N, 1, N, 0 ) )
END IF END IF
END IF END IF
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
* *
IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MINWRK .AND. .NOT.LQUERY ) THEN
INFO = -25 INFO = -25
@ -545,7 +545,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) SMLNUM = SLAMCH( 'S' )
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
SMLNUM = SQRT( SMLNUM ) / EPS SMLNUM = SQRT( SMLNUM ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
* *
@ -793,7 +792,7 @@
IF( ILBSCL ) IF( ILBSCL )
$ CALL CLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR ) $ CALL CLASCL( 'G', 0, 0, BNRMTO, BNRM, N, 1, BETA, N, IERR )
* *
WORK( 1 ) = MAXWRK WORK( 1 ) = SROUNDUP_LWORK(MAXWRK)
RETURN RETURN
* *
* End of CGGEVX * End of CGGEVX

View File

@ -177,7 +177,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup ggglm
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGGGLM( N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK, SUBROUTINE CGGGLM( N, M, P, A, LDA, B, LDB, D, X, Y, WORK, LWORK,
@ -213,7 +213,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC INT, MAX, MIN INTRINSIC INT, MAX, MIN
@ -252,7 +253,7 @@
LWKMIN = M + N + P LWKMIN = M + N + P
LWKOPT = M + NP + MAX( N, P )*NB LWKOPT = M + NP + MAX( N, P )*NB
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 = -12 INFO = -12

View File

@ -172,7 +172,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERsolve *> \ingroup gglse
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGGLSE( M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK, SUBROUTINE CGGLSE( M, N, P, A, LDA, B, LDB, C, D, X, WORK, LWORK,
@ -207,7 +207,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC INT, MAX, MIN INTRINSIC INT, MAX, MIN
@ -246,7 +247,7 @@
LWKMIN = M + N + P LWKMIN = M + N + P
LWKOPT = P + MN + MAX( M, N )*NB LWKOPT = P + MN + MAX( M, N )*NB
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 = -12 INFO = -12

View File

@ -173,7 +173,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup ggqrf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -236,7 +236,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC INT, MAX, MIN INTRINSIC INT, MAX, MIN
@ -251,7 +252,7 @@
NB3 = ILAENV( 1, 'CUNMQR', ' ', N, M, P, -1 ) NB3 = ILAENV( 1, 'CUNMQR', ' ', N, M, P, -1 )
NB = MAX( NB1, NB2, NB3 ) NB = MAX( NB1, NB2, NB3 )
LWKOPT = MAX( N, M, P)*NB LWKOPT = MAX( N, M, P)*NB
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
LQUERY = ( LWORK.EQ.-1 ) LQUERY = ( LWORK.EQ.-1 )
IF( N.LT.0 ) THEN IF( N.LT.0 ) THEN
INFO = -1 INFO = -1

View File

@ -172,7 +172,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup ggrqf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -235,7 +235,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
EXTERNAL ILAENV REAL SROUNDUP_LWORK
EXTERNAL ILAENV, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC INT, MAX, MIN INTRINSIC INT, MAX, MIN
@ -250,7 +251,7 @@
NB3 = ILAENV( 1, 'CUNMRQ', ' ', M, N, P, -1 ) NB3 = ILAENV( 1, 'CUNMRQ', ' ', M, N, P, -1 )
NB = MAX( NB1, NB2, NB3 ) NB = MAX( NB1, NB2, NB3 )
LWKOPT = MAX( N, M, P)*NB LWKOPT = MAX( N, M, P)*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

View File

@ -132,7 +132,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 *> dimension = (2KD+1)*N + KD*NTHREADS
@ -171,7 +171,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup hbev_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -189,7 +189,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.
@ -197,11 +197,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
* *
@ -240,8 +240,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, CLANHB REAL SLAMCH, CLANHB, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR, EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR,
@ -276,7 +277,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, 'CHETRD_HB2ST', JOBZ, IB = ILAENV2STAGE( 2, 'CHETRD_HB2ST', JOBZ,
$ N, KD, -1, -1 ) $ N, KD, -1, -1 )
@ -285,7 +286,7 @@
LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ, LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ,
$ N, KD, IB, -1 ) $ N, KD, IB, -1 )
LWMIN = LHTRD + LWTRD LWMIN = 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 )
@ -351,7 +352,7 @@
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL CHETRD_HB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W, CALL CHETRD_HB2ST( "N", JOBZ, UPLO, N, KD, AB, LDAB, W,
$ RWORK( INDE ), WORK( INDHOUS ), LHTRD, $ RWORK( INDE ), WORK( INDHOUS ), LHTRD,
$ WORK( INDWRK ), LLWORK, IINFO ) $ WORK( INDWRK ), LLWORK, IINFO )
* *
* For eigenvalues only, call SSTERF. For eigenvectors, call CSTEQR. * For eigenvalues only, call SSTERF. For eigenvectors, call CSTEQR.
@ -377,7 +378,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -201,7 +201,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup hbevd
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, SUBROUTINE CHBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK,
@ -239,8 +239,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL CLANHB, SLAMCH REAL CLANHB, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, CLANHB, SLAMCH EXTERNAL LSAME, CLANHB, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEMM, CHBTRD, CLACPY, CLASCL, CSTEDC, SSCAL, EXTERNAL CGEMM, CHBTRD, CLACPY, CLASCL, CSTEDC, SSCAL,
@ -288,7 +288,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
@ -382,7 +382,7 @@
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 ) CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN

View File

@ -22,7 +22,7 @@
* *
* SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, * SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
* Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, * Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W,
* Z, LDZ, WORK, LWORK, RWORK, IWORK, * Z, LDZ, WORK, LWORK, RWORK, IWORK,
* IFAIL, INFO ) * IFAIL, INFO )
* *
* IMPLICIT NONE * IMPLICIT NONE
@ -233,7 +233,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 *> dimension = (2KD+1)*N + KD*NTHREADS
@ -285,7 +285,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup hbevx_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -303,7 +303,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.
@ -311,18 +311,18 @@
*> 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 CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB, SUBROUTINE CHBEVX_2STAGE( JOBZ, RANGE, UPLO, N, KD, AB, LDAB,
$ Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, $ Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W,
$ Z, LDZ, WORK, LWORK, RWORK, IWORK, $ Z, LDZ, WORK, LWORK, RWORK, IWORK,
$ IFAIL, INFO ) $ IFAIL, INFO )
* *
IMPLICIT NONE IMPLICIT NONE
@ -367,8 +367,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, CLANHB REAL SLAMCH, CLANHB, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, CLANHB, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CCOPY, EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CCOPY,
@ -424,16 +425,16 @@
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, 'CHETRD_HB2ST', JOBZ, IB = ILAENV2STAGE( 2, 'CHETRD_HB2ST', JOBZ,
$ N, KD, -1, -1 ) $ N, KD, -1, -1 )
LHTRD = ILAENV2STAGE( 3, 'CHETRD_HB2ST', JOBZ, LHTRD = ILAENV2STAGE( 3, 'CHETRD_HB2ST', JOBZ,
$ N, KD, IB, -1 ) $ N, KD, IB, -1 )
LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ, LWTRD = ILAENV2STAGE( 4, 'CHETRD_HB2ST', JOBZ,
$ N, KD, IB, -1 ) $ N, KD, IB, -1 )
LWMIN = LHTRD + LWTRD LWMIN = 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 )
@ -637,7 +638,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -232,7 +232,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup hbgvd
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -275,7 +275,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SSTERF, XERBLA, CGEMM, CHBGST, CHBTRD, CLACPY, EXTERNAL SSTERF, XERBLA, CGEMM, CHBGST, CHBTRD, CLACPY,
@ -322,7 +323,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
@ -388,7 +389,7 @@
CALL CLACPY( 'A', N, N, WORK( INDWK2 ), N, Z, LDZ ) CALL CLACPY( 'A', N, N, WORK( INDWK2 ), N, Z, LDZ )
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN

View File

@ -132,7 +132,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup heev
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK, SUBROUTINE CHEEV( JOBZ, UPLO, N, A, LDA, W, WORK, LWORK, RWORK,
@ -169,8 +169,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANHE, SLAMCH REAL CLANHE, SLAMCH, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, CLANHE, SLAMCH EXTERNAL ILAENV, LSAME, CLANHE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHETRD, CLASCL, CSTEQR, CUNGTR, SSCAL, SSTERF, EXTERNAL CHETRD, CLASCL, CSTEQR, CUNGTR, SSCAL, SSTERF,
@ -201,7 +201,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, ( NB+1 )*N ) LWKOPT = MAX( 1, ( NB+1 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.MAX( 1, 2*N-1 ) .AND. .NOT.LQUERY ) IF( LWORK.LT.MAX( 1, 2*N-1 ) .AND. .NOT.LQUERY )
$ INFO = -8 $ INFO = -8
@ -286,7 +286,7 @@
* *
* Set WORK(1) to optimal complex workspace size. * Set WORK(1) to optimal complex workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -106,12 +106,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 + N *> dimension = max(stage1,stage2) + (KD+1)*N + N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + N *> + (KD+1)*N + 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
@ -149,7 +149,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup heev_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -167,7 +167,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.
@ -175,11 +175,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
* *
@ -220,8 +220,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, CLANHE REAL SLAMCH, CLANHE, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR, EXTERNAL SSCAL, SSTERF, XERBLA, CLASCL, CSTEQR,
@ -255,7 +256,7 @@
LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 )
LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 )
LWMIN = N + LHTRD + LWTRD LWMIN = N + LHTRD + LWTRD
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY )
$ INFO = -8 $ INFO = -8
@ -314,7 +315,7 @@
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL CHETRD_2STAGE( JOBZ, UPLO, N, A, LDA, W, RWORK( INDE ), CALL CHETRD_2STAGE( JOBZ, UPLO, N, A, LDA, W, RWORK( 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
@ -343,7 +344,7 @@
* *
* Set WORK(1) to optimal complex workspace size. * Set WORK(1) to optimal complex workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -180,7 +180,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup heevd
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -230,8 +230,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANHE, SLAMCH REAL CLANHE, SLAMCH, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, CLANHE, SLAMCH EXTERNAL ILAENV, LSAME, CLANHE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHETRD, CLACPY, CLASCL, CSTEDC, CUNMTR, SSCAL, EXTERNAL CHETRD, CLACPY, CLASCL, CSTEDC, CUNMTR, SSCAL,
@ -282,7 +282,7 @@
LROPT = LRWMIN LROPT = LRWMIN
LIOPT = LIWMIN LIOPT = LIWMIN
END IF END IF
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
RWORK( 1 ) = LROPT RWORK( 1 ) = LROPT
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *
@ -378,7 +378,7 @@
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 ) CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF END IF
* *
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
RWORK( 1 ) = LROPT RWORK( 1 ) = LROPT
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *

View File

@ -338,7 +338,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup heevr
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -392,8 +392,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANSY, SLAMCH REAL CLANSY, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, CLANSY, SLAMCH EXTERNAL LSAME, ILAENV, CLANSY, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHETRD, CSSCAL, CSTEMR, CSTEIN, CSWAP, CUNMTR, EXTERNAL CHETRD, CSSCAL, CSTEMR, CSTEIN, CSWAP, CUNMTR,
@ -454,7 +454,7 @@
NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 )
NB = MAX( NB, ILAENV( 1, 'CUNMTR', UPLO, N, -1, -1, -1 ) ) NB = MAX( NB, ILAENV( 1, 'CUNMTR', 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)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
@ -710,7 +710,7 @@
* *
* Set WORK(1) to optimal workspace size. * Set WORK(1) to optimal workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *

View File

@ -250,7 +250,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup heevx
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, SUBROUTINE CHEEVX( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU,
@ -294,8 +294,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, CLANHE REAL SLAMCH, CLANHE, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SLAMCH, CLANHE EXTERNAL LSAME, ILAENV, SLAMCH, CLANHE, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CSSCAL, EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CSSCAL,
@ -354,7 +354,7 @@
NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 )
NB = MAX( NB, ILAENV( 1, 'CUNMTR', UPLO, N, -1, -1, -1 ) ) NB = MAX( NB, ILAENV( 1, 'CUNMTR', UPLO, N, -1, -1, -1 ) )
LWKOPT = MAX( 1, ( NB + 1 )*N ) LWKOPT = MAX( 1, ( NB + 1 )*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 )
@ -552,7 +552,7 @@
* *
* Set WORK(1) to optimal complex workspace size. * Set WORK(1) to optimal complex workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -209,12 +209,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 + N *> dimension = max(stage1,stage2) + (KD+1)*N + N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + N *> + (KD+1)*N + 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
@ -265,7 +265,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup heevx_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -283,7 +283,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.
@ -291,11 +291,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
* *
@ -335,7 +335,7 @@
CHARACTER ORDER CHARACTER ORDER
INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL, INTEGER I, IINFO, IMAX, INDD, INDE, INDEE, INDIBL,
$ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE, $ INDISP, INDIWK, INDRWK, INDTAU, INDWRK, ISCALE,
$ ITMP1, J, JJ, LLWORK, $ ITMP1, J, JJ, LLWORK,
$ NSPLIT, LWMIN, LHTRD, LWTRD, KD, IB, INDHOUS $ NSPLIT, LWMIN, LHTRD, LWTRD, KD, IB, INDHOUS
REAL ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN, REAL ABSTLL, ANRM, BIGNUM, EPS, RMAX, RMIN, SAFMIN,
$ SIGMA, SMLNUM, TMP1, VLL, VUU $ SIGMA, SMLNUM, TMP1, VLL, VUU
@ -343,8 +343,9 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
REAL SLAMCH, CLANHE REAL SLAMCH, CLANHE, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE EXTERNAL LSAME, SLAMCH, CLANHE, ILAENV2STAGE,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CSSCAL, EXTERNAL SCOPY, SSCAL, SSTEBZ, SSTERF, XERBLA, CSSCAL,
@ -397,7 +398,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, 'CHETRD_2STAGE', JOBZ, KD = ILAENV2STAGE( 1, 'CHETRD_2STAGE', JOBZ,
$ N, -1, -1, -1 ) $ N, -1, -1, -1 )
@ -408,7 +409,7 @@
LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', 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)
END IF END IF
* *
IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY ) IF( LWORK.LT.LWMIN .AND. .NOT.LQUERY )
@ -499,7 +500,7 @@
LLWORK = LWORK - INDWRK + 1 LLWORK = LWORK - INDWRK + 1
* *
CALL CHETRD_2STAGE( JOBZ, UPLO, N, A, LDA, RWORK( INDD ), CALL CHETRD_2STAGE( JOBZ, UPLO, N, A, LDA, RWORK( INDD ),
$ RWORK( INDE ), WORK( INDTAU ), $ RWORK( INDE ), WORK( INDTAU ),
$ WORK( INDHOUS ), LHTRD, WORK( INDWRK ), $ WORK( INDHOUS ), LHTRD, WORK( INDWRK ),
$ LLWORK, IINFO ) $ LLWORK, IINFO )
* *
@ -610,7 +611,7 @@
* *
* Set WORK(1) to optimal complex workspace size. * Set WORK(1) to optimal complex workspace size.
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -173,7 +173,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup hegv
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHEGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, SUBROUTINE CHEGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK,
@ -206,7 +206,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 CHEEV, CHEGST, CPOTRF, CTRMM, CTRSM, XERBLA EXTERNAL CHEEV, CHEGST, CPOTRF, CTRMM, CTRSM, XERBLA
@ -240,7 +241,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, ( NB + 1 )*N ) LWKOPT = MAX( 1, ( NB + 1 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.MAX( 1, 2*N-1 ) .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MAX( 1, 2*N-1 ) .AND. .NOT.LQUERY ) THEN
INFO = -11 INFO = -11
@ -309,7 +310,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -144,12 +144,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 + N *> dimension = max(stage1,stage2) + (KD+1)*N + N
*> = N*KD + N*max(KD+1,FACTOPTNB) *> = N*KD + N*max(KD+1,FACTOPTNB)
*> + max(2*KD*KD, KD*NTHREADS) *> + max(2*KD*KD, KD*NTHREADS)
*> + (KD+1)*N + N *> + (KD+1)*N + 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
@ -192,7 +192,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup hegv_2stage
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -210,7 +210,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.
@ -218,11 +218,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
* *
@ -259,7 +259,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 XERBLA, CHEGST, CPOTRF, CTRMM, CTRSM, EXTERNAL XERBLA, CHEGST, CPOTRF, CTRMM, CTRSM,
@ -297,7 +298,7 @@
LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LHTRD = ILAENV2STAGE( 3, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 )
LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 ) LWTRD = ILAENV2STAGE( 4, 'CHETRD_2STAGE', JOBZ, N, KD, IB, -1 )
LWMIN = N + LHTRD + LWTRD LWMIN = N + LHTRD + LWTRD
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 = -11 INFO = -11
@ -327,7 +328,7 @@
* Transform problem to standard eigenvalue problem and solve. * Transform problem to standard eigenvalue problem and solve.
* *
CALL CHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO ) CALL CHEGST( ITYPE, UPLO, N, A, LDA, B, LDB, INFO )
CALL CHEEV_2STAGE( JOBZ, UPLO, N, A, LDA, W, CALL CHEEV_2STAGE( JOBZ, UPLO, N, A, LDA, W,
$ WORK, LWORK, RWORK, INFO ) $ WORK, LWORK, RWORK, INFO )
* *
IF( WANTZ ) THEN IF( WANTZ ) THEN
@ -367,7 +368,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -219,7 +219,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup hegvd
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -268,7 +268,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHEEVD, CHEGST, CPOTRF, CTRMM, CTRSM, XERBLA EXTERNAL CHEEVD, CHEGST, CPOTRF, CTRMM, CTRSM, XERBLA
@ -316,7 +317,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
RWORK( 1 ) = LROPT RWORK( 1 ) = LROPT
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *
@ -392,7 +393,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LOPT WORK( 1 ) = SROUNDUP_LWORK(LOPT)
RWORK( 1 ) = LROPT RWORK( 1 ) = LROPT
IWORK( 1 ) = LIOPT IWORK( 1 ) = LIOPT
* *

View File

@ -293,7 +293,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEeigen *> \ingroup hegvx
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -335,7 +335,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 CHEEVX, CHEGST, CPOTRF, CTRMM, CTRSM, XERBLA EXTERNAL CHEEVX, CHEGST, CPOTRF, CTRMM, CTRSM, XERBLA
@ -390,7 +391,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRD', UPLO, N, -1, -1, -1 )
LWKOPT = MAX( 1, ( NB + 1 )*N ) LWKOPT = MAX( 1, ( NB + 1 )*N )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
IF( LWORK.LT.MAX( 1, 2*N ) .AND. .NOT.LQUERY ) THEN IF( LWORK.LT.MAX( 1, 2*N ) .AND. .NOT.LQUERY ) THEN
INFO = -20 INFO = -20
@ -464,7 +465,7 @@
* *
* Set WORK(1) to optimal complex workspace size. * Set WORK(1) to optimal complex workspace size.
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -163,7 +163,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEsolve *> \ingroup hesv
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHESV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, SUBROUTINE CHESV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
@ -191,7 +191,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, CHETRF, CHETRS, CHETRS2 EXTERNAL XERBLA, CHETRF, CHETRS, CHETRS2
@ -226,7 +227,7 @@
NB = ILAENV( 1, 'CHETRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF', UPLO, N, -1, -1, -1 )
LWKOPT = N*NB 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
@ -259,7 +260,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -154,7 +154,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEsolve *> \ingroup hesv_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHESV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, SUBROUTINE CHESV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
@ -182,7 +182,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, CHETRF_AA, CHETRS_AA EXTERNAL XERBLA, CHETRF_AA, CHETRS_AA
@ -217,7 +218,7 @@
$ -1, INFO ) $ -1, INFO )
LWKOPT_HETRS = INT( WORK(1) ) LWKOPT_HETRS = INT( WORK(1) )
LWKOPT = MAX( LWKOPT_HETRF, LWKOPT_HETRS ) LWKOPT = MAX( LWKOPT_HETRF, LWKOPT_HETRS )
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -239,7 +240,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -177,7 +177,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \ingroup hesv_aa_2stage
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHESV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB, SUBROUTINE CHESV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB,
@ -207,7 +207,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHETRF_AA_2STAGE, CHETRS_AA_2STAGE, EXTERNAL CHETRF_AA_2STAGE, CHETRS_AA_2STAGE,
@ -267,7 +268,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -205,7 +205,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEsolve *> \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, CHETRF_RK, CHETRS_3 EXTERNAL XERBLA, CHETRF_RK, CHETRS_3
@ -282,7 +283,7 @@
CALL CHETRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO ) CALL CHETRF_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
@ -304,7 +305,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -184,7 +184,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEsolve *> \ingroup hesv_rook
*> *>
*> \verbatim *> \verbatim
*> *>
@ -225,7 +225,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, CHETRF_ROOK, CHETRS_ROOK EXTERNAL XERBLA, CHETRF_ROOK, CHETRS_ROOK
@ -260,7 +261,7 @@
NB = ILAENV( 1, 'CHETRF_ROOK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF_ROOK', UPLO, N, -1, -1, -1 )
LWKOPT = N*NB 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
@ -283,7 +284,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -276,7 +276,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEsolve *> \ingroup hesvx
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHESVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, SUBROUTINE CHESVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
@ -313,8 +313,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANHE, SLAMCH REAL CLANHE, SLAMCH, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, CLANHE, SLAMCH EXTERNAL ILAENV, LSAME, CLANHE, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHECON, CHERFS, CHETRF, CHETRS, CLACPY, XERBLA EXTERNAL CHECON, CHERFS, CHETRF, CHETRS, CLACPY, XERBLA
@ -356,7 +356,7 @@
NB = ILAENV( 1, 'CHETRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF', 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
@ -405,7 +405,7 @@
IF( RCOND.LT.SLAMCH( 'Epsilon' ) ) IF( RCOND.LT.SLAMCH( 'Epsilon' ) )
$ INFO = N + 1 $ INFO = N + 1
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -18,7 +18,7 @@
* Definition: * Definition:
* =========== * ===========
* *
* SUBROUTINE CHETRD_HB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB, * SUBROUTINE CHETRD_HB2ST( 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 chetrd_he2hb routine *> from dense to band using the chetrd_he2hb routine
*> was not called before this routine to reproduce AB. *> was not called before this routine to reproduce AB.
*> In other term this routine is called as standalone. *> In other term this routine is called as standalone.
*> = 'Y': "Yes": to mention that the stage 1 of the *> = 'Y': "Yes": to mention that the stage 1 of the
*> reduction from dense to band using the chetrd_he2hb *> reduction from dense to band using the chetrd_he2hb
*> 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 chetrd_he2hb. *> the output of chetrd_he2hb.
*> \endverbatim *> \endverbatim
@ -66,10 +66,10 @@
*> \param[in] VECT *> \param[in] VECT
*> \verbatim *> \verbatim
*> VECT is CHARACTER*1 *> VECT is CHARACTER*1
*> = 'N': No need for the Housholder representation, *> = 'N': No need for the Housholder representation,
*> and thus LHOUS is of size max(1, 4*N); *> and thus LHOUS is of size max(1, 4*N);
*> = 'V': the Householder representation is needed to *> = 'V': the Householder representation is needed to
*> either generate or to apply Q later on, *> either generate or to apply Q later on,
*> then LHOUS is to be queried and computed. *> then LHOUS is to be queried and computed.
*> (NOT AVAILABLE IN THIS RELEASE). *> (NOT AVAILABLE IN THIS RELEASE).
*> \endverbatim *> \endverbatim
@ -147,7 +147,7 @@
*> message related to LHOUS is issued by XERBLA. *> message related to LHOUS is issued by XERBLA.
*> LHOUS = MAX(1, dimension) where *> LHOUS = MAX(1, dimension) where
*> dimension = 4*N if VECT='N' *> dimension = 4*N if VECT='N'
*> not available now if VECT='H' *> not available now if VECT='H'
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] WORK *> \param[out] WORK
@ -188,7 +188,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \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 CHETRD_HB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB, SUBROUTINE CHETRD_HB2ST( STAGE1, VECT, UPLO, N, KD, AB, LDAB,
$ D, E, HOUS, LHOUS, WORK, LWORK, INFO ) $ D, E, HOUS, LHOUS, WORK, LWORK, INFO )
* *
* *
@ -259,11 +259,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,
$ SICEV, SIZETAU, LDV, LHMIN, LWMIN $ SICEV, SIZETAU, LDV, LHMIN, LWMIN
REAL ABSTMP REAL ABSTMP
@ -277,8 +277,9 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV2STAGE INTEGER ILAENV2STAGE
EXTERNAL LSAME, ILAENV2STAGE REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV2STAGE, SROUNDUP_LWORK
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -318,7 +319,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
@ -358,7 +359,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
@ -366,11 +367,11 @@
ABOFDPOS = 2 ABOFDPOS = 2
ENDIF ENDIF
* *
* Case KD=0: * Case KD=0:
* The matrix is diagonal. We just copy it (convert to "real" for * The matrix is diagonal. We just copy it (convert to "real" for
* complex because D is double and the imaginary part should be 0) * complex because D is double and the imaginary part should be 0)
* and store it in D. A sequential code here is better or * and store it in D. A sequential code here is better or
* in a parallel environment it might need two cores for D and E * in a parallel environment it might need two cores for D and E
* *
IF( KD.EQ.0 ) THEN IF( KD.EQ.0 ) THEN
@ -385,17 +386,17 @@
WORK( 1 ) = 1 WORK( 1 ) = 1
RETURN RETURN
END IF END IF
* *
* Case KD=1: * Case KD=1:
* The matrix is already Tridiagonal. We have to make diagonal * The matrix is already Tridiagonal. We have to make diagonal
* and offdiagonal elements real, and store them in D and E. * and offdiagonal elements real, and store them in D and E.
* For that, for real precision just copy the diag and offdiag * For that, for real precision just copy the diag and offdiag
* to D and E while for the COMPLEX case the bulge chasing is * to D and E while for the COMPLEX case the bulge chasing is
* performed to convert the hermetian tridiagonal to symmetric * performed to convert the hermetian tridiagonal to symmetric
* tridiagonal. A simpler conversion formula might be used, but then * tridiagonal. A simpler conversion formula might be used, but then
* updating the Q matrix will be required and based if Q is generated * updating the Q matrix will be required and based if Q is generated
* or not this might complicate the story. * or not this might complicate the story.
* *
IF( KD.EQ.1 ) THEN IF( KD.EQ.1 ) THEN
DO 50 I = 1, N DO 50 I = 1, N
D( I ) = REAL( AB( ABDPOS, I ) ) D( I ) = REAL( AB( ABDPOS, I ) )
@ -444,7 +445,7 @@ C END IF
RETURN RETURN
END IF END IF
* *
* Main code start here. * Main code start here.
* Reduce the hermitian band of A to a tridiagonal matrix. * Reduce the hermitian band of A to a tridiagonal matrix.
* *
THGRSIZ = N THGRSIZ = N
@ -453,7 +454,7 @@ C END IF
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 CLACPY( "A", KD+1, N, AB, LDAB, WORK( APOS ), LDA ) CALL CLACPY( "A", KD+1, N, AB, LDAB, WORK( APOS ), LDA )
CALL CLASET( "A", KD, N, ZERO, ZERO, WORK( AWPOS ), LDA ) CALL CLASET( "A", KD, N, ZERO, ZERO, WORK( AWPOS ), LDA )
* *
@ -462,7 +463,7 @@ C END IF
* *
#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 )
@ -471,7 +472,7 @@ C END IF
#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))
@ -482,7 +483,7 @@ C END IF
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
@ -508,16 +509,16 @@ C END IF
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 CHB2ST_KERNELS( UPLO, WANTQ, TTYPE, CALL CHB2ST_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
@ -525,20 +526,20 @@ C END IF
!$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 CHB2ST_KERNELS( UPLO, WANTQ, TTYPE, CALL CHB2ST_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 CHB2ST_KERNELS( UPLO, WANTQ, TTYPE, CALL CHB2ST_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
@ -553,14 +554,14 @@ C END IF
!$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 ) = REAL( WORK( DPOS+(I-1)*LDA ) ) D( I ) = REAL( 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.
* *
@ -575,10 +576,10 @@ C END IF
ENDIF ENDIF
* *
HOUS( 1 ) = LHMIN HOUS( 1 ) = LHMIN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of CHETRD_HB2ST * End of CHETRD_HB2ST
* *
END END

View File

@ -158,7 +158,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \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( 'CHETRD_HE2HB', -INFO ) CALL XERBLA( 'CHETRD_HE2HB', -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 CHETRD_HE2HB * End of CHETRD_HE2HB

View File

@ -130,7 +130,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \ingroup hetrf
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -197,7 +197,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 CHETF2, CLAHEF, XERBLA EXTERNAL CHETF2, CLAHEF, XERBLA
@ -228,7 +229,7 @@
* *
NB = ILAENV( 1, 'CHETRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF', 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
@ -346,7 +347,7 @@
END IF END IF
* *
40 CONTINUE 40 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CHETRF * End of CHETRF

View File

@ -125,7 +125,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \ingroup hetrf_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHETRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO) SUBROUTINE CHETRF_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 CLAHEF_AA, CGEMM, CCOPY, CSWAP, CSCAL, XERBLA EXTERNAL CLAHEF_AA, CGEMM, CCOPY, CSWAP, CSCAL, XERBLA
@ -190,7 +191,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
@ -459,7 +460,7 @@
END IF END IF
* *
20 CONTINUE 20 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CHETRF_AA * End of CHETRF_AA

View File

@ -229,7 +229,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \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 CLAHEF_RK, CHETF2_RK, CSWAP, XERBLA EXTERNAL CLAHEF_RK, CHETF2_RK, CSWAP, XERBLA
@ -311,7 +312,7 @@
* *
NB = ILAENV( 1, 'CHETRF_RK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF_RK', 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
@ -487,7 +488,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CHETRF_RK * End of CHETRF_RK

View File

@ -150,7 +150,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \ingroup hetrf_rook
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -232,7 +232,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 CLAHEF_ROOK, CHETF2_ROOK, XERBLA EXTERNAL CLAHEF_ROOK, CHETF2_ROOK, XERBLA
@ -263,7 +264,7 @@
* *
NB = ILAENV( 1, 'CHETRF_ROOK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF_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
@ -386,7 +387,7 @@
END IF END IF
* *
40 CONTINUE 40 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CHETRF_ROOK * End of CHETRF_ROOK

View File

@ -152,7 +152,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \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 CHETRI_3X, XERBLA EXTERNAL CHETRI_3X, XERBLA
@ -225,7 +226,7 @@
CALL XERBLA( 'CHETRI_3', -INFO ) CALL XERBLA( 'CHETRI_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 CHETRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO ) CALL CHETRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -123,7 +123,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexHEcomputational *> \ingroup hetrs_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHETRS_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, SUBROUTINE CHETRS_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 CLACPY, CLACGV, CGTSV, CSWAP, CTRSM, XERBLA EXTERNAL CLACPY, CLACGV, CGTSV, CSWAP, CTRSM, XERBLA
@ -186,7 +187,7 @@
RETURN RETURN
ELSE IF( LQUERY ) THEN ELSE IF( LQUERY ) THEN
LWKOPT = (3*N-2) LWKOPT = (3*N-2)
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
END IF END IF
* *

View File

@ -186,7 +186,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup hpevd
* *
* ===================================================================== * =====================================================================
SUBROUTINE CHPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK, SUBROUTINE CHPEVD( JOBZ, UPLO, N, AP, W, Z, LDZ, WORK, LWORK,
@ -223,8 +223,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL CLANHP, SLAMCH REAL CLANHP, SLAMCH, SROUNDUP_LWORK
EXTERNAL LSAME, CLANHP, SLAMCH EXTERNAL LSAME, CLANHP, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHPTRD, CSSCAL, CSTEDC, CUPMTR, SSCAL, SSTERF, EXTERNAL CHPTRD, CSSCAL, CSTEDC, CUPMTR, SSCAL, SSTERF,
@ -268,7 +268,7 @@
LIWMIN = 1 LIWMIN = 1
END IF END IF
END IF END IF
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
@ -359,7 +359,7 @@
CALL SSCAL( IMAX, ONE / SIGMA, W, 1 ) CALL SSCAL( IMAX, ONE / SIGMA, W, 1 )
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN

View File

@ -212,7 +212,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHEReigen *> \ingroup hpgvd
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -246,7 +246,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CHPEVD, CHPGST, CPPTRF, CTPMV, CTPSV, XERBLA EXTERNAL CHPEVD, CHPGST, CPPTRF, CTPMV, CTPSV, XERBLA
@ -292,7 +293,7 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
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 @@
END IF END IF
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN

View File

@ -216,7 +216,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup hseqr
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -343,7 +343,8 @@
* .. External Functions .. * .. External Functions ..
INTEGER ILAENV INTEGER ILAENV
LOGICAL LSAME LOGICAL LSAME
EXTERNAL ILAENV, LSAME REAL SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CCOPY, CLACPY, CLAHQR, CLAQR0, CLASET, XERBLA EXTERNAL CCOPY, CLACPY, CLAHQR, CLAQR0, CLASET, XERBLA

View File

@ -189,6 +189,8 @@
*> SIAM J. Sci. Comput, vol. 34, no. 1, 2012 *> SIAM J. Sci. Comput, vol. 34, no. 1, 2012
*> \endverbatim *> \endverbatim
*> *>
*> \ingroup lamswlq
*>
* ===================================================================== * =====================================================================
SUBROUTINE CLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, SUBROUTINE CLAMSWLQ( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
$ LDT, C, LDC, WORK, LWORK, INFO ) $ LDT, C, LDC, WORK, LWORK, INFO )
@ -215,7 +217,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CTPMLQT, CGEMLQT, XERBLA EXTERNAL CTPMLQT, CGEMLQT, XERBLA
* .. * ..
@ -259,10 +262,10 @@
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
CALL XERBLA( 'CLAMSWLQ', -INFO ) CALL XERBLA( 'CLAMSWLQ', -INFO )
WORK(1) = LW WORK(1) = SROUNDUP_LWORK(LW)
RETURN RETURN
ELSE IF (LQUERY) THEN ELSE IF (LQUERY) THEN
WORK(1) = LW WORK(1) = SROUNDUP_LWORK(LW)
RETURN RETURN
END IF END IF
* *
@ -401,7 +404,7 @@
* *
END IF END IF
* *
WORK(1) = LW WORK(1) = SROUNDUP_LWORK(LW)
RETURN RETURN
* *
* End of CLAMSWLQ * End of CLAMSWLQ

View File

@ -191,6 +191,8 @@
*> SIAM J. Sci. Comput, vol. 34, no. 1, 2012 *> SIAM J. Sci. Comput, vol. 34, no. 1, 2012
*> \endverbatim *> \endverbatim
*> *>
*> \ingroup lamtsqr
*>
* ===================================================================== * =====================================================================
SUBROUTINE CLAMTSQR( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T, SUBROUTINE CLAMTSQR( SIDE, TRANS, M, N, K, MB, NB, A, LDA, T,
$ LDT, C, LDC, WORK, LWORK, INFO ) $ LDT, C, LDC, WORK, LWORK, INFO )
@ -217,7 +219,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEMQRT, CTPMQRT, XERBLA EXTERNAL CGEMQRT, CTPMQRT, XERBLA
* .. * ..
@ -264,7 +267,7 @@
* Determine the block size if it is tall skinny or short and wide * Determine the block size if it is tall skinny or short and wide
* *
IF( INFO.EQ.0) THEN IF( INFO.EQ.0) THEN
WORK(1) = LW WORK(1) = SROUNDUP_LWORK(LW)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -409,7 +412,7 @@
* *
END IF END IF
* *
WORK(1) = LW WORK(1) = SROUNDUP_LWORK(LW)
RETURN RETURN
* *
* End of CLAMTSQR * End of CLAMTSQR

View File

@ -159,6 +159,8 @@
*> SIAM J. Sci. Comput, vol. 34, no. 1, 2012 *> SIAM J. Sci. Comput, vol. 34, no. 1, 2012
*> \endverbatim *> \endverbatim
*> *>
*> \ingroup laswlq
*>
* ===================================================================== * =====================================================================
SUBROUTINE CLASWLQ( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK, SUBROUTINE CLASWLQ( M, N, MB, NB, A, LDA, T, LDT, WORK, LWORK,
$ INFO) $ INFO)
@ -183,16 +185,14 @@
* .. * ..
* .. EXTERNAL FUNCTIONS .. * .. EXTERNAL FUNCTIONS ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME INTEGER ILAENV
REAL SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, SROUNDUP_LWORK
* .. EXTERNAL SUBROUTINES .. * .. EXTERNAL SUBROUTINES ..
EXTERNAL CGELQT, CTPLQT, XERBLA EXTERNAL CGELQT, CTPLQT, XERBLA
* .. INTRINSIC FUNCTIONS .. * .. INTRINSIC FUNCTIONS ..
INTRINSIC MAX, MIN, MOD INTRINSIC MAX, MIN, MOD
* .. * ..
* .. EXTERNAL FUNCTIONS ..
INTEGER ILAENV
EXTERNAL ILAENV
* ..
* .. EXECUTABLE STATEMENTS .. * .. EXECUTABLE STATEMENTS ..
* *
* TEST THE INPUT ARGUMENTS * TEST THE INPUT ARGUMENTS
@ -217,7 +217,7 @@
INFO = -10 INFO = -10
END IF END IF
IF( INFO.EQ.0) THEN IF( INFO.EQ.0) THEN
WORK(1) = MB*M WORK(1) = SROUNDUP_LWORK(MB*M)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -266,7 +266,7 @@
$ WORK, INFO ) $ WORK, INFO )
END IF END IF
* *
WORK( 1 ) = M * MB WORK( 1 ) = SROUNDUP_LWORK(M * MB)
RETURN RETURN
* *
* End of CLASWLQ * End of CLASWLQ

View File

@ -161,6 +161,8 @@
*> SIAM J. Sci. Comput, vol. 34, no. 1, 2012 *> SIAM J. Sci. Comput, vol. 34, no. 1, 2012
*> \endverbatim *> \endverbatim
*> *>
*> \ingroup latsqr
*>
* ===================================================================== * =====================================================================
SUBROUTINE CLATSQR( M, N, MB, NB, A, LDA, T, LDT, WORK, SUBROUTINE CLATSQR( M, N, MB, NB, A, LDA, T, LDT, WORK,
$ LWORK, INFO) $ LWORK, INFO)
@ -185,7 +187,8 @@
* .. * ..
* .. EXTERNAL FUNCTIONS .. * .. EXTERNAL FUNCTIONS ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. EXTERNAL SUBROUTINES .. * .. EXTERNAL SUBROUTINES ..
EXTERNAL CGEQRT, CTPQRT, XERBLA EXTERNAL CGEQRT, CTPQRT, XERBLA
* .. INTRINSIC FUNCTIONS .. * .. INTRINSIC FUNCTIONS ..
@ -215,7 +218,7 @@
INFO = -10 INFO = -10
END IF END IF
IF( INFO.EQ.0) THEN IF( INFO.EQ.0) THEN
WORK(1) = NB*N WORK(1) = SROUNDUP_LWORK(NB*N)
END IF END IF
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
CALL XERBLA( 'CLATSQR', -INFO ) CALL XERBLA( 'CLATSQR', -INFO )
@ -262,7 +265,7 @@
$ WORK, INFO ) $ WORK, INFO )
END IF END IF
* *
work( 1 ) = N*NB WORK( 1 ) = SROUNDUP_LWORK(N*NB)
RETURN RETURN
* *
* End of CLATSQR * End of CLATSQR

View File

@ -192,7 +192,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup stedc
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -233,8 +233,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL SLAMCH, SLANST REAL SLAMCH, SLANST, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, SLAMCH, SLANST EXTERNAL ILAENV, LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, CLACPY, CLACRM, CLAED0, CSTEQR, CSWAP, EXTERNAL XERBLA, CLACPY, CLACRM, CLAED0, CSTEQR, CSWAP,
@ -295,7 +295,7 @@
LRWMIN = 1 + 4*N + 2*N**2 LRWMIN = 1 + 4*N + 2*N**2
LIWMIN = 3 + 5*N LIWMIN = 3 + 5*N
END IF END IF
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
@ -466,7 +466,7 @@
END IF END IF
* *
70 CONTINUE 70 CONTINUE
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RWORK( 1 ) = LRWMIN RWORK( 1 ) = LRWMIN
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *

View File

@ -376,8 +376,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SLAMCH, SLANST REAL SLAMCH, SLANST, SROUNDUP_LWORK
EXTERNAL LSAME, SLAMCH, SLANST EXTERNAL LSAME, SLAMCH, SLANST, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CLARRV, CSWAP, SCOPY, SLAE2, SLAEV2, SLARRC, EXTERNAL CLARRV, CSWAP, SCOPY, SLAE2, SLAEV2, SLARRC,
@ -462,7 +462,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
@ -801,7 +801,7 @@
ENDIF ENDIF
* *
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
RETURN RETURN
* *

View File

@ -163,7 +163,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYsolve *> \ingroup hesv
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYSV( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, SUBROUTINE CSYSV( 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, CSYTRF, CSYTRS, CSYTRS2 EXTERNAL XERBLA, CSYTRF, CSYTRS, CSYTRS2
@ -225,7 +226,7 @@
CALL CSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO ) CALL CSYTRF( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
LWKOPT = INT( WORK( 1 ) ) LWKOPT = INT( WORK( 1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -258,7 +259,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -154,7 +154,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYsolve *> \ingroup hesv_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYSV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK, SUBROUTINE CSYSV_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, WORK,
@ -182,7 +182,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 XERBLA, CSYTRF_AA, CSYTRS_AA EXTERNAL XERBLA, CSYTRF_AA, CSYTRS_AA
@ -217,7 +218,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
@ -239,7 +240,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -177,7 +177,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \ingroup hesv_aa_2stage
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYSV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB, SUBROUTINE CSYSV_AA_2STAGE( UPLO, N, NRHS, A, LDA, TB, LTB,
@ -207,7 +207,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CSYTRF_AA_2STAGE, EXTERNAL CSYTRF_AA_2STAGE,
@ -267,7 +268,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -205,7 +205,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYsolve *> \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, CSYTRF_RK, CSYTRS_3 EXTERNAL XERBLA, CSYTRF_RK, CSYTRS_3
@ -282,7 +283,7 @@
CALL CSYTRF_RK( UPLO, N, A, LDA, E, IPIV, WORK, -1, INFO ) CALL CSYTRF_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
@ -304,7 +305,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -181,7 +181,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYsolve *> \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, CSYTRF_ROOK, CSYTRS_ROOK EXTERNAL XERBLA, CSYTRF_ROOK, CSYTRS_ROOK
@ -258,7 +259,7 @@
CALL CSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO ) CALL CSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, -1, INFO )
LWKOPT = INT( WORK( 1 ) ) LWKOPT = INT( WORK( 1 ) )
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -281,7 +282,7 @@
* *
END IF END IF
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -276,7 +276,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYsolve *> \ingroup hesvx
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, SUBROUTINE CSYSVX( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
@ -313,8 +313,8 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV INTEGER ILAENV
REAL CLANSY, SLAMCH REAL CLANSY, SLAMCH, SROUNDUP_LWORK
EXTERNAL ILAENV, LSAME, CLANSY, SLAMCH EXTERNAL ILAENV, LSAME, CLANSY, SLAMCH, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CLACPY, CSYCON, CSYRFS, CSYTRF, CSYTRS, XERBLA EXTERNAL CLACPY, CSYCON, CSYRFS, CSYTRF, CSYTRS, XERBLA
@ -356,7 +356,7 @@
NB = ILAENV( 1, 'CSYTRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CSYTRF', 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
@ -405,7 +405,7 @@
IF( RCOND.LT.SLAMCH( 'Epsilon' ) ) IF( RCOND.LT.SLAMCH( 'Epsilon' ) )
$ INFO = N + 1 $ INFO = N + 1
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -135,7 +135,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \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 CLASYF, CSYTF2, XERBLA EXTERNAL CLASYF, CSYTF2, XERBLA
@ -233,7 +234,7 @@
* *
NB = ILAENV( 1, 'CSYTRF', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CSYTRF', 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
@ -351,7 +352,7 @@
END IF END IF
* *
40 CONTINUE 40 CONTINUE
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CSYTRF * End of CSYTRF

View File

@ -125,7 +125,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \ingroup hetrf_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYTRF_AA( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO) SUBROUTINE CSYTRF_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 CLASYF_AA, CGEMM, CGEMV, CSCAL, CSWAP, CCOPY, EXTERNAL CLASYF_AA, CGEMM, CGEMV, CSCAL, CSWAP, CCOPY,
@ -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 CSYTRF_AA * End of CSYTRF_AA

View File

@ -152,7 +152,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \ingroup hetrf_aa_2stage
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV, SUBROUTINE CSYTRF_AA_2STAGE( UPLO, N, A, LDA, TB, LTB, IPIV,
@ -188,7 +188,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 CCOPY, CGBTRF, CGEMM, CGETRF, CLACPY, EXTERNAL CCOPY, CGBTRF, CGEMM, CGETRF, CLACPY,
@ -230,7 +231,7 @@
TB( 1 ) = (3*NB+1)*N TB( 1 ) = (3*NB+1)*N
END IF END IF
IF( WQUERY ) THEN IF( WQUERY ) THEN
WORK( 1 ) = N*NB WORK( 1 ) = SROUNDUP_LWORK(N*NB)
END IF END IF
END IF END IF
IF( TQUERY .OR. WQUERY ) THEN IF( TQUERY .OR. WQUERY ) THEN

View File

@ -229,7 +229,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \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 CLASYF_RK, CSYTF2_RK, CSWAP, XERBLA EXTERNAL CLASYF_RK, CSYTF2_RK, CSWAP, XERBLA
@ -311,7 +312,7 @@
* *
NB = ILAENV( 1, 'CSYTRF_RK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CSYTRF_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 CSYTRF_RK * End of CSYTRF_RK

View File

@ -146,7 +146,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \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 CLASYF_ROOK, CSYTF2_ROOK, XERBLA EXTERNAL CLASYF_ROOK, CSYTF2_ROOK, XERBLA
@ -259,7 +260,7 @@
* *
NB = ILAENV( 1, 'CSYTRF_ROOK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CSYTRF_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 CSYTRF_ROOK * End of CSYTRF_ROOK

View File

@ -152,7 +152,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \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 CSYTRI_3X, XERBLA EXTERNAL CSYTRI_3X, XERBLA
@ -225,7 +226,7 @@
CALL XERBLA( 'CSYTRI_3', -INFO ) CALL XERBLA( 'CSYTRI_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 CSYTRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO ) CALL CSYTRI_3X( UPLO, N, A, LDA, E, IPIV, WORK, NB, INFO )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -123,7 +123,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \ingroup hetrs_aa
* *
* ===================================================================== * =====================================================================
SUBROUTINE CSYTRS_AA( UPLO, N, NRHS, A, LDA, IPIV, B, LDB, SUBROUTINE CSYTRS_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 CLACPY, CGTSV, CSWAP, CTRSM, XERBLA EXTERNAL CLACPY, CGTSV, CSWAP, CTRSM, XERBLA
@ -186,7 +187,7 @@
RETURN RETURN
ELSE IF( LQUERY ) THEN ELSE IF( LQUERY ) THEN
LWKOPT = (3*N-2) LWKOPT = (3*N-2)
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
END IF END IF
* *

View File

@ -290,7 +290,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup tgsen
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -467,6 +467,10 @@
* .. Local Arrays .. * .. Local Arrays ..
INTEGER ISAVE( 3 ) INTEGER ISAVE( 3 )
* .. * ..
* .. External Functions ..
REAL SROUNDUP_LWORK
EXTERNAL SROUNDUP_LWORK
* ..
* .. External Subroutines .. * .. External Subroutines ..
REAL SLAMCH REAL SLAMCH
EXTERNAL CLACN2, CLACPY, CLASSQ, CSCAL, CTGEXC, CTGSYL, EXTERNAL CLACN2, CLACPY, CLASSQ, CSCAL, CTGEXC, CTGSYL,
@ -537,7 +541,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
@ -771,7 +775,7 @@
* *
70 CONTINUE 70 CONTINUE
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
IWORK( 1 ) = LIWMIN IWORK( 1 ) = LIWMIN
* *
RETURN RETURN

View File

@ -213,7 +213,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup tgsna
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -343,12 +343,13 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL SCNRM2, SLAMCH, SLAPY2 REAL SCNRM2, SLAMCH, SLAPY2, SROUNDUP_LWORK
COMPLEX CDOTC COMPLEX CDOTC
EXTERNAL LSAME, SCNRM2, SLAMCH, SLAPY2, CDOTC EXTERNAL LSAME, SCNRM2, SLAMCH, SLAPY2, SROUNDUP_LWORK,
$ CDOTC
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEMV, CLACPY, CTGEXC, CTGSYL, SLABAD, XERBLA EXTERNAL CGEMV, CLACPY, CTGEXC, CTGSYL, XERBLA
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC ABS, CMPLX, MAX INTRINSIC ABS, CMPLX, MAX
@ -402,7 +403,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
@ -428,7 +429,6 @@
EPS = SLAMCH( 'P' ) EPS = SLAMCH( 'P' )
SMLNUM = SLAMCH( 'S' ) / EPS SMLNUM = SLAMCH( 'S' ) / EPS
BIGNUM = ONE / SMLNUM BIGNUM = ONE / SMLNUM
CALL SLABAD( SMLNUM, BIGNUM )
KS = 0 KS = 0
DO 20 K = 1, N DO 20 K = 1, N
* *
@ -508,7 +508,7 @@
END IF END IF
* *
20 CONTINUE 20 CONTINUE
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
RETURN RETURN
* *
* End of CTGSNA * End of CTGSNA

View File

@ -260,7 +260,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexSYcomputational *> \ingroup tgsyl
* *
*> \par Contributors: *> \par Contributors:
* ================== * ==================
@ -329,7 +329,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 CGEMM, CLACPY, CLASET, CSCAL, CTGSY2, XERBLA EXTERNAL CGEMM, CLACPY, CLASET, CSCAL, CTGSY2, XERBLA
@ -382,7 +383,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
@ -683,7 +684,7 @@
210 CONTINUE 210 CONTINUE
END IF END IF
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -222,7 +222,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup trevc3
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -278,12 +278,13 @@
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV, ICAMAX INTEGER ILAENV, ICAMAX
REAL SLAMCH, SCASUM REAL SLAMCH, SCASUM, SROUNDUP_LWORK
EXTERNAL LSAME, ILAENV, ICAMAX, SLAMCH, SCASUM EXTERNAL LSAME, ILAENV, ICAMAX, SLAMCH, SCASUM,
$ SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL XERBLA, CCOPY, CLASET, CSSCAL, CGEMM, CGEMV, EXTERNAL XERBLA, CCOPY, CLASET, CSSCAL, CGEMM, CGEMV,
$ CLATRS, CLACPY, SLABAD $ CLATRS, CLACPY
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC ABS, REAL, CMPLX, CONJG, AIMAG, MAX INTRINSIC ABS, REAL, CMPLX, CONJG, AIMAG, MAX
@ -322,7 +323,7 @@
INFO = 0 INFO = 0
NB = ILAENV( 1, 'CTREVC', SIDE // HOWMNY, N, -1, -1, -1 ) NB = ILAENV( 1, 'CTREVC', SIDE // HOWMNY, N, -1, -1, -1 )
MAXWRK = MAX( 1, N + 2*N*NB ) MAXWRK = MAX( 1, N + 2*N*NB )
WORK(1) = MAXWRK WORK(1) = SROUNDUP_LWORK(MAXWRK)
RWORK(1) = MAX( 1, N ) RWORK(1) = MAX( 1, N )
LQUERY = ( LWORK.EQ.-1 .OR. LRWORK.EQ.-1 ) LQUERY = ( LWORK.EQ.-1 .OR. LRWORK.EQ.-1 )
IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
@ -371,7 +372,6 @@
* *
UNFL = SLAMCH( 'Safe minimum' ) UNFL = SLAMCH( 'Safe minimum' )
OVFL = ONE / UNFL OVFL = ONE / UNFL
CALL SLABAD( UNFL, OVFL )
ULP = SLAMCH( 'Precision' ) ULP = SLAMCH( 'Precision' )
SMLNUM = UNFL*( N / ULP ) SMLNUM = UNFL*( N / ULP )
* *

View File

@ -182,7 +182,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup trsen
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -293,8 +293,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
REAL CLANGE REAL CLANGE, SROUNDUP_LWORK
EXTERNAL LSAME, CLANGE EXTERNAL LSAME, CLANGE, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CLACN2, CLACPY, CTREXC, CTRSYL, XERBLA EXTERNAL CLACN2, CLACPY, CTREXC, CTRSYL, XERBLA
@ -350,7 +350,7 @@
END IF END IF
* *
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
END IF END IF
* *
IF( INFO.NE.0 ) THEN IF( INFO.NE.0 ) THEN
@ -444,7 +444,7 @@
W( K ) = T( K, K ) W( K ) = T( K, K )
50 CONTINUE 50 CONTINUE
* *
WORK( 1 ) = LWMIN WORK( 1 ) = SROUNDUP_LWORK(LWMIN)
* *
RETURN RETURN
* *

View File

@ -116,7 +116,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \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 CLATRZ( MU, N, N-M, A, LDA, TAU, WORK ) $ CALL CLATRZ( MU, N, N-M, A, LDA, TAU, WORK )
* *
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
* *
RETURN RETURN
* *

View File

@ -255,7 +255,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unbdb
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -320,9 +320,9 @@
* *
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SCNRM2 REAL SCNRM2, SROUNDUP_LWORK
LOGICAL LSAME LOGICAL LSAME
EXTERNAL SCNRM2, LSAME EXTERNAL SCNRM2, SROUNDUP_LWORK, LSAME
* .. * ..
* .. Intrinsic Functions * .. Intrinsic Functions
INTRINSIC ATAN2, COS, MAX, MIN, SIN INTRINSIC ATAN2, COS, MAX, MIN, SIN
@ -377,7 +377,7 @@
IF( INFO .EQ. 0 ) THEN IF( INFO .EQ. 0 ) THEN
LWORKOPT = M - Q LWORKOPT = M - Q
LWORKMIN = M - Q LWORKMIN = M - Q
WORK(1) = LWORKOPT WORK(1) = SROUNDUP_LWORK(LWORKOPT)
IF( LWORK .LT. LWORKMIN .AND. .NOT. LQUERY ) THEN IF( LWORK .LT. LWORKMIN .AND. .NOT. LQUERY ) THEN
INFO = -21 INFO = -21
END IF END IF

View File

@ -173,7 +173,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unbdb1
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -230,8 +230,8 @@
EXTERNAL CLACGV EXTERNAL CLACGV
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SCNRM2 REAL SCNRM2, SROUNDUP_LWORK
EXTERNAL SCNRM2 EXTERNAL SCNRM2, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Function .. * .. Intrinsic Function ..
INTRINSIC ATAN2, COS, MAX, SIN, SQRT INTRINSIC ATAN2, COS, MAX, SIN, SQRT
@ -264,7 +264,7 @@
LORBDB5 = Q-2 LORBDB5 = Q-2
LWORKOPT = MAX( ILARF+LLARF-1, IORBDB5+LORBDB5-1 ) LWORKOPT = MAX( ILARF+LLARF-1, IORBDB5+LORBDB5-1 )
LWORKMIN = LWORKOPT LWORKMIN = LWORKOPT
WORK(1) = LWORKOPT WORK(1) = SROUNDUP_LWORK(LWORKOPT)
IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN
INFO = -14 INFO = -14
END IF END IF

View File

@ -173,7 +173,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unbdb2
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -231,8 +231,8 @@
$ XERBLA $ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SCNRM2 REAL SCNRM2, SROUNDUP_LWORK
EXTERNAL SCNRM2 EXTERNAL SCNRM2, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Function .. * .. Intrinsic Function ..
INTRINSIC ATAN2, COS, MAX, SIN, SQRT INTRINSIC ATAN2, COS, MAX, SIN, SQRT
@ -265,7 +265,7 @@
LORBDB5 = Q-1 LORBDB5 = Q-1
LWORKOPT = MAX( ILARF+LLARF-1, IORBDB5+LORBDB5-1 ) LWORKOPT = MAX( ILARF+LLARF-1, IORBDB5+LORBDB5-1 )
LWORKMIN = LWORKOPT LWORKMIN = LWORKOPT
WORK(1) = LWORKOPT WORK(1) = SROUNDUP_LWORK(LWORKOPT)
IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN
INFO = -14 INFO = -14
END IF END IF

View File

@ -173,7 +173,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unbdb3
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -229,8 +229,8 @@
EXTERNAL CLARF, CLARFGP, CUNBDB5, CSROT, CLACGV, XERBLA EXTERNAL CLARF, CLARFGP, CUNBDB5, CSROT, CLACGV, XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SCNRM2 REAL SCNRM2, SROUNDUP_LWORK
EXTERNAL SCNRM2 EXTERNAL SCNRM2, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Function .. * .. Intrinsic Function ..
INTRINSIC ATAN2, COS, MAX, SIN, SQRT INTRINSIC ATAN2, COS, MAX, SIN, SQRT
@ -263,7 +263,7 @@
LORBDB5 = Q-1 LORBDB5 = Q-1
LWORKOPT = MAX( ILARF+LLARF-1, IORBDB5+LORBDB5-1 ) LWORKOPT = MAX( ILARF+LLARF-1, IORBDB5+LORBDB5-1 )
LWORKMIN = LWORKOPT LWORKMIN = LWORKOPT
WORK(1) = LWORKOPT WORK(1) = SROUNDUP_LWORK(LWORKOPT)
IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN
INFO = -14 INFO = -14
END IF END IF

View File

@ -183,7 +183,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unbdb4
* *
*> \par Further Details: *> \par Further Details:
* ===================== * =====================
@ -242,8 +242,8 @@
$ XERBLA $ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SCNRM2 REAL SCNRM2, SROUNDUP_LWORK
EXTERNAL SCNRM2 EXTERNAL SCNRM2, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Function .. * .. Intrinsic Function ..
INTRINSIC ATAN2, COS, MAX, SIN, SQRT INTRINSIC ATAN2, COS, MAX, SIN, SQRT
@ -277,7 +277,7 @@
LWORKOPT = ILARF + LLARF - 1 LWORKOPT = ILARF + LLARF - 1
LWORKOPT = MAX( LWORKOPT, IORBDB5 + LORBDB5 - 1 ) LWORKOPT = MAX( LWORKOPT, IORBDB5 + LORBDB5 - 1 )
LWORKMIN = LWORKOPT LWORKMIN = LWORKOPT
WORK(1) = LWORKOPT WORK(1) = SROUNDUP_LWORK(LWORKOPT)
IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN
INFO = -14 INFO = -14
END IF END IF

View File

@ -308,7 +308,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup uncsd
* *
* ===================================================================== * =====================================================================
RECURSIVE SUBROUTINE CUNCSD( JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS, RECURSIVE SUBROUTINE CUNCSD( JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS,
@ -365,7 +365,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Functions * .. Intrinsic Functions
INTRINSIC INT, MAX, MIN INTRINSIC INT, MAX, MIN
@ -504,7 +505,8 @@
$ IORBDB + LORBDBWORKOPT ) - 1 $ IORBDB + LORBDBWORKOPT ) - 1
LWORKMIN = MAX( IORGQR + LORGQRWORKMIN, IORGLQ + LORGLQWORKMIN, LWORKMIN = MAX( IORGQR + LORGQRWORKMIN, IORGLQ + LORGLQWORKMIN,
$ IORBDB + LORBDBWORKMIN ) - 1 $ IORBDB + LORBDBWORKMIN ) - 1
WORK(1) = MAX(LWORKOPT,LWORKMIN) LWORKOPT = MAX(LWORKOPT,LWORKMIN)
WORK(1) = SROUNDUP_LWORK(LWORKOPT)
* *
IF( LWORK .LT. LWORKMIN IF( LWORK .LT. LWORKMIN
$ .AND. .NOT. ( LQUERY .OR. LRQUERY ) ) THEN $ .AND. .NOT. ( LQUERY .OR. LRQUERY ) ) THEN

View File

@ -247,7 +247,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup uncsd2by1
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNCSD2BY1( JOBU1, JOBU2, JOBV1T, M, P, Q, X11, LDX11, SUBROUTINE CUNCSD2BY1( JOBU1, JOBU2, JOBV1T, M, P, Q, X11, LDX11,
@ -299,7 +299,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. Intrinsic Function .. * .. Intrinsic Function ..
INTRINSIC INT, MAX, MIN INTRINSIC INT, MAX, MIN
@ -508,7 +509,7 @@
LWORKOPT = MAX( IORBDB+LORBDB-1, LWORKOPT = MAX( IORBDB+LORBDB-1,
$ IORGQR+LORGQROPT-1, $ IORGQR+LORGQROPT-1,
$ IORGLQ+LORGLQOPT-1 ) $ IORGLQ+LORGLQOPT-1 )
WORK(1) = LWORKOPT WORK(1) = SROUNDUP_LWORK(LWORKOPT)
IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN IF( LWORK .LT. LWORKMIN .AND. .NOT.LQUERY ) THEN
INFO = -19 INFO = -19
END IF END IF

View File

@ -150,7 +150,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexGBcomputational *> \ingroup ungbr
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGBR( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGBR( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO )
@ -180,7 +180,8 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
EXTERNAL LSAME REAL SROUNDUP_LWORK
EXTERNAL LSAME, SROUNDUP_LWORK
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CUNGLQ, CUNGQR, XERBLA EXTERNAL CUNGLQ, CUNGQR, XERBLA
@ -241,7 +242,7 @@
CALL XERBLA( 'CUNGBR', -INFO ) CALL XERBLA( 'CUNGBR', -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
* *
@ -327,7 +328,7 @@
END IF END IF
END IF END IF
END IF END IF
WORK( 1 ) = LWKOPT WORK( 1 ) = SROUNDUP_LWORK(LWKOPT)
RETURN RETURN
* *
* End of CUNGBR * End of CUNGBR

View File

@ -119,7 +119,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unghr
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGHR( N, ILO, IHI, A, LDA, TAU, WORK, LWORK, INFO )
@ -151,7 +151,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
@ -178,7 +179,7 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
NB = ILAENV( 1, 'CUNGQR', ' ', NH, NH, NH, -1 ) NB = ILAENV( 1, 'CUNGQR', ' ', 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
@ -230,7 +231,7 @@
CALL CUNGQR( NH, NH, NH, A( ILO+1, ILO+1 ), LDA, TAU( ILO ), CALL CUNGQR( 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 CUNGHR * End of CUNGHR

View File

@ -120,7 +120,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unglq
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGLQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGLQ( 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, 'CUNGLQ', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'CUNGLQ', ' ', 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 CUNGLQ * End of CUNGLQ

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup ungql
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGQL( 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, 'CUNGQL', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'CUNGQL', ' ', 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

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup ungqr
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGQR( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGQR( 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, 'CUNGQR', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'CUNGQR', ' ', 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 CUNGQR * End of CUNGQR

View File

@ -121,7 +121,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup ungrq
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGRQ( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGRQ( 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, 'CUNGRQ', ' ', M, N, K, -1 ) NB = ILAENV( 1, 'CUNGRQ', ' ', 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
@ -286,7 +287,7 @@
50 CONTINUE 50 CONTINUE
END IF END IF
* *
WORK( 1 ) = IWS WORK( 1 ) = SROUNDUP_LWORK(IWS)
RETURN RETURN
* *
* End of CUNGRQ * End of CUNGRQ

View File

@ -116,7 +116,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup ungtr
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO ) SUBROUTINE CUNGTR( UPLO, N, A, LDA, TAU, WORK, LWORK, INFO )
@ -147,7 +147,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 CUNGQL, CUNGQR, XERBLA EXTERNAL CUNGQL, CUNGQR, XERBLA
@ -179,7 +180,7 @@
NB = ILAENV( 1, 'CUNGQR', ' ', N-1, N-1, N-1, -1 ) NB = ILAENV( 1, 'CUNGQR', ' ', 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
@ -245,7 +246,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 CUNGTR * End of CUNGTR

View File

@ -189,7 +189,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \ingroup complexOTHERcomputational *> \ingroup unmbr
* *
* ===================================================================== * =====================================================================
SUBROUTINE CUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C, SUBROUTINE CUNMBR( VECT, SIDE, TRANS, M, N, K, A, LDA, TAU, C,
@ -218,7 +218,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 CUNMLQ, CUNMQR, XERBLA EXTERNAL CUNMLQ, CUNMQR, XERBLA
@ -290,7 +291,7 @@
ELSE ELSE
LWKOPT = 1 LWKOPT = 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
@ -367,7 +368,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 CUNMBR * End of CUNMBR

Some files were not shown because too many files have changed in this diff Show More