src/dataterm.rs

Thu, 26 Feb 2026 11:36:22 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Thu, 26 Feb 2026 11:36:22 -0500
branch
dev
changeset 63
7a8a55fd41c0
parent 61
4f468d35fa29
permissions
-rw-r--r--

Subproblem solver and sliding adjustments/improvements

/*!
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>>;

mercurial