41 where |
41 where |
42 Domain : Space, |
42 Domain : Space, |
43 F : Float, |
43 F : Float, |
44 Z : Clone + Space + ClosedAdd, |
44 Z : Clone + Space + ClosedAdd, |
45 A : AdjointProductBoundedBy<Domain, D, FloatType=F, Codomain = Z>, |
45 A : AdjointProductBoundedBy<Domain, D, FloatType=F, Codomain = Z>, |
46 D : Linear<Domain>, |
|
47 A::Codomain : ClosedAdd, |
46 A::Codomain : ClosedAdd, |
48 { |
47 { |
49 type FloatType = F; |
48 type FloatType = F; |
50 |
49 |
51 fn adjoint_product_pair_bound(&self, d : &D, _ : &IdOp<Z>) -> Option<(F, F)> { |
50 fn adjoint_product_pair_bound(&self, d : &D, _ : &IdOp<Z>) -> Option<(F, F)> { |
90 F::ZERO |
89 F::ZERO |
91 } |
90 } |
92 } |
91 } |
93 |
92 |
94 |
93 |
95 /// TODO: should assume `D` to be positive semi-definite and self-adjoint. |
|
96 #[replace_float_literals(F::cast_from(literal))] |
94 #[replace_float_literals(F::cast_from(literal))] |
97 impl<'a, F, D, XD, Y, const N : usize> AdjointProductBoundedBy<RNDM<F, N>, D> |
95 impl<'a, F, D, XD, Y, const N : usize> AdjointProductBoundedBy<RNDM<F, N>, D> |
98 for ZeroOp<'a, RNDM<F, N>, XD, Y, F> |
96 for ZeroOp<'a, RNDM<F, N>, XD, Y, F> |
99 where |
97 where |
100 F : Float, |
98 F : Float, |