Import LAPACK: SRC directory

This commit is contained in:
Martin Köhler 2016-10-26 15:12:09 +02:00
parent 13d40e7591
commit 92a858e69e
253 changed files with 9061 additions and 3782 deletions

View File

@ -141,7 +141,7 @@ set(SLASRC
stbrfs.f stbtrs.f stgevc.f stgex2.f stgexc.f stgsen.f 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 stgsja.f stgsna.f stgsy2.f stgsyl.f stpcon.f stprfs.f stptri.f
stptrs.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 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 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 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 ctbcon.f ctbrfs.f ctbtrs.f ctgevc.f ctgex2.f
ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f ctgexc.f ctgsen.f ctgsja.f ctgsna.f ctgsy2.f ctgsyl.f ctpcon.f
ctprfs.f ctptri.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 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 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 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 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 dtgsja.f dtgsna.f dtgsy2.f dtgsyl.f dtpcon.f dtprfs.f dtptri.f
dtptrs.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 dtrti2.f dtrtri.f dtrtrs.f dtzrzf.f dstemr.f
dsgesv.f dsposv.f dlag2s.f slag2d.f dlat2s.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 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 ztbcon.f ztbrfs.f ztbtrs.f ztgevc.f ztgex2.f
ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f ztgexc.f ztgsen.f ztgsja.f ztgsna.f ztgsy2.f ztgsyl.f ztpcon.f
ztprfs.f ztptri.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 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 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 zungrq.f zungtr.f zunm2l.f zunm2r.f zunmbr.f zunmhr.f zunml2.f zunm22.f

View File

@ -150,7 +150,7 @@ SLASRC = \
stbrfs.o stbtrs.o stgevc.o stgex2.o stgexc.o stgsen.o \ 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 \ stgsja.o stgsna.o stgsy2.o stgsyl.o stpcon.o stprfs.o stptri.o \
stptrs.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 \ strtrs.o stzrzf.o sstemr.o \
slansf.o spftrf.o spftri.o spftrs.o ssfrk.o stfsm.o stftri.o stfttp.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 \ 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 \ ctbcon.o ctbrfs.o ctbtrs.o ctgevc.o ctgex2.o \
ctgexc.o ctgsen.o ctgsja.o ctgsna.o ctgsy2.o ctgsyl.o ctpcon.o \ ctgexc.o ctgsen.o ctgsja.o ctgsna.o ctgsy2.o ctgsyl.o ctpcon.o \
ctprfs.o ctptri.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 \ ctrsyl.o ctrtrs.o ctzrzf.o cung2l.o cung2r.o \
cungbr.o cunghr.o cungl2.o cunglq.o cungql.o cungqr.o cungr2.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 \ 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 \ 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 \ dtgsja.o dtgsna.o dtgsy2.o dtgsyl.o dtpcon.o dtprfs.o dtptri.o \
dtptrs.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 \ dtrtrs.o dtzrzf.o dstemr.o \
dsgesv.o dsposv.o dlag2s.o slag2d.o dlat2s.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 \ 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 \ ztbcon.o ztbrfs.o ztbtrs.o ztgevc.o ztgex2.o \
ztgexc.o ztgsen.o ztgsja.o ztgsna.o ztgsy2.o ztgsyl.o ztpcon.o \ ztgexc.o ztgsen.o ztgsja.o ztgsna.o ztgsy2.o ztgsyl.o ztpcon.o \
ztprfs.o ztptri.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 \ ztrsyl.o ztrtrs.o ztzrzf.o zung2l.o \
zung2r.o zungbr.o zunghr.o zungl2.o zunglq.o zungql.o zungqr.o zungr2.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 \ zungrq.o zungtr.o zunm2l.o zunm2r.o zunmbr.o zunmhr.o zunml2.o zunm22.o \

View File

@ -149,7 +149,7 @@
*> \param[in,out] U1 *> \param[in,out] U1
*> \verbatim *> \verbatim
*> U1 is COMPLEX array, dimension (LDU1,P) *> 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 *> by the left singular vector matrix common to [ B11 ; 0 ] and
*> [ B12 0 0 ; 0 -I 0 0 ]. *> [ B12 0 0 ; 0 -I 0 0 ].
*> \endverbatim *> \endverbatim
@ -157,13 +157,13 @@
*> \param[in] LDU1 *> \param[in] LDU1
*> \verbatim *> \verbatim
*> LDU1 is INTEGER *> LDU1 is INTEGER
*> The leading dimension of the array U1. *> The leading dimension of the array U1, LDU1 >= MAX(1,P).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] U2 *> \param[in,out] U2
*> \verbatim *> \verbatim
*> U2 is COMPLEX array, dimension (LDU2,M-P) *> 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 *> postmultiplied by the left singular vector matrix common to
*> [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ]. *> [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ].
*> \endverbatim *> \endverbatim
@ -171,13 +171,13 @@
*> \param[in] LDU2 *> \param[in] LDU2
*> \verbatim *> \verbatim
*> LDU2 is INTEGER *> LDU2 is INTEGER
*> The leading dimension of the array U2. *> The leading dimension of the array U2, LDU2 >= MAX(1,M-P).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] V1T *> \param[in,out] V1T
*> \verbatim *> \verbatim
*> V1T is COMPLEX array, dimension (LDV1T,Q) *> 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 *> by the conjugate transpose of the right singular vector
*> matrix common to [ B11 ; 0 ] and [ B21 ; 0 ]. *> matrix common to [ B11 ; 0 ] and [ B21 ; 0 ].
*> \endverbatim *> \endverbatim
@ -185,13 +185,13 @@
*> \param[in] LDV1T *> \param[in] LDV1T
*> \verbatim *> \verbatim
*> LDV1T is INTEGER *> LDV1T is INTEGER
*> The leading dimension of the array V1T. *> The leading dimension of the array V1T, LDV1T >= MAX(1,Q).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] V2T *> \param[in,out] V2T
*> \verbatim *> \verbatim
*> V2T is COMPLEX array, dimenison (LDV2T,M-Q) *> 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 *> premultiplied by the conjugate transpose of the right
*> singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and *> singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and
*> [ B22 0 0 ; 0 0 I ]. *> [ B22 0 0 ; 0 0 I ].
@ -200,7 +200,7 @@
*> \param[in] LDV2T *> \param[in] LDV2T
*> \verbatim *> \verbatim
*> LDV2T is INTEGER *> LDV2T is INTEGER
*> The leading dimension of the array V2T. *> The leading dimension of the array V2T, LDV2T >= MAX(1,M-Q).
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] B11D *> \param[out] B11D
@ -322,7 +322,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -332,10 +332,10 @@
$ V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E, $ V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,
$ B22D, B22E, RWORK, LRWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS

View File

@ -84,7 +84,7 @@
*> *>
*> \param[in] AB *> \param[in] AB
*> \verbatim *> \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. *> 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 *> The j-th column of A is stored in the j-th column of the
*> array AB as follows: *> array AB as follows:
@ -153,7 +153,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexGBcomputational *> \ingroup complexGBcomputational
* *
@ -161,10 +161,10 @@
SUBROUTINE CGBEQUB( M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND, SUBROUTINE CGBEQUB( M, N, KL, KU, AB, LDAB, R, C, ROWCND, COLCND,
$ AMAX, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, KL, KU, LDAB, M, N INTEGER INFO, KL, KU, LDAB, M, N

View File

@ -440,7 +440,7 @@
$ ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK, $ ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, RWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* April 2012 * April 2012
@ -642,7 +642,7 @@
* *
* Perform refinement on each right-hand side * 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' ) PREC_TYPE = ILAPREC( 'D' )

View File

@ -83,7 +83,7 @@
*> *>
*> \param[in] SELECT *> \param[in] SELECT
*> \verbatim *> \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. *> SELECT must be declared EXTERNAL in the calling subroutine.
*> If SORT = 'S', SELECT is used to select eigenvalues to order *> If SORT = 'S', SELECT is used to select eigenvalues to order
*> to the top left of the Schur form. *> to the top left of the Schur form.
@ -230,7 +230,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexGEeigen *> \ingroup complexGEeigen
* *
@ -239,10 +239,10 @@
$ VS, LDVS, RCONDE, RCONDV, WORK, LWORK, RWORK, $ VS, LDVS, RCONDE, RCONDV, WORK, LWORK, RWORK,
$ BWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBVS, SENSE, SORT CHARACTER JOBVS, SENSE, SORT

View File

@ -26,8 +26,8 @@
* INTEGER INFO, LDA, LDVL, LDVR, LWORK, N * INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
* .. * ..
* .. Array Arguments .. * .. Array Arguments ..
* REAL RWORK( * ) * REAL RWORK( * )
* COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), * COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
* $ W( * ), WORK( * ) * $ W( * ), WORK( * )
* .. * ..
* *
@ -169,59 +169,62 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \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 *> \ingroup complexGEeigen
* *
* ===================================================================== * =====================================================================
SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR, SUBROUTINE CGEEV( JOBVL, JOBVR, N, A, LDA, W, VL, LDVL, VR, LDVR,
$ WORK, LWORK, RWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBVL, JOBVR CHARACTER JOBVL, JOBVR
INTEGER INFO, LDA, LDVL, LDVR, LWORK, N INTEGER INFO, LDA, LDVL, LDVR, LWORK, N
* .. * ..
* .. Array Arguments .. * .. Array Arguments ..
REAL RWORK( * ) REAL RWORK( * )
COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
$ W( * ), WORK( * ) $ W( * ), WORK( * )
* .. * ..
* *
* ===================================================================== * =====================================================================
* *
* .. Parameters .. * .. Parameters ..
REAL ZERO, ONE REAL ZERO, ONE
PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 ) PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 )
* .. * ..
* .. Local Scalars .. * .. Local Scalars ..
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR LOGICAL LQUERY, SCALEA, WANTVL, WANTVR
CHARACTER SIDE CHARACTER SIDE
INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, IRWORK, ITAU, INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, IRWORK, ITAU,
$ IWRK, K, MAXWRK, MINWRK, NOUT $ IWRK, K, LWORK_TREVC, MAXWRK, MINWRK, NOUT
REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
COMPLEX TMP COMPLEX TMP
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
LOGICAL SELECT( 1 ) LOGICAL SELECT( 1 )
REAL DUM( 1 ) REAL DUM( 1 )
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY, CLASCL, EXTERNAL SLABAD, XERBLA, CSSCAL, CGEBAK, CGEBAL, CGEHRD,
$ CSCAL, CSSCAL, CTREVC, CUNGHR, SLABAD, XERBLA $ CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3, CUNGHR
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV, ISAMAX INTEGER ISAMAX, ILAENV
REAL CLANGE, SCNRM2, SLAMCH REAL SLAMCH, SCNRM2, CLANGE
EXTERNAL LSAME, ILAENV, ISAMAX, CLANGE, SCNRM2, SLAMCH EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC AIMAG, CMPLX, CONJG, MAX, REAL, SQRT INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -244,7 +247,6 @@
ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN ELSE IF( LDVR.LT.1 .OR. ( WANTVR .AND. LDVR.LT.N ) ) THEN
INFO = -10 INFO = -10
END IF END IF
* *
* Compute workspace * Compute workspace
* (Note: Comments in the code beginning "Workspace:" describe the * (Note: Comments in the code beginning "Workspace:" describe the
@ -267,18 +269,28 @@
IF( WANTVL ) THEN IF( WANTVL ) THEN
MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'CUNGHR', MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'CUNGHR',
$ ' ', N, 1, N, -1 ) ) $ ' ', 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, CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VL, LDVL,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
ELSE IF( WANTVR ) THEN ELSE IF( WANTVR ) THEN
MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'CUNGHR', MAXWRK = MAX( MAXWRK, N + ( N - 1 )*ILAENV( 1, 'CUNGHR',
$ ' ', N, 1, N, -1 ) ) $ ' ', 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, CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VR, LDVR,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
ELSE ELSE
CALL CHSEQR( 'E', 'N', N, 1, N, A, LDA, W, VR, LDVR, CALL CHSEQR( 'E', 'N', N, 1, N, A, LDA, W, VR, LDVR,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
END IF END IF
HSWORK = WORK( 1 ) HSWORK = INT( WORK(1) )
MAXWRK = MAX( MAXWRK, HSWORK, MINWRK ) MAXWRK = MAX( MAXWRK, HSWORK, MINWRK )
END IF END IF
WORK( 1 ) = MAXWRK WORK( 1 ) = MAXWRK
@ -413,12 +425,13 @@
IF( WANTVL .OR. WANTVR ) THEN IF( WANTVL .OR. WANTVR ) THEN
* *
* Compute left and/or right eigenvectors * Compute left and/or right eigenvectors
* (CWorkspace: need 2*N) * (CWorkspace: need 2*N, prefer N + 2*N*NB)
* (RWorkspace: need 2*N) * (RWorkspace: need 2*N)
* *
IRWORK = IBAL + N IRWORK = IBAL + N
CALL CTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR, CALL CTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
$ N, NOUT, WORK( IWRK ), RWORK( IRWORK ), IERR ) $ N, NOUT, WORK( IWRK ), LWORK-IWRK+1,
$ RWORK( IRWORK ), N, IERR )
END IF END IF
* *
IF( WANTVL ) THEN IF( WANTVL ) THEN

View File

@ -25,12 +25,12 @@
* .. Scalar Arguments .. * .. Scalar Arguments ..
* CHARACTER BALANC, JOBVL, JOBVR, SENSE * CHARACTER BALANC, JOBVL, JOBVR, SENSE
* INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N * INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N
* REAL ABNRM * REAL ABNRM
* .. * ..
* .. Array Arguments .. * .. Array Arguments ..
* REAL RCONDE( * ), RCONDV( * ), RWORK( * ), * REAL RCONDE( * ), RCONDV( * ), RWORK( * ),
* $ SCALE( * ) * $ SCALE( * )
* COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), * COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
* $ W( * ), WORK( * ) * $ W( * ), WORK( * )
* .. * ..
* *
@ -134,7 +134,7 @@
*> A is COMPLEX array, dimension (LDA,N) *> A is COMPLEX array, dimension (LDA,N)
*> On entry, the N-by-N matrix A. *> On entry, the N-by-N matrix A.
*> On exit, A has been overwritten. If JOBVL = 'V' or *> 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. *> version of the matrix A.
*> \endverbatim *> \endverbatim
*> *>
@ -276,7 +276,9 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \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 *> \ingroup complexGEeigen
* *
@ -284,56 +286,57 @@
SUBROUTINE CGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL, SUBROUTINE CGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, W, VL,
$ LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE, $ LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, RCONDE,
$ RCONDV, WORK, LWORK, RWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER BALANC, JOBVL, JOBVR, SENSE CHARACTER BALANC, JOBVL, JOBVR, SENSE
INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N INTEGER IHI, ILO, INFO, LDA, LDVL, LDVR, LWORK, N
REAL ABNRM REAL ABNRM
* .. * ..
* .. Array Arguments .. * .. Array Arguments ..
REAL RCONDE( * ), RCONDV( * ), RWORK( * ), REAL RCONDE( * ), RCONDV( * ), RWORK( * ),
$ SCALE( * ) $ SCALE( * )
COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ), COMPLEX A( LDA, * ), VL( LDVL, * ), VR( LDVR, * ),
$ W( * ), WORK( * ) $ W( * ), WORK( * )
* .. * ..
* *
* ===================================================================== * =====================================================================
* *
* .. Parameters .. * .. Parameters ..
REAL ZERO, ONE REAL ZERO, ONE
PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 ) PARAMETER ( ZERO = 0.0E0, ONE = 1.0E0 )
* .. * ..
* .. Local Scalars .. * .. Local Scalars ..
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE, LOGICAL LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE,
$ WNTSNN, WNTSNV $ WNTSNN, WNTSNV
CHARACTER JOB, SIDE CHARACTER JOB, SIDE
INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K, MAXWRK, INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K,
$ MINWRK, NOUT $ LWORK_TREVC, MAXWRK, MINWRK, NOUT
REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM REAL ANRM, BIGNUM, CSCALE, EPS, SCL, SMLNUM
COMPLEX TMP COMPLEX TMP
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
LOGICAL SELECT( 1 ) LOGICAL SELECT( 1 )
REAL DUM( 1 ) REAL DUM( 1 )
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CGEBAK, CGEBAL, CGEHRD, CHSEQR, CLACPY, CLASCL, EXTERNAL SLABAD, SLASCL, XERBLA, CSSCAL, CGEBAK, CGEBAL,
$ CSCAL, CSSCAL, CTREVC, CTRSNA, CUNGHR, SLABAD, $ CGEHRD, CHSEQR, CLACPY, CLASCL, CSCAL, CTREVC3,
$ SLASCL, XERBLA $ CTRSNA, CUNGHR
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME
INTEGER ILAENV, ISAMAX INTEGER ISAMAX, ILAENV
REAL CLANGE, SCNRM2, SLAMCH REAL SLAMCH, SCNRM2, CLANGE
EXTERNAL LSAME, ILAENV, ISAMAX, CLANGE, SCNRM2, SLAMCH EXTERNAL LSAME, ISAMAX, ILAENV, SLAMCH, SCNRM2, CLANGE
* .. * ..
* .. Intrinsic Functions .. * .. Intrinsic Functions ..
INTRINSIC AIMAG, CMPLX, CONJG, MAX, REAL, SQRT INTRINSIC REAL, CMPLX, CONJG, AIMAG, MAX, SQRT
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -387,9 +390,19 @@
MAXWRK = N + N*ILAENV( 1, 'CGEHRD', ' ', N, 1, N, 0 ) MAXWRK = N + N*ILAENV( 1, 'CGEHRD', ' ', N, 1, N, 0 )
* *
IF( WANTVL ) THEN 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, CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VL, LDVL,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
ELSE IF( WANTVR ) THEN 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, CALL CHSEQR( 'S', 'V', N, 1, N, A, LDA, W, VR, LDVR,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
ELSE ELSE
@ -401,7 +414,7 @@
$ WORK, -1, INFO ) $ WORK, -1, INFO )
END IF END IF
END IF END IF
HSWORK = WORK( 1 ) HSWORK = INT( WORK(1) )
* *
IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN
MINWRK = 2*N MINWRK = 2*N
@ -559,19 +572,20 @@
$ WORK( IWRK ), LWORK-IWRK+1, INFO ) $ WORK( IWRK ), LWORK-IWRK+1, INFO )
END IF 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 $ GO TO 50
* *
IF( WANTVL .OR. WANTVR ) THEN IF( WANTVL .OR. WANTVR ) THEN
* *
* Compute left and/or right eigenvectors * Compute left and/or right eigenvectors
* (CWorkspace: need 2*N) * (CWorkspace: need 2*N, prefer N + 2*N*NB)
* (RWorkspace: need N) * (RWorkspace: need N)
* *
CALL CTREVC( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR, CALL CTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
$ N, NOUT, WORK( IWRK ), RWORK, IERR ) $ N, NOUT, WORK( IWRK ), LWORK-IWRK+1,
$ RWORK, N, IERR )
END IF END IF
* *
* Compute condition numbers if desired * Compute condition numbers if desired

View File

