matrix-mc 0.1.0

some useful matrix and vector operations performed on 2D Vecs of f64s
Documentation
use matrix_mc::{identity, rref, matrix, normalize, dup};

#[test]
fn init_identity_3x3() {
    let expected = 
        matrix![1, 0, 0;
                0, 1, 0;
                0, 0, 1];
    
    let actual = identity(3usize);

    assert_eq!(expected, actual);
}

#[test]
fn rref_independent_3x3() {

    let expected = identity(3);

    let mut actual = 
        matrix![2,  3,  4 ;
                3,  1,  5 ;
                7,  11, 22];
    rref(&mut actual);

    assert_eq!(expected, actual);
}

#[test]
fn rref_dependent_3x3() {
    let expected = 
        matrix![1, 0, 0;
                0, 1, 1;
                0, 0, 0];
    
    let mut actual = 
        matrix![1, 1, 1;
                0, 1, 1;
                1, 1, 1];
    rref(&mut actual);
    
    assert_eq!(expected, actual);
}


#[test]
fn rref_dependent_3x2() {
    let expected = 
        matrix![1, 0;
                0, 1;
                0, 0];

    let mut actual = 
        matrix![5,  4;
                0,  3;
                10, 8];
    rref(&mut actual);

    assert_eq!(expected, actual);    
}

#[test]
fn normalize_3x3() {
    let expected =
        matrix![1f64/f64::sqrt(2f64), 1f64/f64::sqrt(5f64), 1;
                1f64/f64::sqrt(2f64),                    0, 0;
                                   0, 2f64/f64::sqrt(5f64), 0];
    
    let mut actual = 
        matrix![1, 1, 1;
                1, 0, 0;
                0, 2, 0];
    normalize(&mut actual);

    assert_eq!(expected, actual);
}

#[test]
fn dup_rref_3x3() {
    let expected = matrix!
        [1, 0, 0;
         0, 1, 0;
         0, 0, 1];
    
    let input = matrix! 
        [5, 4, 3;
         2, 1, 9;
         8, 7, 6];

    let actual = dup(rref, &input);

    assert_eq!(expected, actual);
}