Skip to main content

faer/operator/operator_impl/
csr_matmut.rs

1use super::*;
2impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> LinOp<T>
3	for SparseRowMatMut<'_, I, ViewT>
4{
5	#[inline]
6	fn nrows(&self) -> usize {
7		self.rb().nrows()
8	}
9
10	#[inline]
11	fn ncols(&self) -> usize {
12		self.rb().ncols()
13	}
14
15	#[inline]
16	fn apply_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq {
17		self.rb().apply_scratch(rhs_ncols, par)
18	}
19
20	#[inline]
21	#[track_caller]
22	fn apply(
23		&self,
24		out: MatMut<'_, T>,
25		rhs: MatRef<'_, T>,
26		par: Par,
27		stack: &mut MemStack,
28	) {
29		self.rb().apply(out, rhs, par, stack)
30	}
31
32	#[inline]
33	#[track_caller]
34	fn conj_apply(
35		&self,
36		out: MatMut<'_, T>,
37		rhs: MatRef<'_, T>,
38		par: Par,
39		stack: &mut MemStack,
40	) {
41		self.rb().conj_apply(out, rhs, par, stack)
42	}
43}
44impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> BiLinOp<T>
45	for SparseRowMatMut<'_, I, ViewT>
46{
47	#[inline]
48	fn transpose_apply_scratch(&self, rhs_ncols: usize, par: ParShape) -> StackReq {
49		self.rb().transpose_apply_scratch(rhs_ncols, par)
50	}
51
52	#[inline]
53	#[track_caller]
54	fn transpose_apply(
55		&self,
56		out: MatMut<'_, T>,
57		rhs: MatRef<'_, T>,
58		par: Par,
59		stack: &mut MemStack,
60	) {
61		self.rb().transpose_apply(out, rhs, par, stack)
62	}
63
64	#[inline]
65	#[track_caller]
66	fn adjoint_apply(
67		&self,
68		out: MatMut<'_, T>,
69		rhs: MatRef<'_, T>,
70		par: Par,
71		stack: &mut MemStack,
72	) {
73		self.rb().adjoint_apply(out, rhs, par, stack)
74	}
75}
76impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> Precond<T>
77	for SparseRowMatMut<'_, I, ViewT>
78{
79}
80impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> BiPrecond<T>
81	for SparseRowMatMut<'_, I, ViewT>
82{
83}