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

`pub struct Bidiagonal<N, R, C> where    C: Dim,    N: ComplexField,    R: DimMin<C>,    <R as DimMin<C>>::Output: DimSub<U1>,    DefaultAllocator: Allocator<N, R, C>,    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, U1>,    DefaultAllocator: Allocator<N, <<R as DimMin<C>>::Output as DimSub<U1>>::Output, U1>,  { /* fields omitted */ }`

The bidiagonalization of a general matrix.

## Methods

### `impl<N, R, C> Bidiagonal<N, R, C> where    C: Dim,    N: ComplexField,    R: DimMin<C>,    <R as DimMin<C>>::Output: DimSub<U1>,    DefaultAllocator: Allocator<N, R, C>,    DefaultAllocator: Allocator<N, C, U1>,    DefaultAllocator: Allocator<N, R, U1>,    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, U1>,    DefaultAllocator: Allocator<N, <<R as DimMin<C>>::Output as DimSub<U1>>::Output, U1>, `[src]

#### `pub fn new(    matrix: Matrix<N, R, C, <DefaultAllocator as Allocator<N, R, C>>::Buffer>) -> Bidiagonal<N, R, C>`[src]

Computes the Bidiagonal decomposition using householder reflections.

#### `pub fn is_upper_diagonal(&self) -> bool`[src]

Indicates whether this decomposition contains an upper-diagonal matrix.

#### `pub fn unpack(    self) -> (Matrix<N, R, <R as DimMin<C>>::Output, <DefaultAllocator as Allocator<N, R, <R as DimMin<C>>::Output>>::Buffer>, Matrix<N, <R as DimMin<C>>::Output, <R as DimMin<C>>::Output, <DefaultAllocator as Allocator<N, <R as DimMin<C>>::Output, <R as DimMin<C>>::Output>>::Buffer>, Matrix<N, <R as DimMin<C>>::Output, C, <DefaultAllocator as Allocator<N, <R as DimMin<C>>::Output, C>>::Buffer>) where    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, <R as DimMin<C>>::Output>,    DefaultAllocator: Allocator<N, R, <R as DimMin<C>>::Output>,    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, C>, `[src]

Unpacks this decomposition into its three matrix factors `(U, D, V^t)`.

The decomposed matrix `M` is equal to `U * D * V^t`.

#### `pub fn d(    &self) -> Matrix<N, <R as DimMin<C>>::Output, <R as DimMin<C>>::Output, <DefaultAllocator as Allocator<N, <R as DimMin<C>>::Output, <R as DimMin<C>>::Output>>::Buffer> where    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, <R as DimMin<C>>::Output>, `[src]

Retrieves the upper trapezoidal submatrix `R` of this decomposition.

#### `pub fn u(    &self) -> Matrix<N, R, <R as DimMin<C>>::Output, <DefaultAllocator as Allocator<N, R, <R as DimMin<C>>::Output>>::Buffer> where    DefaultAllocator: Allocator<N, R, <R as DimMin<C>>::Output>, `[src]

Computes the orthogonal matrix `U` of this `U * D * V` decomposition.

#### `pub fn v_t(    &self) -> Matrix<N, <R as DimMin<C>>::Output, C, <DefaultAllocator as Allocator<N, <R as DimMin<C>>::Output, C>>::Buffer> where    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, C>, `[src]

Computes the orthogonal matrix `V_t` of this `U * D * V_t` decomposition.

#### `pub fn diagonal(    &self) -> Matrix<<N as ComplexField>::RealField, <R as DimMin<C>>::Output, U1, <DefaultAllocator as Allocator<<N as ComplexField>::RealField, <R as DimMin<C>>::Output, U1>>::Buffer> where    DefaultAllocator: Allocator<<N as ComplexField>::RealField, <R as DimMin<C>>::Output, U1>, `[src]

The diagonal part of this decomposed matrix.

#### `pub fn off_diagonal(    &self) -> Matrix<<N as ComplexField>::RealField, <<R as DimMin<C>>::Output as DimSub<U1>>::Output, U1, <DefaultAllocator as Allocator<<N as ComplexField>::RealField, <<R as DimMin<C>>::Output as DimSub<U1>>::Output, U1>>::Buffer> where    DefaultAllocator: Allocator<<N as ComplexField>::RealField, <<R as DimMin<C>>::Output as DimSub<U1>>::Output, U1>, `[src]

The off-diagonal part of this decomposed matrix.

## Trait Implementations

### `impl<N, R, C> Clone for Bidiagonal<N, R, C> where    C: Dim + Clone,    N: Clone + ComplexField,    R: DimMin<C> + Clone,    <R as DimMin<C>>::Output: DimSub<U1>,    DefaultAllocator: Allocator<N, R, C>,    DefaultAllocator: Allocator<N, <R as DimMin<C>>::Output, U1>,    DefaultAllocator: Allocator<N, <<R as DimMin<C>>::Output as DimSub<U1>>::Output, U1>, `[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`