@ -39,18 +39,19 @@
*> *>
*> \verbatim *> \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 *> matrix [A], where M >= N. The SVD of [A] is written as
*> *>
*> [A] = [U] * [SIGMA] * [V]^*, *> [A] = [U] * [SIGMA] * [V]^*,
*> *>
*> where [SIGMA] is an N-by-N (M-by-N) matrix which is zero except for its N *> 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 *> diagonal elements, [U] is an M-by-N (or M-by-M) unitary matrix, and
*> [V] is an N-by-N orthogonal matrix. The diagonal elements of [SIGMA] are *> [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 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] *> 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 *> are computed and stored in the arrays U and V, respectively. The diagonal
*> of [SIGMA] is computed and stored in the array SVA. *> of [SIGMA] is computed and stored in the array SVA.
*> \endverbatim
*> *>
*> Arguments: *> Arguments:
*> ========== *> ==========
@ -221,7 +222,7 @@
*> *>
*> \param[out] U *> \param[out] U
*> \verbatim *> \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 *> If JOBU = 'U', then U contains on exit the M-by-N matrix of
*> the left singular vectors. *> the left singular vectors.
*> If JOBU = 'F', then U contains on exit the M-by-M matrix of *> 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 *> copied back to the V array. This 'W' option is just
*> a reminder to the caller that in this case U is *> a reminder to the caller that in this case U is
*> reserved as workspace of length N*N. *> 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 *> \endverbatim
*> *>
*> \param[in] LDU *> \param[in] LDU
@ -256,7 +257,7 @@
*> copied back to the U array. This 'W' option is just *> copied back to the U array. This 'W' option is just
*> a reminder to the caller that in this case V is *> a reminder to the caller that in this case V is
*> reserved as workspace of length N*N. *> 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 *> \endverbatim
*> *>
*> \param[in] LDV *> \param[in] LDV
@ -278,7 +279,7 @@
*> LWORK depends on the job: *> LWORK depends on the job:
*> *>
*> 1. If only SIGMA is needed ( JOBU.EQ.'N', JOBV.EQ.'N' ) and *> 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. *> LWORK >= 2*N+1. This is the minimal requirement.
*> ->> For optimal performance (blocked code) the optimal value *> ->> For optimal performance (blocked code) the optimal value
*> is LWORK >= N + (N+1)*NB. Here NB is the optimal *> is LWORK >= N + (N+1)*NB. Here NB is the optimal
@ -298,7 +299,7 @@
*> (JOBU.EQ.'N') *> (JOBU.EQ.'N')
*> -> the minimal requirement is LWORK >= 3*N. *> -> the minimal requirement is LWORK >= 3*N.
*> -> For optimal performance, LWORK >= max(N+(N+1)*NB, 3*N,2*N+N*NB), *> -> 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 *> CUNMLQ. In general, the optimal length LWORK is computed as
*> LWORK >= max(N+LWORK(CGEQP3), N+LWORK(CPOCON), N+LWORK(CGESVJ), *> LWORK >= max(N+LWORK(CGEQP3), N+LWORK(CPOCON), N+LWORK(CGESVJ),
*> N+LWORK(CGELQF), 2*N+LWORK(CGEQRF), N+LWORK(CUNMLQ)). *> N+LWORK(CGELQF), 2*N+LWORK(CGEQRF), N+LWORK(CUNMLQ)).
@ -317,8 +318,8 @@
*> the minimal requirement is LWORK >= 5*N+2*N*N. *> the minimal requirement is LWORK >= 5*N+2*N*N.
*> 4.2. if JOBV.EQ.'J' the minimal requirement is *> 4.2. if JOBV.EQ.'J' the minimal requirement is
*> LWORK >= 4*N+N*N. *> LWORK >= 4*N+N*N.
*> In both cases, the allocated CWORK can accomodate blocked runs *> In both cases, the allocated CWORK can accommodate blocked runs
*> of CGEQP3, CGEQRF, CGELQF, SUNMQR, CUNMLQ. *> of CGEQP3, CGEQRF, CGELQF, CUNMQR, CUNMLQ.
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] RWORK *> \param[out] RWORK
@ -432,7 +433,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexGEsing *> \ingroup complexGEsing
* *
@ -498,7 +499,7 @@
*> LAPACK Working note 170. *> LAPACK Working note 170.
*> [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR *> [3] Z. Drmac and Z. Bujanovic: On the failure of rank-revealing QR
*> factorization software - a case study. *> 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. *> LAPACK Working note 176.
*> [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV, *> [4] Z. Drmac: SIGMA - mathematical software library for accurate SVD, PSV,
*> QSVD, (H,K)-SVD computations. *> QSVD, (H,K)-SVD computations.
@ -516,10 +517,10 @@
$ M, N, A, LDA, SVA, U, LDU, V, LDV, $ M, N, A, LDA, SVA, U, LDU, V, LDV,
$ CWORK, LWORK, RWORK, LRWORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
IMPLICIT NONE IMPLICIT NONE
@ -556,13 +557,13 @@
* .. * ..
* .. External Functions .. * .. External Functions ..
REAL SLAMCH, SCNRM2 REAL SLAMCH, SCNRM2
INTEGER ISAMAX INTEGER ISAMAX, ICAMAX
LOGICAL LSAME LOGICAL LSAME
EXTERNAL ISAMAX, LSAME, SLAMCH, SCNRM2 EXTERNAL ISAMAX, ICAMAX, LSAME, SLAMCH, SCNRM2
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CCOPY, CGELQF, CGEQP3, CGEQRF, CLACPY, CLASCL, 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 $ CUNMQR, CPOCON, SSCAL, CSSCAL, CSWAP, CTRSM, XERBLA
* *
EXTERNAL CGESVJ EXTERNAL CGESVJ
@ -636,7 +637,11 @@
* *
* Quick return for void matrix (Y3K safe) * 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 * Determine whether the matrix U should be M x N or M x M
* *
@ -803,7 +808,7 @@
1950 CONTINUE 1950 CONTINUE
ELSE ELSE
DO 1904 p = 1, M 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) ) AATMAX = AMAX1( AATMAX, RWORK(M+N+p) )
AATMIN = AMIN1( AATMIN, RWORK(M+N+p) ) AATMIN = AMIN1( AATMIN, RWORK(M+N+p) )
1904 CONTINUE 1904 CONTINUE
@ -824,7 +829,7 @@
* *
XSC = ZERO XSC = ZERO
TEMP1 = ONE TEMP1 = ONE
CALL CLASSQ( N, SVA, 1, XSC, TEMP1 ) CALL SLASSQ( N, SVA, 1, XSC, TEMP1 )
TEMP1 = ONE / TEMP1 TEMP1 = ONE / TEMP1
* *
ENTRA = ZERO ENTRA = ZERO
@ -903,7 +908,7 @@
BIG1 = SQRT( BIG ) BIG1 = SQRT( BIG )
TEMP1 = SQRT( BIG / FLOAT(N) ) 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 IF ( AAQQ .GT. (AAPP * SFMIN) ) THEN
AAQQ = ( AAQQ / AAPP ) * TEMP1 AAQQ = ( AAQQ / AAPP ) * TEMP1
ELSE ELSE
@ -1221,7 +1226,7 @@
CALL CCOPY( NR-p+1, V(p,p), LDV, V(p,p), 1 ) CALL CCOPY( NR-p+1, V(p,p), LDV, V(p,p), 1 )
CALL CLACGV( NR-p+1, V(p,p), 1 ) CALL CLACGV( NR-p+1, V(p,p), 1 )
8998 CONTINUE 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, CALL CGESVJ( 'Lower', 'U','N', NR, NR, V,LDV, SVA, NR, U,
$ LDU, CWORK(N+1), LWORK-N, RWORK, LRWORK, INFO ) $ 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), CALL CTRSM('L','U','C','N',NR,NR,CONE,CWORK(2*N+1),
$ N,V,LDV) $ N,V,LDV)
IF ( NR .LT. N ) THEN IF ( NR .LT. N ) THEN
CALL CLASET('A',N-NR,NR,ZERO,CZERO,V(NR+1,1),LDV) CALL CLASET('A',N-NR,NR,CZERO,CZERO,V(NR+1,1),LDV)
CALL CLASET('A',NR,N-NR,ZERO,CZERO,V(1,NR+1),LDV) CALL CLASET('A',NR,N-NR,CZERO,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,N-NR,CZERO,CONE,V(NR+1,NR+1),LDV)
END IF END IF
CALL CUNMQR('L','N',N,N,NR,CWORK(2*N+1),N,CWORK(N+1), 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) $ V,LDV,CWORK(2*N+N*NR+NR+1),LWORK-2*N-N*NR-NR,IERR)
@ -1775,9 +1780,9 @@
NUMRANK = NINT(RWORK(2)) NUMRANK = NINT(RWORK(2))
IF ( NR .LT. N ) THEN IF ( NR .LT. N ) THEN
CALL CLASET( 'A',N-NR,NR,ZERO,ZERO,V(NR+1,1),LDV ) CALL CLASET( 'A',N-NR,NR,CZERO,CZERO,V(NR+1,1),LDV )
CALL CLASET( 'A',NR,N-NR,ZERO,ZERO,V(1,NR+1),LDV ) CALL CLASET( 'A',NR,N-NR,CZERO,CZERO,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,N-NR,CZERO,CONE,V(NR+1,NR+1),LDV )
END IF END IF
CALL CUNMQR( 'L','N',N,N,NR,CWORK(2*N+1),N,CWORK(N+1), 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) * Undo scaling, if necessary (and possible)
* *
IF ( USCAL2 .LE. (BIG/SVA(1))*USCAL1 ) THEN 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 USCAL1 = ONE
USCAL2 = ONE USCAL2 = ONE
END IF END IF

View File

@ -170,7 +170,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexGEsolve *> \ingroup complexGEsolve
* *
@ -178,10 +178,10 @@
SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK, SUBROUTINE CGELSS( M, N, NRHS, A, LDA, B, LDB, S, RCOND, RANK,
$ WORK, LWORK, RWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK INTEGER INFO, LDA, LDB, LWORK, M, N, NRHS, RANK
@ -285,8 +285,8 @@
* Path 1 - overdetermined or exactly determined * Path 1 - overdetermined or exactly determined
* *
* Compute space needed for CGEBRD * Compute space needed for CGEBRD
CALL CGEBRD( MM, N, A, LDA, S, DUM(1), DUM(1), CALL CGEBRD( MM, N, A, LDA, S, S, DUM(1), DUM(1), DUM(1),
$ DUM(1), DUM(1), -1, INFO ) $ -1, INFO )
LWORK_CGEBRD=DUM(1) LWORK_CGEBRD=DUM(1)
* Compute space needed for CUNMBR * Compute space needed for CUNMBR
CALL CUNMBR( 'Q', 'L', 'C', MM, NRHS, N, A, LDA, DUM(1), CALL CUNMBR( 'Q', 'L', 'C', MM, NRHS, N, A, LDA, DUM(1),
@ -315,8 +315,8 @@
$ -1, INFO ) $ -1, INFO )
LWORK_CGELQF=DUM(1) LWORK_CGELQF=DUM(1)
* Compute space needed for CGEBRD * Compute space needed for CGEBRD
CALL CGEBRD( M, M, A, LDA, S, DUM(1), DUM(1), CALL CGEBRD( M, M, A, LDA, S, S, DUM(1), DUM(1),
$ DUM(1), DUM(1), -1, INFO ) $ DUM(1), -1, INFO )
LWORK_CGEBRD=DUM(1) LWORK_CGEBRD=DUM(1)
* Compute space needed for CUNMBR * Compute space needed for CUNMBR
CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, N, A, LDA, CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, N, A, LDA,
@ -346,8 +346,8 @@
* Path 2 - underdetermined * Path 2 - underdetermined
* *
* Compute space needed for CGEBRD * Compute space needed for CGEBRD
CALL CGEBRD( M, N, A, LDA, S, DUM(1), DUM(1), CALL CGEBRD( M, N, A, LDA, S, S, DUM(1), DUM(1),
$ DUM(1), DUM(1), -1, INFO ) $ DUM(1), -1, INFO )
LWORK_CGEBRD=DUM(1) LWORK_CGEBRD=DUM(1)
* Compute space needed for CUNMBR * Compute space needed for CUNMBR
CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, M, A, LDA, CALL CUNMBR( 'Q', 'L', 'C', M, NRHS, M, A, LDA,

View File

@ -100,7 +100,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexGEcomputational *> \ingroup complexGEcomputational
* *
@ -132,10 +132,10 @@
* ===================================================================== * =====================================================================
RECURSIVE SUBROUTINE CGEQRT3( M, N, A, LDA, T, LDT, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N, LDT INTEGER INFO, LDA, M, N, LDT
@ -177,7 +177,7 @@
* *
* Compute Householder transform when N=1 * 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 ELSE
* *

File diff suppressed because it is too large Load Diff

View File

@ -214,7 +214,7 @@
SUBROUTINE CGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT, SUBROUTINE CGESVD( JOBU, JOBVT, M, N, A, LDA, S, U, LDU, VT, LDVT,
$ WORK, LWORK, RWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* April 2012 * April 2012
@ -322,23 +322,23 @@
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 ) MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
* Compute space needed for CGEQRF * Compute space needed for CGEQRF
CALL CGEQRF( M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR ) 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 * Compute space needed for CUNGQR
CALL CUNGQR( M, N, N, A, LDA, CDUM(1), CDUM(1), -1, IERR ) 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 ) 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 * Compute space needed for CGEBRD
CALL CGEBRD( N, N, A, LDA, S, DUM(1), CDUM(1), CALL CGEBRD( N, N, A, LDA, S, DUM(1), CDUM(1),
$ CDUM(1), CDUM(1), -1, IERR ) $ CDUM(1), CDUM(1), -1, IERR )
LWORK_CGEBRD=CDUM(1) LWORK_CGEBRD = INT( CDUM(1) )
* Compute space needed for CUNGBR * Compute space needed for CUNGBR
CALL CUNGBR( 'P', N, N, N, A, LDA, CDUM(1), CALL CUNGBR( 'P', N, N, N, A, LDA, CDUM(1),
$ CDUM(1), -1, IERR ) $ 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), CALL CUNGBR( 'Q', N, N, N, A, LDA, CDUM(1),
$ CDUM(1), -1, IERR ) $ 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 ) MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
IF( M.GE.MNTHR ) THEN IF( M.GE.MNTHR ) THEN
@ -446,24 +446,24 @@
* *
CALL CGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1), CALL CGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1),
$ CDUM(1), CDUM(1), -1, IERR ) $ CDUM(1), CDUM(1), -1, IERR )
LWORK_CGEBRD=CDUM(1) LWORK_CGEBRD = INT( CDUM(1) )
MAXWRK = 2*N + LWORK_CGEBRD MAXWRK = 2*N + LWORK_CGEBRD
IF( WNTUS .OR. WNTUO ) THEN IF( WNTUS .OR. WNTUO ) THEN
CALL CUNGBR( 'Q', M, N, N, A, LDA, CDUM(1), CALL CUNGBR( 'Q', M, N, N, A, LDA, CDUM(1),
$ CDUM(1), -1, IERR ) $ CDUM(1), -1, IERR )
LWORK_CUNGBR_Q=CDUM(1) LWORK_CUNGBR_Q = INT( CDUM(1) )
MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q ) MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q )
END IF END IF
IF( WNTUA ) THEN IF( WNTUA ) THEN
CALL CUNGBR( 'Q', M, M, N, A, LDA, CDUM(1), CALL CUNGBR( 'Q', M, M, N, A, LDA, CDUM(1),
$ CDUM(1), -1, IERR ) $ CDUM(1), -1, IERR )
LWORK_CUNGBR_Q=CDUM(1) LWORK_CUNGBR_Q = INT( CDUM(1) )
MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q ) MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_Q )
END IF END IF
IF( .NOT.WNTVN ) THEN IF( .NOT.WNTVN ) THEN
MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_P ) MAXWRK = MAX( MAXWRK, 2*N+LWORK_CUNGBR_P )
MINWRK = 2*N + M
END IF END IF
MINWRK = 2*N + M
END IF END IF
ELSE IF( MINMN.GT.0 ) THEN ELSE IF( MINMN.GT.0 ) THEN
* *
@ -472,25 +472,25 @@
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 ) MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
* Compute space needed for CGELQF * Compute space needed for CGELQF
CALL CGELQF( M, N, A, LDA, CDUM(1), CDUM(1), -1, IERR ) 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 * Compute space needed for CUNGLQ
CALL CUNGLQ( N, N, M, CDUM(1), N, CDUM(1), CDUM(1), -1, CALL CUNGLQ( N, N, M, CDUM(1), N, CDUM(1), CDUM(1), -1,
$ IERR ) $ 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 ) 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 * Compute space needed for CGEBRD
CALL CGEBRD( M, M, A, LDA, S, DUM(1), CDUM(1), CALL CGEBRD( M, M, A, LDA, S, DUM(1), CDUM(1),
$ CDUM(1), CDUM(1), -1, IERR ) $ CDUM(1), CDUM(1), -1, IERR )
LWORK_CGEBRD=CDUM(1) LWORK_CGEBRD = INT( CDUM(1) )
* Compute space needed for CUNGBR P * Compute space needed for CUNGBR P
CALL CUNGBR( 'P', M, M, M, A, N, CDUM(1), CALL CUNGBR( 'P', M, M, M, A, N, CDUM(1),
$ CDUM(1), -1, IERR ) $ CDUM(1), -1, IERR )
LWORK_CUNGBR_P=CDUM(1) LWORK_CUNGBR_P = INT( CDUM(1) )
* Compute space needed for CUNGBR Q * Compute space needed for CUNGBR Q
CALL CUNGBR( 'Q', M, M, M, A, N, CDUM(1), CALL CUNGBR( 'Q', M, M, M, A, N, CDUM(1),
$ CDUM(1), -1, IERR ) $ CDUM(1), -1, IERR )
LWORK_CUNGBR_Q=CDUM(1) LWORK_CUNGBR_Q = INT( CDUM(1) )
IF( N.GE.MNTHR ) THEN IF( N.GE.MNTHR ) THEN
IF( WNTVN ) THEN IF( WNTVN ) THEN
* *
@ -596,25 +596,25 @@
* *
CALL CGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1), CALL CGEBRD( M, N, A, LDA, S, DUM(1), CDUM(1),
$ CDUM(1), CDUM(1), -1, IERR ) $ CDUM(1), CDUM(1), -1, IERR )
LWORK_CGEBRD=CDUM(1) LWORK_CGEBRD = INT( CDUM(1) )
MAXWRK = 2*M + LWORK_CGEBRD MAXWRK = 2*M + LWORK_CGEBRD
IF( WNTVS .OR. WNTVO ) THEN IF( WNTVS .OR. WNTVO ) THEN
* Compute space needed for CUNGBR P * Compute space needed for CUNGBR P
CALL CUNGBR( 'P', M, N, M, A, N, CDUM(1), CALL CUNGBR( 'P', M, N, M, A, N, CDUM(1),
$ CDUM(1), -1, IERR ) $ CDUM(1), -1, IERR )
LWORK_CUNGBR_P=CDUM(1) LWORK_CUNGBR_P = INT( CDUM(1) )
MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_P ) MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_P )
END IF END IF
IF( WNTVA ) THEN IF( WNTVA ) THEN
CALL CUNGBR( 'P', N, N, M, A, N, CDUM(1), CALL CUNGBR( 'P', N, N, M, A, N, CDUM(1),
$ CDUM(1), -1, IERR ) $ CDUM(1), -1, IERR )
LWORK_CUNGBR_P=CDUM(1) LWORK_CUNGBR_P = INT( CDUM(1) )
MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_P ) MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_P )
END IF END IF
IF( .NOT.WNTUN ) THEN IF( .NOT.WNTUN ) THEN
MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_Q ) MAXWRK = MAX( MAXWRK, 2*M+LWORK_CUNGBR_Q )
MINWRK = 2*M + N
END IF END IF
MINWRK = 2*M + N
END IF END IF
END IF END IF
MAXWRK = MAX( MINWRK, MAXWRK ) MAXWRK = MAX( MINWRK, MAXWRK )
@ -681,8 +681,10 @@
* *
* Zero out below R * Zero out below R
* *
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, A( 2, 1 ), IF( N .GT. 1 ) THEN
$ LDA ) CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, A( 2, 1 ),
$ LDA )
END IF
IE = 1 IE = 1
ITAUQ = 1 ITAUQ = 1
ITAUP = ITAUQ + N ITAUP = ITAUQ + N
@ -1145,8 +1147,10 @@
* *
* Zero out below R in A * Zero out below R in A
* *
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, IF( N .GT. 1 ) THEN
$ A( 2, 1 ), LDA ) CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
$ A( 2, 1 ), LDA )
END IF
* *
* Bidiagonalize R in A * Bidiagonalize R in A
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB) * (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
@ -1322,8 +1326,10 @@
* *
* Zero out below R in A * Zero out below R in A
* *
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, IF( N .GT. 1 ) THEN
$ A( 2, 1 ), LDA ) CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
$ A( 2, 1 ), LDA )
END IF
* *
* Bidiagonalize R in A * Bidiagonalize R in A
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB) * (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
@ -1650,8 +1656,10 @@
* *
* Zero out below R in A * Zero out below R in A
* *
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, IF( N .GT. 1 ) THEN
$ A( 2, 1 ), LDA ) CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
$ A( 2, 1 ), LDA )
END IF
* *
* Bidiagonalize R in A * Bidiagonalize R in A
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB) * (CWorkspace: need 3*N, prefer 2*N+2*N*NB)
@ -1831,8 +1839,10 @@
* *
* Zero out below R in A * Zero out below R in A
* *
CALL CLASET( 'L', N-1, N-1, CZERO, CZERO, IF( N .GT. 1 ) THEN
$ A( 2, 1 ), LDA ) CALL CLASET( 'L', N-1, N-1, CZERO, CZERO,
$ A( 2, 1 ), LDA )
END IF
* *
* Bidiagonalize R in A * Bidiagonalize R in A
* (CWorkspace: need 3*N, prefer 2*N+2*N*NB) * (CWorkspace: need 3*N, prefer 2*N+2*N*NB)

