eye_array_k

Function eye_array_k 

Source
pub fn eye_array_k<T>(
    m: usize,
    n: usize,
    k: isize,
    format: &str,
) -> SparseResult<Box<dyn SparseArray<T>>>
where T: Float + Add<Output = T> + Sub<Output = T> + Mul<Output = T> + Div<Output = T> + Debug + Copy + 'static,
Expand description

Creates a sparse identity array of size m x n with k-th diagonal filled with ones

§Arguments

  • m - Number of rows
  • n - Number of columns
  • k - Diagonal index (0 = main diagonal, >0 = above main, <0 = below main)
  • format - Format of the output array (“csr” or “coo”)

§Returns

A sparse array with ones on the specified diagonal

§Examples

use scirs2_sparse::construct::eye_array_k;

// Identity with main diagonal (k=0)
let eye: Box<dyn scirs2_sparse::SparseArray<f64>> = eye_array_k(3, 3, 0, "csr").unwrap();
assert_eq!(eye.get(0, 0), 1.0);
assert_eq!(eye.get(1, 1), 1.0);
assert_eq!(eye.get(2, 2), 1.0);

// Superdiagonal (k=1)
let superdiag: Box<dyn scirs2_sparse::SparseArray<f64>> = eye_array_k(3, 4, 1, "csr").unwrap();
assert_eq!(superdiag.get(0, 1), 1.0);
assert_eq!(superdiag.get(1, 2), 1.0);
assert_eq!(superdiag.get(2, 3), 1.0);

// Subdiagonal (k=-1)
let subdiag: Box<dyn scirs2_sparse::SparseArray<f64>> = eye_array_k(4, 3, -1, "csr").unwrap();
assert_eq!(subdiag.get(1, 0), 1.0);
assert_eq!(subdiag.get(2, 1), 1.0);
assert_eq!(subdiag.get(3, 2), 1.0);