Loading...
Searching...
No Matches

## iparmq()

integer function iparmq | ( | integer | ispec,
|  | character, dimension( * ) | name,
|  | character, dimension( * ) | opts,
|  | integer | n,
|  | integer | ilo,
|  | integer | ihi,
|  | integer | lwork )

IPARMQ

Download IPARMQ + dependencies [TGZ] [ZIP] [TXT]

Purpose:

      !>
      !>      This program sets problem and machine dependent parameters
      !>      useful for xHSEQR and related subroutines for eigenvalue
      !>      problems. It is called whenever
      !>      IPARMQ is called with 12 <= ISPEC <= 16
      !>

Parameters

  [in]

  ISPEC

      !>          ISPEC is INTEGER
      !>              ISPEC specifies which tunable parameter IPARMQ should
      !>              return.
      !>
      !>              ISPEC=12: (INMIN)  Matrices of order nmin or less
      !>                        are sent directly to xLAHQR, the implicit
      !>                        double shift QR algorithm.  NMIN must be
      !>                        at least 11.
      !>
      !>              ISPEC=13: (INWIN)  Size of the deflation window.
      !>                        This is best set greater than or equal to
      !>                        the number of simultaneous shifts NS.
      !>                        Larger matrices benefit from larger deflation
      !>                        windows.
      !>
      !>              ISPEC=14: (INIBL) Determines when to stop nibbling and
      !>                        invest in an (expensive) multi-shift QR sweep.
      !>                        If the aggressive early deflation subroutine
      !>                        finds LD converged eigenvalues from an order
      !>                        NW deflation window and LD > (NW*NIBBLE)/100,
      !>                        then the next QR sweep is skipped and early
      !>                        deflation is applied immediately to the
      !>                        remaining active diagonal block.  Setting
      !>                        IPARMQ(ISPEC=14) = 0 causes TTQRE to skip a
      !>                        multi-shift QR sweep whenever early deflation
      !>                        finds a converged eigenvalue.  Setting
      !>                        IPARMQ(ISPEC=14) greater than or equal to 100
      !>                        prevents TTQRE from skipping a multi-shift
      !>                        QR sweep.
      !>
      !>              ISPEC=15: (NSHFTS) The number of simultaneous shifts in
      !>                        a multi-shift QR iteration.
      !>
      !>              ISPEC=16: (IACC22) IPARMQ is set to 0, 1 or 2 with the
      !>                        following meanings.
      !>                        0:  During the multi-shift QR/QZ sweep,
      !>                            blocked eigenvalue reordering, blocked
      !>                            Hessenberg-triangular reduction,
      !>                            reflections and/or rotations are not
      !>                            accumulated when updating the
      !>                            far-from-diagonal matrix entries.
      !>                        1:  During the multi-shift QR/QZ sweep,
      !>                            blocked eigenvalue reordering, blocked
      !>                            Hessenberg-triangular reduction,
      !>                            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
      !>                        IPARMQ(ISPEC=16)=1 may be more efficient than
      !>                        IPARMQ(ISPEC=16)=2 despite the greater level of
      !>                        arithmetic work implied by the latter choice.)
      !>
      !>              ISPEC=17: (ICOST) An estimate of the relative cost of flops
      !>                        within the near-the-diagonal shift chase compared
      !>                        to flops within the BLAS calls of a QZ sweep.
      !>

  [in]

  NAME

      !>          NAME is CHARACTER string
      !>               Name of the calling subroutine
      !>

  [in]

  OPTS

      !>          OPTS is CHARACTER string
      !>               This is a concatenation of the string arguments to
      !>               TTQRE.
      !>

  [in]

  N

      !>          N is INTEGER
      !>               N is the order of the Hessenberg matrix H.
      !>

  [in]

  ILO

      !>          ILO is INTEGER
      !>

  [in]

  IHI

      !>          IHI is INTEGER
      !>               It is assumed that H is already upper triangular
      !>               in rows and columns 1:ILO-1 and IHI+1:N.
      !>

  [in]

  LWORK

      !>          LWORK is INTEGER
      !>               The amount of workspace available.
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.

Further Details:

      !>
      !>       Little is known about how best to choose these parameters.
      !>       It is possible to use different values of the parameters
      !>       for each of CHSEQR, DHSEQR, SHSEQR and ZHSEQR.
      !>
      !>       It is probably best to choose different parameters for
      !>       different matrices and different parameters at different
      !>       times during the iteration, but this has not been
      !>       implemented --- yet.
      !>
      !>
      !>       The best choices of most of the parameters depend
      !>       in an ill-understood way on the relative execution
      !>       rate of xLAQR3 and xLAQR5 and on the nature of each
      !>       particular eigenvalue problem.  Experiment may be the
      !>       only practical way to determine which choices are most
      !>       effective.
      !>
      !>       Following is a list of default values supplied by IPARMQ.
      !>       These defaults may be adjusted in order to attain better
      !>       performance in any particular computational environment.
      !>
      !>       IPARMQ(ISPEC=12) The xLAHQR vs xLAQR0 crossover point.
      !>                        Default: 75. (Must be at least 11.)
      !>
      !>       IPARMQ(ISPEC=13) Recommended deflation window size.
      !>                        This depends on ILO, IHI and NS, the
      !>                        number of simultaneous shifts returned
      !>                        by IPARMQ(ISPEC=15).  The default for
      !>                        (IHI-ILO+1) <= 500 is NS.  The default
      !>                        for (IHI-ILO+1) > 500 is 3*NS/2.
      !>
      !>       IPARMQ(ISPEC=14) Nibble crossover point.  Default: 14.
      !>
      !>       IPARMQ(ISPEC=15) Number of simultaneous shifts, NS.
      !>                        a multi-shift QR iteration.
      !>
      !>                        If IHI-ILO+1 is ...
      !>
      !>                        greater than      ...but less    ... the
      !>                        or equal to ...      than        default is
      !>
      !>                                0               30       NS =   2+
      !>                               30               60       NS =   4+
      !>                               60              150       NS =  10
      !>                              150              590       NS =  **
      !>                              590             3000       NS =  64
      !>                             3000             6000       NS = 128
      !>                             6000             infinity   NS = 256
      !>
      !>                    (+)  By default matrices of this order are
      !>                         passed to the implicit double shift routine
      !>                         xLAHQR.  See IPARMQ(ISPEC=12) above.   These
      !>                         values of NS are used only in case of a rare
      !>                         xLAHQR failure.
      !>
      !>                    (**) The asterisks (**) indicate an ad-hoc
      !>                         function increasing from 10 to 64.
      !>
      !>       IPARMQ(ISPEC=16) Select structured matrix multiply.
      !>                        (See ISPEC=16 above for details.)
      !>                        Default: 3.
      !>
      !>       IPARMQ(ISPEC=17) Relative cost heuristic for blocksize selection.
      !>                        Expressed as a percentage.
      !>                        Default: 10.
      !>