def METHOD_NAME():
    """ Tests a GELU operator on a vector half type. """
    _config()
    s2pi = math.sqrt(2.0 / math.pi)
    @dace.program
    def halftest(A: dace.float16[N]):
        out = np.ndarray([N], dace.float16)
        for i in dace.map[0:N]:
            with dace.tasklet:
                a << A[i]
                o >> out[i]
                o = dace.float16(0.5) * a * (dace.float16(1) +
                                             math.tanh(dace.float16(s2pi) * (a + dace.float16(0.044715) * (a**3))))
        return out
    A = np.random.rand(24).astype(np.float16)
    sdfg = halftest.to_sdfg()
    sdfg.apply_gpu_transformations()
    assert sdfg.apply_transformations(Vectorization, dict(vector_len=4)) == 1
    out = sdfg(A=A, N=24)
    expected = 0.5 * A * (1 + np.tanh(math.sqrt(2.0 / math.pi) * (A + 0.044715 * (A**3))))
    assert np.allclose(out, expected, rtol=1e-2, atol=1e-4)