## SB03OV

### Construction of a complex plane rotation to annihilate a real number, modifying a complex number

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

Purpose

      To construct a complex plane rotation such that, for a complex
      number  a  and a real number  b,

         ( conjg( c )  s )*( a ) = ( d ),
         (       -s    c ) ( b )   ( 0 )

      where  d  is always real and is overwritten on  a,  so that on
      return the imaginary part of  a  is zero.  b  is unaltered.

      This routine has A and C declared as REAL, because it is intended
      for use within a real Lyapunov solver and the REAL declarations
      mean that a standard Fortran DOUBLE PRECISION version may be
      readily constructed.  However A and C could safely be declared
      COMPLEX in the calling program, although some systems may give a
      type mismatch warning.

Specification

          SUBROUTINE SB03OV( A, B, SMALL, C, S )
    C     .. Scalar Arguments ..
          DOUBLE PRECISION  B, S, SMALL
    C     .. Array Arguments ..
          DOUBLE PRECISION  A(2), C(2)

Arguments

Input/Output Parameters

      A       (input/output) DOUBLE PRECISION array, dimension (2)
              On entry, A(1) and A(2) must contain the real and
              imaginary part, respectively, of the complex number a.
              On exit, A(1) contains the real part of d, and A(2) is
              set to zero.

      B       (input) DOUBLE PRECISION
              The real number b.

      SMALL   (input) DOUBLE PRECISION
              A small real number. If the norm d of [ a; b ] is smaller
              than SMALL, then the rotation is taken as a unit matrix,
              and A(1) and A(2) are set to d and 0, respectively.

      C       (output) DOUBLE PRECISION array, dimension (2)
              C(1) and C(2) contain the real and imaginary part,
              respectively, of the complex number c, the cosines of
              the plane rotation.

      S       (output) DOUBLE PRECISION
              The real number s, the sines of the plane rotation.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index