forked from M-Labs/nac3
standalone/ndarray: add and organize view function tests
This commit is contained in:
parent
cd41b03dd5
commit
ca896da1fa
|
@ -68,6 +68,19 @@ def output_ndarray_float_2(n: ndarray[float, Literal[2]]):
|
|||
for c in range(len(n[r])):
|
||||
output_float64(n[r][c])
|
||||
|
||||
def output_ndarray_float_3(n: ndarray[float, Literal[3]]):
|
||||
for d in range(len(n)):
|
||||
for r in range(len(n[d])):
|
||||
for c in range(len(n[d][r])):
|
||||
output_float64(n[d][r][c])
|
||||
|
||||
def output_ndarray_float_4(n: ndarray[float, Literal[4]]):
|
||||
for x in range(len(n)):
|
||||
for y in range(len(n[x])):
|
||||
for z in range(len(n[x][y])):
|
||||
for w in range(len(n[x][y][z])):
|
||||
output_float64(n[x][y][z][w])
|
||||
|
||||
def consume_ndarray_1(n: ndarray[float, Literal[1]]):
|
||||
pass
|
||||
|
||||
|
@ -186,6 +199,68 @@ def test_ndarray_nd_idx():
|
|||
output_float64(x[1, 0])
|
||||
output_float64(x[1, 1])
|
||||
|
||||
def test_ndarray_transpose():
|
||||
x: ndarray[float, 2] = np_array([[1., 2., 3.], [4., 5., 6.]])
|
||||
y = np_transpose(x)
|
||||
z = np_transpose(y)
|
||||
|
||||
output_ndarray_float_2(x)
|
||||
output_ndarray_float_2(y)
|
||||
|
||||
def test_ndarray_reshape():
|
||||
w: ndarray[float, 1] = np_array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
|
||||
x = np_reshape(w, (1, 2, 1, -1))
|
||||
y = np_reshape(x, [2, -1])
|
||||
z = np_reshape(y, 10)
|
||||
|
||||
x1: ndarray[int32, 1] = np_array([1, 2, 3, 4])
|
||||
x2: ndarray[int32, 2] = np_reshape(x1, (2, 2))
|
||||
|
||||
output_ndarray_float_1(w)
|
||||
output_ndarray_float_2(y)
|
||||
output_ndarray_float_1(z)
|
||||
|
||||
def test_ndarray_broadcast_to():
|
||||
xs = np_array([1.0, 2.0, 3.0])
|
||||
ys = np_broadcast_to(xs, (1, 3))
|
||||
zs = np_broadcast_to(ys, (2, 4, 3))
|
||||
|
||||
output_ndarray_float_1(xs)
|
||||
output_ndarray_float_2(ys)
|
||||
output_ndarray_float_3(zs)
|
||||
|
||||
def test_ndarray_subscript_assignment():
|
||||
xs = np_array([[11.0, 22.0, 33.0, 44.0], [55.0, 66.0, 77.0, 88.0]])
|
||||
|
||||
xs[0, 0] = 99.0
|
||||
output_ndarray_float_2(xs)
|
||||
|
||||
xs[0] = 100.0
|
||||
output_ndarray_float_2(xs)
|
||||
|
||||
xs[:, ::2] = 101.0
|
||||
output_ndarray_float_2(xs)
|
||||
|
||||
xs[1:, 0] = 102.0
|
||||
output_ndarray_float_2(xs)
|
||||
|
||||
xs[0] = np_array([-1.0, -2.0, -3.0, -4.0])
|
||||
output_ndarray_float_2(xs)
|
||||
|
||||
xs[:] = np_array([-5.0, -6.0, -7.0, -8.0])
|
||||
output_ndarray_float_2(xs)
|
||||
|
||||
# Test assignment with memory sharing
|
||||
ys1 = np_reshape(xs, (2, 4))
|
||||
ys2 = np_transpose(ys1)
|
||||
ys3 = ys2[::-1, 0]
|
||||
ys3[0] = -999.0
|
||||
|
||||
output_ndarray_float_2(xs)
|
||||
output_ndarray_float_2(ys1)
|
||||
output_ndarray_float_2(ys2)
|
||||
output_ndarray_float_1(ys3)
|
||||
|
||||
def test_ndarray_add():
|
||||
x = np_identity(2)
|
||||
y = x + np_ones([2, 2])
|
||||
|
@ -530,11 +605,59 @@ def test_ndarray_ipow_broadcast_scalar():
|
|||
output_ndarray_float_2(x)
|
||||
|
||||
def test_ndarray_matmul():
|
||||
x = np_identity(2)
|
||||
y = x @ np_ones([2, 2])
|
||||
# 2D @ 2D -> 2D
|
||||
a1 = np_array([[2.0, 3.0], [5.0, 7.0]])
|
||||
b1 = np_array([[11.0, 13.0], [17.0, 23.0]])
|
||||
c1 = a1 @ b1
|
||||
output_int32(np_shape(c1)[0])
|
||||
output_int32(np_shape(c1)[1])
|
||||
output_ndarray_float_2(c1)
|
||||
|
||||
output_ndarray_float_2(x)
|
||||
output_ndarray_float_2(y)
|
||||
# 1D @ 1D -> Scalar
|
||||
a2 = np_array([2.0, 3.0, 5.0])
|
||||
b2 = np_array([7.0, 11.0, 13.0])
|
||||
c2 = a2 @ b2
|
||||
output_float64(c2)
|
||||
|
||||
# 2D @ 1D -> 1D
|
||||
a3 = np_array([[1.0, 2.0, 3.0], [7.0, 8.0, 9.0]])
|
||||
b3 = np_array([4.0, 5.0, 6.0])
|
||||
c3 = a3 @ b3
|
||||
output_int32(np_shape(c3)[0])
|
||||
output_ndarray_float_1(c3)
|
||||
|
||||
# 1D @ 2D -> 1D
|
||||
a4 = np_array([1.0, 2.0, 3.0])
|
||||
b4 = np_array([[4.0, 5.0], [6.0, 7.0], [8.0, 9.0]])
|
||||
c4 = a4 @ b4
|
||||
output_int32(np_shape(c4)[0])
|
||||
output_ndarray_float_1(c4)
|
||||
|
||||
# Broadcasting
|
||||
a5 = np_array([
|
||||
[[ 0.0, 1.0, 2.0, 3.0],
|
||||
[ 4.0, 5.0, 6.0, 7.0]],
|
||||
[[ 8.0, 9.0, 10.0, 11.0],
|
||||
[12.0, 13.0, 14.0, 15.0]],
|
||||
[[16.0, 17.0, 18.0, 19.0],
|
||||
[20.0, 21.0, 22.0, 23.0]]
|
||||
])
|
||||
b5 = np_array([
|
||||
[[[ 0.0, 1.0, 2.0],
|
||||
[ 3.0, 4.0, 5.0],
|
||||
[ 6.0, 7.0, 8.0],
|
||||
[ 9.0, 10.0, 11.0]]],
|
||||
[[[12.0, 13.0, 14.0],
|
||||
[15.0, 16.0, 17.0],
|
||||
[18.0, 19.0, 20.0],
|
||||
[21.0, 22.0, 23.0]]]
|
||||
])
|
||||
c5 = a5 @ b5
|
||||
output_int32(np_shape(c5)[0])
|
||||
output_int32(np_shape(c5)[1])
|
||||
output_int32(np_shape(c5)[2])
|
||||
output_int32(np_shape(c5)[3])
|
||||
output_ndarray_float_4(c5)
|
||||
|
||||
def test_ndarray_imatmul():
|
||||
x = np_identity(2)
|
||||
|
@ -1429,27 +1552,6 @@ def test_ndarray_nextafter_broadcast_rhs_scalar():
|
|||
output_ndarray_float_2(nextafter_x_zeros)
|
||||
output_ndarray_float_2(nextafter_x_ones)
|
||||
|
||||
def test_ndarray_transpose():
|
||||
x: ndarray[float, 2] = np_array([[1., 2., 3.], [4., 5., 6.]])
|
||||
y = np_transpose(x)
|
||||
z = np_transpose(y)
|
||||
|
||||
output_ndarray_float_2(x)
|
||||
output_ndarray_float_2(y)
|
||||
|
||||
def test_ndarray_reshape():
|
||||
w: ndarray[float, 1] = np_array([1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
|
||||
x = np_reshape(w, (1, 2, 1, -1))
|
||||
y = np_reshape(x, [2, -1])
|
||||
z = np_reshape(y, 10)
|
||||
|
||||
x1: ndarray[int32, 1] = np_array([1, 2, 3, 4])
|
||||
x2: ndarray[int32, 2] = np_reshape(x1, (2, 2))
|
||||
|
||||
output_ndarray_float_1(w)
|
||||
output_ndarray_float_2(y)
|
||||
output_ndarray_float_1(z)
|
||||
|
||||
def test_ndarray_dot():
|
||||
x1: ndarray[float, 1] = np_array([5.0, 1.0, 4.0, 2.0])
|
||||
y1: ndarray[float, 1] = np_array([5.0, 1.0, 6.0, 6.0])
|
||||
|
@ -1581,6 +1683,11 @@ def run() -> int32:
|
|||
test_ndarray_slices()
|
||||
test_ndarray_nd_idx()
|
||||
|
||||
test_ndarray_transpose()
|
||||
test_ndarray_reshape()
|
||||
test_ndarray_broadcast_to()
|
||||
test_ndarray_subscript_assignment()
|
||||
|
||||
test_ndarray_add()
|
||||
test_ndarray_add_broadcast()
|
||||
test_ndarray_add_broadcast_lhs_scalar()
|
||||
|
@ -1744,8 +1851,6 @@ def run() -> int32:
|
|||
test_ndarray_nextafter_broadcast()
|
||||
test_ndarray_nextafter_broadcast_lhs_scalar()
|
||||
test_ndarray_nextafter_broadcast_rhs_scalar()
|
||||
test_ndarray_transpose()
|
||||
test_ndarray_reshape()
|
||||
|
||||
test_ndarray_dot()
|
||||
test_ndarray_cholesky()
|
||||
|
|
Loading…
Reference in New Issue