Skip to main content

faer/operator/operator_impl/
matown.rs

1use 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}