Skip to content

Commit 29246d1

Browse files
committed
address comments
1 parent e104c48 commit 29246d1

File tree

2 files changed

+85
-2
lines changed

2 files changed

+85
-2
lines changed

dpnp/dpnp_iface_trigonometric.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ def hypot(
860860
Parameters `where`, `dtype` and `subok` are supported with their default values.
861861
Keyword argument `kwargs` is currently unsupported.
862862
Otherwise the function will be executed sequentially on CPU.
863-
Input array data types are limited by supported DPNP :ref:`Data types`.
863+
Input array data types are limited by supported real-valued data types.
864864
865865
Examples
866866
--------

tests/test_mathematical.py

Lines changed: 84 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,6 @@ def test_floor_divide(self, dtype, lhs, rhs):
199199
"floor_divide", dtype, lhs, rhs, check_type=False
200200
)
201201

202-
@pytest.mark.usefixtures("allow_fall_back_on_numpy")
203202
@pytest.mark.parametrize(
204203
"dtype", get_all_dtypes(no_bool=True, no_complex=True)
205204
)
@@ -966,6 +965,90 @@ def test_invalid_out(self, out):
966965
assert_raises(TypeError, numpy.add, a.asnumpy(), 2, out)
967966

968967

968+
class TestHypot:
969+
@pytest.mark.parametrize("dtype", get_float_dtypes())
970+
def test_hypot(self, dtype):
971+
array1_data = numpy.arange(10)
972+
array2_data = numpy.arange(5, 15)
973+
out = numpy.empty(10, dtype=dtype)
974+
975+
# DPNP
976+
dp_array1 = dpnp.array(array1_data, dtype=dtype)
977+
dp_array2 = dpnp.array(array2_data, dtype=dtype)
978+
dp_out = dpnp.array(out, dtype=dtype)
979+
result = dpnp.hypot(dp_array1, dp_array2, out=dp_out)
980+
981+
# original
982+
np_array1 = numpy.array(array1_data, dtype=dtype)
983+
np_array2 = numpy.array(array2_data, dtype=dtype)
984+
expected = numpy.hypot(np_array1, np_array2, out=out)
985+
986+
assert_allclose(expected, result)
987+
assert_allclose(out, dp_out)
988+
989+
@pytest.mark.parametrize("dtype", get_float_dtypes())
990+
def test_out_dtypes(self, dtype):
991+
size = 10
992+
993+
np_array1 = numpy.arange(size, 2 * size, dtype=dtype)
994+
np_array2 = numpy.arange(size, dtype=dtype)
995+
np_out = numpy.empty(size, dtype=numpy.float32)
996+
expected = numpy.hypot(np_array1, np_array2, out=np_out)
997+
998+
dp_array1 = dpnp.arange(size, 2 * size, dtype=dtype)
999+
dp_array2 = dpnp.arange(size, dtype=dtype)
1000+
1001+
dp_out = dpnp.empty(size, dtype=dpnp.float32)
1002+
if dtype != dpnp.float32:
1003+
# dtype of out mismatches types of input arrays
1004+
with pytest.raises(TypeError):
1005+
dpnp.hypot(dp_array1, dp_array2, out=dp_out)
1006+
1007+
# allocate new out with expected type
1008+
dp_out = dpnp.empty(size, dtype=dtype)
1009+
1010+
result = dpnp.hypot(dp_array1, dp_array2, out=dp_out)
1011+
1012+
tol = numpy.finfo(numpy.float32).resolution
1013+
assert_allclose(expected, result, rtol=tol, atol=tol)
1014+
1015+
@pytest.mark.parametrize("dtype", get_float_dtypes())
1016+
def test_out_overlap(self, dtype):
1017+
size = 15
1018+
# DPNP
1019+
dp_a = dpnp.arange(2 * size, dtype=dtype)
1020+
dpnp.hypot(dp_a[size::], dp_a[::2], out=dp_a[:size:])
1021+
1022+
# original
1023+
np_a = numpy.arange(2 * size, dtype=dtype)
1024+
numpy.hypot(np_a[size::], np_a[::2], out=np_a[:size:])
1025+
1026+
tol = numpy.finfo(numpy.float32).resolution
1027+
assert_allclose(np_a, dp_a, rtol=tol, atol=tol)
1028+
1029+
@pytest.mark.parametrize(
1030+
"shape", [(0,), (15,), (2, 2)], ids=["(0,)", "(15, )", "(2,2)"]
1031+
)
1032+
def test_invalid_shape(self, shape):
1033+
dp_array1 = dpnp.arange(10)
1034+
dp_array2 = dpnp.arange(5, 15)
1035+
dp_out = dpnp.empty(shape)
1036+
1037+
with pytest.raises(ValueError):
1038+
dpnp.hypot(dp_array1, dp_array2, out=dp_out)
1039+
1040+
@pytest.mark.parametrize(
1041+
"out",
1042+
[4, (), [], (3, 7), [2, 4]],
1043+
ids=["4", "()", "[]", "(3, 7)", "[2, 4]"],
1044+
)
1045+
def test_invalid_out(self, out):
1046+
a = dpnp.arange(10)
1047+
1048+
assert_raises(TypeError, dpnp.hypot, a, 2, out)
1049+
assert_raises(TypeError, numpy.hypot, a.asnumpy(), 2, out)
1050+
1051+
9691052
class TestFmax:
9701053
@pytest.mark.parametrize(
9711054
"dtype", get_all_dtypes(no_bool=True, no_complex=True, no_none=True)

0 commit comments

Comments
 (0)