matrix-42 0.1.0

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

#[test]
fn test_transpose() {
    let mat = M!([[1., 2.], [3., 4.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 3., 2., 4.]));

    let mat = M!([[1., 2., 3.], [4., 5., 6.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 4., 2., 5., 3., 6.]));

    let mat = M!([[1., 2.], [3., 4.], [5., 6.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 3., 5., 2., 4., 6.]));

    let mat = M!([[1.], [2.], [3.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 2., 3.]));

    let mat = M!([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 4., 7., 2., 5., 8., 3., 6., 9.]));

    let mat = M!([[1.], [2.], [3.], [4.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 2., 3., 4.]));

    let mat = M!([[1., 2.], [3., 4.], [5., 6.], [7., 8.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 3., 5., 7., 2., 4., 6., 8.]));

    let mat = M!([[1., 2.], [3., 4.], [5., 6.], [7., 8.], [9., 10.]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[1., 3., 5., 7., 9., 2., 4., 6., 8., 10.]));
}

#[test]
fn test_transpose_complex() {
    let mat = M!([[C!(1., 2.), C!(3., 4.)], [C!(5., 6.), C!(7., 8.)]]);
    let a = mat.transpose();
    assert!(a
        ._d
        .eq(&[C!(1., -2.), C!(5., -6.), C!(3., -4.), C!(7., -8.)]));

    let mat = M!([
        [C!(1., 2.), C!(3., 4.), C!(5., 6.)],
        [C!(7., 8.), C!(9., 10.), C!(11., 12.)]
    ]);
    let a = mat.transpose();
    assert!(a._d.eq(&[
        C!(1., -2.),
        C!(7., -8.),
        C!(3., -4.),
        C!(9., -10.),
        C!(5., -6.),
        C!(11., -12.)
    ]));

    let mat = M!([[C!(1., 2.)], [C!(3., 4.)], [C!(5., 6.)]]);
    let a = mat.transpose();
    assert!(a._d.eq(&[C!(1., -2.), C!(3., -4.), C!(5., -6.)]));
}