# This test handles various aspects of local arrays using the `numpy.empty()`
# function
from lpython import f64, i32
from numpy import empty, float64

def test_local_arrays():
    a: f64[16]
    a = empty(16, dtype=float64)
    i: i32
    for i in range(16):
        a[i] = f64(i) + 0.5
    eps: f64
    eps = 1e-12
    assert abs(a[0] - 0.5) < eps
    assert abs(a[1] - 1.5) < eps
    assert abs(a[10] - 10.5) < eps
    assert abs(a[15] - 15.5) < eps

def f() -> f64[4]:
    a: f64[4]
    a = empty(4, dtype=float64)
    i: i32
    for i in range(4):
        a[i] = 1.0 * f64(i)
    return a

def test_return_arrays():
    a: f64[4]
    a = f()
    eps: f64
    eps = 1e-12
    assert abs(a[0] - 0.0) < eps
    assert abs(a[1] - 1.0) < eps
    assert abs(a[2] - 2.0) < eps
    assert abs(a[3] - 3.0) < eps

def check():
    test_local_arrays()
    test_return_arrays()

check()