#[macro_use]
extern crate static_math;
use static_math::matrix2x2::M22;
use static_math::matrix3x3::M33;
use static_math::matrix4x4::M44;
use static_math::matrix5x5::M55;
use static_math::matrix6x6::M66;
use static_math::traits::LinearAlgebra;
fn main() {
let m22 = m22_new!(1.0, 2.0;
3.0, 4.0);
let m33 = m33_new!(10.0, -1.0, 2.0;
3.0, 3.0, 1.0;
1.0, 2.0, 5.0);
let m44 = m44_new!( 0.0, 1.0, 2.0, 3.0;
4.0, 0.0, 1.0, 7.0;
10.0, 9.0, 10.0, 11.0;
12.0, 13.0, 14.0, 15.0);
let m55 = m55_new!(10.0, 1.0, 7.0, 1.0, 5.0;
2.0, 4.0, 8.0, 3.0, 2.0;
5.0, 1.0, 2.0, 9.0, 10.0;
6.0, 9.0, 1.0, 7.0, 3.0;
1.0, 8.0, 8.0, 10.0, 5.0);
let m66 = m66_new!( 1.0, 1.0, 3.0, 4.0, 9.0, 3.0;
10.0, 10.0, 1.0, 2.0, 2.0, 5.0;
2.0, 9.0, 6.0, 10.0, 10.0, 9.0;
10.0, 9.0, 9.0, 7.0, 3.0, 6.0;
7.0, 6.0, 6.0, 2.0, 9.0, 5.0;
3.0, 8.0, 1.0, 4.0, 1.0, 5.0);
if let Some((q, r)) = m22.qr() {
println!("q: {}", q);
println!("r: {}", r);
println!("m22: {}", q * r);
println!("q.det(): {}", q.det());
}
if let Some((q, r)) = m33.qr() {
println!("q: {}", q);
println!("r: {}", r);
println!("m33: {}", q * r);
println!("q.det(): {}", q.det());
}
if let Some((q, r)) = m44.qr() {
println!("q: {}", q);
println!("r: {}", r);
println!("m44: {}", q * r);
println!("q.det(): {}", q.det());
}
if let Some((q, r)) = m55.qr() {
println!("q: {}", q);
println!("r: {}", r);
println!("m55: {}", q * r);
println!("q.det(): {}", q.det());
}
if let Some((q, r)) = m66.qr() {
println!("q: {}", q);
println!("r: {}", r);
println!("m66: {}", q * r);
println!("q.det(): {}", q.det());
}
}