View File

@ -124,13 +124,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for singular values. VU > VL.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -138,13 +140,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest singular values to be returned. *> largest singular value to be returned.
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0. *> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -170,7 +176,7 @@
*> vectors, stored columnwise) as specified by RANGE; if *> vectors, stored columnwise) as specified by RANGE; if
*> JOBU = 'N', U is not referenced. *> JOBU = 'N', U is not referenced.
*> Note: The user must ensure that UCOL >= NS; if RANGE = 'V', *> 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. *> bound must be used.
*> \endverbatim *> \endverbatim
*> *>
@ -255,7 +261,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexGEsing *> \ingroup complexGEsing
* *
@ -264,10 +270,10 @@
$ IL, IU, NS, S, U, LDU, VT, LDVT, WORK, $ IL, IU, NS, S, U, LDU, VT, LDVT, WORK,
$ LWORK, RWORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBU, JOBVT, RANGE CHARACTER JOBU, JOBVT, RANGE
@ -294,8 +300,8 @@
CHARACTER JOBZ, RNGTGK CHARACTER JOBZ, RNGTGK
LOGICAL ALLS, INDS, LQUERY, VALS, WANTU, WANTVT LOGICAL ALLS, INDS, LQUERY, VALS, WANTU, WANTVT
INTEGER I, ID, IE, IERR, ILQF, ILTGK, IQRF, ISCL, INTEGER I, ID, IE, IERR, ILQF, ILTGK, IQRF, ISCL,
$ ITAU, ITAUP, ITAUQ, ITEMP, ITGKZ, IUTGK, $ ITAU, ITAUP, ITAUQ, ITEMP, ITEMPR, ITGKZ,
$ J, K, MAXWRK, MINMN, MINWRK, MNTHR $ IUTGK, J, K, MAXWRK, MINMN, MINWRK, MNTHR
REAL ABSTOL, ANRM, BIGNUM, EPS, SMLNUM REAL ABSTOL, ANRM, BIGNUM, EPS, SMLNUM
* .. * ..
* .. Local Arrays .. * .. Local Arrays ..
@ -367,8 +373,14 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
IF( WANTU .AND. LDU.LT.M ) THEN IF( WANTU .AND. LDU.LT.M ) THEN
INFO = -15 INFO = -15
ELSE IF( WANTVT .AND. LDVT.LT.MINMN ) THEN ELSE IF( WANTVT ) THEN
INFO = -16 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 END IF
END IF END IF
@ -390,18 +402,24 @@
* *
* Path 1 (M much larger than N) * Path 1 (M much larger than N)
* *
MAXWRK = N + N* MINWRK = N*(N+5)
$ ILAENV( 1, 'SGEQRF', ' ', M, N, -1, -1 ) MAXWRK = N + N*ILAENV(1,'CGEQRF',' ',M,N,-1,-1)
MAXWRK = MAX( MAXWRK, N*N + N + 2*N* MAXWRK = MAX(MAXWRK,
$ ILAENV( 1, 'SGEBRD', ' ', N, N, -1, -1 ) ) $ N*N+2*N+2*N*ILAENV(1,'CGEBRD',' ',N,N,-1,-1))
MINWRK = N*(N+4) IF (WANTU .OR. WANTVT) THEN
MAXWRK = MAX(MAXWRK,
$ N*N+2*N+N*ILAENV(1,'CUNMQR','LN',N,N,N,-1))
END IF
ELSE ELSE
* *
* Path 2 (M at least N, but not much larger) * Path 2 (M at least N, but not much larger)
* *
MAXWRK = 2*N + ( M+N )* MINWRK = 3*N + M
$ ILAENV( 1, 'CGEBRD', ' ', M, N, -1, -1 ) MAXWRK = 2*N + (M+N)*ILAENV(1,'CGEBRD',' ',M,N,-1,-1)
MINWRK = 2*N + M IF (WANTU .OR. WANTVT) THEN
MAXWRK = MAX(MAXWRK,
$ 2*N+N*ILAENV(1,'CUNMQR','LN',N,N,N,-1))
END IF
END IF END IF
ELSE ELSE
MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 ) MNTHR = ILAENV( 6, 'CGESVD', JOBU // JOBVT, M, N, 0, 0 )
@ -409,18 +427,25 @@
* *
* Path 1t (N much larger than M) * Path 1t (N much larger than M)
* *
MAXWRK = M + M* MINWRK = M*(M+5)
$ ILAENV( 1, 'CGELQF', ' ', M, N, -1, -1 ) MAXWRK = M + M*ILAENV(1,'CGELQF',' ',M,N,-1,-1)
MAXWRK = MAX( MAXWRK, M*M + M + 2*M* MAXWRK = MAX(MAXWRK,
$ ILAENV( 1, 'CGEBRD', ' ', M, M, -1, -1 ) ) $ M*M+2*M+2*M*ILAENV(1,'CGEBRD',' ',M,M,-1,-1))
MINWRK = M*(M+4) IF (WANTU .OR. WANTVT) THEN
MAXWRK = MAX(MAXWRK,
$ M*M+2*M+M*ILAENV(1,'CUNMQR','LN',M,M,M,-1))
END IF
ELSE ELSE
* *
* Path 2t (N greater than M, but not much larger) * 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 = 3*M + N
MINWRK = 2*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 END IF
END IF END IF
@ -447,8 +472,6 @@
* *
* Set singular values indices accord to RANGE='A'. * Set singular values indices accord to RANGE='A'.
* *
ALLS = LSAME( RANGE, 'A' )
INDS = LSAME( RANGE, 'I' )
IF( ALLS ) THEN IF( ALLS ) THEN
RNGTGK = 'I' RNGTGK = 'I'
ILTGK = 1 ILTGK = 1
@ -518,14 +541,14 @@
CALL CGEBRD( N, N, WORK( IQRF ), N, RWORK( ID ), CALL CGEBRD( N, N, WORK( IQRF ), N, RWORK( ID ),
$ RWORK( IE ), WORK( ITAUQ ), WORK( ITAUP ), $ RWORK( IE ), WORK( ITAUQ ), WORK( ITAUP ),
$ WORK( ITEMP ), LWORK-ITEMP+1, INFO ) $ 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. * Solve eigenvalue problem TGK*Z=Z*S.
* (Workspace: need 2*N*N+14*N) * (Workspace: need 2*N*N+14*N)
* *
CALL SBDSVDX( 'U', JOBZ, RNGTGK, N, RWORK( ID ), CALL SBDSVDX( 'U', JOBZ, RNGTGK, N, RWORK( ID ),
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S, $ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
$ RWORK( ITGKZ ), N*2, RWORK( ITEMP ), $ RWORK( ITGKZ ), N*2, RWORK( ITEMPR ),
$ IWORK, INFO) $ IWORK, INFO)
* *
* If needed, compute left singular vectors. * If needed, compute left singular vectors.
@ -539,7 +562,7 @@
END DO END DO
K = K + N K = K + N
END DO 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. * Call CUNMBR to compute QB*UB.
* (Workspace in WORK( ITEMP ): need N, prefer N*NB) * (Workspace in WORK( ITEMP ): need N, prefer N*NB)
@ -594,14 +617,14 @@
CALL CGEBRD( M, N, A, LDA, RWORK( ID ), RWORK( IE ), CALL CGEBRD( M, N, A, LDA, RWORK( ID ), RWORK( IE ),
$ WORK( ITAUQ ), WORK( ITAUP ), WORK( ITEMP ), $ WORK( ITAUQ ), WORK( ITAUP ), WORK( ITEMP ),
$ LWORK-ITEMP+1, INFO ) $ LWORK-ITEMP+1, INFO )
ITEMP = ITGKZ + N*(N*2+1) ITEMPR = ITGKZ + N*(N*2+1)
* *
* Solve eigenvalue problem TGK*Z=Z*S. * Solve eigenvalue problem TGK*Z=Z*S.
* (Workspace: need 2*N*N+14*N) * (Workspace: need 2*N*N+14*N)
* *
CALL SBDSVDX( 'U', JOBZ, RNGTGK, N, RWORK( ID ), CALL SBDSVDX( 'U', JOBZ, RNGTGK, N, RWORK( ID ),
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S, $ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
$ RWORK( ITGKZ ), N*2, RWORK( ITEMP ), $ RWORK( ITGKZ ), N*2, RWORK( ITEMPR ),
$ IWORK, INFO) $ IWORK, INFO)
* *
* If needed, compute left singular vectors. * If needed, compute left singular vectors.
@ -615,7 +638,7 @@
END DO END DO
K = K + N K = K + N
END DO 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. * Call CUNMBR to compute QB*UB.
* (Workspace in WORK( ITEMP ): need N, prefer N*NB) * (Workspace in WORK( ITEMP ): need N, prefer N*NB)
@ -681,14 +704,14 @@
CALL CGEBRD( M, M, WORK( ILQF ), M, RWORK( ID ), CALL CGEBRD( M, M, WORK( ILQF ), M, RWORK( ID ),
$ RWORK( IE ), WORK( ITAUQ ), WORK( ITAUP ), $ RWORK( IE ), WORK( ITAUQ ), WORK( ITAUP ),
$ WORK( ITEMP ), LWORK-ITEMP+1, INFO ) $ 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. * Solve eigenvalue problem TGK*Z=Z*S.
* (Workspace: need 2*M*M+14*M) * (Workspace: need 2*M*M+14*M)
* *
CALL SBDSVDX( 'U', JOBZ, RNGTGK, M, RWORK( ID ), CALL SBDSVDX( 'U', JOBZ, RNGTGK, M, RWORK( ID ),
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S, $ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
$ RWORK( ITGKZ ), M*2, RWORK( ITEMP ), $ RWORK( ITGKZ ), M*2, RWORK( ITEMPR ),
$ IWORK, INFO) $ IWORK, INFO)
* *
* If needed, compute left singular vectors. * If needed, compute left singular vectors.
@ -722,7 +745,7 @@
END DO END DO
K = K + M K = K + M
END DO END DO
CALL CLASET( 'A', M, N-M, CZERO, CZERO, CALL CLASET( 'A', NS, N-M, CZERO, CZERO,
$ VT( 1,M+1 ), LDVT ) $ VT( 1,M+1 ), LDVT )
* *
* Call CUNMBR to compute (VB**T)*(PB**T) * Call CUNMBR to compute (VB**T)*(PB**T)
@ -758,14 +781,14 @@
CALL CGEBRD( M, N, A, LDA, RWORK( ID ), RWORK( IE ), CALL CGEBRD( M, N, A, LDA, RWORK( ID ), RWORK( IE ),
$ WORK( ITAUQ ), WORK( ITAUP ), WORK( ITEMP ), $ WORK( ITAUQ ), WORK( ITAUP ), WORK( ITEMP ),
$ LWORK-ITEMP+1, INFO ) $ LWORK-ITEMP+1, INFO )
ITEMP = ITGKZ + M*(M*2+1) ITEMPR = ITGKZ + M*(M*2+1)
* *
* Solve eigenvalue problem TGK*Z=Z*S. * Solve eigenvalue problem TGK*Z=Z*S.
* (Workspace: need 2*M*M+14*M) * (Workspace: need 2*M*M+14*M)
* *
CALL SBDSVDX( 'L', JOBZ, RNGTGK, M, RWORK( ID ), CALL SBDSVDX( 'L', JOBZ, RNGTGK, M, RWORK( ID ),
$ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S, $ RWORK( IE ), VL, VU, ILTGK, IUTGK, NS, S,
$ RWORK( ITGKZ ), M*2, RWORK( ITEMP ), $ RWORK( ITGKZ ), M*2, RWORK( ITEMPR ),
$ IWORK, INFO) $ IWORK, INFO)
* *
* If needed, compute left singular vectors. * If needed, compute left singular vectors.
@ -799,7 +822,7 @@
END DO END DO
K = K + M K = K + M
END DO END DO
CALL CLASET( 'A', M, N-M, CZERO, CZERO, CALL CLASET( 'A', NS, N-M, CZERO, CZERO,
$ VT( 1,M+1 ), LDVT ) $ VT( 1,M+1 ), LDVT )
* *
* Call CUNMBR to compute VB**T * PB**T * Call CUNMBR to compute VB**T * PB**T

View File

@ -205,6 +205,7 @@
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] CWORK *> \param[in,out] CWORK
*> \verbatim
*> CWORK is COMPLEX array, dimension M+N. *> CWORK is COMPLEX array, dimension M+N.
*> Used as work space. *> Used as work space.
*> \endverbatim *> \endverbatim
@ -213,8 +214,10 @@
*> \verbatim *> \verbatim
*> LWORK is INTEGER *> LWORK is INTEGER
*> Length of CWORK, LWORK >= M+N. *> Length of CWORK, LWORK >= M+N.
*> \endverbatim
*> *>
*> \param[in,out] RWORK *> \param[in,out] RWORK
*> \verbatim
*> RWORK is REAL array, dimension max(6,M+N). *> RWORK is REAL array, dimension max(6,M+N).
*> On entry, *> On entry,
*> If JOBU .EQ. 'C' : *> If JOBU .EQ. 'C' :
@ -244,6 +247,7 @@
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] LRWORK *> \param[in] LRWORK
*> \verbatim
*> LRWORK is INTEGER *> LRWORK is INTEGER
*> Length of RWORK, LRWORK >= MAX(6,N). *> Length of RWORK, LRWORK >= MAX(6,N).
*> \endverbatim *> \endverbatim
@ -266,7 +270,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexGEcomputational *> \ingroup complexGEcomputational
* *
@ -326,10 +330,10 @@
SUBROUTINE CGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V, SUBROUTINE CGESVJ( JOBA, JOBU, JOBV, M, N, A, LDA, SVA, MV, V,
$ LDV, CWORK, LWORK, RWORK, LRWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
IMPLICIT NONE IMPLICIT NONE
* .. Scalar Arguments .. * .. Scalar Arguments ..
@ -387,7 +391,7 @@
* from BLAS * from BLAS
EXTERNAL CCOPY, CROT, CSSCAL, CSWAP EXTERNAL CCOPY, CROT, CSSCAL, CSWAP
* from LAPACK * from LAPACK
EXTERNAL CLASCL, CLASET, CLASSQ, XERBLA EXTERNAL CLASCL, CLASET, CLASSQ, SLASCL, XERBLA
EXTERNAL CGSVJ0, CGSVJ1 EXTERNAL CGSVJ0, CGSVJ1
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
@ -889,7 +893,6 @@
END IF END IF
END IF END IF
* *
OMPQ = AAPQ / ABS(AAPQ)
* AAPQ = AAPQ * CONJG( CWORK(p) ) * CWORK(q) * AAPQ = AAPQ * CONJG( CWORK(p) ) * CWORK(q)
AAPQ1 = -ABS(AAPQ) AAPQ1 = -ABS(AAPQ)
MXAAPQ = AMAX1( MXAAPQ, -AAPQ1 ) MXAAPQ = AMAX1( MXAAPQ, -AAPQ1 )
@ -909,6 +912,7 @@
* *
IF( ROTOK ) THEN IF( ROTOK ) THEN
* *
OMPQ = AAPQ / ABS(AAPQ)
AQOAP = AAQQ / AAPP AQOAP = AAQQ / AAPP
APOAQ = AAPP / AAQQ APOAQ = AAPP / AAQQ
THETA = -HALF*ABS( AQOAP-APOAQ )/AAPQ1 THETA = -HALF*ABS( AQOAP-APOAQ )/AAPQ1
@ -1110,7 +1114,6 @@
END IF END IF
END IF END IF
* *
OMPQ = AAPQ / ABS(AAPQ)
* AAPQ = AAPQ * CONJG(CWORK(p))*CWORK(q) * AAPQ = AAPQ * CONJG(CWORK(p))*CWORK(q)
AAPQ1 = -ABS(AAPQ) AAPQ1 = -ABS(AAPQ)
MXAAPQ = AMAX1( MXAAPQ, -AAPQ1 ) MXAAPQ = AMAX1( MXAAPQ, -AAPQ1 )
@ -1125,6 +1128,7 @@
* *
IF( ROTOK ) THEN IF( ROTOK ) THEN
* *
OMPQ = AAPQ / ABS(AAPQ)
AQOAP = AAQQ / AAPP AQOAP = AAQQ / AAPP
APOAQ = AAPP / AAQQ APOAQ = AAPP / AAQQ
THETA = -HALF*ABS( AQOAP-APOAQ )/ AAPQ1 THETA = -HALF*ABS( AQOAP-APOAQ )/ AAPQ1

View File

@ -98,7 +98,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup complexGEauxiliary *> \ingroup complexGEauxiliary
* *
@ -111,10 +111,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE CGETC2( N, A, LDA, IPIV, JPIV, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, N INTEGER INFO, LDA, N

View File

@ -37,7 +37,7 @@
*> the matrix into four submatrices: *> the matrix into four submatrices:
*> *>
*> [ A11 | A12 ] where A11 is n1 by n1 and A22 is n2 by n2 *> [ 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 *> [ A21 | A22 ] n2 = n-n1
*> *>
*> [ A11 ] *> [ A11 ]
@ -106,17 +106,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexGEcomputational *> \ingroup complexGEcomputational
* *
* ===================================================================== * =====================================================================
RECURSIVE SUBROUTINE CGETRF2( M, N, A, LDA, IPIV, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N INTEGER INFO, LDA, M, N

View File

@ -269,7 +269,7 @@
$ LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, $ LDB, SDIM, ALPHA, BETA, VSL, LDVSL, VSR, LDVSR,
$ WORK, LWORK, RWORK, BWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* January 2015 * January 2015
@ -394,7 +394,7 @@
LWKOPT = MAX( LWKOPT, N + INT ( WORK( 1 ) ) ) LWKOPT = MAX( LWKOPT, N + INT ( WORK( 1 ) ) )
CALL CHGEQZ( 'S', JOBVSL, JOBVSR, N, 1, N, A, LDA, B, LDB, CALL CHGEQZ( 'S', JOBVSL, JOBVSR, N, 1, N, A, LDA, B, LDB,
$ ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, -1, $ ALPHA, BETA, VSL, LDVSL, VSR, LDVSR, WORK, -1,
$ WORK, IERR ) $ RWORK, IERR )
LWKOPT = MAX( LWKOPT, INT ( WORK( 1 ) ) ) LWKOPT = MAX( LWKOPT, INT ( WORK( 1 ) ) )
IF( WANTST ) THEN IF( WANTST ) THEN
CALL CTGSEN( 0, ILVSL, ILVSR, BWORK, N, A, LDA, B, LDB, CALL CTGSEN( 0, ILVSL, ILVSR, BWORK, N, A, LDA, B, LDB,

View File

@ -216,7 +216,7 @@
SUBROUTINE CGGEV3( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA, SUBROUTINE CGGEV3( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHA, BETA,
$ VL, LDVL, VR, LDVR, WORK, LWORK, RWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* January 2015 * January 2015

View File

@ -231,7 +231,7 @@
SUBROUTINE CGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, SUBROUTINE CGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
$ LDQ, Z, LDZ, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* January 2015 * January 2015
@ -282,7 +282,7 @@
* *
INFO = 0 INFO = 0
NB = ILAENV( 1, 'CGGHD3', ' ', N, ILO, IHI, -1 ) NB = ILAENV( 1, 'CGGHD3', ' ', N, ILO, IHI, -1 )
LWKOPT = 6*N*NB LWKOPT = MAX( 6*N*NB, 1 )
WORK( 1 ) = CMPLX( LWKOPT ) WORK( 1 ) = CMPLX( LWKOPT )
INITQ = LSAME( COMPQ, 'I' ) INITQ = LSAME( COMPQ, 'I' )
WANTQ = INITQ .OR. LSAME( COMPQ, 'V' ) WANTQ = INITQ .OR. LSAME( COMPQ, 'V' )

View File

@ -278,7 +278,7 @@
$ TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ, $ TOLA, TOLB, K, L, U, LDU, V, LDV, Q, LDQ,
$ IWORK, RWORK, TAU, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* August 2015 * August 2015
@ -308,7 +308,6 @@
* .. Local Scalars .. * .. Local Scalars ..
LOGICAL FORWRD, WANTQ, WANTU, WANTV, LQUERY LOGICAL FORWRD, WANTQ, WANTU, WANTV, LQUERY
INTEGER I, J, LWKOPT INTEGER I, J, LWKOPT
COMPLEX T
* .. * ..
* .. External Functions .. * .. External Functions ..
LOGICAL LSAME LOGICAL LSAME

View File

@ -1,4 +1,4 @@
*> \brief \b CGSVJ0 pre-processor for the routine sgesvj. *> \brief \b CGSVJ0 pre-processor for the routine cgesvj.
* *
* =========== DOCUMENTATION =========== * =========== DOCUMENTATION ===========
* *
@ -193,7 +193,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -218,10 +218,10 @@
SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS, SUBROUTINE CGSVJ0( JOBV, M, N, A, LDA, D, SVA, MV, V, LDV, EPS,
$ SFMIN, TOL, NSWEEP, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
IMPLICIT NONE IMPLICIT NONE
* .. Scalar Arguments .. * .. Scalar Arguments ..

View File

@ -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 =========== * =========== DOCUMENTATION ===========
* *
@ -105,7 +105,7 @@
*> *>
*> \param[in,out] A *> \param[in,out] A
*> \verbatim *> \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 *> On entry, M-by-N matrix A, such that A*diag(D) represents
*> the input matrix. *> the input matrix.
*> On exit, *> On exit,
@ -124,7 +124,7 @@
*> *>
*> \param[in,out] D *> \param[in,out] D
*> \verbatim *> \verbatim
*> D is REAL array, dimension (N) *> D is COMPLEX array, dimension (N)
*> The array D accumulates the scaling factors from the fast scaled *> The array D accumulates the scaling factors from the fast scaled
*> Jacobi rotations. *> Jacobi rotations.
*> On entry, A*diag(D) represents the input matrix. *> On entry, A*diag(D) represents the input matrix.
@ -154,7 +154,7 @@
*> *>
*> \param[in,out] V *> \param[in,out] V
*> \verbatim *> \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 *> If JOBV .EQ. 'V' then N rows of V are post-multipled by a
*> sequence of Jacobi rotations. *> sequence of Jacobi rotations.
*> If JOBV .EQ. 'A' then MV rows of V are post-multipled by a *> If JOBV .EQ. 'A' then MV rows of V are post-multipled by a
@ -223,7 +223,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -236,10 +236,10 @@
SUBROUTINE CGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, SUBROUTINE CGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV,
$ EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
REAL EPS, SFMIN, TOL REAL EPS, SFMIN, TOL

View File

@ -123,12 +123,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -136,13 +139,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -251,7 +258,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexOTHEReigen *> \ingroup complexOTHEReigen
* *
@ -260,10 +267,10 @@
$ VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, $ VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK,
$ IWORK, IFAIL, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -238,7 +238,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHEReigen *> \ingroup complexOTHEReigen
* *
@ -252,10 +252,10 @@
$ Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK, $ Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK,
$ LIWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, UPLO CHARACTER JOBZ, UPLO
@ -372,7 +372,7 @@
LLWK2 = LWORK - INDWK2 + 2 LLWK2 = LWORK - INDWK2 + 2
LLRWK = LRWORK - INDWRK + 2 LLRWK = LRWORK - INDWRK + 2
CALL CHBGST( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Z, LDZ, 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. * Reduce Hermitian band matrix to tridiagonal form.
* *

View File

@ -153,13 +153,17 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -167,14 +171,19 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> *>
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -277,7 +286,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHEReigen *> \ingroup complexOTHEReigen
* *
@ -291,10 +300,10 @@
$ LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, $ LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z,
$ LDZ, WORK, RWORK, IWORK, IFAIL, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -155,12 +155,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -168,13 +171,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -329,7 +336,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexHEeigen *> \ingroup complexHEeigen
* *
@ -348,10 +355,10 @@
$ ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, $ ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK,
$ RWORK, LRWORK, IWORK, LIWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -99,12 +99,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -112,13 +115,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -243,7 +250,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexHEeigen *> \ingroup complexHEeigen
* *
@ -252,10 +259,10 @@
$ ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK, $ ABSTOL, M, W, Z, LDZ, WORK, LWORK, RWORK,
$ IWORK, IFAIL, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -132,13 +132,17 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -146,14 +150,19 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> *>
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -284,7 +293,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexHEeigen *> \ingroup complexHEeigen
* *
@ -298,10 +307,10 @@
$ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, $ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK,
$ LWORK, RWORK, IWORK, IFAIL, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -150,7 +150,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup complexHEcomputational *> \ingroup complexHEcomputational
* *
@ -199,7 +199,7 @@
*> *>
*> \verbatim *> \verbatim
*> *>
*> November 2013, Igor Kozachenko, *> June 2016, Igor Kozachenko,
*> Computer Science Division, *> Computer Science Division,
*> University of California, Berkeley *> University of California, Berkeley
*> *>
@ -212,10 +212,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE CHETRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER UPLO CHARACTER UPLO
@ -265,7 +265,7 @@
* Determine the block size * Determine the block size
* *
NB = ILAENV( 1, 'CHETRF_ROOK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CHETRF_ROOK', UPLO, N, -1, -1, -1 )
LWKOPT = N*NB LWKOPT = MAX( 1, N*NB )
WORK( 1 ) = LWKOPT WORK( 1 ) = LWKOPT
END IF END IF
* *

View File

@ -190,12 +190,12 @@
*> \param[in,out] Q *> \param[in,out] Q
*> \verbatim *> \verbatim
*> Q is COMPLEX array, dimension (LDQ, N) *> 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. *> reduction of (A,B) to generalized Hessenberg form.
*> On exit, if COMPZ = 'I', the unitary matrix of left Schur *> On exit, if COMPQ = 'I', the unitary matrix of left Schur
*> vectors of (H,T), and if COMPZ = 'V', the unitary matrix of *> vectors of (H,T), and if COMPQ = 'V', the unitary matrix of
*> left Schur vectors of (A,B). *> left Schur vectors of (A,B).
*> Not referenced if COMPZ = 'N'. *> Not referenced if COMPQ = 'N'.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] LDQ *> \param[in] LDQ
@ -284,7 +284,7 @@
$ ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK, $ ALPHA, BETA, Q, LDQ, Z, LDZ, WORK, LWORK,
$ RWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* April 2012 * April 2012

View File

@ -97,12 +97,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -110,13 +113,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -224,7 +231,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexOTHEReigen *> \ingroup complexOTHEReigen
* *
@ -233,10 +240,10 @@
$ ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK, $ ABSTOL, M, W, Z, LDZ, WORK, RWORK, IWORK,
$ IFAIL, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -118,13 +118,17 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -132,14 +136,19 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> *>
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -254,7 +263,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHEReigen *> \ingroup complexOTHEReigen
* *
@ -268,10 +277,10 @@
$ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK, $ IL, IU, ABSTOL, M, W, Z, LDZ, WORK, RWORK,
$ IWORK, IFAIL, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE, UPLO CHARACTER JOBZ, RANGE, UPLO

View File

@ -107,7 +107,7 @@
*> *>
*> \param[in] AB *> \param[in] AB
*> \verbatim *> \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 *> Before entry, the leading m by n part of the array AB must
*> contain the matrix of coefficients. *> contain the matrix of coefficients.
*> Unchanged on exit. *> Unchanged on exit.
@ -124,7 +124,7 @@
*> *>
*> \param[in] X *> \param[in] X
*> \verbatim *> \verbatim
*> X is REAL array, dimension *> X is COMPLEX array, dimension
*> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n' *> ( 1 + ( n - 1 )*abs( INCX ) ) when TRANS = 'N' or 'n'
*> and at least *> and at least
*> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise. *> ( 1 + ( m - 1 )*abs( INCX ) ) otherwise.
@ -178,7 +178,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexGBcomputational *> \ingroup complexGBcomputational
* *
@ -186,10 +186,10 @@
SUBROUTINE CLA_GBAMV( TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X, SUBROUTINE CLA_GBAMV( TRANS, M, N, KL, KU, ALPHA, AB, LDAB, X,
$ INCX, BETA, Y, INCY ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
REAL ALPHA, BETA REAL ALPHA, BETA

View File

@ -104,7 +104,7 @@
*> *>
*> \param[in] WORK *> \param[in] WORK
*> \verbatim *> \verbatim
*> WORK is COMPLEX array, dimension (2*N) *> WORK is REAL array, dimension (2*N)
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:
@ -115,7 +115,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexHEcomputational *> \ingroup complexHEcomputational
* *
@ -123,10 +123,10 @@
REAL FUNCTION CLA_HERPVGRW( UPLO, N, INFO, A, LDA, AF, LDAF, IPIV, REAL FUNCTION CLA_HERPVGRW( UPLO, N, INFO, A, LDA, AF, LDAF, IPIV,
$ WORK ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER*1 UPLO CHARACTER*1 UPLO

View File

@ -67,7 +67,7 @@
*> *>
*> \param[in] RES *> \param[in] RES
*> \verbatim *> \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 *> The residual matrix, i.e., the matrix R in the relative backward
*> error formula above. *> error formula above.
*> \endverbatim *> \endverbatim
@ -82,7 +82,7 @@
*> *>
*> \param[out] BERR *> \param[out] BERR
*> \verbatim *> \verbatim
*> BERR is COMPLEX array, dimension (NRHS) *> BERR is REAL array, dimension (NRHS)
*> The componentwise relative backward error from the formula above. *> The componentwise relative backward error from the formula above.
*> \endverbatim *> \endverbatim
* *
@ -94,17 +94,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE CLA_LIN_BERR ( N, NZ, NRHS, RES, AYB, BERR ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER N, NZ, NRHS INTEGER N, NZ, NRHS

View File

@ -38,7 +38,7 @@
*> \verbatim *> \verbatim
*> *>
*> CLA_PORCOND_C Computes the infinity norm condition number of *> 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 *> \endverbatim
* *
* Arguments: * Arguments:
@ -122,7 +122,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexPOcomputational *> \ingroup complexPOcomputational
* *
@ -130,10 +130,10 @@
REAL FUNCTION CLA_PORCOND_C( UPLO, N, A, LDA, AF, LDAF, C, CAPPLY, REAL FUNCTION CLA_PORCOND_C( UPLO, N, A, LDA, AF, LDAF, C, CAPPLY,
$ INFO, WORK, RWORK ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER UPLO CHARACTER UPLO

View File

@ -87,7 +87,7 @@
*> *>
*> \param[in] WORK *> \param[in] WORK
*> \verbatim *> \verbatim
*> WORK is COMPLEX array, dimension (2*N) *> WORK is REAL array, dimension (2*N)
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:
@ -98,17 +98,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexPOcomputational *> \ingroup complexPOcomputational
* *
* ===================================================================== * =====================================================================
REAL FUNCTION CLA_PORPVGRW( UPLO, NCOLS, A, LDA, AF, LDAF, WORK ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER*1 UPLO CHARACTER*1 UPLO

View File

@ -57,7 +57,7 @@
*> *>
*> The first stage consists of deflating the size of the problem *> The first stage consists of deflating the size of the problem
*> when there are multiple eigenvalues or if there is a zero in *> 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 *> secular equation problem is reduced by one. This stage is
*> performed by the routine SLAED2. *> performed by the routine SLAED2.
*> *>
@ -239,7 +239,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -249,10 +249,10 @@
$ GIVPTR, GIVCOL, GIVNUM, WORK, RWORK, IWORK, $ GIVPTR, GIVCOL, GIVNUM, WORK, RWORK, IWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER CURLVL, CURPBM, CUTPNT, INFO, LDQ, N, QSIZ, INTEGER CURLVL, CURPBM, CUTPNT, INFO, LDQ, N, QSIZ,

View File

@ -137,7 +137,7 @@
*> Z is COMPLEX array, dimension (LDZ,N) *> Z is COMPLEX array, dimension (LDZ,N)
*> IF WANTZ is .TRUE., then on output, the unitary *> IF WANTZ is .TRUE., then on output, the unitary
*> similarity transformation mentioned above has been *> 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. *> If WANTZ is .FALSE., then Z is unreferenced.
*> \endverbatim *> \endverbatim
*> *>
@ -251,7 +251,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERauxiliary *> \ingroup complexOTHERauxiliary
* *
@ -266,10 +266,10 @@
$ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT, $ IHIZ, Z, LDZ, NS, ND, SH, V, LDV, NH, T, LDT,
$ NV, WV, LDWV, WORK, LWORK ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV, INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,

View File

@ -142,10 +142,10 @@
*> *>
*> \param[in,out] Z *> \param[in,out] Z
*> \verbatim *> \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 *> If WANTZ = .TRUE., then the QR Sweep unitary
*> similarity transformation is accumulated into *> 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. *> If WANTZ = .FALSE., then Z is unreferenced.
*> \endverbatim *> \endverbatim
*> *>
@ -228,7 +228,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERauxiliary *> \ingroup complexOTHERauxiliary
* *
@ -251,10 +251,10 @@
$ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV, $ H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, LDU, NV,
$ WV, LDWV, NH, WH, LDWH ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,

View File

@ -72,7 +72,7 @@
*> *>
*> \param[in] B *> \param[in] B
*> \verbatim *> \verbatim
*> B is REAL array, dimension (LDB, N) *> B is COMPLEX array, dimension (LDB, N)
*> B contains the M by N matrix B. *> B contains the M by N matrix B.
*> \endverbatim *> \endverbatim
*> *>
@ -107,17 +107,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERauxiliary *> \ingroup complexOTHERauxiliary
* *
* ===================================================================== * =====================================================================
SUBROUTINE CLARCM( M, N, A, LDA, B, LDB, C, LDC, RWORK ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER LDA, LDB, LDC, M, N INTEGER LDA, LDB, LDC, M, N

View File

@ -59,12 +59,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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 *> eigenvalues. VL < VU. Needed to compute gaps on the left or right
*> end of the extremal eigenvalues in the desired RANGE. *> end of the extremal eigenvalues in the desired RANGE.
*> \endverbatim *> \endverbatim
@ -81,7 +84,7 @@
*> L is REAL array, dimension (N) *> L is REAL array, dimension (N)
*> On entry, the (N-1) subdiagonal elements of the unit *> On entry, the (N-1) subdiagonal elements of the unit
*> bidiagonal matrix L are in elements 1 to N-1 of L *> 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. *> is stored the corresponding shift as given by SLARRE.
*> On exit, L is overwritten. *> On exit, L is overwritten.
*> \endverbatim *> \endverbatim
@ -236,7 +239,7 @@
*> INFO is INTEGER *> INFO is INTEGER
*> = 0: successful exit *> = 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. *> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO *> Needs inspection of the corresponding parameter IINFO
*> for further information. *> for further information.
@ -263,7 +266,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHERauxiliary *> \ingroup complexOTHERauxiliary
* *
@ -283,10 +286,10 @@
$ IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ, $ IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ,
$ WORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER DOL, DOU, INFO, LDZ, M, N INTEGER DOL, DOU, INFO, LDZ, M, N

View File

@ -73,7 +73,7 @@
*> \param[in] LDX *> \param[in] LDX
*> \verbatim *> \verbatim
*> LDX is INTEGER *> LDX is INTEGER
*> The leading dimension of the vector X. LDX >= 0. *> The leading dimension of the vector X. LDX >= M.
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:
@ -84,17 +84,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE CLARSCL2 ( M, N, D, X, LDX ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER M, N, LDX INTEGER M, N, LDX

View File

@ -114,7 +114,11 @@
*> \param[in] LDA *> \param[in] LDA
*> \verbatim *> \verbatim
*> LDA is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[out] INFO *> \param[out] INFO
@ -132,17 +136,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERauxiliary *> \ingroup complexOTHERauxiliary
* *
* ===================================================================== * =====================================================================
SUBROUTINE CLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER TYPE CHARACTER TYPE

View File

@ -73,7 +73,7 @@
*> \param[in] LDX *> \param[in] LDX
*> \verbatim *> \verbatim
*> LDX is INTEGER *> LDX is INTEGER
*> The leading dimension of the vector X. LDX >= 0. *> The leading dimension of the vector X. LDX >= M.
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:
@ -84,17 +84,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE CLASCL2 ( M, N, D, X, LDX ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER M, N, LDX INTEGER M, N, LDX

View File

@ -58,7 +58,7 @@
*> Zx = +-e - f with the sign giving the greater value of *> Zx = +-e - f with the sign giving the greater value of
*> 2-norm(x). About 5 times as expensive as Default. *> 2-norm(x). About 5 times as expensive as Default.
*> IJOB .ne. 2: Local look ahead strategy where *> 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. *> -1. Default.
*> \endverbatim *> \endverbatim
*> *>
@ -70,7 +70,7 @@
*> *>
*> \param[in] Z *> \param[in] Z
*> \verbatim *> \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 *> On entry, the LU part of the factorization of the n-by-n
*> matrix Z computed by CGETC2: Z = P * L * U * Q *> matrix Z computed by CGETC2: Z = P * L * U * Q
*> \endverbatim *> \endverbatim
@ -83,7 +83,7 @@
*> *>
*> \param[in,out] RHS *> \param[in,out] RHS
*> \verbatim *> \verbatim
*> RHS is REAL array, dimension (N). *> RHS is COMPLEX array, dimension (N).
*> On entry, RHS contains contributions from other subsystems. *> On entry, RHS contains contributions from other subsystems.
*> On exit, RHS contains the solution of the subsystem with *> On exit, RHS contains the solution of the subsystem with
*> entries according to the value of IJOB (see above). *> entries according to the value of IJOB (see above).
@ -134,7 +134,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERauxiliary *> \ingroup complexOTHERauxiliary
* *
@ -169,10 +169,10 @@
SUBROUTINE CLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV, SUBROUTINE CLATDF( IJOB, N, Z, LDZ, RHS, RDSUM, RDSCAL, IPIV,
$ JPIV ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER IJOB, LDZ, N INTEGER IJOB, LDZ, N

View File

@ -62,7 +62,7 @@
*> *>
*> \param[in,out] A *> \param[in,out] A
*> \verbatim *> \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 *> On entry, the symmetric matrix A. If UPLO = 'U', the leading
*> N-by-N upper triangular part of A contains the upper *> N-by-N upper triangular part of A contains the upper
*> triangular part of the matrix A, and the strictly lower *> triangular part of the matrix A, and the strictly lower
@ -99,17 +99,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexPOcomputational *> \ingroup complexPOcomputational
* *
* ===================================================================== * =====================================================================
RECURSIVE SUBROUTINE CPOTRF2( UPLO, N, A, LDA, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER UPLO CHARACTER UPLO

View File

@ -87,7 +87,7 @@
*> *>
*> \param[in,out] B *> \param[in,out] B
*> \verbatim *> \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 *> On entry, the right hand side vectors B for the system of
*> linear equations. *> linear equations.
*> On exit, the solution vectors, X. *> On exit, the solution vectors, X.
@ -114,17 +114,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexPTcomputational *> \ingroup complexPTcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE CPTTRS( UPLO, N, NRHS, D, E, B, LDB, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER UPLO CHARACTER UPLO

View File

@ -86,7 +86,7 @@
*> *>
*> \param[in,out] B *> \param[in,out] B
*> \verbatim *> \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 *> On entry, the right hand side vectors B for the system of
*> linear equations. *> linear equations.
*> On exit, the solution vectors, X. *> On exit, the solution vectors, X.
@ -106,17 +106,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexPTcomputational *> \ingroup complexPTcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE CPTTS2( IUPLO, N, NRHS, D, E, B, LDB ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER IUPLO, LDB, N, NRHS INTEGER IUPLO, LDB, N, NRHS

View File

@ -48,7 +48,7 @@
*> either an interval (VL,VU] or a range of indices IL:IU for the desired *> either an interval (VL,VU] or a range of indices IL:IU for the desired
*> eigenvalues. *> 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. *> See SSTEMR for further details.
*> *>
*> One important change is that the ABSTOL parameter no longer provides any *> One important change is that the ABSTOL parameter no longer provides any
@ -105,13 +105,17 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -119,14 +123,19 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> *>
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0. *> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -240,7 +249,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -256,10 +265,10 @@
$ ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK, $ ABSTOL, M, W, Z, LDZ, ISUPPZ, WORK, LWORK, IWORK,
$ LIWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE CHARACTER JOBZ, RANGE

View File

@ -153,13 +153,17 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is REAL *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is REAL *> 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. *> be searched for eigenvalues. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -167,14 +171,19 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> *>
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0. *> 1 <= IL <= IU <= N, if N > 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -311,7 +320,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -329,10 +338,10 @@
$ M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK, $ M, W, Z, LDZ, NZC, ISUPPZ, TRYRAC, WORK, LWORK,
$ IWORK, LIWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBZ, RANGE CHARACTER JOBZ, RANGE

View File

@ -146,7 +146,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup complexSYcomputational *> \ingroup complexSYcomputational
* *
@ -195,7 +195,7 @@
*> *>
*> \verbatim *> \verbatim
*> *>
*> November 2015, Igor Kozachenko, *> June 2016, Igor Kozachenko,
*> Computer Science Division, *> Computer Science Division,
*> University of California, Berkeley *> University of California, Berkeley
*> *>
@ -208,10 +208,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE CSYTRF_ROOK( UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER UPLO CHARACTER UPLO
@ -261,7 +261,7 @@
* Determine the block size * Determine the block size
* *
NB = ILAENV( 1, 'CSYTRF_ROOK', UPLO, N, -1, -1, -1 ) NB = ILAENV( 1, 'CSYTRF_ROOK', UPLO, N, -1, -1, -1 )
LWKOPT = N*NB LWKOPT = MAX( 1, N*NB )
WORK( 1 ) = LWKOPT WORK( 1 ) = LWKOPT
END IF END IF
* *

View File

@ -290,7 +290,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -433,10 +433,10 @@
$ ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF, $ ALPHA, BETA, Q, LDQ, Z, LDZ, M, PL, PR, DIF,
$ WORK, LWORK, IWORK, LIWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
LOGICAL WANTQ, WANTZ LOGICAL WANTQ, WANTZ
@ -515,6 +515,7 @@
* subspaces. * subspaces.
* *
M = 0 M = 0
IF( .NOT.LQUERY .OR. IJOB.NE.0 ) THEN
DO 10 K = 1, N DO 10 K = 1, N
ALPHA( K ) = A( K, K ) ALPHA( K ) = A( K, K )
BETA( K ) = B( K, K ) BETA( K ) = B( K, K )
@ -526,6 +527,7 @@
$ M = M + 1 $ M = M + 1
END IF END IF
10 CONTINUE 10 CONTINUE
END IF
* *
IF( IJOB.EQ.1 .OR. IJOB.EQ.2 .OR. IJOB.EQ.4 ) THEN IF( IJOB.EQ.1 .OR. IJOB.EQ.2 .OR. IJOB.EQ.4 ) THEN
LWMIN = MAX( 1, 2*M*(N-M) ) LWMIN = MAX( 1, 2*M*(N-M) )

630
lapack-netlib/SRC/ctrevc3.f Normal file
View File

@ -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

View File

@ -81,7 +81,7 @@
*> *>
*> \param[out] ARF *> \param[out] ARF
*> \verbatim *> \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 *> On exit, the upper or lower triangular matrix A stored in
*> RFP format. For a further discussion see Notes below. *> RFP format. For a further discussion see Notes below.
*> \endverbatim *> \endverbatim
@ -101,7 +101,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -216,10 +216,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE CTRTTF( TRANSR, UPLO, N, A, LDA, ARF, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER TRANSR, UPLO CHARACTER TRANSR, UPLO

View File

@ -202,7 +202,7 @@
SUBROUTINE CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, SUBROUTINE CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI,
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* July 2012 * July 2012
@ -307,9 +307,8 @@
CALL CLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I), CALL CLARF( 'R', M-P-I, Q-I, X21(I,I+1), LDX21, TAUQ1(I),
$ X21(I+1,I+1), LDX21, WORK(ILARF) ) $ X21(I+1,I+1), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I, X21(I,I+1), LDX21 ) 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), C = SQRT( SCNRM2( P-I, X11(I+1,I+1), 1 )**2
$ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I+1), 1, X21(I+1,I+1), $ + SCNRM2( M-P-I, X21(I+1,I+1), 1 )**2 )
$ 1 )**2 )
PHI(I) = ATAN2( S, C ) PHI(I) = ATAN2( S, C )
CALL CUNBDB5( P-I, M-P-I, Q-I-1, X11(I+1,I+1), 1, 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, $ X21(I+1,I+1), 1, X11(I+1,I+2), LDX11,

View File

@ -202,7 +202,7 @@
SUBROUTINE CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, SUBROUTINE CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI,
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* July 2012 * July 2012
@ -296,8 +296,8 @@
CALL CLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I), CALL CLARF( 'R', M-P-I+1, Q-I+1, X11(I,I), LDX11, TAUQ1(I),
$ X21(I,I), LDX21, WORK(ILARF) ) $ X21(I,I), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I+1, X11(I,I), LDX11 ) CALL CLACGV( Q-I+1, X11(I,I), LDX11 )
S = SQRT( SCNRM2( P-I, X11(I+1,I), 1, X11(I+1,I), S = SQRT( SCNRM2( P-I, X11(I+1,I), 1 )**2
$ 1 )**2 + SCNRM2( M-P-I+1, X21(I,I), 1, X21(I,I), 1 )**2 ) $ + SCNRM2( M-P-I+1, X21(I,I), 1 )**2 )
THETA(I) = ATAN2( S, C ) THETA(I) = ATAN2( S, C )
* *
CALL CUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1, CALL CUNBDB5( P-I, M-P-I+1, Q-I, X11(I+1,I), 1, X21(I,I), 1,

View File

@ -202,7 +202,7 @@
SUBROUTINE CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI, SUBROUTINE CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, PHI,
$ TAUP1, TAUP2, TAUQ1, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* July 2012 * July 2012
@ -296,8 +296,8 @@
CALL CLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I), CALL CLARF( 'R', M-P-I, Q-I+1, X21(I,I), LDX21, TAUQ1(I),
$ X21(I+1,I), LDX21, WORK(ILARF) ) $ X21(I+1,I), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I+1, X21(I,I), LDX21 ) CALL CLACGV( Q-I+1, X21(I,I), LDX21 )
C = SQRT( SCNRM2( P-I+1, X11(I,I), 1, X11(I,I), C = SQRT( SCNRM2( P-I+1, X11(I,I), 1 )**2
$ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), 1 )**2 ) $ + SCNRM2( M-P-I, X21(I+1,I), 1 )**2 )
THETA(I) = ATAN2( S, C ) THETA(I) = ATAN2( S, C )
* *
CALL CUNBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1, CALL CUNBDB5( P-I+1, M-P-I, Q-I, X11(I,I), 1, X21(I+1,I), 1,

View File

@ -213,7 +213,7 @@
$ TAUP1, TAUP2, TAUQ1, PHANTOM, WORK, LWORK, $ TAUP1, TAUP2, TAUQ1, PHANTOM, WORK, LWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* July 2012 * July 2012
@ -344,9 +344,8 @@
$ X21(I+1,I), LDX21, WORK(ILARF) ) $ X21(I+1,I), LDX21, WORK(ILARF) )
CALL CLACGV( Q-I+1, X21(I,I), LDX21 ) CALL CLACGV( Q-I+1, X21(I,I), LDX21 )
IF( I .LT. M-Q ) THEN IF( I .LT. M-Q ) THEN
S = SQRT( SCNRM2( P-I, X11(I+1,I), 1, X11(I+1,I), S = SQRT( SCNRM2( P-I, X11(I+1,I), 1 )**2
$ 1 )**2 + SCNRM2( M-P-I, X21(I+1,I), 1, X21(I+1,I), $ + SCNRM2( M-P-I, X21(I+1,I), 1 )**2 )
$ 1 )**2 )
PHI(I) = ATAN2( S, C ) PHI(I) = ATAN2( S, C )
END IF END IF
* *

View File

@ -308,7 +308,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -320,10 +320,10 @@
$ LDV2T, WORK, LWORK, RWORK, LRWORK, $ LDV2T, WORK, LWORK, RWORK, LRWORK,
$ IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, SIGNS, TRANS CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, SIGNS, TRANS
@ -371,7 +371,7 @@
EXTERNAL LSAME EXTERNAL LSAME
* .. * ..
* .. Intrinsic Functions * .. Intrinsic Functions
INTRINSIC COS, INT, MAX, MIN, SIN INTRINSIC INT, MAX, MIN
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
@ -488,12 +488,12 @@
ITAUQ1 = ITAUP2 + MAX( 1, M - P ) ITAUQ1 = ITAUP2 + MAX( 1, M - P )
ITAUQ2 = ITAUQ1 + MAX( 1, Q ) ITAUQ2 = ITAUQ1 + MAX( 1, Q )
IORGQR = ITAUQ2 + MAX( 1, M - 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 ) $ CHILDINFO )
LORGQRWORKOPT = INT( WORK(1) ) LORGQRWORKOPT = INT( WORK(1) )
LORGQRWORKMIN = MAX( 1, M - Q ) LORGQRWORKMIN = MAX( 1, M - Q )
IORGLQ = ITAUQ2 + 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 ) $ CHILDINFO )
LORGLQWORKOPT = INT( WORK(1) ) LORGLQWORKOPT = INT( WORK(1) )
LORGLQWORKMIN = MAX( 1, M - Q ) LORGLQWORKMIN = MAX( 1, M - Q )

View File

@ -244,7 +244,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date July 2012 *> \date June 2016
* *
*> \ingroup complexOTHERcomputational *> \ingroup complexOTHERcomputational
* *
@ -254,10 +254,10 @@
$ LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK, $ LDV1T, WORK, LWORK, RWORK, LRWORK, IWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* July 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBU1, JOBU2, JOBV1T CHARACTER JOBU1, JOBU2, JOBV1T
@ -288,6 +288,10 @@
$ LWORKMIN, LWORKOPT, R $ LWORKMIN, LWORKOPT, R
LOGICAL LQUERY, WANTU1, WANTU2, WANTV1T LOGICAL LQUERY, WANTU1, WANTU2, WANTV1T
* .. * ..
* .. Local Arrays ..
REAL DUM( 1 )
COMPLEX CDUM( 1, 1 )
* ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL CBBCSD, CCOPY, CLACPY, CLAPMR, CLAPMT, CUNBDB1, EXTERNAL CBBCSD, CCOPY, CLACPY, CLAPMR, CLAPMT, CUNBDB1,
$ CUNBDB2, CUNBDB3, CUNBDB4, CUNGLQ, CUNGQR, $ CUNBDB2, CUNBDB3, CUNBDB4, CUNGLQ, CUNGQR,
@ -320,11 +324,11 @@
INFO = -8 INFO = -8
ELSE IF( LDX21 .LT. MAX( 1, M-P ) ) THEN ELSE IF( LDX21 .LT. MAX( 1, M-P ) ) THEN
INFO = -10 INFO = -10
ELSE IF( WANTU1 .AND. LDU1 .LT. P ) THEN ELSE IF( WANTU1 .AND. LDU1 .LT. MAX( 1, P ) ) THEN
INFO = -13 INFO = -13
ELSE IF( WANTU2 .AND. LDU2 .LT. M - P ) THEN ELSE IF( WANTU2 .AND. LDU2 .LT. MAX( 1, M - P ) ) THEN
INFO = -15 INFO = -15
ELSE IF( WANTV1T .AND. LDV1T .LT. Q ) THEN ELSE IF( WANTV1T .AND. LDV1T .LT. MAX( 1, Q ) ) THEN
INFO = -17 INFO = -17
END IF END IF
* *
@ -380,99 +384,119 @@
IORBDB = ITAUQ1 + MAX( 1, Q ) IORBDB = ITAUQ1 + MAX( 1, Q )
IORGQR = ITAUQ1 + MAX( 1, Q ) IORGQR = ITAUQ1 + MAX( 1, Q )
IORGLQ = ITAUQ1 + MAX( 1, Q ) IORGLQ = ITAUQ1 + MAX( 1, Q )
LORGQRMIN = 1
LORGQROPT = 1
LORGLQMIN = 1
LORGLQOPT = 1
IF( R .EQ. Q ) THEN IF( R .EQ. Q ) THEN
CALL CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0, CALL CUNBDB1( M, P, Q, X11, LDX11, X21, LDX21, THETA,
$ 0, 0, WORK, -1, CHILDINFO ) $ DUM, CDUM, CDUM, CDUM, WORK, -1,
$ CHILDINFO )
LORBDB = INT( WORK(1) ) LORBDB = INT( WORK(1) )
IF( P .GE. M-P ) THEN IF( WANTU1 .AND. P .GT. 0 ) THEN
CALL CUNGQR( P, P, Q, U1, LDU1, 0, WORK(1), -1, CALL CUNGQR( P, P, Q, U1, LDU1, CDUM, WORK(1), -1,
$ CHILDINFO ) $ CHILDINFO )
LORGQRMIN = MAX( 1, P ) LORGQRMIN = MAX( LORGQRMIN, P )
LORGQROPT = INT( WORK(1) ) LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
ELSE ENDIF
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, 0, WORK(1), -1, IF( WANTU2 .AND. M-P .GT. 0 ) THEN
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, CDUM, WORK(1), -1,
$ CHILDINFO ) $ CHILDINFO )
LORGQRMIN = MAX( 1, M-P ) LORGQRMIN = MAX( LORGQRMIN, M-P )
LORGQROPT = INT( WORK(1) ) 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 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, CALL CBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA,
$ 0, U1, LDU1, U2, LDU2, V1T, LDV1T, 0, 1, 0, 0, $ DUM(1), U1, LDU1, U2, LDU2, V1T, LDV1T, CDUM,
$ 0, 0, 0, 0, 0, 0, RWORK(1), -1, CHILDINFO ) $ 1, DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
$ RWORK(1), -1, CHILDINFO )
LBBCSD = INT( RWORK(1) ) LBBCSD = INT( RWORK(1) )
ELSE IF( R .EQ. P ) THEN ELSE IF( R .EQ. P ) THEN
CALL CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0, CALL CUNBDB2( M, P, Q, X11, LDX11, X21, LDX21, THETA, DUM,
$ 0, 0, WORK(1), -1, CHILDINFO ) $ CDUM, CDUM, CDUM, WORK(1), -1, CHILDINFO )
LORBDB = INT( WORK(1) ) LORBDB = INT( WORK(1) )
IF( P-1 .GE. M-P ) THEN IF( WANTU1 .AND. P .GT. 0 ) THEN
CALL CUNGQR( P-1, P-1, P-1, U1(2,2), LDU1, 0, WORK(1), CALL CUNGQR( P-1, P-1, P-1, U1(2,2), LDU1, CDUM, WORK(1),
$ -1, CHILDINFO ) $ -1, CHILDINFO )
LORGQRMIN = MAX( 1, P-1 ) LORGQRMIN = MAX( LORGQRMIN, P-1 )
LORGQROPT = INT( WORK(1) ) LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
ELSE END IF
CALL CUNGQR( M-P, M-P, Q, U2, LDU2, 0, WORK(1), -1, IF( WANTU2 .AND. M-P .GT. 0 ) THEN
$ CHILDINFO ) CALL CUNGQR( M-P, M-P, Q, U2, LDU2, CDUM, WORK(1), -1,
LORGQRMIN = MAX( 1, M-P ) $ CHILDINFO )
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, R, V1T, LDV1T, CDUM, WORK(1), -1,
$ CHILDINFO )
LORGLQMIN = MAX( LORGLQMIN, Q )
LORGLQOPT = MAX( LORGLQOPT, INT( WORK(1) ) )
END IF 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, CALL CBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA,
$ 0, V1T, LDV1T, 0, 1, U1, LDU1, U2, LDU2, 0, 0, $ DUM, V1T, LDV1T, CDUM, 1, U1, LDU1, U2, LDU2,
$ 0, 0, 0, 0, 0, 0, RWORK(1), -1, CHILDINFO ) $ DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
$ RWORK(1), -1, CHILDINFO )
LBBCSD = INT( RWORK(1) ) LBBCSD = INT( RWORK(1) )
ELSE IF( R .EQ. M-P ) THEN ELSE IF( R .EQ. M-P ) THEN
CALL CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0, CALL CUNBDB3( M, P, Q, X11, LDX11, X21, LDX21, THETA, DUM,
$ 0, 0, WORK(1), -1, CHILDINFO ) $ CDUM, CDUM, CDUM, WORK(1), -1, CHILDINFO )
LORBDB = INT( WORK(1) ) LORBDB = INT( WORK(1) )
IF( P .GE. M-P-1 ) THEN IF( WANTU1 .AND. P .GT. 0 ) THEN
CALL CUNGQR( P, P, Q, U1, LDU1, 0, WORK(1), -1, CALL CUNGQR( P, P, Q, U1, LDU1, CDUM, WORK(1), -1,
$ CHILDINFO ) $ CHILDINFO )
LORGQRMIN = MAX( 1, P ) LORGQRMIN = MAX( LORGQRMIN, P )
LORGQROPT = INT( WORK(1) ) LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
ELSE END IF
CALL CUNGQR( M-P-1, M-P-1, M-P-1, U2(2,2), LDU2, 0, IF( WANTU2 .AND. M-P .GT. 0 ) THEN
$ WORK(1), -1, CHILDINFO ) CALL CUNGQR( M-P-1, M-P-1, M-P-1, U2(2,2), LDU2, CDUM,
LORGQRMIN = MAX( 1, M-P-1 ) $ WORK(1), -1, CHILDINFO )
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 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, CALL CBBCSD( 'N', JOBV1T, JOBU2, JOBU1, 'T', M, M-Q, M-P,
$ THETA, 0, 0, 1, V1T, LDV1T, U2, LDU2, U1, LDU1, $ THETA, DUM, CDUM, 1, V1T, LDV1T, U2, LDU2, U1,
$ 0, 0, 0, 0, 0, 0, 0, 0, RWORK(1), -1, $ LDU1, DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
$ CHILDINFO ) $ RWORK(1), -1, CHILDINFO )
LBBCSD = INT( RWORK(1) ) LBBCSD = INT( RWORK(1) )
ELSE ELSE
CALL CUNBDB4( M, P, Q, X11, LDX11, X21, LDX21, THETA, 0, 0, CALL CUNBDB4( M, P, Q, X11, LDX11, X21, LDX21, THETA, DUM,
$ 0, 0, 0, WORK(1), -1, CHILDINFO ) $ CDUM, CDUM, CDUM, CDUM, WORK(1), -1, CHILDINFO
$ )
LORBDB = M + INT( WORK(1) ) LORBDB = M + INT( WORK(1) )
IF( P .GE. M-P ) THEN IF( WANTU1 .AND. P .GT. 0 ) THEN
CALL CUNGQR( P, P, M-Q, U1, LDU1, 0, WORK(1), -1, CALL CUNGQR( P, P, M-Q, U1, LDU1, CDUM, WORK(1), -1,
$ CHILDINFO ) $ CHILDINFO )
LORGQRMIN = MAX( 1, P ) LORGQRMIN = MAX( LORGQRMIN, P )
LORGQROPT = INT( WORK(1) ) LORGQROPT = MAX( LORGQROPT, INT( WORK(1) ) )
ELSE END IF
CALL CUNGQR( M-P, M-P, M-Q, U2, LDU2, 0, WORK(1), -1, IF( WANTU2 .AND. M-P .GT. 0 ) THEN
$ CHILDINFO ) CALL CUNGQR( M-P, M-P, M-Q, U2, LDU2, CDUM, WORK(1), -1,
LORGQRMIN = MAX( 1, M-P ) $ CHILDINFO )
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 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, CALL CBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q,
$ THETA, 0, U2, LDU2, U1, LDU1, 0, 1, V1T, LDV1T, $ THETA, DUM, U2, LDU2, U1, LDU1, CDUM, 1, V1T,
$ 0, 0, 0, 0, 0, 0, 0, 0, RWORK(1), -1, $ LDV1T, DUM, DUM, DUM, DUM, DUM, DUM, DUM, DUM,
$ CHILDINFO ) $ RWORK(1), -1, CHILDINFO )
LBBCSD = INT( RWORK(1) ) LBBCSD = INT( RWORK(1) )
END IF END IF
LRWORKMIN = IBBCSD+LBBCSD-1 LRWORKMIN = IBBCSD+LBBCSD-1
@ -538,8 +562,8 @@
* Simultaneously diagonalize X11 and X21. * Simultaneously diagonalize X11 and X21.
* *
CALL CBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA, CALL CBBCSD( JOBU1, JOBU2, JOBV1T, 'N', 'N', M, P, Q, THETA,
$ RWORK(IPHI), U1, LDU1, U2, LDU2, V1T, LDV1T, 0, 1, $ RWORK(IPHI), U1, LDU1, U2, LDU2, V1T, LDV1T, CDUM,
$ RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), $ 1, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), $ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E),
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, $ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD,
$ CHILDINFO ) $ CHILDINFO )
@ -592,8 +616,8 @@
* Simultaneously diagonalize X11 and X21. * Simultaneously diagonalize X11 and X21.
* *
CALL CBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA, CALL CBBCSD( JOBV1T, 'N', JOBU1, JOBU2, 'T', M, Q, P, THETA,
$ RWORK(IPHI), V1T, LDV1T, 0, 1, U1, LDU1, U2, LDU2, $ RWORK(IPHI), V1T, LDV1T, CDUM, 1, U1, LDU1, U2,
$ RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), $ LDU2, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D),
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), $ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E),
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, $ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD,
$ CHILDINFO ) $ CHILDINFO )
@ -647,7 +671,7 @@
* Simultaneously diagonalize X11 and X21. * Simultaneously diagonalize X11 and X21.
* *
CALL CBBCSD( 'N', JOBV1T, JOBU2, JOBU1, 'T', M, M-Q, M-P, 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), $ U1, LDU1, RWORK(IB11D), RWORK(IB11E),
$ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D), $ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D),
$ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E), $ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E),
@ -716,11 +740,11 @@
* Simultaneously diagonalize X11 and X21. * Simultaneously diagonalize X11 and X21.
* *
CALL CBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q, CALL CBBCSD( JOBU2, JOBU1, 'N', JOBV1T, 'N', M, M-P, M-Q,
$ THETA, RWORK(IPHI), U2, LDU2, U1, LDU1, 0, 1, V1T, $ THETA, RWORK(IPHI), U2, LDU2, U1, LDU1, CDUM, 1,
$ LDV1T, RWORK(IB11D), RWORK(IB11E), RWORK(IB12D), $ V1T, LDV1T, RWORK(IB11D), RWORK(IB11E),
$ RWORK(IB12E), RWORK(IB21D), RWORK(IB21E), $ RWORK(IB12D), RWORK(IB12E), RWORK(IB21D),
$ RWORK(IB22D), RWORK(IB22E), RWORK(IBBCSD), LBBCSD, $ RWORK(IB21E), RWORK(IB22D), RWORK(IB22E),
$ CHILDINFO ) $ RWORK(IBBCSD), LBBCSD, CHILDINFO )
* *
* Permute rows and columns to place identity submatrices in * Permute rows and columns to place identity submatrices in
* preferred positions * preferred positions

