extern crate rand;
use qmc::sse::fast_ops::{FastOp, FastOps};
use qmc::sse::qmc_traits::*;
use smallvec::smallvec;
#[test]
fn single_cluster_test() {
let mut manager = FastOps::new_from_ops(
1,
vec![(
0,
FastOp::offdiagonal(smallvec![0], 0, smallvec![false], smallvec![false], true),
)]
.into_iter(),
);
let mut rng = rand::thread_rng();
let mut state = vec![false; manager.get_nvars()];
manager.flip_each_cluster_ising_symmetry_rng(0.5, &mut rng, &mut state);
println!("{:?}", state);
}
#[test]
fn simple_cluster_test() {
let mut manager = FastOps::new_from_ops(
1,
vec![
(
0,
FastOp::offdiagonal(smallvec![0], 0, smallvec![false], smallvec![false], true),
),
(
1,
FastOp::offdiagonal(smallvec![0], 1, smallvec![false], smallvec![false], true),
),
]
.into_iter(),
);
let mut rng = rand::thread_rng();
let mut state = vec![false; manager.get_nvars()];
manager.flip_each_cluster_ising_symmetry_rng(0.5, &mut rng, &mut state);
println!("{:?}", state);
}
#[test]
fn multi_cluster_test() {
let mut manager = FastOps::new_from_ops(
2,
vec![
(
0,
FastOp::offdiagonal(smallvec![0], 0, smallvec![false], smallvec![false], true),
),
(
1,
FastOp::offdiagonal(smallvec![0], 1, smallvec![false], smallvec![false], true),
),
(
2,
FastOp::offdiagonal(smallvec![1], 2, smallvec![false], smallvec![false], true),
),
(
3,
FastOp::offdiagonal(smallvec![1], 3, smallvec![false], smallvec![false], true),
),
]
.into_iter(),
);
let mut rng = rand::thread_rng();
let mut state = vec![false; manager.get_nvars()];
manager.flip_each_cluster_ising_symmetry_rng(0.5, &mut rng, &mut state);
println!("{:?}", state);
}