def METHOD_NAME(language):
    @types( 'float32[:,:]', 'float32', 'int', 'int')
    @types( 'double[:,:]' , 'double' , 'int', 'int')
    def array_real_2d_scalar_add( x, a, d1, d2 ):
        for i in range(d1):
            for j in range(d2):
                x[i, j] += a
    f1 = array_real_2d_scalar_add
    f2 = epyccel(f1, language=language)
    for t in float_types:
        d1 = randint(1, 15)
        d2 = randint(1, 15)
        x1 = uniform(np.finfo(t).max / 2, size=(d1, d2))
        x2 = np.copy(x1)
        a = uniform(np.finfo(t).max / 2)
        f1(x1, a, d1, d2)
        f2(x2, a, d1, d2)
        assert np.array_equal( x1, x2 )