A graph-generated multivariate RMT series#

Exact bracket algebra, analytic pole resolution, and convergent summation. This example uses no numerical integration backend.

Bracket matrix: Matrix([[1, 1, 0, 0, 1, 1, 0], [1, 0, 1, 0, 1, 0, 1], [1, 0, 0, 1, 0, 1, 1], [1, 0, 0, 0, 1, 1, 1]])
Gamma families: 8
Chart: momentum
Integral: 0.629016707590614149590827253884
Tail bound: 2.0592e-32
Unequal-mass vacuum: 0.185949303854726222708126019022
Equal-mass vacuum correctly refused: no certified RMT chart: require p_E > m1+m2+m3, or M > m_a+m_b+p_E; boundaries and equal-mass vacuum are not covered. Received squared masses=(1, 1, 1), p_E^2=0, chart='auto'. For equal masses use integrate_sunset_taylor; otherwise consider integrate_graph with the multiloop extra as a numerical reference

import mpmath as mp
from ramanujan_qft import ScalarEdge, ScalarGraph, compile_sunset_rmt, RMTDomainError

graph = ScalarGraph([ScalarEdge(0, 1, 1) for _ in range(3)],
                    external_momenta={0: [10], 1: [-10]})
series = compile_sunset_rmt(graph)
print("Bracket matrix:", series.bracket_system.matrix)
print("Gamma families:", len(series.families))
result = series.evaluate(dps=30)
print("Chart:", result.chart)
print("Integral:", mp.nstr(result.value, 30))
print("Tail bound:", mp.nstr(result.truncation_bound, 5))

vacuum = ScalarGraph([ScalarEdge(0, 1, m2) for m2 in (1, 4, 100)])
result = compile_sunset_rmt(vacuum).evaluate(dps=30)
print("Unequal-mass vacuum:", mp.nstr(result.value, 30))

# This finite integral needs another series chart, not a forced summation.
try:
    compile_sunset_rmt(ScalarGraph([ScalarEdge(0, 1, 1) for _ in range(3)]))
except RMTDomainError as error:
    print("Equal-mass vacuum correctly refused:", error)

Total running time of the script: (0 minutes 0.706 seconds)

Gallery generated by Sphinx-Gallery