## SB01BX

### Choosing the closest real (complex conjugate) eigenvalue(s) to a given real (complex) value

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

      To choose a real eigenvalue or a pair of complex conjugate
      eigenvalues at "minimal" distance to a given real or complex
      value.

Specification

          SUBROUTINE SB01BX( REIG, N, XR, XI, WR, WI, S, P )
    C     .. Scalar Arguments ..
          LOGICAL          REIG
          INTEGER          N
          DOUBLE PRECISION P, S, XI ,XR
    C     .. Array Arguments ..
          DOUBLE PRECISION WI(*), WR(*)

Arguments

Mode Parameters

      REIG    LOGICAL
              Specifies the type of eigenvalues as follows:
              = .TRUE.,  a real eigenvalue is to be selected;
              = .FALSE., a pair of complex eigenvalues is to be
                         selected.

Input/Output Parameters

      N       (input) INTEGER
              The number of eigenvalues contained in the arrays WR
              and WI.  N >= 1.

      XR,XI   (input) DOUBLE PRECISION
              If REIG = .TRUE., XR must contain the real value and XI
              is assumed zero and therefore not referenced.
              If REIG = .FALSE., XR must contain the real part and XI
              the imaginary part, respectively, of the complex value.

      WR,WI   (input/output) DOUBLE PRECISION array, dimension (N)
              On entry, if REIG = .TRUE., WR must contain the real
              eigenvalues from which an eigenvalue at minimal distance
              to XR is to be selected. In this case, WI is considered
              zero and therefore not referenced.
              On entry, if REIG = .FALSE., WR and WI must contain the
              real and imaginary parts, respectively, of the eigenvalues
              from which a pair of complex conjugate eigenvalues at
              minimal "distance" to XR + jXI is to be selected.
              The eigenvalues of each pair of complex conjugate
              eigenvalues must appear consecutively.
              On exit, the elements of these arrays are reordered such
              that the selected eigenvalue(s) is (are) found in the
              last element(s) of these arrays.

      S,P     (output) DOUBLE PRECISION
              If REIG = .TRUE., S (and also P) contains the value of
              the selected real eigenvalue.
              If REIG = .FALSE., S and P contain the sum and product,
              respectively, of the selected complex conjugate pair of
              eigenvalues.

Further Comments

      For efficiency reasons, |x| + |y| is used for a complex number
      x + jy, instead of its modulus.

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index