use tensor_frame::{Result, Tensor, TensorOps};
fn main() -> Result<()> {
println!("=== Tensor Frame Examples ===\n");
let a = Tensor::from_vec(vec![1.0, 2.0, 3.0, 4.0], vec![2, 2])?;
let b = Tensor::from_vec(vec![5.0, 6.0, 7.0, 8.0], vec![2, 2])?;
println!("Tensor A:\n{}\n", a);
println!("Tensor B:\n{}\n", b);
println!("=== Arithmetic Operations ===");
let sum = (a.clone() + b.clone())?;
println!("A + B:\n{}\n", sum);
let product = (a.clone() * b.clone())?;
println!("A * B (element-wise):\n{}\n", product);
println!("=== Reduction Operations ===");
let total = sum.sum(None)?;
println!("Sum of all elements: {}\n", total);
let average = product.mean(None)?;
println!("Mean of product: {}\n", average);
println!("=== Broadcasting ===");
let c = Tensor::ones(vec![2, 1])?; let d = Tensor::ones(vec![1, 3])?;
println!("Tensor C (2x1):\n{}\n", c);
println!("Tensor D (1x3):\n{}\n", d);
let broadcasted = (c + d)?; println!("C + D (broadcasted to 2x3):\n{}\n", broadcasted);
println!("=== Tensor Manipulation ===");
let reshaped = a.reshape(vec![1, 4])?;
println!("A reshaped to [1, 4]:\n{}\n", reshaped);
let transposed = a.transpose()?;
println!("A transposed:\n{}\n", transposed);
Ok(())
}