src/forward_model/bias.rs

branch
dev
changeset 49
6b0db7251ebe
parent 44
03251c546744
--- a/src/forward_model/bias.rs	Fri Feb 14 23:16:14 2025 -0500
+++ b/src/forward_model/bias.rs	Fri Feb 14 23:46:43 2025 -0500
@@ -2,28 +2,28 @@
 Simple parametric forward model.
  */
 
-use numeric_literals::replace_float_literals;
-use alg_tools::types::{Float, ClosedAdd};
-use alg_tools::mapping::Space;
+use super::{AdjointProductBoundedBy, AdjointProductPairBoundedBy, BoundedCurvature, ForwardModel};
+use crate::measures::RNDM;
 use alg_tools::direct_product::Pair;
-use alg_tools::linops::{Linear, RowOp,  IdOp, ZeroOp, AXPY};
 use alg_tools::error::DynError;
-use alg_tools::norms::{L2, Norm, PairNorm, NormExponent};
-use crate::measures::RNDM;
-use super::{ForwardModel, AdjointProductBoundedBy, AdjointProductPairBoundedBy, BoundedCurvature};
+use alg_tools::linops::{IdOp, Linear, RowOp, ZeroOp, AXPY};
+use alg_tools::mapping::Space;
+use alg_tools::norms::{Norm, NormExponent, PairNorm, L2};
+use alg_tools::types::{ClosedAdd, Float};
+use numeric_literals::replace_float_literals;
 
 impl<Domain, F, A, E> ForwardModel<Pair<Domain, A::Observable>, F, PairNorm<E, L2, L2>>
-for RowOp<A, IdOp<A::Observable>>
+    for RowOp<A, IdOp<A::Observable>>
 where
-    E : NormExponent,
-    Domain : Space + Norm<F, E>,
-    F : Float,
-    A::Observable : ClosedAdd + Norm<F, L2> + 'static,
-    A : ForwardModel<Domain, F, E> + 'static
+    E: NormExponent,
+    Domain: Space + Norm<F, E>,
+    F: Float,
+    A::Observable: ClosedAdd + Norm<F, L2> + 'static,
+    A: ForwardModel<Domain, F, E> + 'static,
 {
     type Observable = A::Observable;
 
-    fn write_observable(&self, b : &Self::Observable, prefix : String) -> DynError {
+    fn write_observable(&self, b: &Self::Observable, prefix: String) -> DynError {
         self.0.write_observable(b, prefix)
     }
 
@@ -35,17 +35,17 @@
 
 #[replace_float_literals(F::cast_from(literal))]
 impl<Domain, F, A, D, Z> AdjointProductPairBoundedBy<Pair<Domain, Z>, D, IdOp<Z>>
-for RowOp<A, IdOp<Z>>
+    for RowOp<A, IdOp<Z>>
 where
-    Domain : Space,
-    F : Float,
-    Z : Clone + Space + ClosedAdd,
-    A : AdjointProductBoundedBy<Domain, D, FloatType=F, Codomain = Z>,
-    A::Codomain : ClosedAdd,
+    Domain: Space,
+    F: Float,
+    Z: Clone + Space + ClosedAdd,
+    A: AdjointProductBoundedBy<Domain, D, FloatType = F, Codomain = Z>,
+    A::Codomain: ClosedAdd,
 {
     type FloatType = F;
 
-    fn adjoint_product_pair_bound(&self, d : &D, _ : &IdOp<Z>) -> Option<(F, F)> {
+    fn adjoint_product_pair_bound(&self, d: &D, _: &IdOp<Z>) -> Option<(F, F)> {
         self.0.adjoint_product_bound(d).map(|l_0| {
             // [A_*; B_*][A, B] = [A_*A, A_* B; B_* A, B_* B] ≤ diag(2A_*A, 2B_*B)
             // ≤ diag(2l_A𝒟_A, 2l_B𝒟_B), where now 𝒟_B=Id and l_B=1.
@@ -79,12 +79,11 @@
 }
 */
 
-impl<F, A, Z> BoundedCurvature
-for RowOp<A, IdOp<Z>>
+impl<F, A, Z> BoundedCurvature for RowOp<A, IdOp<Z>>
 where
-    F : Float,
-    Z : Clone + Space + ClosedAdd,
-    A : BoundedCurvature<FloatType = F>,
+    F: Float,
+    Z: Clone + Space + ClosedAdd,
+    A: BoundedCurvature<FloatType = F>,
 {
     type FloatType = F;
 
@@ -94,17 +93,16 @@
 }
 
 #[replace_float_literals(F::cast_from(literal))]
-impl<'a, F, D, XD, Y, const N : usize> AdjointProductBoundedBy<RNDM<F, N>, D>
-for ZeroOp<'a, RNDM<F, N>, XD, Y, F>
+impl<'a, F, D, XD, Y, const N: usize> AdjointProductBoundedBy<RNDM<F, N>, D>
+    for ZeroOp<'a, RNDM<F, N>, XD, Y, F>
 where
-    F : Float,
-    Y : AXPY<F> + Clone,
-    D : Linear<RNDM<F, N>>,
+    F: Float,
+    Y: AXPY<F> + Clone,
+    D: Linear<RNDM<F, N>>,
 {
     type FloatType = F;
     /// Return $L$ such that $A_*A ≤ L𝒟$ is bounded by some `other` operator $𝒟$.
-    fn adjoint_product_bound(&self, _ : &D) -> Option<F> {
+    fn adjoint_product_bound(&self, _: &D) -> Option<F> {
         Some(0.0)
     }
 }
-

mercurial