use ariadnetor::{DenseTensor, ExecPolicy, NativeBackend};
#[test]
fn expert_layer_reachable_through_umbrella() {
let backend = NativeBackend::new();
let mut t = DenseTensor::<f64>::zeros(vec![2, 3]);
for (i, v) in [1.0, 2.0, 3.0, 4.0, 5.0, 6.0].into_iter().enumerate() {
t.set([i / 3, i % 3], v);
}
let tt = ariadnetor::expert::permute(&backend, &t, &[1, 0], ExecPolicy::Sequential)
.expect("expert::permute via umbrella");
assert_eq!(tt.shape(), &[3, 2]);
let prod = ariadnetor::expert::contract(&backend, &t, &tt, "ab,bc->ac", ExecPolicy::Sequential)
.expect("expert::contract via umbrella");
assert_eq!(prod.shape(), &[2, 2]);
let _ = ariadnetor::expert::solve::<f64, NativeBackend>;
let _ = ariadnetor::expert::eigh::<f64, NativeBackend>;
let _ = ariadnetor::expert::eig::<f64, NativeBackend>;
}