Files
rmath/examples/matrix_example.rs
2024-01-27 20:53:15 +08:00

52 lines
1.2 KiB
Rust

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<i32, 3, 3> = 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<i32, 3, 2> =
SMatrix::new(|(i, j)| i32::try_from(i).unwrap() - i32::try_from(j).unwrap());
let b: SMatrix<i32, 2, 3> =
SMatrix::new(|(i, j)| i32::try_from(i).unwrap() - i32::try_from(j).unwrap());
println!("{}", a * b);
println!("{}", b * a);
}