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