def HS2011_Omega_SO_3p5PN_pt7(m1, m2, n12U, p1U, p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(181 * m1 * m2 / 16 + 95 * m2**2 / 4 + 75 * m2**3 / (8 * m1)) * cross(n12U, p1U)[i] - (21 * m1**2 / 2 + 473 * m1 * m2 / 16 + 63 * m2**2 / 4) * cross(n12U, p2U)[i]) / r12**4 return Omega1
def f_H_SS_S1S2_3PN(m1, m2, n12U, S1U, S2U, p1U, p2U, r12): global H_SS_S1S2_3PN H_SS_S1S2_3PN = ( +div(3, 2) * (dot(cross(p1U, S1U), n12U) * dot(cross(p2U, S2U), n12U)) + 6 * (dot(cross(p2U, S1U), n12U) * dot(cross(p1U, S2U), n12U)) - 15 * dot(S1U, n12U) * dot(S2U, n12U) * dot(p1U, n12U) * dot(p2U, n12U) - 3 * dot(S1U, n12U) * dot(S2U, n12U) * dot(p1U, p2U) + 3 * dot(S1U, p2U) * dot(S2U, n12U) * dot(p1U, n12U) + 3 * dot(S2U, p1U) * dot(S1U, n12U) * dot(p2U, n12U) + 3 * dot(S1U, p1U) * dot(S2U, n12U) * dot(p2U, n12U) + 3 * dot(S2U, p2U) * dot(S1U, n12U) * dot(p1U, n12U) - div(1, 2) * dot(S1U, p2U) * dot(S2U, p1U) + dot(S1U, p1U) * dot(S2U, p2U) - 3 * dot(S1U, S2U) * dot(p1U, n12U) * dot(p2U, n12U) + div(1, 2) * dot(S1U, S2U) * dot(p1U, p2U)) / (2 * m1 * m2 * r12**3) H_SS_S1S2_3PN += (-dot(cross(p1U, S1U), n12U) * dot(cross(p1U, S2U), n12U) + dot(S1U, S2U) * dot(p1U, n12U)**2 - dot(S1U, n12U) * dot(S2U, p1U) * dot(p1U, n12U)) * 3 / ( 2 * m1**2 * r12**3) H_SS_S1S2_3PN += (-dot(cross(p2U, S2U), n12U) * dot(cross(p2U, S1U), n12U) + dot(S1U, S2U) * dot(p2U, n12U)**2 - dot(S2U, n12U) * dot(S1U, p1U) * dot(p2U, n12U)) * 3 / ( 2 * m2**2 * r12**3) H_SS_S1S2_3PN += (+dot(S1U, S2U) - 2 * dot(S1U, n12U) * dot(S2U, n12U)) * 6 * (m1 + m2) / r12**4
def f_Omega_SO_2p5PN(m1, m2, n12U, p1U, p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(+(-div(11, 2) * m2 - 5 * m2 ** 2 / m1) * cross(n12U, p1U)[i] + (6 * m1 + div(15, 2) * m2) * cross(n12U, p2U)[i]) / r12 ** 3 + (+(-div(5, 8) * m2 * dot(p1U, p1U) / m1 ** 3 - div(3, 4) * dot(p1U, p2U) / m1 ** 2 + div(3, 4) * dot(p2U, p2U) / (m1 * m2) - div(3, 4) * dot(n12U, p1U) * dot(n12U, p2U) / m1 ** 2 - div(3, 2) * dot(n12U, p2U) ** 2 / (m1 * m2)) * cross(n12U, p1U)[i] + (dot(p1U, p2U) / (m1 * m2) + 3 * dot(n12U, p1U) * dot(n12U, p2U) / (m1 * m2)) * cross(n12U, p2U)[i] + (div(3, 4) * dot(n12U, p1U) / m1 ** 2 - 2 * dot(n12U, p2U) / (m1 * m2)) * cross(p1U, p2U)[ i]) / r12 ** 2) return Omega1
def HS2011_Omega_SO_3p5PN_pt6(m1, m2, n12U, p1U, p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(-(8 / m1 + 9 * m2 / (2 * m1**2)) * dot(n12U, p1U) + (59 / (4 * m1) + 27 / (2 * m2)) * dot(n12U, p2U)) * cross(p1U, p2U)[i]) / r12**3 return Omega1
def HS2011_Omega_SO_3p5PN_pt3(m1,m2, n12U, p1U,p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(-9*dot(n12U,p1U)*dot(p1U,p1U)/(16*m1**4) +dot(p1U,p1U)*dot(n12U,p2U)/(m1**3*m2) +27*dot(n12U,p1U)*dot(n12U,p2U)**2/(16*m1**2*m2**2) -dot(n12U,p2U)*dot(p1U,p2U)/(8*m1**2*m2**2) -5*dot(n12U,p1U)*dot(p2U,p2U)/(16*m1**2*m2**2))*cross(p1U,p2U)[i])/r12**2 return Omega1
def HS2011_Omega_SO_3p5PN_pt5(m1,m2, n12U, p1U,p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(+4*dot(n12U,p1U)**2/m1 +13*dot(p1U,p1U)/(2*m1) +5*dot(n12U,p2U)**2/m2 +53*dot(p2U,p2U)/(8*m2) -(211/(8*m1) + 22/m2)*dot(n12U,p1U)*dot(n12U,p2U) -(47/(8*m1) + 5/m2)*dot(p1U,p2U))*cross(n12U,p2U)[i])/r12**3 return Omega1
def HS2011_Omega_SO_3p5PN_pt4(m1,m2, n12U, p1U,p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(-3*m2*dot(n12U,p1U)**2/(2*m1**2) +((-3*m2)/(2*m1**2) + 27*m2**2/(8*m1**3))*dot(p1U,p1U) +(177/(16*m1) + 11/m2)*dot(n12U,p2U)**2 +(11/(2*m1) + 9*m2/(2*m1**2))*dot(n12U,p1U)*dot(n12U,p2U) +(23/(4*m1) + 9*m2/(2*m1**2))*dot(p1U,p2U) -(159/(16*m1) + 37/(8*m2))*dot(p2U,p2U))*cross(n12U,p1U)[i])/r12**3 return Omega1
def f_H_SSS_3PN_pt(m1,m2, nU, S1U,S2U, p1U,p2U, r): p2_minus_m2_over_4m1_p1 = ixp.zerorank1() for i in range(3): p2_minus_m2_over_4m1_p1[i] = p2U[i] - m2/(4*m1)*p1U[i] H_SSS_3PN_pt = (+div(3,2)*(+dot(S1U,S1U)*dot(S2U,cross(nU,p1U)) +dot(S1U,nU)*dot(S2U,cross(S1U,p1U)) -5*dot(S1U,nU)**2*dot(S2U,cross(nU,p1U)) +dot(nU,cross(S1U,S2U))*(+dot(S1U,p1U) -5*dot(S1U,nU)*dot(p1U,nU))) -3*m1/(2*m2)*( +dot(S1U,S1U) *dot(S2U,cross(nU,p2U)) +2*dot(S1U,nU) *dot(S2U,cross(S1U,p2U)) -5*dot(S1U,nU)**2*dot(S2U,cross(nU,p2U))) -dot(cross(S1U,nU),p2_minus_m2_over_4m1_p1)*(dot(S1U,S1U) - 5*dot(S1U,nU)**2))/(m1**2*r**4) return H_SSS_3PN_pt
def HS2011_Omega_SO_3p5PN_pt2(m1,m2, n12U, p1U,p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (+(-3*dot(n12U,p1U)*dot(n12U,p2U)*dot(p1U,p1U)/(2*m1**3*m2) -15*dot(n12U,p1U)**2*dot(n12U,p2U)**2/(4*m1**2*m2**2) +3*dot(p1U,p1U)*dot(n12U,p2U)**2/(4*m1**2*m2**2) -dot(p1U,p1U)*dot(p1U,p2U)/(2*m1**3*m2) +dot(p1U,p2U)**2/(2*m1**2*m2**2) +3*dot(n12U,p1U)**2*dot(p2U,p2U)/(4*m1**2*m2**2) -dot(p1U,p1U)*dot(p2U,p2U)/(4*m1**2*m2**2) -3*dot(n12U,p1U)*dot(n12U,p2U)*dot(p2U,p2U)/(2*m1*m2**3) -dot(p1U,p2U)*dot(p2U,p2U)/(2*m1*m2**3))*cross(n12U,p2U)[i])/r12**2 return Omega1
def HS2011_Omega_SO_3p5PN_pt1(m1,m2, n12U, p1U,p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = ((+7*m2*dot(p1U,p1U)**2/(16*m1**5) +9*dot(n12U,p1U)*dot(n12U,p2U)*dot(p1U,p1U)/(16*m1**4) +3*dot(p1U,p1U)*dot(n12U,p2U)**2/(4*m1**3*m2) +45*dot(n12U,p1U)*dot(n12U,p2U)**3/(16*m1**2*m2**2) +9*dot(p1U,p1U)*dot(p1U,p2U)/(16*m1**4) -3*dot(n12U,p2U)**2*dot(p1U,p2U)/(16*m1**2*m2**2) -3*dot(p1U,p1U)*dot(p2U,p2U)/(16*m1**3*m2) -15*dot(n12U,p1U)*dot(n12U,p2U)*dot(p2U,p2U)/(16*m1**2*m2**2) +3*dot(n12U,p2U)**2*dot(p2U,p2U)/(4*m1*m2**3) -3*dot(p1U,p2U)*dot(p2U,p2U)/(16*m1**2*m2**2) -3*dot(p2U,p2U)**2/(16*m1*m2**3))*cross(n12U,p1U)[i])/r12**2 return Omega1
def f_Omega1(m1, m2, n12U, p1U, p2U, r12): Omega1 = ixp.zerorank1() for i in range(3): Omega1[i] = (div(3, 2) * m2 / m1 * cross(n12U, p1U)[i] - 2 * cross(n12U, p2U)[i]) / r12**2 return Omega1