提交 2d29b95f authored 作者: Gijs van Tulder's avatar Gijs van Tulder

Fix and test output type of min(uint*).

上级 59919467
......@@ -1717,7 +1717,8 @@ def min(x, axis=None, keepdims=False):
return -max(-x, axis=axis, keepdims=keepdims)
elif str_x_type in uint_dtypes:
itype = np.iinfo(x.dtype)
return itype.max - max(itype.max - x, axis=axis, keepdims=keepdims)
max_val = np.array(itype.max, dtype=itype.dtype)
return max_val - max(max_val - x, axis=axis, keepdims=keepdims)
elif str_x_type == 'bool':
return ~max(~x, axis=axis, keepdims=keepdims)
else:
......
......@@ -3609,16 +3609,20 @@ class T_min_max(unittest.TestCase):
itype = np.iinfo(dtype)
data = np.array([itype.min + 3, itype.min, itype.max - 5, itype.max], dtype)
n = as_tensor_variable(data)
self.assertEqual(min(n).dtype, dtype)
i = eval_outputs(min(n))
self.assertEqual(i, itype.min)
self.assertEqual(max(n).dtype, dtype)
i = eval_outputs(max(n))
self.assertEqual(i, itype.max)
def test_bool(self):
data = np.array([True, False], 'bool')
n = as_tensor_variable(data)
self.assertEqual(min(n).dtype, 'bool')
i = eval_outputs(min(n))
self.assertEqual(i, False)
self.assertEqual(max(n).dtype, 'bool')
i = eval_outputs(max(n))
self.assertEqual(i, True)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论