View File

@ -149,7 +149,7 @@
*> \param[in,out] U1 *> \param[in,out] U1
*> \verbatim *> \verbatim
*> U1 is DOUBLE PRECISION array, dimension (LDU1,P) *> 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 *> by the left singular vector matrix common to [ B11 ; 0 ] and
*> [ B12 0 0 ; 0 -I 0 0 ]. *> [ B12 0 0 ; 0 -I 0 0 ].
*> \endverbatim *> \endverbatim
@ -157,13 +157,13 @@
*> \param[in] LDU1 *> \param[in] LDU1
*> \verbatim *> \verbatim
*> LDU1 is INTEGER *> LDU1 is INTEGER
*> The leading dimension of the array U1. *> The leading dimension of the array U1, LDU1 >= MAX(1,P).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] U2 *> \param[in,out] U2
*> \verbatim *> \verbatim
*> U2 is DOUBLE PRECISION array, dimension (LDU2,M-P) *> 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 *> postmultiplied by the left singular vector matrix common to
*> [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ]. *> [ B21 ; 0 ] and [ B22 0 0 ; 0 0 I ].
*> \endverbatim *> \endverbatim
@ -171,13 +171,13 @@
*> \param[in] LDU2 *> \param[in] LDU2
*> \verbatim *> \verbatim
*> LDU2 is INTEGER *> LDU2 is INTEGER
*> The leading dimension of the array U2. *> The leading dimension of the array U2, LDU2 >= MAX(1,M-P).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] V1T *> \param[in,out] V1T
*> \verbatim *> \verbatim
*> V1T is DOUBLE PRECISION array, dimension (LDV1T,Q) *> 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 *> by the transpose of the right singular vector
*> matrix common to [ B11 ; 0 ] and [ B21 ; 0 ]. *> matrix common to [ B11 ; 0 ] and [ B21 ; 0 ].
*> \endverbatim *> \endverbatim
@ -185,13 +185,13 @@
*> \param[in] LDV1T *> \param[in] LDV1T
*> \verbatim *> \verbatim
*> LDV1T is INTEGER *> LDV1T is INTEGER
*> The leading dimension of the array V1T. *> The leading dimension of the array V1T, LDV1T >= MAX(1,Q).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in,out] V2T *> \param[in,out] V2T
*> \verbatim *> \verbatim
*> V2T is DOUBLE PRECISION array, dimenison (LDV2T,M-Q) *> 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 *> premultiplied by the transpose of the right
*> singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and *> singular vector matrix common to [ B12 0 0 ; 0 -I 0 ] and
*> [ B22 0 0 ; 0 0 I ]. *> [ B22 0 0 ; 0 0 I ].
@ -200,7 +200,7 @@
*> \param[in] LDV2T *> \param[in] LDV2T
*> \verbatim *> \verbatim
*> LDV2T is INTEGER *> LDV2T is INTEGER
*> The leading dimension of the array V2T. *> The leading dimension of the array V2T, LDV2T >= MAX(1,M-Q).
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] B11D *> \param[out] B11D
@ -322,7 +322,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleOTHERcomputational *> \ingroup doubleOTHERcomputational
* *
@ -332,10 +332,10 @@
$ V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E, $ V2T, LDV2T, B11D, B11E, B12D, B12E, B21D, B21E,
$ B22D, B22E, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS CHARACTER JOBU1, JOBU2, JOBV1T, JOBV2T, TRANS

