#include <iostream> #include <triqs/utility/time_pt.hpp> using triqs::utility::time_pt; void print_me (double x) { std::cout << " print " << x<< std::endl ;} int main(int argc, char **argv) { time_pt zero (40); time_pt beta = time_pt::make_beta(40); auto t1 = time_pt::make_from_double(10,40), t2 = time_pt::make_from_double(30,40); std::cout << "zero: " << zero << std::endl; std::cout << "beta: " << beta << std::endl; std::cout << "t1: " << t1 << "" << std::endl; std::cout << "t2: " << t2 << "" << std::endl; std::cout << "t1 + t2: " << t1+t2 << "" << std::endl; std::cout << "t1 + t2 - (as double) : " << t1+t2 - (double(t1) + double(t2)) << "" << std::endl; std::cout << "t1 - t2: " << t1-t2 << "" << std::endl; std::cout << "t1 - t2 - (as double) : " << t1-t2 - (double(t1) - double(t2)) << "" << std::endl; std::cout << "t1 * t2: " << t1*t2 << "" << std::endl; std::cout << "t1 * t2 - (as double) : " << t1*t2 - (double(t1) * double(t2)) << "" << std::endl; std::cout << "t1 / t2: " << t1/t2 << "" << std::endl; std::cout << "t1 / t2 - (as double) : " << t1/t2 - (double(t1) / double(t2)) << "" << std::endl; std::cout << "t1 + beta: " << t1 + beta << "" << std::endl; std::cout << "t1 - beta: " << t1 - beta << "" << std::endl; print_me(double(t1));// to check explicit cast std::cout << " -t1: " << - t1 << "" << std::endl; std::cout << "epsilon: " << time_pt::epsilon(beta) << "" << std::endl; std::cout << "- epsilon: " << - time_pt::epsilon(beta) << "" << std::endl; std::cout << "t1 - epsilon :" << t1- time_pt::epsilon(beta) << "" << std::endl; std::cout << " num limit max " << std::numeric_limits<uint64_t>::max() <<std::endl ; uint64_t n = std::numeric_limits<uint64_t>::max()-2; n++; std::cout << " num limit-1 " << n <<std::endl ; n++; std::cout << " num limit+0 " << n <<std::endl ; n++; std::cout << " num limit+1 " << n <<std::endl ; n++; std::cout << " num limit+2 " << n <<std::endl ; return 0; }