MB03NY

Computing the smallest singular value of A - jwI

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

Purpose

  To compute the smallest singular value of A - jwI.

Specification
      DOUBLE PRECISION FUNCTION MB03NY( N, OMEGA, A, LDA, S, DWORK,
     $                                  LDWORK, CWORK, LCWORK, INFO )
C     .. Scalar Arguments ..
      INTEGER                INFO, LCWORK, LDA, LDWORK, N
      DOUBLE PRECISION       OMEGA
C     .. Array Arguments ..
      DOUBLE PRECISION       A(LDA,*), DWORK(*), S(*)
      COMPLEX*16             CWORK(*)

Function Value
  MB03NY  DOUBLE PRECISION
          The smallest singular value of A - jwI (if INFO = 0).
          If N = 0, the function value is set to zero.

Arguments

Input/Output Parameters

  N       (input) INTEGER
          The order of the the matrix A.  N >= 0.

  OMEGA   (input) DOUBLE PRECISION
          The constant factor of A - jwI.

  A       (input/workspace) DOUBLE PRECISION array, dimension
          (LDA,N)
          On entry, the leading N-by-N part of this array must
          contain the matrix A.
          On exit, if OMEGA = 0, the contents of this array are
          destroyed. Otherwise, this array is unchanged.

  LDA     INTEGER
          The leading dimension of array A.  LDA >= MAX(1,N).

  S       (output) DOUBLE PRECISION array, dimension (N)
          The singular values of A - jwI in decreasing order.

Workspace
  DWORK   DOUBLE PRECISION array, dimension (LDWORK)
          On exit, if INFO = 0, DWORK(1) returns the optimal value
          of LDWORK.

  LDWORK  INTEGER
          The length of the array DWORK.  LDWORK >= MAX( 1, 5*N ).
          For optimum performance LDWORK should be larger.

  CWORK   COMPLEX*16 array, dimension (LCWORK)
          On exit, if INFO = 0 and OMEGA <> 0, CWORK(1) returns the
          optimal value of LCWORK.
          If OMEGA is zero, this array is not referenced.

  LCWORK  INTEGER
          The length of the array CWORK.
          LCWORK >= 1,                 if OMEGA =  0;
          LCWORK >= MAX( 1, N*N+3*N ), if OMEGA <> 0.
          For optimum performance LCWORK should be larger.

Error Indicator
  INFO    INTEGER
          = 0:  successful exit;
          < 0:  if INFO = -i, the i-th argument had an illegal
                value;
          = 2:  The SVD algorithm (in either LAPACK Library routine
                DGESVD or ZGESVD) fails to converge; this error is
                very rare.

Method
  This procedure simply constructs the matrix A - jwI, and calls
  ZGESVD if w is not zero, or DGESVD if w = 0.

Further Comments
  This routine is not very efficient because it computes all
  singular values, but it is very accurate. The routine is intended
  to be called only from the SLICOT Library routine AB13FD.

Example

Program Text

  None
Program Data
  None
Program Results
  None

Return to Supporting Routines index