13 std::pair<double, double> cyclic_difference(
tau_t const &tau1,
tau_t const &tau2) {
15 double sign = tau2 > tau1 ? -1.0 : 1.0;
16 double value = double(
tau_t{tau1.n - tau2.n});
17 return std::make_pair(sign, value);
20 std::pair<double, double> cyclic_difference(
double tau1,
double tau2) {
22 double dtau = tau1 - tau2;
23 int nshifts =
static_cast<int>(std::floor(dtau /
tau_t::beta));
24 double sign = (nshifts % 2 == 0) ? 1.0 : -1.0;
26 return std::make_pair(sign, value);
29 tau_t make_tau_t(
double tau) {
31 if (tau < 0.0 or
tau_t::beta < tau) TRIQS_RUNTIME_ERROR <<
" Tau-value outside [0,beta) interval not allowed in make_tau_t\n";
36 std::ostream &operator<<(std::ostream &os,
vertex_idx_t const &v) {
38 <<
"b1,u1=" << v.b1 <<
"," << v.u1 <<
", "
39 <<
"b2,u2=" << v.b2 <<
"," << v.u2 <<
", "
40 <<
"b3,u3=" << v.b3 <<
"," << v.u2 <<
", "
41 <<
"b4,u4=" << v.b4 <<
"," << v.u2 <<
"}";
45 std::ostream &operator<<(std::ostream &os,
vertex_t const &v) {
47 <<
"idx=" << v.idx <<
", "
48 <<
"tau1=" << v.tau1 <<
", "
49 <<
"tau2=" << v.tau2 <<
", "
50 <<
"tau3=" << v.tau3 <<
", "
51 <<
"tau4=" << v.tau4 <<
", "
52 <<
"amplitude=" << v.amplitude <<
", "
53 <<
"proposition_proba=" << v.proposition_proba <<
", "
54 <<
"vertex_label=" << v.vertex_label <<
", "
55 <<
"s=" << v.s <<
"}";
static constexpr uint32_t n_max
Maximum value that can be stored inside a uint32_t.
static double beta
Inverse temperature associated with all $\tau$ points.