matrix-42 0.1.0

A linear algebra library written in Rust with basic matrix and vector operations
Documentation
use matrix::{Complex, Matrix, C, M};

#[test]
fn test_determinant() {
    let u = M!([[1., -1.], [-1., 1.]]);
    let a = u.determinant();
    assert_eq!(a, 0.);

    let u = M!([[2., 0., 0.], [0., 2., 0.], [0., 0., 2.]]);
    let a = u.determinant();
    assert_eq!(a, 8.);

    let u = M!([[8., 5., -2.], [4., 7., 20.], [7., 6., 1.]]);
    let a = u.determinant();
    assert_eq!(a, -174.);

    let u = M!([
        [8., 5., -2., 4.],
        [4., 2.5, 20., 4.],
        [8., 5., 1., 4.],
        [28., -4., 17., 1.],
    ]);
    let a = u.determinant();
    assert_eq!(a, 1032.);
}

#[test]
#[should_panic(expected = "matrix must be squared")]
fn test_determinant_non_square() {
    let u = M!([[1., 2.], [3., 4.], [5., 6.]]);
    let _ = u.determinant();
}

#[test]
fn test_determinant_complex() {
    let u = M!([[C!(1., -1.), C!(2., 3.)], [C!(4., 5.), C!(6., 7.)]]);
    let a = u.determinant();
    assert_eq!(a, C!(20., -21.));

    let u = M!([[C!(1., 0.), C!(2., 0.)], [C!(3., 0.), C!(4., 0.)]]);
    let a = u.determinant();
    assert_eq!(a, C!(-2., 0.));

    let u = M!([[C!(1., 1.), C!(2., 2.)], [C!(3., 3.), C!(4., 4.)]]);
    let a = u.determinant();
    assert_eq!(a, C!(0., -4.));

    let u = M!([[C!(1., 2.), C!(3., 4.)], [C!(5., 6.), C!(7., 8.)]]);
    let a = u.determinant();
    assert_eq!(a, C!(0., -16.));
}