lair 0.8.0

Linear algebra in Rust
Documentation
use ndarray::ArrayViewMut2;

use crate::Scalar;

#[allow(clippy::cast_possible_wrap)]
pub unsafe fn trsm<A>(a: *const A, row_stride: isize, col_stride: isize, mut b: ArrayViewMut2<A>)
where
    A: Scalar,
{
    for j in 0..b.ncols() {
        for k in 0..b.nrows() {
            if *b.uget((k, j)) == A::zero() {
                continue;
            }
            for i in k + 1..b.nrows() {
                let prod =
                    *b.uget((k, j)) * *a.offset(row_stride * i as isize + col_stride * k as isize);
                *b.uget_mut((i, j)) -= prod;
            }
        }
    }
}