def METHOD_NAME(mesh_triangle):
    V1 = FunctionSpace(mesh_triangle, "DG", 1)
    V2 = FunctionSpace(mesh_triangle, "RT", 2)
    V = V1 * V2
    f = Function(V)
    f1, f2 = f.subfunctions
    x = SpatialCoordinate(mesh_triangle)
    f1.interpolate(x[0] + 1.2*x[1])
    f2.project(as_vector((x[1], 0.8 + x[0])))
    # Single point
    actual = f.at([0.6, 0.4])
    assert isinstance(actual, tuple)
    assert len(actual) == 2
    assert np.allclose(1.08, actual[0])
    assert np.allclose([0.4, 1.4], actual[1])
    # Multiple points
    actual = f.at([0.6, 0.4], [0.0, 0.9], [0.3, 0.5])
    assert len(actual) == 3
    assert np.allclose(1.08, actual[0][0])
    assert np.allclose([0.4, 1.4], actual[0][1])
    assert np.allclose(1.08, actual[1][0])
    assert np.allclose([0.9, 0.8], actual[1][1])
    assert np.allclose(0.90, actual[2][0])
    assert np.allclose([0.5, 1.1], actual[2][1])