Skip to main content

FullPivLuScalar

Trait FullPivLuScalar 

Source
pub trait FullPivLuScalar: BackendLinalgScalar {
    // Required method
    fn solve_right_full_piv_lu(
        lhs_values: &[Self],
        lhs_rows: usize,
        lhs_cols: usize,
        pivot_values: &[Self],
        pivot_rows: usize,
        pivot_cols: usize,
    ) -> Result<Vec<Self>, BackendLinalgError>;
}
Expand description

Scalar types that can solve T * P = Pi1 via a right full-pivoting LU solve on the tenferro backend.

This is the foundational seam for matrix cross-interpolation (CI) materialization: it lets an algorithm layer ask for the backend’s full-pivot LU solve without depending on any higher crate. The four supported scalar types (f32, f64, Complex32, Complex64) are implemented here; f32/Complex32 inputs are solved in double precision by the backend and converted back.

§Errors

Returns an error when the pivot matrix is not square, the shapes are incompatible, or the backend solve fails.

Required Methods§

Source

fn solve_right_full_piv_lu( lhs_values: &[Self], lhs_rows: usize, lhs_cols: usize, pivot_values: &[Self], pivot_rows: usize, pivot_cols: usize, ) -> Result<Vec<Self>, BackendLinalgError>

Solve T * P = Pi1 for T, where P is the pivot matrix (column-major).

§Errors

Returns a BackendLinalgError when the pivot matrix is not square (a shape mismatch), when the shapes are incompatible (lhs_cols != pivot_rows, a shape mismatch), or when the backend full-pivot LU solve fails (a backend failure).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl FullPivLuScalar for Complex32

Source§

fn solve_right_full_piv_lu( lhs_values: &[Self], lhs_rows: usize, lhs_cols: usize, pivot_values: &[Self], pivot_rows: usize, pivot_cols: usize, ) -> Result<Vec<Self>, BackendLinalgError>

Source§

impl FullPivLuScalar for Complex64

Source§

fn solve_right_full_piv_lu( lhs_values: &[Self], lhs_rows: usize, lhs_cols: usize, pivot_values: &[Self], pivot_rows: usize, pivot_cols: usize, ) -> Result<Vec<Self>, BackendLinalgError>

Source§

impl FullPivLuScalar for f32

Source§

fn solve_right_full_piv_lu( lhs_values: &[Self], lhs_rows: usize, lhs_cols: usize, pivot_values: &[Self], pivot_rows: usize, pivot_cols: usize, ) -> Result<Vec<Self>, BackendLinalgError>

Source§

impl FullPivLuScalar for f64

Source§

fn solve_right_full_piv_lu( lhs_values: &[Self], lhs_rows: usize, lhs_cols: usize, pivot_values: &[Self], pivot_rows: usize, pivot_cols: usize, ) -> Result<Vec<Self>, BackendLinalgError>

Implementors§