#include #include #include "./correlated_gaussian.hpp" #include #define TEST(X) std::cout << BOOST_PP_STRINGIZE((X)) << " ---> "<< (X) < X; X<<1.0; X<<-1.0; X<<.5; X<<.0; std::cout << average_and_error(X) << std::endl; std::cout << average_and_error(X*X) << std::endl; } void test_1(int argc, char ** argv){ int N=100000, L=100; if(argc==3){ N = atoi(argv[1]); //size L = atoi(argv[2]); //autocorrelation time } std::cout << "N = " << N << std::endl; std::cout << "L = " << L << std::endl; int seed= 1567; std::vector A(N); correlated_gaussian_vector(A, seed, L); double intrinsic_variance = 1; TEST( autocorrelation_time(A)); TEST( autocorrelation_time_from_binning(A,intrinsic_variance)); TEST( autocorrelation_time_from_binning(A)); } void test_2(int argc, char ** argv){ int N=10000, L=40; if(argc==3){ N = atoi(argv[1]); //size L = atoi(argv[2]); //autocorrelation time } int seed= 1567; double avg = 2; std::vector A(N); correlated_gaussian_vector(A, seed, L, avg); observable V; for (auto & x:A) V << x; TEST(autocorrelation_time(V)); TEST(autocorrelation_time(V*V)); } int main(int argc, char ** argv){ try{ test_0(); } catch(std::exception const & e){ std::cerr << e.what() << std::endl;} try{ test_1(argc,argv); } catch(std::exception const & e){ std::cerr << e.what() << std::endl;} try{ test_2(argc,argv); } catch(std::exception const & e){ std::cerr << e.what() << std::endl;} }