|
41 | 41 | # pylint: disable=protected-access |
42 | 42 |
|
43 | 43 | import dpctl.utils as dpu |
| 44 | +import numpy |
44 | 45 |
|
45 | 46 | import dpnp |
46 | 47 | import dpnp.backend.extensions.window._window_impl as wi |
47 | 48 |
|
48 | 49 | __all__ = ["hamming"] |
49 | 50 |
|
50 | 51 |
|
| 52 | +def _validate_input(val): |
| 53 | + |
| 54 | + is_numpy_array = isinstance(val, numpy.ndarray) |
| 55 | + is_array = dpnp.is_supported_array_type(val) or is_numpy_array |
| 56 | + if is_array: |
| 57 | + is_0d_arr = val.ndim == 0 |
| 58 | + is_int_float = dpnp.issubdtype(val.dtype, (dpnp.integer, dpnp.floating)) |
| 59 | + raise_error = not (is_0d_arr and is_int_float) |
| 60 | + if not raise_error: |
| 61 | + is_nan = numpy.isnan(val) if is_numpy_array else dpnp.isnan(val) |
| 62 | + is_inf = numpy.isinf(val) if is_numpy_array else dpnp.isinf(val) |
| 63 | + raise_error = is_nan or is_inf |
| 64 | + else: |
| 65 | + is_int = isinstance(val, (int, numpy.integer, dpnp.integer)) |
| 66 | + is_float = isinstance(val, (float, numpy.floating, dpnp.floating)) |
| 67 | + raise_error = not (is_int or is_float) |
| 68 | + if not raise_error: |
| 69 | + raise_error = val in [numpy.inf, -numpy.inf, numpy.nan] |
| 70 | + |
| 71 | + if raise_error: |
| 72 | + raise TypeError("M must be an integer") |
| 73 | + |
| 74 | + |
51 | 75 | def hamming(M, device=None, usm_type=None, sycl_queue=None): |
52 | 76 | r""" |
53 | 77 | Return the Hamming window. |
@@ -127,8 +151,9 @@ def hamming(M, device=None, usm_type=None, sycl_queue=None): |
127 | 151 |
|
128 | 152 | """ |
129 | 153 |
|
130 | | - if not isinstance(M, (int, float, dpnp.integer, dpnp.floating)): |
131 | | - raise TypeError("M must be an integer") |
| 154 | + # if not isinstance(M, (int, float, dpnp.integer, dpnp.floating)): |
| 155 | + # raise TypeError("M must be an integer") |
| 156 | + _validate_input(M) |
132 | 157 |
|
133 | 158 | cfd_kwarg = { |
134 | 159 | "device": device, |
|
0 commit comments