###
Estimating the system order

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

To estimate the system order, based on the singular values of the
relevant part of the triangular factor of the concatenated block
Hankel matrices.

**Specification**
SUBROUTINE IB01OD( CTRL, NOBR, L, SV, N, TOL, IWARN, INFO )
C .. Scalar Arguments ..
DOUBLE PRECISION TOL
INTEGER INFO, IWARN, L, N, NOBR
CHARACTER CTRL
C .. Array Arguments ..
DOUBLE PRECISION SV(*)

**Arguments**
**Mode Parameters**

CTRL CHARACTER*1
Specifies whether or not the user's confirmation of the
system order estimate is desired, as follows:
= 'C': user's confirmation;
= 'N': no confirmation.
If CTRL = 'C', a reverse communication routine, IB01OY,
is called, and, after inspecting the singular values and
system order estimate, n, the user may accept n or set
a new value.
IB01OY is not called by the routine if CTRL = 'N'.

**Input/Output Parameters**
NOBR (input) INTEGER
The number of block rows, s, in the processed input and
output block Hankel matrices. NOBR > 0.
L (input) INTEGER
The number of system outputs. L > 0.
SV (input) DOUBLE PRECISION array, dimension ( L*NOBR )
The singular values of the relevant part of the triangular
factor from the QR factorization of the concatenated block
Hankel matrices.
N (output) INTEGER
The estimated order of the system.

**Tolerances**
TOL DOUBLE PRECISION
Absolute tolerance used for determining an estimate of
the system order. If TOL >= 0, the estimate is
indicated by the index of the last singular value greater
than or equal to TOL. (Singular values less than TOL
are considered as zero.) When TOL = 0, an internally
computed default value, TOL = NOBR*EPS*SV(1), is used,
where SV(1) is the maximal singular value, and EPS is
the relative machine precision (see LAPACK Library routine
DLAMCH). When TOL < 0, the estimate is indicated by the
index of the singular value that has the largest
logarithmic gap to its successor.

**Warning Indicator**
IWARN INTEGER
= 0: no warning;
= 3: all singular values were exactly zero, hence N = 0.
(Both input and output were identically zero.)

**Error Indicator**
INFO INTEGER
= 0: successful exit;
< 0: if INFO = -i, the i-th argument had an illegal
value.

**Method**
The singular values are compared to the given, or default TOL, and
the estimated order n is returned, possibly after user's
confirmation.

**Further Comments**
None

**Example**
**Program Text**

None

**Program Data**
None

**Program Results**
None

**Return to Supporting Routines index**