use ariadnetor_mps::{Mpo, Mps};
use ariadnetor_tensor::{ComputeBackendTensorExt, DenseLayout, DenseStorage, DenseTensor, Host};
mod error_paths;
mod predicate_coverage;
mod step;
#[cfg(feature = "arpack")]
mod arpack;
fn product_state_mps(n: usize, d: usize) -> Mps<DenseStorage<f64>, DenseLayout> {
let sites: Vec<DenseTensor<f64>> = (0..n)
.map(|_| {
let mut data = vec![0.0_f64; d];
data[0] = 1.0;
Host::shared().dense(data, vec![1, d, 1])
})
.collect();
Mps::from_sites(sites)
}
fn identity_mpo(n: usize, d: usize) -> Mpo<DenseStorage<f64>, DenseLayout> {
let sites: Vec<DenseTensor<f64>> = (0..n)
.map(|_| {
let mut data = vec![0.0_f64; d * d];
for k in 0..d {
data[k + d * k] = 1.0;
}
Host::shared().dense(data, vec![1, d, d, 1])
})
.collect();
Mpo::from_sites(sites)
}