optimization-solvers 0.1.1

Numerical optimization solvers for unconstrained and simple-bounds constrained convex optimization problems. Wasm compatible
Documentation
use super::*;

pub type Floating = f64;

pub trait BoxProjection {
    fn box_projection(
        &self,
        lower_bound: &DVector<Floating>,
        upper_bound: &DVector<Floating>,
    ) -> Self;
}

impl BoxProjection for DVector<Floating> {
    fn box_projection(
        &self,
        lower_bound: &DVector<Floating>,
        upper_bound: &DVector<Floating>,
    ) -> DVector<Floating> {
        self.sup(lower_bound).inf(upper_bound)
    }
}

pub trait InfinityNorm {
    fn infinity_norm(&self) -> Floating;
}

impl InfinityNorm for DVector<Floating> {
    fn infinity_norm(&self) -> Floating {
        self.iter().fold(0.0f64, |acc, x| acc.max(x.abs()))
    }
}