In the AddLoopFunctions file, you have:
Code: Select all
Real(dp), Private :: controlmdiff = 1.0e-15_dp !controls the mass difference
!when comparing two masses
The issue appears later when the mass splitting is calculated. Instead of the usual mass splitting, it is normalized it:
Code: Select all
If (xm1.Ne.0._dp) Then
mdiff = Abs((xm1-xm2)/xm1) !to avoid problems when comparing xm1 with xm2
Else If (xm2.Ne.0._dp) Then
mdiff = Abs((xm1-xm2)/xm2)
Else
mdiff = 0._dp
End If
I encountered the issue when I had xm1 = 0 (for a massless fermion), and xm2 = 1e-20 (for a photon, which is just equal to Mass_Regulator_PhotonGluon**2). This resulted in controlmdiff being equal to 1 which the algorithm then clearly deemed to be safe.
Furthermore, the SA_ variant of the loop function (which I presume means safe? The code has no comments :/ ) doesn't catch the error because it only checks if the masses are exactly zero. Perhaps it should check if the mass is less than controlmdiff?
Josh