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

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

The QR decomposition of a general matrix.

## Methods

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

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

Computes the QR decomposition using householder reflections.

#### `pub fn r(    &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]

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

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

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

This is usually faster than `r` but consumes `self`.

#### `pub fn q(    &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 `Q` of this decomposition.

#### `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, C, <DefaultAllocator as Allocator<N, <R as DimMin<C>>::Output, C>>::Buffer>) where    <R as DimMin<C>>::Output: DimMin<C>,    DefaultAllocator: Allocator<N, R, <R as DimMin<C>>::Output>,    DefaultAllocator: Reallocator<N, R, C, <R as DimMin<C>>::Output, C>,    <<R as DimMin<C>>::Output as DimMin<C>>::Output == <R as DimMin<C>>::Output, `[src]

Unpacks this decomposition into its two matrix factors.

#### `pub fn q_tr_mul<R2, C2, S2>(&self, rhs: &mut Matrix<N, R2, C2, S2>) where    C2: Dim,    R2: Dim,    S2: StorageMut<N, R2, C2>, `[src]

Multiplies the provided matrix by the transpose of the `Q` matrix of this decomposition.

### `impl<N, D> QR<N, D, D> where    D: DimMin<D, Output = D>,    N: ComplexField,    DefaultAllocator: Allocator<N, D, D>,    DefaultAllocator: Allocator<N, D, U1>, `[src]

#### `pub fn solve<R2, C2, S2>(    &self,     b: &Matrix<N, R2, C2, S2>) -> Option<Matrix<N, R2, C2, <DefaultAllocator as Allocator<N, R2, C2>>::Buffer>> where    C2: Dim,    R2: Dim,    S2: StorageMut<N, R2, C2>,    ShapeConstraint: SameNumberOfRows<R2, D>,    DefaultAllocator: Allocator<N, R2, C2>, `[src]

Solves the linear system `self * x = b`, where `x` is the unknown to be determined.

Returns `None` if `self` is not invertible.

#### `pub fn solve_mut<R2, C2, S2>(&self, b: &mut Matrix<N, R2, C2, S2>) -> bool where    C2: Dim,    R2: Dim,    S2: StorageMut<N, R2, C2>,    ShapeConstraint: SameNumberOfRows<R2, D>, `[src]

Solves the linear system `self * x = b`, where `x` is the unknown to be determined.

If the decomposed matrix is not invertible, this returns `false` and its input `b` is overwritten with garbage.

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

Computes the inverse of the decomposed matrix.

Returns `None` if the decomposed matrix is not invertible.

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

Indicates if the decomposed matrix is invertible.

## Trait Implementations

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