View File

@ -191,7 +191,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
@ -205,10 +205,10 @@
SUBROUTINE DBDSDC( UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ, SUBROUTINE DBDSDC( UPLO, COMPQ, N, D, E, U, LDU, VT, LDVT, Q, IQ,
$ WORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER COMPQ, UPLO CHARACTER COMPQ, UPLO
@ -311,7 +311,7 @@
WSTART = 1 WSTART = 1
QSTART = 3 QSTART = 3
IF( ICOMPQ.EQ.1 ) THEN 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 ) CALL DCOPY( N-1, E, 1, Q( N+1 ), 1 )
END IF END IF
IF( IUPLO.EQ.2 ) THEN IF( IUPLO.EQ.2 ) THEN
@ -335,8 +335,11 @@
* If ICOMPQ = 0, use DLASDQ to compute the singular values. * If ICOMPQ = 0, use DLASDQ to compute the singular values.
* *
IF( ICOMPQ.EQ.0 ) THEN 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, 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 GO TO 40
END IF END IF
* *
@ -412,24 +415,24 @@
DO 30 I = 1, NM1 DO 30 I = 1, NM1
IF( ( ABS( E( I ) ).LT.EPS ) .OR. ( I.EQ.NM1 ) ) THEN IF( ( ABS( E( I ) ).LT.EPS ) .OR. ( I.EQ.NM1 ) ) THEN
* *
* Subproblem found. First determine its size and then * Subproblem found. First determine its size and then
* apply divide and conquer on it. * apply divide and conquer on it.
* *
IF( I.LT.NM1 ) THEN 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 NSIZE = I - START + 1
ELSE IF( ABS( E( I ) ).GE.EPS ) THEN 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 NSIZE = N - START + 1
ELSE ELSE
* *
* A subproblem with E(NM1) small. This implies an * A subproblem with E(NM1) small. This implies an
* 1-by-1 subproblem at D(N). Solve this 1-by-1 problem * 1-by-1 subproblem at D(N). Solve this 1-by-1 problem
* first. * first.
* *
NSIZE = I - START + 1 NSIZE = I - START + 1
IF( ICOMPQ.EQ.2 ) THEN IF( ICOMPQ.EQ.2 ) THEN

View File

@ -80,7 +80,7 @@
*> = 'L': B is lower bidiagonal. *> = 'L': B is lower bidiagonal.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] JOBXZ *> \param[in] JOBZ
*> \verbatim *> \verbatim
*> JOBZ is CHARACTER*1 *> JOBZ is CHARACTER*1
*> = 'N': Compute singular values only; *> = 'N': Compute singular values only;
@ -117,14 +117,16 @@
*> *>
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is DOUBLE PRECISION *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is DOUBLE PRECISION *> 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. *> be searched for singular values. VU > VL.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -132,13 +134,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest singular values to be returned. *> largest singular value to be returned.
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0. *> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -190,7 +196,10 @@
*> If JOBZ = 'V', then if INFO = 0, the first NS elements of *> If JOBZ = 'V', then if INFO = 0, the first NS elements of
*> IWORK are zero. If INFO > 0, then IWORK contains the indices *> IWORK are zero. If INFO > 0, then IWORK contains the indices
*> of the eigenvectors that failed to converge in DSTEVX. *> of the eigenvectors that failed to converge in DSTEVX.
*> \endverbatim
*> *>
*> \param[out] INFO
*> \verbatim
*> INFO is INTEGER *> INFO is INTEGER
*> = 0: successful exit *> = 0: successful exit
*> < 0: if INFO = -i, the i-th argument had an illegal value *> < 0: if INFO = -i, the i-th argument had an illegal value
@ -209,7 +218,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup doubleOTHEReigen *> \ingroup doubleOTHEReigen
* *
@ -217,7 +226,7 @@
SUBROUTINE DBDSVDX( UPLO, JOBZ, RANGE, N, D, E, VL, VU, IL, IU, SUBROUTINE DBDSVDX( UPLO, JOBZ, RANGE, N, D, E, VL, VU, IL, IU,
$ NS, S, Z, LDZ, WORK, IWORK, INFO) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2016 * November 2016
@ -371,7 +380,6 @@
IF( ABS( E( I ) ).LE.THRESH ) E( I ) = ZERO IF( ABS( E( I ) ).LE.THRESH ) E( I ) = ZERO
END DO END DO
IF( ABS( D( N ) ).LE.THRESH ) D( N ) = ZERO IF( ABS( D( N ) ).LE.THRESH ) D( N ) = ZERO
E( N ) = ZERO
* *
* Pointers for arrays used by DSTEVX. * Pointers for arrays used by DSTEVX.
* *
@ -398,7 +406,7 @@
* of the active submatrix. * of the active submatrix.
* *
RNGVX = 'I' 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 ELSE IF( VALSV ) THEN
* *
* Find singular values in a half-open interval. We aim * Find singular values in a half-open interval. We aim
@ -418,7 +426,7 @@
IF( NS.EQ.0 ) THEN IF( NS.EQ.0 ) THEN
RETURN RETURN
ELSE 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 END IF
ELSE IF( INDSV ) THEN ELSE IF( INDSV ) THEN
* *
@ -455,7 +463,7 @@
* *
IF( VLTGK.EQ.VUTGK ) VLTGK = VLTGK - TOL 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 END IF
* *
* Initialize variables and pointers for S, Z, and WORK. * Initialize variables and pointers for S, Z, and WORK.
@ -709,9 +717,11 @@
NRU = 0 NRU = 0
NRV = 0 NRV = 0
END IF !** NTGK.GT.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 **! END DO !** IDPTR loop **!
IF( SPLIT ) THEN IF( SPLIT .AND. WANTZ ) THEN
* *
* Bring back eigenvector corresponding * Bring back eigenvector corresponding
* to eigenvalue equal to zero. * to eigenvalue equal to zero.
@ -744,7 +754,7 @@
IF( K.NE.NS+1-I ) THEN IF( K.NE.NS+1-I ) THEN
S( K ) = S( NS+1-I ) S( K ) = S( NS+1-I )
S( NS+1-I ) = SMIN 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 IF
END DO END DO
* *
@ -754,7 +764,7 @@
K = IU - IL + 1 K = IU - IL + 1
IF( K.LT.NS ) THEN IF( K.LT.NS ) THEN
S( K+1:NS ) = ZERO 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 NS = K
END IF END IF
END IF END IF
@ -762,6 +772,7 @@
* Reorder Z: U = Z( 1:N,1:NS ), V = Z( N+1:N*2,1:NS ). * 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 B is a lower diagonal, swap U and V.
* *
IF( WANTZ ) THEN
DO I = 1, NS DO I = 1, NS
CALL DCOPY( N*2, Z( 1,I ), 1, WORK, 1 ) CALL DCOPY( N*2, Z( 1,I ), 1, WORK, 1 )
IF( LOWER ) THEN IF( LOWER ) THEN
@ -772,6 +783,7 @@
CALL DCOPY( N, WORK( 1 ), 2, Z( N+1,I ), 1 ) CALL DCOPY( N, WORK( 1 ), 2, Z( N+1,I ), 1 )
END IF END IF
END DO END DO
END IF
* *
RETURN RETURN
* *

View File

@ -440,7 +440,7 @@
$ ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK, $ ERR_BNDS_COMP, NPARAMS, PARAMS, WORK, IWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* April 2012 * April 2012
@ -646,7 +646,7 @@
* *
* Perform refinement on each right-hand side * 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' ) PREC_TYPE = ILAPREC( 'E' )

View File

@ -90,7 +90,7 @@
*> *>
*> \param[in] SELECT *> \param[in] SELECT
*> \verbatim *> \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. *> SELECT must be declared EXTERNAL in the calling subroutine.
*> If SORT = 'S', SELECT is used to select eigenvalues to sort *> If SORT = 'S', SELECT is used to select eigenvalues to sort
*> to the top left of the Schur form. *> to the top left of the Schur form.
@ -272,7 +272,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2011 *> \date June 2016
* *
*> \ingroup doubleGEeigen *> \ingroup doubleGEeigen
* *
@ -281,10 +281,10 @@
$ WR, WI, VS, LDVS, RCONDE, RCONDV, WORK, LWORK, $ WR, WI, VS, LDVS, RCONDE, RCONDV, WORK, LWORK,
$ IWORK, LIWORK, BWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2011 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBVS, SENSE, SORT CHARACTER JOBVS, SENSE, SORT

View File

@ -181,18 +181,21 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
*
* @precisions fortran d -> s
* *
*> \ingroup doubleGEeigen *> \ingroup doubleGEeigen
* *
* ===================================================================== * =====================================================================
SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR, SUBROUTINE DGEEV( JOBVL, JOBVR, N, A, LDA, WR, WI, VL, LDVL, VR,
$ LDVR, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBVL, JOBVR CHARACTER JOBVL, JOBVR
@ -213,7 +216,7 @@
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR LOGICAL LQUERY, SCALEA, WANTVL, WANTVR
CHARACTER SIDE CHARACTER SIDE
INTEGER HSWORK, I, IBAL, IERR, IHI, ILO, ITAU, IWRK, K, 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, DOUBLE PRECISION ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,
$ SN $ SN
* .. * ..
@ -223,7 +226,7 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY, EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,
$ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC, $ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC3,
$ XERBLA $ XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
@ -279,24 +282,34 @@
MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1, MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
$ 'DORGHR', ' ', N, 1, N, -1 ) ) $ 'DORGHR', ' ', N, 1, N, -1 ) )
CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL, CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
HSWORK = WORK( 1 ) HSWORK = INT( WORK(1) )
MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK ) 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 ) MAXWRK = MAX( MAXWRK, 4*N )
ELSE IF( WANTVR ) THEN ELSE IF( WANTVR ) THEN
MINWRK = 4*N MINWRK = 4*N
MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1, MAXWRK = MAX( MAXWRK, 2*N + ( N - 1 )*ILAENV( 1,
$ 'DORGHR', ' ', N, 1, N, -1 ) ) $ 'DORGHR', ' ', N, 1, N, -1 ) )
CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR, CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
HSWORK = WORK( 1 ) HSWORK = INT( WORK(1) )
MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK ) 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 ) MAXWRK = MAX( MAXWRK, 4*N )
ELSE ELSE
MINWRK = 3*N MINWRK = 3*N
CALL DHSEQR( 'E', 'N', N, 1, N, A, LDA, WR, WI, VR, LDVR, CALL DHSEQR( 'E', 'N', N, 1, N, A, LDA, WR, WI, VR, LDVR,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
HSWORK = WORK( 1 ) HSWORK = INT( WORK(1) )
MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK ) MAXWRK = MAX( MAXWRK, N + 1, N + HSWORK )
END IF END IF
MAXWRK = MAX( MAXWRK, MINWRK ) MAXWRK = MAX( MAXWRK, MINWRK )
@ -426,10 +439,10 @@
IF( WANTVL .OR. WANTVR ) THEN IF( WANTVL .OR. WANTVR ) THEN
* *
* Compute left and/or right eigenvectors * 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, CALL DTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
$ N, NOUT, WORK( IWRK ), IERR ) $ N, NOUT, WORK( IWRK ), LWORK-IWRK+1, IERR )
END IF END IF
* *
IF( WANTVL ) THEN IF( WANTVL ) THEN

