use num_traits::{Float, Zero};
use core::marker::PhantomData;
use crate::solver::{Cone, LinAlg, SliceLike};
pub struct ConeRPos<L: LinAlg>
{
ph_l: PhantomData<L>,
}
impl<L: LinAlg> ConeRPos<L>
{
pub fn new() -> Self
{
ConeRPos {
ph_l: PhantomData,
}
}
}
impl<L: LinAlg> Cone<L> for ConeRPos<L>
{
fn proj(&mut self, _dual_cone: bool, x: &mut L::Sl) -> Result<(), ()>
{
let x_mut = x.get_mut();
for e in x_mut {
*e = e.max(L::F::zero());
}
Ok(())
}
fn product_group<G: Fn(&mut L::Sl) + Copy>(&self, _dp_tau: &mut L::Sl, _group: G)
{
}
}