use purecv::core::arithm::{add, multiply};
use purecv::core::Matrix;
fn main() {
println!("--- purecv Basic Arithmetic Example ---");
let m1 = Matrix::<u8>::from_vec(3, 3, 1, vec![1, 2, 3, 4, 5, 6, 7, 8, 9]);
let m2 = Matrix::<u8>::from_vec(3, 3, 1, vec![10, 10, 10, 10, 10, 10, 10, 10, 10]);
println!("Matrix 1 (3x3):\n{:?}", m1.data);
println!("Matrix 2 (3x3, constant 10):\n{:?}", m2.data);
let sum = add(&m1, &m2).expect("Addition failed");
println!("\nSum (m1 + m2):\n{:?}", sum.data);
let prod = multiply(&m1, &m2).expect("Multiplication failed");
println!("\nProduct (m1 * m2):\n{:?}", prod.data);
println!("\nPerforming operation on a larger matrix (1024x1024)...");
let large_m1 = Matrix::<f32>::new(1024, 1024, 1);
let large_m2 = Matrix::<f32>::new(1024, 1024, 1);
let start = std::time::Instant::now();
let _large_sum = add(&large_m1, &large_m2).unwrap();
let duration = start.elapsed();
println!("Large matrix addition completed in: {:?}", duration);
println!("Done.");
}