View File

@ -294,7 +294,9 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
*
* @precisions fortran d -> s
* *
*> \ingroup doubleGEeigen *> \ingroup doubleGEeigen
* *
@ -302,11 +304,12 @@
SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI, SUBROUTINE DGEEVX( BALANC, JOBVL, JOBVR, SENSE, N, A, LDA, WR, WI,
$ VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM, $ VL, LDVL, VR, LDVR, ILO, IHI, SCALE, ABNRM,
$ RCONDE, RCONDV, WORK, LWORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER BALANC, JOBVL, JOBVR, SENSE CHARACTER BALANC, JOBVL, JOBVR, SENSE
@ -330,8 +333,8 @@
LOGICAL LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE, LOGICAL LQUERY, SCALEA, WANTVL, WANTVR, WNTSNB, WNTSNE,
$ WNTSNN, WNTSNV $ WNTSNN, WNTSNV
CHARACTER JOB, SIDE CHARACTER JOB, SIDE
INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K, MAXWRK, INTEGER HSWORK, I, ICOND, IERR, ITAU, IWRK, K,
$ MINWRK, NOUT $ LWORK_TREVC, MAXWRK, MINWRK, NOUT
DOUBLE PRECISION ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM, DOUBLE PRECISION ANRM, BIGNUM, CS, CSCALE, EPS, R, SCL, SMLNUM,
$ SN $ SN
* .. * ..
@ -341,7 +344,7 @@
* .. * ..
* .. External Subroutines .. * .. External Subroutines ..
EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY, EXTERNAL DGEBAK, DGEBAL, DGEHRD, DHSEQR, DLABAD, DLACPY,
$ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC, $ DLARTG, DLASCL, DORGHR, DROT, DSCAL, DTREVC3,
$ DTRSNA, XERBLA $ DTRSNA, XERBLA
* .. * ..
* .. External Functions .. * .. External Functions ..
@ -366,8 +369,8 @@
WNTSNE = LSAME( SENSE, 'E' ) WNTSNE = LSAME( SENSE, 'E' )
WNTSNV = LSAME( SENSE, 'V' ) WNTSNV = LSAME( SENSE, 'V' )
WNTSNB = LSAME( SENSE, 'B' ) WNTSNB = LSAME( SENSE, 'B' )
IF( .NOT.( LSAME( BALANC, 'N' ) .OR. LSAME( BALANC, IF( .NOT.( LSAME( BALANC, 'N' ) .OR. LSAME( BALANC, 'S' )
$ 'S' ) .OR. LSAME( BALANC, 'P' ) .OR. LSAME( BALANC, 'B' ) ) ) $ .OR. LSAME( BALANC, 'P' ) .OR. LSAME( BALANC, 'B' ) ) )
$ THEN $ THEN
INFO = -1 INFO = -1
ELSE IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN ELSE IF( ( .NOT.WANTVL ) .AND. ( .NOT.LSAME( JOBVL, 'N' ) ) ) THEN
@ -406,9 +409,19 @@
MAXWRK = N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 ) MAXWRK = N + N*ILAENV( 1, 'DGEHRD', ' ', N, 1, N, 0 )
* *
IF( WANTVL ) THEN 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, CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VL, LDVL,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
ELSE IF( WANTVR ) THEN 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, CALL DHSEQR( 'S', 'V', N, 1, N, A, LDA, WR, WI, VR, LDVR,
$ WORK, -1, INFO ) $ WORK, -1, INFO )
ELSE ELSE
@ -420,7 +433,7 @@
$ LDVR, WORK, -1, INFO ) $ LDVR, WORK, -1, INFO )
END IF END IF
END IF END IF
HSWORK = WORK( 1 ) HSWORK = INT( WORK(1) )
* *
IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN IF( ( .NOT.WANTVL ) .AND. ( .NOT.WANTVR ) ) THEN
MINWRK = 2*N MINWRK = 2*N
@ -572,18 +585,18 @@
$ WORK( IWRK ), LWORK-IWRK+1, INFO ) $ WORK( IWRK ), LWORK-IWRK+1, INFO )
END IF 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 $ GO TO 50
* *
IF( WANTVL .OR. WANTVR ) THEN IF( WANTVL .OR. WANTVR ) THEN
* *
* Compute left and/or right eigenvectors * 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, CALL DTREVC3( SIDE, 'B', SELECT, N, A, LDA, VL, LDVL, VR, LDVR,
$ N, NOUT, WORK( IWRK ), IERR ) $ N, NOUT, WORK( IWRK ), LWORK-IWRK+1, IERR )
END IF END IF
* *
* Compute condition numbers if desired * Compute condition numbers if desired

