#![warn(missing_docs)]
use rmatrix_ks::{
matrix::{
Matrix,
complex::{is_hermitian_matrix, moore_penrose_inverse},
},
number::instances::{complex::Complex, float::Float},
};
fn main() {
let rect = Matrix::<Complex<Float>>::of(
2,
3,
&[
(1.0, 2.0),
(2.0, -1.0),
(3.0, 0.0),
(4.0, 0.0),
(5.0, 1.0),
(6.0, -2.0),
]
.map(|(r, i)| Complex::of(Float::of(r), Float::of(i))),
)
.unwrap();
let rectp = moore_penrose_inverse(&rect);
assert_eq!(rect.clone() * rectp.clone() * rect.clone(), rect);
assert_eq!(rectp.clone() * rect.clone() * rectp.clone(), rectp);
assert!(is_hermitian_matrix(&(rect.clone() * rectp.clone())));
assert!(is_hermitian_matrix(&(rectp * rect)));
}