#[macro_use]
mod matrixcolumniterator;
mod matrixcolumniteratormut;
mod matrixcolumniteratormutimmut;
mod matrixintoiterator;
mod matrixiterator;
mod matrixiteratormut;
mod matrixrowiterator;
// mod matrixrowiteratormut;

mod eigendec;
mod matrixcolumnintoiterator;
mod matrixrowintoiterator;
pub use self::eigendec::{EigenDec, EigenDecomposition};

mod hessenbergdec;
pub use hessenbergdec::{HessenbergDec, HessenbergDecomposition};

mod ludec;
pub use ludec::{LUDec, LUDecomposition};

mod qrdec;
pub use qrdec::{QRDec, QRDecomposition};

mod schurdec;
pub use schurdec::{SchurDec, SchurDecomposition};

mod inverse;

mod choleskydec;
pub use choleskydec::{CholeskyDec, CholeskyDecomposition};

mod det;
pub use det::Determinant;
mod diagonal;
mod general;
mod lowertriangular;
mod solve;
mod substitute;
mod transpose;
mod unitlowertriangular;
mod unituppertriangular;
mod upperhessenberg;
mod uppertriangular;

pub use self::{
    diagonal::Diagonal,
    general::General,
    inverse::Inverse,
    lowertriangular::LowerTriangular,
    matrixcolumnintoiterator::MatrixColumnIntoIterator,
    matrixcolumniterator::MatrixColumnIterator,
    matrixcolumniteratormut::MatrixColumnIteratorMut,
    matrixcolumniteratormutimmut::MatrixColumnIteratorMutImmut,
    matrixintoiterator::MatrixIntoIterator,
    matrixiterator::MatrixIterator,
    matrixiteratormut::MatrixIteratorMut,
    //matrixrowiteratormut::MatrixRowIteratorMut,
    matrixrowintoiterator::MatrixRowIntoIterator,
    matrixrowiterator::MatrixRowIterator,
    solve::Solve,
    substitute::{SubstituteBackward, SubstituteForward},
    transpose::Transpose,
    unitlowertriangular::UnitLowerTriangular,
    unituppertriangular::UnitUpperTriangular,
    upperhessenberg::UpperHessenberg,
    uppertriangular::UpperTriangular,
};
