Scilab Function
Last update : April 1993

rowcomp - row compression, range

### Calling Sequence

  `[W,rk]=rowcomp(A [,flag] [,tol])`

### Parameters

- `A`: real or complex matrix
- `flag`: character string
- `tol`: real number
- `W`: square non-singular matrix (change of basis)
- `rk`: integer (rank of `A`)

### Description

Row compression of `A`. `Ac = W*A` is a row compressed matrix: i.e. `Ac=[Af;0]` with `Af` full row rank.

`flag` and `tol` are optional parameters: `flag='qr'` or `'svd'` (default `'svd'`).

`tol` is a tolerance parameter (of order `sqrt(%eps)` as default value).

The `rk` first columns of `W'` span the range of `A`.

The `rk` first (top) rows of `W` span the row range of `A`.

### Remark

A non zero vector `x` belongs to range(`A`) iff `W*x` is row compressed in accordance with `Ac` i.e the norm of its last components is small w.r.t its first components.

### Examples

    A=rand(5,2)*rand(2,4);   // 4 col. vectors, 2 independent.
    [X,dim]=rowcomp(A);Xp=X';
    svd([Xp(:,1:dim),A])     //span(A) = span(Xp(:,1:dim)
    x=A*rand(4,1);      //x belongs to span(A)
    y=X*x
    norm(y(dim+1:$))/norm(y(1:dim))    // small

### See Also

`colcomp`, `fullrf`, `fullrfk`,

### Author

F. D.; ;