version 1.13, 2014/01/27 09:28:30
|
version 1.14, 2015/11/26 11:44:21
|
Line 31
|
Line 31
|
*> \verbatim |
*> \verbatim |
*> |
*> |
*> This program sets problem and machine dependent parameters |
*> This program sets problem and machine dependent parameters |
*> useful for xHSEQR and its subroutines. It is called whenever |
*> useful for xHSEQR and related subroutines for eigenvalue |
*> ILAENV is called with 12 <= ISPEC <= 16 |
*> problems. It is called whenever |
|
*> IPARMQ is called with 12 <= ISPEC <= 16 |
*> \endverbatim |
*> \endverbatim |
* |
* |
* Arguments: |
* Arguments: |
Line 75
|
Line 76
|
*> |
*> |
*> ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the |
*> ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the |
*> following meanings. |
*> following meanings. |
*> 0: During the multi-shift QR sweep, |
*> 0: During the multi-shift QR/QZ sweep, |
*> xLAQR5 does not accumulate reflections and |
*> blocked eigenvalue reordering, blocked |
*> does not use matrix-matrix multiply to |
*> Hessenberg-triangular reduction, |
*> update the far-from-diagonal matrix |
*> reflections and/or rotations are not |
*> entries. |
*> accumulated when updating the |
*> 1: During the multi-shift QR sweep, |
|
*> xLAQR5 and/or xLAQRaccumulates reflections and uses |
|
*> matrix-matrix multiply to update the |
|
*> far-from-diagonal matrix entries. |
*> far-from-diagonal matrix entries. |
*> 2: During the multi-shift QR sweep. |
*> 1: During the multi-shift QR/QZ sweep, |
*> xLAQR5 accumulates reflections and takes |
*> blocked eigenvalue reordering, blocked |
*> advantage of 2-by-2 block structure during |
*> Hessenberg-triangular reduction, |
*> matrix-matrix multiplies. |
*> reflections and/or rotations are |
|
*> accumulated, and matrix-matrix |
|
*> multiplication is used to update the |
|
*> far-from-diagonal matrix entries. |
|
*> 2: During the multi-shift QR/QZ sweep, |
|
*> blocked eigenvalue reordering, blocked |
|
*> Hessenberg-triangular reduction, |
|
*> reflections and/or rotations are |
|
*> accumulated, and 2-by-2 block structure |
|
*> is exploited during matrix-matrix |
|
*> multiplies. |
*> (If xTRMM is slower than xGEMM, then |
*> (If xTRMM is slower than xGEMM, then |
*> IPARMQ(ISPEC=16)=1 may be more efficient than |
*> IPARMQ(ISPEC=16)=1 may be more efficient than |
*> IPARMQ(ISPEC=16)=2 despite the greater level of |
*> IPARMQ(ISPEC=16)=2 despite the greater level of |
Line 139
|
Line 147
|
*> \author Univ. of Colorado Denver |
*> \author Univ. of Colorado Denver |
*> \author NAG Ltd. |
*> \author NAG Ltd. |
* |
* |
*> \date November 2011 |
*> \date November 2015 |
* |
* |
*> \ingroup auxOTHERauxiliary |
*> \ingroup auxOTHERauxiliary |
* |
* |
Line 214
|
Line 222
|
* ===================================================================== |
* ===================================================================== |
INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK ) |
INTEGER FUNCTION IPARMQ( ISPEC, NAME, OPTS, N, ILO, IHI, LWORK ) |
* |
* |
* -- LAPACK auxiliary routine (version 3.4.0) -- |
* -- LAPACK auxiliary routine (version 3.6.0) -- |
* -- 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 |
* November 2015 |
* |
* |
* .. Scalar Arguments .. |
* .. Scalar Arguments .. |
INTEGER IHI, ILO, ISPEC, LWORK, N |
INTEGER IHI, ILO, ISPEC, LWORK, N |
Line 236
|
Line 244
|
* .. |
* .. |
* .. Local Scalars .. |
* .. Local Scalars .. |
INTEGER NH, NS |
INTEGER NH, NS |
|
INTEGER I, IC, IZ |
|
CHARACTER SUBNAM*6 |
* .. |
* .. |
* .. Intrinsic Functions .. |
* .. Intrinsic Functions .. |
INTRINSIC LOG, MAX, MOD, NINT, REAL |
INTRINSIC LOG, MAX, MOD, NINT, REAL |
Line 305
|
Line 315
|
* . by making this choice dependent also upon the |
* . by making this choice dependent also upon the |
* . NH=IHI-ILO+1. |
* . NH=IHI-ILO+1. |
* |
* |
|
* |
|
* Convert NAME to upper case if the first character is lower case. |
|
* |
IPARMQ = 0 |
IPARMQ = 0 |
IF( NS.GE.KACMIN ) |
SUBNAM = NAME |
$ IPARMQ = 1 |
IC = ICHAR( SUBNAM( 1: 1 ) ) |
IF( NS.GE.K22MIN ) |
IZ = ICHAR( 'Z' ) |
$ IPARMQ = 2 |
IF( IZ.EQ.90 .OR. IZ.EQ.122 ) THEN |
|
* |
|
* ASCII character set |
|
* |
|
IF( IC.GE.97 .AND. IC.LE.122 ) THEN |
|
SUBNAM( 1: 1 ) = CHAR( IC-32 ) |
|
DO I = 2, 6 |
|
IC = ICHAR( SUBNAM( I: I ) ) |
|
IF( IC.GE.97 .AND. IC.LE.122 ) |
|
$ SUBNAM( I: I ) = CHAR( IC-32 ) |
|
END DO |
|
END IF |
|
* |
|
ELSE IF( IZ.EQ.233 .OR. IZ.EQ.169 ) THEN |
|
* |
|
* EBCDIC character set |
|
* |
|
IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR. |
|
$ ( IC.GE.145 .AND. IC.LE.153 ) .OR. |
|
$ ( IC.GE.162 .AND. IC.LE.169 ) ) THEN |
|
SUBNAM( 1: 1 ) = CHAR( IC+64 ) |
|
DO I = 2, 6 |
|
IC = ICHAR( SUBNAM( I: I ) ) |
|
IF( ( IC.GE.129 .AND. IC.LE.137 ) .OR. |
|
$ ( IC.GE.145 .AND. IC.LE.153 ) .OR. |
|
$ ( IC.GE.162 .AND. IC.LE.169 ) )SUBNAM( I: |
|
$ I ) = CHAR( IC+64 ) |
|
END DO |
|
END IF |
|
* |
|
ELSE IF( IZ.EQ.218 .OR. IZ.EQ.250 ) THEN |
|
* |
|
* Prime machines: ASCII+128 |
|
* |
|
IF( IC.GE.225 .AND. IC.LE.250 ) THEN |
|
SUBNAM( 1: 1 ) = CHAR( IC-32 ) |
|
DO I = 2, 6 |
|
IC = ICHAR( SUBNAM( I: I ) ) |
|
IF( IC.GE.225 .AND. IC.LE.250 ) |
|
$ SUBNAM( I: I ) = CHAR( IC-32 ) |
|
END DO |
|
END IF |
|
END IF |
|
* |
|
IF( SUBNAM( 2:6 ).EQ.'GGHRD' .OR. |
|
$ SUBNAM( 2:6 ).EQ.'GGHD3' ) THEN |
|
IPARMQ = 1 |
|
IF( NH.GE.K22MIN ) |
|
$ IPARMQ = 2 |
|
ELSE IF ( SUBNAM( 4:6 ).EQ.'EXC' ) THEN |
|
IF( NH.GE.KACMIN ) |
|
$ IPARMQ = 1 |
|
IF( NH.GE.K22MIN ) |
|
$ IPARMQ = 2 |
|
ELSE IF ( SUBNAM( 2:6 ).EQ.'HSEQR' .OR. |
|
$ SUBNAM( 2:5 ).EQ.'LAQR' ) THEN |
|
IF( NS.GE.KACMIN ) |
|
$ IPARMQ = 1 |
|
IF( NS.GE.K22MIN ) |
|
$ IPARMQ = 2 |
|
END IF |
* |
* |
ELSE |
ELSE |
* ===== invalid value of ispec ===== |
* ===== invalid value of ispec ===== |