def METHOD_NAME(p: torch.Tensor):
    """
    x*(I*sin(k) + cos(k))*besselj(1, R*k)/(R*(besselj(0, k) + I*besselj(1, k))) - x*sin(R*k)/R
    y*(I*sin(k) + cos(k))*besselj(1, R*k)/(R*(besselj(0, k) + I*besselj(1, k))) - y*sin(R*k)/R
    """
    k = torch.tensor(wavenum)
    x = p[..., 0:1]
    y = p[..., 1:2]
    r = torch.sqrt(x**2 + y**2)
    val = torch.zeros(p.shape, dtype=torch.complex128)
    t0 = torch.sin(k*r)/r
    c = torch.complex(torch.cos(k), torch.sin(k)) / \
        torch.complex(torch.special.bessel_j0(k), torch.special.bessel_j1(k))
    t1 = c*torch.special.bessel_j1(k*r)/r
    t2 = t1 - t0
    val[..., 0:1] = t2*x
    val[..., 1:2] = t2*y
    return val