@@ -36,6 +36,8 @@ def swt_max_level(size_t input_len):
3636 multiple of ``2**n``. ``numpy.pad`` can be used to pad a signal up to an
3737 appropriate length as needed.
3838 """
39+ if input_len < 1 :
40+ raise ValueError (" Cannot apply swt to a size 0 signal." )
3941 max_level = common.swt_max_level(input_len)
4042 if max_level == 0 :
4143 warnings.warn(
@@ -54,6 +56,8 @@ def swt(cdata_t[::1] data, Wavelet wavelet, size_t level, size_t start_level):
5456
5557 if data.size % 2 :
5658 raise ValueError (" Length of data must be even." )
59+ if data.size < 1 :
60+ raise ValueError (" Data must have non-zero size" )
5761
5862 if level < 1 :
5963 raise ValueError (" Level value must be greater than zero." )
@@ -67,6 +71,7 @@ def swt(cdata_t[::1] data, Wavelet wavelet, size_t level, size_t start_level):
6771 common.swt_max_level(data.size) - start_level))
6872 raise ValueError (msg)
6973
74+
7075 output_len = common.swt_buffer_length(data.size)
7176 if output_len < 1 :
7277 raise RuntimeError (" Invalid output length." )
@@ -153,8 +158,10 @@ cpdef swt_axis(np.ndarray data, Wavelet wavelet, size_t level,
153158 cdef int retval = - 5
154159 cdef size_t i
155160
156- if data.size % 2 :
157- raise ValueError (" Length of data must be even." )
161+ if data.shape[axis] % 2 :
162+ raise ValueError (" Length of data must be even along the transform axis." )
163+ if data.shape[axis] < 1 :
164+ raise ValueError (" Data must have non-zero size along the transform axis." )
158165
159166 if level < 1 :
160167 raise ValueError (" Level value must be greater than zero." )
0 commit comments