ndarray-numtest 0.1.4

Linear algebra package for rust-ndarray using LAPACK
Documentation

extern crate ndarray;
extern crate num_complex;
extern crate ndarray_numtest;

use ndarray::prelude::*;
use ndarray_numtest::prelude::*;
use num_complex::Complex;

#[allow(non_camel_case_types)]
type c64 = Complex<f64>;

#[test]
fn close_success() {
    let a = 1.0;
    let b = 1.0 + 1.0e-7;
    a.assert_close(b, 1e-5);
}

#[should_panic]
#[test]
fn close_fail() {
    let a = 1.0;
    let b = 1.0 + 1.0e-5;
    a.assert_close(b, 1e-7);
}

#[test]
fn close32_success() {
    let a = 1.0_f32;
    let b = 1.0_f32 + 1.0e-7;
    a.assert_close(b, 1e-5);
}

#[should_panic]
#[test]
fn close32_fail() {
    let a = 1.0_f32;
    let b = 1.0_f32 + 1.0e-2;
    a.assert_close(b, 1.0e-3);
}

#[test]
fn allclose_success() {
    let a = arr1(&[1.0, 2.0]);
    let b = arr1(&[1.0, 2.0 + 1.0e-9]);
    b.assert_allclose_l2(&a, 1e-7);
}

#[test]
fn allclose_vec_success() {
    let a = vec![1.0, 2.0];
    let b = vec![1.0, 2.0 + 1.0e-9];
    b.assert_allclose_l2(&a, 1e-7);
}

#[should_panic]
#[test]
fn allclose_fail() {
    let a = arr1(&[1.0, 2.0]);
    let b = arr1(&[1.0, 2.0 + 1.0e-3]);
    b.assert_allclose_l2(&a, 1e-7);
}

#[should_panic]
#[test]
fn allclose_vec_fail() {
    let a = vec![1.0, 2.0];
    let b = vec![1.0, 2.0 + 1.0e-3];
    b.assert_allclose_l2(&a, 1e-7);
}

#[test]
fn allclose_success_complex() {
    let a = arr1(&[c64::new(1.0, 1.1), c64::new(1.0, 1.1)]);
    let b = arr1(&[c64::new(1.0, 1.1 + 1.0e-9), c64::new(1.0, 1.1)]);
    b.assert_allclose_l2(&a, 1e-7);
}

#[should_panic]
#[test]
fn allclose_success_fail() {
    let a = arr1(&[c64::new(1.0, 1.1), c64::new(1.0, 1.1)]);
    let b = arr1(&[c64::new(1.0, 1.1 + 1.0e-3), c64::new(1.0, 1.1)]);
    b.assert_allclose_l2(&a, 1e-7);
}

#[test]
fn allclose2d() {
    let a = arr2(&[[1.0, 0.0], [0.0, 1.0]]);
    let b = arr2(&[[0.0, 1.0e-9], [1.0e-9, 0.0]]) + &a;
    b.assert_allclose_l2(&a, 1e-7);
}

#[test]
fn allclose2d_t() {
    let a = arr2(&[[1.0, 0.0], [0.0, 1.0]]).reversed_axes();
    let b = arr2(&[[0.0, 1.0e-9], [1.0e-9, 0.0]]) + &a;
    b.assert_allclose_l2(&a, 1e-7);
}