## 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