faer/operator/operator_impl/
csc_matown.rs1use super::*;
2
3impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> LinOp<T> for SparseColMat<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 SparseColMat<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 SparseColMat<I, ViewT> {}
52impl<I: Index, T: ComplexField, ViewT: Conjugate<Canonical = T>> BiPrecond<T> for SparseColMat<I, ViewT> {}