use crate::backends::VectorBackend;
use crate::{dispatch_reduction, Result, Vector};
impl Vector<f32> {
pub fn norm_l2(&self) -> Result<f32> {
if self.data.is_empty() {
return Ok(0.0);
}
Ok(dispatch_reduction!(self.backend, norm_l2, &self.data))
}
pub fn norm_l1(&self) -> Result<f32> {
if self.data.is_empty() {
return Ok(0.0);
}
Ok(dispatch_reduction!(self.backend, norm_l1, &self.data))
}
pub fn norm_linf(&self) -> Result<f32> {
if self.data.is_empty() {
return Ok(0.0);
}
Ok(dispatch_reduction!(self.backend, norm_linf, &self.data))
}
}
#[cfg(test)]
mod tests;