Skip to content

Commit 9d2d176

Browse files
Add checks for nan, posinf, neginf args
1 parent c67d218 commit 9d2d176

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

dpnp/dpnp_iface_mathematical.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2347,6 +2347,9 @@ def nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None):
23472347

23482348
dpnp.check_supported_arrays_type(x)
23492349

2350+
if not dpnp.isscalar(nan):
2351+
raise TypeError(f"nan must be a scalar, but got {type(nan)}")
2352+
23502353
out = dpnp.empty_like(x) if copy else x
23512354
x_type = x.dtype.type
23522355

@@ -2363,8 +2366,16 @@ def nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None):
23632366
)
23642367
max_f, min_f = _get_max_min(x.real.dtype)
23652368
if posinf is not None:
2369+
if not dpnp.isscalar(posinf):
2370+
raise TypeError(
2371+
f"posinf must be a scalar or None, but got {type(posinf)}"
2372+
)
23662373
max_f = posinf
23672374
if neginf is not None:
2375+
if not dpnp.isscalar(neginf):
2376+
raise TypeError(
2377+
f"neginf must be a scalar or None, but got {type(neginf)}"
2378+
)
23682379
min_f = neginf
23692380

23702381
for part, part_out in zip(parts, parts_out):

tests/test_mathematical.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1149,6 +1149,25 @@ def test_boolean_array(self):
11491149
expected = numpy.nan_to_num(a)
11501150
assert_allclose(result, expected)
11511151

1152+
def test_errors(self):
1153+
ia = dpnp.array([0, 1, dpnp.nan, dpnp.inf, -dpnp.inf])
1154+
1155+
# unsupported type `a`
1156+
a_np = dpnp.asnumpy(ia)
1157+
assert_raises(TypeError, dpnp.nan_to_num, a_np)
1158+
1159+
# unsupported type `nan`
1160+
i_nan = dpnp.array(1)
1161+
assert_raises(TypeError, dpnp.nan_to_num, ia, nan=i_nan)
1162+
1163+
# unsupported type `posinf`
1164+
i_posinf = dpnp.array(1)
1165+
assert_raises(TypeError, dpnp.nan_to_num, ia, posinf=i_posinf)
1166+
1167+
# unsupported type `neginf`
1168+
i_neginf = dpnp.array(1)
1169+
assert_raises(TypeError, dpnp.nan_to_num, ia, neginf=i_neginf)
1170+
11521171

11531172
class TestNextafter:
11541173
@pytest.mark.parametrize("dt", get_float_dtypes())

tests/third_party/cupy/math_tests/test_misc.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,16 +273,17 @@ def test_nan_to_num_inplace(self, xp):
273273
assert x is y
274274
return y
275275

276+
@pytest.mark.skip(reason="nan, posinf, neginf as array are not supported")
276277
@pytest.mark.parametrize("kwarg", ["nan", "posinf", "neginf"])
277278
def test_nan_to_num_broadcast(self, kwarg):
278279
for xp in (numpy, cupy):
279280
x = xp.asarray([0, 1, xp.nan, 4], dtype=cupy.default_float_type())
280281
y = xp.zeros((2, 4), dtype=cupy.default_float_type())
281-
with pytest.raises(ValueError):
282+
with pytest.raises(TypeError):
282283
xp.nan_to_num(x, **{kwarg: y})
283284
# dpnp.nan_to_num() doesn`t support a scalar as an input
284285
# convert 0.0 to 0-ndim array
285-
with pytest.raises(ValueError):
286+
with pytest.raises(TypeError):
286287
x_ndim_0 = xp.array(0.0)
287288
xp.nan_to_num(x_ndim_0, **{kwarg: y})
288289

0 commit comments

Comments
 (0)