View File

@ -52,7 +52,8 @@
*> are computed and stored in the arrays U and V, respectively. The diagonal *> are computed and stored in the arrays U and V, respectively. The diagonal
*> of [SIGMA] is computed and stored in the array SVA. *> of [SIGMA] is computed and stored in the array SVA.
*> DGEJSV can sometimes compute tiny singular values and their singular vectors much *> 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: * Arguments:
* ========== * ==========
@ -236,7 +237,7 @@
*> copied back to the V array. This 'W' option is just *> copied back to the V array. This 'W' option is just
*> a reminder to the caller that in this case U is *> a reminder to the caller that in this case U is
*> reserved as workspace of length N*N. *> 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 *> \endverbatim
*> *>
*> \param[in] LDU *> \param[in] LDU
@ -258,7 +259,7 @@
*> copied back to the U array. This 'W' option is just *> copied back to the U array. This 'W' option is just
*> a reminder to the caller that in this case V is *> a reminder to the caller that in this case V is
*> reserved as workspace of length N*N. *> 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 *> \endverbatim
*> *>
*> \param[in] LDV *> \param[in] LDV
@ -332,10 +333,10 @@
*> If SIGMA and the right singular vectors are needed (JOBV.EQ.'V'), *> 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). *> -> 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), *> -> 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 *> DORMLQ. In general, the optimal length LWORK is computed as
*> LWORK >= max(2*M+N,N+LWORK(DGEQP3), N+LWORK(DPOCON), *> 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 *> If SIGMA and the left singular vectors are needed
*> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7). *> -> the minimal requirement is LWORK >= max(2*M+N,4*N+1,7).
@ -390,7 +391,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleGEsing *> \ingroup doubleGEsing
* *
@ -475,10 +476,10 @@
$ M, N, A, LDA, SVA, U, LDU, V, LDV, $ M, N, A, LDA, SVA, U, LDU, V, LDV,
$ WORK, LWORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
IMPLICIT NONE IMPLICIT NONE
@ -589,7 +590,11 @@
* *
* Quick return for void matrix (Y3K safe) * 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 * Determine whether the matrix U should be M x N or M x M
* *
@ -715,6 +720,7 @@
IWORK(1) = 0 IWORK(1) = 0
IWORK(2) = 0 IWORK(2) = 0
END IF END IF
IWORK(3) = 0
IF ( ERREST ) WORK(3) = ONE IF ( ERREST ) WORK(3) = ONE
IF ( LSVEC .AND. RSVEC ) THEN IF ( LSVEC .AND. RSVEC ) THEN
WORK(4) = ONE WORK(4) = ONE

View File

@ -100,7 +100,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup doubleGEcomputational *> \ingroup doubleGEcomputational
* *
@ -132,10 +132,10 @@
* ===================================================================== * =====================================================================
RECURSIVE SUBROUTINE DGEQRT3( M, N, A, LDA, T, LDT, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N, LDT INTEGER INFO, LDA, M, N, LDT
@ -177,7 +177,7 @@
* *
* Compute Householder transform when N=1 * 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 ELSE
* *

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -123,13 +123,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is DOUBLE PRECISION *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is DOUBLE PRECISION *> 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. *> be searched for singular values. VU > VL.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
*> \endverbatim *> \endverbatim
@ -137,13 +139,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest singular values to be returned. *> largest singular value to be returned.
*> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0. *> 1 <= IL <= IU <= min(M,N), if min(M,N) > 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -169,7 +175,7 @@
*> vectors, stored columnwise) as specified by RANGE; if *> vectors, stored columnwise) as specified by RANGE; if
*> JOBU = 'N', U is not referenced. *> JOBU = 'N', U is not referenced.
*> Note: The user must ensure that UCOL >= NS; if RANGE = 'V', *> 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. *> bound must be used.
*> \endverbatim *> \endverbatim
*> *>
@ -248,7 +254,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleGEsing *> \ingroup doubleGEsing
* *
@ -257,10 +263,10 @@
$ IL, IU, NS, S, U, LDU, VT, LDVT, WORK, $ IL, IU, NS, S, U, LDU, VT, LDVT, WORK,
$ LWORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBU, JOBVT, RANGE CHARACTER JOBU, JOBVT, RANGE
@ -357,8 +363,14 @@
IF( INFO.EQ.0 ) THEN IF( INFO.EQ.0 ) THEN
IF( WANTU .AND. LDU.LT.M ) THEN IF( WANTU .AND. LDU.LT.M ) THEN
INFO = -15 INFO = -15
ELSE IF( WANTVT .AND. LDVT.LT.MINMN ) THEN ELSE IF( WANTVT ) THEN
INFO = -16 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 END IF
END IF END IF
@ -380,18 +392,34 @@
* *
* Path 1 (M much larger than N) * Path 1 (M much larger than N)
* *
MAXWRK = N*(N*2+16) + MAXWRK = N +
$ N*ILAENV( 1, 'DGEQRF', ' ', M, N, -1, -1 ) $ 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 ) ) $ 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 ELSE
* *
* Path 2 (M at least N, but not much larger) * 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 ) $ 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 END IF
ELSE ELSE
MNTHR = ILAENV( 6, 'DGESVD', JOBU // JOBVT, M, N, 0, 0 ) MNTHR = ILAENV( 6, 'DGESVD', JOBU // JOBVT, M, N, 0, 0 )
@ -399,18 +427,34 @@
* *
* Path 1t (N much larger than M) * Path 1t (N much larger than M)
* *
MAXWRK = M*(M*2+16) + MAXWRK = M +
$ M*ILAENV( 1, 'DGELQF', ' ', M, N, -1, -1 ) $ 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 ) ) $ 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 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 ) $ 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 END IF
END IF END IF
@ -522,7 +566,7 @@
CALL DCOPY( N, WORK( J ), 1, U( 1,I ), 1 ) CALL DCOPY( N, WORK( J ), 1, U( 1,I ), 1 )
J = J + N*2 J = J + N*2
END DO 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. * Call DORMBR to compute QB*UB.
* (Workspace in WORK( ITEMP ): need N, prefer N*NB) * (Workspace in WORK( ITEMP ): need N, prefer N*NB)
@ -591,7 +635,7 @@
CALL DCOPY( N, WORK( J ), 1, U( 1,I ), 1 ) CALL DCOPY( N, WORK( J ), 1, U( 1,I ), 1 )
J = J + N*2 J = J + N*2
END DO 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. * Call DORMBR to compute QB*UB.
* (Workspace in WORK( ITEMP ): need N, prefer N*NB) * (Workspace in WORK( ITEMP ): need N, prefer N*NB)
@ -687,7 +731,7 @@
CALL DCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT ) CALL DCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT )
J = J + M*2 J = J + M*2
END DO 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) * Call DORMBR to compute (VB**T)*(PB**T)
* (Workspace in WORK( ITEMP ): need M, prefer M*NB) * (Workspace in WORK( ITEMP ): need M, prefer M*NB)
@ -756,7 +800,7 @@
CALL DCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT ) CALL DCOPY( M, WORK( J ), 1, VT( I,1 ), LDVT )
J = J + M*2 J = J + M*2
END DO 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 * Call DORMBR to compute VB**T * PB**T
* (Workspace in WORK( ITEMP ): need M, prefer M*NB) * (Workspace in WORK( ITEMP ): need M, prefer M*NB)

View File

