Thu, 26 Feb 2026 11:38:43 -0500
General forward operators, separation of measures into own crate, and other architecture improvements to support the pointsource_pde crate.
/*! Basid definitions for data terms */ //use numeric_literals::replace_float_literals; use alg_tools::convex::Norm222; //use alg_tools::euclidean::Euclidean; //use alg_tools::instance::{Instance, Space}; //use alg_tools::linops::GEMV; use alg_tools::mapping::DataTerm; use alg_tools::norms::{NormMapping, L1}; //use crate::types::*; /* /// Calculates the residual $Aμ-b$. #[replace_float_literals(F::cast_from(literal))] pub(crate) fn calculate_residual< X: Space, I: Instance<X>, F: Float, V: Euclidean<F> + Clone, A: GEMV<F, X, Codomain = V>, >( μ: I, opA: &A, b: &V, ) -> V { let mut r = b.clone(); opA.gemv(&mut r, 1.0, μ, -1.0); r } /// Calculates the residual $A(μ+μ_delta)-b$. #[replace_float_literals(F::cast_from(literal))] pub(crate) fn calculate_residual2< F: Float, X: Space, I: Instance<X>, J: Instance<X>, V: Euclidean<F> + Clone, A: GEMV<F, X, Codomain = V>, >( μ: I, μ_delta: J, opA: &A, b: &V, ) -> V { let mut r = b.clone(); opA.gemv(&mut r, 1.0, μ, -1.0); opA.gemv(&mut r, 1.0, μ_delta, 1.0); r } */ pub type L1DataTerm<F, Domain, A> = DataTerm<F, Domain, A, NormMapping<F, L1>>; pub type QuadraticDataTerm<F, Domain, A> = DataTerm<F, Domain, A, Norm222<F>>;