| @@ -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 | |||
| * | |||
| @@ -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, | |||
| 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 ) | |||
| LORGQRMIN = MAX( 1, M-P ) | |||
| LORGQROPT = INT( WORK(1) ) | |||
| 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, | |||
| 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( 1, M-P-1 ) | |||
| LORGQROPT = INT( WORK(1) ) | |||
| 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, | |||
| 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( 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, 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 | |||
| * | |||
| @@ -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. | |||