ramanujan_qft.sunset#
The scheme-independent parts of the massive two-loop sunset. User guide: Two-loop sunset.
- ramanujan_qft.sunset.sunset_threshold(m1sq, m2sq, m3sq)[source]#
The three-particle threshold \((m_1 + m_2 + m_3)^2\) of the sunset.
- Parameters:
m1sq (number) – Squared masses.
m2sq (number) – Squared masses.
m3sq (number) – Squared masses.
- Returns:
At the current
mpmath.mp.dps.- Return type:
mpmath.mpf
Examples
>>> sunset_threshold(1, 2, 3) mpf('17.191508225450303')
- ramanujan_qft.sunset.sunset_im(s, m1sq, m2sq, m3sq, dps=None)[source]#
Imaginary part of the two-loop sunset, precision-checked.
\[\operatorname{Im} S(s) = -\frac{\pi}{s}\int_{(m_2+m_3)^2}^{(\sqrt s - m_1)^2} dt\, \frac{\lambda^{1/2}(s, t, m_1^2)\,\lambda^{1/2}(t, m_2^2, m_3^2)}{t}\]above the threshold \(s > (m_1+m_2+m_3)^2\), and zero below it. The sunset is normalised with \(d^Dk\,d^Dl/(i\pi^{D/2})^2\) and propagators \(1/(q^2 - m^2 + i0)\).
- Parameters:
s (number or str) – External momentum squared.
m1sq (number or str) – Internal squared masses, \(\ge 0\) (the result is symmetric in them).
m2sq (number or str) – Internal squared masses, \(\ge 0\) (the result is symmetric in them).
m3sq (number or str) – Internal squared masses, \(\ge 0\) (the result is symmetric in them).
dps (int, optional) – Decimal digits requested (default:
mpmath.mp.dps).
- Return type:
mpmath.mpf
- Raises:
ValueError – For a negative squared mass or a non-finite input.
ArithmeticError – If a quadrature or the precision check fails.
Examples
>>> sunset_im(100, 1, 2, 3) mpf('-88.184995551555915') >>> sunset_im(10, 1, 2, 3) # below threshold mpf('0.0')
- ramanujan_qft.sunset.sunset_subtracted(s, m1sq, m2sq, m3sq, dps=None)[source]#
The finite, scheme-independent \(S(s) - S(0) - s\,S'(0)\) of the sunset, precision-checked.
Computed from the twice-subtracted dispersion relation
\[S(s) - S(0) - s\,S'(0) = \frac{s^2}{\pi}\int_{s_{\rm th}}^\infty dt\, \frac{\operatorname{Im} S(t)}{t^2\,(t - s - i0)},\]so the result is complex above threshold, with imaginary part
sunset_im(). The constants \(S(0)\) and \(S'(0)\) themselves are not provided.- Parameters:
s (number or str) – External momentum squared (not exactly at threshold).
m1sq (number or str) – Internal squared masses, \(\ge 0\), not all zero.
m2sq (number or str) – Internal squared masses, \(\ge 0\), not all zero.
m3sq (number or str) – Internal squared masses, \(\ge 0\), not all zero.
dps (int, optional) – Decimal digits requested (default:
mpmath.mp.dps).
- Return type:
mpmath.mpc
- Raises:
ValueError – For invalid inputs, or all masses zero (then \(S'(0)\) does not exist).
ArithmeticError – If a quadrature or the precision check fails, for example exactly at threshold.
Notes
A nested quadrature evaluated at two working precisions: about 10-20 s per value, up to about 40 s far above threshold.
- ramanujan_qft.sunset.sunset_d2(s, m1sq, m2sq, m3sq, dps=None)[source]#
Second derivative \(S''(s)\) of the sunset below threshold, precision-checked.
\[S''(s) = \frac{2}{\pi}\int_{s_{\rm th}}^\infty dt\,\frac{\operatorname{Im} S(t)}{(t - s)^3}.\]- Parameters:
s (number or str) – External momentum squared, below the threshold \((m_1+m_2+m_3)^2\).
m1sq (number or str) – Internal squared masses, \(\ge 0\).
m2sq (number or str) – Internal squared masses, \(\ge 0\).
m3sq (number or str) – Internal squared masses, \(\ge 0\).
dps (int, optional) – Decimal digits requested (default:
mpmath.mp.dps).
- Return type:
mpmath.mpf
- Raises:
ValueError – At or above threshold, or for invalid inputs.
ArithmeticError – If a quadrature or the precision check fails.
Notes
d2denotes a second derivative, not spacetime dimension D=2.sunset_second_derivative()is an equivalent, more explicit spelling. About 10-20 s per value, likesunset_subtracted().
- ramanujan_qft.sunset.sunset_second_derivative(s, m1sq, m2sq, m3sq, dps=None)[source]#
Compute \(S''(s)\) in the four-dimensional dispersive convention.
This is the explicit spelling of
sunset_d2(), with the same arguments, precision checks and exceptions.sand the three masses are squared quantities;smust be below the three-particle threshold. The result is an mpmath real number.dps=Noneuses the current mpmath precision. This function does not evaluate a D=2 sunset integral.Invalid inputs raise
ValueError; failed quadrature or precision checks raiseArithmeticError. The existingsunset_d2name remains supported without a deprecation warning.