faer/operator/operator_impl/
csr_matmut.rs

1use super::*;
2
3impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> LinOp<T> for SparseRowMatMut<'_, I, ViewT> {
4	#[inline]
5	fn nrows(&self) -> usize {
6		self.rb().nrows()
7	}
8
9	#[inline]
10	fn ncols(&self) -> usize {
11		self.rb().ncols()
12	}
13
14	#[inline]
15	fn apply_scratch(&self, rhs_ncols: usize, par: Par) -> StackReq {
16		self.rb().apply_scratch(rhs_ncols, par)
17	}
18
19	#[inline]
20	#[track_caller]
21	fn apply(&self, out: MatMut<'_, T>, rhs: MatRef<'_, T>, par: Par, stack: &mut MemStack) {
22		self.rb().apply(out, rhs, par, stack)
23	}
24
25	#[inline]
26	#[track_caller]
27	fn conj_apply(&self, out: MatMut<'_, T>, rhs: MatRef<'_, T>, par: Par, stack: &mut MemStack) {
28		self.rb().conj_apply(out, rhs, par, stack)
29	}
30}
31
32impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> BiLinOp<T> for SparseRowMatMut<'_, I, ViewT> {
33	#[inline]
34	fn transpose_apply_scratch(&self, rhs_ncols: usize, par: Par) -> StackReq {
35		self.rb().transpose_apply_scratch(rhs_ncols, par)
36	}
37
38	#[inline]
39	#[track_caller]
40	fn transpose_apply(&self, out: MatMut<'_, T>, rhs: MatRef<'_, T>, par: Par, stack: &mut MemStack) {
41		self.rb().transpose_apply(out, rhs, par, stack)
42	}
43
44	#[inline]
45	#[track_caller]
46	fn adjoint_apply(&self, out: MatMut<'_, T>, rhs: MatRef<'_, T>, par: Par, stack: &mut MemStack) {
47		self.rb().adjoint_apply(out, rhs, par, stack)
48	}
49}
50
51impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> Precond<T> for SparseRowMatMut<'_, I, ViewT> {}
52impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> BiPrecond<T> for SparseRowMatMut<'_, I, ViewT> {}