version 1.1, 2015/11/26 11:44:23
|
version 1.2, 2016/08/27 15:27:13
|
Line 1
|
Line 1
|
*> \brief \b ZGSVJ1 pre-processor for the routine sgesvj, applies Jacobi rotations targeting only particular pivots. |
*> \brief \b ZGSVJ1 pre-processor for the routine zgesvj, applies Jacobi rotations targeting only particular pivots. |
* |
* |
* =========== DOCUMENTATION =========== |
* =========== DOCUMENTATION =========== |
* |
* |
Line 105
|
Line 105
|
*> |
*> |
*> \param[in,out] A |
*> \param[in,out] A |
*> \verbatim |
*> \verbatim |
*> A is DOUBLE PRECISION array, dimension (LDA,N) |
*> A is COMPLEX*16 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, |
Line 124
|
Line 124
|
*> |
*> |
*> \param[in,out] D |
*> \param[in,out] D |
*> \verbatim |
*> \verbatim |
*> D is DOUBLE PRECISION array, dimension (N) |
*> D is COMPLEX*16 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. |
Line 154
|
Line 154
|
*> |
*> |
*> \param[in,out] V |
*> \param[in,out] V |
*> \verbatim |
*> \verbatim |
*> V is DOUBLE PRECISION array, dimension (LDV,N) |
*> V is COMPLEX*16 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 |
Line 199
|
Line 199
|
*> |
*> |
*> \param[out] WORK |
*> \param[out] WORK |
*> \verbatim |
*> \verbatim |
*> WORK is DOUBLE PRECISION array, dimension (LWORK) |
*> WORK is COMPLEX*16 array, dimension (LWORK) |
*> \endverbatim |
*> \endverbatim |
*> |
*> |
*> \param[in] LWORK |
*> \param[in] LWORK |
Line 223
|
Line 223
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2015 |
*> \date June 2016 |
* |
* |
*> \ingroup complex16OTHERcomputational |
*> \ingroup complex16OTHERcomputational |
* |
* |
Line 236
|
Line 236
|
SUBROUTINE ZGSVJ1( JOBV, M, N, N1, A, LDA, D, SVA, MV, V, LDV, |
SUBROUTINE ZGSVJ1( 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 |
* |
* |
IMPLICIT NONE |
IMPLICIT NONE |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
Line 271
|
Line 271
|
* .. |
* .. |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
INTRINSIC ABS, DCONJG, DMAX1, DFLOAT, MIN0, DSIGN, DSQRT |
INTRINSIC ABS, DCONJG, DMAX1, DBLE, MIN0, DSIGN, DSQRT |
* .. |
* .. |
* .. External Functions .. |
* .. External Functions .. |
DOUBLE PRECISION DZNRM2 |
DOUBLE PRECISION DZNRM2 |
Line 335
|
Line 335
|
SMALL = SFMIN / EPS |
SMALL = SFMIN / EPS |
BIG = ONE / SFMIN |
BIG = ONE / SFMIN |
ROOTBIG = ONE / ROOTSFMIN |
ROOTBIG = ONE / ROOTSFMIN |
LARGE = BIG / DSQRT( DFLOAT( M*N ) ) |
LARGE = BIG / DSQRT( DBLE( M*N ) ) |
BIGTHETA = ONE / ROOTEPS |
BIGTHETA = ONE / ROOTEPS |
ROOTTOL = DSQRT( TOL ) |
ROOTTOL = DSQRT( TOL ) |
* |
* |
Line 660
|
Line 660
|
IF( ( i.LT.SWBAND ) .AND. ( ( MXAAPQ.LE.ROOTTOL ) .OR. |
IF( ( i.LT.SWBAND ) .AND. ( ( MXAAPQ.LE.ROOTTOL ) .OR. |
$ ( ISWROT.LE.N ) ) )SWBAND = i |
$ ( ISWROT.LE.N ) ) )SWBAND = i |
* |
* |
IF( ( i.GT.SWBAND+1 ) .AND. ( MXAAPQ.LT.DSQRT( DFLOAT( N ) )* |
IF( ( i.GT.SWBAND+1 ) .AND. ( MXAAPQ.LT.DSQRT( DBLE( N ) )* |
$ TOL ) .AND. ( DFLOAT( N )*MXAAPQ*MXSINJ.LT.TOL ) ) THEN |
$ TOL ) .AND. ( DBLE( N )*MXAAPQ*MXSINJ.LT.TOL ) ) THEN |
GO TO 1994 |
GO TO 1994 |
END IF |
END IF |
* |
* |