def METHOD_NAME():
    """
    Test that a circular BiotSavartFilament (Biot Savart differential form)
    matches with the analytical Greens function for a circular coil.
    This is a verification test.
    """
    nx, nz = 100, 100
    x_coil, z_coil = 4, 0
    current = 10e7
    radius = 0.0000000000001
    x_1d = np.linspace(0.1, 10, nx)
    z_1d = np.linspace(-5, 5, nz)
    x_2d, z_2d = np.meshgrid(x_1d, z_1d, indexing="ij")
    # Analytical field values
    _, Bx, Bz = greens_all(x_coil, z_coil, x_2d, z_2d)
    circle = make_circle(radius=x_coil, center=(0, z_coil, 0), axis=(0, 0, 1))
    filament = circle.discretize(ndiscr=2000)
    bsf = BiotSavartFilament(filament, radius)
    bsf.plot()
    plt.show()
    plt.close()
    Bx2, _, Bz2 = bsf.field(x_2d, np.zeros_like(x_2d), z_2d)
    Bx *= current
    Bz *= current
    Bx2 *= current
    Bz2 *= current
    Bp = np.sqrt(Bx**2 + Bz**2)
    Bp2 = np.sqrt(Bx2**2 + Bz**2)
    # Relative errors
    err_Bx = np.abs(100 * (Bx - Bx2) / Bx)
    err_Bz = np.abs(100 * (Bz - Bz2) / Bz)
    err_Bp = np.abs(100 * (Bp - Bp2) / Bp)
    # RMS errors
    rms_Bx = np.average((Bx - Bx2) ** 2)
    rms_Bz = np.average((Bz - Bz2) ** 2)
    rms_Bp = np.average((Bp - Bp2) ** 2)
    plot_errors(x_2d, z_2d, Bx, Bz, Bp, Bx2, Bz2, Bp2)
    # Note that we're using a lot of points on our circle...
    # But the errors are predominantly around the centre of the coil
    # So a for 2000 point circle we can get less than 0.5 % discrepancy with
    # an analytical solution (Green's functions for Bx and Bz)
    assert np.amax(err_Bx) <= 0.0081
    assert np.amax(err_Bz) <= 0.49
    assert np.amax(err_Bp) <= 0.003
    assert rms_Bx <= 5e-7
    assert rms_Bz <= 5e-7
    assert rms_Bp <= 5e-7
    assert np.allclose(Bp, Bp2, rtol=5e-5)
    # Current on axis analytical relation
    centreline = np.c_[np.zeros(100), np.zeros(100), np.linspace(-10, 10, 100)]
    _, _, bz_differential = current * bsf.field(
        np.zeros(100), np.zeros(100), np.linspace(-10, 10, 100)
    )
    bz_analytical = (
        (MU_0 / (4 * np.pi))
        * (2 * np.pi * x_coil**2 * current)
        / (centreline.T[2] ** 2 + x_coil**2) ** (3 / 2)
    )
    assert np.allclose(bz_analytical, bz_differential)