## IB01OD

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

```
```  None
```
Example

Program Text

```  None
```
Program Data
```  None
```
Program Results
```  None
```