@ -98,7 +98,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup doubleGEauxiliary *> \ingroup doubleGEauxiliary
* *
@ -111,10 +111,10 @@
* ===================================================================== * =====================================================================
SUBROUTINE DGETC2( N, A, LDA, IPIV, JPIV, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, N INTEGER INFO, LDA, N

View File

@ -37,7 +37,7 @@
*> the matrix into four submatrices: *> the matrix into four submatrices:
*> *>
*> [ A11 | A12 ] where A11 is n1 by n1 and A22 is n2 by n2 *> [ 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 *> [ A21 | A22 ] n2 = n-n1
*> *>
*> [ A11 ] *> [ A11 ]
@ -106,17 +106,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleGEcomputational *> \ingroup doubleGEcomputational
* *
* ===================================================================== * =====================================================================
RECURSIVE SUBROUTINE DGETRF2( M, N, A, LDA, IPIV, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDA, M, N INTEGER INFO, LDA, M, N

View File

@ -230,7 +230,7 @@
SUBROUTINE DGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q, SUBROUTINE DGGHD3( COMPQ, COMPZ, N, ILO, IHI, A, LDA, B, LDB, Q,
$ LDQ, Z, LDZ, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* January 2015 * January 2015
@ -277,7 +277,7 @@
* *
INFO = 0 INFO = 0
NB = ILAENV( 1, 'DGGHD3', ' ', N, ILO, IHI, -1 ) NB = ILAENV( 1, 'DGGHD3', ' ', N, ILO, IHI, -1 )
LWKOPT = 6*N*NB LWKOPT = MAX( 6*N*NB, 1 )
WORK( 1 ) = DBLE( LWKOPT ) WORK( 1 ) = DBLE( LWKOPT )
INITQ = LSAME( COMPQ, 'I' ) INITQ = LSAME( COMPQ, 'I' )
WANTQ = INITQ .OR. LSAME( COMPQ, 'V' ) WANTQ = INITQ .OR. LSAME( COMPQ, 'V' )

View File

@ -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 =========== * =========== DOCUMENTATION ===========
* *
@ -223,7 +223,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleOTHERcomputational *> \ingroup doubleOTHERcomputational
* *
@ -236,10 +236,10 @@
SUBROUTINE DGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, SUBROUTINE DGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV,
$ EPS, SFMIN, TOL, NSWEEP, WORK, LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
DOUBLE PRECISION EPS, SFMIN, TOL DOUBLE PRECISION EPS, SFMIN, TOL

View File

@ -211,12 +211,12 @@
*> \param[in,out] Q *> \param[in,out] Q
*> \verbatim *> \verbatim
*> Q is DOUBLE PRECISION array, dimension (LDQ, N) *> 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. *> the reduction of (A,B) to generalized Hessenberg form.
*> On exit, if COMPZ = 'I', the orthogonal matrix of left Schur *> On exit, if COMPQ = 'I', the orthogonal matrix of left Schur
*> vectors of (H,T), and if COMPZ = 'V', the orthogonal matrix *> vectors of (H,T), and if COMPQ = 'V', the orthogonal matrix
*> of left Schur vectors of (A,B). *> of left Schur vectors of (A,B).
*> Not referenced if COMPZ = 'N'. *> Not referenced if COMPQ = 'N'.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] LDQ *> \param[in] LDQ
@ -282,7 +282,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2013 *> \date June 2016
* *
*> \ingroup doubleGEcomputational *> \ingroup doubleGEcomputational
* *
@ -304,10 +304,10 @@
$ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK, $ ALPHAR, ALPHAI, BETA, Q, LDQ, Z, LDZ, WORK,
$ LWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2013 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER COMPQ, COMPZ, JOB CHARACTER COMPQ, COMPZ, JOB

View File

@ -54,7 +54,7 @@
*> *>
*> The first stage consists of deflating the size of the problem *> The first stage consists of deflating the size of the problem
*> when there are multiple eigenvalues or if there is a zero in *> 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 *> secular equation problem is reduced by one. This stage is
*> performed by the routine DLAED2. *> performed by the routine DLAED2.
*> *>
@ -148,7 +148,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
@ -163,10 +163,10 @@
SUBROUTINE DLAED1( N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK, IWORK, SUBROUTINE DLAED1( N, D, Q, LDQ, INDXQ, RHO, CUTPNT, WORK, IWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER CUTPNT, INFO, LDQ, N INTEGER CUTPNT, INFO, LDQ, N

View File

@ -59,7 +59,7 @@
*> *>
*> The first stage consists of deflating the size of the problem *> The first stage consists of deflating the size of the problem
*> when there are multiple eigenvalues or if there is a zero in *> 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 *> secular equation problem is reduced by one. This stage is
*> performed by the routine DLAED8. *> performed by the routine DLAED8.
*> *>
@ -244,7 +244,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
@ -260,10 +260,10 @@
$ PERM, GIVPTR, GIVCOL, GIVNUM, WORK, IWORK, $ PERM, GIVPTR, GIVCOL, GIVNUM, WORK, IWORK,
$ INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER CURLVL, CURPBM, CUTPNT, ICOMPQ, INFO, LDQ, N, INTEGER CURLVL, CURPBM, CUTPNT, ICOMPQ, INFO, LDQ, N,

View File

@ -99,7 +99,7 @@
*> will always be positive. If the eigenvalues are real, then *> will always be positive. If the eigenvalues are real, then
*> the first (real) eigenvalue is WR1 / SCALE1 , but this may *> the first (real) eigenvalue is WR1 / SCALE1 , but this may
*> overflow or underflow, and in fact, SCALE1 may be zero or *> 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. *> is sufficiently large.
*> \endverbatim *> \endverbatim
*> *>
@ -112,7 +112,7 @@
*> eigenvalues are real, then the second (real) eigenvalue is *> eigenvalues are real, then the second (real) eigenvalue is
*> WR2 / SCALE2 , but this may overflow or underflow, and in *> WR2 / SCALE2 , but this may overflow or underflow, and in
*> fact, SCALE2 may be zero or less than the underflow *> 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 *> \endverbatim
*> *>
*> \param[out] WR1 *> \param[out] WR1
@ -148,7 +148,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup doubleOTHERauxiliary *> \ingroup doubleOTHERauxiliary
* *
@ -156,10 +156,10 @@
SUBROUTINE DLAG2( A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1, SUBROUTINE DLAG2( A, LDA, B, LDB, SAFMIN, SCALE1, SCALE2, WR1,
$ WR2, WI ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER LDA, LDB INTEGER LDA, LDB
@ -266,8 +266,8 @@
* Note: the test of R in the following IF is to cover the case when * 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 * DISCR is small and negative and is flushed to zero during
* the calculation of R. On machines which have a consistent * the calculation of R. On machines which have a consistent
* flush-to-zero threshhold and handle numbers above that * flush-to-zero threshold and handle numbers above that
* threshhold correctly, it would not be necessary. * threshold correctly, it would not be necessary.
* *
IF( DISCR.GE.ZERO .OR. R.EQ.ZERO ) THEN IF( DISCR.GE.ZERO .OR. R.EQ.ZERO ) THEN
SUM = PP + SIGN( R, PP ) SUM = PP + SIGN( R, PP )

View File

@ -50,7 +50,7 @@
*> \param[in] N2 *> \param[in] N2
*> \verbatim *> \verbatim
*> N2 is INTEGER *> 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. *> sorted lists to be merged.
*> \endverbatim *> \endverbatim
*> *>
@ -92,17 +92,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE DLAMRG( N1, N2, A, DTRD1, DTRD2, INDEX ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER DTRD1, DTRD2, N1, N2 INTEGER DTRD1, DTRD2, N1, N2

View File

@ -138,7 +138,7 @@
*> Z is DOUBLE PRECISION array, dimension (LDZ,N) *> Z is DOUBLE PRECISION array, dimension (LDZ,N)
*> IF WANTZ is .TRUE., then on output, the orthogonal *> IF WANTZ is .TRUE., then on output, the orthogonal
*> similarity transformation mentioned above has been *> 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. *> If WANTZ is .FALSE., then Z is unreferenced.
*> \endverbatim *> \endverbatim
*> *>
@ -260,7 +260,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup doubleOTHERauxiliary *> \ingroup doubleOTHERauxiliary
* *
@ -275,10 +275,10 @@
$ IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T, $ IHIZ, Z, LDZ, NS, ND, SR, SI, V, LDV, NH, T,
$ LDT, NV, WV, LDWV, WORK, LWORK ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV, INTEGER IHIZ, ILOZ, KBOT, KTOP, LDH, LDT, LDV, LDWV,

View File

@ -150,10 +150,10 @@
*> *>
*> \param[in,out] Z *> \param[in,out] Z
*> \verbatim *> \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 *> If WANTZ = .TRUE., then the QR Sweep orthogonal
*> similarity transformation is accumulated into *> 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. *> If WANTZ = .FALSE., then Z is unreferenced.
*> \endverbatim *> \endverbatim
*> *>
@ -236,7 +236,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup doubleOTHERauxiliary *> \ingroup doubleOTHERauxiliary
* *
@ -259,10 +259,10 @@
$ SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U, $ SR, SI, H, LDH, ILOZ, IHIZ, Z, LDZ, V, LDV, U,
$ LDU, NV, WV, LDWV, NH, WH, LDWH ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV, INTEGER IHIZ, ILOZ, KACC22, KBOT, KTOP, LDH, LDU, LDV,

View File

@ -60,12 +60,13 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is DOUBLE PRECISION *> VL is DOUBLE PRECISION
*> The lower bound for the eigenvalues.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is DOUBLE PRECISION *> VU is DOUBLE PRECISION
*> The lower and upper bounds for the eigenvalues. *> The upper bound for the eigenvalues.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] D *> \param[in] D
@ -119,7 +120,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -136,10 +137,10 @@
SUBROUTINE DLARRC( JOBT, N, VL, VU, D, E, PIVMIN, SUBROUTINE DLARRC( JOBT, N, VL, VU, D, E, PIVMIN,
$ EIGCNT, LCNT, RCNT, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER JOBT CHARACTER JOBT

View File

@ -92,12 +92,16 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is DOUBLE PRECISION *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is DOUBLE PRECISION *> 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 *> be searched for eigenvalues. Eigenvalues less than or equal
*> to VL, or greater than VU, will not be returned. VL < VU. *> to VL, or greater than VU, will not be returned. VL < VU.
*> Not referenced if RANGE = 'A' or 'I'. *> Not referenced if RANGE = 'A' or 'I'.
@ -106,13 +110,17 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0. *> 1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.
*> Not referenced if RANGE = 'A' or 'V'. *> Not referenced if RANGE = 'A' or 'V'.
*> \endverbatim *> \endverbatim
@ -311,7 +319,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -321,10 +329,10 @@
$ M, W, WERR, WL, WU, IBLOCK, INDEXW, $ M, W, WERR, WL, WU, IBLOCK, INDEXW,
$ WORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER ORDER, RANGE CHARACTER ORDER, RANGE

View File

@ -78,12 +78,17 @@
*> \param[in,out] VL *> \param[in,out] VL
*> \verbatim *> \verbatim
*> VL is DOUBLE PRECISION *> 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 *> \endverbatim
*> *>
*> \param[in,out] VU *> \param[in,out] VU
*> \verbatim *> \verbatim
*> VU is DOUBLE PRECISION *> 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, *> Eigenvalues less than or equal to VL, or greater than VU,
*> will not be returned. VL < VU. *> will not be returned. VL < VU.
*> If RANGE='I' or ='A', DLARRE computes bounds on the desired *> If RANGE='I' or ='A', DLARRE computes bounds on the desired
@ -93,13 +98,16 @@
*> \param[in] IL *> \param[in] IL
*> \verbatim *> \verbatim
*> IL is INTEGER *> IL is INTEGER
*> If RANGE='I', the index of the
*> smallest eigenvalue to be returned.
*> 1 <= IL <= IU <= N.
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] IU *> \param[in] IU
*> \verbatim *> \verbatim
*> IU is INTEGER *> IU is INTEGER
*> If RANGE='I', the indices (in ascending order) of the *> If RANGE='I', the index of the
*> smallest and largest eigenvalues to be returned. *> largest eigenvalue to be returned.
*> 1 <= IL <= IU <= N. *> 1 <= IL <= IU <= N.
*> \endverbatim *> \endverbatim
*> *>
@ -244,7 +252,7 @@
*> \verbatim *> \verbatim
*> INFO is INTEGER *> INFO is INTEGER
*> = 0: successful exit *> = 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. *> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO *> Needs inspection of the corresponding parameter IINFO
*> for further information. *> for further information.
@ -268,7 +276,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -297,10 +305,10 @@
$ W, WERR, WGAP, IBLOCK, INDEXW, GERS, PIVMIN, $ W, WERR, WGAP, IBLOCK, INDEXW, GERS, PIVMIN,
$ WORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER RANGE CHARACTER RANGE

View File

@ -51,7 +51,7 @@
*> \param[in] N *> \param[in] N
*> \verbatim *> \verbatim
*> N is INTEGER *> N is INTEGER
*> The order of the matrix (subblock, if the matrix splitted). *> The order of the matrix (subblock, if the matrix split).
*> \endverbatim *> \endverbatim
*> *>
*> \param[in] D *> \param[in] D
@ -174,7 +174,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -193,10 +193,10 @@
$ SPDIAM, CLGAPL, CLGAPR, PIVMIN, SIGMA, $ SPDIAM, CLGAPL, CLGAPR, PIVMIN, SIGMA,
$ DPLUS, LPLUS, WORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER CLSTRT, CLEND, INFO, N INTEGER CLSTRT, CLEND, INFO, N

View File

@ -59,12 +59,15 @@
*> \param[in] VL *> \param[in] VL
*> \verbatim *> \verbatim
*> VL is DOUBLE PRECISION *> 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 *> \endverbatim
*> *>
*> \param[in] VU *> \param[in] VU
*> \verbatim *> \verbatim
*> VU is DOUBLE PRECISION *> 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 *> eigenvalues. VL < VU. Needed to compute gaps on the left or right
*> end of the extremal eigenvalues in the desired RANGE. *> end of the extremal eigenvalues in the desired RANGE.
*> \endverbatim *> \endverbatim
@ -81,7 +84,7 @@
*> L is DOUBLE PRECISION array, dimension (N) *> L is DOUBLE PRECISION array, dimension (N)
*> On entry, the (N-1) subdiagonal elements of the unit *> On entry, the (N-1) subdiagonal elements of the unit
*> bidiagonal matrix L are in elements 1 to N-1 of L *> 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. *> is stored the corresponding shift as given by DLARRE.
*> On exit, L is overwritten. *> On exit, L is overwritten.
*> \endverbatim *> \endverbatim
@ -236,7 +239,7 @@
*> INFO is INTEGER *> INFO is INTEGER
*> = 0: successful exit *> = 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. *> < 0: One of the called subroutines signaled an internal problem.
*> Needs inspection of the corresponding parameter IINFO *> Needs inspection of the corresponding parameter IINFO
*> for further information. *> for further information.
@ -263,7 +266,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleOTHERauxiliary *> \ingroup doubleOTHERauxiliary
* *
@ -283,10 +286,10 @@
$ IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ, $ IBLOCK, INDEXW, GERS, Z, LDZ, ISUPPZ,
$ WORK, IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER DOL, DOU, INFO, LDZ, M, N INTEGER DOL, DOU, INFO, LDZ, M, N

View File

@ -72,7 +72,7 @@
*> \param[in] LDX *> \param[in] LDX
*> \verbatim *> \verbatim
*> LDX is INTEGER *> LDX is INTEGER
*> The leading dimension of the vector X. LDX >= 0. *> The leading dimension of the vector X. LDX >= M.
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:
@ -83,17 +83,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleOTHERcomputational *> \ingroup doubleOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE DLARSCL2 ( M, N, D, X, LDX ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER M, N, LDX INTEGER M, N, LDX

View File

@ -114,7 +114,11 @@
*> \param[in] LDA *> \param[in] LDA
*> \verbatim *> \verbatim
*> LDA is INTEGER *> 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 *> \endverbatim
*> *>
*> \param[out] INFO *> \param[out] INFO
@ -132,17 +136,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
* ===================================================================== * =====================================================================
SUBROUTINE DLASCL( TYPE, KL, KU, CFROM, CTO, M, N, A, LDA, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER TYPE CHARACTER TYPE

View File

@ -72,7 +72,7 @@
*> \param[in] LDX *> \param[in] LDX
*> \verbatim *> \verbatim
*> LDX is INTEGER *> LDX is INTEGER
*> The leading dimension of the vector X. LDX >= 0. *> The leading dimension of the vector X. LDX >= M.
*> \endverbatim *> \endverbatim
* *
* Authors: * Authors:
@ -83,17 +83,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup doubleOTHERcomputational *> \ingroup doubleOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE DLASCL2 ( M, N, D, X, LDX ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER M, N, LDX INTEGER M, N, LDX

View File

@ -60,7 +60,7 @@
*> *>
*> The first stage consists of deflating the size of the problem *> The first stage consists of deflating the size of the problem
*> when there are multiple singular values or when there are zeros in *> 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 *> secular equation problem is reduced by one. This stage is
*> performed by the routine DLASD2. *> performed by the routine DLASD2.
*> *>
@ -156,7 +156,7 @@
*> The leading dimension of the array VT. LDVT >= max( 1, M ). *> The leading dimension of the array VT. LDVT >= max( 1, M ).
*> \endverbatim *> \endverbatim
*> *>
*> \param[out] IDXQ *> \param[in,out] IDXQ
*> \verbatim *> \verbatim
*> IDXQ is INTEGER array, dimension(N) *> IDXQ is INTEGER array, dimension(N)
*> This contains the permutation which will reintegrate the *> This contains the permutation which will reintegrate the
@ -190,7 +190,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -204,10 +204,10 @@
SUBROUTINE DLASD1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT, SUBROUTINE DLASD1( NL, NR, SQRE, D, ALPHA, BETA, U, LDU, VT, LDVT,
$ IDXQ, IWORK, WORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER INFO, LDU, LDVT, NL, NR, SQRE INTEGER INFO, LDU, LDVT, NL, NR, SQRE

View File

@ -74,7 +74,7 @@
*> *>
*> The first stage consists of deflating the size of the problem *> The first stage consists of deflating the size of the problem
*> when there are multiple singular values or if there is a zero *> 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 *> secular equation problem is reduced by one. This stage is
*> performed by the routine DLASD7. *> performed by the routine DLASD7.
*> *>
@ -232,14 +232,13 @@
*> \param[out] DIFR *> \param[out] DIFR
*> \verbatim *> \verbatim
*> DIFR is DOUBLE PRECISION array, *> DIFR is DOUBLE PRECISION array,
*> dimension ( LDGNUM, 2 ) if ICOMPQ = 1 and *> dimension ( LDDIFR, 2 ) if ICOMPQ = 1 and
*> dimension ( N ) if ICOMPQ = 0. *> dimension ( K ) if ICOMPQ = 0.
*> On exit, DIFR(I, 1) is the distance between I-th updated *> On exit, DIFR(I,1) = D(I) - DSIGMA(I+1), DIFR(K,1) is not
*> (undeflated) singular value and the I+1-th (undeflated) old *> defined and will not be referenced.
*> singular value.
*> *>
*> If ICOMPQ = 1, DIFR(1:K,2) is an array containing the *> If ICOMPQ = 1, DIFR(1:K,2) is an array containing the
*> normalizing factors for the right singular vector matrix. *> normalizing factors for the right singular vector matrix.
*> *>
*> See DLASD8 for details on DIFL and DIFR. *> See DLASD8 for details on DIFL and DIFR.
*> \endverbatim *> \endverbatim
@ -298,7 +297,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -314,10 +313,10 @@
$ LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK, $ LDGNUM, POLES, DIFL, DIFR, Z, K, C, S, WORK,
$ IWORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER GIVPTR, ICOMPQ, INFO, K, LDGCOL, LDGNUM, NL, INTEGER GIVPTR, ICOMPQ, INFO, K, LDGCOL, LDGNUM, NL,

View File

@ -59,7 +59,7 @@
*> \verbatim *> \verbatim
*> UPLO is CHARACTER*1 *> UPLO is CHARACTER*1
*> On entry, UPLO specifies whether the input bidiagonal matrix *> 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. *> not.
*> UPLO = 'U' or 'u' B is upper bidiagonal. *> UPLO = 'U' or 'u' B is upper bidiagonal.
*> UPLO = 'L' or 'l' B is lower bidiagonal. *> UPLO = 'L' or 'l' B is lower bidiagonal.
@ -197,7 +197,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERauxiliary *> \ingroup auxOTHERauxiliary
* *
@ -211,10 +211,10 @@
SUBROUTINE DLASDQ( UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT, SUBROUTINE DLASDQ( UPLO, SQRE, N, NCVT, NRU, NCC, D, E, VT, LDVT,
$ U, LDU, C, LDC, WORK, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER UPLO CHARACTER UPLO

View File

@ -60,7 +60,7 @@
*> *>
*> \param[in,out] Z *> \param[in,out] Z
*> \verbatim *> \verbatim
*> Z is DOUBLE PRECISION array, dimension ( 4*N ) *> Z is DOUBLE PRECISION array, dimension ( 4*N0 )
*> Z holds the qd array. *> Z holds the qd array.
*> \endverbatim *> \endverbatim
*> *>
@ -173,7 +173,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date November 2015 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
@ -182,10 +182,10 @@
$ ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1, $ ITER, NDIV, IEEE, TTYPE, DMIN1, DMIN2, DN, DN1,
$ DN2, G, TAU ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* November 2015 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
LOGICAL IEEE LOGICAL IEEE

View File

@ -56,7 +56,7 @@
*> *>
*> \param[in] Z *> \param[in] Z
*> \verbatim *> \verbatim
*> Z is DOUBLE PRECISION array, dimension ( 4*N ) *> Z is DOUBLE PRECISION array, dimension ( 4*N0 )
*> Z holds the qd array. *> Z holds the qd array.
*> \endverbatim *> \endverbatim
*> *>
@ -122,7 +122,7 @@
*> *>
*> \param[in,out] G *> \param[in,out] G
*> \verbatim *> \verbatim
*> G is REAL *> G is DOUBLE PRECISION
*> G is passed as an argument in order to save its value between *> G is passed as an argument in order to save its value between
*> calls to DLASQ4. *> calls to DLASQ4.
*> \endverbatim *> \endverbatim
@ -135,7 +135,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
@ -151,10 +151,10 @@
SUBROUTINE DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN, SUBROUTINE DLASQ4( I0, N0, Z, PP, N0IN, DMIN, DMIN1, DMIN2, DN,
$ DN1, DN2, TAU, TTYPE, G ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
INTEGER I0, N0, N0IN, PP, TTYPE INTEGER I0, N0, N0IN, PP, TTYPE

View File

@ -81,17 +81,17 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup auxOTHERcomputational *> \ingroup auxOTHERcomputational
* *
* ===================================================================== * =====================================================================
SUBROUTINE DLASRT( ID, N, D, INFO ) 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
CHARACTER ID CHARACTER ID
@ -123,7 +123,7 @@
* .. * ..
* .. Executable Statements .. * .. Executable Statements ..
* *
* Test the input paramters. * Test the input parameters.
* *
INFO = 0 INFO = 0
DIR = -1 DIR = -1

View File

@ -166,7 +166,7 @@
*> \author Univ. of Colorado Denver *> \author Univ. of Colorado Denver
*> \author NAG Ltd. *> \author NAG Ltd.
* *
*> \date September 2012 *> \date June 2016
* *
*> \ingroup doubleSYauxiliary *> \ingroup doubleSYauxiliary
* *
@ -174,10 +174,10 @@
SUBROUTINE DLASY2( LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR, SUBROUTINE DLASY2( LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR,
$ LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO ) $ 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, -- * -- LAPACK is a software package provided by Univ. of Tennessee, --
* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
* September 2012 * June 2016
* *
* .. Scalar Arguments .. * .. Scalar Arguments ..
LOGICAL LTRANL, LTRANR LOGICAL LTRANL, LTRANR
@ -438,8 +438,10 @@
80 CONTINUE 80 CONTINUE
90 CONTINUE 90 CONTINUE
100 CONTINUE 100 CONTINUE
IF( ABS( T16( 4, 4 ) ).LT.SMIN ) IF( ABS( T16( 4, 4 ) ).LT.SMIN ) THEN
$ T16( 4, 4 ) = SMIN INFO = 1
T16( 4, 4 ) = SMIN
END IF
SCALE = ONE SCALE = ONE
IF( ( EIGHT*SMLNUM )*ABS( BTMP( 1 ) ).GT.ABS( T16( 1, 1 ) ) .OR. IF( ( EIGHT*SMLNUM )*ABS( BTMP( 1 ) ).GT.ABS( T16( 1, 1 ) ) .OR.
$ ( EIGHT*SMLNUM )*ABS( BTMP( 2 ) ).GT.ABS( T16( 2, 2 ) ) .OR. $ ( EIGHT*SMLNUM )*ABS( BTMP( 2 ) ).GT.ABS( T16( 2, 2 ) ) .OR.

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