use rmath::HMatrix; use rmath::SMatrix; fn main() { let mut acc = 0; let mut m1 = HMatrix::new(3, 3, |_| { let res = acc; acc += 1; res }); println!("{}", m1); println!("{}", &m1 + &m1); println!("{}", m1.clone() - m1.clone()); println!("{}", &m1 * &m1); acc = 0; let mut m2: SMatrix = SMatrix::new(|_| { let res = acc; acc += 1; res }); println!("{}", m2); println!("{}", m2 + m2); println!("{}", m2 - m2); println!("{}", m2 * m2); for (i, j, v) in m2 { println!("{} {} {}", i, j, v); } for (i, j, v) in &mut m2 { println!("{} {} {}", i, j, v); *v = 5; } println!("{}", m2); println!("{}", m1 == m1); println!("{}", m1 == &m1 + &m1); println!("{}", m2 == m2); println!("{}", m2 == m2 + m2); for (i, j, v) in &mut m1 { println!("{} {} {}", i, j, v); *v = 0; } let a: SMatrix = SMatrix::new(|(i, j)| i32::try_from(i).unwrap() - i32::try_from(j).unwrap()); let b: SMatrix = SMatrix::new(|(i, j)| i32::try_from(i).unwrap() - i32::try_from(j).unwrap()); println!("{}", a * b); println!("{}", b * a); }