use super::Vector;
use crate::{array_approx_eq, AsArray1D};
pub fn vec_approx_eq<'a, T>(u: &Vector, v: &'a T, tol: f64)
where
T: AsArray1D<'a, f64>,
{
array_approx_eq(u.as_data(), v.as_slice(), tol);
}
#[cfg(test)]
mod tests {
use super::vec_approx_eq;
use crate::Vector;
#[test]
fn vec_approx_eq_works() {
let u = Vector::from(&[1.0, 2.0, 3.0]);
let v = Vector::from(&[1.0, 2.0, 3.01]);
vec_approx_eq(&u, &v, 0.011);
}
#[test]
#[should_panic(expected = "vectors are not approximately equal. diff[2] =")]
fn vec_approx_eq_panics() {
let u = Vector::from(&[1.0, 2.0, 3.0]);
let v = Vector::from(&[1.0, 2.0, 3.01]);
vec_approx_eq(&u, &v, 0.009);
}
}