# [−][src]Struct na::linalg::Schur

`pub struct Schur<N, D> where    D: Dim,    N: ComplexField,    DefaultAllocator: Allocator<N, D, D>,  { /* fields omitted */ }`

Schur decomposition of a square matrix.

If this is a real matrix, this will be a RealField Schur decomposition.

## Methods

### `impl<N, D> Schur<N, D> where    D: Dim + DimSub<U1>,    N: ComplexField,    DefaultAllocator: Allocator<N, D, <D as DimSub<U1>>::Output>,    DefaultAllocator: Allocator<N, <D as DimSub<U1>>::Output, U1>,    DefaultAllocator: Allocator<N, D, D>,    DefaultAllocator: Allocator<N, D, U1>, `[src]

#### `pub fn new(    m: Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>) -> Schur<N, D>`[src]

Computes the Schur decomposition of a square matrix.

#### `pub fn try_new(    m: Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>,     eps: <N as ComplexField>::RealField,     max_niter: usize) -> Option<Schur<N, D>>`[src]

Attempts to compute the Schur decomposition of a square matrix.

If only eigenvalues are needed, it is more efficient to call the matrix method `.eigenvalues()` instead.

# Arguments

• `eps` − tolerance used to determine when a value converged to 0.
• `max_niter` − maximum total number of iterations performed by the algorithm. If this number of iteration is exceeded, `None` is returned. If `niter == 0`, then the algorithm continues indefinitely until convergence.

#### `pub fn unpack(    self) -> (Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>, Matrix<N, D, D, <DefaultAllocator as Allocator<N, D, D>>::Buffer>)`[src]

Retrieves the unitary matrix `Q` and the upper-quasitriangular matrix `T` such that the decomposed matrix equals `Q * T * Q.transpose()`.

#### `pub fn eigenvalues(    &self) -> Option<Matrix<N, D, U1, <DefaultAllocator as Allocator<N, D, U1>>::Buffer>>`[src]

Computes the real eigenvalues of the decomposed matrix.

Return `None` if some eigenvalues are complex.

#### `pub fn complex_eigenvalues(    &self) -> Matrix<Complex<N>, D, U1, <DefaultAllocator as Allocator<Complex<N>, D, U1>>::Buffer> where    N: RealField,    DefaultAllocator: Allocator<Complex<N>, D, U1>, `[src]

Computes the complex eigenvalues of the decomposed matrix.

## Trait Implementations

### `impl<N, D> Clone for Schur<N, D> where    D: Dim + Clone,    N: Clone + ComplexField,    DefaultAllocator: Allocator<N, D, D>, `[src]

#### `default fn clone_from(&mut self, source: &Self)`1.0.0[src]

Performs copy-assignment from `source`. Read more

## Blanket Implementations

### `impl<T, U> TryFrom for T where    U: Into<T>, `[src]

#### `type Error = Infallible`

The type returned in the event of a conversion error.

### `impl<T, U> TryInto for T where    U: TryFrom<T>, `[src]

#### `type Error = <U as TryFrom<T>>::Error`

The type returned in the event of a conversion error.

### `impl<T> Same for T`

#### `type Output = T`

Should always be `Self`