Import LAPACK: SRC directory
This commit is contained in:
parent
13d40e7591
commit
92a858e69e
|
@ -141,7 +141,7 @@ set(SLASRC
|
|||
stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f
|
||||
stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f
|
||||
stptrs.f
|
||||
strcon.f strevc.f strexc.f strrfs.f strsen.f strsna.f strsyl.f
|
||||
strcon.f strevc.f strevc3.f strexc.f strrfs.f strsen.f strsna.f strsyl.f
|
||||
strti2.f strtri.f strtrs.f stzrzf.f sstemr.f
|
||||
slansf.f spftrf.f spftri.f spftrs.f ssfrk.f stfsm.f stftri.f stfttp.f
|
||||
stfttr.f stpttf.f stpttr.f strttf.f strttp.f
|
||||
|
@ -221,7 +221,7 @@ set(CLASRC
|
|||
ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f
|
||||
ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f
|
||||
ctprfs.f ctptri.f
|
||||
ctptrs.f ctrcon.f ctrevc.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f
|
||||
ctptrs.f ctrcon.f ctrevc.f ctrevc3.f ctrexc.f ctrrfs.f ctrsen.f ctrsna.f
|
||||
ctrsyl.f ctrti2.f ctrtri.f ctrtrs.f ctzrzf.f cung2l.f cung2r.f
|
||||
cungbr.f cunghr.f cungl2.f cunglq.f cungql.f cungqr.f cungr2.f
|
||||
cungrq.f cungtr.f cunm2l.f cunm2r.f cunmbr.f cunmhr.f cunml2.f cunm22.f
|
||||
|
@ -302,7 +302,7 @@ set(DLASRC
|
|||
dtbrfs.f dtbtrs.f dtgevc.f dtgex2.f dtgexc.f dtgsen.f
|
||||
dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f
|
||||
dtptrs.f
|
||||
dtrcon.f dtrevc.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f
|
||||
dtrcon.f dtrevc.f dtrevc3.f dtrexc.f dtrrfs.f dtrsen.f dtrsna.f dtrsyl.f
|
||||
dtrti2.f dtrtri.f dtrtrs.f dtzrzf.f dstemr.f
|
||||
dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.f
|
||||
dlansf.f dpftrf.f dpftri.f dpftrs.f dsfrk.f dtfsm.f dtftri.f dtfttp.f
|
||||
|
@ -383,7 +383,7 @@ set(ZLASRC
|
|||
ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f
|
||||
ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f
|
||||
ztprfs.f ztptri.f
|
||||
ztptrs.f ztrcon.f ztrevc.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f
|
||||
ztptrs.f ztrcon.f ztrevc.f ztrevc3.f ztrexc.f ztrrfs.f ztrsen.f ztrsna.f
|
||||
ztrsyl.f ztrti2.f ztrtri.f ztrtrs.f ztzrzf.f zung2l.f
|
||||
zung2r.f zungbr.f zunghr.f zungl2.f zunglq.f zungql.f zungqr.f zungr2.f
|
||||
zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f
|
||||
|
|
|
@ -150,7 +150,7 @@ SLASRC = \
|
|||
stbrfs.o stbtrs.o stgevc.o stgex2.o stgexc.o stgsen.o \
|
||||
stgsja.o stgsna.o stgsy2.o stgsyl.o stpcon.o stprfs.o stptri.o \
|
||||
stptrs.o \
|
||||
strcon.o strevc.o strexc.o strrfs.o strsen.o strsna.o strsyl.o \
|
||||
strcon.o strevc.o strevc3.o strexc.o strrfs.o strsen.o strsna.o strsyl.o \
|
||||
strtrs.o stzrzf.o sstemr.o \
|
||||
slansf.o spftrf.o spftri.o spftrs.o ssfrk.o stfsm.o stftri.o stfttp.o \
|
||||
stfttr.o stpttf.o stpttr.o strttf.o strttp.o \
|
||||
|
@ -231,7 +231,7 @@ CLASRC = \
|
|||
ctbcon.o ctbrfs.o ctbtrs.o ctgevc.o ctgex2.o \
|
||||
ctgexc.o ctgsen.o ctgsja.o ctgsna.o ctgsy2.o ctgsyl.o ctpcon.o \
|
||||
ctprfs.o ctptri.o \
|
||||
ctptrs.o ctrcon.o ctrevc.o ctrexc.o ctrrfs.o ctrsen.o ctrsna.o \
|
||||
ctptrs.o ctrcon.o ctrevc.o ctrevc3.o ctrexc.o ctrrfs.o ctrsen.o ctrsna.o \
|
||||
ctrsyl.o ctrtrs.o ctzrzf.o cung2l.o cung2r.o \
|
||||
cungbr.o cunghr.o cungl2.o cunglq.o cungql.o cungqr.o cungr2.o \
|
||||
cungrq.o cungtr.o cunm2l.o cunm2r.o cunmbr.o cunmhr.o cunml2.o cunm22.o \
|
||||
|
@ -316,7 +316,7 @@ DLASRC = \
|
|||
dtbcon.o dtbrfs.o dtbtrs.o dtgevc.o dtgex2.o dtgexc.o dtgsen.o \
|
||||
dtgsja.o dtgsna.o dtgsy2.o dtgsyl.o dtpcon.o dtprfs.o dtptri.o \
|
||||
dtptrs.o \
|
||||
dtrcon.o dtrevc.o dtrexc.o dtrrfs.o dtrsen.o dtrsna.o dtrsyl.o \
|
||||
dtrcon.o dtrevc.o dtrevc3.o dtrexc.o dtrrfs.o dtrsen.o dtrsna.o dtrsyl.o \
|
||||
dtrtrs.o dtzrzf.o dstemr.o \
|
||||
dsgesv.o dsposv.o dlag2s.o slag2d.o dlat2s.o \
|
||||
dlansf.o dpftrf.o dpftri.o dpftrs.o dsfrk.o dtfsm.o dtftri.o dtfttp.o \
|
||||
|
@ -400,7 +400,7 @@ ZLASRC = \
|
|||
ztbcon.o ztbrfs.o ztbtrs.o ztgevc.o ztgex2.o \
|
||||
ztgexc.o ztgsen.o ztgsja.o ztgsna.o ztgsy2.o ztgsyl.o ztpcon.o \
|
||||
ztprfs.o ztptri.o \
|
||||
ztptrs.o ztrcon.o ztrevc.o ztrexc.o ztrrfs.o ztrsen.o ztrsna.o \
|
||||
ztptrs.o ztrcon.o ztrevc.o ztrevc3.o ztrexc.o ztrrfs.o ztrsen.o ztrsna.o \
|
||||
ztrsyl.o ztrtrs.o ztzrzf.o zung2l.o \
|
||||
zung2r.o zungbr.o zunghr.o zungl2.o zunglq.o zungql.o zungqr.o zungr2.o \
|
||||
zungrq.o zungtr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o zunm22.o \
|
||||
|
|
|
@ -149,7 +149,7 @@
|
|||
*> \param[in,out] U1
|
||||
*> \verbatim
|
||||
*> U1 is COMPLEX array, dimension (LDU1,P)
|
||||
*> On entry, an LDU1-by-P matrix. On exit, U1 is postmultiplied
|
||||
*> On entry, a P-by-P matrix. On exit, U1 is postmultiplied
|
||||
*> by the left singular vector matrix common to [ B11 ; 0 ] and
|
||||
*> [ B12 0 0 ; 0 -I 0 0 ].
|
||||
*> \endverbatim
|
||||
|
@ -157,13 +157,13 @@
|
|||
*> \param[in] LDU1
|
||||
*> \verbatim
|
||||
*> LDU1 is INTEGER
|
||||
*> The leading dimension of the array U1.
|
||||
*> The leading dimension of the array U1, LDU1 >= MAX(1,P).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] U2
|
||||
*> \verbatim
|
||||
*> U2 is COMPLEX array, dimension (LDU2,M-P)
|
||||
*> On entry, an LDU2-by-(M-P) matrix. On exit, U2 is
|
||||
*> On entry, an (M-P)-by-(M-P) matrix. On exit, U2 is
|
||||
*> postmultiplied by the left singular vector matrix common to
|
||||
*> [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ].
|
||||
*> \endverbatim
|
||||
|
@ -171,13 +171,13 @@
|
|||
*> \param[in] LDU2
|
||||
*> \verbatim
|
||||
*> LDU2 is INTEGER
|
||||
*> The leading dimension of the array U2.
|
||||
*> The leading dimension of the array U2, LDU2 >= MAX(1,M-P).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] V1T
|
||||
*> \verbatim
|
||||
*> V1T is COMPLEX array, dimension (LDV1T,Q)
|
||||
*> On entry, a LDV1T-by-Q matrix. On exit, V1T is premultiplied
|
||||
*> On entry, a Q-by-Q matrix. On exit, V1T is premultiplied
|
||||
*> by the conjugate transpose of the right singular vector
|
||||
*> matrix common to [ B11 ; 0 ] and [ B21 ; 0 ].
|
||||
*> \endverbatim
|
||||
|
@ -185,13 +185,13 @@
|
|||
*> \param[in] LDV1T
|
||||
*> \verbatim
|
||||
*> LDV1T is INTEGER
|
||||
*> The leading dimension of the array V1T.
|
||||
*> The leading dimension of the array V1T, LDV1T >= MAX(1,Q).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] V2T
|
||||
*> \verbatim
|
||||
*> V2T is COMPLEX array, dimenison (LDV2T,M-Q)
|
||||
*> On entry, a LDV2T-by-(M-Q) matrix. On exit, V2T is
|
||||
*> On entry, an (M-Q)-by-(M-Q) matrix. On exit, V2T is
|
||||
*> premultiplied by the conjugate transpose of the right
|
||||
*> singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and
|
||||
*> [ B22 0 0 ; 0 0 I ].
|
||||
|
@ -200,7 +200,7 @@
|
|||
*> \param[in] LDV2T
|
||||
*> \verbatim
|
||||
*> LDV2T is INTEGER
|
||||
*> The leading dimension of the array V2T.
|
||||
*> The leading dimension of the array V2T, LDV2T >= MAX(1,M-Q).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] B11D
|
||||
|
@ -322,7 +322,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -332,10 +332,10 @@
|
|||
$ V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,
|
||||
$ B22D, B22E, RWORK, LRWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS
|
||||
|
|
|
@ -84,7 +84,7 @@
|
|||
*>
|
||||
*> \param[in] AB
|
||||
*> \verbatim
|
||||
*> AB is DOUBLE PRECISION array, dimension (LDAB,N)
|
||||
*> AB is COMPLEX array, dimension (LDAB,N)
|
||||
*> On entry, the matrix A in band storage, in rows 1 to KL+KU+1.
|
||||
*> The j-th column of A is stored in the j-th column of the
|
||||
*> array AB as follows:
|
||||
|
@ -153,7 +153,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGBcomputational
|
||||
*
|
||||
|
@ -161,10 +161,10 @@
|
|||
SUBROUTINE CGBEQUB( M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND,
|
||||
$ AMAX, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, KL, KU, LDAB, M, N
|
||||
|
|
|
@ -440,7 +440,7 @@
|
|||
$ ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.1) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* April 2012
|
||||
|
@ -642,7 +642,7 @@
|
|||
*
|
||||
* Perform refinement on each right-hand side
|
||||
*
|
||||
IF ( REF_TYPE .NE. 0 ) THEN
|
||||
IF ( REF_TYPE .NE. 0 .AND. INFO .EQ. 0 ) THEN
|
||||
|
||||
PREC_TYPE = ILAPREC( 'D' )
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
*>
|
||||
*> \param[in] SELECT
|
||||
*> \verbatim
|
||||
*> SELECT is procedure) LOGICAL FUNCTION of one COMPLEX argument
|
||||
*> SELECT is a LOGICAL FUNCTION of one COMPLEX argument
|
||||
*> SELECT must be declared EXTERNAL in the calling subroutine.
|
||||
*> If SORT = 'S', SELECT is used to select eigenvalues to order
|
||||
*> to the top left of the Schur form.
|
||||
|
@ -230,7 +230,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEeigen
|
||||
*
|
||||
|
@ -239,10 +239,10 @@
|
|||
$ VS, LDVS, RCONDE, RCONDV, WORK, LWORK, RWORK,
|
||||
$ BWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBVS, SENSE, SORT
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
* INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
* REAL RWORK( * )
|
||||
* COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
* REAL RWORK( * )
|
||||
* COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
* $ W( * ), WORK( * )
|
||||
* ..
|
||||
*
|
||||
|
@ -169,59 +169,62 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
* @generated from zgeev.f, fortran z -> c, Tue Apr 19 01:47:44 2016
|
||||
*
|
||||
*> \ingroup complexGEeigen
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR,
|
||||
$ WORK, LWORK, RWORK, INFO )
|
||||
implicit none
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBVL, JOBVR
|
||||
INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
REAL RWORK( * )
|
||||
COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
REAL RWORK( * )
|
||||
COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
$ W( * ), WORK( * )
|
||||
* ..
|
||||
*
|
||||
* =====================================================================
|
||||
*
|
||||
* .. Parameters ..
|
||||
REAL ZERO, ONE
|
||||
REAL ZERO, ONE
|
||||
PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 )
|
||||
* ..
|
||||
* .. Local Scalars ..
|
||||
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR
|
||||
CHARACTER SIDE
|
||||
INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, IRWORK, ITAU,
|
||||
$ IWRK, K, MAXWRK, MINWRK, NOUT
|
||||
REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
|
||||
COMPLEX TMP
|
||||
$ IWRK, K, LWORK_TREVC, MAXWRK, MINWRK, NOUT
|
||||
REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
|
||||
COMPLEX TMP
|
||||
* ..
|
||||
* .. Local Arrays ..
|
||||
LOGICAL SELECT( 1 )
|
||||
REAL DUM( 1 )
|
||||
REAL DUM( 1 )
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY, CLASCL,
|
||||
$ CSCAL, CSSCAL, CTREVC, CUNGHR, SLABAD, XERBLA
|
||||
EXTERNAL SLABAD, XERBLA, CSSCAL, CGEBAK, CGEBAL, CGEHRD,
|
||||
$ CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3, CUNGHR
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV, ISAMAX
|
||||
REAL CLANGE, SCNRM2, SLAMCH
|
||||
EXTERNAL LSAME, ILAENV, ISAMAX, CLANGE, SCNRM2, SLAMCH
|
||||
INTEGER ISAMAX, ILAENV
|
||||
REAL SLAMCH, SCNRM2, CLANGE
|
||||
EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC AIMAG, CMPLX, CONJG, MAX, REAL, SQRT
|
||||
INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -244,7 +247,6 @@
|
|||
ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN
|
||||
INFO = -10
|
||||
END IF
|
||||
|
||||
*
|
||||
* Compute workspace
|
||||
* (Note: Comments in the code beginning "Workspace:" describe the
|
||||
|
@ -267,18 +269,28 @@
|
|||
IF( WANTVL ) THEN
|
||||
MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'CUNGHR',
|
||||
$ ' ', N, 1, N, -1 ) )
|
||||
CALL CTREVC3( 'L', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK, -1, RWORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
|
||||
CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VL, LDVL,
|
||||
$ WORK, -1, INFO )
|
||||
$ WORK, -1, INFO )
|
||||
ELSE IF( WANTVR ) THEN
|
||||
MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'CUNGHR',
|
||||
$ ' ', N, 1, N, -1 ) )
|
||||
CALL CTREVC3( 'R', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK, -1, RWORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
|
||||
CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VR, LDVR,
|
||||
$ WORK, -1, INFO )
|
||||
$ WORK, -1, INFO )
|
||||
ELSE
|
||||
CALL CHSEQR( 'E', 'N', N, 1, N, A, LDA, W, VR, LDVR,
|
||||
$ WORK, -1, INFO )
|
||||
$ WORK, -1, INFO )
|
||||
END IF
|
||||
HSWORK = WORK( 1 )
|
||||
HSWORK = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, HSWORK, MINWRK )
|
||||
END IF
|
||||
WORK( 1 ) = MAXWRK
|
||||
|
@ -413,12 +425,13 @@
|
|||
IF( WANTVL .OR. WANTVR ) THEN
|
||||
*
|
||||
* Compute left and/or right eigenvectors
|
||||
* (CWorkspace: need 2*N)
|
||||
* (CWorkspace: need 2*N, prefer N + 2*N*NB)
|
||||
* (RWorkspace: need 2*N)
|
||||
*
|
||||
IRWORK = IBAL + N
|
||||
CALL CTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), RWORK( IRWORK ), IERR )
|
||||
CALL CTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), LWORK-IWRK+1,
|
||||
$ RWORK( IRWORK ), N, IERR )
|
||||
END IF
|
||||
*
|
||||
IF( WANTVL ) THEN
|
||||
|
|
|
@ -25,12 +25,12 @@
|
|||
* .. Scalar Arguments ..
|
||||
* CHARACTER BALANC, JOBVL, JOBVR, SENSE
|
||||
* INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N
|
||||
* REAL ABNRM
|
||||
* REAL ABNRM
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
* REAL RCONDE( * ), RCONDV( * ), RWORK( * ),
|
||||
* REAL RCONDE( * ), RCONDV( * ), RWORK( * ),
|
||||
* $ SCALE( * )
|
||||
* COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
* COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
* $ W( * ), WORK( * )
|
||||
* ..
|
||||
*
|
||||
|
@ -134,7 +134,7 @@
|
|||
*> A is COMPLEX array, dimension (LDA,N)
|
||||
*> On entry, the N-by-N matrix A.
|
||||
*> On exit, A has been overwritten. If JOBVL = 'V' or
|
||||
*> JOBVR = 'V', A contains the Schur form of the balanced
|
||||
*> JOBVR = 'V', A contains the Schur form of the balanced
|
||||
*> version of the matrix A.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -276,7 +276,9 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
* @generated from zgeevx.f, fortran z -> c, Tue Apr 19 01:47:44 2016
|
||||
*
|
||||
*> \ingroup complexGEeigen
|
||||
*
|
||||
|
@ -284,56 +286,57 @@
|
|||
SUBROUTINE CGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL,
|
||||
$ LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE,
|
||||
$ RCONDV, WORK, LWORK, RWORK, INFO )
|
||||
implicit none
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER BALANC, JOBVL, JOBVR, SENSE
|
||||
INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N
|
||||
REAL ABNRM
|
||||
REAL ABNRM
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
REAL RCONDE( * ), RCONDV( * ), RWORK( * ),
|
||||
REAL RCONDE( * ), RCONDV( * ), RWORK( * ),
|
||||
$ SCALE( * )
|
||||
COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
$ W( * ), WORK( * )
|
||||
* ..
|
||||
*
|
||||
* =====================================================================
|
||||
*
|
||||
* .. Parameters ..
|
||||
REAL ZERO, ONE
|
||||
REAL ZERO, ONE
|
||||
PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 )
|
||||
* ..
|
||||
* .. Local Scalars ..
|
||||
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE,
|
||||
$ WNTSNN, WNTSNV
|
||||
CHARACTER JOB, SIDE
|
||||
INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K, MAXWRK,
|
||||
$ MINWRK, NOUT
|
||||
REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
|
||||
COMPLEX TMP
|
||||
INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K,
|
||||
$ LWORK_TREVC, MAXWRK, MINWRK, NOUT
|
||||
REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
|
||||
COMPLEX TMP
|
||||
* ..
|
||||
* .. Local Arrays ..
|
||||
LOGICAL SELECT( 1 )
|
||||
REAL DUM( 1 )
|
||||
REAL DUM( 1 )
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY, CLASCL,
|
||||
$ CSCAL, CSSCAL, CTREVC, CTRSNA, CUNGHR, SLABAD,
|
||||
$ SLASCL, XERBLA
|
||||
EXTERNAL SLABAD, SLASCL, XERBLA, CSSCAL, CGEBAK, CGEBAL,
|
||||
$ CGEHRD, CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3,
|
||||
$ CTRSNA, CUNGHR
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV, ISAMAX
|
||||
REAL CLANGE, SCNRM2, SLAMCH
|
||||
EXTERNAL LSAME, ILAENV, ISAMAX, CLANGE, SCNRM2, SLAMCH
|
||||
INTEGER ISAMAX, ILAENV
|
||||
REAL SLAMCH, SCNRM2, CLANGE
|
||||
EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC AIMAG, CMPLX, CONJG, MAX, REAL, SQRT
|
||||
INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -387,9 +390,19 @@
|
|||
MAXWRK = N + N*ILAENV( 1, 'CGEHRD', ' ', N, 1, N, 0 )
|
||||
*
|
||||
IF( WANTVL ) THEN
|
||||
CALL CTREVC3( 'L', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK, -1, RWORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, LWORK_TREVC )
|
||||
CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VL, LDVL,
|
||||
$ WORK, -1, INFO )
|
||||
ELSE IF( WANTVR ) THEN
|
||||
CALL CTREVC3( 'R', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK, -1, RWORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, LWORK_TREVC )
|
||||
CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VR, LDVR,
|
||||
$ WORK, -1, INFO )
|
||||
ELSE
|
||||
|
@ -401,7 +414,7 @@
|
|||
$ WORK, -1, INFO )
|
||||
END IF
|
||||
END IF
|
||||
HSWORK = WORK( 1 )
|
||||
HSWORK = INT( WORK(1) )
|
||||
*
|
||||
IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN
|
||||
MINWRK = 2*N
|
||||
|
@ -559,19 +572,20 @@
|
|||
$ WORK( IWRK ), LWORK-IWRK+1, INFO )
|
||||
END IF
|
||||
*
|
||||
* If INFO > 0 from CHSEQR, then quit
|
||||
* If INFO .NE. 0 from CHSEQR, then quit
|
||||
*
|
||||
IF( INFO.GT.0 )
|
||||
IF( INFO.NE.0 )
|
||||
$ GO TO 50
|
||||
*
|
||||
IF( WANTVL .OR. WANTVR ) THEN
|
||||
*
|
||||
* Compute left and/or right eigenvectors
|
||||
* (CWorkspace: need 2*N)
|
||||
* (CWorkspace: need 2*N, prefer N + 2*N*NB)
|
||||
* (RWorkspace: need N)
|
||||
*
|
||||
CALL CTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), RWORK, IERR )
|
||||
CALL CTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), LWORK-IWRK+1,
|
||||
$ RWORK, N, IERR )
|
||||
END IF
|
||||
*
|
||||
* Compute condition numbers if desired
|
||||
|
|
|
@ -39,18 +39,19 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> CGEJSV computes the singular value decomposition (SVD) of a real M-by-N
|
||||
*> CGEJSV computes the singular value decomposition (SVD) of a complex M-by-N
|
||||
*> matrix [A], where M >= N. The SVD of [A] is written as
|
||||
*>
|
||||
*> [A] = [U] * [SIGMA] * [V]^*,
|
||||
*>
|
||||
*> where [SIGMA] is an N-by-N (M-by-N) matrix which is zero except for its N
|
||||
*> diagonal elements, [U] is an M-by-N (or M-by-M) orthonormal matrix, and
|
||||
*> [V] is an N-by-N orthogonal matrix. The diagonal elements of [SIGMA] are
|
||||
*> diagonal elements, [U] is an M-by-N (or M-by-M) unitary matrix, and
|
||||
*> [V] is an N-by-N unitary matrix. The diagonal elements of [SIGMA] are
|
||||
*> the singular values of [A]. The columns of [U] and [V] are the left and
|
||||
*> the right singular vectors of [A], respectively. The matrices [U] and [V]
|
||||
*> are computed and stored in the arrays U and V, respectively. The diagonal
|
||||
*> of [SIGMA] is computed and stored in the array SVA.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> Arguments:
|
||||
*> ==========
|
||||
|
@ -221,7 +222,7 @@
|
|||
*>
|
||||
*> \param[out] U
|
||||
*> \verbatim
|
||||
*> U is COMPLEX array, dimension ( LDU, N )
|
||||
*> U is COMPLEX array, dimension ( LDU, N ) or ( LDU, M )
|
||||
*> If JOBU = 'U', then U contains on exit the M-by-N matrix of
|
||||
*> the left singular vectors.
|
||||
*> If JOBU = 'F', then U contains on exit the M-by-M matrix of
|
||||
|
@ -234,7 +235,7 @@
|
|||
*> copied back to the V array. This 'W' option is just
|
||||
*> a reminder to the caller that in this case U is
|
||||
*> reserved as workspace of length N*N.
|
||||
*> If JOBU = 'N' U is not referenced.
|
||||
*> If JOBU = 'N' U is not referenced, unless JOBT='T'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDU
|
||||
|
@ -256,7 +257,7 @@
|
|||
*> copied back to the U array. This 'W' option is just
|
||||
*> a reminder to the caller that in this case V is
|
||||
*> reserved as workspace of length N*N.
|
||||
*> If JOBV = 'N' V is not referenced.
|
||||
*> If JOBV = 'N' V is not referenced, unless JOBT='T'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDV
|
||||
|
@ -278,7 +279,7 @@
|
|||
*> LWORK depends on the job:
|
||||
*>
|
||||
*> 1. If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and
|
||||
*> 1.1 .. no scaled condition estimate required (JOBE.EQ.'N'):
|
||||
*> 1.1 .. no scaled condition estimate required (JOBA.NE.'E'.AND.JOBA.NE.'G'):
|
||||
*> LWORK >= 2*N+1. This is the minimal requirement.
|
||||
*> ->> For optimal performance (blocked code) the optimal value
|
||||
*> is LWORK >= N + (N+1)*NB. Here NB is the optimal
|
||||
|
@ -298,7 +299,7 @@
|
|||
*> (JOBU.EQ.'N')
|
||||
*> -> the minimal requirement is LWORK >= 3*N.
|
||||
*> -> For optimal performance, LWORK >= max(N+(N+1)*NB, 3*N,2*N+N*NB),
|
||||
*> where NB is the optimal block size for CGEQP3, CGEQRF, CGELQ,
|
||||
*> where NB is the optimal block size for CGEQP3, CGEQRF, CGELQF,
|
||||
*> CUNMLQ. In general, the optimal length LWORK is computed as
|
||||
*> LWORK >= max(N+LWORK(CGEQP3), N+LWORK(CPOCON), N+LWORK(CGESVJ),
|
||||
*> N+LWORK(CGELQF), 2*N+LWORK(CGEQRF), N+LWORK(CUNMLQ)).
|
||||
|
@ -317,8 +318,8 @@
|
|||
*> the minimal requirement is LWORK >= 5*N+2*N*N.
|
||||
*> 4.2. if JOBV.EQ.'J' the minimal requirement is
|
||||
*> LWORK >= 4*N+N*N.
|
||||
*> In both cases, the allocated CWORK can accomodate blocked runs
|
||||
*> of CGEQP3, CGEQRF, CGELQF, SUNMQR, CUNMLQ.
|
||||
*> In both cases, the allocated CWORK can accommodate blocked runs
|
||||
*> of CGEQP3, CGEQRF, CGELQF, CUNMQR, CUNMLQ.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] RWORK
|
||||
|
@ -432,7 +433,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEsing
|
||||
*
|
||||
|
@ -498,7 +499,7 @@
|
|||
*> LAPACK Working note 170.
|
||||
*> [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR
|
||||
*> factorization software - a case study.
|
||||
*> ACM Trans. math. Softw. Vol. 35, No 2 (2008), pp. 1-28.
|
||||
*> ACM Trans. Math. Softw. Vol. 35, No 2 (2008), pp. 1-28.
|
||||
*> LAPACK Working note 176.
|
||||
*> [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV,
|
||||
*> QSVD, (H,K)-SVD computations.
|
||||
|
@ -516,10 +517,10 @@
|
|||
$ M, N, A, LDA, SVA, U, LDU, V, LDV,
|
||||
$ CWORK, LWORK, RWORK, LRWORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
IMPLICIT NONE
|
||||
|
@ -556,13 +557,13 @@
|
|||
* ..
|
||||
* .. External Functions ..
|
||||
REAL SLAMCH, SCNRM2
|
||||
INTEGER ISAMAX
|
||||
INTEGER ISAMAX, ICAMAX
|
||||
LOGICAL LSAME
|
||||
EXTERNAL ISAMAX, LSAME, SLAMCH, SCNRM2
|
||||
EXTERNAL ISAMAX, ICAMAX, LSAME, SLAMCH, SCNRM2
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL CCOPY, CGELQF, CGEQP3, CGEQRF, CLACPY, CLASCL,
|
||||
$ CLASET, CLASSQ, CLASWP, CUNGQR, CUNMLQ,
|
||||
$ SLASCL, CLASET, CLASSQ, SLASSQ, CLASWP, CUNGQR, CUNMLQ,
|
||||
$ CUNMQR, CPOCON, SSCAL, CSSCAL, CSWAP, CTRSM, XERBLA
|
||||
*
|
||||
EXTERNAL CGESVJ
|
||||
|
@ -636,7 +637,11 @@
|
|||
*
|
||||
* Quick return for void matrix (Y3K safe)
|
||||
* #:)
|
||||
IF ( ( M .EQ. 0 ) .OR. ( N .EQ. 0 ) ) RETURN
|
||||
IF ( ( M .EQ. 0 ) .OR. ( N .EQ. 0 ) ) THEN
|
||||
IWORK(1:3) = 0
|
||||
RWORK(1:7) = 0
|
||||
RETURN
|
||||
ENDIF
|
||||
*
|
||||
* Determine whether the matrix U should be M x N or M x M
|
||||
*
|
||||
|
@ -803,7 +808,7 @@
|
|||
1950 CONTINUE
|
||||
ELSE
|
||||
DO 1904 p = 1, M
|
||||
RWORK(M+N+p) = SCALEM*ABS( A(p,ISAMAX(N,A(p,1),LDA)) )
|
||||
RWORK(M+N+p) = SCALEM*ABS( A(p,ICAMAX(N,A(p,1),LDA)) )
|
||||
AATMAX = AMAX1( AATMAX, RWORK(M+N+p) )
|
||||
AATMIN = AMIN1( AATMIN, RWORK(M+N+p) )
|
||||
1904 CONTINUE
|
||||
|
@ -824,7 +829,7 @@
|
|||
*
|
||||
XSC = ZERO
|
||||
TEMP1 = ONE
|
||||
CALL CLASSQ( N, SVA, 1, XSC, TEMP1 )
|
||||
CALL SLASSQ( N, SVA, 1, XSC, TEMP1 )
|
||||
TEMP1 = ONE / TEMP1
|
||||
*
|
||||
ENTRA = ZERO
|
||||
|
@ -903,7 +908,7 @@
|
|||
BIG1 = SQRT( BIG )
|
||||
TEMP1 = SQRT( BIG / FLOAT(N) )
|
||||
*
|
||||
CALL CLASCL( 'G', 0, 0, AAPP, TEMP1, N, 1, SVA, N, IERR )
|
||||
CALL SLASCL( 'G', 0, 0, AAPP, TEMP1, N, 1, SVA, N, IERR )
|
||||
IF ( AAQQ .GT. (AAPP * SFMIN) ) THEN
|
||||
AAQQ = ( AAQQ / AAPP ) * TEMP1
|
||||
ELSE
|
||||
|
@ -1221,7 +1226,7 @@
|
|||
CALL CCOPY( NR-p+1, V(p,p), LDV, V(p,p), 1 )
|
||||
CALL CLACGV( NR-p+1, V(p,p), 1 )
|
||||
8998 CONTINUE
|
||||
CALL CLASET( 'Upper', NR-1, NR-1, ZERO, ZERO, V(1,2), LDV )
|
||||
CALL CLASET('Upper', NR-1, NR-1, CZERO, CZERO, V(1,2), LDV)
|
||||
*
|
||||
CALL CGESVJ( 'Lower', 'U','N', NR, NR, V,LDV, SVA, NR, U,
|
||||
$ LDU, CWORK(N+1), LWORK-N, RWORK, LRWORK, INFO )
|
||||
|
@ -1517,9 +1522,9 @@
|
|||
CALL CTRSM('L','U','C','N',NR,NR,CONE,CWORK(2*N+1),
|
||||
$ N,V,LDV)
|
||||
IF ( NR .LT. N ) THEN
|
||||
CALL CLASET('A',N-NR,NR,ZERO,CZERO,V(NR+1,1),LDV)
|
||||
CALL CLASET('A',NR,N-NR,ZERO,CZERO,V(1,NR+1),LDV)
|
||||
CALL CLASET('A',N-NR,N-NR,ZERO,CONE,V(NR+1,NR+1),LDV)
|
||||
CALL CLASET('A',N-NR,NR,CZERO,CZERO,V(NR+1,1),LDV)
|
||||
CALL CLASET('A',NR,N-NR,CZERO,CZERO,V(1,NR+1),LDV)
|
||||
CALL CLASET('A',N-NR,N-NR,CZERO,CONE,V(NR+1,NR+1),LDV)
|
||||
END IF
|
||||
CALL CUNMQR('L','N',N,N,NR,CWORK(2*N+1),N,CWORK(N+1),
|
||||
$ V,LDV,CWORK(2*N+N*NR+NR+1),LWORK-2*N-N*NR-NR,IERR)
|
||||
|
@ -1775,9 +1780,9 @@
|
|||
NUMRANK = NINT(RWORK(2))
|
||||
|
||||
IF ( NR .LT. N ) THEN
|
||||
CALL CLASET( 'A',N-NR,NR,ZERO,ZERO,V(NR+1,1),LDV )
|
||||
CALL CLASET( 'A',NR,N-NR,ZERO,ZERO,V(1,NR+1),LDV )
|
||||
CALL CLASET( 'A',N-NR,N-NR,ZERO,ONE,V(NR+1,NR+1),LDV )
|
||||
CALL CLASET( 'A',N-NR,NR,CZERO,CZERO,V(NR+1,1),LDV )
|
||||
CALL CLASET( 'A',NR,N-NR,CZERO,CZERO,V(1,NR+1),LDV )
|
||||
CALL CLASET( 'A',N-NR,N-NR,CZERO,CONE,V(NR+1,NR+1),LDV )
|
||||
END IF
|
||||
|
||||
CALL CUNMQR( 'L','N',N,N,NR,CWORK(2*N+1),N,CWORK(N+1),
|
||||
|
@ -1832,7 +1837,7 @@
|
|||
* Undo scaling, if necessary (and possible)
|
||||
*
|
||||
IF ( USCAL2 .LE. (BIG/SVA(1))*USCAL1 ) THEN
|
||||
CALL CLASCL( 'G', 0, 0, USCAL1, USCAL2, NR, 1, SVA, N, IERR )
|
||||
CALL SLASCL( 'G', 0, 0, USCAL1, USCAL2, NR, 1, SVA, N, IERR )
|
||||
USCAL1 = ONE
|
||||
USCAL2 = ONE
|
||||
END IF
|
||||
|
|
|
@ -170,7 +170,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEsolve
|
||||
*
|
||||
|
@ -178,10 +178,10 @@
|
|||
SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
|
||||
$ WORK, LWORK, RWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
|
||||
|
@ -285,8 +285,8 @@
|
|||
* Path 1 - overdetermined or exactly determined
|
||||
*
|
||||
* Compute space needed for CGEBRD
|
||||
CALL CGEBRD( MM, N, A, LDA, S, DUM(1), DUM(1),
|
||||
$ DUM(1), DUM(1), -1, INFO )
|
||||
CALL CGEBRD( MM, N, A, LDA, S, S, DUM(1), DUM(1), DUM(1),
|
||||
$ -1, INFO )
|
||||
LWORK_CGEBRD=DUM(1)
|
||||
* Compute space needed for CUNMBR
|
||||
CALL CUNMBR( 'Q', 'L', 'C', MM, NRHS, N, A, LDA, DUM(1),
|
||||
|
@ -315,8 +315,8 @@
|
|||
$ -1, INFO )
|
||||
LWORK_CGELQF=DUM(1)
|
||||
* Compute space needed for CGEBRD
|
||||
CALL CGEBRD( M, M, A, LDA, S, DUM(1), DUM(1),
|
||||
$ DUM(1), DUM(1), -1, INFO )
|
||||
CALL CGEBRD( M, M, A, LDA, S, S, DUM(1), DUM(1),
|
||||
$ DUM(1), -1, INFO )
|
||||
LWORK_CGEBRD=DUM(1)
|
||||
* Compute space needed for CUNMBR
|
||||
CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, N, A, LDA,
|
||||
|
@ -346,8 +346,8 @@
|
|||
* Path 2 - underdetermined
|
||||
*
|
||||
* Compute space needed for CGEBRD
|
||||
CALL CGEBRD( M, N, A, LDA, S, DUM(1), DUM(1),
|
||||
$ DUM(1), DUM(1), -1, INFO )
|
||||
CALL CGEBRD( M, N, A, LDA, S, S, DUM(1), DUM(1),
|
||||
$ DUM(1), -1, INFO )
|
||||
LWORK_CGEBRD=DUM(1)
|
||||
* Compute space needed for CUNMBR
|
||||
CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, M, A, LDA,
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -132,10 +132,10 @@
|
|||
* =====================================================================
|
||||
RECURSIVE SUBROUTINE CGEQRT3( M, N, A, LDA, T, LDT, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N, LDT
|
||||
|
@ -177,7 +177,7 @@
|
|||
*
|
||||
* Compute Householder transform when N=1
|
||||
*
|
||||
CALL CLARFG( M, A, A( MIN( 2, M ), 1 ), 1, T )
|
||||
CALL CLARFG( M, A(1,1), A( MIN( 2, M ), 1 ), 1, T(1,1) )
|
||||
*
|
||||
ELSE
|
||||
*
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -214,7 +214,7 @@
|
|||
SUBROUTINE CGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,
|
||||
$ WORK, LWORK, RWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* April 2012
|
||||
|
@ -322,23 +322,23 @@
|
|||
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
|
||||
* Compute space needed for CGEQRF
|
||||
CALL CGEQRF( M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CGEQRF=CDUM(1)
|
||||
LWORK_CGEQRF = INT( CDUM(1) )
|
||||
* Compute space needed for CUNGQR
|
||||
CALL CUNGQR( M, N, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CUNGQR_N=CDUM(1)
|
||||
LWORK_CUNGQR_N = INT( CDUM(1) )
|
||||
CALL CUNGQR( M, M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CUNGQR_M=CDUM(1)
|
||||
LWORK_CUNGQR_M = INT( CDUM(1) )
|
||||
* Compute space needed for CGEBRD
|
||||
CALL CGEBRD( N, N, A, LDA, S, DUM(1), CDUM(1),
|
||||
$ CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CGEBRD=CDUM(1)
|
||||
LWORK_CGEBRD = INT( CDUM(1) )
|
||||
* Compute space needed for CUNGBR
|
||||
CALL CUNGBR( 'P', N, N, N, A, LDA, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_P=CDUM(1)
|
||||
LWORK_CUNGBR_P = INT( CDUM(1) )
|
||||
CALL CUNGBR( 'Q', N, N, N, A, LDA, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_Q=CDUM(1)
|
||||
LWORK_CUNGBR_Q = INT( CDUM(1) )
|
||||
*
|
||||
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
|
||||
IF( M.GE.MNTHR ) THEN
|
||||
|
@ -446,24 +446,24 @@
|
|||
*
|
||||
CALL CGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1),
|
||||
$ CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CGEBRD=CDUM(1)
|
||||
LWORK_CGEBRD = INT( CDUM(1) )
|
||||
MAXWRK = 2*N + LWORK_CGEBRD
|
||||
IF( WNTUS .OR. WNTUO ) THEN
|
||||
CALL CUNGBR( 'Q', M, N, N, A, LDA, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_Q=CDUM(1)
|
||||
LWORK_CUNGBR_Q = INT( CDUM(1) )
|
||||
MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q )
|
||||
END IF
|
||||
IF( WNTUA ) THEN
|
||||
CALL CUNGBR( 'Q', M, M, N, A, LDA, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_Q=CDUM(1)
|
||||
LWORK_CUNGBR_Q = INT( CDUM(1) )
|
||||
MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q )
|
||||
END IF
|
||||
IF( .NOT.WNTVN ) THEN
|
||||
MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_P )
|
||||
MINWRK = 2*N + M
|
||||
END IF
|
||||
MINWRK = 2*N + M
|
||||
END IF
|
||||
ELSE IF( MINMN.GT.0 ) THEN
|
||||
*
|
||||
|
@ -472,25 +472,25 @@
|
|||
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
|
||||
* Compute space needed for CGELQF
|
||||
CALL CGELQF( M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CGELQF=CDUM(1)
|
||||
LWORK_CGELQF = INT( CDUM(1) )
|
||||
* Compute space needed for CUNGLQ
|
||||
CALL CUNGLQ( N, N, M, CDUM(1), N, CDUM(1), CDUM(1), -1,
|
||||
$ IERR )
|
||||
LWORK_CUNGLQ_N=CDUM(1)
|
||||
LWORK_CUNGLQ_N = INT( CDUM(1) )
|
||||
CALL CUNGLQ( M, N, M, A, LDA, CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CUNGLQ_M=CDUM(1)
|
||||
LWORK_CUNGLQ_M = INT( CDUM(1) )
|
||||
* Compute space needed for CGEBRD
|
||||
CALL CGEBRD( M, M, A, LDA, S, DUM(1), CDUM(1),
|
||||
$ CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CGEBRD=CDUM(1)
|
||||
LWORK_CGEBRD = INT( CDUM(1) )
|
||||
* Compute space needed for CUNGBR P
|
||||
CALL CUNGBR( 'P', M, M, M, A, N, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_P=CDUM(1)
|
||||
LWORK_CUNGBR_P = INT( CDUM(1) )
|
||||
* Compute space needed for CUNGBR Q
|
||||
CALL CUNGBR( 'Q', M, M, M, A, N, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_Q=CDUM(1)
|
||||
LWORK_CUNGBR_Q = INT( CDUM(1) )
|
||||
IF( N.GE.MNTHR ) THEN
|
||||
IF( WNTVN ) THEN
|
||||
*
|
||||
|
@ -596,25 +596,25 @@
|
|||
*
|
||||
CALL CGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1),
|
||||
$ CDUM(1), CDUM(1), -1, IERR )
|
||||
LWORK_CGEBRD=CDUM(1)
|
||||
LWORK_CGEBRD = INT( CDUM(1) )
|
||||
MAXWRK = 2*M + LWORK_CGEBRD
|
||||
IF( WNTVS .OR. WNTVO ) THEN
|
||||
* Compute space needed for CUNGBR P
|
||||
CALL CUNGBR( 'P', M, N, M, A, N, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_P=CDUM(1)
|
||||
LWORK_CUNGBR_P = INT( CDUM(1) )
|
||||
MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_P )
|
||||
END IF
|
||||
IF( WNTVA ) THEN
|
||||
CALL CUNGBR( 'P', N, N, M, A, N, CDUM(1),
|
||||
$ CDUM(1), -1, IERR )
|
||||
LWORK_CUNGBR_P=CDUM(1)
|
||||
LWORK_CUNGBR_P = INT( CDUM(1) )
|
||||
MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_P )
|
||||
END IF
|
||||
IF( .NOT.WNTUN ) THEN
|
||||
MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_Q )
|
||||
MINWRK = 2*M + N
|
||||
END IF
|
||||
MINWRK = 2*M + N
|
||||
END IF
|
||||
END IF
|
||||
MAXWRK = MAX( MINWRK, MAXWRK )
|
||||
|
@ -681,8 +681,10 @@
|
|||
*
|
||||
* Zero out below R
|
||||
*
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, A( 2, 1 ),
|
||||
$ LDA )
|
||||
IF( N .GT. 1 ) THEN
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, A( 2, 1 ),
|
||||
$ LDA )
|
||||
END IF
|
||||
IE = 1
|
||||
ITAUQ = 1
|
||||
ITAUP = ITAUQ + N
|
||||
|
@ -1145,8 +1147,10 @@
|
|||
*
|
||||
* Zero out below R in A
|
||||
*
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
IF( N .GT. 1 ) THEN
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
END IF
|
||||
*
|
||||
* Bidiagonalize R in A
|
||||
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
|
||||
|
@ -1322,8 +1326,10 @@
|
|||
*
|
||||
* Zero out below R in A
|
||||
*
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
IF( N .GT. 1 ) THEN
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
END IF
|
||||
*
|
||||
* Bidiagonalize R in A
|
||||
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
|
||||
|
@ -1650,8 +1656,10 @@
|
|||
*
|
||||
* Zero out below R in A
|
||||
*
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
IF( N .GT. 1 ) THEN
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
END IF
|
||||
*
|
||||
* Bidiagonalize R in A
|
||||
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
|
||||
|
@ -1831,8 +1839,10 @@
|
|||
*
|
||||
* Zero out below R in A
|
||||
*
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
IF( N .GT. 1 ) THEN
|
||||
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
|
||||
$ A( 2, 1 ), LDA )
|
||||
END IF
|
||||
*
|
||||
* Bidiagonalize R in A
|
||||
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
|
||||
|
|
|
@ -124,13 +124,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*> VL >=0.
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for singular values. VU > VL.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for singular values. VU > VL.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -138,13 +140,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest singular value to be returned.
|
||||
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest singular values to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest singular value to be returned.
|
||||
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -170,7 +176,7 @@
|
|||
*> vectors, stored columnwise) as specified by RANGE; if
|
||||
*> JOBU = 'N', U is not referenced.
|
||||
*> Note: The user must ensure that UCOL >= NS; if RANGE = 'V',
|
||||
*> the exact value of NS is not known ILQFin advance and an upper
|
||||
*> the exact value of NS is not known in advance and an upper
|
||||
*> bound must be used.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -255,7 +261,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEsing
|
||||
*
|
||||
|
@ -264,10 +270,10 @@
|
|||
$ IL, IU, NS, S, U, LDU, VT, LDVT, WORK,
|
||||
$ LWORK, RWORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBU, JOBVT, RANGE
|
||||
|
@ -294,8 +300,8 @@
|
|||
CHARACTER JOBZ, RNGTGK
|
||||
LOGICAL ALLS, INDS, LQUERY, VALS, WANTU, WANTVT
|
||||
INTEGER I, ID, IE, IERR, ILQF, ILTGK, IQRF, ISCL,
|
||||
$ ITAU, ITAUP, ITAUQ, ITEMP, ITGKZ, IUTGK,
|
||||
$ J, K, MAXWRK, MINMN, MINWRK, MNTHR
|
||||
$ ITAU, ITAUP, ITAUQ, ITEMP, ITEMPR, ITGKZ,
|
||||
$ IUTGK, J, K, MAXWRK, MINMN, MINWRK, MNTHR
|
||||
REAL ABSTOL, ANRM, BIGNUM, EPS, SMLNUM
|
||||
* ..
|
||||
* .. Local Arrays ..
|
||||
|
@ -367,8 +373,14 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
IF( WANTU .AND. LDU.LT.M ) THEN
|
||||
INFO = -15
|
||||
ELSE IF( WANTVT .AND. LDVT.LT.MINMN ) THEN
|
||||
INFO = -16
|
||||
ELSE IF( WANTVT ) THEN
|
||||
IF( INDS ) THEN
|
||||
IF( LDVT.LT.IU-IL+1 ) THEN
|
||||
INFO = -17
|
||||
END IF
|
||||
ELSE IF( LDVT.LT.MINMN ) THEN
|
||||
INFO = -17
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
@ -390,18 +402,24 @@
|
|||
*
|
||||
* Path 1 (M much larger than N)
|
||||
*
|
||||
MAXWRK = N + N*
|
||||
$ ILAENV( 1, 'SGEQRF', ' ', M, N, -1, -1 )
|
||||
MAXWRK = MAX( MAXWRK, N*N + N + 2*N*
|
||||
$ ILAENV( 1, 'SGEBRD', ' ', N, N, -1, -1 ) )
|
||||
MINWRK = N*(N+4)
|
||||
MINWRK = N*(N+5)
|
||||
MAXWRK = N + N*ILAENV(1,'CGEQRF',' ',M,N,-1,-1)
|
||||
MAXWRK = MAX(MAXWRK,
|
||||
$ N*N+2*N+2*N*ILAENV(1,'CGEBRD',' ',N,N,-1,-1))
|
||||
IF (WANTU .OR. WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,
|
||||
$ N*N+2*N+N*ILAENV(1,'CUNMQR','LN',N,N,N,-1))
|
||||
END IF
|
||||
ELSE
|
||||
*
|
||||
* Path 2 (M at least N, but not much larger)
|
||||
*
|
||||
MAXWRK = 2*N + ( M+N )*
|
||||
$ ILAENV( 1, 'CGEBRD', ' ', M, N, -1, -1 )
|
||||
MINWRK = 2*N + M
|
||||
MINWRK = 3*N + M
|
||||
MAXWRK = 2*N + (M+N)*ILAENV(1,'CGEBRD',' ',M,N,-1,-1)
|
||||
IF (WANTU .OR. WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,
|
||||
$ 2*N+N*ILAENV(1,'CUNMQR','LN',N,N,N,-1))
|
||||
END IF
|
||||
END IF
|
||||
ELSE
|
||||
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
|
||||
|
@ -409,18 +427,25 @@
|
|||
*
|
||||
* Path 1t (N much larger than M)
|
||||
*
|
||||
MAXWRK = M + M*
|
||||
$ ILAENV( 1, 'CGELQF', ' ', M, N, -1, -1 )
|
||||
MAXWRK = MAX( MAXWRK, M*M + M + 2*M*
|
||||
$ ILAENV( 1, 'CGEBRD', ' ', M, M, -1, -1 ) )
|
||||
MINWRK = M*(M+4)
|
||||
MINWRK = M*(M+5)
|
||||
MAXWRK = M + M*ILAENV(1,'CGELQF',' ',M,N,-1,-1)
|
||||
MAXWRK = MAX(MAXWRK,
|
||||
$ M*M+2*M+2*M*ILAENV(1,'CGEBRD',' ',M,M,-1,-1))
|
||||
IF (WANTU .OR. WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,
|
||||
$ M*M+2*M+M*ILAENV(1,'CUNMQR','LN',M,M,M,-1))
|
||||
END IF
|
||||
ELSE
|
||||
*
|
||||
* Path 2t (N greater than M, but not much larger)
|
||||
*
|
||||
MAXWRK = M*(M*2+19) + ( M+N )*
|
||||
$ ILAENV( 1, 'CGEBRD', ' ', M, N, -1, -1 )
|
||||
MINWRK = 2*M + N
|
||||
*
|
||||
MINWRK = 3*M + N
|
||||
MAXWRK = 2*M + (M+N)*ILAENV(1,'CGEBRD',' ',M,N,-1,-1)
|
||||
IF (WANTU .OR. WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,
|
||||
$ 2*M+M*ILAENV(1,'CUNMQR','LN',M,M,M,-1))
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
@ -447,8 +472,6 @@
|
|||
*
|
||||
* Set singular values indices accord to RANGE='A'.
|
||||
*
|
||||
ALLS = LSAME( RANGE, 'A' )
|
||||
INDS = LSAME( RANGE, 'I' )
|
||||
IF( ALLS ) THEN
|
||||
RNGTGK = 'I'
|
||||
ILTGK = 1
|
||||
|
@ -518,14 +541,14 @@
|
|||
CALL CGEBRD( N, N, WORK( IQRF ), N, RWORK( ID ),
|
||||
$ RWORK( IE ), WORK( ITAUQ ), WORK( ITAUP ),
|
||||
$ WORK( ITEMP ), LWORK-ITEMP+1, INFO )
|
||||
ITEMP = ITGKZ + N*(N*2+1)
|
||||
ITEMPR = ITGKZ + N*(N*2+1)
|
||||
*
|
||||
* Solve eigenvalue problem TGK*Z=Z*S.
|
||||
* (Workspace: need 2*N*N+14*N)
|
||||
*
|
||||
CALL SBDSVDX( 'U', JOBZ, RNGTGK, N, RWORK( ID ),
|
||||
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
|
||||
$ RWORK( ITGKZ ), N*2, RWORK( ITEMP ),
|
||||
$ RWORK( ITGKZ ), N*2, RWORK( ITEMPR ),
|
||||
$ IWORK, INFO)
|
||||
*
|
||||
* If needed, compute left singular vectors.
|
||||
|
@ -539,7 +562,7 @@
|
|||
END DO
|
||||
K = K + N
|
||||
END DO
|
||||
CALL CLASET( 'A', M-N, N, CZERO, CZERO, U( N+1,1 ), LDU )
|
||||
CALL CLASET( 'A', M-N, NS, CZERO, CZERO, U( N+1,1 ), LDU)
|
||||
*
|
||||
* Call CUNMBR to compute QB*UB.
|
||||
* (Workspace in WORK( ITEMP ): need N, prefer N*NB)
|
||||
|
@ -594,14 +617,14 @@
|
|||
CALL CGEBRD( M, N, A, LDA, RWORK( ID ), RWORK( IE ),
|
||||
$ WORK( ITAUQ ), WORK( ITAUP ), WORK( ITEMP ),
|
||||
$ LWORK-ITEMP+1, INFO )
|
||||
ITEMP = ITGKZ + N*(N*2+1)
|
||||
ITEMPR = ITGKZ + N*(N*2+1)
|
||||
*
|
||||
* Solve eigenvalue problem TGK*Z=Z*S.
|
||||
* (Workspace: need 2*N*N+14*N)
|
||||
*
|
||||
CALL SBDSVDX( 'U', JOBZ, RNGTGK, N, RWORK( ID ),
|
||||
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
|
||||
$ RWORK( ITGKZ ), N*2, RWORK( ITEMP ),
|
||||
$ RWORK( ITGKZ ), N*2, RWORK( ITEMPR ),
|
||||
$ IWORK, INFO)
|
||||
*
|
||||
* If needed, compute left singular vectors.
|
||||
|
@ -615,7 +638,7 @@
|
|||
END DO
|
||||
K = K + N
|
||||
END DO
|
||||
CALL CLASET( 'A', M-N, N, CZERO, CZERO, U( N+1,1 ), LDU )
|
||||
CALL CLASET( 'A', M-N, NS, CZERO, CZERO, U( N+1,1 ), LDU)
|
||||
*
|
||||
* Call CUNMBR to compute QB*UB.
|
||||
* (Workspace in WORK( ITEMP ): need N, prefer N*NB)
|
||||
|
@ -681,14 +704,14 @@
|
|||
CALL CGEBRD( M, M, WORK( ILQF ), M, RWORK( ID ),
|
||||
$ RWORK( IE ), WORK( ITAUQ ), WORK( ITAUP ),
|
||||
$ WORK( ITEMP ), LWORK-ITEMP+1, INFO )
|
||||
ITEMP = ITGKZ + M*(M*2+1)
|
||||
ITEMPR = ITGKZ + M*(M*2+1)
|
||||
*
|
||||
* Solve eigenvalue problem TGK*Z=Z*S.
|
||||
* (Workspace: need 2*M*M+14*M)
|
||||
*
|
||||
CALL SBDSVDX( 'U', JOBZ, RNGTGK, M, RWORK( ID ),
|
||||
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
|
||||
$ RWORK( ITGKZ ), M*2, RWORK( ITEMP ),
|
||||
$ RWORK( ITGKZ ), M*2, RWORK( ITEMPR ),
|
||||
$ IWORK, INFO)
|
||||
*
|
||||
* If needed, compute left singular vectors.
|
||||
|
@ -722,7 +745,7 @@
|
|||
END DO
|
||||
K = K + M
|
||||
END DO
|
||||
CALL CLASET( 'A', M, N-M, CZERO, CZERO,
|
||||
CALL CLASET( 'A', NS, N-M, CZERO, CZERO,
|
||||
$ VT( 1,M+1 ), LDVT )
|
||||
*
|
||||
* Call CUNMBR to compute (VB**T)*(PB**T)
|
||||
|
@ -758,14 +781,14 @@
|
|||
CALL CGEBRD( M, N, A, LDA, RWORK( ID ), RWORK( IE ),
|
||||
$ WORK( ITAUQ ), WORK( ITAUP ), WORK( ITEMP ),
|
||||
$ LWORK-ITEMP+1, INFO )
|
||||
ITEMP = ITGKZ + M*(M*2+1)
|
||||
ITEMPR = ITGKZ + M*(M*2+1)
|
||||
*
|
||||
* Solve eigenvalue problem TGK*Z=Z*S.
|
||||
* (Workspace: need 2*M*M+14*M)
|
||||
*
|
||||
CALL SBDSVDX( 'L', JOBZ, RNGTGK, M, RWORK( ID ),
|
||||
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
|
||||
$ RWORK( ITGKZ ), M*2, RWORK( ITEMP ),
|
||||
$ RWORK( ITGKZ ), M*2, RWORK( ITEMPR ),
|
||||
$ IWORK, INFO)
|
||||
*
|
||||
* If needed, compute left singular vectors.
|
||||
|
@ -799,7 +822,7 @@
|
|||
END DO
|
||||
K = K + M
|
||||
END DO
|
||||
CALL CLASET( 'A', M, N-M, CZERO, CZERO,
|
||||
CALL CLASET( 'A', NS, N-M, CZERO, CZERO,
|
||||
$ VT( 1,M+1 ), LDVT )
|
||||
*
|
||||
* Call CUNMBR to compute VB**T * PB**T
|
||||
|
|
|
@ -205,6 +205,7 @@
|
|||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] CWORK
|
||||
*> \verbatim
|
||||
*> CWORK is COMPLEX array, dimension M+N.
|
||||
*> Used as work space.
|
||||
*> \endverbatim
|
||||
|
@ -213,8 +214,10 @@
|
|||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> Length of CWORK, LWORK >= M+N.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] RWORK
|
||||
*> \verbatim
|
||||
*> RWORK is REAL array, dimension max(6,M+N).
|
||||
*> On entry,
|
||||
*> If JOBU .EQ. 'C' :
|
||||
|
@ -244,6 +247,7 @@
|
|||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LRWORK
|
||||
*> \verbatim
|
||||
*> LRWORK is INTEGER
|
||||
*> Length of RWORK, LRWORK >= MAX(6,N).
|
||||
*> \endverbatim
|
||||
|
@ -266,7 +270,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
|
@ -326,10 +330,10 @@
|
|||
SUBROUTINE CGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V,
|
||||
$ LDV, CWORK, LWORK, RWORK, LRWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
IMPLICIT NONE
|
||||
* .. Scalar Arguments ..
|
||||
|
@ -387,7 +391,7 @@
|
|||
* from BLAS
|
||||
EXTERNAL CCOPY, CROT, CSSCAL, CSWAP
|
||||
* from LAPACK
|
||||
EXTERNAL CLASCL, CLASET, CLASSQ, XERBLA
|
||||
EXTERNAL CLASCL, CLASET, CLASSQ, SLASCL, XERBLA
|
||||
EXTERNAL CGSVJ0, CGSVJ1
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
|
@ -889,7 +893,6 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
OMPQ = AAPQ / ABS(AAPQ)
|
||||
* AAPQ = AAPQ * CONJG( CWORK(p) ) * CWORK(q)
|
||||
AAPQ1 = -ABS(AAPQ)
|
||||
MXAAPQ = AMAX1( MXAAPQ, -AAPQ1 )
|
||||
|
@ -909,6 +912,7 @@
|
|||
*
|
||||
IF( ROTOK ) THEN
|
||||
*
|
||||
OMPQ = AAPQ / ABS(AAPQ)
|
||||
AQOAP = AAQQ / AAPP
|
||||
APOAQ = AAPP / AAQQ
|
||||
THETA = -HALF*ABS( AQOAP-APOAQ )/AAPQ1
|
||||
|
@ -1110,7 +1114,6 @@
|
|||
END IF
|
||||
END IF
|
||||
*
|
||||
OMPQ = AAPQ / ABS(AAPQ)
|
||||
* AAPQ = AAPQ * CONJG(CWORK(p))*CWORK(q)
|
||||
AAPQ1 = -ABS(AAPQ)
|
||||
MXAAPQ = AMAX1( MXAAPQ, -AAPQ1 )
|
||||
|
@ -1125,6 +1128,7 @@
|
|||
*
|
||||
IF( ROTOK ) THEN
|
||||
*
|
||||
OMPQ = AAPQ / ABS(AAPQ)
|
||||
AQOAP = AAQQ / AAPP
|
||||
APOAQ = AAPP / AAQQ
|
||||
THETA = -HALF*ABS( AQOAP-APOAQ )/ AAPQ1
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEauxiliary
|
||||
*
|
||||
|
@ -111,10 +111,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CGETC2( N, A, LDA, IPIV, JPIV, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.5.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, N
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
*> the matrix into four submatrices:
|
||||
*>
|
||||
*> [ A11 | A12 ] where A11 is n1 by n1 and A22 is n2 by n2
|
||||
*> A = [ -----|----- ] with n1 = min(m,n)
|
||||
*> A = [ -----|----- ] with n1 = min(m,n)/2
|
||||
*> [ A21 | A22 ] n2 = n-n1
|
||||
*>
|
||||
*> [ A11 ]
|
||||
|
@ -106,17 +106,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGEcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
RECURSIVE SUBROUTINE CGETRF2( M, N, A, LDA, IPIV, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N
|
||||
|
|
|
@ -269,7 +269,7 @@
|
|||
$ LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR,
|
||||
$ WORK, LWORK, RWORK, BWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* January 2015
|
||||
|
@ -394,7 +394,7 @@
|
|||
LWKOPT = MAX( LWKOPT, N + INT ( WORK( 1 ) ) )
|
||||
CALL CHGEQZ( 'S', JOBVSL, JOBVSR, N, 1, N, A, LDA, B, LDB,
|
||||
$ ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, -1,
|
||||
$ WORK, IERR )
|
||||
$ RWORK, IERR )
|
||||
LWKOPT = MAX( LWKOPT, INT ( WORK( 1 ) ) )
|
||||
IF( WANTST ) THEN
|
||||
CALL CTGSEN( 0, ILVSL, ILVSR, BWORK, N, A, LDA, B, LDB,
|
||||
|
|
|
@ -216,7 +216,7 @@
|
|||
SUBROUTINE CGGEV3( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA,
|
||||
$ VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* January 2015
|
||||
|
|
|
@ -231,7 +231,7 @@
|
|||
SUBROUTINE CGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
|
||||
$ LDQ, Z, LDZ, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* January 2015
|
||||
|
@ -282,7 +282,7 @@
|
|||
*
|
||||
INFO = 0
|
||||
NB = ILAENV( 1, 'CGGHD3', ' ', N, ILO, IHI, -1 )
|
||||
LWKOPT = 6*N*NB
|
||||
LWKOPT = MAX( 6*N*NB, 1 )
|
||||
WORK( 1 ) = CMPLX( LWKOPT )
|
||||
INITQ = LSAME( COMPQ, 'I' )
|
||||
WANTQ = INITQ .OR. LSAME( COMPQ, 'V' )
|
||||
|
|
|
@ -278,7 +278,7 @@
|
|||
$ TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ,
|
||||
$ IWORK, RWORK, TAU, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* August 2015
|
||||
|
@ -308,7 +308,6 @@
|
|||
* .. Local Scalars ..
|
||||
LOGICAL FORWRD, WANTQ, WANTU, WANTV, LQUERY
|
||||
INTEGER I, J, LWKOPT
|
||||
COMPLEX T
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
*> \brief \b CGSVJ0 pre-processor for the routine sgesvj.
|
||||
*> \brief \b CGSVJ0 pre-processor for the routine cgesvj.
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
|
@ -193,7 +193,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -218,10 +218,10 @@
|
|||
SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS,
|
||||
$ SFMIN, TOL, NSWEEP, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
IMPLICIT NONE
|
||||
* .. Scalar Arguments ..
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
*> \brief \b CGSVJ1 pre-processor for the routine sgesvj, applies Jacobi rotations targeting only particular pivots.
|
||||
*> \brief \b CGSVJ1 pre-processor for the routine cgesvj, applies Jacobi rotations targeting only particular pivots.
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
|
@ -105,7 +105,7 @@
|
|||
*>
|
||||
*> \param[in,out] A
|
||||
*> \verbatim
|
||||
*> A is REAL array, dimension (LDA,N)
|
||||
*> A is COMPLEX array, dimension (LDA,N)
|
||||
*> On entry, M-by-N matrix A, such that A*diag(D) represents
|
||||
*> the input matrix.
|
||||
*> On exit,
|
||||
|
@ -124,7 +124,7 @@
|
|||
*>
|
||||
*> \param[in,out] D
|
||||
*> \verbatim
|
||||
*> D is REAL array, dimension (N)
|
||||
*> D is COMPLEX array, dimension (N)
|
||||
*> The array D accumulates the scaling factors from the fast scaled
|
||||
*> Jacobi rotations.
|
||||
*> On entry, A*diag(D) represents the input matrix.
|
||||
|
@ -154,7 +154,7 @@
|
|||
*>
|
||||
*> \param[in,out] V
|
||||
*> \verbatim
|
||||
*> V is REAL array, dimension (LDV,N)
|
||||
*> V is COMPLEX array, dimension (LDV,N)
|
||||
*> If JOBV .EQ. 'V' then N rows of V are post-multipled by a
|
||||
*> sequence of Jacobi rotations.
|
||||
*> If JOBV .EQ. 'A' then MV rows of V are post-multipled by a
|
||||
|
@ -223,7 +223,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -236,10 +236,10 @@
|
|||
SUBROUTINE CGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV,
|
||||
$ EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
REAL EPS, SFMIN, TOL
|
||||
|
|
|
@ -123,12 +123,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -136,13 +139,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -251,7 +258,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHEReigen
|
||||
*
|
||||
|
@ -260,10 +267,10 @@
|
|||
$ VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK,
|
||||
$ IWORK, IFAIL, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -238,7 +238,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHEReigen
|
||||
*
|
||||
|
@ -252,10 +252,10 @@
|
|||
$ Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK,
|
||||
$ LIWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, UPLO
|
||||
|
@ -372,7 +372,7 @@
|
|||
LLWK2 = LWORK - INDWK2 + 2
|
||||
LLRWK = LRWORK - INDWRK + 2
|
||||
CALL CHBGST( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Z, LDZ,
|
||||
$ WORK, RWORK( INDWRK ), IINFO )
|
||||
$ WORK, RWORK, IINFO )
|
||||
*
|
||||
* Reduce Hermitian band matrix to tridiagonal form.
|
||||
*
|
||||
|
|
|
@ -153,13 +153,17 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -167,14 +171,19 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -277,7 +286,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHEReigen
|
||||
*
|
||||
|
@ -291,10 +300,10 @@
|
|||
$ LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z,
|
||||
$ LDZ, WORK, RWORK, IWORK, IFAIL, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -155,12 +155,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -168,13 +171,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -329,7 +336,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexHEeigen
|
||||
*
|
||||
|
@ -348,10 +355,10 @@
|
|||
$ ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK,
|
||||
$ RWORK, LRWORK, IWORK, LIWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.2) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -99,12 +99,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -112,13 +115,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -243,7 +250,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexHEeigen
|
||||
*
|
||||
|
@ -252,10 +259,10 @@
|
|||
$ ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK,
|
||||
$ IWORK, IFAIL, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -132,13 +132,17 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -146,14 +150,19 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -284,7 +293,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexHEeigen
|
||||
*
|
||||
|
@ -298,10 +307,10 @@
|
|||
$ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK,
|
||||
$ LWORK, RWORK, IWORK, IFAIL, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -150,7 +150,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexHEcomputational
|
||||
*
|
||||
|
@ -199,7 +199,7 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> November 2013, Igor Kozachenko,
|
||||
*> June 2016, Igor Kozachenko,
|
||||
*> Computer Science Division,
|
||||
*> University of California, Berkeley
|
||||
*>
|
||||
|
@ -212,10 +212,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CHETRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER UPLO
|
||||
|
@ -265,7 +265,7 @@
|
|||
* Determine the block size
|
||||
*
|
||||
NB = ILAENV( 1, 'CHETRF_ROOK', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = N*NB
|
||||
LWKOPT = MAX( 1, N*NB )
|
||||
WORK( 1 ) = LWKOPT
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -190,12 +190,12 @@
|
|||
*> \param[in,out] Q
|
||||
*> \verbatim
|
||||
*> Q is COMPLEX array, dimension (LDQ, N)
|
||||
*> On entry, if COMPZ = 'V', the unitary matrix Q1 used in the
|
||||
*> On entry, if COMPQ = 'V', the unitary matrix Q1 used in the
|
||||
*> reduction of (A,B) to generalized Hessenberg form.
|
||||
*> On exit, if COMPZ = 'I', the unitary matrix of left Schur
|
||||
*> vectors of (H,T), and if COMPZ = 'V', the unitary matrix of
|
||||
*> On exit, if COMPQ = 'I', the unitary matrix of left Schur
|
||||
*> vectors of (H,T), and if COMPQ = 'V', the unitary matrix of
|
||||
*> left Schur vectors of (A,B).
|
||||
*> Not referenced if COMPZ = 'N'.
|
||||
*> Not referenced if COMPQ = 'N'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDQ
|
||||
|
@ -284,7 +284,7 @@
|
|||
$ ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK,
|
||||
$ RWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* April 2012
|
||||
|
|
|
@ -97,12 +97,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -110,13 +113,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -224,7 +231,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHEReigen
|
||||
*
|
||||
|
@ -233,10 +240,10 @@
|
|||
$ ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK,
|
||||
$ IFAIL, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -118,13 +118,17 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -132,14 +136,19 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -254,7 +263,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHEReigen
|
||||
*
|
||||
|
@ -268,10 +277,10 @@
|
|||
$ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK,
|
||||
$ IWORK, IFAIL, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE, UPLO
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
*>
|
||||
*> \param[in] AB
|
||||
*> \verbatim
|
||||
*> AB is REAL array, dimension (LDAB,n)
|
||||
*> AB is COMPLEX array, dimension (LDAB,n)
|
||||
*> Before entry, the leading m by n part of the array AB must
|
||||
*> contain the matrix of coefficients.
|
||||
*> Unchanged on exit.
|
||||
|
@ -124,7 +124,7 @@
|
|||
*>
|
||||
*> \param[in] X
|
||||
*> \verbatim
|
||||
*> X is REAL array, dimension
|
||||
*> X is COMPLEX array, dimension
|
||||
*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
|
||||
*> and at least
|
||||
*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
|
||||
|
@ -178,7 +178,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexGBcomputational
|
||||
*
|
||||
|
@ -186,10 +186,10 @@
|
|||
SUBROUTINE CLA_GBAMV( TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X,
|
||||
$ INCX, BETA, Y, INCY )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
REAL ALPHA, BETA
|
||||
|
|
|
@ -104,7 +104,7 @@
|
|||
*>
|
||||
*> \param[in] WORK
|
||||
*> \verbatim
|
||||
*> WORK is COMPLEX array, dimension (2*N)
|
||||
*> WORK is REAL array, dimension (2*N)
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -115,7 +115,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexHEcomputational
|
||||
*
|
||||
|
@ -123,10 +123,10 @@
|
|||
REAL FUNCTION CLA_HERPVGRW( UPLO, N, INFO, A, LDA, AF, LDAF, IPIV,
|
||||
$ WORK )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER*1 UPLO
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
*>
|
||||
*> \param[in] RES
|
||||
*> \verbatim
|
||||
*> RES is REAL array, dimension (N,NRHS)
|
||||
*> RES is COMPLEX array, dimension (N,NRHS)
|
||||
*> The residual matrix, i.e., the matrix R in the relative backward
|
||||
*> error formula above.
|
||||
*> \endverbatim
|
||||
|
@ -82,7 +82,7 @@
|
|||
*>
|
||||
*> \param[out] BERR
|
||||
*> \verbatim
|
||||
*> BERR is COMPLEX array, dimension (NRHS)
|
||||
*> BERR is REAL array, dimension (NRHS)
|
||||
*> The componentwise relative backward error from the formula above.
|
||||
*> \endverbatim
|
||||
*
|
||||
|
@ -94,17 +94,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CLA_LIN_BERR ( N, NZ, NRHS, RES, AYB, BERR )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER N, NZ, NRHS
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
*> \verbatim
|
||||
*>
|
||||
*> CLA_PORCOND_C Computes the infinity norm condition number of
|
||||
*> op(A) * inv(diag(C)) where C is a DOUBLE PRECISION vector
|
||||
*> op(A) * inv(diag(C)) where C is a REAL vector
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
|
@ -122,7 +122,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexPOcomputational
|
||||
*
|
||||
|
@ -130,10 +130,10 @@
|
|||
REAL FUNCTION CLA_PORCOND_C( UPLO, N, A, LDA, AF, LDAF, C, CAPPLY,
|
||||
$ INFO, WORK, RWORK )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER UPLO
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
*>
|
||||
*> \param[in] WORK
|
||||
*> \verbatim
|
||||
*> WORK is COMPLEX array, dimension (2*N)
|
||||
*> WORK is REAL array, dimension (2*N)
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -98,17 +98,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexPOcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
REAL FUNCTION CLA_PORPVGRW( UPLO, NCOLS, A, LDA, AF, LDAF, WORK )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER*1 UPLO
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
*>
|
||||
*> The first stage consists of deflating the size of the problem
|
||||
*> when there are multiple eigenvalues or if there is a zero in
|
||||
*> the Z vector. For each such occurence the dimension of the
|
||||
*> the Z vector. For each such occurrence the dimension of the
|
||||
*> secular equation problem is reduced by one. This stage is
|
||||
*> performed by the routine SLAED2.
|
||||
*>
|
||||
|
@ -239,7 +239,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -249,10 +249,10 @@
|
|||
$ GIVPTR, GIVCOL, GIVNUM, WORK, RWORK, IWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER CURLVL, CURPBM, CUTPNT, INFO, LDQ, N, QSIZ,
|
||||
|
|
|
@ -137,7 +137,7 @@
|
|||
*> Z is COMPLEX array, dimension (LDZ,N)
|
||||
*> IF WANTZ is .TRUE., then on output, the unitary
|
||||
*> similarity transformation mentioned above has been
|
||||
*> accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
|
||||
*> accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right.
|
||||
*> If WANTZ is .FALSE., then Z is unreferenced.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -251,7 +251,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERauxiliary
|
||||
*
|
||||
|
@ -266,10 +266,10 @@
|
|||
$ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,
|
||||
$ NV, WV, LDWV, WORK, LWORK )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
|
||||
|
|
|
@ -142,10 +142,10 @@
|
|||
*>
|
||||
*> \param[in,out] Z
|
||||
*> \verbatim
|
||||
*> Z is COMPLEX array of size (LDZ,IHI)
|
||||
*> Z is COMPLEX array of size (LDZ,IHIZ)
|
||||
*> If WANTZ = .TRUE., then the QR Sweep unitary
|
||||
*> similarity transformation is accumulated into
|
||||
*> Z(ILOZ:IHIZ,ILO:IHI) from the right.
|
||||
*> Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right.
|
||||
*> If WANTZ = .FALSE., then Z is unreferenced.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -228,7 +228,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERauxiliary
|
||||
*
|
||||
|
@ -251,10 +251,10 @@
|
|||
$ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV,
|
||||
$ WV, LDWV, NH, WH, LDWH )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
*>
|
||||
*> \param[in] B
|
||||
*> \verbatim
|
||||
*> B is REAL array, dimension (LDB, N)
|
||||
*> B is COMPLEX array, dimension (LDB, N)
|
||||
*> B contains the M by N matrix B.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -107,17 +107,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERauxiliary
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CLARCM( M, N, A, LDA, B, LDB, C, LDC, RWORK )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER LDA, LDB, LDC, M, N
|
||||
|
|
|
@ -59,12 +59,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*> Lower bound of the interval that contains the desired
|
||||
*> eigenvalues. VL < VU. Needed to compute gaps on the left or right
|
||||
*> end of the extremal eigenvalues in the desired RANGE.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*> Lower and upper bounds of the interval that contains the desired
|
||||
*> Upper bound of the interval that contains the desired
|
||||
*> eigenvalues. VL < VU. Needed to compute gaps on the left or right
|
||||
*> end of the extremal eigenvalues in the desired RANGE.
|
||||
*> \endverbatim
|
||||
|
@ -81,7 +84,7 @@
|
|||
*> L is REAL array, dimension (N)
|
||||
*> On entry, the (N-1) subdiagonal elements of the unit
|
||||
*> bidiagonal matrix L are in elements 1 to N-1 of L
|
||||
*> (if the matrix is not splitted.) At the end of each block
|
||||
*> (if the matrix is not split.) At the end of each block
|
||||
*> is stored the corresponding shift as given by SLARRE.
|
||||
*> On exit, L is overwritten.
|
||||
*> \endverbatim
|
||||
|
@ -236,7 +239,7 @@
|
|||
*> INFO is INTEGER
|
||||
*> = 0: successful exit
|
||||
*>
|
||||
*> > 0: A problem occured in CLARRV.
|
||||
*> > 0: A problem occurred in CLARRV.
|
||||
*> < 0: One of the called subroutines signaled an internal problem.
|
||||
*> Needs inspection of the corresponding parameter IINFO
|
||||
*> for further information.
|
||||
|
@ -263,7 +266,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERauxiliary
|
||||
*
|
||||
|
@ -283,10 +286,10 @@
|
|||
$ IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ,
|
||||
$ WORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.6.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER DOL, DOU, INFO, LDZ, M, N
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
*> \param[in] LDX
|
||||
*> \verbatim
|
||||
*> LDX is INTEGER
|
||||
*> The leading dimension of the vector X. LDX >= 0.
|
||||
*> The leading dimension of the vector X. LDX >= M.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -84,17 +84,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CLARSCL2 ( M, N, D, X, LDX )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER M, N, LDX
|
||||
|
|
|
@ -114,7 +114,11 @@
|
|||
*> \param[in] LDA
|
||||
*> \verbatim
|
||||
*> LDA is INTEGER
|
||||
*> The leading dimension of the array A. LDA >= max(1,M).
|
||||
*> The leading dimension of the array A.
|
||||
*> If TYPE = 'G', 'L', 'U', 'H', LDA >= max(1,M);
|
||||
*> TYPE = 'B', LDA >= KL+1;
|
||||
*> TYPE = 'Q', LDA >= KU+1;
|
||||
*> TYPE = 'Z', LDA >= 2*KL+KU+1.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] INFO
|
||||
|
@ -132,17 +136,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERauxiliary
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER TYPE
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
*> \param[in] LDX
|
||||
*> \verbatim
|
||||
*> LDX is INTEGER
|
||||
*> The leading dimension of the vector X. LDX >= 0.
|
||||
*> The leading dimension of the vector X. LDX >= M.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -84,17 +84,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CLASCL2 ( M, N, D, X, LDX )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER M, N, LDX
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
*> Zx = +-e - f with the sign giving the greater value of
|
||||
*> 2-norm(x). About 5 times as expensive as Default.
|
||||
*> IJOB .ne. 2: Local look ahead strategy where
|
||||
*> all entries of the r.h.s. b is choosen as either +1 or
|
||||
*> all entries of the r.h.s. b is chosen as either +1 or
|
||||
*> -1. Default.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -70,7 +70,7 @@
|
|||
*>
|
||||
*> \param[in] Z
|
||||
*> \verbatim
|
||||
*> Z is REAL array, dimension (LDZ, N)
|
||||
*> Z is COMPLEX array, dimension (LDZ, N)
|
||||
*> On entry, the LU part of the factorization of the n-by-n
|
||||
*> matrix Z computed by CGETC2: Z = P * L * U * Q
|
||||
*> \endverbatim
|
||||
|
@ -83,7 +83,7 @@
|
|||
*>
|
||||
*> \param[in,out] RHS
|
||||
*> \verbatim
|
||||
*> RHS is REAL array, dimension (N).
|
||||
*> RHS is COMPLEX array, dimension (N).
|
||||
*> On entry, RHS contains contributions from other subsystems.
|
||||
*> On exit, RHS contains the solution of the subsystem with
|
||||
*> entries according to the value of IJOB (see above).
|
||||
|
@ -134,7 +134,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERauxiliary
|
||||
*
|
||||
|
@ -169,10 +169,10 @@
|
|||
SUBROUTINE CLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
|
||||
$ JPIV )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER IJOB, LDZ, N
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
*>
|
||||
*> \param[in,out] A
|
||||
*> \verbatim
|
||||
*> A is DOUBLE PRECISION array, dimension (LDA,N)
|
||||
*> A is COMPLEX array, dimension (LDA,N)
|
||||
*> On entry, the symmetric matrix A. If UPLO = 'U', the leading
|
||||
*> N-by-N upper triangular part of A contains the upper
|
||||
*> triangular part of the matrix A, and the strictly lower
|
||||
|
@ -99,17 +99,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexPOcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
RECURSIVE SUBROUTINE CPOTRF2( UPLO, N, A, LDA, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER UPLO
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
*>
|
||||
*> \param[in,out] B
|
||||
*> \verbatim
|
||||
*> B is REAL array, dimension (LDB,NRHS)
|
||||
*> B is COMPLEX array, dimension (LDB,NRHS)
|
||||
*> On entry, the right hand side vectors B for the system of
|
||||
*> linear equations.
|
||||
*> On exit, the solution vectors, X.
|
||||
|
@ -114,17 +114,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexPTcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CPTTRS( UPLO, N, NRHS, D, E, B, LDB, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER UPLO
|
||||
|
|
|
@ -86,7 +86,7 @@
|
|||
*>
|
||||
*> \param[in,out] B
|
||||
*> \verbatim
|
||||
*> B is REAL array, dimension (LDB,NRHS)
|
||||
*> B is COMPLEX array, dimension (LDB,NRHS)
|
||||
*> On entry, the right hand side vectors B for the system of
|
||||
*> linear equations.
|
||||
*> On exit, the solution vectors, X.
|
||||
|
@ -106,17 +106,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexPTcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE CPTTS2( IUPLO, N, NRHS, D, E, B, LDB )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER IUPLO, LDB, N, NRHS
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
*> either an interval (VL,VU] or a range of indices IL:IU for the desired
|
||||
*> eigenvalues.
|
||||
*>
|
||||
*> CSTEGR is a compatability wrapper around the improved CSTEMR routine.
|
||||
*> CSTEGR is a compatibility wrapper around the improved CSTEMR routine.
|
||||
*> See SSTEMR for further details.
|
||||
*>
|
||||
*> One important change is that the ABSTOL parameter no longer provides any
|
||||
|
@ -105,13 +105,17 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -119,14 +123,19 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -240,7 +249,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -256,10 +265,10 @@
|
|||
$ ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK,
|
||||
$ LIWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE
|
||||
|
|
|
@ -153,13 +153,17 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is REAL
|
||||
*>
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -167,14 +171,19 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*>
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -311,7 +320,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -329,10 +338,10 @@
|
|||
$ M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK,
|
||||
$ IWORK, LIWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBZ, RANGE
|
||||
|
|
|
@ -146,7 +146,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexSYcomputational
|
||||
*
|
||||
|
@ -195,7 +195,7 @@
|
|||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> November 2015, Igor Kozachenko,
|
||||
*> June 2016, Igor Kozachenko,
|
||||
*> Computer Science Division,
|
||||
*> University of California, Berkeley
|
||||
*>
|
||||
|
@ -208,10 +208,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER UPLO
|
||||
|
@ -261,7 +261,7 @@
|
|||
* Determine the block size
|
||||
*
|
||||
NB = ILAENV( 1, 'CSYTRF_ROOK', UPLO, N, -1, -1, -1 )
|
||||
LWKOPT = N*NB
|
||||
LWKOPT = MAX( 1, N*NB )
|
||||
WORK( 1 ) = LWKOPT
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -290,7 +290,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -433,10 +433,10 @@
|
|||
$ ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF,
|
||||
$ WORK, LWORK, IWORK, LIWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
LOGICAL WANTQ, WANTZ
|
||||
|
@ -515,6 +515,7 @@
|
|||
* subspaces.
|
||||
*
|
||||
M = 0
|
||||
IF( .NOT.LQUERY .OR. IJOB.NE.0 ) THEN
|
||||
DO 10 K = 1, N
|
||||
ALPHA( K ) = A( K, K )
|
||||
BETA( K ) = B( K, K )
|
||||
|
@ -526,6 +527,7 @@
|
|||
$ M = M + 1
|
||||
END IF
|
||||
10 CONTINUE
|
||||
END IF
|
||||
*
|
||||
IF( IJOB.EQ.1 .OR. IJOB.EQ.2 .OR. IJOB.EQ.4 ) THEN
|
||||
LWMIN = MAX( 1, 2*M*(N-M) )
|
||||
|
|
|
@ -0,0 +1,630 @@
|
|||
*> \brief \b CTREVC3
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
* Online html documentation available at
|
||||
* http://www.netlib.org/lapack/explore-html/
|
||||
*
|
||||
*> \htmlonly
|
||||
*> Download CTREVC3 + dependencies
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.tgz?format=tgz&filename=/lapack/lapack_routine/ctrevc3.f">
|
||||
*> [TGZ]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.zip?format=zip&filename=/lapack/lapack_routine/ctrevc3.f">
|
||||
*> [ZIP]</a>
|
||||
*> <a href="http://www.netlib.org/cgi-bin/netlibfiles.txt?format=txt&filename=/lapack/lapack_routine/ctrevc3.f">
|
||||
*> [TXT]</a>
|
||||
*> \endhtmlonly
|
||||
*
|
||||
* Definition:
|
||||
* ===========
|
||||
*
|
||||
* SUBROUTINE CTREVC3( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL,
|
||||
* VR, LDVR, MM, M, WORK, LWORK, RWORK, INFO )
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
* CHARACTER HOWMNY, SIDE
|
||||
* INTEGER INFO, LDT, LDVL, LDVR, LWORK, M, MM, N
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
* LOGICAL SELECT( * )
|
||||
* REAL RWORK( * )
|
||||
* COMPLEX T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
* $ WORK( * )
|
||||
* ..
|
||||
*
|
||||
*
|
||||
*> \par Purpose:
|
||||
* =============
|
||||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> CTREVC3 computes some or all of the right and/or left eigenvectors of
|
||||
*> a complex upper triangular matrix T.
|
||||
*> Matrices of this type are produced by the Schur factorization of
|
||||
*> a complex general matrix: A = Q*T*Q**H, as computed by CHSEQR.
|
||||
*>
|
||||
*> The right eigenvector x and the left eigenvector y of T corresponding
|
||||
*> to an eigenvalue w are defined by:
|
||||
*>
|
||||
*> T*x = w*x, (y**H)*T = w*(y**H)
|
||||
*>
|
||||
*> where y**H denotes the conjugate transpose of the vector y.
|
||||
*> The eigenvalues are not input to this routine, but are read directly
|
||||
*> from the diagonal of T.
|
||||
*>
|
||||
*> This routine returns the matrices X and/or Y of right and left
|
||||
*> eigenvectors of T, or the products Q*X and/or Q*Y, where Q is an
|
||||
*> input matrix. If Q is the unitary factor that reduces a matrix A to
|
||||
*> Schur form T, then Q*X and Q*Y are the matrices of right and left
|
||||
*> eigenvectors of A.
|
||||
*>
|
||||
*> This uses a Level 3 BLAS version of the back transformation.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
* ==========
|
||||
*
|
||||
*> \param[in] SIDE
|
||||
*> \verbatim
|
||||
*> SIDE is CHARACTER*1
|
||||
*> = 'R': compute right eigenvectors only;
|
||||
*> = 'L': compute left eigenvectors only;
|
||||
*> = 'B': compute both right and left eigenvectors.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] HOWMNY
|
||||
*> \verbatim
|
||||
*> HOWMNY is CHARACTER*1
|
||||
*> = 'A': compute all right and/or left eigenvectors;
|
||||
*> = 'B': compute all right and/or left eigenvectors,
|
||||
*> backtransformed using the matrices supplied in
|
||||
*> VR and/or VL;
|
||||
*> = 'S': compute selected right and/or left eigenvectors,
|
||||
*> as indicated by the logical array SELECT.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] SELECT
|
||||
*> \verbatim
|
||||
*> SELECT is LOGICAL array, dimension (N)
|
||||
*> If HOWMNY = 'S', SELECT specifies the eigenvectors to be
|
||||
*> computed.
|
||||
*> The eigenvector corresponding to the j-th eigenvalue is
|
||||
*> computed if SELECT(j) = .TRUE..
|
||||
*> Not referenced if HOWMNY = 'A' or 'B'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] N
|
||||
*> \verbatim
|
||||
*> N is INTEGER
|
||||
*> The order of the matrix T. N >= 0.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] T
|
||||
*> \verbatim
|
||||
*> T is COMPLEX array, dimension (LDT,N)
|
||||
*> The upper triangular matrix T. T is modified, but restored
|
||||
*> on exit.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDT
|
||||
*> \verbatim
|
||||
*> LDT is INTEGER
|
||||
*> The leading dimension of the array T. LDT >= max(1,N).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] VL
|
||||
*> \verbatim
|
||||
*> VL is COMPLEX array, dimension (LDVL,MM)
|
||||
*> On entry, if SIDE = 'L' or 'B' and HOWMNY = 'B', VL must
|
||||
*> contain an N-by-N matrix Q (usually the unitary matrix Q of
|
||||
*> Schur vectors returned by CHSEQR).
|
||||
*> On exit, if SIDE = 'L' or 'B', VL contains:
|
||||
*> if HOWMNY = 'A', the matrix Y of left eigenvectors of T;
|
||||
*> if HOWMNY = 'B', the matrix Q*Y;
|
||||
*> if HOWMNY = 'S', the left eigenvectors of T specified by
|
||||
*> SELECT, stored consecutively in the columns
|
||||
*> of VL, in the same order as their
|
||||
*> eigenvalues.
|
||||
*> Not referenced if SIDE = 'R'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDVL
|
||||
*> \verbatim
|
||||
*> LDVL is INTEGER
|
||||
*> The leading dimension of the array VL.
|
||||
*> LDVL >= 1, and if SIDE = 'L' or 'B', LDVL >= N.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] VR
|
||||
*> \verbatim
|
||||
*> VR is COMPLEX array, dimension (LDVR,MM)
|
||||
*> On entry, if SIDE = 'R' or 'B' and HOWMNY = 'B', VR must
|
||||
*> contain an N-by-N matrix Q (usually the unitary matrix Q of
|
||||
*> Schur vectors returned by CHSEQR).
|
||||
*> On exit, if SIDE = 'R' or 'B', VR contains:
|
||||
*> if HOWMNY = 'A', the matrix X of right eigenvectors of T;
|
||||
*> if HOWMNY = 'B', the matrix Q*X;
|
||||
*> if HOWMNY = 'S', the right eigenvectors of T specified by
|
||||
*> SELECT, stored consecutively in the columns
|
||||
*> of VR, in the same order as their
|
||||
*> eigenvalues.
|
||||
*> Not referenced if SIDE = 'L'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDVR
|
||||
*> \verbatim
|
||||
*> LDVR is INTEGER
|
||||
*> The leading dimension of the array VR.
|
||||
*> LDVR >= 1, and if SIDE = 'R' or 'B', LDVR >= N.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] MM
|
||||
*> \verbatim
|
||||
*> MM is INTEGER
|
||||
*> The number of columns in the arrays VL and/or VR. MM >= M.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] M
|
||||
*> \verbatim
|
||||
*> M is INTEGER
|
||||
*> The number of columns in the arrays VL and/or VR actually
|
||||
*> used to store the eigenvectors.
|
||||
*> If HOWMNY = 'A' or 'B', M is set to N.
|
||||
*> Each selected eigenvector occupies one column.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] WORK
|
||||
*> \verbatim
|
||||
*> WORK is COMPLEX array, dimension (MAX(1,LWORK))
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LWORK
|
||||
*> \verbatim
|
||||
*> LWORK is INTEGER
|
||||
*> The dimension of array WORK. LWORK >= max(1,2*N).
|
||||
*> For optimum performance, LWORK >= N + 2*N*NB, where NB is
|
||||
*> the optimal blocksize.
|
||||
*>
|
||||
*> If LWORK = -1, then a workspace query is assumed; the routine
|
||||
*> only calculates the optimal size of the WORK array, returns
|
||||
*> this value as the first entry of the WORK array, and no error
|
||||
*> message related to LWORK is issued by XERBLA.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] RWORK
|
||||
*> \verbatim
|
||||
*> RWORK is REAL array, dimension (LRWORK)
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LRWORK
|
||||
*> \verbatim
|
||||
*> LRWORK is INTEGER
|
||||
*> The dimension of array RWORK. LRWORK >= max(1,N).
|
||||
*>
|
||||
*> If LRWORK = -1, then a workspace query is assumed; the routine
|
||||
*> only calculates the optimal size of the RWORK array, returns
|
||||
*> this value as the first entry of the RWORK array, and no error
|
||||
*> message related to LRWORK is issued by XERBLA.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] INFO
|
||||
*> \verbatim
|
||||
*> INFO is INTEGER
|
||||
*> = 0: successful exit
|
||||
*> < 0: if INFO = -i, the i-th argument had an illegal value
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
* ========
|
||||
*
|
||||
*> \author Univ. of Tennessee
|
||||
*> \author Univ. of California Berkeley
|
||||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*
|
||||
* @generated from ztrevc3.f, fortran z -> c, Tue Apr 19 01:47:44 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
*> \par Further Details:
|
||||
* =====================
|
||||
*>
|
||||
*> \verbatim
|
||||
*>
|
||||
*> The algorithm used in this program is basically backward (forward)
|
||||
*> substitution, with scaling to make the the code robust against
|
||||
*> possible overflow.
|
||||
*>
|
||||
*> Each eigenvector is normalized so that the element of largest
|
||||
*> magnitude has magnitude 1; here the magnitude of a complex number
|
||||
*> (x,y) is taken to be |x| + |y|.
|
||||
*> \endverbatim
|
||||
*>
|
||||
* =====================================================================
|
||||
SUBROUTINE CTREVC3( SIDE, HOWMNY, SELECT, N, T, LDT, VL, LDVL, VR,
|
||||
$ LDVR, MM, M, WORK, LWORK, RWORK, LRWORK, INFO)
|
||||
IMPLICIT NONE
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER HOWMNY, SIDE
|
||||
INTEGER INFO, LDT, LDVL, LDVR, LWORK, LRWORK, M, MM, N
|
||||
* ..
|
||||
* .. Array Arguments ..
|
||||
LOGICAL SELECT( * )
|
||||
REAL RWORK( * )
|
||||
COMPLEX T( LDT, * ), VL( LDVL, * ), VR( LDVR, * ),
|
||||
$ WORK( * )
|
||||
* ..
|
||||
*
|
||||
* =====================================================================
|
||||
*
|
||||
* .. Parameters ..
|
||||
REAL ZERO, ONE
|
||||
PARAMETER ( ZERO = 0.0E+0, ONE = 1.0E+0 )
|
||||
COMPLEX CZERO, CONE
|
||||
PARAMETER ( CZERO = ( 0.0E+0, 0.0E+0 ),
|
||||
$ CONE = ( 1.0E+0, 0.0E+0 ) )
|
||||
INTEGER NBMIN, NBMAX
|
||||
PARAMETER ( NBMIN = 8, NBMAX = 128 )
|
||||
* ..
|
||||
* .. Local Scalars ..
|
||||
LOGICAL ALLV, BOTHV, LEFTV, LQUERY, OVER, RIGHTV, SOMEV
|
||||
INTEGER I, II, IS, J, K, KI, IV, MAXWRK, NB
|
||||
REAL OVFL, REMAX, SCALE, SMIN, SMLNUM, ULP, UNFL
|
||||
COMPLEX CDUM
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
LOGICAL LSAME
|
||||
INTEGER ILAENV, ICAMAX
|
||||
REAL SLAMCH, SCASUM
|
||||
EXTERNAL LSAME, ILAENV, ICAMAX, SLAMCH, SCASUM
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL XERBLA, CCOPY, CSSCAL, CGEMV, CLATRS
|
||||
* ..
|
||||
* .. Intrinsic Functions ..
|
||||
INTRINSIC ABS, REAL, CMPLX, CONJG, AIMAG, MAX
|
||||
* ..
|
||||
* .. Statement Functions ..
|
||||
REAL CABS1
|
||||
* ..
|
||||
* .. Statement Function definitions ..
|
||||
CABS1( CDUM ) = ABS( REAL( CDUM ) ) + ABS( AIMAG( CDUM ) )
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
* Decode and test the input parameters
|
||||
*
|
||||
BOTHV = LSAME( SIDE, 'B' )
|
||||
RIGHTV = LSAME( SIDE, 'R' ) .OR. BOTHV
|
||||
LEFTV = LSAME( SIDE, 'L' ) .OR. BOTHV
|
||||
*
|
||||
ALLV = LSAME( HOWMNY, 'A' )
|
||||
OVER = LSAME( HOWMNY, 'B' )
|
||||
SOMEV = LSAME( HOWMNY, 'S' )
|
||||
*
|
||||
* Set M to the number of columns required to store the selected
|
||||
* eigenvectors.
|
||||
*
|
||||
IF( SOMEV ) THEN
|
||||
M = 0
|
||||
DO 10 J = 1, N
|
||||
IF( SELECT( J ) )
|
||||
$ M = M + 1
|
||||
10 CONTINUE
|
||||
ELSE
|
||||
M = N
|
||||
END IF
|
||||
*
|
||||
INFO = 0
|
||||
NB = ILAENV( 1, 'CTREVC', SIDE // HOWMNY, N, -1, -1, -1 )
|
||||
MAXWRK = N + 2*N*NB
|
||||
WORK(1) = MAXWRK
|
||||
RWORK(1) = N
|
||||
LQUERY = ( LWORK.EQ.-1 .OR. LRWORK.EQ.-1 )
|
||||
IF( .NOT.RIGHTV .AND. .NOT.LEFTV ) THEN
|
||||
INFO = -1
|
||||
ELSE IF( .NOT.ALLV .AND. .NOT.OVER .AND. .NOT.SOMEV ) THEN
|
||||
INFO = -2
|
||||
ELSE IF( N.LT.0 ) THEN
|
||||
INFO = -4
|
||||
ELSE IF( LDT.LT.MAX( 1, N ) ) THEN
|
||||
INFO = -6
|
||||
ELSE IF( LDVL.LT.1 .OR. ( LEFTV .AND. LDVL.LT.N ) ) THEN
|
||||
INFO = -8
|
||||
ELSE IF( LDVR.LT.1 .OR. ( RIGHTV .AND. LDVR.LT.N ) ) THEN
|
||||
INFO = -10
|
||||
ELSE IF( MM.LT.M ) THEN
|
||||
INFO = -11
|
||||
ELSE IF( LWORK.LT.MAX( 1, 2*N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -14
|
||||
ELSE IF ( LRWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN
|
||||
INFO = -16
|
||||
END IF
|
||||
IF( INFO.NE.0 ) THEN
|
||||
CALL XERBLA( 'CTREVC3', -INFO )
|
||||
RETURN
|
||||
ELSE IF( LQUERY ) THEN
|
||||
RETURN
|
||||
END IF
|
||||
*
|
||||
* Quick return if possible.
|
||||
*
|
||||
IF( N.EQ.0 )
|
||||
$ RETURN
|
||||
*
|
||||
* Use blocked version of back-transformation if sufficient workspace.
|
||||
* Zero-out the workspace to avoid potential NaN propagation.
|
||||
*
|
||||
IF( OVER .AND. LWORK .GE. N + 2*N*NBMIN ) THEN
|
||||
NB = (LWORK - N) / (2*N)
|
||||
NB = MIN( NB, NBMAX )
|
||||
CALL CLASET( 'F', N, 1+2*NB, CZERO, CZERO, WORK, N )
|
||||
ELSE
|
||||
NB = 1
|
||||
END IF
|
||||
*
|
||||
* Set the constants to control overflow.
|
||||
*
|
||||
UNFL = SLAMCH( 'Safe minimum' )
|
||||
OVFL = ONE / UNFL
|
||||
CALL SLABAD( UNFL, OVFL )
|
||||
ULP = SLAMCH( 'Precision' )
|
||||
SMLNUM = UNFL*( N / ULP )
|
||||
*
|
||||
* Store the diagonal elements of T in working array WORK.
|
||||
*
|
||||
DO 20 I = 1, N
|
||||
WORK( I ) = T( I, I )
|
||||
20 CONTINUE
|
||||
*
|
||||
* Compute 1-norm of each column of strictly upper triangular
|
||||
* part of T to control overflow in triangular solver.
|
||||
*
|
||||
RWORK( 1 ) = ZERO
|
||||
DO 30 J = 2, N
|
||||
RWORK( J ) = SCASUM( J-1, T( 1, J ), 1 )
|
||||
30 CONTINUE
|
||||
*
|
||||
IF( RIGHTV ) THEN
|
||||
*
|
||||
* ============================================================
|
||||
* Compute right eigenvectors.
|
||||
*
|
||||
* IV is index of column in current block.
|
||||
* Non-blocked version always uses IV=NB=1;
|
||||
* blocked version starts with IV=NB, goes down to 1.
|
||||
* (Note the "0-th" column is used to store the original diagonal.)
|
||||
IV = NB
|
||||
IS = M
|
||||
DO 80 KI = N, 1, -1
|
||||
IF( SOMEV ) THEN
|
||||
IF( .NOT.SELECT( KI ) )
|
||||
$ GO TO 80
|
||||
END IF
|
||||
SMIN = MAX( ULP*( CABS1( T( KI, KI ) ) ), SMLNUM )
|
||||
*
|
||||
* --------------------------------------------------------
|
||||
* Complex right eigenvector
|
||||
*
|
||||
WORK( KI + IV*N ) = CONE
|
||||
*
|
||||
* Form right-hand side.
|
||||
*
|
||||
DO 40 K = 1, KI - 1
|
||||
WORK( K + IV*N ) = -T( K, KI )
|
||||
40 CONTINUE
|
||||
*
|
||||
* Solve upper triangular system:
|
||||
* [ T(1:KI-1,1:KI-1) - T(KI,KI) ]*X = SCALE*WORK.
|
||||
*
|
||||
DO 50 K = 1, KI - 1
|
||||
T( K, K ) = T( K, K ) - T( KI, KI )
|
||||
IF( CABS1( T( K, K ) ).LT.SMIN )
|
||||
$ T( K, K ) = SMIN
|
||||
50 CONTINUE
|
||||
*
|
||||
IF( KI.GT.1 ) THEN
|
||||
CALL CLATRS( 'Upper', 'No transpose', 'Non-unit', 'Y',
|
||||
$ KI-1, T, LDT, WORK( 1 + IV*N ), SCALE,
|
||||
$ RWORK, INFO )
|
||||
WORK( KI + IV*N ) = SCALE
|
||||
END IF
|
||||
*
|
||||
* Copy the vector x or Q*x to VR and normalize.
|
||||
*
|
||||
IF( .NOT.OVER ) THEN
|
||||
* ------------------------------
|
||||
* no back-transform: copy x to VR and normalize.
|
||||
CALL CCOPY( KI, WORK( 1 + IV*N ), 1, VR( 1, IS ), 1 )
|
||||
*
|
||||
II = ICAMAX( KI, VR( 1, IS ), 1 )
|
||||
REMAX = ONE / CABS1( VR( II, IS ) )
|
||||
CALL CSSCAL( KI, REMAX, VR( 1, IS ), 1 )
|
||||
*
|
||||
DO 60 K = KI + 1, N
|
||||
VR( K, IS ) = CZERO
|
||||
60 CONTINUE
|
||||
*
|
||||
ELSE IF( NB.EQ.1 ) THEN
|
||||
* ------------------------------
|
||||
* version 1: back-transform each vector with GEMV, Q*x.
|
||||
IF( KI.GT.1 )
|
||||
$ CALL CGEMV( 'N', N, KI-1, CONE, VR, LDVR,
|
||||
$ WORK( 1 + IV*N ), 1, CMPLX( SCALE ),
|
||||
$ VR( 1, KI ), 1 )
|
||||
*
|
||||
II = ICAMAX( N, VR( 1, KI ), 1 )
|
||||
REMAX = ONE / CABS1( VR( II, KI ) )
|
||||
CALL CSSCAL( N, REMAX, VR( 1, KI ), 1 )
|
||||
*
|
||||
ELSE
|
||||
* ------------------------------
|
||||
* version 2: back-transform block of vectors with GEMM
|
||||
* zero out below vector
|
||||
DO K = KI + 1, N
|
||||
WORK( K + IV*N ) = CZERO
|
||||
END DO
|
||||
*
|
||||
* Columns IV:NB of work are valid vectors.
|
||||
* When the number of vectors stored reaches NB,
|
||||
* or if this was last vector, do the GEMM
|
||||
IF( (IV.EQ.1) .OR. (KI.EQ.1) ) THEN
|
||||
CALL CGEMM( 'N', 'N', N, NB-IV+1, KI+NB-IV, CONE,
|
||||
$ VR, LDVR,
|
||||
$ WORK( 1 + (IV)*N ), N,
|
||||
$ CZERO,
|
||||
$ WORK( 1 + (NB+IV)*N ), N )
|
||||
* normalize vectors
|
||||
DO K = IV, NB
|
||||
II = ICAMAX( N, WORK( 1 + (NB+K)*N ), 1 )
|
||||
REMAX = ONE / CABS1( WORK( II + (NB+K)*N ) )
|
||||
CALL CSSCAL( N, REMAX, WORK( 1 + (NB+K)*N ), 1 )
|
||||
END DO
|
||||
CALL CLACPY( 'F', N, NB-IV+1,
|
||||
$ WORK( 1 + (NB+IV)*N ), N,
|
||||
$ VR( 1, KI ), LDVR )
|
||||
IV = NB
|
||||
ELSE
|
||||
IV = IV - 1
|
||||
END IF
|
||||
END IF
|
||||
*
|
||||
* Restore the original diagonal elements of T.
|
||||
*
|
||||
DO 70 K = 1, KI - 1
|
||||
T( K, K ) = WORK( K )
|
||||
70 CONTINUE
|
||||
*
|
||||
IS = IS - 1
|
||||
80 CONTINUE
|
||||
END IF
|
||||
*
|
||||
IF( LEFTV ) THEN
|
||||
*
|
||||
* ============================================================
|
||||
* Compute left eigenvectors.
|
||||
*
|
||||
* IV is index of column in current block.
|
||||
* Non-blocked version always uses IV=1;
|
||||
* blocked version starts with IV=1, goes up to NB.
|
||||
* (Note the "0-th" column is used to store the original diagonal.)
|
||||
IV = 1
|
||||
IS = 1
|
||||
DO 130 KI = 1, N
|
||||
*
|
||||
IF( SOMEV ) THEN
|
||||
IF( .NOT.SELECT( KI ) )
|
||||
$ GO TO 130
|
||||
END IF
|
||||
SMIN = MAX( ULP*( CABS1( T( KI, KI ) ) ), SMLNUM )
|
||||
*
|
||||
* --------------------------------------------------------
|
||||
* Complex left eigenvector
|
||||
*
|
||||
WORK( KI + IV*N ) = CONE
|
||||
*
|
||||
* Form right-hand side.
|
||||
*
|
||||
DO 90 K = KI + 1, N
|
||||
WORK( K + IV*N ) = -CONJG( T( KI, K ) )
|
||||
90 CONTINUE
|
||||
*
|
||||
* Solve conjugate-transposed triangular system:
|
||||
* [ T(KI+1:N,KI+1:N) - T(KI,KI) ]**H * X = SCALE*WORK.
|
||||
*
|
||||
DO 100 K = KI + 1, N
|
||||
T( K, K ) = T( K, K ) - T( KI, KI )
|
||||
IF( CABS1( T( K, K ) ).LT.SMIN )
|
||||
$ T( K, K ) = SMIN
|
||||
100 CONTINUE
|
||||
*
|
||||
IF( KI.LT.N ) THEN
|
||||
CALL CLATRS( 'Upper', 'Conjugate transpose', 'Non-unit',
|
||||
$ 'Y', N-KI, T( KI+1, KI+1 ), LDT,
|
||||
$ WORK( KI+1 + IV*N ), SCALE, RWORK, INFO )
|
||||
WORK( KI + IV*N ) = SCALE
|
||||
END IF
|
||||
*
|
||||
* Copy the vector x or Q*x to VL and normalize.
|
||||
*
|
||||
IF( .NOT.OVER ) THEN
|
||||
* ------------------------------
|
||||
* no back-transform: copy x to VL and normalize.
|
||||
CALL CCOPY( N-KI+1, WORK( KI + IV*N ), 1, VL(KI,IS), 1 )
|
||||
*
|
||||
II = ICAMAX( N-KI+1, VL( KI, IS ), 1 ) + KI - 1
|
||||
REMAX = ONE / CABS1( VL( II, IS ) )
|
||||
CALL CSSCAL( N-KI+1, REMAX, VL( KI, IS ), 1 )
|
||||
*
|
||||
DO 110 K = 1, KI - 1
|
||||
VL( K, IS ) = CZERO
|
||||
110 CONTINUE
|
||||
*
|
||||
ELSE IF( NB.EQ.1 ) THEN
|
||||
* ------------------------------
|
||||
* version 1: back-transform each vector with GEMV, Q*x.
|
||||
IF( KI.LT.N )
|
||||
$ CALL CGEMV( 'N', N, N-KI, CONE, VL( 1, KI+1 ), LDVL,
|
||||
$ WORK( KI+1 + IV*N ), 1, CMPLX( SCALE ),
|
||||
$ VL( 1, KI ), 1 )
|
||||
*
|
||||
II = ICAMAX( N, VL( 1, KI ), 1 )
|
||||
REMAX = ONE / CABS1( VL( II, KI ) )
|
||||
CALL CSSCAL( N, REMAX, VL( 1, KI ), 1 )
|
||||
*
|
||||
ELSE
|
||||
* ------------------------------
|
||||
* version 2: back-transform block of vectors with GEMM
|
||||
* zero out above vector
|
||||
* could go from KI-NV+1 to KI-1
|
||||
DO K = 1, KI - 1
|
||||
WORK( K + IV*N ) = CZERO
|
||||
END DO
|
||||
*
|
||||
* Columns 1:IV of work are valid vectors.
|
||||
* When the number of vectors stored reaches NB,
|
||||
* or if this was last vector, do the GEMM
|
||||
IF( (IV.EQ.NB) .OR. (KI.EQ.N) ) THEN
|
||||
CALL CGEMM( 'N', 'N', N, IV, N-KI+IV, ONE,
|
||||
$ VL( 1, KI-IV+1 ), LDVL,
|
||||
$ WORK( KI-IV+1 + (1)*N ), N,
|
||||
$ CZERO,
|
||||
$ WORK( 1 + (NB+1)*N ), N )
|
||||
* normalize vectors
|
||||
DO K = 1, IV
|
||||
II = ICAMAX( N, WORK( 1 + (NB+K)*N ), 1 )
|
||||
REMAX = ONE / CABS1( WORK( II + (NB+K)*N ) )
|
||||
CALL CSSCAL( N, REMAX, WORK( 1 + (NB+K)*N ), 1 )
|
||||
END DO
|
||||
CALL CLACPY( 'F', N, IV,
|
||||
$ WORK( 1 + (NB+1)*N ), N,
|
||||
$ VL( 1, KI-IV+1 ), LDVL )
|
||||
IV = 1
|
||||
ELSE
|
||||
IV = IV + 1
|
||||
END IF
|
||||
END IF
|
||||
*
|
||||
* Restore the original diagonal elements of T.
|
||||
*
|
||||
DO 120 K = KI + 1, N
|
||||
T( K, K ) = WORK( K )
|
||||
120 CONTINUE
|
||||
*
|
||||
IS = IS + 1
|
||||
130 CONTINUE
|
||||
END IF
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
* End of CTREVC3
|
||||
*
|
||||
END
|
|
@ -81,7 +81,7 @@
|
|||
*>
|
||||
*> \param[out] ARF
|
||||
*> \verbatim
|
||||
*> ARF is COMPLEX*16 array, dimension ( N*(N+1)/2 ),
|
||||
*> ARF is COMPLEX array, dimension ( N*(N+1)/2 ),
|
||||
*> On exit, the upper or lower triangular matrix A stored in
|
||||
*> RFP format. For a further discussion see Notes below.
|
||||
*> \endverbatim
|
||||
|
@ -101,7 +101,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -216,10 +216,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE CTRTTF( TRANSR, UPLO, N, A, LDA, ARF, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER TRANSR, UPLO
|
||||
|
|
|
@ -202,7 +202,7 @@
|
|||
SUBROUTINE CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI,
|
||||
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* July 2012
|
||||
|
@ -307,9 +307,8 @@
|
|||
CALL CLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I),
|
||||
$ X21(I+1,I+1), LDX21, WORK(ILARF) )
|
||||
CALL CLACGV( Q-I, X21(I,I+1), LDX21 )
|
||||
C = SQRT( SCNRM2( P-I, X11(I+1,I+1), 1, X11(I+1,I+1),
|
||||
$ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1),
|
||||
$ 1 )**2 )
|
||||
C = SQRT( SCNRM2( P-I, X11(I+1,I+1), 1 )**2
|
||||
$ + SCNRM2( M-P-I, X21(I+1,I+1), 1 )**2 )
|
||||
PHI(I) = ATAN2( S, C )
|
||||
CALL CUNBDB5( P-I, M-P-I, Q-I-1, X11(I+1,I+1), 1,
|
||||
$ X21(I+1,I+1), 1, X11(I+1,I+2), LDX11,
|
||||
|
|
|
@ -202,7 +202,7 @@
|
|||
SUBROUTINE CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI,
|
||||
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* July 2012
|
||||
|
@ -296,8 +296,8 @@
|
|||
CALL CLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I),
|
||||
$ X21(I,I), LDX21, WORK(ILARF) )
|
||||
CALL CLACGV( Q-I+1, X11(I,I), LDX11 )
|
||||
S = SQRT( SCNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
|
||||
$ 1 )**2 + SCNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 )
|
||||
S = SQRT( SCNRM2( P-I, X11(I+1,I), 1 )**2
|
||||
$ + SCNRM2( M-P-I+1, X21(I,I), 1 )**2 )
|
||||
THETA(I) = ATAN2( S, C )
|
||||
*
|
||||
CALL CUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1,
|
||||
|
|
|
@ -202,7 +202,7 @@
|
|||
SUBROUTINE CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI,
|
||||
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* July 2012
|
||||
|
@ -296,8 +296,8 @@
|
|||
CALL CLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
|
||||
$ X21(I+1,I), LDX21, WORK(ILARF) )
|
||||
CALL CLACGV( Q-I+1, X21(I,I), LDX21 )
|
||||
C = SQRT( SCNRM2( P-I+1, X11(I,I), 1, X11(I,I),
|
||||
$ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), 1 )**2 )
|
||||
C = SQRT( SCNRM2( P-I+1, X11(I,I), 1 )**2
|
||||
$ + SCNRM2( M-P-I, X21(I+1,I), 1 )**2 )
|
||||
THETA(I) = ATAN2( S, C )
|
||||
*
|
||||
CALL CUNBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1,
|
||||
|
|
|
@ -213,7 +213,7 @@
|
|||
$ TAUP1, TAUP2, TAUQ1, PHANTOM, WORK, LWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* July 2012
|
||||
|
@ -344,9 +344,8 @@
|
|||
$ X21(I+1,I), LDX21, WORK(ILARF) )
|
||||
CALL CLACGV( Q-I+1, X21(I,I), LDX21 )
|
||||
IF( I .LT. M-Q ) THEN
|
||||
S = SQRT( SCNRM2( P-I, X11(I+1,I), 1, X11(I+1,I),
|
||||
$ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I),
|
||||
$ 1 )**2 )
|
||||
S = SQRT( SCNRM2( P-I, X11(I+1,I), 1 )**2
|
||||
$ + SCNRM2( M-P-I, X21(I+1,I), 1 )**2 )
|
||||
PHI(I) = ATAN2( S, C )
|
||||
END IF
|
||||
*
|
||||
|
|
|
@ -308,7 +308,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -320,10 +320,10 @@
|
|||
$ LDV2T, WORK, LWORK, RWORK, LRWORK,
|
||||
$ IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, SIGNS, TRANS
|
||||
|
@ -371,7 +371,7 @@
|
|||
EXTERNAL LSAME
|
||||
* ..
|
||||
* .. Intrinsic Functions
|
||||
INTRINSIC COS, INT, MAX, MIN, SIN
|
||||
INTRINSIC INT, MAX, MIN
|
||||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
|
@ -488,12 +488,12 @@
|
|||
ITAUQ1 = ITAUP2 + MAX( 1, M - P )
|
||||
ITAUQ2 = ITAUQ1 + MAX( 1, Q )
|
||||
IORGQR = ITAUQ2 + MAX( 1, M - Q )
|
||||
CALL CUNGQR( M-Q, M-Q, M-Q, 0, MAX(1,M-Q), U1, WORK, -1,
|
||||
CALL CUNGQR( M-Q, M-Q, M-Q, U1, MAX(1,M-Q), U1, WORK, -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRWORKOPT = INT( WORK(1) )
|
||||
LORGQRWORKMIN = MAX( 1, M - Q )
|
||||
IORGLQ = ITAUQ2 + MAX( 1, M - Q )
|
||||
CALL CUNGLQ( M-Q, M-Q, M-Q, 0, MAX(1,M-Q), U1, WORK, -1,
|
||||
CALL CUNGLQ( M-Q, M-Q, M-Q, U1, MAX(1,M-Q), U1, WORK, -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQWORKOPT = INT( WORK(1) )
|
||||
LORGLQWORKMIN = MAX( 1, M - Q )
|
||||
|
|
|
@ -244,7 +244,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date July 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup complexOTHERcomputational
|
||||
*
|
||||
|
@ -254,10 +254,10 @@
|
|||
$ LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* July 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBU1, JOBU2, JOBV1T
|
||||
|
@ -288,6 +288,10 @@
|
|||
$ LWORKMIN, LWORKOPT, R
|
||||
LOGICAL LQUERY, WANTU1, WANTU2, WANTV1T
|
||||
* ..
|
||||
* .. Local Arrays ..
|
||||
REAL DUM( 1 )
|
||||
COMPLEX CDUM( 1, 1 )
|
||||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL CBBCSD, CCOPY, CLACPY, CLAPMR, CLAPMT, CUNBDB1,
|
||||
$ CUNBDB2, CUNBDB3, CUNBDB4, CUNGLQ, CUNGQR,
|
||||
|
@ -320,11 +324,11 @@
|
|||
INFO = -8
|
||||
ELSE IF( LDX21 .LT. MAX( 1, M-P ) ) THEN
|
||||
INFO = -10
|
||||
ELSE IF( WANTU1 .AND. LDU1 .LT. P ) THEN
|
||||
ELSE IF( WANTU1 .AND. LDU1 .LT. MAX( 1, P ) ) THEN
|
||||
INFO = -13
|
||||
ELSE IF( WANTU2 .AND. LDU2 .LT. M - P ) THEN
|
||||
ELSE IF( WANTU2 .AND. LDU2 .LT. MAX( 1, M - P ) ) THEN
|
||||
INFO = -15
|
||||
ELSE IF( WANTV1T .AND. LDV1T .LT. Q ) THEN
|
||||
ELSE IF( WANTV1T .AND. LDV1T .LT. MAX( 1, Q ) ) THEN
|
||||
INFO = -17
|
||||
END IF
|
||||
*
|
||||
|
@ -380,99 +384,119 @@
|
|||
IORBDB = ITAUQ1 + MAX( 1, Q )
|
||||
IORGQR = ITAUQ1 + MAX( 1, Q )
|
||||
IORGLQ = ITAUQ1 + MAX( 1, Q )
|
||||
LORGQRMIN = 1
|
||||
LORGQROPT = 1
|
||||
LORGLQMIN = 1
|
||||
LORGLQOPT = 1
|
||||
IF( R .EQ. Q ) THEN
|
||||
CALL CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0,
|
||||
$ 0, 0, WORK, -1, CHILDINFO )
|
||||
CALL CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA,
|
||||
$ DUM, CDUM, CDUM, CDUM, WORK, -1,
|
||||
$ CHILDINFO )
|
||||
LORBDB = INT( WORK(1) )
|
||||
IF( P .GE. M-P ) THEN
|
||||
CALL CUNGQR( P, P, Q, U1, LDU1, 0, WORK(1), -1,
|
||||
IF( WANTU1 .AND. P .GT. 0 ) THEN
|
||||
CALL CUNGQR( P, P, Q, U1, LDU1, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, P )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
ELSE
|
||||
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, 0, WORK(1), -1,
|
||||
LORGQRMIN = MAX( LORGQRMIN, P )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
ENDIF
|
||||
IF( WANTU2 .AND. M-P .GT. 0 ) THEN
|
||||
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, M-P )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
LORGQRMIN = MAX( LORGQRMIN, M-P )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTV1T .AND. Q .GT. 0 ) THEN
|
||||
CALL CUNGLQ( Q-1, Q-1, Q-1, V1T, LDV1T,
|
||||
$ CDUM, WORK(1), -1, CHILDINFO )
|
||||
LORGLQMIN = MAX( LORGLQMIN, Q-1 )
|
||||
LORGLQOPT = MAX( LORGLQOPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
CALL CUNGLQ( MAX(0,Q-1), MAX(0,Q-1), MAX(0,Q-1), V1T, LDV1T,
|
||||
$ 0, WORK(1), -1, CHILDINFO )
|
||||
LORGLQMIN = MAX( 1, Q-1 )
|
||||
LORGLQOPT = INT( WORK(1) )
|
||||
CALL CBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA,
|
||||
$ 0, U1, LDU1, U2, LDU2, V1T, LDV1T, 0, 1, 0, 0,
|
||||
$ 0, 0, 0, 0, 0, 0, RWORK(1), -1, CHILDINFO )
|
||||
$ DUM(1), U1, LDU1, U2, LDU2, V1T, LDV1T, CDUM,
|
||||
$ 1, DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
|
||||
$ RWORK(1), -1, CHILDINFO )
|
||||
LBBCSD = INT( RWORK(1) )
|
||||
ELSE IF( R .EQ. P ) THEN
|
||||
CALL CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0,
|
||||
$ 0, 0, WORK(1), -1, CHILDINFO )
|
||||
CALL CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, DUM,
|
||||
$ CDUM, CDUM, CDUM, WORK(1), -1, CHILDINFO )
|
||||
LORBDB = INT( WORK(1) )
|
||||
IF( P-1 .GE. M-P ) THEN
|
||||
CALL CUNGQR( P-1, P-1, P-1, U1(2,2), LDU1, 0, WORK(1),
|
||||
IF( WANTU1 .AND. P .GT. 0 ) THEN
|
||||
CALL CUNGQR( P-1, P-1, P-1, U1(2,2), LDU1, CDUM, WORK(1),
|
||||
$ -1, CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, P-1 )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
ELSE
|
||||
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, 0, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, M-P )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
LORGQRMIN = MAX( LORGQRMIN, P-1 )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTU2 .AND. M-P .GT. 0 ) THEN
|
||||
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( LORGQRMIN, M-P )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTV1T .AND. Q .GT. 0 ) THEN
|
||||
CALL CUNGLQ( Q, Q, R, V1T, LDV1T, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQMIN = MAX( LORGLQMIN, Q )
|
||||
LORGLQOPT = MAX( LORGLQOPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
CALL CUNGLQ( Q, Q, R, V1T, LDV1T, 0, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQMIN = MAX( 1, Q )
|
||||
LORGLQOPT = INT( WORK(1) )
|
||||
CALL CBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA,
|
||||
$ 0, V1T, LDV1T, 0, 1, U1, LDU1, U2, LDU2, 0, 0,
|
||||
$ 0, 0, 0, 0, 0, 0, RWORK(1), -1, CHILDINFO )
|
||||
$ DUM, V1T, LDV1T, CDUM, 1, U1, LDU1, U2, LDU2,
|
||||
$ DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
|
||||
$ RWORK(1), -1, CHILDINFO )
|
||||
LBBCSD = INT( RWORK(1) )
|
||||
ELSE IF( R .EQ. M-P ) THEN
|
||||
CALL CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0,
|
||||
$ 0, 0, WORK(1), -1, CHILDINFO )
|
||||
CALL CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, DUM,
|
||||
$ CDUM, CDUM, CDUM, WORK(1), -1, CHILDINFO )
|
||||
LORBDB = INT( WORK(1) )
|
||||
IF( P .GE. M-P-1 ) THEN
|
||||
CALL CUNGQR( P, P, Q, U1, LDU1, 0, WORK(1), -1,
|
||||
IF( WANTU1 .AND. P .GT. 0 ) THEN
|
||||
CALL CUNGQR( P, P, Q, U1, LDU1, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, P )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
ELSE
|
||||
CALL CUNGQR( M-P-1, M-P-1, M-P-1, U2(2,2), LDU2, 0,
|
||||
$ WORK(1), -1, CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, M-P-1 )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
LORGQRMIN = MAX( LORGQRMIN, P )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTU2 .AND. M-P .GT. 0 ) THEN
|
||||
CALL CUNGQR( M-P-1, M-P-1, M-P-1, U2(2,2), LDU2, CDUM,
|
||||
$ WORK(1), -1, CHILDINFO )
|
||||
LORGQRMIN = MAX( LORGQRMIN, M-P-1 )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTV1T .AND. Q .GT. 0 ) THEN
|
||||
CALL CUNGLQ( Q, Q, R, V1T, LDV1T, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQMIN = MAX( LORGLQMIN, Q )
|
||||
LORGLQOPT = MAX( LORGLQOPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
CALL CUNGLQ( Q, Q, R, V1T, LDV1T, 0, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQMIN = MAX( 1, Q )
|
||||
LORGLQOPT = INT( WORK(1) )
|
||||
CALL CBBCSD( 'N', JOBV1T, JOBU2, JOBU1, 'T', M, M-Q, M-P,
|
||||
$ THETA, 0, 0, 1, V1T, LDV1T, U2, LDU2, U1, LDU1,
|
||||
$ 0, 0, 0, 0, 0, 0, 0, 0, RWORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
$ THETA, DUM, CDUM, 1, V1T, LDV1T, U2, LDU2, U1,
|
||||
$ LDU1, DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
|
||||
$ RWORK(1), -1, CHILDINFO )
|
||||
LBBCSD = INT( RWORK(1) )
|
||||
ELSE
|
||||
CALL CUNBDB4( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0,
|
||||
$ 0, 0, 0, WORK(1), -1, CHILDINFO )
|
||||
CALL CUNBDB4( M, P, Q, X11, LDX11, X21, LDX21, THETA, DUM,
|
||||
$ CDUM, CDUM, CDUM, CDUM, WORK(1), -1, CHILDINFO
|
||||
$ )
|
||||
LORBDB = M + INT( WORK(1) )
|
||||
IF( P .GE. M-P ) THEN
|
||||
CALL CUNGQR( P, P, M-Q, U1, LDU1, 0, WORK(1), -1,
|
||||
IF( WANTU1 .AND. P .GT. 0 ) THEN
|
||||
CALL CUNGQR( P, P, M-Q, U1, LDU1, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, P )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
ELSE
|
||||
CALL CUNGQR( M-P, M-P, M-Q, U2, LDU2, 0, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( 1, M-P )
|
||||
LORGQROPT = INT( WORK(1) )
|
||||
LORGQRMIN = MAX( LORGQRMIN, P )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTU2 .AND. M-P .GT. 0 ) THEN
|
||||
CALL CUNGQR( M-P, M-P, M-Q, U2, LDU2, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGQRMIN = MAX( LORGQRMIN, M-P )
|
||||
LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
IF( WANTV1T .AND. Q .GT. 0 ) THEN
|
||||
CALL CUNGLQ( Q, Q, Q, V1T, LDV1T, CDUM, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQMIN = MAX( LORGLQMIN, Q )
|
||||
LORGLQOPT = MAX( LORGLQOPT, INT( WORK(1) ) )
|
||||
END IF
|
||||
CALL CUNGLQ( Q, Q, Q, V1T, LDV1T, 0, WORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
LORGLQMIN = MAX( 1, Q )
|
||||
LORGLQOPT = INT( WORK(1) )
|
||||
CALL CBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q,
|
||||
$ THETA, 0, U2, LDU2, U1, LDU1, 0, 1, V1T, LDV1T,
|
||||
$ 0, 0, 0, 0, 0, 0, 0, 0, RWORK(1), -1,
|
||||
$ CHILDINFO )
|
||||
$ THETA, DUM, U2, LDU2, U1, LDU1, CDUM, 1, V1T,
|
||||
$ LDV1T, DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
|
||||
$ RWORK(1), -1, CHILDINFO )
|
||||
LBBCSD = INT( RWORK(1) )
|
||||
END IF
|
||||
LRWORKMIN = IBBCSD+LBBCSD-1
|
||||
|
@ -538,8 +562,8 @@
|
|||
* Simultaneously diagonalize X11 and X21.
|
||||
*
|
||||
CALL CBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA,
|
||||
$ RWORK(IPHI), U1, LDU1, U2, LDU2, V1T, LDV1T, 0, 1,
|
||||
$ RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
|
||||
$ RWORK(IPHI), U1, LDU1, U2, LDU2, V1T, LDV1T, CDUM,
|
||||
$ 1, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
|
||||
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E),
|
||||
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD,
|
||||
$ CHILDINFO )
|
||||
|
@ -592,8 +616,8 @@
|
|||
* Simultaneously diagonalize X11 and X21.
|
||||
*
|
||||
CALL CBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA,
|
||||
$ RWORK(IPHI), V1T, LDV1T, 0, 1, U1, LDU1, U2, LDU2,
|
||||
$ RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
|
||||
$ RWORK(IPHI), V1T, LDV1T, CDUM, 1, U1, LDU1, U2,
|
||||
$ LDU2, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
|
||||
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E),
|
||||
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD,
|
||||
$ CHILDINFO )
|
||||
|
@ -647,7 +671,7 @@
|
|||
* Simultaneously diagonalize X11 and X21.
|
||||
*
|
||||
CALL CBBCSD( 'N', JOBV1T, JOBU2, JOBU1, 'T', M, M-Q, M-P,
|
||||
$ THETA, RWORK(IPHI), 0, 1, V1T, LDV1T, U2, LDU2,
|
||||
$ THETA, RWORK(IPHI), CDUM, 1, V1T, LDV1T, U2, LDU2,
|
||||
$ U1, LDU1, RWORK(IB11D), RWORK(IB11E),
|
||||
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D),
|
||||
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E),
|
||||
|
@ -716,11 +740,11 @@
|
|||
* Simultaneously diagonalize X11 and X21.
|
||||
*
|
||||
CALL CBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q,
|
||||
$ THETA, RWORK(IPHI), U2, LDU2, U1, LDU1, 0, 1, V1T,
|
||||
$ LDV1T, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
|
||||
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E),
|
||||
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD,
|
||||
$ CHILDINFO )
|
||||
$ THETA, RWORK(IPHI), U2, LDU2, U1, LDU1, CDUM, 1,
|
||||
$ V1T, LDV1T, RWORK(IB11D), RWORK(IB11E),
|
||||
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D),
|
||||
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E),
|
||||
$ RWORK(IBBCSD), LBBCSD, CHILDINFO )
|
||||
*
|
||||
* Permute rows and columns to place identity submatrices in
|
||||
* preferred positions
|
||||
|
|
|
@ -149,7 +149,7 @@
|
|||
*> \param[in,out] U1
|
||||
*> \verbatim
|
||||
*> U1 is DOUBLE PRECISION array, dimension (LDU1,P)
|
||||
*> On entry, an LDU1-by-P matrix. On exit, U1 is postmultiplied
|
||||
*> On entry, a P-by-P matrix. On exit, U1 is postmultiplied
|
||||
*> by the left singular vector matrix common to [ B11 ; 0 ] and
|
||||
*> [ B12 0 0 ; 0 -I 0 0 ].
|
||||
*> \endverbatim
|
||||
|
@ -157,13 +157,13 @@
|
|||
*> \param[in] LDU1
|
||||
*> \verbatim
|
||||
*> LDU1 is INTEGER
|
||||
*> The leading dimension of the array U1.
|
||||
*> The leading dimension of the array U1, LDU1 >= MAX(1,P).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] U2
|
||||
*> \verbatim
|
||||
*> U2 is DOUBLE PRECISION array, dimension (LDU2,M-P)
|
||||
*> On entry, an LDU2-by-(M-P) matrix. On exit, U2 is
|
||||
*> On entry, an (M-P)-by-(M-P) matrix. On exit, U2 is
|
||||
*> postmultiplied by the left singular vector matrix common to
|
||||
*> [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ].
|
||||
*> \endverbatim
|
||||
|
@ -171,13 +171,13 @@
|
|||
*> \param[in] LDU2
|
||||
*> \verbatim
|
||||
*> LDU2 is INTEGER
|
||||
*> The leading dimension of the array U2.
|
||||
*> The leading dimension of the array U2, LDU2 >= MAX(1,M-P).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] V1T
|
||||
*> \verbatim
|
||||
*> V1T is DOUBLE PRECISION array, dimension (LDV1T,Q)
|
||||
*> On entry, a LDV1T-by-Q matrix. On exit, V1T is premultiplied
|
||||
*> On entry, a Q-by-Q matrix. On exit, V1T is premultiplied
|
||||
*> by the transpose of the right singular vector
|
||||
*> matrix common to [ B11 ; 0 ] and [ B21 ; 0 ].
|
||||
*> \endverbatim
|
||||
|
@ -185,13 +185,13 @@
|
|||
*> \param[in] LDV1T
|
||||
*> \verbatim
|
||||
*> LDV1T is INTEGER
|
||||
*> The leading dimension of the array V1T.
|
||||
*> The leading dimension of the array V1T, LDV1T >= MAX(1,Q).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] V2T
|
||||
*> \verbatim
|
||||
*> V2T is DOUBLE PRECISION array, dimenison (LDV2T,M-Q)
|
||||
*> On entry, a LDV2T-by-(M-Q) matrix. On exit, V2T is
|
||||
*> On entry, an (M-Q)-by-(M-Q) matrix. On exit, V2T is
|
||||
*> premultiplied by the transpose of the right
|
||||
*> singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and
|
||||
*> [ B22 0 0 ; 0 0 I ].
|
||||
|
@ -200,7 +200,7 @@
|
|||
*> \param[in] LDV2T
|
||||
*> \verbatim
|
||||
*> LDV2T is INTEGER
|
||||
*> The leading dimension of the array V2T.
|
||||
*> The leading dimension of the array V2T, LDV2T >= MAX(1,M-Q).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] B11D
|
||||
|
@ -322,7 +322,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERcomputational
|
||||
*
|
||||
|
@ -332,10 +332,10 @@
|
|||
$ V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,
|
||||
$ B22D, B22E, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS
|
||||
|
|
|
@ -191,7 +191,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
|
@ -205,10 +205,10 @@
|
|||
SUBROUTINE DBDSDC( UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ,
|
||||
$ WORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER COMPQ, UPLO
|
||||
|
@ -311,7 +311,7 @@
|
|||
WSTART = 1
|
||||
QSTART = 3
|
||||
IF( ICOMPQ.EQ.1 ) THEN
|
||||
CALL DCOPY( N, D, 1, Q( 1 ), 1 )
|
||||
CALL DCOPY( N, D, 1, Q( 1 ), 1 )
|
||||
CALL DCOPY( N-1, E, 1, Q( N+1 ), 1 )
|
||||
END IF
|
||||
IF( IUPLO.EQ.2 ) THEN
|
||||
|
@ -335,8 +335,11 @@
|
|||
* If ICOMPQ = 0, use DLASDQ to compute the singular values.
|
||||
*
|
||||
IF( ICOMPQ.EQ.0 ) THEN
|
||||
* Ignore WSTART, instead using WORK( 1 ), since the two vectors
|
||||
* for CS and -SN above are added only if ICOMPQ == 2,
|
||||
* and adding them exceeds documented WORK size of 4*n.
|
||||
CALL DLASDQ( 'U', 0, N, 0, 0, 0, D, E, VT, LDVT, U, LDU, U,
|
||||
$ LDU, WORK( WSTART ), INFO )
|
||||
$ LDU, WORK( 1 ), INFO )
|
||||
GO TO 40
|
||||
END IF
|
||||
*
|
||||
|
@ -412,24 +415,24 @@
|
|||
DO 30 I = 1, NM1
|
||||
IF( ( ABS( E( I ) ).LT.EPS ) .OR. ( I.EQ.NM1 ) ) THEN
|
||||
*
|
||||
* Subproblem found. First determine its size and then
|
||||
* apply divide and conquer on it.
|
||||
* Subproblem found. First determine its size and then
|
||||
* apply divide and conquer on it.
|
||||
*
|
||||
IF( I.LT.NM1 ) THEN
|
||||
*
|
||||
* A subproblem with E(I) small for I < NM1.
|
||||
* A subproblem with E(I) small for I < NM1.
|
||||
*
|
||||
NSIZE = I - START + 1
|
||||
ELSE IF( ABS( E( I ) ).GE.EPS ) THEN
|
||||
*
|
||||
* A subproblem with E(NM1) not too small but I = NM1.
|
||||
* A subproblem with E(NM1) not too small but I = NM1.
|
||||
*
|
||||
NSIZE = N - START + 1
|
||||
ELSE
|
||||
*
|
||||
* A subproblem with E(NM1) small. This implies an
|
||||
* 1-by-1 subproblem at D(N). Solve this 1-by-1 problem
|
||||
* first.
|
||||
* A subproblem with E(NM1) small. This implies an
|
||||
* 1-by-1 subproblem at D(N). Solve this 1-by-1 problem
|
||||
* first.
|
||||
*
|
||||
NSIZE = I - START + 1
|
||||
IF( ICOMPQ.EQ.2 ) THEN
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
*> = 'L': B is lower bidiagonal.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] JOBXZ
|
||||
*> \param[in] JOBZ
|
||||
*> \verbatim
|
||||
*> JOBZ is CHARACTER*1
|
||||
*> = 'N': Compute singular values only;
|
||||
|
@ -117,14 +117,16 @@
|
|||
*>
|
||||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> VL >=0.
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for singular values. VU > VL.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for singular values. VU > VL.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -132,13 +134,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest singular value to be returned.
|
||||
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest singular values to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest singular value to be returned.
|
||||
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -190,7 +196,10 @@
|
|||
*> If JOBZ = 'V', then if INFO = 0, the first NS elements of
|
||||
*> IWORK are zero. If INFO > 0, then IWORK contains the indices
|
||||
*> of the eigenvectors that failed to converge in DSTEVX.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] INFO
|
||||
*> \verbatim
|
||||
*> INFO is INTEGER
|
||||
*> = 0: successful exit
|
||||
*> < 0: if INFO = -i, the i-th argument had an illegal value
|
||||
|
@ -209,7 +218,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHEReigen
|
||||
*
|
||||
|
@ -217,7 +226,7 @@
|
|||
SUBROUTINE DBDSVDX( UPLO, JOBZ, RANGE, N, D, E, VL, VU, IL, IU,
|
||||
$ NS, S, Z, LDZ, WORK, IWORK, INFO)
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2016
|
||||
|
@ -371,7 +380,6 @@
|
|||
IF( ABS( E( I ) ).LE.THRESH ) E( I ) = ZERO
|
||||
END DO
|
||||
IF( ABS( D( N ) ).LE.THRESH ) D( N ) = ZERO
|
||||
E( N ) = ZERO
|
||||
*
|
||||
* Pointers for arrays used by DSTEVX.
|
||||
*
|
||||
|
@ -398,7 +406,7 @@
|
|||
* of the active submatrix.
|
||||
*
|
||||
RNGVX = 'I'
|
||||
CALL DLASET( 'F', N*2, N+1, ZERO, ZERO, Z, LDZ )
|
||||
IF( WANTZ ) CALL DLASET( 'F', N*2, N+1, ZERO, ZERO, Z, LDZ )
|
||||
ELSE IF( VALSV ) THEN
|
||||
*
|
||||
* Find singular values in a half-open interval. We aim
|
||||
|
@ -418,7 +426,7 @@
|
|||
IF( NS.EQ.0 ) THEN
|
||||
RETURN
|
||||
ELSE
|
||||
CALL DLASET( 'F', N*2, NS, ZERO, ZERO, Z, LDZ )
|
||||
IF( WANTZ ) CALL DLASET( 'F', N*2, NS, ZERO, ZERO, Z, LDZ )
|
||||
END IF
|
||||
ELSE IF( INDSV ) THEN
|
||||
*
|
||||
|
@ -455,7 +463,7 @@
|
|||
*
|
||||
IF( VLTGK.EQ.VUTGK ) VLTGK = VLTGK - TOL
|
||||
*
|
||||
CALL DLASET( 'F', N*2, IU-IL+1, ZERO, ZERO, Z, LDZ )
|
||||
IF( WANTZ ) CALL DLASET( 'F', N*2, IU-IL+1, ZERO, ZERO, Z, LDZ)
|
||||
END IF
|
||||
*
|
||||
* Initialize variables and pointers for S, Z, and WORK.
|
||||
|
@ -709,9 +717,11 @@
|
|||
NRU = 0
|
||||
NRV = 0
|
||||
END IF !** NTGK.GT.0 **!
|
||||
IF( IROWZ.LT.N*2 ) Z( 1:IROWZ-1, ICOLZ ) = ZERO
|
||||
IF( IROWZ.LT.N*2 .AND. WANTZ ) THEN
|
||||
Z( 1:IROWZ-1, ICOLZ ) = ZERO
|
||||
END IF
|
||||
END DO !** IDPTR loop **!
|
||||
IF( SPLIT ) THEN
|
||||
IF( SPLIT .AND. WANTZ ) THEN
|
||||
*
|
||||
* Bring back eigenvector corresponding
|
||||
* to eigenvalue equal to zero.
|
||||
|
@ -744,7 +754,7 @@
|
|||
IF( K.NE.NS+1-I ) THEN
|
||||
S( K ) = S( NS+1-I )
|
||||
S( NS+1-I ) = SMIN
|
||||
CALL DSWAP( N*2, Z( 1,K ), 1, Z( 1,NS+1-I ), 1 )
|
||||
IF( WANTZ ) CALL DSWAP( N*2, Z( 1,K ), 1, Z( 1,NS+1-I ), 1 )
|
||||
END IF
|
||||
END DO
|
||||
*
|
||||
|
@ -754,7 +764,7 @@
|
|||
K = IU - IL + 1
|
||||
IF( K.LT.NS ) THEN
|
||||
S( K+1:NS ) = ZERO
|
||||
Z( 1:N*2,K+1:NS ) = ZERO
|
||||
IF( WANTZ ) Z( 1:N*2,K+1:NS ) = ZERO
|
||||
NS = K
|
||||
END IF
|
||||
END IF
|
||||
|
@ -762,6 +772,7 @@
|
|||
* Reorder Z: U = Z( 1:N,1:NS ), V = Z( N+1:N*2,1:NS ).
|
||||
* If B is a lower diagonal, swap U and V.
|
||||
*
|
||||
IF( WANTZ ) THEN
|
||||
DO I = 1, NS
|
||||
CALL DCOPY( N*2, Z( 1,I ), 1, WORK, 1 )
|
||||
IF( LOWER ) THEN
|
||||
|
@ -772,6 +783,7 @@
|
|||
CALL DCOPY( N, WORK( 1 ), 2, Z( N+1,I ), 1 )
|
||||
END IF
|
||||
END DO
|
||||
END IF
|
||||
*
|
||||
RETURN
|
||||
*
|
||||
|
|
|
@ -440,7 +440,7 @@
|
|||
$ ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.1) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* April 2012
|
||||
|
@ -646,7 +646,7 @@
|
|||
*
|
||||
* Perform refinement on each right-hand side
|
||||
*
|
||||
IF (REF_TYPE .NE. 0) THEN
|
||||
IF ( REF_TYPE .NE. 0 .AND. INFO .EQ. 0 ) THEN
|
||||
|
||||
PREC_TYPE = ILAPREC( 'E' )
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@
|
|||
*>
|
||||
*> \param[in] SELECT
|
||||
*> \verbatim
|
||||
*> SELECT is procedure) LOGICAL FUNCTION of two DOUBLE PRECISION arguments
|
||||
*> SELECT is a LOGICAL FUNCTION of two DOUBLE PRECISION arguments
|
||||
*> SELECT must be declared EXTERNAL in the calling subroutine.
|
||||
*> If SORT = 'S', SELECT is used to select eigenvalues to sort
|
||||
*> to the top left of the Schur form.
|
||||
|
@ -272,7 +272,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2011
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEeigen
|
||||
*
|
||||
|
@ -281,10 +281,10 @@
|
|||
$ WR, WI, VS, LDVS, RCONDE, RCONDV, WORK, LWORK,
|
||||
$ IWORK, LIWORK, BWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2011
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBVS, SENSE, SORT
|
||||
|
|
|
@ -181,18 +181,21 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
* @precisions fortran d -> s
|
||||
*
|
||||
*> \ingroup doubleGEeigen
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR,
|
||||
$ LDVR, WORK, LWORK, INFO )
|
||||
implicit none
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.2) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBVL, JOBVR
|
||||
|
@ -213,7 +216,7 @@
|
|||
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR
|
||||
CHARACTER SIDE
|
||||
INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, ITAU, IWRK, K,
|
||||
$ MAXWRK, MINWRK, NOUT
|
||||
$ LWORK_TREVC, MAXWRK, MINWRK, NOUT
|
||||
DOUBLE PRECISION ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,
|
||||
$ SN
|
||||
* ..
|
||||
|
@ -223,7 +226,7 @@
|
|||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,
|
||||
$ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC,
|
||||
$ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC3,
|
||||
$ XERBLA
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
|
@ -279,24 +282,34 @@
|
|||
MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
|
||||
$ 'DORGHR', ' ', N, 1, N, -1 ) )
|
||||
CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,
|
||||
$ WORK, -1, INFO )
|
||||
HSWORK = WORK( 1 )
|
||||
$ WORK, -1, INFO )
|
||||
HSWORK = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
|
||||
CALL DTREVC3( 'L', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR, N, NOUT,
|
||||
$ WORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
|
||||
MAXWRK = MAX( MAXWRK, 4*N )
|
||||
ELSE IF( WANTVR ) THEN
|
||||
MINWRK = 4*N
|
||||
MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
|
||||
$ 'DORGHR', ' ', N, 1, N, -1 ) )
|
||||
CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,
|
||||
$ WORK, -1, INFO )
|
||||
HSWORK = WORK( 1 )
|
||||
$ WORK, -1, INFO )
|
||||
HSWORK = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
|
||||
CALL DTREVC3( 'R', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR, N, NOUT,
|
||||
$ WORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
|
||||
MAXWRK = MAX( MAXWRK, 4*N )
|
||||
ELSE
|
||||
MINWRK = 3*N
|
||||
CALL DHSEQR( 'E', 'N', N, 1, N, A, LDA, WR, WI, VR, LDVR,
|
||||
$ WORK, -1, INFO )
|
||||
HSWORK = WORK( 1 )
|
||||
$ WORK, -1, INFO )
|
||||
HSWORK = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
|
||||
END IF
|
||||
MAXWRK = MAX( MAXWRK, MINWRK )
|
||||
|
@ -426,10 +439,10 @@
|
|||
IF( WANTVL .OR. WANTVR ) THEN
|
||||
*
|
||||
* Compute left and/or right eigenvectors
|
||||
* (Workspace: need 4*N)
|
||||
* (Workspace: need 4*N, prefer N + N + 2*N*NB)
|
||||
*
|
||||
CALL DTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), IERR )
|
||||
CALL DTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), LWORK-IWRK+1, IERR )
|
||||
END IF
|
||||
*
|
||||
IF( WANTVL ) THEN
|
||||
|
|
|
@ -294,7 +294,9 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
* @precisions fortran d -> s
|
||||
*
|
||||
*> \ingroup doubleGEeigen
|
||||
*
|
||||
|
@ -302,11 +304,12 @@
|
|||
SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI,
|
||||
$ VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM,
|
||||
$ RCONDE, RCONDV, WORK, LWORK, IWORK, INFO )
|
||||
implicit none
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.4.2) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER BALANC, JOBVL, JOBVR, SENSE
|
||||
|
@ -330,8 +333,8 @@
|
|||
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE,
|
||||
$ WNTSNN, WNTSNV
|
||||
CHARACTER JOB, SIDE
|
||||
INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K, MAXWRK,
|
||||
$ MINWRK, NOUT
|
||||
INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K,
|
||||
$ LWORK_TREVC, MAXWRK, MINWRK, NOUT
|
||||
DOUBLE PRECISION ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,
|
||||
$ SN
|
||||
* ..
|
||||
|
@ -341,7 +344,7 @@
|
|||
* ..
|
||||
* .. External Subroutines ..
|
||||
EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,
|
||||
$ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC,
|
||||
$ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC3,
|
||||
$ DTRSNA, XERBLA
|
||||
* ..
|
||||
* .. External Functions ..
|
||||
|
@ -366,8 +369,8 @@
|
|||
WNTSNE = LSAME( SENSE, 'E' )
|
||||
WNTSNV = LSAME( SENSE, 'V' )
|
||||
WNTSNB = LSAME( SENSE, 'B' )
|
||||
IF( .NOT.( LSAME( BALANC, 'N' ) .OR. LSAME( BALANC,
|
||||
$ 'S' ) .OR. LSAME( BALANC, 'P' ) .OR. LSAME( BALANC, 'B' ) ) )
|
||||
IF( .NOT.( LSAME( BALANC, 'N' ) .OR. LSAME( BALANC, 'S' )
|
||||
$ .OR. LSAME( BALANC, 'P' ) .OR. LSAME( BALANC, 'B' ) ) )
|
||||
$ THEN
|
||||
INFO = -1
|
||||
ELSE IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN
|
||||
|
@ -406,9 +409,19 @@
|
|||
MAXWRK = N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )
|
||||
*
|
||||
IF( WANTVL ) THEN
|
||||
CALL DTREVC3( 'L', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
|
||||
CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,
|
||||
$ WORK, -1, INFO )
|
||||
ELSE IF( WANTVR ) THEN
|
||||
CALL DTREVC3( 'R', 'B', SELECT, N, A, LDA,
|
||||
$ VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK, -1, IERR )
|
||||
LWORK_TREVC = INT( WORK(1) )
|
||||
MAXWRK = MAX( MAXWRK, N + LWORK_TREVC )
|
||||
CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,
|
||||
$ WORK, -1, INFO )
|
||||
ELSE
|
||||
|
@ -420,7 +433,7 @@
|
|||
$ LDVR, WORK, -1, INFO )
|
||||
END IF
|
||||
END IF
|
||||
HSWORK = WORK( 1 )
|
||||
HSWORK = INT( WORK(1) )
|
||||
*
|
||||
IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN
|
||||
MINWRK = 2*N
|
||||
|
@ -572,18 +585,18 @@
|
|||
$ WORK( IWRK ), LWORK-IWRK+1, INFO )
|
||||
END IF
|
||||
*
|
||||
* If INFO > 0 from DHSEQR, then quit
|
||||
* If INFO .NE. 0 from DHSEQR, then quit
|
||||
*
|
||||
IF( INFO.GT.0 )
|
||||
IF( INFO.NE.0 )
|
||||
$ GO TO 50
|
||||
*
|
||||
IF( WANTVL .OR. WANTVR ) THEN
|
||||
*
|
||||
* Compute left and/or right eigenvectors
|
||||
* (Workspace: need 3*N)
|
||||
* (Workspace: need 3*N, prefer N + 2*N*NB)
|
||||
*
|
||||
CALL DTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), IERR )
|
||||
CALL DTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
|
||||
$ N, NOUT, WORK( IWRK ), LWORK-IWRK+1, IERR )
|
||||
END IF
|
||||
*
|
||||
* Compute condition numbers if desired
|
||||
|
|
|
@ -52,7 +52,8 @@
|
|||
*> are computed and stored in the arrays U and V, respectively. The diagonal
|
||||
*> of [SIGMA] is computed and stored in the array SVA.
|
||||
*> DGEJSV can sometimes compute tiny singular values and their singular vectors much
|
||||
*> more accurately than other SVD routines, see below under Further Details.*> \endverbatim
|
||||
*> more accurately than other SVD routines, see below under Further Details.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Arguments:
|
||||
* ==========
|
||||
|
@ -236,7 +237,7 @@
|
|||
*> copied back to the V array. This 'W' option is just
|
||||
*> a reminder to the caller that in this case U is
|
||||
*> reserved as workspace of length N*N.
|
||||
*> If JOBU = 'N' U is not referenced.
|
||||
*> If JOBU = 'N' U is not referenced, unless JOBT='T'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDU
|
||||
|
@ -258,7 +259,7 @@
|
|||
*> copied back to the U array. This 'W' option is just
|
||||
*> a reminder to the caller that in this case V is
|
||||
*> reserved as workspace of length N*N.
|
||||
*> If JOBV = 'N' V is not referenced.
|
||||
*> If JOBV = 'N' V is not referenced, unless JOBT='T'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDV
|
||||
|
@ -332,10 +333,10 @@
|
|||
*> If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'),
|
||||
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
|
||||
*> -> For optimal performance, LWORK >= max(2*M+N,3*N+(N+1)*NB,7),
|
||||
*> where NB is the optimal block size for DGEQP3, DGEQRF, DGELQ,
|
||||
*> where NB is the optimal block size for DGEQP3, DGEQRF, DGELQF,
|
||||
*> DORMLQ. In general, the optimal length LWORK is computed as
|
||||
*> LWORK >= max(2*M+N,N+LWORK(DGEQP3), N+LWORK(DPOCON),
|
||||
*> N+LWORK(DGELQ), 2*N+LWORK(DGEQRF), N+LWORK(DORMLQ)).
|
||||
*> N+LWORK(DGELQF), 2*N+LWORK(DGEQRF), N+LWORK(DORMLQ)).
|
||||
*>
|
||||
*> If SIGMA and the left singular vectors are needed
|
||||
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
|
||||
|
@ -390,7 +391,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEsing
|
||||
*
|
||||
|
@ -475,10 +476,10 @@
|
|||
$ M, N, A, LDA, SVA, U, LDU, V, LDV,
|
||||
$ WORK, LWORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
IMPLICIT NONE
|
||||
|
@ -589,7 +590,11 @@
|
|||
*
|
||||
* Quick return for void matrix (Y3K safe)
|
||||
* #:)
|
||||
IF ( ( M .EQ. 0 ) .OR. ( N .EQ. 0 ) ) RETURN
|
||||
IF ( ( M .EQ. 0 ) .OR. ( N .EQ. 0 ) ) THEN
|
||||
IWORK(1:3) = 0
|
||||
WORK(1:7) = 0
|
||||
RETURN
|
||||
ENDIF
|
||||
*
|
||||
* Determine whether the matrix U should be M x N or M x M
|
||||
*
|
||||
|
@ -715,6 +720,7 @@
|
|||
IWORK(1) = 0
|
||||
IWORK(2) = 0
|
||||
END IF
|
||||
IWORK(3) = 0
|
||||
IF ( ERREST ) WORK(3) = ONE
|
||||
IF ( LSVEC .AND. RSVEC ) THEN
|
||||
WORK(4) = ONE
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEcomputational
|
||||
*
|
||||
|
@ -132,10 +132,10 @@
|
|||
* =====================================================================
|
||||
RECURSIVE SUBROUTINE DGEQRT3( M, N, A, LDA, T, LDT, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N, LDT
|
||||
|
@ -177,7 +177,7 @@
|
|||
*
|
||||
* Compute Householder transform when N=1
|
||||
*
|
||||
CALL DLARFG( M, A, A( MIN( 2, M ), 1 ), 1, T )
|
||||
CALL DLARFG( M, A(1,1), A( MIN( 2, M ), 1 ), 1, T(1,1) )
|
||||
*
|
||||
ELSE
|
||||
*
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -123,13 +123,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> VL >=0.
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for singular values. VU > VL.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for singular values. VU > VL.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
|
@ -137,13 +139,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest singular value to be returned.
|
||||
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest singular values to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest singular value to be returned.
|
||||
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -169,7 +175,7 @@
|
|||
*> vectors, stored columnwise) as specified by RANGE; if
|
||||
*> JOBU = 'N', U is not referenced.
|
||||
*> Note: The user must ensure that UCOL >= NS; if RANGE = 'V',
|
||||
*> the exact value of NS is not known ILQFin advance and an upper
|
||||
*> the exact value of NS is not known in advance and an upper
|
||||
*> bound must be used.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -248,7 +254,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEsing
|
||||
*
|
||||
|
@ -257,10 +263,10 @@
|
|||
$ IL, IU, NS, S, U, LDU, VT, LDVT, WORK,
|
||||
$ LWORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK driver routine (version 3.6.0) --
|
||||
* -- LAPACK driver routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBU, JOBVT, RANGE
|
||||
|
@ -357,8 +363,14 @@
|
|||
IF( INFO.EQ.0 ) THEN
|
||||
IF( WANTU .AND. LDU.LT.M ) THEN
|
||||
INFO = -15
|
||||
ELSE IF( WANTVT .AND. LDVT.LT.MINMN ) THEN
|
||||
INFO = -16
|
||||
ELSE IF( WANTVT ) THEN
|
||||
IF( INDS ) THEN
|
||||
IF( LDVT.LT.IU-IL+1 ) THEN
|
||||
INFO = -17
|
||||
END IF
|
||||
ELSE IF( LDVT.LT.MINMN ) THEN
|
||||
INFO = -17
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
@ -380,18 +392,34 @@
|
|||
*
|
||||
* Path 1 (M much larger than N)
|
||||
*
|
||||
MAXWRK = N*(N*2+16) +
|
||||
MAXWRK = N +
|
||||
$ N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 )
|
||||
MAXWRK = MAX( MAXWRK, N*(N*2+20) + 2*N*
|
||||
MAXWRK = MAX( MAXWRK, N*(N+5) + 2*N*
|
||||
$ ILAENV( 1, 'DGEBRD', ' ', N, N, -1, -1 ) )
|
||||
MINWRK = N*(N*2+21)
|
||||
IF (WANTU) THEN
|
||||
MAXWRK = MAX(MAXWRK,N*(N*3+6)+N*
|
||||
$ ILAENV( 1, 'DORMQR', ' ', N, N, -1, -1 ) )
|
||||
END IF
|
||||
IF (WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,N*(N*3+6)+N*
|
||||
$ ILAENV( 1, 'DORMLQ', ' ', N, N, -1, -1 ) )
|
||||
END IF
|
||||
MINWRK = N*(N*3+20)
|
||||
ELSE
|
||||
*
|
||||
* Path 2 (M at least N, but not much larger)
|
||||
*
|
||||
MAXWRK = N*(N*2+19) + ( M+N )*
|
||||
MAXWRK = 4*N + ( M+N )*
|
||||
$ ILAENV( 1, 'DGEBRD', ' ', M, N, -1, -1 )
|
||||
MINWRK = N*(N*2+20) + M
|
||||
IF (WANTU) THEN
|
||||
MAXWRK = MAX(MAXWRK,N*(N*2+5)+N*
|
||||
$ ILAENV( 1, 'DORMQR', ' ', N, N, -1, -1 ) )
|
||||
END IF
|
||||
IF (WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,N*(N*2+5)+N*
|
||||
$ ILAENV( 1, 'DORMLQ', ' ', N, N, -1, -1 ) )
|
||||
END IF
|
||||
MINWRK = MAX(N*(N*2+19),4*N+M)
|
||||
END IF
|
||||
ELSE
|
||||
MNTHR = ILAENV( 6, 'DGESVD', JOBU // JOBVT, M, N, 0, 0 )
|
||||
|
@ -399,18 +427,34 @@
|
|||
*
|
||||
* Path 1t (N much larger than M)
|
||||
*
|
||||
MAXWRK = M*(M*2+16) +
|
||||
MAXWRK = M +
|
||||
$ M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 )
|
||||
MAXWRK = MAX( MAXWRK, M*(M*2+20) + 2*M*
|
||||
MAXWRK = MAX( MAXWRK, M*(M+5) + 2*M*
|
||||
$ ILAENV( 1, 'DGEBRD', ' ', M, M, -1, -1 ) )
|
||||
MINWRK = M*(M*2+21)
|
||||
IF (WANTU) THEN
|
||||
MAXWRK = MAX(MAXWRK,M*(M*3+6)+M*
|
||||
$ ILAENV( 1, 'DORMQR', ' ', M, M, -1, -1 ) )
|
||||
END IF
|
||||
IF (WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,M*(M*3+6)+M*
|
||||
$ ILAENV( 1, 'DORMLQ', ' ', M, M, -1, -1 ) )
|
||||
END IF
|
||||
MINWRK = M*(M*3+20)
|
||||
ELSE
|
||||
*
|
||||
* Path 2t (N greater than M, but not much larger)
|
||||
* Path 2t (N at least M, but not much larger)
|
||||
*
|
||||
MAXWRK = M*(M*2+19) + ( M+N )*
|
||||
MAXWRK = 4*M + ( M+N )*
|
||||
$ ILAENV( 1, 'DGEBRD', ' ', M, N, -1, -1 )
|
||||
MINWRK = M*(M*2+20) + N
|
||||
IF (WANTU) THEN
|
||||
MAXWRK = MAX(MAXWRK,M*(M*2+5)+M*
|
||||
$ ILAENV( 1, 'DORMQR', ' ', M, M, -1, -1 ) )
|
||||
END IF
|
||||
IF (WANTVT) THEN
|
||||
MAXWRK = MAX(MAXWRK,M*(M*2+5)+M*
|
||||
$ ILAENV( 1, 'DORMLQ', ' ', M, M, -1, -1 ) )
|
||||
END IF
|
||||
MINWRK = MAX(M*(M*2+19),4*M+N)
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
|
@ -522,7 +566,7 @@
|
|||
CALL DCOPY( N, WORK( J ), 1, U( 1,I ), 1 )
|
||||
J = J + N*2
|
||||
END DO
|
||||
CALL DLASET( 'A', M-N, N, ZERO, ZERO, U( N+1,1 ), LDU )
|
||||
CALL DLASET( 'A', M-N, NS, ZERO, ZERO, U( N+1,1 ), LDU )
|
||||
*
|
||||
* Call DORMBR to compute QB*UB.
|
||||
* (Workspace in WORK( ITEMP ): need N, prefer N*NB)
|
||||
|
@ -591,7 +635,7 @@
|
|||
CALL DCOPY( N, WORK( J ), 1, U( 1,I ), 1 )
|
||||
J = J + N*2
|
||||
END DO
|
||||
CALL DLASET( 'A', M-N, N, ZERO, ZERO, U( N+1,1 ), LDU )
|
||||
CALL DLASET( 'A', M-N, NS, ZERO, ZERO, U( N+1,1 ), LDU )
|
||||
*
|
||||
* Call DORMBR to compute QB*UB.
|
||||
* (Workspace in WORK( ITEMP ): need N, prefer N*NB)
|
||||
|
@ -687,7 +731,7 @@
|
|||
CALL DCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT )
|
||||
J = J + M*2
|
||||
END DO
|
||||
CALL DLASET( 'A', M, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT )
|
||||
CALL DLASET( 'A', NS, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT)
|
||||
*
|
||||
* Call DORMBR to compute (VB**T)*(PB**T)
|
||||
* (Workspace in WORK( ITEMP ): need M, prefer M*NB)
|
||||
|
@ -756,7 +800,7 @@
|
|||
CALL DCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT )
|
||||
J = J + M*2
|
||||
END DO
|
||||
CALL DLASET( 'A', M, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT )
|
||||
CALL DLASET( 'A', NS, N-M, ZERO, ZERO, VT( 1,M+1 ), LDVT)
|
||||
*
|
||||
* Call DORMBR to compute VB**T * PB**T
|
||||
* (Workspace in WORK( ITEMP ): need M, prefer M*NB)
|
||||
|
|
|
@ -98,7 +98,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEauxiliary
|
||||
*
|
||||
|
@ -111,10 +111,10 @@
|
|||
* =====================================================================
|
||||
SUBROUTINE DGETC2( N, A, LDA, IPIV, JPIV, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.5.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, N
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
*> the matrix into four submatrices:
|
||||
*>
|
||||
*> [ A11 | A12 ] where A11 is n1 by n1 and A22 is n2 by n2
|
||||
*> A = [ -----|----- ] with n1 = min(m,n)
|
||||
*> A = [ -----|----- ] with n1 = min(m,n)/2
|
||||
*> [ A21 | A22 ] n2 = n-n1
|
||||
*>
|
||||
*> [ A11 ]
|
||||
|
@ -106,17 +106,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
RECURSIVE SUBROUTINE DGETRF2( M, N, A, LDA, IPIV, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDA, M, N
|
||||
|
|
|
@ -230,7 +230,7 @@
|
|||
SUBROUTINE DGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
|
||||
$ LDQ, Z, LDZ, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* January 2015
|
||||
|
@ -277,7 +277,7 @@
|
|||
*
|
||||
INFO = 0
|
||||
NB = ILAENV( 1, 'DGGHD3', ' ', N, ILO, IHI, -1 )
|
||||
LWKOPT = 6*N*NB
|
||||
LWKOPT = MAX( 6*N*NB, 1 )
|
||||
WORK( 1 ) = DBLE( LWKOPT )
|
||||
INITQ = LSAME( COMPQ, 'I' )
|
||||
WANTQ = INITQ .OR. LSAME( COMPQ, 'V' )
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
*> \brief \b DGSVJ1 pre-processor for the routine sgesvj, applies Jacobi rotations targeting only particular pivots.
|
||||
*> \brief \b DGSVJ1 pre-processor for the routine dgesvj, applies Jacobi rotations targeting only particular pivots.
|
||||
*
|
||||
* =========== DOCUMENTATION ===========
|
||||
*
|
||||
|
@ -223,7 +223,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERcomputational
|
||||
*
|
||||
|
@ -236,10 +236,10 @@
|
|||
SUBROUTINE DGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV,
|
||||
$ EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
DOUBLE PRECISION EPS, SFMIN, TOL
|
||||
|
|
|
@ -211,12 +211,12 @@
|
|||
*> \param[in,out] Q
|
||||
*> \verbatim
|
||||
*> Q is DOUBLE PRECISION array, dimension (LDQ, N)
|
||||
*> On entry, if COMPZ = 'V', the orthogonal matrix Q1 used in
|
||||
*> On entry, if COMPQ = 'V', the orthogonal matrix Q1 used in
|
||||
*> the reduction of (A,B) to generalized Hessenberg form.
|
||||
*> On exit, if COMPZ = 'I', the orthogonal matrix of left Schur
|
||||
*> vectors of (H,T), and if COMPZ = 'V', the orthogonal matrix
|
||||
*> On exit, if COMPQ = 'I', the orthogonal matrix of left Schur
|
||||
*> vectors of (H,T), and if COMPQ = 'V', the orthogonal matrix
|
||||
*> of left Schur vectors of (A,B).
|
||||
*> Not referenced if COMPZ = 'N'.
|
||||
*> Not referenced if COMPQ = 'N'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] LDQ
|
||||
|
@ -282,7 +282,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2013
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleGEcomputational
|
||||
*
|
||||
|
@ -304,10 +304,10 @@
|
|||
$ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK,
|
||||
$ LWORK, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.5.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2013
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER COMPQ, COMPZ, JOB
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
*>
|
||||
*> The first stage consists of deflating the size of the problem
|
||||
*> when there are multiple eigenvalues or if there is a zero in
|
||||
*> the Z vector. For each such occurence the dimension of the
|
||||
*> the Z vector. For each such occurrence the dimension of the
|
||||
*> secular equation problem is reduced by one. This stage is
|
||||
*> performed by the routine DLAED2.
|
||||
*>
|
||||
|
@ -148,7 +148,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
|
@ -163,10 +163,10 @@
|
|||
SUBROUTINE DLAED1( N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK, IWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER CUTPNT, INFO, LDQ, N
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
*>
|
||||
*> The first stage consists of deflating the size of the problem
|
||||
*> when there are multiple eigenvalues or if there is a zero in
|
||||
*> the Z vector. For each such occurence the dimension of the
|
||||
*> the Z vector. For each such occurrence the dimension of the
|
||||
*> secular equation problem is reduced by one. This stage is
|
||||
*> performed by the routine DLAED8.
|
||||
*>
|
||||
|
@ -244,7 +244,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
|
@ -260,10 +260,10 @@
|
|||
$ PERM, GIVPTR, GIVCOL, GIVNUM, WORK, IWORK,
|
||||
$ INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER CURLVL, CURPBM, CUTPNT, ICOMPQ, INFO, LDQ, N,
|
||||
|
|
|
@ -99,7 +99,7 @@
|
|||
*> will always be positive. If the eigenvalues are real, then
|
||||
*> the first (real) eigenvalue is WR1 / SCALE1 , but this may
|
||||
*> overflow or underflow, and in fact, SCALE1 may be zero or
|
||||
*> less than the underflow threshhold if the exact eigenvalue
|
||||
*> less than the underflow threshold if the exact eigenvalue
|
||||
*> is sufficiently large.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -112,7 +112,7 @@
|
|||
*> eigenvalues are real, then the second (real) eigenvalue is
|
||||
*> WR2 / SCALE2 , but this may overflow or underflow, and in
|
||||
*> fact, SCALE2 may be zero or less than the underflow
|
||||
*> threshhold if the exact eigenvalue is sufficiently large.
|
||||
*> threshold if the exact eigenvalue is sufficiently large.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] WR1
|
||||
|
@ -148,7 +148,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERauxiliary
|
||||
*
|
||||
|
@ -156,10 +156,10 @@
|
|||
SUBROUTINE DLAG2( A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1,
|
||||
$ WR2, WI )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER LDA, LDB
|
||||
|
@ -266,8 +266,8 @@
|
|||
* Note: the test of R in the following IF is to cover the case when
|
||||
* DISCR is small and negative and is flushed to zero during
|
||||
* the calculation of R. On machines which have a consistent
|
||||
* flush-to-zero threshhold and handle numbers above that
|
||||
* threshhold correctly, it would not be necessary.
|
||||
* flush-to-zero threshold and handle numbers above that
|
||||
* threshold correctly, it would not be necessary.
|
||||
*
|
||||
IF( DISCR.GE.ZERO .OR. R.EQ.ZERO ) THEN
|
||||
SUM = PP + SIGN( R, PP )
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
*> \param[in] N2
|
||||
*> \verbatim
|
||||
*> N2 is INTEGER
|
||||
*> These arguements contain the respective lengths of the two
|
||||
*> These arguments contain the respective lengths of the two
|
||||
*> sorted lists to be merged.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -92,17 +92,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLAMRG( N1, N2, A, DTRD1, DTRD2, INDEX )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER DTRD1, DTRD2, N1, N2
|
||||
|
|
|
@ -138,7 +138,7 @@
|
|||
*> Z is DOUBLE PRECISION array, dimension (LDZ,N)
|
||||
*> IF WANTZ is .TRUE., then on output, the orthogonal
|
||||
*> similarity transformation mentioned above has been
|
||||
*> accumulated into Z(ILOZ:IHIZ,ILO:IHI) from the right.
|
||||
*> accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right.
|
||||
*> If WANTZ is .FALSE., then Z is unreferenced.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -260,7 +260,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERauxiliary
|
||||
*
|
||||
|
@ -275,10 +275,10 @@
|
|||
$ IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T,
|
||||
$ LDT, NV, WV, LDWV, WORK, LWORK )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,
|
||||
|
|
|
@ -150,10 +150,10 @@
|
|||
*>
|
||||
*> \param[in,out] Z
|
||||
*> \verbatim
|
||||
*> Z is DOUBLE PRECISION array of size (LDZ,IHI)
|
||||
*> Z is DOUBLE PRECISION array of size (LDZ,IHIZ)
|
||||
*> If WANTZ = .TRUE., then the QR Sweep orthogonal
|
||||
*> similarity transformation is accumulated into
|
||||
*> Z(ILOZ:IHIZ,ILO:IHI) from the right.
|
||||
*> Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right.
|
||||
*> If WANTZ = .FALSE., then Z is unreferenced.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -236,7 +236,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERauxiliary
|
||||
*
|
||||
|
@ -259,10 +259,10 @@
|
|||
$ SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U,
|
||||
$ LDU, NV, WV, LDWV, NH, WH, LDWH )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,
|
||||
|
|
|
@ -60,12 +60,13 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> The lower bound for the eigenvalues.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is DOUBLE PRECISION
|
||||
*> The lower and upper bounds for the eigenvalues.
|
||||
*> The upper bound for the eigenvalues.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] D
|
||||
|
@ -119,7 +120,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -136,10 +137,10 @@
|
|||
SUBROUTINE DLARRC( JOBT, N, VL, VU, D, E, PIVMIN,
|
||||
$ EIGCNT, LCNT, RCNT, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER JOBT
|
||||
|
|
|
@ -92,12 +92,16 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower bound of the interval to
|
||||
*> be searched for eigenvalues. Eigenvalues less than or equal
|
||||
*> to VL, or greater than VU, will not be returned. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower and upper bounds of the interval to
|
||||
*> If RANGE='V', the upper bound of the interval to
|
||||
*> be searched for eigenvalues. Eigenvalues less than or equal
|
||||
*> to VL, or greater than VU, will not be returned. VL < VU.
|
||||
*> Not referenced if RANGE = 'A' or 'I'.
|
||||
|
@ -106,13 +110,17 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
|
||||
*> Not referenced if RANGE = 'A' or 'V'.
|
||||
*> \endverbatim
|
||||
|
@ -311,7 +319,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -321,10 +329,10 @@
|
|||
$ M, W, WERR, WL, WU, IBLOCK, INDEXW,
|
||||
$ WORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER ORDER, RANGE
|
||||
|
|
|
@ -78,12 +78,17 @@
|
|||
*> \param[in,out] VL
|
||||
*> \verbatim
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower bound for the eigenvalues.
|
||||
*> Eigenvalues less than or equal to VL, or greater than VU,
|
||||
*> will not be returned. VL < VU.
|
||||
*> If RANGE='I' or ='A', DLARRE computes bounds on the desired
|
||||
*> part of the spectrum.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in,out] VU
|
||||
*> \verbatim
|
||||
*> VU is DOUBLE PRECISION
|
||||
*> If RANGE='V', the lower and upper bounds for the eigenvalues.
|
||||
*> If RANGE='V', the upper bound for the eigenvalues.
|
||||
*> Eigenvalues less than or equal to VL, or greater than VU,
|
||||
*> will not be returned. VL < VU.
|
||||
*> If RANGE='I' or ='A', DLARRE computes bounds on the desired
|
||||
|
@ -93,13 +98,16 @@
|
|||
*> \param[in] IL
|
||||
*> \verbatim
|
||||
*> IL is INTEGER
|
||||
*> If RANGE='I', the index of the
|
||||
*> smallest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] IU
|
||||
*> \verbatim
|
||||
*> IU is INTEGER
|
||||
*> If RANGE='I', the indices (in ascending order) of the
|
||||
*> smallest and largest eigenvalues to be returned.
|
||||
*> If RANGE='I', the index of the
|
||||
*> largest eigenvalue to be returned.
|
||||
*> 1 <= IL <= IU <= N.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -244,7 +252,7 @@
|
|||
*> \verbatim
|
||||
*> INFO is INTEGER
|
||||
*> = 0: successful exit
|
||||
*> > 0: A problem occured in DLARRE.
|
||||
*> > 0: A problem occurred in DLARRE.
|
||||
*> < 0: One of the called subroutines signaled an internal problem.
|
||||
*> Needs inspection of the corresponding parameter IINFO
|
||||
*> for further information.
|
||||
|
@ -268,7 +276,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -297,10 +305,10 @@
|
|||
$ W, WERR, WGAP, IBLOCK, INDEXW, GERS, PIVMIN,
|
||||
$ WORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER RANGE
|
||||
|
|
|
@ -51,7 +51,7 @@
|
|||
*> \param[in] N
|
||||
*> \verbatim
|
||||
*> N is INTEGER
|
||||
*> The order of the matrix (subblock, if the matrix splitted).
|
||||
*> The order of the matrix (subblock, if the matrix split).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] D
|
||||
|
@ -174,7 +174,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -193,10 +193,10 @@
|
|||
$ SPDIAM, CLGAPL, CLGAPR, PIVMIN, SIGMA,
|
||||
$ DPLUS, LPLUS, WORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.6.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER CLSTRT, CLEND, INFO, N
|
||||
|
|
|
@ -59,12 +59,15 @@
|
|||
*> \param[in] VL
|
||||
*> \verbatim
|
||||
*> VL is DOUBLE PRECISION
|
||||
*> Lower bound of the interval that contains the desired
|
||||
*> eigenvalues. VL < VU. Needed to compute gaps on the left or right
|
||||
*> end of the extremal eigenvalues in the desired RANGE.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[in] VU
|
||||
*> \verbatim
|
||||
*> VU is DOUBLE PRECISION
|
||||
*> Lower and upper bounds of the interval that contains the desired
|
||||
*> Upper bound of the interval that contains the desired
|
||||
*> eigenvalues. VL < VU. Needed to compute gaps on the left or right
|
||||
*> end of the extremal eigenvalues in the desired RANGE.
|
||||
*> \endverbatim
|
||||
|
@ -81,7 +84,7 @@
|
|||
*> L is DOUBLE PRECISION array, dimension (N)
|
||||
*> On entry, the (N-1) subdiagonal elements of the unit
|
||||
*> bidiagonal matrix L are in elements 1 to N-1 of L
|
||||
*> (if the matrix is not splitted.) At the end of each block
|
||||
*> (if the matrix is not split.) At the end of each block
|
||||
*> is stored the corresponding shift as given by DLARRE.
|
||||
*> On exit, L is overwritten.
|
||||
*> \endverbatim
|
||||
|
@ -236,7 +239,7 @@
|
|||
*> INFO is INTEGER
|
||||
*> = 0: successful exit
|
||||
*>
|
||||
*> > 0: A problem occured in DLARRV.
|
||||
*> > 0: A problem occurred in DLARRV.
|
||||
*> < 0: One of the called subroutines signaled an internal problem.
|
||||
*> Needs inspection of the corresponding parameter IINFO
|
||||
*> for further information.
|
||||
|
@ -263,7 +266,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERauxiliary
|
||||
*
|
||||
|
@ -283,10 +286,10 @@
|
|||
$ IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ,
|
||||
$ WORK, IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.6.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER DOL, DOU, INFO, LDZ, M, N
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
*> \param[in] LDX
|
||||
*> \verbatim
|
||||
*> LDX is INTEGER
|
||||
*> The leading dimension of the vector X. LDX >= 0.
|
||||
*> The leading dimension of the vector X. LDX >= M.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -83,17 +83,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLARSCL2 ( M, N, D, X, LDX )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER M, N, LDX
|
||||
|
|
|
@ -114,7 +114,11 @@
|
|||
*> \param[in] LDA
|
||||
*> \verbatim
|
||||
*> LDA is INTEGER
|
||||
*> The leading dimension of the array A. LDA >= max(1,M).
|
||||
*> The leading dimension of the array A.
|
||||
*> If TYPE = 'G', 'L', 'U', 'H', LDA >= max(1,M);
|
||||
*> TYPE = 'B', LDA >= KL+1;
|
||||
*> TYPE = 'Q', LDA >= KU+1;
|
||||
*> TYPE = 'Z', LDA >= 2*KL+KU+1.
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] INFO
|
||||
|
@ -132,17 +136,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER TYPE
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
*> \param[in] LDX
|
||||
*> \verbatim
|
||||
*> LDX is INTEGER
|
||||
*> The leading dimension of the vector X. LDX >= 0.
|
||||
*> The leading dimension of the vector X. LDX >= M.
|
||||
*> \endverbatim
|
||||
*
|
||||
* Authors:
|
||||
|
@ -83,17 +83,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLASCL2 ( M, N, D, X, LDX )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER M, N, LDX
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
*>
|
||||
*> The first stage consists of deflating the size of the problem
|
||||
*> when there are multiple singular values or when there are zeros in
|
||||
*> the Z vector. For each such occurence the dimension of the
|
||||
*> the Z vector. For each such occurrence the dimension of the
|
||||
*> secular equation problem is reduced by one. This stage is
|
||||
*> performed by the routine DLASD2.
|
||||
*>
|
||||
|
@ -156,7 +156,7 @@
|
|||
*> The leading dimension of the array VT. LDVT >= max( 1, M ).
|
||||
*> \endverbatim
|
||||
*>
|
||||
*> \param[out] IDXQ
|
||||
*> \param[in,out] IDXQ
|
||||
*> \verbatim
|
||||
*> IDXQ is INTEGER array, dimension(N)
|
||||
*> This contains the permutation which will reintegrate the
|
||||
|
@ -190,7 +190,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -204,10 +204,10 @@
|
|||
SUBROUTINE DLASD1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT,
|
||||
$ IDXQ, IWORK, WORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.6.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER INFO, LDU, LDVT, NL, NR, SQRE
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
*>
|
||||
*> The first stage consists of deflating the size of the problem
|
||||
*> when there are multiple singular values or if there is a zero
|
||||
*> in the Z vector. For each such occurence the dimension of the
|
||||
*> in the Z vector. For each such occurrence the dimension of the
|
||||
*> secular equation problem is reduced by one. This stage is
|
||||
*> performed by the routine DLASD7.
|
||||
*>
|
||||
|
@ -232,14 +232,13 @@
|
|||
*> \param[out] DIFR
|
||||
*> \verbatim
|
||||
*> DIFR is DOUBLE PRECISION array,
|
||||
*> dimension ( LDGNUM, 2 ) if ICOMPQ = 1 and
|
||||
*> dimension ( N ) if ICOMPQ = 0.
|
||||
*> On exit, DIFR(I, 1) is the distance between I-th updated
|
||||
*> (undeflated) singular value and the I+1-th (undeflated) old
|
||||
*> singular value.
|
||||
*> dimension ( LDDIFR, 2 ) if ICOMPQ = 1 and
|
||||
*> dimension ( K ) if ICOMPQ = 0.
|
||||
*> On exit, DIFR(I,1) = D(I) - DSIGMA(I+1), DIFR(K,1) is not
|
||||
*> defined and will not be referenced.
|
||||
*>
|
||||
*> If ICOMPQ = 1, DIFR(1:K,2) is an array containing the
|
||||
*> normalizing factors for the right singular vector matrix.
|
||||
*> If ICOMPQ = 1, DIFR(1:K,2) is an array containing the
|
||||
*> normalizing factors for the right singular vector matrix.
|
||||
*>
|
||||
*> See DLASD8 for details on DIFL and DIFR.
|
||||
*> \endverbatim
|
||||
|
@ -298,7 +297,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -314,10 +313,10 @@
|
|||
$ LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK,
|
||||
$ IWORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.6.0) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER GIVPTR, ICOMPQ, INFO, K, LDGCOL, LDGNUM, NL,
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
*> \verbatim
|
||||
*> UPLO is CHARACTER*1
|
||||
*> On entry, UPLO specifies whether the input bidiagonal matrix
|
||||
*> is upper or lower bidiagonal, and wether it is square are
|
||||
*> is upper or lower bidiagonal, and whether it is square are
|
||||
*> not.
|
||||
*> UPLO = 'U' or 'u' B is upper bidiagonal.
|
||||
*> UPLO = 'L' or 'l' B is lower bidiagonal.
|
||||
|
@ -197,7 +197,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERauxiliary
|
||||
*
|
||||
|
@ -211,10 +211,10 @@
|
|||
SUBROUTINE DLASDQ( UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT,
|
||||
$ U, LDU, C, LDC, WORK, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER UPLO
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
*>
|
||||
*> \param[in,out] Z
|
||||
*> \verbatim
|
||||
*> Z is DOUBLE PRECISION array, dimension ( 4*N )
|
||||
*> Z is DOUBLE PRECISION array, dimension ( 4*N0 )
|
||||
*> Z holds the qd array.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -173,7 +173,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date November 2015
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
|
@ -182,10 +182,10 @@
|
|||
$ ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
|
||||
$ DN2, G, TAU )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.6.0) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* November 2015
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
LOGICAL IEEE
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
*>
|
||||
*> \param[in] Z
|
||||
*> \verbatim
|
||||
*> Z is DOUBLE PRECISION array, dimension ( 4*N )
|
||||
*> Z is DOUBLE PRECISION array, dimension ( 4*N0 )
|
||||
*> Z holds the qd array.
|
||||
*> \endverbatim
|
||||
*>
|
||||
|
@ -122,7 +122,7 @@
|
|||
*>
|
||||
*> \param[in,out] G
|
||||
*> \verbatim
|
||||
*> G is REAL
|
||||
*> G is DOUBLE PRECISION
|
||||
*> G is passed as an argument in order to save its value between
|
||||
*> calls to DLASQ4.
|
||||
*> \endverbatim
|
||||
|
@ -135,7 +135,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
|
@ -151,10 +151,10 @@
|
|||
SUBROUTINE DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN,
|
||||
$ DN1, DN2, TAU, TTYPE, G )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
INTEGER I0, N0, N0IN, PP, TTYPE
|
||||
|
|
|
@ -81,17 +81,17 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup auxOTHERcomputational
|
||||
*
|
||||
* =====================================================================
|
||||
SUBROUTINE DLASRT( ID, N, D, INFO )
|
||||
*
|
||||
* -- LAPACK computational routine (version 3.4.2) --
|
||||
* -- LAPACK computational routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
CHARACTER ID
|
||||
|
@ -123,7 +123,7 @@
|
|||
* ..
|
||||
* .. Executable Statements ..
|
||||
*
|
||||
* Test the input paramters.
|
||||
* Test the input parameters.
|
||||
*
|
||||
INFO = 0
|
||||
DIR = -1
|
||||
|
|
|
@ -166,7 +166,7 @@
|
|||
*> \author Univ. of Colorado Denver
|
||||
*> \author NAG Ltd.
|
||||
*
|
||||
*> \date September 2012
|
||||
*> \date June 2016
|
||||
*
|
||||
*> \ingroup doubleSYauxiliary
|
||||
*
|
||||
|
@ -174,10 +174,10 @@
|
|||
SUBROUTINE DLASY2( LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR,
|
||||
$ LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO )
|
||||
*
|
||||
* -- LAPACK auxiliary routine (version 3.4.2) --
|
||||
* -- LAPACK auxiliary routine (version 3.6.1) --
|
||||
* -- LAPACK is a software package provided by Univ. of Tennessee, --
|
||||
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
|
||||
* September 2012
|
||||
* June 2016
|
||||
*
|
||||
* .. Scalar Arguments ..
|
||||
LOGICAL LTRANL, LTRANR
|
||||
|
@ -438,8 +438,10 @@
|
|||
80 CONTINUE
|
||||
90 CONTINUE
|
||||
100 CONTINUE
|
||||
IF( ABS( T16( 4, 4 ) ).LT.SMIN )
|
||||
$ T16( 4, 4 ) = SMIN
|
||||
IF( ABS( T16( 4, 4 ) ).LT.SMIN ) THEN
|
||||
INFO = 1
|
||||
T16( 4, 4 ) = SMIN
|
||||
END IF
|
||||
SCALE = ONE
|
||||
IF( ( EIGHT*SMLNUM )*ABS( BTMP( 1 ) ).GT.ABS( T16( 1, 1 ) ) .OR.
|
||||
$ ( EIGHT*SMLNUM )*ABS( BTMP( 2 ) ).GT.ABS( T16( 2, 2 ) ) .OR.
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue