def jacobi_radius(r, M_host, M_sat):
    """
    The Jacobi Radius for a satellite on a circular orbit about an extended host, 
    where the host is assumed to be well modeled as an isothermal sphere halo:

    R_j = r * (M_sat / 2 M_host(<r))}^(1/3)

    For MW/LMC, the Isothermal Sphere approximation is not a bad one within 50 kpc.

    In other contexts, can be called the Roche radius, Roche limit or Hill radius.

    Args:
        r: 
            distance between stellite and host (kpc)
        M_host: 
            host mass enclosed within r (M_sun)
        M_sat: 
            satellite mass (M_sun)
    
    returns: 
        Jacobi radius (kpc)
    """

    return r * (M_sat / (2*M_host))**(1/3)