use scirs2_core::ndarray::array;
use scirs2_linalg::compat::{self, UPLO};
#[allow(dead_code)]
fn main() {
println!("Testing eigenvalue computation...");
let diagmatrix = array![[5.0, 0.0, 0.0], [0.0, 3.0, 0.0], [0.0, 0.0, 1.0]];
println!("Diagonal matrix: {:?}", diagmatrix);
match compat::eigh(&diagmatrix.view(), UPLO::Lower) {
Ok((eigenvals, eigenvecs)) => {
println!("Eigenvalues: {:?}", eigenvals);
println!("Eigenvectors shape: {:?}", eigenvecs.shape());
println!("Eigenvectors: {:?}", eigenvecs);
let av = diagmatrix.dot(&eigenvecs);
let vl = eigenvecs.dot(&scirs2_core::ndarray::Array2::from_diag(&eigenvals));
println!("A*V: {:?}", av);
println!("V*Λ: {:?}", vl);
println!("Difference: {:?}", &av - &vl);
}
Err(e) => println!("Error: {:?}", e),
}
let simplematrix = array![[2.0, 1.0], [1.0, 3.0]];
println!("\nSimple 2x2 matrix: {:?}", simplematrix);
match compat::eigh(&simplematrix.view(), UPLO::Lower) {
Ok((eigenvals, eigenvecs)) => {
println!("Eigenvalues: {:?}", eigenvals);
println!("Eigenvectors: {:?}", eigenvecs);
let av = simplematrix.dot(&eigenvecs);
let vl = eigenvecs.dot(&scirs2_core::ndarray::Array2::from_diag(&eigenvals));
println!("A*V: {:?}", av);
println!("V*Λ: {:?}", vl);
println!("Difference: {:?}", &av - &vl);
}
Err(e) => println!("Error: {:?}", e),
}
}