403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/scipy/signal/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/scipy/signal/tests/__pycache__/test_signaltools.cpython-311.pyc
�

d�c���B�ddlZddlmZmZddlmZddlmZddlm	Z	ddl
Z
ddl
mZddl
mZmZmZmZmZmZmZmZddlmZmZddlZdd	lmZdd
lmZddlmZm Z ddl!m"Z"dd
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAddlBmCZCddlDmEZEmFZFmGZGddlHmIZIddlJmKZKGd�d��ZLGd�deL��ZMGd�d��ZNGd�deN��ZOGd�d��ZPd�ZQd�ZRd�ZSd�ZTGd �d!��ZUGd"�d#��ZVGd$�d%��ZWGd&�d'��ZXgd(�ZYeYeIz
ZYGd)�d*��ZZGd+�d,��Z[Gd-�d.��Z\Gd/�d0��Z]Gd1�d2e]��Z^Gd3�d4e]��Z_Gd5�d6e]��Z`Gd7�d8e]��ZaGd9�d:e]��ZbGd;�d<e]��ZcGd=�d>e]��ZdGd?�d@e]��ZedA�ZfdB�Zge
jh�idCejjejkejlejmejneoejpejpejqejrejseg��GdD�dE����ZtGdF�dG��Zue
jh�idHgdI���e
jh�idJdKdLg��e
jh�idMgdN���dO�������Zve
jh�idCejwejxejyg��GdP�dQ����ZzGdR�dS��Z{GdT�dU��Z|GdV�dW��Z}GdX�dYe}��Z~dZ�Zdvd[�Z�d\�Z�d]�Z�Gd^�d_��Z�Gd`�da��Z�Gdb�dc��Z�Gdd�de��Z�Gdf�dg��Z�dh�Z�dwdj�Z�e
jh�idke9e.f��dl���Z�e
jh�idCdm��Gdn�do����Z�Gdp�dq��Z�Gdr�ds��Z�Gdt�du��Z�dS)x�N)�ThreadPoolExecutor�as_completed)�Decimal��product)�gcd)�raises)�assert_equal�assert_almost_equal�assert_array_equal�assert_array_almost_equal�assert_allclose�assert_�assert_array_less�suppress_warnings)�array�arange)�fft)�correlate1d)�fmin�linear_sum_assignment)�signal)�	correlate�correlate2d�correlation_lags�convolve�
convolve2d�fftconvolve�
oaconvolve�choose_conv_method�hilbert�hilbert2�lfilter�
lfilter_zi�filtfilt�butter�zpk2tf�zpk2sos�invres�invresz�vectorstrength�lfiltic�tf2sos�sosfilt�sosfiltfilt�
sosfilt_zi�tf2zpk�BadCoefficients�detrend�unique_roots�residue�residuez)�hann)�_filtfilt_gust�_compute_factors�_group_poles)�_upfirdn_modes)�
_testutilsc�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�
_TestConvolvec�t�gd�}gd�}t||��}t|tgd�����dS)N)����rBrA���r@)r@�
��� rJ���rrr��self�a�b�cs    �E/usr/lib/python3/dist-packages/scipy/signal/tests/test_signaltools.py�
test_basicz_TestConvolve.test_basic'sH�������I�I���Q��N�N���1�e�$C�$C�$C�D�D�E�E�E�E�E�c�x�gd�}gd�}t||d���}t|tgd�����dS)N�r@rArB)rErFr@rA�same��mode)rGrH�"rMrNs    rS�	test_samez_TestConvolve.test_same-sJ���I�I���L�L���Q���'�'�'���1�e�L�L�L�1�1�2�2�2�2�2rUc�x�gd�}gd�}t||d���}t|tgd�����dS)NrWrDrXrY)rGrHrHrMrNs    rS�test_same_eqz_TestConvolve.test_same_eq3sJ���I�I���I�I���Q���'�'�'���1�e�L�L�L�1�1�2�2�2�2�2rUc��tgd���}tddg��}t||��}t|tgd�����dS)N)��?�?�@�?�@�?r`ra)�@y@@y@ @y@@)rrr)rO�x�y�zs    rS�test_complexz_TestConvolve.test_complex9sZ���*�*�*�+�+���6�6�"�#�#���Q��N�N���1�e�$@�$@�$@�A�A�B�B�B�B�BrUc�T�d}d}t||��}t|||z��dS)Ni	i�)rr
rNs    rS�test_zero_rankz_TestConvolve.test_zero_rank?s3�������Q��N�N���Q��A������rUc�n�tjd���ddd��}tjd��}td��D]g}dgdz}d||<t	||�|��d���}t	||�|��d���}t||���hdS)N�r@rE�direct��methodr)�npr�reshape�rangerr)rOrPrQ�i�b_shaperdres       rS�test_broadcastablez _TestConvolve.test_broadcastableEs����I�b�M�M�!�!�!�Q��*�*���I�a�L�L���q���	"�	"�A��c�!�e�G��G�A�J���A�I�I�g�.�.�x�@�@�@�A���A�I�I�g�.�.�u�=�=�=�A��A�q�!�!�!�!�	"�	"rUc��tdg��}tdg��}t||��}t|||z��dS�NigiP)rrr
rNs    rS�test_single_elementz!_TestConvolve.test_single_elementOsC���4�&�M�M���4�&�M�M���Q��N�N���Q��A������rUc��gd�gd�g}gd�gd�g}t||��}tgd�gd�gd�g��}t||��dS�NrDrW�rFr@rA�rArBrC)rF���rL)rG��>�:�&)rL�r��1r�rrr�rOrPrQrR�ds     rS�test_2d_arraysz_TestConvolve.test_2d_arraysUsz��
�Y�Y�	�	�	�"��
�Y�Y�	�	�	�"���Q��N�N���%�%�%�'�'�'�'�'�'�)�
*�
*��	�1�a� � � � � rUc
�n�td���ddd��}dtd���ddd��z}|td��ddd��ddd��z
}tgd�gd�gd	�gd
�ggd�gd�gd
�gd�ggd�gd�gd�gd�ggd�gd�gd�gd�gg��}tt	||d��|��tt	||d��|��tt	||d��|dd�dd�dd�f��tt	||d��|dd�dd�dd�f��tt	||d��|dd�dd�dd�f��tt	||d��|dd�dd�dd�f��dS)N�rF��?rkr@���)�y:@y9@�?y8@@)yJ@y�b@@y b@&@y@W@&@)yG@@y�`@7@y�_@=@y@T@7@)yD@(@y�X@@@y@W@�B@yK@8@)yZ@y�n@*@y�m@7@y�`@5@)y�q@>@y��@X@y�@_@y�t@�U@)y�n@�P@y �@�f@y@�@j@y�q@�`@)y�a@�P@y0s@ d@yr@`f@y c@�Z@)yQ@B@y�c@�Y@y`b@@\@y@T@�R@)y�e@@a@y�w@�u@yv@�w@y@g@�l@)y@a@�e@y�r@{@y�p@�|@y@a@`q@)y�Q@@a@y b@0t@y�_@Pu@y�O@�h@)y@@R@yQ@�d@y�M@�e@y>@Y@)yQ@h@y`a@{@y@]@p|@y�L@�o@)yC@�k@y@R@0@y�I@H�@y5@0r@)y(@b@y4@�s@y@�t@y�f@�fullrXrEr�valid)rrprrr)rO�small�big�	out_arrays    rS�test_input_swappingz!_TestConvolve.test_input_swapping^sX���q�	�	�!�!�!�Q��*�*���6�"�:�:�%�%�a��A�.�.�.���v�b�z�z�$�$�B�$��'�'��1�a�0�0�0���1�1�1�6�6�6�7�7�7�6�6�6�8�
:�9�9�;�;�;�=�=�=�=�=�=�?�
;�:�:�>�>�>�>�>�>�<�<�<�>�
:�9�9�<�<�<�:�:�:�8�8�8�:�
;�<�<�	�*	�8�E�3��7�7��C�C�C��8�C���7�7��C�C�C��8�E�3��7�7�$�Q�q�S�!�A�#�q��s�]�3�	5�	5�	5��8�C���7�7�$�Q�q�S�!�A�#�q��s�]�3�	5�	5�	5��8�E�3��8�8�$�Q�q�S�!�A�#�q��s�]�3�	5�	5�	5��8�C���8�8�$�Q�q�S�!�A�#�q��s�]�3�	5�	5�	5�	5�	5rUc�J�gd�}gd�}ttt||d���ttt||dd���ttt||dd	���ttt||d
d���ttt||dd���dS�
NrWrD�spamrY�eggsr�rZrn�hamrlr��baconrX��
assert_raises�
ValueErrorr�rOrPrQs   rS�test_invalid_paramsz!_TestConvolve.test_invalid_params�s����I�I���I�I���j�(�A�q�v�>�>�>�>��j�(�A�q�v�e�L�L�L�L��j�(�A�q�u�X�N�N�N�N��j�(�A�q�v�g�N�N�N�N��j�(�A�q�v�g�N�N�N�N�N�NrUN)
�__name__�
__module__�__qualname__rTr\r^rgrirtrwr�r�r��rUrSr>r>%s�������F�F�F�3�3�3�3�3�3�C�C�C����"�"�"����!�!�!�#5�#5�#5�JO�O�O�O�OrUr>c�4�eZdZd�Zd�Zd�Zd	d�Zd�Zd�ZdS)
�TestConvolvec�>�gd�}gd�}gd�}t||d��}t||��t||d��}t||��gd�}ddg}ddg}t||d��}t||��t||d��}t||��dS)	N)rErFr@rCrBr@)	rFr@rArBr@rArFrFrE)�F�N�I�Ar�)y�?@�@�y@�@���?y @$�)rr�rOrPrQ�expected�outs     rS�test_valid_mode2zTestConvolve.test_valid_mode2�s�������'�'�'��#�#�#���q�!�W�%�%���3��)�)�)��q�!�W�%�%���3��)�)�)�$�$�$��
�V����G�$���q�!�W�%�%���3��)�)�)��q�!�W�%�%���3��)�)�)�)�)rUc�z�gd�}gd�}t||d��}tgd���}t||��dS)N)rErFr@r@rErF)
rErAr@rArBrCr|rAr@rFrErEr@rX)�9�=�?r��-�$r�r�s     rS�test_same_modezTestConvolve.test_same_mode�sS������3�3�3���Q��6�"�"���*�*�*�+�+���1�a� � � � � rUc�"�tjdd���d��}tjdd���d��}ttt
g||f�Riddi��ttt
g||f�Riddi��dS�	NrEr|�rFr@���r�r@rFrZr�)rorrpr�r�rr�s   rS�test_invalid_shapesz TestConvolve.test_invalid_shapes�s���
�I�a��O�O�#�#�F�+�+���I�b�!���$�$�V�,�,���j�(�I�a��V�I�I�I���7H�I�I�I��j�(�I�a��V�I�I�I���7H�I�I�I�I�IrU�dc�,�	�
���td�tj���D��g���
d��
D���
dD]}|�
vr�
�|����
fd��
D��}tj�d��tj�ddg|���tj�|��d	�}|d
x|d<|d<|d
d|d
zz|d<|D�]\}}�	|tj	|��j
�|���|tj	|��j
�|����	��fd�dD��}t|dj	|dj	��d|vr#d|vrtt����d����td�||fD����rddd�}nd||fvrddd�}nddd�}t|d|dfi|����dS)Nc��g|]\}}|��Sr�r�)�.0�_�ts   rS�
<listcomp>z5TestConvolve.test_convolve_method.<locals>.<listcomp>�s��6�6�6�4�1�a�Q�6�6�6rUc�@�h|]}tj|��j��Sr�)ro�dtype�name�r�r�s  rS�	<setcomp>z4TestConvolve.test_convolve_method.<locals>.<setcomp>�s#��1�1�1�a���!���!�1�1�1rU)
�
complex256�
complex192�float128�float96�str�void�bytes�object�unicode�stringc�.��g|]}�D]}dD]}|||f���
�S))r�r�rXr�)r��t1�t2rZ�typess    �rSr�z5TestConvolve.test_convolve_method.<locals>.<listcomp>�sb���F�F�F�2��F�F�2�+D�F�F�#'��R���F�F�F�F�FrU�*rrE��size)rr�frrrQ�ur���?rRc	�8��i|]}|t��|������S))rnrZ)r)r��keyrZ�x1�x2s  ���rS�
<dictcomp>z5TestConvolve.test_convolve_method.<locals>.<dictcomp>�s<���5�5�5���H�R��C�d�C�C�C�5�5�5rU)rrlrrl�boolc��g|]}|dv��S)>�float32�	complex64r�r�s  rSr�z5TestConvolve.test_convolve_method.<locals>.<listcomp>�s��D�D�D�a�A�1�1�D�D�DrU�-C��6?g���ư>��rtol�atol�float16���MbP?��h㈵��>�:�0�yE>)�sumro�sctypes�items�remove�random�seed�choice�randnr��kind�astyper
r �anyr)
rO�nr��args�array_typesr�r��results�kwargsrZr�r�r�s
         @@@@rS�test_convolve_methodz!TestConvolve.test_convolve_method�s��������6�6�2�:�#3�#3�#5�#5�6�6�6��;�;��1�1�5�1�1�1��M�	$�	$�E���~�~����U�#�#�#��F�F�F�F��F�F�F��
	�	���r�����I�,�,�a��V�!�,�<�<��I�O�O�A�.�.�0�0��.9�#�.>�>��C��;�s�+�&�s�+�d�;�s�3C�.C�C��C�� �	I�	I�L�B��D��R�X�b�\�\�.�/�6�6�r�:�:�B��R�X�b�\�\�.�/�6�6�r�:�:�B�5�5�5�5�5�5�"3�5�5�5�G�
����-�w�x�/@�/F�G�G�G���|�|��"����/��B�7�7��B�B�B���D�D�B��8�D�D�D�E�E�
6�"(�$�7�7����r�2�h�&�&�"&��5�5���#'��5�5���G�E�N�G�H�,=�H�H��H�H�H�H�1	I�	IrUc�$�dD]�}tjd|zgtj���}t||d���}t||d���}|dkr<t	||��t	|dd|zz��t	|dd|zz����dS)N)	rG��2�3�4�5�6�<r�rF�r�rrmrlr)ror�int64rr
)rOr�rfrrls     rS� test_convolve_method_large_inputz-TestConvolve.test_convolve_method_large_input�s���6�
	/�
	/�A���!�Q�$��r�x�0�0�0�A��1�a��.�.�.�C��a��8�4�4�4�F��2�v�v��S�&�)�)�)��S�!�a��c�(�+�+�+��V�Q��1��X�.�.�.��
	/�
	/rUc�v�tttdgdd���tttddgd���tttdgdd���tttddgd���tttdgdgg��tttdgd��dS�NrErFrlrmrr@r��rOs rS�test_mismatched_dimsz!TestConvolve.test_mismatched_dims�s����j�(�Q�C��8�D�D�D�D��j�(�A��s�8�D�D�D�D��j�(�Q�C��5�A�A�A�A��j�(�A��s�5�A�A�A�A��j�(�Q�C�1�#��7�7�7��j�(�Q�C��3�3�3�3�3rUN)r�)	r�r�r�r�r�r�rrrr�rUrSr�r��s{������*�*�*�,!�!�!�
J�
J�
J�.I�.I�.I�.I�`
/�
/�
/�4�4�4�4�4rUr�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
ej�
d	eeg��ej�
d
dgd�gfd
gd�gfg��d�����Zd�Zd�Zd�ZdS)�_TestConvolve2dc��gd�gd�g}gd�gd�g}tgd�gd�gd�g��}t||��}t||��dSry�rrr)rOrPrQr��es     rSr�z_TestConvolve2d.test_2d_arrayss|��
�Y�Y�	�	�	�"��
�Y�Y�	�	�	�"���%�%�%�'�'�'�'�'�'�)�
*�
*��
�q�!�����1�a� � � � � rUc���gd�gd�g}gd�gd�g}tgd�g��}t||d��}t||��t||d��}t||��dS)N�rFr@rArBrCr|r��rArBrCr|r��	rGrDrW�r��P�b�t�r�r�rOrr��h�gs     rS�test_valid_modez_TestConvolve2d.test_valid_modes���
"�
"�
"�$:�$:�$:�;��
�Y�Y�	�	�	�"���)�)�)�*�+�+���q�!�W�%�%���1�a� � � �
�q�!�W�%�%���1�a� � � � � rUc��gd�gd�g}tjgd�gd�gt���dz}tgd�g��}t||d��}t	||��t||d��}t||��dS)	NrrrDrWr	r�)yO@8@yT@>@y�X@B@y]@E@y�`@H@r�)ror�complexrr
rrs     rS�test_valid_mode_complxz&_TestConvolve2d.test_valid_mode_complxs���
"�
"�
"�$:�$:�$:�;���H�i�i�i����+�7�;�;�;�b�@���G�G�G�H�I�I���q�!�W�%�%��!�!�Q�'�'�'�
�q�!�W�%�%���1�a� � � � � rUc��gd�gd�g}gd�gd�g}d}t||dd|��}tgd�gd	�gd
�g��}t||��dS)NrDrWrzr{rEr��fill)��r�r[rJ)rI�(r��@r)rJ�.�Cr��0�rrr)rOrPrQ�fillvalrRr�s      rS�test_fillvaluez_TestConvolve2d.test_fillvalue$s���
�Y�Y�	�	�	�"��
�Y�Y�	�	�	�"�����q�!�V�V�W�5�5���'�'�'�'�'�'�'�'�'�)�
*�
*��	�1�a� � � � � rUc���d}tj���5}|�tjd��tt|���5tdggddggd���ddd��n#1swxYwYddd��n#1swxYwYd}tt|���5tdggddggddg���ddd��dS#1swxYwYdS)	Nz2could not cast `fillvalue` directly to the output zCasting complex values��matchrErFr���	fillvaluez,`fillvalue` must be scalar or an array with )ro�testingr�filter�ComplexWarningr�r�r)rO�msg�sups   rS�test_fillvalue_errorsz%_TestConvolve2d.test_fillvalue_errors.s���B��
�Z�
)�
)�
+�
+�	:�s��J�J�r�(�*B�C�C�C��z��5�5�5�
:�
:��Q�C�5�A�q�6�(�b�9�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�
=��
�:�S�
1�
1�
1�	:�	:����u��1�v�h�1�a�&�9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:sG�7B�A<�0B�<B	�B�B	�B�B�B�6C�C!�$C!c�L�tttdggddggg���dS)NrErFr4�r�r�rrs rS�test_fillvalue_emptyz$_TestConvolve2d.test_fillvalue_empty9s8���j�*��s�e�q�!�f�X� "�	$�	$�	$�	$�	$�	$rUc��gd�gd�g}gd�gd�g}t||dd��}tgd�gd�gd�g��}t||��dS)	NrDrWrzr{r��wrap)rr�Jrr)�DrBr�rBrBr.r�s     rS�test_wrap_boundaryz"_TestConvolve2d.test_wrap_boundary>s���
�Y�Y�	�	�	�"��
�Y�Y�	�	�	�"���q�!�V�V�,�,���'�'�'�'�'�'�'�'�'�)�
*�
*��	�1�a� � � � � rUc��gd�gd�g}gd�gd�g}t||dd��}tgd�gd�gd	�g��}t||��dS)
NrDrWrzr{r��symm)r[r�,r��B)rr-r�r�T)�Rr��\�n�rr.r�s     rS�test_sym_boundaryz!_TestConvolve2d.test_sym_boundaryGs���
�Y�Y�	�	�	�"��
�Y�Y�	�	�	�"���q�!�V�V�,�,���'�'�'�'�'�'�)�)�)�+�
,�
,��	�1�a� � � � � rU�funczboundary, expectedrE)g�B@�E@�F@g�F@r@)��E@rPrO��C@c��tjgd�g��}tjd��}|||d|���}t||��dS)N)�@���@�@)rE�rX�rZ�boundary)ror�onesr)rOrNrZr��image�kernel�results       rS�test_same_with_boundaryz'_TestConvolve2d.test_same_with_boundaryPs\����/�/�/�0�1�1�����!�!����e�V�&�8�D�D�D��	�6�8�,�,�,�,�,rUc	�F�ddlm}tjddt����dd��}tjddt����dd��}t
||dd	�
��}t||�||d	d�����dS)
NrrEr�r	rGr@�erXr@rY)r�r�)rZ�origin)	�
scipy.ndimage�ndimageror�floatrprrr)rO�ndirPrQrRs     rS�test_boundary_extension_samez,_TestConvolve2d.test_boundary_extension_sameas���	$�#�#�#�#�#��I�a��u�-�-�-�5�5�b�!�<�<���I�a���.�.�.�6�6�r�2�>�>���q�!�&�6�:�:�:���1�c�l�l�1�a�f�X�l�N�N�O�O�O�O�OrUc��ddlm}tjddt����dd��}tjddt����dd��}t
||dd	�
��}tj|dd	��}t||�	||d	���dd
�dd
�f��dS)NrrErGr	r@�%rCr�r@rY)�r@r@rjrYr�)
rcrdrorrerpr�padrr)rOrfrPrQrR�apads      rS�test_boundary_extension_fullz,_TestConvolve2d.test_boundary_extension_fullks���	$�#�#�#�#�#��I�a��e�,�,�,�4�4�Q��:�:���I�a��e�,�,�,�4�4�Q��:�:���q�!�&�6�:�:�:���v�a�)�6�2�2���1�c�l�l�4���l�@�@��"��c�r�c��J�K�K�K�K�KrUc�"�tjdd���d��}tjdd���d��}ttt
g||f�Riddi��ttt
g||f�Riddi��dSr�)rorrpr�r�rr�s   rSr�z#_TestConvolve2d.test_invalid_shapesvs���
�I�a��O�O�#�#�F�+�+���I�b�!���$�$�V�,�,���j�*�K��1�v�K�K�K�&�'�9J�K�K�K��j�*�K��1�v�K�K�K�&�'�9J�K�K�K�K�KrUN)r�r�r�r�r!r$r0r;r>rCrM�pytest�mark�parametrizerrr_rgrmr�r�rUrSrrsH������!�!�!�
!�
!�
!�
!�
!�
!�!�!�!�	:�	:�	:�$�$�$�
!�!�!�!�!�!��[���V�j�+�%>�?�?��[���1�%�(@�(@�(@�'A�B�%�(@�(@�(@�'A�B�D�E�E�-�-�E�E�@�?�-�P�P�P�	L�	L�	L�
L�
L�
L�
L�
LrUrc��eZdZd�Zd�Zd�Zd�Zejj	ej�
d��d�����ZdS)�TestConvolve2dc��gd�gd�g}gd�gd�g}t||d��}tgd�gd�g��}t||��dS)NrDrWrrrX)rHrIr[)rrrr.)rOrr�r rs     rSr�zTestConvolve2d.test_same_mode�ss��
�Y�Y�	�	�	�"��
"�
"�
"�$:�$:�$:�;���q�!�V�$�$���<�<�<� �=�=�"�
#�
#���1�a� � � � � rUc�b�gd�gd�g}gd�gd�g}gd�g}t||d��}t||��t||d��}t||��ddgd	d
gg}gd�gd�g}d
dgg}t||d��}t||��t||d��}t||��dS)NrDrWrrrr�r`r�rb�@)r��@@rv)rvy@�?y@�y;@�yG@@)rr)rOrr�r�r�s     rSr�zTestConvolve2d.test_valid_mode2�s���
�Y�Y�	�	�	�"��
"�
"�
"�$:�$:�$:�;��*�*�*�+����A�w�'�'���3��)�)�)���A�w�'�'���3��)�)�)��f�
���/�0��
%�
%�
%�'?�'?�'?�@���h�'�(����A�w�'�'���3��)�)�)���A�w�'�'���3��)�)�)�)�)rUc
�t�tjd��}tjgd���}dD]�}ttj|||���tj|||�����ttjtj|g|g|�����tj|||�������dS)NrB�g������	@gffffff�?r@�r�r�rXrY)rorrrrr�squeezer�rOrPrQrZs    rS�test_consistency_convolve_funcsz.TestConvolve2d.test_consistency_convolve_funcs�s����I�a�L�L���H�]�]�]�#�#��-�	2�	2�D����A�q�t� <� <� <� &���1�4� @� @� @�
B�
B�
B���
��!�1�#��s��6�6�6�!8�!8����1�4�0�0�0�
2�
2�
2�
2�	2�	2rUc��tttdd��tttdgdg��tttdgggdggg��dS)Nr@rAr=rs rS�test_invalid_dimsz TestConvolve2d.test_invalid_dims�sT���j�*�a��3�3�3��j�*�q�c�A�3�7�7�7��j�*���u�g�!���w�?�?�?�?�?rUz!Can't create large array for testc���ddtj��jzz}tjd|zdztj��jzdz��tjd|ztj���}d|ddd�<tjj�||dfd�	��}tj
|ddgg��}tj|dk��}|d
jd
ksJ�dS)Nl��rF��g��.Ar	rE)iHr�)�shape�stridesr)
ror
�itemsizer<�check_free_memory�zeros�lib�
stride_tricks�
as_stridedrr�wherer�)rOr�rP�count�failss     rS�test_large_arrayzTestConvolve2d.test_large_array�s���
�d�R�X�Z�Z�0�0�1���$�Q��U�T�\�B�H�J�J�4G�%G�#�%M�N�N�N�
�H�T�A�X�R�X�.�.�.����#�#�A�#���F� �+�+�A�a��Y�	�+�R�R���!�!�q�!�f�X�.�.�������#�#���Q�x�}��!�!�!�!�!�!rUN)r�r�r�r�r�r}rrorp�slow�xfail_on_32bitr�r�rUrSrsrs�s�������!�!�!�*�*�*�.	2�	2�	2�@�@�@�
�[���[��� C�D�D�"�"�E�D���"�"�"rUrsc���eZdZej�dddddgddgg��d���Zej�dddgddgg��d���Zej�dddddgddgg��d	���Zej�dddgddgg��d
���Z	ej�dddddgddgddgddgddgddgddgddgg
��d���Z
ej�ddd
gd
dgddgddgdd
gd
dgddgddgg��d���Zej�dddddgddgddgddgddgddgddgddgg
��d���Zej�ddd
gd
dgddgddgdd
gd
dgddgddgg��d���Z
ej�dddddgddgg��d���Zej�ddddgdgg��d���Zej�dddddgddgg��d���Zej�dddgg��d���Zej�dddddgddgg��d���Zej�dddgddgg��d���Zd�Zd�Zd�Zd�Zej�dddddgddgg��d���Zej�dddgddgg��d���Zej�dddgddgddgddgddgddgddgddgg��d���Zejjej�d eedd!����eed"d#����zej� d$���!d%d&d'���"��z��d(�����Z#d)�Z$dS)*�TestFFTConvolve�axes�Nrr�c��tgd���}tgd���}|dkrt||��}nt|||���}t||��dS)NrD�rErArGrL�"@r��r��rrr
�rOr�rPr�r�s     rS�	test_realzTestFFTConvolve.test_real�sk���)�)�)�����+�+�+�,�,���2�:�:��a��#�#�C�C��a���.�.�.�C�!�#�x�0�0�0�0�0rUrEc���tgd���}tgd���}tj|ddg��}tj|ddg��}t|||���}t	||��dS)NrDr�rFrEr��rro�tilerr
r�s     rS�test_real_axeszTestFFTConvolve.test_real_axes�s{���)�)�)�����+�+�+�,�,���G�A��1�v�����7�8�a��V�,�,���!�Q�T�*�*�*��!�#�x�0�0�0�0�0rUc��tgd���}tgd���}|dkrt||��}nt|||���}t||��dS)N�r`�@@y@@�rcy @y4@y8@y2@r�r�r�r�s     rSrgzTestFFTConvolve.test_complex�sn���*�*�*�+�+���D�D�D�E�E���2�:�:��a��#�#�C�C��a���.�.�.�C�!�#�x�0�0�0�0�0rUc���tgd���}tgd���}tj|ddg��}tj|ddg��}t|||���}t	||��dS)Nr�r�rFrEr�r�r�s     rS�test_complex_axesz!TestFFTConvolve.test_complex_axes�s~���*�*�*�+�+���D�D�D�E�E���G�A��1�v�����7�8�a��V�,�,���!�Q�T�*�*�*��!�#�x�0�0�0�0�0rU���c���tgd�gd�g��}tgd�gd�gd�g��}|dkrt||��}nt|||���}t||��dS)NrDr{�rErArGrLr�r�r(�8rr��r}r)r�rr�r�r�r�r�s     rS�test_2d_real_samez!TestFFTConvolve.test_2d_real_same�s���
�9�9�9��9�9��
�
���+�+�+�-�-�-�.�.�.�0�1�1���2�:�:��a��#�#�C�C��a���.�.�.�C�!�#�x�0�0�0�0�0rUrFc��tgd�gd�g��}tgd�gd�gd�g��}tj|gd���}tj|gd���}t|||���}t	||��dS)NrDr{r�r�r��rFrErEr�r�r�s     rS�test_2d_real_same_axesz&TestFFTConvolve.test_2d_real_same_axess���
�9�9�9��9�9��
�
���+�+�+�-�-�-�.�.�.�0�1�1��
�G�A�y�y�y�!�!���7�8�Y�Y�Y�/�/���!�Q�T�*�*�*��!�#�x�0�0�0�0�0rUc���tgd�gd�g��}tgd�gd�gd�g��}|dkrt||��}nt|||���}t||��dS)N���?@�@@y@@�ray@@y@@�y�@y$�4@y5�L@y2�S@y&�N@�y$@yF@y�]@y�c@y�^@�r�y$@4@y5@L@y2@S@y&@N@r�r�r�r�s     rS�test_2d_complex_samez$TestFFTConvolve.test_2d_complex_same s���
�+�+�+�+�+�+�-�
.�
.���A�A�A�(�(�(�<�<�<������2�:�:��a��#�#�C�C��a���.�.�.�C�!�#�x�0�0�0�0�0rUc��tgd�gd�g��}tgd�gd�gd�g��}tj|gd���}tj|gd���}t|||���}t	||��dS)Nr�r�r�r�r�r�r�r�r�s     rS�test_2d_complex_same_axesz)TestFFTConvolve.test_2d_complex_same_axes:s���
�+�+�+�+�+�+�-�
.�
.���A�A�A�(�(�(�<�<�<�����
�G�A�y�y�y�!�!���7�8�Y�Y�Y�/�/���!�Q�T�*�*�*��!�#�x�0�0�0�0�0rUc�z�tgd���}tgd���}tgd���}tgd���}|dkrt||d��}nt||d|���}t||��|dkrt||d��}nt||d|���}t||��dS)NrD�	r@r@rBrCr�r|rrrE���A@��D@��G@�	r�g4@�9@r�r�r�rRg<@rTr�rXr�r��rOr�rPrQ�
expected_1�
expected_2r�s       rS�test_real_same_modez#TestFFTConvolve.test_real_same_modeQs����)�)�)�����-�-�-�.�.���?�?�?�+�+�
��F�F�F�G�G�
��2�:�:��a��F�+�+�C�C��a��F��6�6�6�C�!�#�z�2�2�2��2�:�:��a��F�+�+�C�C��a��F��6�6�6�C�!�#�z�2�2�2�2�2rUc���tgd���}tgd���}tgd���}tgd���}tj|ddg��}tj|ddg��}tj|ddg��}tj|ddg��}t||d|���}t	||��t||d|���}t	||��dS)	NrDr�r�r�rFrErXr�r�r�s       rS�test_real_same_mode_axesz(TestFFTConvolve.test_real_same_mode_axesds����)�)�)�����-�-�-�.�.���?�?�?�+�+�
��F�F�F�G�G�
��G�A��1�v�����G�A��1�v�����W�Z�!�Q��0�0�
��W�Z�!�Q��0�0�
��!�Q��T�2�2�2��!�#�z�2�2�2��!�Q��T�2�2�2��!�#�z�2�2�2�2�2rUc�X�tgd���}tgd���}tgd���}|dkrt||d��}nt||d|���}t||��|dkrt||d��}nt||d|���}t||��dS)N�r@rFrEr��g8@g?@r�rQg�H@r��(@r�r�r�r��rOr�rPrQr�r�s      rS�test_valid_mode_realz$TestFFTConvolve.test_valid_mode_realvs���
�)�)�)�����-�-�-�.�.���<�<�<�=�=���2�:�:��a��G�,�,�C�C��a��G�$�7�7�7�C�!�#�x�0�0�0��2�:�:��a��G�,�,�C�C��a��G�$�7�7�7�C�!�#�x�0�0�0�0�0rUc�<�tgd���}tgd���}tgd���}tj|ddg��}tj|ddg��}tj|ddg��}t||d|���}t	||��dS�Nr�r�r�rFrEr�r�r�r�s      rS�test_valid_mode_real_axesz)TestFFTConvolve.test_valid_mode_real_axes�s���
�)�)�)�����-�-�-�.�.���<�<�<�=�=���G�A��1�v�����G�A��1�v�����7�8�a��V�,�,���!�Q��d�3�3�3��!�#�x�0�0�0�0�0rUc�X�tgd���}tgd���}tgd���}|dkrt||d��}nt||d|���}t||��|dkrt||d��}nt||d|���}t||��dS)N��@�y@@r��rwy@�y@y@�y @�y�F@(@y>@7@yH@@@r�r�r�r�r�s      rS�test_valid_mode_complexz'TestFFTConvolve.test_valid_mode_complex�s����*�*�*�+�+���:�:�:�;�;���<�<�<�=�=���2�:�:��a��G�,�,�C�C��a��G�$�7�7�7�C�!�#�x�0�0�0��2�:�:��a��G�,�,�C�C��a��G�$�7�7�7�C�!�#�x�0�0�0�0�0rUc��tgd���}tgd���}tgd���}tj|ddg��}tj|ddg��}tj|ddg��}t||d|���}t	||��t||d|���}t	||��dS)Nr�r�r�rFrEr�r�r�r�s      rS�test_valid_mode_complex_axesz,TestFFTConvolve.test_valid_mode_complex_axes�s����*�*�*�+�+���:�:�:�;�;���<�<�<�=�=���G�A��1�v�����G�A��1�v�����7�8�a��V�,�,���!�Q��d�3�3�3��!�#�x�0�0�0��!�Q��d�3�3�3��!�#�x�0�0�0�0�0rUc�<�tgd���}tgd���}tgd���}tj|ddg��}tj|ddg��}tj|ddg��}t||dd���}t	||��dSr�r�r�s     rS�test_valid_mode_ignore_nonaxesz.TestFFTConvolve.test_valid_mode_ignore_nonaxes�s����)�)�)�����-�-�-�.�.���<�<�<�=�=���G�A��1�v�����G�A��1�v�����7�8�a��V�,�,���!�Q��a�0�0�0��!�#�x�0�0�0�0�0rUc���ttgg��jdk��ttddgg��jdk��ttgdg��jdk��dS�NrrBrCr|)rrr�rs rS�
test_emptyzTestFFTConvolve.test_empty�sn����B��#�#�(�A�-�.�.�.���Q��F�B�'�'�,��1�2�2�2���B���$�$�)�Q�.�/�/�/�/�/rUc��td��}td��}t||��}t|||z��dSrv�rrr
�rOrPrQr�s    rSrizTestFFTConvolve.test_zero_rank�sA���$�K�K���$�K�K���!�Q�����S�!�a�%� � � � � rUc��tdg��}tdg��}t||��}t|||z��dSrvr�r�s    rSrwz#TestFFTConvolve.test_single_element�sE���4�&�M�M���4�&�M�M���!�Q�����S�!�a�%� � � � � rUc��tj�d��tj�d��dtj�d��zz}tj�d��dtj�d��zz}tj||d��}|dkrt||d��}nt||d|���}t
tj||d�	����dS)
N����r��)r�r�r�绽���|�=�r�)ror�r��randrrr�allcloser�s      rS�test_random_dataz TestFFTConvolve.test_random_data�s���
�	���t�����I�N�N�4� � �2��	���t�(<�(<�#<�<���I�N�N�4� � �2��	���t�(<�(<�#<�<���;�q�!�V�,�,���2�:�:��a��F�+�+�C�C��a��F��6�6�6�C����C���6�6�6�7�7�7�7�7rUc�p�tj�d��tj�d��dtj�d��zz}tj�d��dtj�d��zz}tj||d��}tj|ddg��}tj|ddg��}tj|ddg��}t
||d|���}ttj||d	�
����dS)Nr�r�r�r�r�rFrEr�r�r�)	ror�r�r�rr�rrr�r�s      rS�test_random_data_axesz%TestFFTConvolve.test_random_data_axes�s���
�	���t�����I�N�N�4� � �2��	���t�(<�(<�#<�<���I�N�N�4� � �2��	���t�(<�(<�#<�<���;�q�!�V�,�,���G�A��1�v�����G�A��1�v�����7�8�a��V�,�,���!�Q��T�2�2�2�����C���6�6�6�7�7�7�7�7rUrA���c�P�d\}}tj�d��tjj|�dtjj|�zz}tjj|�dtjj|�zz}t	||d��}|dd�dd�dddf}|dd�dd�dddf}|dd�dd�dddf}tj|�dd��dd��}tj|�dd��dd��}tj|�dd��dd��}tj|gd	���}tj|gd
���}tj|gd���}t||d|���}t||d
d
���dS)N))�{rH)��r�r�r�rrFrErA)rFrEr@rErE)rFrErErArE)rFrEr@rArEr�r�r�)
ror�r�r�r�moveaxis�swapaxesr�rr)rOr��a_shapersrPrQr�r�s        rS�test_random_data_multidim_axesz.TestFFTConvolve.test_random_data_multidim_axes�s���0����
�	���t�����I�N�G�$�r�B�I�N�G�,D�'D�D���I�N�G�$�r�B�I�N�G�,D�'D�D���a��F�+�+��
�a�a�a����D�$��$�%��
�a�a�a����D�$��$�%���A�A�A�q�q�q�$��d�2�3���K��
�
�1�a�(�(�!�Q�/�/���K��
�
�1�a�(�(�!�Q�/�/���;�x�0�0��A�6�6��1�=�=��
�G�A����'�'���G�A����'�'���7�8�_�_�_�5�5���!�Q��T�2�2�2����X�E��>�>�>�>�>�>rUr�r�r�i�r�r��'rBc���tj�|��dtj�|��zz}tj�|��dtj�|��zz}tj||d��}t	||d��}t||d���t	||ddg���}t||d���dS)Nr�r�r��r�rr�)ror�r�rrr)rOr�rPrQr�r�s      rS�test_many_sizeszTestFFTConvolve.test_many_sizess���
�I�N�N�1����R�Y�^�^�A�%6�%6� 6�6���I�N�N�1����R�Y�^�^�A�%6�%6� 6�6���;�q�!�V�,�,���!�Q��'�'����X�E�2�2�2�2��!�Q��a�S�1�1�1����X�E�2�2�2�2�2�2rUc�r�d}tj�d��}|�|��}tjtjfD]g}||d<t
jdd��}tj	td���5t
j||dd	�
��ddd��n#1swxYwY�hdS)Nr�l[<zn(r���皙�����?zUse of fft convolutionr2rXrr�)ror��default_rng�standard_normal�nan�infr�firwinro�warns�RuntimeWarningr)rOr��rng�sig_nan�val�coeffss      rS�test_fft_nanzTestFFTConvolve.test_fft_nan#s�����i�#�#�K�0�0���%�%�a�(�(���F�B�F�#�	L�	L�C��G�C�L��]�3��,�,�F���n�4L�M�M�M�
L�
L�����f�U�K�K�K�K�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L��		L�	Ls�B+�+B/	�2B/	)%r�r�r�rorprqr�r�rgr�r�r�r�r�r�r�r�r�r�r�r�r�rirwr�r�r�r��listrqror��RandomState�randint�tolistr�r	r�rUrSr�r��s"�������[���V�b�$��A�3��R�D�%A�B�B�	1�	1�C�B�	1��[���V�a�!��b�2�$�%7�8�8�1�1�9�8�1��[���V�b�$��A�3��R�D�%A�B�B�1�1�C�B�1��[���V�a�!��b�2�$�%7�8�8�1�1�9�8�1��[���V�b�&*�'(�!�f�'(�!�f�'(�"�g�')�1�g�')�1�g�'(�"�g�')�2�h�')�2�h�	&0�	1�	1�1�1�	1�	1�1��[���V�q�!�f�'(�!�f�'(�"�g�')�1�g�')�1�g�'(�"�g�')�2�h�')�2�h�&0�1�1�1�1�1�1�1��[���V�b�&*�'(�!�f�'(�!�f�'(�"�g�')�1�g�')�1�g�'(�"�g�')�2�h�')�2�h�	&0�	1�	1�1�1�	1�	1�1� �[���V�q�!�f�'(�!�f�'(�"�g�')�1�g�')�1�g�'(�"�g�')�2�h�')�2�h�&0�1�1�
1�
1�1�1�
1��[���V�b�$��A�3��R�D�%A�B�B�3�3�C�B�3�$�[���V�a��a�S�2�$�%7�8�8�3�3�9�8�3�"�[���V�b�$��A�3��R�D�%A�B�B�1�1�C�B�1�$�[���V�a�!��X�.�.�1�1�/�.�1��[���V�b�$��A�3��R�D�%A�B�B�1�1�C�B�1�"�[���V�a�!��b�2�$�%7�8�8�
1�
1�9�8�
1�1�1�1�0�0�0�!�!�!�!�!�!��[���V�b�$��A�3��R�D�%A�B�B�
8�
8�C�B�
8��[���V�a�!��b�2�$�%7�8�8�8�8�9�8�8��[���V�q�!�f�'(�!�f�'(�"�g�')�1�g�')�1�g�'(�"�g�')�2�h�')�2�h�&0�1�1�?�?�1�1�?�.�[���[������U�U�1�c�]�]�����U�U�4��
�
���	 �
�	���d�#�#�+�+�D�%��;�;�B�B�D�D�	E�F�F�
	3�	3�F�F���	3�
L�
L�
L�
L�
LrUr�c� �td���)NzFell back to fftconvolve)�RuntimeError)r�r�s  rS�fftconvolve_errr/s��
�1�
2�
2�2rUc�8�d�t|d���D��S)Nc�H�g|]\}}t||z
��dk�||f�� S)r@)�abs�r�rPrQs   rSr�z!gen_oa_shapes.<locals>.<listcomp>4s:�����t�q�!��1�q�5�z�z�A�~�~���F��~�~rUrF��repeatr��sizess rS�
gen_oa_shapesr3s/����w�u�Q�7�7�7����rUc��t|��}t|��}d�t||��D��}gd�}d�t||��D��S)Nc��g|]
\}}||z��Sr�r�)r��ishapes0�ishapes1s   rSr�z$gen_oa_shapes_2d.<locals>.<listcomp>;s.��%�%�%�$6�H�h�h�x��%�%�%rUrzc��g|]Y\}}|dksH|d|dkr|d|dks$|d|dk�A|d|dk�S||fz��ZS)r�rrErFr@r�)r��ishapes�imodes   rSr�z$gen_oa_shapes_2d.<locals>.<listcomp>?s���C�C�C���%�����
�Q�Z�'�!�*�
$�
$����g�a�j�)@�)@�
�Q�Z�'�!�*�
$�
$����g�a�j�)@�)@�
�U�H��*A�)@�)@rU)r�zipr)r�shapes0�shapes1�shapes�modess     rS�gen_oa_shapes_2dr&8s����E�"�"�G��E�"�"�G�%�%��'�7�#�#�%�%�%�F�
&�%�%�E�C�C�7�6�5�3I�3I�C�C�C�CrUc�8�d�t|d���D��S)Nc�(�g|]\}}||k�||f��Sr�r�rs   rSr�z$gen_oa_shapes_eq.<locals>.<listcomp>Fs0�����t�q�!��A�v�v���F��v�vrUrFrrrs rS�gen_oa_shapes_eqr)Es/����w�u�Q�7�7�7����rUc���eZdZej���ej�deee	d����ee	ddd����z����d�����Z
ej�degd�����ej�ddd	g��ej�d
gd���d�������Zej�d
ddg��ej�degd�����ej�dddg��ej�dddg��ej�ddd	g��ej�d
gd���d�������������Z
ej�degd�����ej�ddd	g��d�����Zej�d
ddgddgddgg��ej�degd�����ej�dddg��ej�dddg��ej�ddd	g��d�����������Zd�Zd�Zd�ZdS)�TestOAConvolvezshape_a_0, shape_b_0r�r�rKc���tj�|��}tj�|��}t||��}t	||��}t||��dS�N)ror�r�rrr
)rO�	shape_a_0�	shape_b_0rPrQr�r�s       rS�test_real_manylensz!TestOAConvolve.test_real_manylensKs^��
�I�N�N�9�%�%���I�N�N�9�%�%���q�!�$�$����A����!�#�x�0�0�0�0�0rU)r�/rCrArE�
is_complexTFrZrzc���tj�|��}tj�|��}|rJ|dtj�|��zz}|dtj�|��zz}t|||���}|�t
jdt��t|||���}	t|	|��dS�Nr�rYr�
ror�r�r�setattrr�_signaltoolsrrr
)
rOr.r/r2rZ�monkeypatchrPrQr�r�s
          rS�test_1d_noaxeszTestOAConvolve.test_1d_noaxesYs���
�I�N�N�9�%�%���I�N�N�9�%�%���	1��B�r�y�~�~�i�0�0�0�0�A��B�r�y�~�~�i�0�0�0�0�A��q�!�$�/�/�/�����F�/��+�	-�	-�	-���A�D�)�)�)��!�#�x�0�0�0�0�0rUr�rrE)rr1rCrA�
shape_a_extrar@�
shape_b_extrac	��|gdz}	|gdz}
||	|<||
|<tjj|	�}tjj|
�}|r2|dtjj|	�zz}|dtjj|
�zz}t||||���}
|�t
jdt��t||||���}t||
��dS)NrFr��rZr�rr5)rOr�r.r/r:r;r2rZr8�ax_a�ax_brPrQr�r�s               rS�test_1d_axeszTestOAConvolve.test_1d_axesms�����q� ����q� ����T�
���T�
��I�N�D�!���I�N�D�!���	-��B�r�y�~�t�,�,�,�A��B�r�y�~�t�,�,�,�A��q�!�$�T�:�:�:�����F�/��+�	-�	-�	-���A�D�t�4�4�4��!�#�x�0�0�0�0�0rUz0shape_a_0, shape_b_0, shape_a_1, shape_b_1, modec���tj�||��}tj�||��}	|rL|dtj�||��zz}|	dtj�||��zz}	t||	|���}
|�t
jdt��t||	|���}t||
��dSr4r5)rOr.r/�	shape_a_1�	shape_b_1rZr2r8rPrQr�r�s            rS�test_2d_noaxeszTestOAConvolve.test_2d_noaxes�s���
�I�N�N�9�i�0�0���I�N�N�9�i�0�0���	<��B�r�y�~�~�i��;�;�;�;�A��B�r�y�~�~�i��;�;�;�;�A��q�!�$�/�/�/�����F�/��+�	-�	-�	-���A�D�)�)�)��!�#�x�0�0�0�0�0rUrFc���|gdz}|gdz}|||d<|||d<|||d<|||d<tjj|�}
tjj|�}|	r2|
dtjj|�zz}
|dtjj|�zz}t|
|||���}|
�t
jdt��t|
|||���}t||��dS)Nr@rrEr�r=rr5)rOr�r.r/rBrCrZr:r;r2r8r>r?rPrQr�r�s                 rS�test_2d_axeszTestOAConvolve.test_2d_axes�s����q� ����q� ��!��T�!�W�
�!��T�!�W�
�!��T�!�W�
�!��T�!�W�
��I�N�D�!���I�N�D�!���	-��B�r�y�~�t�,�,�,�A��B�r�y�~�t�,�,�,�A��q�!�$�T�:�:�:�����F�/��+�	-�	-�	-���A�D�t�4�4�4��!�#�x�0�0�0�0�0rUc���ttgg��jdk��ttddgg��jdk��ttgdg��jdk��dSr�)rrr�rs rSr�zTestOAConvolve.test_empty�sn���
�2�r�"�"�'�1�,�-�-�-��
�A�q�6�2�&�&�+�q�0�1�1�1��
�2��s�#�#�(�A�-�.�.�.�.�.rUc��td��}td��}t||��}t|||z��dSrv�rrr
r�s    rSrizTestOAConvolve.test_zero_rank�sA���$�K�K���$�K�K����A�����S�!�a�%� � � � � rUc��tdg��}tdg��}t||��}t|||z��dSrvrIr�s    rSrwz"TestOAConvolve.test_single_element�sE���4�&�M�M���4�&�M�M����A�����S�!�a�%� � � � � rUN)r�r�r�rorpr�rqr)r
rqr0rr9r@r&rDrFr�rirwr�rUrSr+r+Js��������[������[���3�-�-�d�d�5�5��:�:�.>�.>�.2�d�5�5��d�B�3G�3G�.H�.H�/I�J�J���1�1�	����
1��[���3�*�]�+<�+<�+<�=�=�?�?��[���\�D�%�=�9�9��[���V�%>�%>�%>�?�?�1�1�@�?�:�9�?�?�1� �[���V�a��V�,�,��[���3�*�]�>�>�>�:�:�<�<��[���_�q�!�f�5�5��[���_�q�!�f�5�5��[���\�D�%�=�9�9��[���V�%>�%>�%>�?�?�1�1�@�?�:�9�6�5�6�5�<�<�-�,�1�,�[���:�-�-�n�n�n�=�=�?�?��[���\�D�%�=�9�9�1�1�:�9�?�?�1�"�[���V�q�!�f�q�!�f�q�!�f�%=�>�>��[���:�-�-�n�n�n�=�=�?�?��[���_�q�!�f�5�5��[���_�q�!�f�5�5��[���\�D�%�=�9�9�1�1�:�9�6�5�6�5�?�?�?�>�1�2/�/�/�!�!�!�!�!�!�!�!rUr+c��eZdZej�deeg��d���Zej�deeg��d���Z	ej�ddgdfddgfdgdggfg��ej�deeg��d�����Z
ej�deeg��d	���Zej�d
ej
ejg��d���ZdS)
�TestAllFreqConvolves�convapproachc� �tjdd���d��}tjdd���d��}ttd���5|||d	�
��ddd��dS#1swxYwYdS)NrEr|r�r�rr�zOFor 'valid' mode, one must be at least as large as the other in every dimensionr2r�rY)rorrpr�r��rOrMrPrQs    rSr�z(TestAllFreqConvolves.test_invalid_shapes�s���
�I�a��O�O�#�#�F�+�+���I�b�!���$�$�V�,�,��
�:�"F�G�G�G�	-�	-�
�L��A�G�,�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s�'B�B�
Bc���tjgd���}tjgd���}ttd���5|||ddg���ddd��dS#1swxYwYdS)N)rBrCrFrE)rBrCr@rEzVincompatible shapes for in1 and in2: \(5L?, 6L?, 2L?, 1L?\) and \(5L?, 6L?, 3L?, 1L?\)r2rrEr�)ror�r�r�rOs    rS�test_invalid_shapes_axesz-TestAllFreqConvolves.test_invalid_shapes_axes�s���
�H�\�\�\�"�"���H�\�\�\�"�"��
�:�"6�7�7�7�	,�	,�
�L��A�Q��F�+�+�+�+�		,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�A!�!A%�(A%za,brErFr@c�|�ttd���5|||��ddd��dS#1swxYwYdS)Nz/in1 and in2 should have the same dimensionalityr2�r�r�)rOrPrQrMs    rSrz)TestAllFreqConvolves.test_mismatched_dims�s����:�"-�.�.�.�	�	�
�L��A����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�
1�5�5c��ttd���5|dgdgd���ddd��n#1swxYwYttd���5|dgdgg���ddd��n#1swxYwYttd	���5|dgdgddgd
dgg���ddd��n#1swxYwYttd	���5|dgdggd����ddd��n#1swxYwYttd
���5|dgdgdg���ddd��n#1swxYwYttd
���5|dgdgdg���ddd��n#1swxYwYttd���5|dgdgddg���ddd��dS#1swxYwYdS)Nz4acceptable mode flags are 'valid', 'same', or 'full'r2rErF�chipsrYz#when provided, axes cannot be emptyr�z-axes must be a scalar or iterable of integersr@rA)��?rTrVrWz$axes exceeds dimensionality of inputr�zall axes must be uniquerrS)rOrMs  rS�test_invalid_flagsz'TestAllFreqConvolves.test_invalid_flags�s���:�"0�1�1�1�	1�	1�
�L�!��q�c��0�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�:�!F�H�H�H�	,�	,��L�!��q�c��+�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,��:�.2�3�3�3�	:�	:��L�!��q�c�!�Q��!�Q��(8�9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��:�.2�3�3�3�	:�	:��L�!��q�c�(8�(8�(8�9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��:�!G�I�I�I�	-�	-��L�!��q�c���,�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��:�!G�I�I�I�	.�	.��L�!��q�c���-�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��:�!:�<�<�<�	0�	0��L�!��q�c��A��/�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0sx�4�8�8�A2�2A6�9A6�B6�6B:�=B:�C6�6C:�=C:�D5�5D9�<D9�E4�4E8�;E8�F5�5F9�<F9r�c��tj�d���|��}tj�d���|��}tj|����r
|dz
}|dz}t	||��}t|t
||d�����|j|ksJ�dS)N)rkrk)rArAy�������?rlrm)ror�r��iscomplexobjrrrr�)rOr�rdre�ress     rS�test_longdtype_inputz)TestAllFreqConvolves.test_longdtype_inputs����I���X�&�&�-�-�e�4�4���I���V�$�$�+�+�E�2�2��
�?�5�5�7�7�#�#�	�
��H�A�
��H�A��!�Q������X�a��8�<�<�<�=�=�=��y�E�!�!�!�!�!�!rUN)r�r�r�rorprqrrr�rQrrWro�	longfloat�longcomplexr[r�rUrSrLrL�sy�������[���^�)�:�6�8�8�-�-�8�8�-��[���^�)�:�6�8�8�,�,�8�8�,��[���U� !�s�A�h� �1�#�h� !�s�a�S�E�l�,�-�-��[���^�)�:�6�8�8���8�8�	-�-���[���^�)�:�6�8�8�0�0�8�8�0�<�[���W�r�|�R�^�&D�E�E�	"�	"�F�E�	"�	"�	"rUrLc�`�eZdZgd�gd�gd�gd�gd�gd�gd�gd�gd	�gd
�g
Zgd�gd�gd
�gd�gd�gd�gd�gd�gd�gd�g
ZddgZd�Zej�	de
je
je
j
e
je
jee
je
je
je
je
jg��d���Zej�	de
je
je
je
je
jg��d���Zd�Zd�Zd�Zej�	de
je
je
jg��d���ZdS) �TestMedFilt)
rrrrrrJ�rkr�r+)
rrrrrr�H�MrBrG)
rrrrrr+r1�r*rb)
rrrrrr����_�#)
rrrrrr+r[rrXrG)
r��arIrBr�rbr�r��Gr�)
r*rrFrerBrJrcrBr'rH)
r@�!rr,rEr�rA�7rL�S)
r|r�r+r�rr1r'�+r�r()
rJr��Xr|�'rArJr*r�r�)
rrrrr�rdrdr`rkr)
rrrrrr�rcrXrer)
rrrrrr1r[r[r+rg)
rrrrrrr�r1r*r�)
rrrrrrr+rkr*rg)
rjrrrrr1r+rmrkr()
rJrrrrr1r+r�rkr()
r|r+rrr1r+r+rmr�rX)
rrJrjrorJrJrmrmrmr)
rr|r�r|rArArcrcr'rr|r@c��tj|j|j��}tjtj|jt��|j��}t||j	��t||��dSr-)
r�medfilt�IN�KERNEL_SIZE�	medfilt2drorrer�OUT)rOr�rs   rSrTzTestMedFilt.test_basic<sc���N�4�7�D�$4�5�5����R�X�d�g�u�5�5�t�7G�H�H���1�d�h�'�'�'��1�a� � � � � rUr�c���tj|j|���}tt	j|��j|��tt	j|��j|��dS�Nr	)rorrrr
rrqr�rt�rOr��in_typeds   rS�
test_typeszTestMedFilt.test_typesBs[��
�8�D�G�5�1�1�1���V�^�H�-�-�3�U�;�;�;��V�%�h�/�/�5�u�=�=�=�=�=rUc�Z�tj|j|���}tjt
d���5t
j|��ddd��n#1swxYwYtjt
d���5t
j|��ddd��dS#1swxYwYdS)Nr	�order_filterNDr2)	rorrrror	r�rrqrtrxs   rS�test_invalid_dtypeszTestMedFilt.test_invalid_dtypesKs"���8�D�G�5�1�1�1��
�]�:�-=�
>�
>�
>�	%�	%��N�8�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��]�:�-=�
>�
>�
>�	'�	'���X�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's#�A�A�A�>B � B$�'B$c�V�tjt��5ttt
jd��ddd��n#1swxYwYtjdtj	���}|dd�}d|_
ttj|d��dk��dS)NrGr	rBrCr}rE�@)ror�UserWarningr��	TypeErrorrrqror�float64r�r)rO�dummyrPs   rS�	test_nonezTestMedFilt.test_noneUs���
�\�+�
&�
&�	;�	;��)�V�^�T�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�	�"�B�J�/�/�/���!�A�#�J����	����q�!�$�$��*�+�+�+�+�+s�!A�A�Ac��td��}tj||gt���}t	t
d��rdtj|��z}nd}tjt��5t|��D]}tj|���	ddd��n#1swxYwYt	t
d��r%ttj|��|k��t|||g��dS)Nr�r	�getrefcountrFrG)rrorr��hasattr�sysr�rorr�rqrrqrr
)rOrPrdr��js     rS�test_refcountingzTestMedFilt.test_refcountingas/���C�L�L���H�a��V�6�*�*�*���3�
�&�&�	��C�O�A�&�&�&�A�A��A�
�\�+�
&�
&�	"�	"��1�X�X�
"�
"����q�!�!�!�!�
"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��3�
�&�&�	,��C�O�A�&�&��*�+�+�+��Q��A������s�5'B)�)B-�0B-c���tj|jt���}tj|jt���}tt
j||j��|��dSrw)	rorrrr�rurrrqrs)rO�	in_object�
out_objects   rS�test_objectzTestMedFilt.test_objectqs^���H�T�W�F�3�3�3�	��X�d�h�f�5�5�5�
��6�>�)�T�5E�F�F�%�	'�	'�	'�	'�	'rUc�h��
���
����tj�j|����
tj�j|���}�
j|jksJ�|jddz�
|jddz��jddzdz��jddzdz��
��
���fd��tj|��}td���5�hd�}��fd	�|D��}t|��D]!}|�	��\}}}	||||	f<�"	ddd��n#1swxYwYt||��dS)
Nr	rrFrEc�(��|\}}|dkr5td��z��}td���}td���}n3t��z
d��}t�d��}t�d��}|dkr5td��z��}td���}td���}n3t��z
d��}t�d��}t�d��}�
||f}	tj|	�j��}
|
||f||fS)Nr)�slicerrtrs)�chunk�M�N�Min�Msel�Mout�Nin�Nsel�Nout�
chunk_data�med�M1�N1ry�offM�offNrOs           ������rS�applyz2TestMedFilt.test_medfilt2d_parallel.<locals>.apply�s����D�A�q��A�v�v��A�r�D�y�)�)���Q�������Q��|�|����B��I�t�,�,���T�4�(�(���R������A�v�v��A�r�D�y�)�)���Q�������Q��|�|����B��I�t�,�,���T�4�(�(���R�����"�#�s�(�+�J��"�:�t�/?�@�@�C��t�T�z�?�D�$�.�.rUrA)�max_workers>�rEr�rr�rrE�rErEc�<��h|]}���|����Sr�)�submit)r�r�r��pools  ��rSr�z6TestMedFilt.test_medfilt2d_parallel.<locals>.<setcomp>�s'���E�E�E�U�t�{�{�5�%�0�0�E�E�ErU)rorrrrur�rs�
zeros_likerrr^r)rOr�r��output�chunks�futures�future�data�Mslice�Nslicer�r�r�ryr�r�r�s`         @@@@@@@rS�test_medfilt2d_parallelz#TestMedFilt.test_medfilt2d_parallelws������������8�D�G�5�1�1�1���8�D�H�E�2�2�2���~���/�/�/�/�
�^�A�
�!�
#��
�^�A�
�!�
#�����"�a�'�!�+�����"�a�'�!�+��	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�8��x�(�(��
�A�
.�
.�
.�	.�$�5�5�5�F�E�E�E�E�E�f�E�E�E�G�'�w�/�/�
.�
.��'-�}�}���$��f�f�)-��v�v�~�&�&�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	�6�8�,�,�,�,�,s�AD�D�DN) r�r�r�rrrursrTrorprqro�ubyte�byte�ushort�short�uint�int�	ulonglongr�r��
longdoublerz�bool_�cfloat�cdouble�clongdoubler�r}r�r�r�r�r�rUrSr_r_"s������
2�
2�
2�
1�
1�
1�
2�
2�
2�
2�
2�
2�
1�
1�
1�
2�
2�
2�
2�
2�
2�
0�
0�
0�
1�
1�
1�
0�
0�
0�	
2�B�2�1�1�1�1�1�3�3�3�3�3�3�3�3�3�3�3�3�3�3�3�2�2�2�1�1�1�-�-�-�	/�C��Q�%�K�!�!�!��[���W�r�x���"�)�R�X�')�w��R�\�2�<�')�z�2�:�r�}�'N�O�O�>�>�O�O�>��[���W�r�x���B�J�')�~�r�z�'D�E�E�'�'�E�E�'�
,�
,�
,� � � � '�'�'��[���W�r�x���R�Z�&H�I�I�5-�5-�J�I�5-�5-�5-rUr_c��eZdZd�ZdS)�
TestWienerc��tgd�gd�gd�gd�gd��}tgd�gd�gd�gd	�g��}ttj|��|d
���ttj|d�
��|d
���dS)N)rBrCrAr@)r@rBrCrF)rFr@rBrC)rErCrr|r�)g��SXO@g�X�q�	@g���q@g������?)g]�`UUU@g�FUUUU@g��q�@g�c�q@)g�y�q�@g�X�q�@g�X�q�@g�U��J4@)g�UUUU�?g�2k�6k@gҷ�W�H@g��@�_)@rC��decimalr@)�mysize)rr
r�wiener)rOr rs   rSrTzTestWiener.test_basic�s����<�<�<��<�<��<�<��<�<�!�#&�
'�
'��
�I�I�I�L�L�L�L�L�L�M�M�M�O�
P�
P��	"�&�-��"2�"2�A�q�A�A�A�A�!�&�-��!�"<�"<�"<�a��K�K�K�K�K�KrUN�r�r�r�rTr�rUrSr�r��s(������
L�
L�
L�
L�
LrUr�)�mean�median�minimum�maximum�linec�n�eZdZd�Zej�dd��ej�dd��ej�dd��d�������Zd	�Zej�d
d��ej�dd��ej�d
d��d�������Z	ej�de
��d���Zej�de
��d���Zej�de
��ej�d
e
je
jg��d�����Zej�ddgeedgddge
����z��d���Zd�Zd�ZdS)�TestResamplec	�j�tjd��}d}tjdd��}t	t
tj|||���t	t
tj|dd��t	t
tj|dd��t	t
tj|d	dd
���t	t
tj|d	ddd
���tjtjd��d��}tj||d|���t|j
dk��dS)N��)�kaiser� @���window�yorErrFr���padtyper�rG)r��cval)rFrEr���axisr�)r�)rorr�
get_windowr�r��resample�
resample_polyr�rr�)rO�sig�num�win�sig2s     rSrTzTestResample.test_basic�s
��
�i��n�n��������5�5���j�&�/�3��C�H�H�H�H�	�j�&�"6��T�1�E�E�E��j�&�"6��Q��B�B�B��j�&�"6��Q��2�N�N�N�N��j�&�"6��Q��$�2�	/�	/�	/�	/��w�r�y��~�~�v�.�.�����c��3�7�7�7�7���	�V�#�$�$�$�$�$rUr�)N�hammingr�)rrcr�)r�rarGr�c	��tjdd|d���}tj|dzdz��}tt	j|||���t	j|dz||���j��tjtj|dzdz��tj|dzdz��g��}|dz}tt	j||d	|�
��t	j||d	|�
��jd���dS)
NrrGF)�endpointrFg@r�r�rEr���&�.>r�)	ro�linspace�cosrrr��realr�sin)rOr�r�r�rdre�	y_complexs       rS�	test_rfftzTestResample.test_rfft�s��
�K��2�q�5�1�1�1���F�A�q�D�5��9��������3�v�>�>�>����B���F�C�C�C�H�	J�	J�	J�
�H�b�f�a��d�U�3�Y�'�'����A���c�	�):�):�;�<�<����F�	���O�A�s��6�:�:�:��O�I�s��6�B�B�B�G��	�	�	�	�	�	rUc���tjd��dz}t|��}d}tt	j||d���t	j||d���d���dS)Nr�r��freq)�domain�timer�r�)rorrrrr�)rO�tsig�fsigr�s    rS�test_input_domainzTestResample.test_input_domain�sp���y��~�~��"���4�y�y������O�D�#�f�5�5�5��O�D�#�f�5�5�5��	�	�	�	�	�	rU�nx)rErFr@rBr��nyr�)rer#c��tjdg|z|��}tj||��}t	|dg|z��dS)NrE)rorrr�r)rOr�r�r�rdres      rS�test_dczTestResample.test_dc�sH��
�H�a�S�2�X�u�%�%���O�A�r�"�"����A�3��8�$�$�$�$�$rUr�c��tjd��}tj�d���d��}|���}t
j|dd||���t||��dS)Nr@rrFrBrE�r�r�)	ror�r�rr��copyrr�r)rOr��impulser��window_origs     rS�test_mutable_windowz TestResample.test_mutable_window�ss���(�1�+�+����&�&�q�)�)�/�/��2�2���k�k�m�m����W�a��6�7�K�K�K�K��6�;�/�/�/�/�/rUc���tjdtj���}tjgd�tj���}t	j|dd||���}|jtjksJ�dS)NrGr	�rErErErErFr�)rorr�rrr�r�)rOr�rdrres     rS�test_output_float32z TestResample.test_output_float32sj��
�I�b��
�+�+�+���H�Y�Y�Y�b�j�1�1�1��� ��A�q��G�D�D�D���w�"�*�$�$�$�$�$�$rUc��tjd|���}tj|dd|���}|j|jksJ�dS)NrGr	rErFr�)rorrr�r�)rOr�r�rdres     rS�test_output_match_dtypez$TestResample.test_output_match_dtypesL��
�I�b��&�&�&��� ��A�q�'�:�:�:���w�!�'�!�!�!�!�!�!rUzmethod, ext, padtype)rFN�	polyphaseFTc���d}gd�}tj|��t|��z}tjd��dd�tjf}tjdtjz|z|z��t|��z}|D�]�}	tj|	��t|	��z}
tjdtjz|z|
z��t|	��z}|dkrtj	||	d���}ny|r]|	|krWt|	|��}
|	|
z}||
z}t||��}d|z}d	|z}tjd|zd
z|d���}||d
�}nd|i}tj
||	|fddi|��}t|||��D]�\}}}|d|	zkr?|�d��|dvrt!||d����;t!||d����Nt#|j|j��tj||��d}t)|dk|||	f��������tj�d��}t|��tj|�|����z}|D]�}	tj|	��t|	��z}
tj|
||��}|dkrtj	||	��}ntj
||	||���}t#|j|j��tj||��d}t)|dk|�����|dkr�tjddg��}tj	|d��}tjgd���}t!||d���tjgd ���}tj	|d��}tjddg��}t!||d���dSdS)!Nr�)	r�rr�cr�ra��r���)rV�$@gD@rFrr��r�rVrGrE)r�rr�r�r�r���?�)r�r��333333�?r�r�r�g�G�z��?)r9rr�r�r�rA)r���?r�r
��-���q=)rVr
rr
)rorrer�newaxisr��pir7rr�r�maxrr�r!r&rrr��corrcoefrr�r�cumsumr��interp) rOrn�extr��rate�rates_tor��freqsrd�rate_to�t_to�y_tos�	y_resampsr �up�down�max_rate�f_c�half_lenr��polyargs�y_to�y_resampr��corrrr��y1_test�y1_truer��y2_test�y2_trues                                 rS�test_resample_methodsz"TestResample.test_resample_methodss,����<�<�<��
�I�d�O�O�e�D�k�k�)�����(�(����B�J��7���F�1�r�u�9�u�$�q�(�)�)�D��J�J�6���!	D�!	D�G��9�W�%�%��g���6�D��F�1�r�u�9�u�,�t�3�4�4�t�G�}�}�D�E�����"�O�A�w�R�@�@�@�	�	��4�7�d�?�?��G�T�*�*�A� �A��B��1�9�D�"�2�t�}�}�H��x�-�C�!�H�}�H�#�]�1�x�<�!�+;�S�2A�C�C�C�F�*0�W�E�E�H�H� )�7�3�H�"�0��G�T�=�=��=�3;�=�=�	�),�E�9�e�(D�(D�

D�

D�$��h���3��=�(�(��I�I�b�M�M�M��"8�8�8�'��$�T�B�B�B�B�B�'��$�T�B�B�B�B�B�&�t�z�8�>�B�B�B��;�t�X�6�6�t�<�D��D�4�K�d�D�'�-B�C�C�C�C�C�

D��i�#�#�A�&�&����J�J���3�9�9�T�?�?�3�3�3���	+�	+�G��9�W�%�%��g���6�D��9�T�1�a�(�(�D�����!�?�1�g�6�6���!�/��7�D�8?�A�A�A���t�z�8�>�:�:�:��;�t�X�.�.�t�4�D��D�4�K�T�*�*�*�*�*��U�?�?���6�6�*�+�+�B��o�b�!�,�,�G��h�A�A�A�B�B�G��G�W�5�9�9�9�9���,�,�,�-�-�B��o�b�!�,�,�G��h��B�x�(�(�G��G�W�5�9�9�9�9�9�9��?rUc	�z�tj�d��}ttjtjttf}d}gd�}|D]�}|�|���	|��}|tjtj
fvr|d|�|��zz
}d|d<d|d<|D]|}tjdd|zd	�
��}t|d|d���dd|�}	t||ddd���}
tj|d
||
�
��}t!|	|dd����}��dS)Nr~r�)rFr��Or�rr�r�rVr�r��constantr�rE�H�����z>�r�r�)ror�rr�r�r�rer#r�r��
complex128rrr%rr�r)rO�random_state�	try_typesr��down_factorsr�rdrr�yf�hcres            rS�test_poly_vs_filtfiltz"TestResample.test_poly_vs_filtfiltisU���y�,�,�R�0�0���"�*�b�l�E�7�C�	���"�{�{���	=�	=�E��"�"�4�(�(�/�/��6�6�A����r�}�5�5�5��R�,�,�,�T�2�2�2�2���A�a�D��A�b�E�$�	
=�	
=���M�"�b�4�i�	�B�B�B���a��a��<�<�<�V�V�t�V�D��
�a��4�4�R�4��)�)���(��A�t�B�?�?�?����A�D�t�<�<�<�<�<�	
=�	=�	=rUc
�Z�dD]�}tdd|��D]�}dD]�}tj�|f��}tj�|f��}t||ddd�d���}t	j|d||���}t
|dd|�|��������dS)	N)rFrArEr))rJrjr�r-rY)rrr�)rqror�rrr�r)rOrr��nweightsrd�weights�y_g�y_ss        rS�test_correlate1dzTestResample.test_correlate1d�s����	6�	6�D��A�r�4�(�(�
6�
6�� (�6�6�H��	�(�(�"��/�/�A� �i�.�.��{�;�;�G�%�a����2���Z�H�H�H�C� �.��a�d�7�<�<�<�C�#�C���$��K��5�5�5�5�
6�
6�	6�	6rUN)r�r�r�rTrorprqr�r�r��padtype_optionsr�rror�r�rr
rr*r6r<r�rUrSr�r��sA������%�%�%�,�[���X�'8�9�9��[���S�(�+�+��[���U�$6�7�7�
�
�8�7�,�+�:�9�
�����[���T�?�3�3��[���T�?�3�3��[���W�&:�;�;�%�%�<�;�4�3�4�3�%�
�[���Y��8�8�0�0�9�8�0��[���Y��8�8�%�%�9�8�%��[���Y��8�8��[���W�r�z�2�:�&>�?�?�"�"�@�?�9�8�"��[����	��
�$��G��
��t�}�o�
�
�
�
�	
���G:�G:���G:�R=�=�=�8	6�	6�	6�	6�	6rUr�c��eZdZd�Zd�ZdS)�TestCSpline1DEvalc�`�tgd���}tt|����}|d|dz
}tj|��}tt|��dz��dz}tj||||d���}t
|ddd�|d���dS)	N)	rErFr@rAr@rFrErFrVrErr)�dx�x0rGrBr�)rr�lenr�	cspline1d�cspline1d_evalr
)rOrerdrA�cjr��y2s       rSrTzTestCSpline1DEval.test_basic�s����/�/�/�0�0���3�q�6�6�N�N��
�q�T�A�a�D�[��
�
�a�
 �
 ��
�C��F�F�T�M�
"�
"�T�
)��
�
"�2�r�b�Q�q�T�
:�
:�
:��	"�"�T�T�r�T�(�A�q�9�9�9�9�9�9rUc��tjd��}tj|jtj���}d}d|z}tjdtjz|z|z��}tj|��}tj	dg��}tj
||��}t|j|j��dS)NrFr	rrVrcr
)
rorr�r�r��exprrrDrrEr
r�)rOrdre�Tr��cy�xnew�ynews        rSrgzTestCSpline1DEval.test_complex�s����I�a�L�L���H�Q�W�B�L�1�1�1�����!�G���F�4�"�%�<�!�#�a�'�(�(���
�a�
 �
 ���x�������$�R��.�.���T�Z���)�)�)�)�)rUN)r�r�r�rTrgr�rUrSr?r?�s2������
:�
:�
:�*�*�*�*�*rUr?c��eZdZd�ZdS)�
TestOrderFiltc�Z�ttjgd�gd�d��gd���dS)NrD�rErrErE)rFr@rF)rr�order_filterrs rSrTzTestOrderFilt.test_basic�s>���6�.�y�y�y�)�)�)�Q�G�G�$�9�9�	&�	&�	&�	&�	&rUNr�r�rUrSrOrO�s#������&�&�&�&�&rUrOc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�_TestLinearFilterc���tjdtj|��dz
tj|�����|��}|�|��S)NrrE)ror��prodrp�
convert_dtype)rOr�rds   rS�generatez_TestLinearFilter.generate�sL���K��2�7�5�>�>�A�-�r�w�u�~�~�>�>�F�F�u�M�M���!�!�!�$�$�$rUc�f�|jtjd��krytj|��}tj|j|j��}tj||gddgdgdgg��}|D]#\}}|�|d��|d<�$|Stj||jd�	��S)
N�O�refs_ok�zerosize_ok�readonly�	writeonlyr�.F)r�)r�ro�asarray�emptyr��nditer�typer)rO�arrr��iterrdres      rSrWz_TestLinearFilter.convert_dtype�s����:���#���&�&��*�S�/�/�C��(�3�9�d�j�1�1�C��9�c�3�Z�)�M�)B�$��{�m�4�6�6�D��
*�
*���1����1�R�5�)�)��#����J��8�C���%�8�8�8�8rUc��|�d��}|�ddg��}|�ddg��}|�gd���}tt|||��|��dS�N�rCrEr�r
�࿩rrFrArCr�r�rXrWr
r#�rOrdrQrP�y_rs     rS�test_rank_1_IIRz!_TestLinearFilter.test_rank_1_IIR�s}���M�M�$��������2�w�'�'������T�{�+�+��� � �!5�!5�!5�6�6��!�'�!�Q��"2�"2�C�8�8�8�8�8rUc��|�d��}|�ddg��}|�dg��}|�gd���}tt|||��|��dS)NrgrE�rrEr@rBr|r�rjrks     rS�test_rank_1_FIRz!_TestLinearFilter.test_rank_1_FIR�s{���M�M�$��������1�v�&�&������s�#�#��� � �!4�!4�!4�5�5��!�'�!�Q��"2�"2�C�8�8�8�8�8rUc��|�d��}|�gd���}|�ddg��}|�ddg��}|�gd���}|�dd	g��}t||||�
��\}}t||��t||��dS)Nrg�rErr�r
rhrErF)rErBr�
r~rXrs�����zi�rXrWr#r
�	rOrdrQrPrvrl�zf_rre�zfs	         rS�test_rank_1_IIR_init_condz+_TestLinearFilter.test_rank_1_IIR_init_cond�s����M�M�$�������z�z�z�*�*������T�{�+�+��
�
�
��A��
'�
'��� � �!6�!6�!6�7�7���!�!�2�s�)�,�,����1�a�B�'�'�'���2�!�!�S�)�)�)�!�"�d�+�+�+�+�+rUc��|�d��}|�gd���}|�dg��}|�ddg��}|�gd���}|�ddg��}t||||���\}}t||��t||��dS)Nrgr�rE)rErFr@rCrr�rrBrurwrxs	         rS�test_rank_1_FIR_init_condz+_TestLinearFilter.test_rank_1_FIR_init_cond�s����M�M�$�������y�y�y�)�)������s�#�#��
�
�
��A��
'�
'��� � �!5�!5�!5�6�6���!�!�1�a�&�)�)����1�a�B�'�'�'���2�!�!�S�)�)�)�!�"�d�+�+�+�+�+rUc��|�d��}|�ddg��}|�ddg��}|�gd�gd�gd�gd�g��}t|||d���}t||��dS)	N�rAr@rEr�r
�rrFrA�rCrArFrr	rw)rOrdrQrP�y_r2_a0res      rS�test_rank_2_IIR_axis_0z(_TestLinearFilter.test_rank_2_IIR_axis_0�s����M�M�&�!�!������2�w�'�'������S�z�*�*���$�$�i�i�i����I�I�I�&/�i�i�&1�2�2���A�q�!�!�$�$�$��!�'�1�-�-�-�-�-rUc��|�d��}|�ddg��}|�ddg��}|�gd�gd�gd�gd�g��}t|||d�	��}t||��dS)
NrrEr�r
�rrFr�rCr�rC�rLrtrL�r`i�r`r	rw)rOrdrQrP�y_r2_a1res      rS�test_rank_2_IIR_axis_1z(_TestLinearFilter.test_rank_2_IIR_axis_1�s����M�M�&�!�!������2�w�'�'������S�z�*�*���$�$�i�i�i����]�]�]�)�M�M�&+�,�,���A�q�!�!�$�$�$��!�'�1�-�-�-�-�-rUc���|�d��}|�ddg��}|�ddg��}|�tjd����}|�gd�gd�gd�gd	�g��}|�gd
���dd�tjf}t|||d|���\}}t
||��t
||��dS)NrrEr�r
)rArEr�)r|���r|)rs���rs)rc���rc)r�r�i��i����r�rv)rXrWror[rr#r
)	rOrdrQrPrv�	y_r2_a0_1ryrerzs	         rS� test_rank_2_IIR_axis_0_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_0_init_cond�s����M�M�&�!�!������2�w�'�'������S�z�*�*��
�
�
������
/�
/���&�&�	�	�	�:�:�:�}�}�}�+�m�m�(-�.�.�	��!�!�"5�"5�"5�6�6�q�q�q�"�*�}�E����1�a�a�B�/�/�/���2�!�)�Q�/�/�/�!�"�d�+�+�+�+�+rUc��|�d��}|�ddg��}|�ddg��}|�tjd����}|�gd�gd�gd�gd�g��}|�gd�g��}t	|||d	|�
��\}}t||��t||��dS)NrrEr�r
)rEr@)rEr@rB)rBr@rE)���r�r�rr�)rXrWror[r#r
)	rOrdrQrPrv�	y_r2_a0_0ryrerzs	         rS� test_rank_2_IIR_axis_1_init_condz2_TestLinearFilter.test_rank_2_IIR_axis_1_init_conds����M�M�%� � ������2�w�'�'������S�z�*�*��
�
�
������
/�
/���&�&�	�	�	�9�9�9�(1�	�	�9�9�9�(>�?�?�	��!�!�?�?�?�"3�4�4����1�a�a�B�/�/�/���2�!�)�Q�/�/�/�!�"�d�+�+�+�+�+rUc�6���|�d��}|�ddg���|�ddg���t|j��D]>}t	��||��}tj��fd�||��}t||���?dS)N�rAr@rFrEr�r
c�&��t��|��Sr-�r#��wrPrQs ��rS�<lambda>z3_TestLinearFilter.test_rank_3_IIR.<locals>.<lambda> ������1�a�0@�0@�rU�rXrWrq�ndimr#ro�apply_along_axisr
�rOrdr�rerlrPrQs     @@rS�test_rank_3_IIRz!_TestLinearFilter.test_rank_3_IIRs������M�M�)�$�$������2�w�'�'������S�z�*�*���!�&�M�M�	.�	.�D���1�a��&�&�A��%�&@�&@�&@�&@�&@�$��J�J�C�%�a��-�-�-�-�	.�	.rUc�L���
�|�d��}|�ddg���|�ddg���t|j��D]�}t	|j��}d||<|�t
j|����}|�dg���
t��|||��\}}���
fd�}���
fd�}t
j	|||��}	t
j	|||��}
t||	��t||
����dS)Nr�rEr�r
c�6��t��|����dS�Nrurr��r�rPrQ�zi1s ���rSr�z=_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.<lambda>.����G�A�q�!��4�4�4�Q�7�rUc�6��t��|����dS�NrurEr�r�s ���rSr�z=_TestLinearFilter.test_rank_3_IIR_init_cond.<locals>.<lambda>/r�rU�rXrWrqr�r
r�ror[r#r�r
�rOrdr��zi_shapervrerz�lf0�lf1rlryrPrQr�s           @@@rS�test_rank_3_IIR_init_condz+_TestLinearFilter.test_rank_3_IIR_init_cond#s9������M�M�)�$�$������2�w�'�'������S�z�*�*���!�&�M�M�	0�	0�D��A�G�}�}�H��H�T�N��#�#�B�G�H�$5�$5�6�6�B��$�$�a�S�)�)�C��A�q�!�T�2�.�.�E�A�r�7�7�7�7�7�7�C�7�7�7�7�7�7�C��%�c�4��3�3�C��&�s�D�!�4�4�D�%�a��-�-�-�%�b�$�/�/�/�/�	0�	0rUc�4���|�d��}|�gd����|�dg���t|j��D]>}t	��||��}tj��fd�||��}t||���?dS)Nr�rrrEc�&��t��|��Sr-r�r�s ��rSr�z3_TestLinearFilter.test_rank_3_FIR.<locals>.<lambda><r�rUr�r�s     @@rS�test_rank_3_FIRz!_TestLinearFilter.test_rank_3_FIR5s������M�M�)�$�$�����z�z�z�*�*������s�#�#���!�&�M�M�	.�	.�D���1�a��&�&�A��%�&@�&@�&@�&@�&@�$��J�J�C�%�a��-�-�-�-�	.�	.rUc�L���
�|�d��}|�gd����|�dg���t|j��D]�}t	|j��}d||<|�t
j|����}|�ddg���
t��|||��\}}���
fd�}���
fd�}t
j	|||��}	t
j	|||��}
t||	��t||
����dS)Nr�rrrErFc�6��t��|����dSr�r�r�s ���rSr�z=_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.<lambda>Jr�rUc�6��t��|����dSr�r�r�s ���rSr�z=_TestLinearFilter.test_rank_3_FIR_init_cond.<locals>.<lambda>Kr�rUr�r�s           @@@rS�test_rank_3_FIR_init_condz+_TestLinearFilter.test_rank_3_FIR_init_cond?s9������M�M�)�$�$�����z�z�z�*�*������s�#�#���!�&�M�M�	0�	0�D��A�G�}�}�H��H�T�N��#�#�B�G�H�$5�$5�6�6�B��$�$�a��V�,�,�C��A�q�!�T�2�.�.�E�A�r�7�7�7�7�7�7�C�7�7�7�7�7�7�C��%�c�4��3�3�C��&�s�D�!�4�4�D�%�a��-�-�-�%�b�$�/�/�/�/�	0�	0rUc�z�|�d��}tjddd���\}}|�|��}|�|��}|jddz
}|�tjdd	|f����}|�tjdd|f����}t||||�
��\}}t||||�
��\}	}
t|	|��t||
��ttt|||dtj|����dS)N)rArBrr�r��ba�r�rrErArBrur�)rXrr&rWr�ror[r#r
r�r�)rOrdrQrP�zi_size�zi_full�zi_sing�y_full�zf_full�y_sing�zf_sings           rS�test_zi_pseudobroadcastz)_TestLinearFilter.test_zi_pseudobroadcastQs*���M�M�*�%�%���m�A�s�4�0�0�0���!����q�!�!�����q�!�!���'�!�*�q�.���$�$�R�W�a��G�_�%=�%=�>�>���$�$�R�W�a��G�_�%=�%=�>�>��!�!�Q��g�6�6�6����!�!�Q��g�6�6�6����!�&�&�1�1�1�!�'�7�3�3�3�	�j�'�1�a��B����8H�8H�I�I�I�I�IrUc��|�d��}|�gd���}|�dg��}|�gd���}t||d|��}t||��dS)NrCrrrE)rrErFrFrFrFrrw)rOrdrQrPrlres      rS�
test_scalar_az_TestLinearFilter.test_scalar_afs����M�M�!�������z�z�z�*�*������s�#�#��� � �!3�!3�!3�4�4���A�q��t�Q����!�!�S�)�)�)�)�)rUc�^�|�tjdd����}|�tjdd����}|�tjgd�����}tjdd��}|ddd�dd�fxxdzcc<|ddd�dd�fxxdzcc<|�|��}|�tjd	d����}tjdd��}dggdggdggg|dd�dd�dd
�f<|�|��}t|||d|��\}}t
||��t
||��t||d|d|��\}	}
t
|	|��t
|
|��dS)
N)r@rFrB�lrB�rErr)r@rErArErFr@)r@rFrArAr�r)rWror�r[rr#r
)rOrdrQrPrv�zf_expected�
y_expected�y_iir�zf_iir�y_fir�zf_firs           rS�test_zi_some_singleton_dimsz-_TestLinearFilter.test_zi_some_singleton_dimsps���
���r�x���5�5�6�6�����r�w�q�#���/�/�����r�x����0�0�1�1��
�W�W�c�
"�
"��
�1�Q�Q�Q�q�q�q�5�	�	�	�Q��	�	�	�
�1�Q�Q�Q�q�q�q�5�	�	�	�Q��	�	�	�
�
�
��
#�
#���(�(���'�3�)?�)?�@�@���X�g�s�+�+�
� !�s�e�q�c�U�a�S�E�2�
�1�1�1�Q�Q�Q�r��r�6���'�'�
�3�3�
� ��1�a��R�0�0�
��v�!�%��4�4�4�!�&�+�6�6�6� ��1�Q�4��B��3�3�
��v�!�%��4�4�4�!�&�+�6�6�6�6�6rUc	���|�|��}|�|��}|�|��}|�|��}ttt|||||��dSr-)rWr�r�r#)rOrQrPrdr�rvs      rS�base_bad_size_ziz"_TestLinearFilter.base_bad_size_zi�sn�����q�!�!�����q�!�!�����q�!�!��
�
�
��
#�
#���j�'�1�a��D�"�=�=�=�=�=rUc�~�tjd��}|�dgdg|ddg��|�ddgdg|dddg��|�ddgdg|ddgg��|�ddgdg|dgd���|�gd�dg|ddgg��|�gd�dg|dgd���|�dgddg|dddg��|�dgddg|ddgg��|�dgddg|dgd���|�gd�ddg|ddg��|�gd�ddg|ddgdgg��|�gd�ddg|dgd���|�gd�ddg|dgd���|�ddggd�|ddg��|�ddggd�|ddgdgg��|�ddggd�|dgd���|�ddggd�|dgd���tjd���d	��}|�dgdg|ddg��|�ddgdg|dgd���|�ddgdg|dgd�gg��|�ddgdg|ddgdgd
gg��|�ddgdg|dddgg��|�ddgdg|dgd�g��|�gd�dg|dgd���|�gd�dg|dgd�gd�gg��|�gd�dg|dddgd
d
gddgg��|�gd�dg|dddgd
d
gg��|�gd�dg|dgd�gd�g��|�dgddg|dgd���|�dgddg|dgd�gg��|�dgddg|ddgdgd
gg��|�dgddg|dddgg��|�dgddg|dgd�g��|�dggd�|dgd���|�dggd�|dgd�gd�gg��|�dggd�|dddgd
d
gddgg��|�dggd�|dddgd
d
gg��|�dggd�|dgd�gd�g��|�gd�ddg|dgd���|�gd�ddg|dgd�gd�gg��|�gd�ddg|dddgd
d
gddgg��|�gd�ddg|dddgd
d
gg��|�gd�ddg|dgd�gd�g��|�dgdg|ddg��|�ddgdg|dgd���|�ddgdg|ddgdgd
gd
ggg��|�ddgdg|dgd�g��|�ddgdg|ddgdgd
gg��|�ddgdg|ddgdgd
gd
gdgg��|�gd�dg|dgd���|�gd�dg|dddgd
d
gddgddggg��|�gd�dg|dgd�gd�g��|�gd�dg|dddgd
d
gddgg��|�gd�dg|dddgd
d
gddgddgddgg��|�dgddg|dgd���|�dgddg|ddgdgd
gd
ggg��|�dgddg|dgd�g��|�dgddg|ddgdgd
gg��|�dgddg|ddgdgd
gd
gdgg��|�dggd�|dgd���|�dggd�|dddgd
d
gddgddggg��|�dggd�|dgd�gd�g��|�dggd�|dddgd
d
gddgg��|�dggd�|dddgd
d
gddgddgddgg��|�gd�ddg|dgd���|�gd�ddg|dddgd
d
gddgddggg��|�gd�ddg|dgd�gd�g��|�gd�ddg|dddgd
d
gddgg��|�gd�ddg|dddgd
d
gddgddgddgg��dS)NrCrEr�r)rrErFr��rrErFr@rLrrF)rrErFr@rArBrWr@rArB)rArBrCr|)rrErFr@rArBrCr|r|r�r)rorr�rp)rOr�r�s   rS�test_bad_size_ziz"_TestLinearFilter.test_bad_size_zi�sy��
�Y�q�\�\�����q�c�A�3��B���4�4�4����q�!�f�q�c�2�r�A�q�6�:�:�:����q�!�f�q�c�2�r�Q�C�5�9�9�9����q�!�f�q�c�2�r�9�9�9�=�=�=����i�i�i�!��b�"��s�e�<�<�<����i�i�i�!��b�"�i�i�i�@�@�@����q�c�A�q�6�2�r�A�q�6�:�:�:����q�c�A�q�6�2�r�Q�C�5�9�9�9����q�c�A�q�6�2�r�9�9�9�=�=�=����i�i�i�!�Q���R�!��=�=�=����i�i�i�!�Q���R�1�#��s��D�D�D����i�i�i�!�Q���R����C�C�C����i�i�i�!�Q���R����F�F�F����q�!�f�i�i�i��R�!��=�=�=����q�!�f�i�i�i��R�1�#��s��D�D�D����q�!�f�i�i�i��R����C�C�C����q�!�f�i�i�i��R����F�F�F��Y�r�]�]�
"�
"�5�
)�
)�����q�c�A�3��A��s�3�3�3�	
���q�!�f�q�c�2�q�'�'�'�:�:�:����q�!�f�q�c�2�q�G�G�G�9�+�>�>�>����q�!�f�q�c�2�q�A�3���a�S�/�B�B�B����q�!�f�q�c�2�q�A�a�5�'�:�:�:����q�!�f�q�c�2�q�9�9�9�+�>�>�>����i�i�i�!��b�!�]�]�]�C�C�C����i�i�i�!��b�!�w�w�w�w�w�w�6G�5H�I�I�I����i�i�i�!��b�!�q��e�Q�q�E�1�Q�%�5H�I�I�I����i�i�i�!��b�!�q��e�Q�q�E�]�C�C�C����i�i�i�!��b�!�i�i�i�	�	�	�5J�K�K�K����q�c�A�q�6�2�q�'�'�'�:�:�:����q�c�A�q�6�2�q�G�G�G�9�+�>�>�>����q�c�A�q�6�2�q�A�3���a�S�/�B�B�B����q�c�A�q�6�2�q�A�a�5�'�:�:�:����q�c�A�q�6�2�q�9�9�9�+�>�>�>����q�c�9�9�9�b�!�]�]�]�C�C�C����q�c�9�9�9�b�!�w�w�w�w�w�w�6G�5H�I�I�I����q�c�9�9�9�b�!�q��e�Q�q�E�1�Q�%�5H�I�I�I����q�c�9�9�9�b�!�q��e�Q�q�E�]�C�C�C����q�c�9�9�9�b�!�i�i�i�	�	�	�5J�K�K�K����i�i�i�!�Q���Q�
�
�
�F�F�F����i�i�i�!�Q���Q�'�'�'�'�'�'�9J�8K�L�L�L����i�i�i�!�Q���Q�!�A���!�u�a��U�8K�L�L�L����i�i�i�!�Q���Q�!�A���!�u�
�F�F�F����i�i�i�!�Q���Q����9�9�9�8M�N�N�N�	
���q�c�A�3��A��s�3�3�3����q�!�f�q�c�2�q�)�)�)�<�<�<����q�!�f�q�c�2�q�Q�C���Q�C���3D�2E�F�F�F����q�!�f�q�c�2�q�<�<�<�.�A�A�A����q�!�f�q�c�2�q�A�3��s�A�3�-�@�@�@����q�!�f�q�c�2�q�A�3��s�A�3��s�A�3�2G�H�H�H����i�i�i�!��b�!�5F�5F�5F�G�G�G����i�i�i�!��b�!��!�u�a��U�A�a�5�!�A��6O�5P�Q�Q�Q����i�i�i�!��b�!�i�i�i�	�	�	�5J�K�K�K����i�i�i�!��b�!�q��e�Q�q�E�1�Q�%�5H�I�I�I����i�i�i�!��b�!�q��e�Q�q�E�1�Q�%��1��q�QR�e�5T�U�U�U����q�c�A�q�6�2�q�)�)�)�<�<�<����q�c�A�q�6�2�q�Q�C���Q�C���3D�2E�F�F�F����q�c�A�q�6�2�q�<�<�<�.�A�A�A����q�c�A�q�6�2�q�A�3��s�A�3�-�@�@�@����q�c�A�q�6�2�q�A�3��s�A�3��s�A�3�2G�H�H�H����q�c�9�9�9�b�!�5F�5F�5F�G�G�G����q�c�9�9�9�b�!��!�u�a��U�A�a�5�!�A��6O�5P�Q�Q�Q����q�c�9�9�9�b�!�i�i�i�	�	�	�5J�K�K�K����q�c�9�9�9�b�!�q��e�Q�q�E�1�Q�%�5H�I�I�I����q�c�9�9�9�b�!�q��e�Q�q�E�1�Q�%��1��q�QR�e�5T�U�U�U����i�i�i�!�Q���Q�8I�8I�8I�J�J�J����i�i�i�!�Q���Q�1�Q�%��1��q��e�Q�q�E�9R�8S�T�T�T����i�i�i�!�Q���Q����9�9�9�8M�N�N�N����i�i�i�!�Q���Q�!�A���!�u�a��U�8K�L�L�L����i�i�i�!�Q���Q�!�A���!�u�a��U�A�a�5�RS�TU�QV�8W�X�X�X�X�XrUc�\�|�d��}|�dg��}|�dg��}|�g��}t||||���\}}t||��t	|j|j��t	|jd��dS)N)rBrErur)rXrWr#r
r
r�r�)rOrdrPrQrvrerzs       rS�
test_empty_ziz_TestLinearFilter.test_empty_zi�s����M�M�$��������s�#�#������s�#�#��
�
�
��
#�
#����1�a�B�'�'�'���2�!�!�Q�'�'�'��R�X�t�z�*�*�*��R�W�a� � � � � rUc��|�dg��}|�dg��}t||ddg��}t||ddg��}t||ddg��}t||��t||��dS)NrErVrTF)rWr,r)rOrPrQrv�zi_1�zi_2s      rS�test_lfiltic_bad_ziz%_TestLinearFilter.test_lfiltic_bad_zi�s�������s�#�#������s�#�#��
�Q��B��7�
#�
#���q�!�a��V�$�$���q�!�d�E�]�+�+���2�t�$�$�$��2�t�$�$�$�$�$rUc��|�dg��}|�gd���}|�ddg��}|�dg��}|�dg��}|�ddg��}t||||���\}}t||��t||��dS)	NrErrrFr|rarA���ru�rWr#r
�	rOrPrQrvrd�ye�zfererzs	         rS�test_short_x_FIRz"_TestLinearFilter.test_short_x_FIRs���
����s�#�#�����z�z�z�*�*��
�
�
��A��
'�
'������t�$�$��
�
�
���
%�
%��� � �!�S��*�*����1�a�B�'�'�'���2�!�!�R�(�(�(�!�"�c�*�*�*�*�*rUc��|�ddg��}|�gd���}|�ddg��}|�dg��}|�dg��}|�ddg��}t||||�	��\}}t||��t||��dS)
NrErrrFr|rarAi����r�rur�r�s	         rS�test_short_x_IIRz"_TestLinearFilter.test_short_x_IIRs���
����1�v�&�&�����z�z�z�*�*��
�
�
��A��
'�
'������t�$�$��
�
�
���
%�
%��� � �#�s��,�,����1�a�B�'�'�'���2�!�!�R�(�(�(�!�"�c�*�*�*�*�*rUc��|�d��}|�ddg��}|���}|�ddg��}|���}|�gd���}t|||��}t	||��t||��t||��dSrf�rXrWr�r#r
r
�rOrdrQ�b0rP�a0rl�y_fs        rS�test_do_not_modify_a_b_IIRz,_TestLinearFilter.test_do_not_modify_a_b_IIR"s����M�M�$��������2�w�'�'��
�V�V�X�X������T�{�+�+��
�V�V�X�X��� � �!5�!5�!5�6�6���a��A����!�#�s�+�+�+��Q������Q������rUc��|�d��}|�gd���}|���}|�dg��}|���}|�gd���}t|||��}t	||��t||��t||��dS)NrgrQrF)rr
rErFr@rWr�r�s        rS�test_do_not_modify_a_b_FIRz,_TestLinearFilter.test_do_not_modify_a_b_FIR.s����M�M�$�������y�y�y�)�)��
�V�V�X�X������s�#�#��
�V�V�X�X��� � �!6�!6�!6�7�7���a��A����!�#�s�+�+�+��Q������Q������rUN)r�r�r�rXrWrmrpr{r}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rUrSrTrT�s�������%�%�%�
9�
9�
9�9�9�9�9�9�9�	,�	,�	,�	,�	,�	,�.�.�.�.�.�.�,�,�,�,�,�,�.�.�.�0�0�0�$.�.�.�0�0�0�$J�J�J�**�*�*�7�7�7�6>�>�>�^Y�^Y�^Y�@	!�	!�	!�	%�	%�	%�+�+�+�+�+�+�
�
�
�
�
�
�
�
rUrTc�.�eZdZejd��ZdS)�TestLinearFilterFloat32r�N�r�r�r�ror�r�rUrSr�r�;��������B�H�S�M�M�E�E�ErUr�c�.�eZdZejd��ZdS)�TestLinearFilterFloat64r�Nr�r�rUrSr�r�?r�rUr�c�.�eZdZejd��ZdS)�TestLinearFilterFloatExtendedr Nr�r�rUrSr�r�Cr�rUr�c�.�eZdZejd��ZdS)�TestLinearFilterComplex64�FNr�r�rUrSr�r�Gr�rUr�c�.�eZdZejd��ZdS)�TestLinearFilterComplex128�DNr�r�rUrSr�r�Kr�rUr�c�.�eZdZejd��ZdS)�TestLinearFilterComplexExtended�GNr�r�rUrSr�r�Or�rUr�c�4�eZdZejd��Zd�ZdS)�TestLinearFilterDecimalrZc�:�tt|����Sr-)rr��rOrds  rSrbzTestLinearFilterDecimal.typeUs���s�1�v�v���rUN)r�r�r�ror�rbr�rUrSr�r�Rs2�������B�H�S�M�M�E�����rUr�c�2�eZdZejd��ZeZdS)�TestLinearFilterObjectrZN)r�r�r�ror�rerbr�rUrSrrYs"�������B�H�S�M�M�E��D�D�DrUrc���tttdgdggd���tttdgdggd���tttdgdggd���dS)NrV)rVNrT�rVrTrV)r�r�r#r�rUrS�test_lfilter_bad_objectr^sg���)�W�s�e�c�U�4D�4D�4D�E�E�E��)�W�s�e�d�V�_�_�_�E�E�E��)�W�t�f�s�e�_�_�_�E�E�E�E�ErUc�L�tttddgddggd���dS)NrFr@rArB)rErFr@rArB)r��NotImplementedErrorr#r�rUrS�!test_lfilter_notimplemented_inputrfs+���%�w��1���!�u�k�k�k�J�J�J�J�JrU�dtc�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�TestCorrelateRealc��tjddd���|��}tjddd���|��}tjgd����|��}|||fS)Nrr@rArErF)rrFrBr�r@)ror�r�r�rOr	rPrQrls     rS�_setup_rank1zTestCorrelateReal._setup_rank1psq���K��1�a� � �'�'��+�+���K��1�a� � �'�'��+�+���h����'�'�.�.�r�2�2���!�S�y�rUc���d}	tj|��}t|d��r)tdtj|j��z��}n#t$rYnwxYw|S)NrC�
resolutionrh)ro�finfor�r��log10r�	Exception)rO�res_dtr��dt_infos    rS�equal_tolerancez!TestCorrelateReal.equal_tolerancewss����	��h�v�&�&�G��w��-�-�
A��d�2�8�G�,>�#?�#?�?�@�@�����	�	�	��D�	�����s�A
A�
A�Ac��|tjkr|�tj��S|�|��Sr-)ror�r�double)rOrs  rS�equal_tolerance_fftz%TestCorrelateReal.equal_tolerance_fft�s;���R�]�"�"��'�'��	�2�2�2��'�'��/�/�/rUc��|tkr>ttd��gtd��g��}t|d��dS|�|��\}}}t	||d���}t	||d���}t|||�|j�����t|||�|j�����t|j|��t|j|��dS)NrAr@rlrrmr�)	rr r
�_setup_rank3rr
rr�r)rOr	rnrPrQrl�y_fft�y_directs        rS�test_methodzTestCorrelateReal.test_method�s���
��=�=�'������w�q�z�z�l�C�C�F����*�*�*�*�*��)�)�"�-�-�I�A�q�#��a��5�1�1�1�E� ��A�h�7�7�7�H�%�c�5�$�:R�:R�SX�S^�:_�:_�`�`�`�`�%�c�8�T�=Q�=Q�RZ�R`�=a�=a�b�b�b�b����b�)�)�)�����,�,�,�,�,rUc�B�|�|��\}}}t||d��}t||dd���t|j|��t||d��}t||dd�ddd���t|j|��dS)Nr�rErAr��rrr
r
r��rOr	rPrQrlres      rS�test_rank1_validz"TestCorrelateReal.test_rank1_valid�s����%�%�b�)�)�	��1�c��a��G�$�$��!�!�S��1��X�.�.�.��Q�W�b�!�!�!�
�a��G�$�$��!�!�S��1��X�d�d��d�^�4�4�4��Q�W�b�!�!�!�!�!rUc��|�|��\}}}t||d��}t||dd���t|j|��dS)NrXr�r r!s      rS�test_rank1_samez!TestCorrelateReal.test_rank1_same�s\���%�%�b�)�)�	��1�c��a��F�#�#��!�!�S��"��X�.�.�.��Q�W�b�!�!�!�!�!rUc��|�|��\}}}t||d��}t||��t|j|��dS)Nr�r r!s      rS�test_rank1_fullz!TestCorrelateReal.test_rank1_full�sT���%�%�b�)�)�	��1�c��a��F�#�#��!�!�S�)�)�)��Q�W�b�!�!�!�!�!rUc��tjddd���dd����|��}tjddd���d	d����|��}t	gd
�gd�gd�gd
�gd�gd�ggd�gd�gd�gd�gd�gd�ggd�gd�gd�gd�gd�gd�gg|���}|||fS)Nrror))rFrArBr�)�orderrKr'rz)rgg@g�@g��@�@�@g��@g�}@gd@)gG@g{@g��@g��@g�@���@g�@g�p@)��`@g�@g��@g��@���@g�@g@�@g�s@)g@p@g��@g0�@g�@gp�@g(�@g`�@g�t@)g@i@g��@�(�@g�@g�@gؘ@g@�@g�b@)g�\@g�u@g�@g�@g�@g��@g�r@gC@)g7@gy@g,�@���@g�@g$�@g@�@gPr@)r+g��@g�@g��@g��@gԩ@g��@g�}@)gPt@g �@gR�@g��@g(�@gK�@g �@g��@)g؁@g��@gf�@g��@g(�@g}�@g(�@g��@)g {@r)g4�@r,g��@gܧ@g��@��l@)g n@g�@g�@g��@g��@g��@g��@rR)g6@g�j@g��@g��@gД@gp�@g�z@g�`@)g�U@g@~@g(�@r.gP�@g�@g �@g�i@)g�g@g�@r*gX�@g��@g��@gЏ@g@k@)g@s@gp�@gx�@gh�@g��@g��@gؐ@r/)r/g��@r-g �@g�@gȖ@g��@g�S@)g�_@g v@g�@g�@g�@gp�@g@m@rr	)ror�rpr�rr
s     rSrzTestCorrelateReal._setup_rank3�s]���K��2�r�"�"�*�*�9�C�*�@�@�G�G��
�
���K��2�r�"�"�*�*�9�C�*�@�@�G�G��
�
���E�E�E�I�I�I�K�K�K�K�K�K�J�J�J�F�F�F�H�J�I�I�K�K�K�L�L�L�L�L�L�L�L�L�I�I�I�K�G�F�F�I�I�I�K�K�K�L�L�L�I�I�I�E�E�E�G�H�(�)����,�!�S�y�rUc	�p�|�|��\}}}t||d��}t||dd�dd�dd�f��t|j|��t||d��}t||dd�dd�dd�fddd�ddd�ddd�f��t|j|��dS)Nr�rErFrAr@rBr��rrr
r
r�r!s      rS�test_rank3_validz"TestCorrelateReal.test_rank3_valid�s����%�%�b�)�)�	��1�c��a��G�$�$��!�!�S��1��a��c�1�Q�3��%7�8�8�8��Q�W�b�!�!�!�
�a��G�$�$��!�!�S��1��a��c�1�Q�3��%7���"��d�d��d�D�D�b�D�8H�%I�J�J�J��Q�W�b�!�!�!�!�!rUc���|�|��\}}}t||d��}t||dd�dd�dd�f��t|j|��dS)NrXrr�rEr�r1r!s      rS�test_rank3_samez!TestCorrelateReal.test_rank3_same�sl���%�%�b�)�)�	��1�c��a��F�#�#��!�!�S��2��q��t�Q�r�T�)9�%:�;�;�;��Q�W�b�!�!�!�!�!rUc��|�|��\}}}t||��}t||��t|j|��dSr-r1r!s      rS�test_rank3_allz TestCorrelateReal.test_rank3_all�sP���%�%�b�)�)�	��1�c��a��O�O��!�!�S�)�)�)��Q�W�b�!�!�!�!�!rUN)r�r�r�rrrrr"r$r&rr2r4r6r�rUrSrrks�������
���	�	�	�0�0�0�-�-�-�	"�	"�	"�"�"�"�"�"�"����<	"�	"�	"�"�"�"�"�"�"�"�"rUrc�&�eZdZd�Zd�Zd�Zd�ZdS)�
TestCorrelatec�"�tjdd���d��}tjdd���d��}ttt
g||f�Riddi��ttt
g||f�Riddi��dSr�)rorrpr�r�rr�s   rSr�z!TestCorrelate.test_invalid_shapes�s���
�I�a��O�O�#�#�F�+�+���I�b�!���$�$�V�,�,���j�)�J�q�!�f�J�J�J���8I�J�J�J��j�)�J�q�!�f�J�J�J���8I�J�J�J�J�JrUc�J�gd�}gd�}ttt||d���ttt||dd���ttt||dd	���ttt||d
d���ttt||dd���dSr��r�r�rr�s   rSr�z!TestCorrelate.test_invalid_params�s����I�I���I�I���j�)�Q���?�?�?�?��j�)�Q���u�M�M�M�M��j�)�Q���h�O�O�O�O��j�)�Q���w�O�O�O�O��j�)�Q���w�O�O�O�O�O�OrUc�v�tttdgdd���tttddgd���tttdgdd���tttddgd���tttdgdgg��tttdgd��dSr
r;rs rSrz"TestCorrelate.test_mismatched_dims�s����j�)�a�S�!�H�E�E�E�E��j�)�Q���H�E�E�E�E��j�)�a�S�!�E�B�B�B�B��j�)�Q���E�B�B�B�B��j�)�a�S�A�3�%�8�8�8��j�)�a�S�!�4�4�4�4�4rUc�4�gd�}ddg}tt||d���gd���gd�}gd�}tt||d���gd���tt||d	���gd
���tt||d���dg��dS)
NrDrArBrXrY)rB�rKr{)r~rJrKr�)rCr~rJrKrLr�rJ)rrr�s   rS�test_numpy_fastpathz!TestCorrelate.test_numpy_fastpaths����I�I��
��F���	�!�Q�V�4�4�4�k�k�k�B�B�B��I�I���I�I���	�!�Q�V�4�4�4�l�l�l�C�C�C��	�!�Q�V�4�4�4�6I�6I�6I�J�J�J��	�!�Q�W�5�5�5��t�<�<�<�<�<rUN)r�r�r�r�r�rr?r�rUrSr8r8�sV������
K�
K�
K�P�P�P�5�5�5�	=�	=�	=�	=�	=rUr8rZ�r�rXr��behindTF�
input_size)r�rar�r�r�i'c���tj�d��}|�|��}t	|dz��}|r-tj|�|��|g��}|}n||d�}|}t
|||���}t|j|j|���}	tj	|��}
t|	|
|��t|	j|j��dS)NrrGrY)ror�rr�r��concatenaterrr��argmaxr
r�)rZrArBr�in1�offset�in2r��correlation�lags�	lag_indexs           rS�test_correlation_lagsrLs���

�)�
�
��
"�
"�C�

�
�
�j�
)�
)�C�
��B��
�
�F�
���n�c�1�1�&�9�9�3�?�@�@���7����&�'�'�l�����C��4�0�0�0�K��C�H�c�h�T�:�:�:�D��	�+�&�&�I���i��(�+�+�+����[�.�/�/�/�/�/rUc�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�TestCorrelateComplexc��|tjkrtj}tdtj|��jzdz��S)NrFr@)ror�r�r�r�	precision)rOr	s  rSr�zTestCorrelateComplex.decimal7s9��
�������B��1�r�x��|�|�-�-��1�2�2�2rUc�
�tj�d��tj�d���|��}|dtj�d���|��zz
}tj�d���|��}|dtj�d���|��zz
}t|j|j|���t|j|j|���z�|��}|dt|j|j|���t|j|j|���zzz
}|||fS)NrrGr�r�rY)ror�r�r�r�rr��imag)rOr	rZrPrQrls      rSrz!TestCorrelateComplex._setup_rank1<s?��
�	���q�����I�O�O�B���&�&�r�*�*��	�R�"�)�/�/�"�%�%�,�,�R�0�0�
0�0���I�O�O�A���%�%�b�)�)��	�R�"�)�/�/�!�$�$�+�+�B�/�/�
/�/�������d�3�3�3������d�3�3�3�4�5;�V�B�Z�Z�	��r�i�����T�:�:�:�:��q�v�q�v�D�9�9�9�:�;�	;���!�S�y�rUc��|�|d��\}}}t||d��}t|||�|�����t	|j|��t||d��}t||ddd����|�|�����t	|j|��dS)Nr�r�r�)rrr
r�r
r��conjr!s      rSr"z%TestCorrelateComplex.test_rank1_validIs����%�%�b�'�2�2�	��1�c��a��G�$�$��!�!�S�$�,�,�r�2B�2B�C�C�C�C��Q�W�b�!�!�!�
�a��G�$�$��!�!�S���2��Y�^�^�%5�%5�t�|�|�B�?O�?O�P�P�P�P��Q�W�b�!�!�!�!�!rUc���|�|d��\}}}t||d��}t|||�|�����t	|j|��dS)NrXr��rrr
r�r
r�r!s      rSr$z$TestCorrelateComplex.test_rank1_sameT�g���%�%�b�&�1�1�	��1�c��a��F�#�#��!�!�S�$�,�,�r�2B�2B�C�C�C�C��Q�W�b�!�!�!�!�!rUc���|�|d��\}}}t||d��}t|||�|�����t	|j|��dS)Nr�r�rVr!s      rSr&z$TestCorrelateComplex.test_rank1_fullZrWrUc��tjgd�|���}tjgd�|���}t||��}t|gd���dS)N�r�r`r�r	�y�?@y@@y@@y@@)r��$@��<@��6@�y0@�y @�)rorrr
�rOr	r��kres     rS�test_swap_fullz#TestCorrelateComplex.test_swap_full`sb���H�-�-�-�R�8�8�8���H�5�5�5�R�@�@�@���a��O�O���Q�L�L�L�M�M�M�M�MrUc�^�gd�}gd�}t||d���}t|gd���dS)NrZr[rXrY)r\r]r^)rr
r_s     rS�test_swap_samez#TestCorrelateComplex.test_swap_samefsI��$�$�$��,�,�,���a���(�(�(���Q�3�3�3�4�4�4�4�4rUc�b�tj�ddd���|��}|dtj�ddd���|��zz
}tj�ddd���|��}|dtj�ddd���|��zz
}t	|j|j��t	|j|j��z�|��}|dt	|j|j��t	|j|j��zzz
}t	||d��}t|||�|��dz
���t|j
|��dS)	NrGr�rCr�rAr�rEr�)ror�r�r�rr�rRr
r�r
r�r!s      rS�
test_rank3zTestCorrelateComplex.test_rank3lsc���I�O�O�B��1�%�%�,�,�R�0�0��	�R�"�)�/�/�"�a��+�+�2�2�2�6�6�
6�6���I�O�O�A�q�!�$�$�+�+�B�/�/��	�R�"�)�/�/�!�Q��*�*�1�1�"�5�5�
5�5�������(�(��1�6�1�6�*�*�+�,2�F�2�J�J�	��r�i�����/�/�/�)�A�F�A�F�2K�2K�K�L�L���a��F�#�#��!�!�S�$�,�,�r�2B�2B�Q�2F�G�G�G�G��Q�W�b�!�!�!�!�!rUc	��tjtj������|��}|dtjtj������|��zz
}tjtj������|��}|dtjtj������|��zz
}t|j|j��t|j|j��z�|��}|dtjt|j|j��t|j|j��z��zz
}t||d��}t|||�	|��dz
���t|j|��ttdgdg��tdd����ttdgdg��tdd����ttdgdg��tdd����dS)Nr�r�rEr�rc�@rA)rorr�r�r�rr�rRr
r�r
r�r!s      rS�
test_rank0zTestCorrelateComplex.test_rank0zs���H�R�Y�_�_�&�&�'�'�.�.�r�2�2��	�R�"�(�2�9�?�?�,�,�-�-�4�4�R�8�8�
8�8���H�R�Y�_�_�&�&�'�'�.�.�r�2�2��	�R�"�(�2�9�?�?�,�,�-�-�4�4�R�8�8�
8�8�������(�(��1�6�1�6�*�*�+�,2�F�2�J�J�	��r�B�H�i�����7�7�7�&�q�v�q�v�6�6�7�8�8�8�	8��
�a��F�#�#��!�!�S�$�,�,�r�2B�2B�Q�2F�G�G�G�G��Q�W�b�!�!�!��Y��s�R�D�)�)�9�Q��+;�+;�<�<�<��Y��t�b�T�*�*�I�b�"�,=�,=�>�>�>��Y��t�a�S�)�)�9�R��+;�+;�<�<�<�<�<rUN)r�r�r�r�rr"r$r&rarcrerhr�rUrSrNrN.s�������3�3�3�
���	"�	"�	"�"�"�"�"�"�"�N�N�N�5�5�5�"�"�"�=�=�=�=�=rUrNc� �eZdZd�Zd�Zd�ZdS)�TestCorrelate2dc
��tjd��}tjgd���}dD�]}ttj|||���tj|||�����ttjtj|g|g|�����tj|||�����|dkr�ttj|||���tj|||�����ttjtj|g|g|�����tj|||�������dS)NrBryrzrYr�)rorrrrrr{rr|s    rS� test_consistency_correlate_funcsz0TestCorrelate2d.test_consistency_correlate_funcs�s}���I�a�L�L���H�]�]�]�#�#��-�
	G�
	G�D����Q��� =� =� =� &� 0��A�D� A� A� A�
C�
C�
C���
�6�+=�q�c�A�3�CG�,I�,I�,I�!J�!J� &� 0��A�D� A� A� A�
C�
C�
C�
�w���#�B�L��A�D�$A�$A�$A�$*�$4�Q���$E�$E�$E�G�G�G�#�B�J�v�/A�1�#��s�GK�0M�0M�0M�%N�%N�$*�$4�Q���$E�$E�$E�G�G�G��
	G�
	GrUc�6�tjdd���d��}tjdd���d��}ttt
jg||f�Riddi��ttt
jg||f�Riddi��dSr�)rorrpr�r�rrr�s   rSr�z#TestCorrelate2d.test_invalid_shapes�s���
�I�a��O�O�#�#�F�+�+���I�b�!���$�$�V�,�,���j�&�"4�S��1�v�S�S�S�&�'�AR�S�S�S��j�&�"4�S��1�v�S�S�S�&�'�AR�S�S�S�S�SrUc���ttjdggdgg��d��ttjdggdgg��d��ttjdggdgg��d��dS)NrErcy��rgrCrAy(@)r
rrrs rS�test_complex_inputz"TestCorrelate2d.test_complex_input�sw���V�'�!�����v�6�6��<�<�<��V�'�"���"���7�7��;�;�;��V�'�"���!���6�6��<�<�<�<�<rUN)r�r�r�rlr�ror�rUrSrjrj�sG������G�G�G�&
T�
T�
T�=�=�=�=�=rUrjc�z�eZdZd�Zd�Zej�dej	ej
g��d���ZdS)�
TestLFilterZIc���tjgd���}tjgd���}tjddg��}t||��}t||��dS)N)rVrUr
)rVrrTrrU)rorr$r
)rOrPrQ�zi_expectedrvs     rSrTzTestLFilterZI.test_basic�sc���H�%�%�%�&�&���H�_�_�_�%�%���h��T�{�+�+��
��1�
�
��!�"�k�2�2�2�2�2rUc���tjgd���}tjgd���}t||��}td|zd|z��}t||d���dS)N)rFr�rB)rErEr�rFrr�)rorr$r)rOrQrPr��zi2s     rS�test_scale_invariancez#TestLFilterZI.test_scale_invariance�sk��
�H�Y�Y�Y�����H�Y�Y�Y������A������1��a��c�"�"����S�u�-�-�-�-�-�-rUr�c���tjd|���}tjdg|���}ttjtj||����j|��dS)Nr�r	rE)ror�rr
r�rr$r�)rOr�rQrPs    rSrzzTestLFilterZI.test_types�s\���H�a��&�&�&���H�a�S��&�&�&���R�W�V�.�q�!�4�4�5�5�;�U�C�C�C�C�CrUN)r�r�r�rTrvrorprqror�r�rzr�rUrSrqrq�so������3�3�3�.�.�.��[���W�r�z�2�:�&>�?�?�D�D�@�?�D�D�DrUrqc�B�eZdZdZ		d
d�Zd�Zd�Zd	�Zd
�Zd�Z	d�Z
dS)�TestFiltFilt�tfr��oddNrkc
��|jdkr"t|�\}}	t||	||||||��S|jdkrt|�}
t	|
||||��SdS)Nrz�sos)�
filtfilt_kindr'r%r(r/)rO�zpkrdr�r��padlenrn�irlenrQrPr}s           rSr%zTestFiltFilt.filtfilt�sn�����%�%��3�<�D�A�q��A�q�!�T�7�F�F�E�J�J�J�
�
�5�
(�
(��3�-�C��s�A�t�W�f�=�=�=�)�
(rUc��tgd�gd���}|�|tjd����}t	|td��d���dS)NrDrLg6‹{��=r�)r1r%rorr)rOrr�s   rSrTzTestFiltFilt.test_basic�sU���Y�Y�Y�	�	�	�*�*���m�m�C���2���/�/����V�B�Z�Z�h�7�7�7�7�7�7rUc��d}tjdd|dz��}tjdtjz|z��}tjdtjz|z��}||z}t	ddd	�
��}tj|d�����}d}ttjtj	|��tj	|��z����}	|�
|||	���}
tj|
|z
�����}t|d
k��tj|||zg��}|�
|||	d���}
t|
j|j��tj|
|z
�����}t|d
k��|�
||j|	d���}t|
|j��dS)Ni�rrVrErGi�r���?rr�r�)r�r��r�r�)ror�r�rr&rrr��ceil�logr%r�vstackr
r�rJ)rOrr��xlow�xhighrdr�r�epsr�re�err�x2d�y2d�y2dts               rS�	test_sinezTestFiltFilt.test_sine�s������K��3��q��)�)���v�e�b�e�m�a�'�(�(����w�����*�+�+���5�L���Q��e�,�,�,���F�3�q�6�N�N��� � ����
�����s���b�f�Q�i�i�/�0�0�1�1��
�M�M�#�q��M�+�+���f�Q��X���"�"�$�$����d�
�����i��t�e�|�,�-�-���m�m�C��Q�Q�m�7�7���S�Y��	�*�*�*��f�S�4�Z� � �$�$�&�&����d�
�����}�}�S�#�%���}�:�:���S�$�&�!�!�!�!�!rUc���tjd���ddd��}tddd���}|�||d	d	�
��}|�|tj|d	d��d	d�
��}t
|tj|d	d����|�|tj|d	d��d	d�
��}t
|tj|d	d����dS)
Ng��@rGr�rLr@r�rr�rr�rErF)rorrpr&r%r�r)rOrdr�y0�y1rGs      rS�	test_axiszTestFiltFilt.test_axis	s����I�(�)�)�1�1�"�b�"�=�=���Q��e�,�,�,��
�]�]�3��!�!�]�
4�
4��
�]�]�3���A�q�!� 4� 4�Q�Q�]�
G�
G���2�r�{�2�q�!�4�4�5�5�5�
�]�]�3���A�q�!� 4� 4�Q�Q�]�
G�
G���2�r�{�2�q�!�4�4�5�5�5�5�5rUc��|jdkrdStjddgdtjd����}t|tjd��dd���dS)Nrzr
rErG�+����=r�)r~rr%rorr)rOr�s  rS�test_acoeffzTestFiltFilt.test_acoeff	sY�����%�%��F��o�r�2�h��2�9�R�=�=�9�9����R�Y�r�]�]��U�C�C�C�C�C�CrUc�P�|jdkrtjd��tjddg��}tjdg��}tjddg��}t|||��\}}}t
|d|dgd|dzd	|d
zzd	|dzd|d
zzg��t
||dd|dzzd|dzzd|d
zzd|dz|dzd|dzzd|d
zzg��dS)
Nrz�$gust only implemented for TF systemsrVrTr
rhrrr�rE��?r�)r~ro�skiprorr8r)rOrdrQrPre�z1�z2s       rS�test_gust_simplezTestFiltFilt.test_gust_simple	sH�����%�%��K�>�?�?�?�
�H�c�3�Z� � ���H�c�U�O�O���H�c�4�[�!�!��"�1�a��+�+�	��2�r���A���1����Q�q�T��C��!��H�,�c�!�A�$�h��Q�q�T��.A�B�	D�	D�	D���B�q�E�D��A��J�.��a��d��:�U�1�Q�4�Z�G� ��A��J��A��.��q��t��;�d�1�Q�4�i�G�I�	J�	J�	J�	J�	JrUc���|jdkrtjd��tjd��}d}d}t|||d���}||zdz|z}t
||��dS)	Nrzr�rLrVrT�gustrmrF)r~ror�rorr%r)rOrdrQrPrer�s      rS�test_gust_scalarszTestFiltFilt.test_gust_scalars 	sw�����%�%��K�>�?�?�?�
�I�b�M�M�������Q��1�V�,�,�,���a�C�!�8�a�<����8�$�$�$�$�$rU)r�r{NrkN)r�r�r�r~r%rTr�r�r�r�r�r�rUrSryry�s��������M�>B�%)�>�>�>�>�8�8�8�
 "� "� "�D6�6�6�D�D�D�J�J�J�%�%�%�%�%rUryc��eZdZdZd�ZdS)�TestSOSFiltFiltr}c�V�tj�d���d��}t	dd��D]e}tj|dd���}t|�\}}t|�}t|||��}t||��}t||dd	|z�
���fdS)z1Test equivalence between sosfiltfilt and filtfiltrr�rErC�ffffff�?rr�rzorder=%s)r��err_msgN)ror�rr�rqrr&r'r(r%r/r)	rOrdr(rrQrPr}re�y_soss	         rS�test_equivalencez TestSOSFiltFilt.test_equivalence1	s����I�!�!�!�$�$�*�*�4�0�0���1�a�[�[�	N�	N�E��-��t�E�:�:�:�C��3�<�D�A�q��3�-�C���A�q�!�!�A���Q�'�'�E��A�u�5�*�u�:L�M�M�M�M�M�
	N�	NrUN)r�r�r�r~r�r�rUrSr�r�.	s-�������M�	N�	N�	N�	N�	NrUr�c�T�d�}tt|��t|����dz
}t||��}tj|d|����|z||d����|zf��}t
|||||fdddddd�	�	�	}|\}}	}
}}|d
krtd|z���|d|�}
||d�}t|||ddd�|�
��d
ddd�}t||||
�
��d
}||
|fS)aP
    An alternative implementation of filtfilt with Gustafsson edges.

    This function computes the same result as
    `scipy.signal._signaltools._filtfilt_gust`, but only 1-d arrays
    are accepted.  The problem is solved using `fmin` from `scipy.optimize`.
    `_filtfilt_gust` is significanly faster than this implementation.
    c���tt|��t|����dz
}|d|�}||d�}t||||���d}t|||ddd�|���dddd�}t|||ddd�|���dddd�}	t|||	|���d}
tj||
z
dz��}|S)z-Objective function used in filtfilt_gust_opt.rENrurr�rF)rrCr#ror�)�icsrQrPrd�m�z0f�z0br��y_fb�y_b�y_bf�values            rS�filtfilt_gust_opt_funcz1filtfilt_gust_opt.<locals>.filtfilt_gust_opt_funcF	s�����A����A�����!�#���"�1�"�g���!�"�"�g���a��A�#�&�&�&�q�)���q�!�S���2��Y�3�/�/�/��2�4�4�R�4�8���a��A�d�d��d�G��,�,�,�Q�/���"��5���q�!�S�S�)�)�)�!�,�����t��a�'�(�(���rUrENr�rr�TF)r��xtol�ftol�maxfun�maxiter�full_output�disprz5minimization failed in filtfilt_gust_opt: warnflag=%dr�ru)	rrCr$rorDr�rrr#)rQrPrdr�r�rvr�r^�opt�fopt�niter�funcalls�warnflagr�r�r�res                 rS�filtfilt_gust_optr�=	s^�����	�C��F�F�C��F�F���a��A�	�A�q�	�	�B�
�.�!�B�Q�B�%�*�*�,�,�r�/�1�a�R�S�S�6�;�;�=�=��+;�<�
=�
=�C�
�(�#�Q��1�I��5���"��0�0�0�F�,2�(�C��u�h���!�|�|��)�+3�4�5�5�	5�

�b�q�b�'�C�

�a�b�b�'�C��!�Q��$�$�B�$��C�
(�
(�
(��
+�D�D�b�D�
1�C���1�c�c�"�"�"�1�%�A��c�3�;�rUc��tj�d��tjj|�}t	||||d|���}t|||||���\}}}	tj||d��}
|
jdd�}tj|
��}tt|��t|����dz
}
tj||
fz��}tj||
fz��}td�|D���D]&}t|||
|��\||<||<||<�'tj|d|��}tj|d|��}tj|d|��}t||dd	�
��t||dd	�
��t||dd	�
��t|	|dd	�
��dS)Nr�r�)r�rnr�)r�r�r�rEc�,�g|]}t|����Sr�)rq)r�r�s  rSr�z'check_filtfilt_gust.<locals>.<listcomp>}	s��6�6�6�q�%��(�(�6�6�6rUr�r�r�)ror�r�r�r%r8r�r��
empty_likerrCr`rr�r)rQrPr�r�r�rdre�yg�zg1�zg2�xx�	out_shaper�r��zo1�zo2�indxs                 rS�check_filtfilt_gustr�i	s����I�N�N�3����
�	����A�	��A�q�t�F�%�@�@�@�A�"�!�Q���E�B�B�B�L�B��S�

��Q��b�	!�	!�B����"��
�I�	��r�	�	�B��C��F�F�C��F�F���a��A�
�(�9��t�#�
$�
$�C�
�(�9��t�#�
$�
$�C��6�6�I�6�6�6�7�K�K��):�1�a��D��)J�)J�&��4��#�d�)�S��Y�Y�	��R��T�	"�	"�B�
�+�c�2�t�
$�
$�C�
�+�c�2�t�
$�
$�C��A�r��4�0�0�0�0��B���D�1�1�1�1��C��4�d�3�3�3�3��C��4�d�3�3�3�3�3�3rUc	��dD�]�}dD]�}d\}}}tjj|f|z�}tjj|f|z�}t|||���}t	||��t|||d���\}}	t|dv��tt
|	��tu��td|	���vod	|	���v����d
}dD]a}
tt|
��rJtj
||
���}|���}t	t|||���d	���btjd
gtj
���}|���}t	t|||���d	��td��td��g}td��td��g}t	t|||���d	�����dS)Nr@)rErF)r�rCrlrYT)rZ�measure>rrlrrlrG)r�r�r	l@r@rFrErA)ror�r�r r
rrb�dict�keysr�r[r�rr
r)rZr�r�r`�true_methodrdrrn�
method_try�times�not_fft_conv_supps           rS�test_choose_conv_methodr��	s��)�D�D���	H�	H�D� .��A�q�+��	��1�$��+�/�A��	��1�$��+�/�A�'��1�4�8�8�8�F����-�-�-� 2�1�a�d�D� Q� Q� Q��J���J�"3�3�4�4�4��D��K�K�4�'�(�(�(��E�U�Z�Z�\�\�)�F�h�%�*�*�,�,�.F�G�G�G�G���!=�	L�	L���r�,�-�-�
L��G�A�%6�7�7�7���F�F�H�H���/��1�4�@�@�@�(�K�K�K���H�e�W�B�H�-�-�-��
�F�F�H�H���'��1�4�8�8�8�(�C�C�C�
�Q�Z�Z�����$��
�Q�Z�Z�����$���'��1�4�8�8�8�(�C�C�C�C�7D�DrUc	�Z�tjddddd���\}}}d}tjtj|����}ttjtj|��tj|��z����}tj�	d��t|||��\}}d|fD]I}d	|z}	t|||	fd
|��td��D]}
gd�}|	||
<t||||
|����Jd|zd
z
}t|||fd
|��dS)Nr@�{�G�z�?�xgffffff�?rr�r�r�rBr)rFrFrFrFr)
r�elliprorrr�r�r�r�r�r'r�rq)
rf�pr`r�r��approx_impulse_lenrQrPr��
signal_lenr�r��lengths
             rS�test_filtfilt_gustr��	sF���l�1�d�C���>�>�>�G�A�q�!��C�
��r�v�a�y�y���A��R�W�R�V�C�[�[�2�6�!�9�9�%<�=�=�>�>���I�N�N�3�����!�Q��?�?�D�A�q��*�+�
:�
:���+�+�
�	�A�q�:�-��E�:�:�:��!�H�H�	:�	:�D��I�I�E�$�E�$�K���1�e�T�5�9�9�9�9�	:��!�
!�B�
&�F���1�v�i��,>�?�?�?�?�?rUc�V�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
S)�TestDecimatec��tjd��}tttj|dd���tttj|dd���dS)NrLr
rE)�qr�rF)rorr�r�r�decimaters  rS�
test_bad_argszTestDecimate.test_bad_args�	sK���I�b�M�M���i���!�s�a�@�@�@�@��i���!�q�C�@�@�@�@�@�@rUc��tjd��}tj|dddd������}t||ddd���dS)NrLrFrE�iirF�r��ftype�
zero_phase�rorrr��roundr�rOrdres   rS�test_basic_IIRzTestDecimate.test_basic_IIR�	�U���I�b�M�M���O�A�q�A�U�u�E�E�E�K�K�M�M���1�a���!��f�%�%�%�%�%rUc��tjd��}tj|dddd������}t||ddd���dS)NrLrFrE�firFr�r�r�s   rS�test_basic_FIRzTestDecimate.test_basic_FIR�	r�rUc���tjd��}tj|ddd���}t	|jd��tj|ddd���}t	|jd��dS)	N)rrrFrF)r�r�)rdrrE)rrd)ror�rr�r
r�)rOrf�d0�d1s    rS�
test_shapezTestDecimate.test_shape�	sk���H�X����
�_�Q���e�
<�
<�
<���R�X�x�(�(�(�
�_�Q���e�
<�
<�
<���R�X�x�(�(�(�(�(rUc��t��5}|�td��|�dd���ddd��dS#1swxYwYdS)N�Badly conditioned filterr�F�rnr��rr7r2�_test_phaseshift�rOr:s  rS�test_phaseshift_FIRz TestDecimate.test_phaseshift_FIR�	s���
�
 �
 �	B�C��J�J��(B�C�C�C��!�!��5�!�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	B��3A�A�Ac��t��5}|�td��|�dd���ddd��dS#1swxYwYdS)Nr�r�Tr�r�r�s  rS�test_zero_phase_FIRz TestDecimate.test_zero_phase_FIR�	s���
�
 �
 �	A�C��J�J��(B�C�C�C��!�!��4�!�@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	Ar�c�4�|�dd���dS)Nr�Fr��r�rs rS�test_phaseshift_IIRz TestDecimate.test_phaseshift_IIR�	s!�����U�u��=�=�=�=�=rUc�4�|�dd���dS)Nr�Tr�rrs rS�test_zero_phase_IIRz TestDecimate.test_zero_phase_IIR�	s!�����U�t��<�<�<�<�<rUc	���d}gd�}td��}tj||zdz��t|��z}tj|��dzdz}tjdtjz|dd�tjfz|z��tj	�
|jd��z}|D�]$}	||	z}
tj|	|zdz��t|	��z}tjdtjz|dd�tjfz|z��tj	�
|jd��z}|d	kr3d
}
tjtj
|
dzd|
zd�
��d��}nI|dkrCd}
dtjz|
z}tjtj|
d|tjz���}|durNtj|j|j||zdztjz��\}}|tj|��z}ntj|��}tj|j|
|
||���}tj|���|zd���}|tj|��z}|d|	zk}t1tj|���|z��|ddd�����&dS)Nr�)rdrrr)r�rE皙�����?rFrc皙�����?r�rrVr�r�r�r�g�������?F)r�r�r�r	r
rr�r/)r�rorrerrIrrr�windows�tukeyr��dltir�cheby1�freqzr��denr�	ones_liker�r�r�rTr�angle)rOrnr�rr�t_totr�rr�rr�r�d_tosr��system�wcr��h_respsr�	h_resamps�subnyqs                     rSr�zTestDecimate._test_phaseshift�	s�����#�#�#���C�����I�d�5�j��l�#�#�e�D�k�k�1�����"�"�S�(�1�,��
�V�F�R�U�N�U�1�1�1�b�j�=�%9�9�A�=�
>�
>��~�#�#�A�F�C�0�0�1�� �"	2�"	2�G����A��9�W�U�]�1�_�-�-��g���>�D��V�F�R�U�N�U�1�1�1�b�j�=�-A�A�D�H�I�I��~�+�+�D�I�s�;�;�<�E���������V�]�1�q�5�"�q�&�:C�&E�&E�&E�FH�J�J����5��������Y�q�[����f�m�A�t�R���X�&F�&F�G���U�"�"�#�\�&�*�f�j�*/��*�Q�,�r�u�*<�>�>�
��7��2�6�'�?�?�*����,�u�-�-�������1�F�3=�?�?�?�I���u�z�z�|�|�i�7�b�A�A�A�I����	�*�*�*�I��S��[�(�F�
�B�H�W�\�\�^�^�I�%=�>�>�v�F��!%�D�
2�
2�
2�
2�
2�C"	2�"	2rUc��d}d}tj|��|z}tjd|z��tjdtjz|dzz|z��z}ttj�|��dd���tj	|d	d
���}ttj�|��d��dS)
NgY@r�rTrFg>@rVr�r�rr�)r�r�)ror�sqrtr�rr�linalg�normrr�r)rO�sfreqr�r�rd�x_outs      rS�test_auto_nzTestDecimate.test_auto_n
s��������I�a�L�L�5� ���G�B��F�O�O�b�f�Q���Y�%�#�+�%>��%B�C�C�C����	���q�)�)�2�D�9�9�9�9����2�U�3�3�3���"�)�.�.��/�/��6�6�6�6�6rUc��tjtjdtj���d��}ttj|����rJ�dS)Nr�r	rG)rr�ror[r�r��isnanrs  rS�test_long_float32zTestDecimate.test_long_float32+
sH��
�O�B�G�F�"�*�=�=�=�r�B�B���r�x��{�{�#�#�#�#�#�#�#rUc��tjtjdtj���d��}|jjtjksJ�dS)Nr�r	rG)rr�ror[r�r�rbr�rs  rS�test_float16_upcastz TestDecimate.test_float16_upcast1
sA���O�B�G�C�r�z�:�:�:�B�?�?���w�|�r�z�)�)�)�)�)�)rUN)r�r�r�r�r�r�r�r�r�rrr�rr r"r�rUrSr�r��	s�������A�A�A�
&�&�&�
&�&�&�
)�)�)�B�B�B�
A�A�A�
>�>�>�=�=�=�.2�.2�.2�`
7�
7�
7�$�$�$�*�*�*�*�*rUr�c��eZdZd�Zd�Zd�Zej�de	j
e	jg��d���ZdS)�TestHilbertc���tjdg��}ttt|��tjd��}ttt|d���dS)Nr�r�r�r�)rorr�r�r!rrs  rSr�zTestHilbert.test_bad_args9
sO���H�j�\�"�"���j�'�1�-�-�-��I�c�N�N���j�'�1��2�2�2�2�2�2rUc	�"�d}tj}tjdd|z|dz��}tj|��}tj|��}tjd|z��}tjd|z��}tj||||g��}t
|��}	tj|	��}
tj|	��}tj	|	��}t|||��t|
tj|j��|��t|ddd�ftj|dz|dz|dz��|��t|ddd�ftjd||dz��|��t|ddd�ftj|dz|dz|dz��|��t|ddd�ftjd||dz��|��t|	dj
||��dS)Nr>rrFr�rEr�r@)rorrr�r�r�r!rrr�rr[r�rR)
rOr�rr�r��a1�a2�a3rPr�h_abs�h_angle�h_reals
             rS�test_hilbert_theoreticalz$TestHilbert.test_hilbert_theoretical?
s����
�U���I�a��R���c��*�*��
�V�A�Y�Y��
�V�A�Y�Y��
�V�A��E�]�]��
�V�A��E�]�]���I�r�2�r�2�&�'�'���A�J�J����q�	�	���(�1�+�+��������	�F�A�w�/�/�/��E�2�7�1�7�#3�#3�W�=�=�=�	�G�A�t��t�G�,��I�r�c�A�g�r�A�v�r�C�x�@�@�#�	%�	%�	%�
	��A�t��t�G��b�i��2�r�C�x�8�8�'�	C�	C�	C�	�G�A�t��t�G�,��I�r�c�A�g�r�A�v�r�C�x�@�@�#�	%�	%�	%�	��A�t��t�G��b�i��2�r�C�x�8�8�'�	C�	C�	C�	�A�a�D�I�r�7�3�3�3�3�3rUc�$�tjd���dd��}t|d���}t	t|jd���|j��t
t|d��|dd��t|dd�	��}t	|jddg��t	t|jdd�	��jddg��tjgd
���}t
|d|dd��dS)Nr`r@rCr�r	rr>r)r�r�)yBm}�ą��y�?���a�y�������?��0f���y@W�a�94�y@"n�W�y@�h�IX@y�������<�nm���@y�F�8���O2k{��?y��������ډo��P�?y�����̼��YC��?y433333�<c4�Q�e�?y�Ȓ40���p$�?y��������E�S�U�?yffffff�<�?���7�?y433333�<wE�o����y�!5P����{�3'ſy_�N@տy�������<�}��ٿy�������<��-c�y�F�8�<��2OW\�zN regression)	rorrpr!r
rJrr�r)rOrP�aa�aan�a0hilbs     rS�test_hilbert_axisNzTestHilbert.test_hilbert_axisNh
s
���I�b�M�M�!�!�!�Q�'�'��
�Q�R�
 �
 �
 ���W�Q�S�q�)�)�)�2�4�0�0�0��G�A�a�D�M�M�2�a�5�"�5�5�5��a�2�B�'�'�'���S�Y��B��(�(�(��W�Q�S�B�Q�/�/�/�5��A�w�?�?�?���F�F�F�G�G��(	�C��F�F�B��?�?�?�?�?rUr�c��tjd|���}ttjt	j|����j|��dS)Nr�r	)ror�r
r�rr!r�rxs   rS�test_hilbert_typeszTestHilbert.test_hilbert_types�
sC���8�A�U�+�+�+���R�W�V�^�H�5�5�6�6�<�e�D�D�D�D�DrUN)
r�r�r�r�r.r3rorprqror�r�r5r�rUrSr$r$7
s�������3�3�3�'4�'4�'4�R#@�#@�#@�J�[���W�r�z�2�:�&>�?�?�E�E�@�?�E�E�ErUr$c�t�eZdZd�Zej�dejej	g��d���Z
dS)�TestHilbert2c���tjdgg��}ttt|��tjd���ddd��}ttt|��tjd���dd��}ttt|d���ttt|d	���ttt|d
���dS)Nr�r'rFr@rAr}rr&)rFr)rF)rorr�r�r"rrprs  rSr�zTestHilbert2.test_bad_args�
s����H�z�l�^�$�$���j�(�A�.�.�.�
�I�b�M�M�!�!�!�Q��*�*���j�(�A�.�.�.�
�I�b�M�M�!�!�!�Q�'�'���j�(�A��3�3�3�3��j�(�A��8�8�8�8��j�(�A��6�6�6�6�6�6rUr�c��tjd|���}ttjt	j|����j|��dS)N)rFrJr	)ror�r
r�rr"r�rxs   rS�test_hilbert2_typesz TestHilbert2.test_hilbert2_types�
sC���8�G�5�1�1�1���R�W�V�_�X�6�6�7�7�=�u�E�E�E�E�ErUN)r�r�r�r�rorprqror�r�r:r�rUrSr7r7�
s`������
7�
7�
7��[���W�r�z�2�:�&>�?�?�F�F�@�?�F�F�FrUr7c��eZdZedd���Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�ZdS)�TestPartialFractionExpansionr|c��tj|��}tj|��}tjt|dd�df|z
��t|dd�df|z
����}t	|��\}}t|||||���t|||||���dS)Nr�)ror_�hypotrrr)r�r��r_true�p_truer��distance�rows�colss        rS�assert_rp_almost_equalz3TestPartialFractionExpansion.assert_rp_almost_equal�
s�����F�#�#����F�#�#���8�C��!�!�!�T�'�
�V� 3�4�4���!�!�!�T�'�
�V� 3�4�4�6�6��+�8�4�4�
��d��A�d�G�V�D�\�7�C�C�C�C��A�d�G�V�D�\�7�C�C�C�C�C�CrUc�^�tgd�gd���\}}tt|��d��t|dt	jgd�����t|dt	jgd�����t|dt	jgd	�����t|t	jgd
�����tgd�gd�d���\}}tt|��d
��t|dt	jgd�����t|dt	jgd�����t|dt	jgd�����t|dt	jgd�����t|dt	jgd�����t|dt	jgd	�����t|t	jgd
�����dS)NrDr�r@r)rFrFr@rE)rErErEr@rF)rErErErFrF)rErErErFrFr@T)�include_powersrC)rErErFrFr@)rErFrFr@)rErErErFr@rArB)r9r
rCrro�poly)rO�factorsrGs   rS�test_compute_factorsz1TestPartialFractionExpansion.test_compute_factors�
s���(����I�I�I�>�>�
����S��\�\�1�%�%�%��G�A�J���	�	�	�(:�(:�;�;�;��G�A�J������(=�(=�>�>�>��G�A�J������(@�(@�A�A�A��D�"�'�*<�*<�*<�"=�"=�>�>�>�(����I�I�I�8<�>�>�>�
����S��\�\�1�%�%�%��G�A�J������(@�(@�A�A�A��G�A�J������(=�(=�>�>�>��G�A�J���	�	�	�(:�(:�;�;�;��G�A�J������(@�(@�A�A�A��G�A�J������(=�(=�>�>�>��G�A�J������(@�(@�A�A�A��D�"�'�*<�*<�*<�"=�"=�>�>�>�>�>rUc�z�tgd�dd��\}}t|gd���t|gd���dS)N)rVgj�t��?g?5^�I�?rTg�/�$@rVr�minrr�)r:r
�rO�unique�multiplicitys   rS�test_group_polesz-TestPartialFractionExpansion.test_group_poles�
sQ��+�0�0�0�#�u� >� >�����V�_�_�_�-�-�-��\�9�9�9�-�-�-�-�-rUc���tgd�gd���\}}}t|gd�d���t|gd�d���t|dgd���tdd	ggd
���\}}}t|d	dg��t|ddg��t|jd
��tddggd���\}}}t|ddg��t|ddg��t|jd
��tddggd���\}}}|�||gd�gd���t|jd
��tddggd���\}}}|�||gd�gd���t|jd
��tgd�gd���\}}}t|gd���t|gd���t|ddg��tdggd���\}}}t|ddg��t|dd g��t|jd
��tgd!�gd"���\}}}|�||gd#�gd$���t|jd
��tgd%�gd&���\}}}|�||gd'�gd(���t|jd
��tddggd)���\}}}t|dd*g��t|ddg��t|jd
��tgd+�gd)���\}}}t|dd,g��t|ddg��t|dg��tgd-�gd)���\}}}t|d.d/g��t|ddg��t|d0d1g��tgd+�gd2���\}}}|�||gd3�gd4���t|jd
��dS)5N�rBr@r�r|�r�rr�r@)gZd;�O�?g��9#J�g&䃞ͪ��rAr�)g�-���1ڿg�e��a��gvq
�-�?g�r�r��rErCr�i�r�rrE)rEr�r�r@r�rF)rFg333333�g�G�z��?g�C�l�ٿ)y 2�@*�y 2�@*@g B@)y�?������ɿy�?�������?gffffff�?)rErBr�rA)r�rEr@)r�r�r�)r@g�������g)\��(�?g^�I+�g� �rh��?)rEgffffff�g�Q���g�~j�t��?)���rArE)r�g333333ӿr)rErFrTr��пrT)rErr�)rErrrr�)rEy�?y���r�)r����r�rE)r@r�rC�rEr@r@rErD�r�r�r�)rErTrFrB)rFr@r�rs)r|rFr@r�r��Er|rK)rErTrAr�)rAy�@y��)rE��?�r`)r5rr
r�rD�rOr�r�r`s    rS�test_residue_generalz1TestPartialFractionExpansion.test_residue_general�
s����-�-�-����7�7���1�a��A�9�9�9�1�E�E�E�E��A�9�9�9�1�E�E�E�E��A��y�!�4�4�4�4��2�q�'�9�9�9�-�-���1�a��A��3�x�(�(�(��A��B�x�(�(�(��Q�V�Q�����1�a�&�+�+�+�.�.���1�a��A��1�v�&�&�&��A��A�w�'�'�'��Q�V�Q�����1�a�&�"9�"9�"9�:�:���1�a��#�#�
�q�?�?�?�)�)�)�	+�	+�	+�	�Q�V�Q�����1�a�&�,�,�,�/�/���1�a��#�#�A�q�*�*�*�l�l�l�C�C�C��Q�V�Q�����8�8�8�1�1�1�3�3���1�a��A�z�z�z�*�*�*��A�/�/�/�0�0�0��A��1�v�&�&�&��1�#�z�z�z�*�*���1�a��A��e�}�-�-�-��A��2�w�'�'�'��Q�V�Q�����*�*�*�&6�&6�&6�7�7���1�a��#�#�A�q�$8�$8�$8�:J�:J�:J�	L�	L�	L��Q�V�Q�����)�)�)�\�\�\�2�2���1�a��#�#�A�q�)�)�)�\�\�\�B�B�B��Q�V�Q�����1�b�'�:�:�:�.�.���1�a��A��A�w�'�'�'��A��1�v�&�&�&��Q�V�Q�����*�*�*�j�j�j�1�1���1�a��A��B�x�(�(�(��A��1�v�&�&�&��A��s�#�#�#��-�-�-����4�4���1�a��A��R�y�)�)�)��A��1�v�&�&�&��A��2�w�'�'�'��*�*�*�n�n�n�5�5���1�a��#�#�A�q�*C�*C�*C�$7�$7�$7�	9�	9�	9��A�F�A�&�&�&�&�&rUc���tgd�gd���\}}}tgd�gd���\}}}tgd�gd���\}}}	tgd�gd���\}
}}t||��t||��t||
��t||��t||��t||��t||��t||	��t||��dS)NrQrR)rrBr@r�r|)rr�rr�r@)rrrBr@r�r|)rrrr�rr�r@)r5r�
rO�r0�p0�k0�r1�p1�k1�r2�p2�k2�r3�p3�k3s
             rS�test_residue_leading_zerosz7TestPartialFractionExpansion.test_residue_leading_zeross���]�]�]�M�M�M�:�:�
��B���-�-�-�}�}�}�=�=�
��B���]�]�]�,<�,<�,<�=�=�
��B���0�0�0�2H�2H�2H�I�I�
��B���B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#�#�#rUc���tddggd���\}}}t|ddg��t|ddg��t|jd��tdd��\}}}t|jd��t|jd��t|jd��t	jtd���5tdd��ddd��dS#1swxYwYdS)NrrSr�r�rE�Denominator `a` is zero.r2)r5rr
r�ror	r�r[s    rS�test_resiude_degeneratez4TestPartialFractionExpansion.test_resiude_degenerate$s)���1�a�&�)�)�)�,�,���1�a��A��1�v�&�&�&��A��B�x�(�(�(��Q�V�Q�����!�Q�-�-���1�a��Q�V�Q�����Q�V�Q�����Q�V�Q����
�]�:�-G�
H�
H�
H�	�	��A�q�M�M�M�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�C�C"�%C"c�*	�tgd�gd���\}}}|�||gd�gd���t|dg��tgd�gd���\}}}|�||dd	gd
dgd�
��t|dgd�
��tddggd���\}}}t|ddg��t|ddg��t|jd��tgd�gd���\}}}|�||gd�gd���t|jd��tgd�gd���\}}}t|ddg��t|ddg��t|ddg��tdggd���\}}}|�||gd �gd!���t|jd��tddgtjdd"gdd#g����\}}}t|d$d%g��t|d&dg��t|jd��tgd'�ddg��\}}}t|dg��t|dg��t|ddg��tddd(g��\}}}t|dg��t|d)g��t|jd��tdgd*���\}}}t|ddg��t|ddg��t|jd��tdgd+���\}}}t|ddg��t|d#dg��t|jd��tgd,�gd'���\}}}t|d-d.g��t|ddg��t|dg��td/dggd'���\}}}t|d0d1g��t|ddg��t|jd��tgd�gd'���\}}}t|d2d3g��t|ddg��t|d4dg��tgd5�gd6���\}}}|�||gd7�gd8�d�
��t|jd��dS)9N)rErCrCrF)rEy��r�rV)y�@y@@y�(�)r�rErErc)rErFrE)rEr�g'†�W��?y	�c��
�-����y	�c��
�-���@y�?*��D��?y�?*��D�ԿrAr�g�ŏ1w@rEr�)rEr�rCrFr@rrzrW)rAr�r@rX)rErtr�rA)rFr�r�r
g����?r`)r`r@r�r�)g
ףp=
�?g���Q��?皙�����?)r
�UUUUUUտrrrhr�g������
�gUUUUUU@rU�rEr�rErVr�)rEr�r�)rEg�r�)rErCrFrtrrCr�r�i��rdrGrQ)rErrrrr�)yo��T��?c�=yX�?yo��T��?c�=yXȿrqyjM�?%u���yjM�?%u��?)y��S��s��A��?y��S��s��A��rVy-�����?8gDio�?y-�����?8gDio�)r6rDrr
r�ro�polymulr[s    rS�test_residuez_generalz2TestPartialFractionExpansion.test_residuez_general3sg���<�<�<�)F�)F�)F�G�G���1�a��#�#�A�q�*G�*G�*G�$.�J�J�	0�	0�	0��A��t�$�$�$��9�9�9�o�o�o�6�6���1�a��#�#�A�q�%6�8I�$J�%2�M�$B�,-�	$�	/�	/�	/�	�A��x��3�3�3�3��A�r�7�J�J�J�/�/���1�a��A��A�w�'�'�'��A��1�v�&�&�&��Q�V�Q�����9�9�9�l�l�l�3�3���1�a��#�#�A�q�*�*�*�l�l�l�C�C�C��Q�V�Q�����?�?�?�K�K�K�8�8���1�a��A��T�{�+�+�+��A��A�w�'�'�'��A��R�y�)�)�)��B�4����1�1���1�a��#�#�A�q�$5�$5�$5�7H�7H�7H�	J�	J�	J��Q�V�Q�����A�q�6�2�:�q�$�i�!�S��#B�#B�C�C���1�a��A��t�}�-�-�-��A��s�|�,�,�,��Q�V�Q�����:�:�:��2�w�/�/���1�a��A��s�#�#�#��A��s�#�#�#��A��2�w�'�'�'��1�q�#�h�'�'���1�a��A��s�#�#�#��A��t�$�$�$��Q�V�Q�����1�m�m�m�,�,���1�a��A��1�v�&�&�&��A��S�z�*�*�*��Q�V�Q�����1�.�.�.�/�/���1�a��A��A�w�'�'�'��A��c�{�+�+�+��Q�V�Q�����9�9�9�j�j�j�1�1���1�a��A��Q�x�(�(�(��A��1�v�&�&�&��A��s�#�#�#��A�q�6�:�:�:�.�.���1�a��A��A�w�'�'�'��A��1�v�&�&�&��Q�V�Q�����<�<�<����4�4���1�a��A��R�y�)�)�)��A��1�v�&�&�&��A��A�w�'�'�'��9�9�9�&9�&9�&9�:�:���1�a��#�#�A�q�%N�%N�%N�%N�%N�%N�,-�	$�	/�	/�	/�	�Q�V�Q�����rUc���tgd�gd���\}}}tgd�gd���\}}}tgd�gd���\}}}	tgd�gd���\}
}}t||��t||��t||
��t||��t||��t||��t||��t||	��t||��dS)NrQrR)rBr@r�r|r)r�rr�r@r)rBr@r�r|rr)r�rr�r@rrr)r6rr^s
             rS�test_residuez_trailing_zerosz9TestPartialFractionExpansion.test_residuez_trailing_zeros�s���m�m�m�]�]�]�;�;�
��B���.�.�.�
�
�
�>�>�
��B���m�m�m�-=�-=�-=�>�>�
��B���1�1�1�3I�3I�3I�J�J�
��B���B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#��B��#�#�#�#�#rUc�`�tddggd���\}}}t|ddg��t|ddg��t|jd��tdd��\}}}t|jd��t|jd��t|jd��t	jtd���5tdd��ddd��n#1swxYwYt	jtd���5tdgd	���ddd��dS#1swxYwYdS)
NrrSr�r�rErmr2z6First coefficient of determinant `a` must be non-zero.r�)r6rr
r�ror	r�r[s    rS�test_residuez_degeneratez5TestPartialFractionExpansion.test_residuez_degenerate�s����A�q�6�9�9�9�-�-���1�a��A��1�v�&�&�&��A��B�x�(�(�(��Q�V�Q�����1�a�.�.���1�a��Q�V�Q�����Q�V�Q�����Q�V�Q����
�]�:�-G�
H�
H�
H�	�	��Q��N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��]�:�"0�1�1�1�	&�	&�
�Q����%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s$�C�C!�$C!�D#�#D'�*D'c��gd�}gd�}g}gd�}gd�}dD]n}t||||���\}}t||��t||��t||||���\}}t||��t||���odS)N)r�UUUUUUſg��)rr�r�)rrEr@)rEr|rGr��avgr�rKr�rr���rtype�r)rr*)	rOr�r�r`�
b_expected�
a_expectedrrQrPs	         rS�*test_inverse_unique_roots_different_rtypeszGTestPartialFractionExpansion.test_inverse_unique_roots_different_rtypes�s���%�%�%���K�K�����Y�Y�
�"�]�]�
�I�	+�	+�E��!�Q���/�/�/�D�A�q��A�z�*�*�*��A�z�*�*�*��1�a��%�0�0�0�D�A�q��A�z�*�*�*��A�z�*�*�*�*�	+�	+rUc��gd�}gd�}g}gd�}gd�}gd�}dD]r}t||||���\}}	t||d�	��t|	|��t||||���\}}	t||d�	��t|	|���sdS)
N�g333333�?g9��8��ȿr{gl�l��?�rr�r�r�)rrrEr@)r{gUUUUUU�gUUUUUU�?r@)rErr'rrr|r~r�r�r�)
rOr�r�r`r��b_expected_zr�rrQrPs
          rS�,test_inverse_repeated_roots_different_rtypeszITestPartialFractionExpansion.test_inverse_repeated_roots_different_rtypes�s���-�-�-���O�O����!�\�\�
�,�,�,��&�&�&�
�H�	+�	+�E��!�Q���/�/�/�D�A�q��A�z��6�6�6�6��A�z�*�*�*��1�a��%�0�0�0�D�A�q��A�|�%�8�8�8�8��A�z�*�*�*�*�	+�	+rUc�4�gd�}gd�}g}tjtd���5t|||d���ddd��n#1swxYwYtjtd���5t	|||d���ddd��dS#1swxYwYdS)Nr�r�z`rtype` must be one ofr2r�r~)ror	r�r)r*r[s    rS�test_inverse_bad_rtypez3TestPartialFractionExpansion.test_inverse_bad_rtype�s.��-�-�-���O�O����
�]�:�-E�
F�
F�
F�	,�	,��1�a��(�+�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�]�:�-E�
F�
F�
F�	-�	-��A�q�!�8�,�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s#�A�A
�
A
�,B
�
B�Bc��dg}dg}dg}t|||��\}}t|dg��t|ddg��dS)NrErFrrVg�)r*r)rOr�r�r`rQrPs      rS� test_invresz_one_coefficient_bugz=TestPartialFractionExpansion.test_invresz_one_coefficient_bug�sX��
�C��
�C��
�C���q�!�Q�����1���C�5�!�!�!���C��;�'�'�'�'�'rUc�`�tdgdgg��\}}t|dg��t|ddg��tgd�gd�g��\}}t|gd���t|gd���tddgdd	ggd
���\}}t|gd���t|gd���tgd
�gd�g��\}}t|gd���t|gd���tddgddgddg��\}}t|gd���t|gd���dS)NrEr��rZrF��?��rEr�r`�y@�y!��?y@
@�rEy���y�?@y�?�r
rZr�rD)rE����?�r�rG�rE���rA�r�rFr�r�rAr��r�r�r�r@r@r@)y@�y<�0@yD@O�yY@8@y@r�`k@yh@�p��rEy(�@y�J@4�yX�Q@y;@R�y[@K�y@T�[@r�rF)rErr�rbrs)r)r�rOrQrPs   rS�test_invresz(TestPartialFractionExpansion.test_invres�s����q�c�A�3��#�#���1��A��s�#�#�#��A��2�w�'�'�'��+�+�+�->�->�->��C�C���1��A�D�D�D�E�E�E��A�C�C�C�D�D�D��s�A�h��� 0�)�)�)�<�<���1��A�A�A�A�B�B�B��A����/�/�/��0�0�0�3�3�3�R�9�9���1��A� 9� 9� 9�	:�	:�	:��A� 7� 7� 7�	8�	8�	8��r�2�h��A���A��/�/���1��A�1�1�1�2�2�2��A�z�z�z�*�*�*�*�*rUc�`�tdgdgg��\}}t|dg��t|ddg��tgd�gd�g��\}}t|gd���t|gd���tddgdd	ggd
���\}}t|gd���t|gd���tgd
�gd�g��\}}t|gd���t|gd���tddgddgddg��\}}t|gd���t|gd���dS)NrEr�r�r�r�r�r
rZr�rD)g@r�r�y��rLr�r�r�)rCyI�&@yY@R�yT@M@y v��l@y@m@�r�r�r�rF)r�rErTrFrs)r*rr�s   rS�test_invreszz)TestPartialFractionExpansion.test_invresz�s�����s�Q�C��$�$���1��A��s�#�#�#��A��2�w�'�'�'��,�,�,�.?�.?�.?��D�D���1��A�D�D�D�E�E�E��A�C�C�C�D�D�D���Q�x�&�&�!1�9�9�9�=�=���1��A�B�B�B�C�C�C��A����/�/�/��1�1�1�4�4�4�b�:�:���1��A� 9� 9� 9�	:�	:�	:��A� 7� 7� 7�	8�	8�	8���B�x�!�Q��!�Q��0�0���1��A�~�~�~�.�.�.��A�z�z�z�*�*�*�*�*rUc���tddd��\}}t|ddg��t|ddg��tddd��\}}t|ddg��t|ddg��dS)NrErr�rF)r)rr*r�s   rS�test_inverse_scalar_argumentsz:TestPartialFractionExpansion.test_inverse_scalar_argumentss����a��A�����1��A��1�v�&�&�&��A��2�w�'�'�'��q�!�Q�����1��A��2�w�'�'�'��A��2�w�'�'�'�'�'rUN)r|)r�r�r��staticmethodrDrIrOr\rkrnrurwryr�r�r�r�r�r�r�r�rUrSr<r<�
s�������	D�	D�	D��\�	D�?�?�?�&.�.�.�B'�B'�B'�H$�$�$� 
�
�
�O �O �O �b$�$�$�"&�&�&�&+�+�+�&+�+�+�"-�-�-�(�(�(�+�+�+�0+�+�+�0(�(�(�(�(rUr<c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�TestVectorstrengthc��tjdg��}d}d}d}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)Nr
rrVrrrF�rorr+r
r�rr�rO�events�period�
targ_strength�
targ_phase�strength�phases       rS�test_single_1dperiodz'TestVectorstrength.test_single_1dperiods�����2�$�������
��
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc�J�tjdg��}gd�}dgdz}tjgd���}t||��\}}t|jd��t|jd��t||��t
|dtjz|z��dS)Nr
)rErFrrVr@)r
r�rrErF)rorr+r
r�r
rrr�s       rS�test_single_2dperiodz'TestVectorstrength.test_single_2dperiod's�����2�$����������q��
��X�m�m�m�,�,�
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#�!�(�M�:�:�:��E�1�r�u�9�z�#9�:�:�:�:�:rUc��tjgd���}d}d}d}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)N�r�r�r�r�r�r�rFrVr�rr�r�s       rS�test_equal_1dperiodz&TestVectorstrength.test_equal_1dperiod4s�����8�8�8�9�9�����
��
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc�L�tjgd���}ddg}dgdz}tjddg��}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)Nr�rErFrVr�r�r�r�s       rS�test_equal_2dperiodz&TestVectorstrength.test_equal_2dperiodAs�����8�8�8�9�9���Q�����q��
��X�s�D�k�*�*�
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc��tjgd���}d}d}d}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)N�rg�������?g������@gffffff@g333333$@rErVrrrFr�r�s       rS�test_spaced_1dperiodz'TestVectorstrength.test_spaced_1dperiodNs�����3�3�3�4�4�����
��
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc�L�tjgd���}ddg}dgdz}tjddg��}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)Nr�rEr
rVrFrr�r�r�s       rS�test_spaced_2dperiodz'TestVectorstrength.test_spaced_2dperiod[s�����3�3�3�4�4���R�����q��
��X�r�2�h�'�'�
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc��tjgd���}d}d}d}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)N�r�r
��?rE�UUUUUU�?r
rrFr�r�s       rS�test_partial_1dperiodz(TestVectorstrength.test_partial_1dperiodhs�����.�.�.�)�)�����
��
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc�L�tjgd���}gd�}dgdz}tjgd���}t||��\}}t|jd��t|jd��t||��t|dtjz|z��dS)Nr�)rVrVrVrVr�rA)r
r
r
r
rErFr�r�s       rS�test_partial_2dperiodz(TestVectorstrength.test_partial_2dperiodus�����.�.�.�)�)��!�!�!�� �	�A�
�
��X�.�.�.�/�/�
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4��E�1�r�u�9�z�#9�:�:�:�:�:rUc���tjgd���}d}d}t||��\}}t|jd��t|jd��t||��dS)N�rr�r
r�rVr�rorr+r
r�r�rOr�r�r�r�r�s      rS�test_opposite_1dperiodz)TestVectorstrength.test_opposite_1dperiod�so����+�+�+�,�,�����
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4�4�4rUc���tjgd���}dgdz}dgdz}t||��\}}t|jd��t|jd��t||��dS)Nr�rVrGrrEr�r�s      rS�test_opposite_2dperiodz)TestVectorstrength.test_opposite_2dperiod�s{����+�+�+�,�,���������r�	�
�(���8�8���%��X�]�A�&�&�&��U�Z��#�#�#��H�m�4�4�4�4�4rUc�p�tjddgg��}d}ttt||��dS)NrErFrV�rorr�r�r+�rOr�r�s   rS�test_2d_events_ValueErrorz,TestVectorstrength.test_2d_events_ValueError�s6����A�q�6�(�#�#�����j�.�&�&�A�A�A�A�ArUc�n�d}tjdgg��}ttt||��dS)NrVrEr�r�s   rS�test_2d_period_ValueErrorz,TestVectorstrength.test_2d_period_ValueError�s2������A�3�%�����j�.�&�&�A�A�A�A�ArUc�F�d}d}ttt||��dS)NrVr�r�r�r+r�s   rS�test_zero_period_ValueErrorz.TestVectorstrength.test_zero_period_ValueError�s&�������j�.�&�&�A�A�A�A�ArUc�F�d}d}ttt||��dS)NrVr�r�r�s   rS�test_negative_period_ValueErrorz2TestVectorstrength.test_negative_period_ValueError�s&�������j�.�&�&�A�A�A�A�ArUN)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rUrSr�r�s�������;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�	5�	5�	5�	5�	5�	5�B�B�B�
B�B�B�
B�B�B�
B�B�B�B�BrUr�c��tj|��j}tj|tj��}tj|tj��}t||���|��S)zEConvert TF2SOS, casting to complex128 and back to the original dtype.)ror_r�rr0r-r�)rQrPr�s   rS�cast_tf2sosr��sV��
�J�q�M�M��E�
���B�M�"�"�A�
���B�M�"�"�A��!�Q�<�<���u�%�%�%rUr.c���|jjdkrNtj|jd��j}|�|��|�|��}}t
||||��dS)z1Wrap assert_allclose while casting object arrays.rZrN)r�r�ror�flatr�r)�actual�desiredr�r�r�s     rS�assert_allclose_castr��se��
�|��C�������Q��(�(�.�� �-�-��.�.����u�0E�0E����F�G�T�4�0�0�0�0�0rUrNc���td��td��td��g}td��td��td��g}td��td��td��g}tj|��}|jjdksJ�ttj|t��tj|t��|�t����}|turt||zg|��}nt|||��}td�|D����sJ�t|�t��|�t����|t
urddg}ntdd��g}tj
td���5||d	di�ddd��dS#1swxYwYdS)
NrErFr@rZc3�@K�|]}t|t��V��dSr-)�
isinstancer)r�rds  rS�	<genexpr>z)test_nonnumeric_dtypes.<locals>.<genexpr>�s,����6�6�!�z�!�W�%�%�6�6�6�6�6�6rUrVzmust be at least 1-Dr2rd)rrorr�r�r#rer�r.�allrr-ror	r�)rNrdrQrPr�r�r�s       rS�test_nonnumeric_dtypesr��s���	����W�Q�Z�Z�����,�A�	����W�Q�Z�Z�����,�A�	����W�Q�Z�Z�����,�A�
�����A��7�<�3������b�h�q�%�(�(�"�(�1�e�*<�*<�a�h�h�u�o�o�N�N�G��w����!�a�%��!�$�$�����A�q�!�!���6�6�v�6�6�6�6�6�6�6�6��F�M�M�%�(�(�'�.�.��*?�*?�@�@�@��w����B�x����r�2�����	��z�)?�	@�	@�	@�����d��b������������������������s�	G�G"�%G"�fdgFDGOc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestSOSFiltc���tjddd���|��}tjddg���|��}tjddg���|��}tjgd����|��}t	||��}|jj|ksJ�ttt	||��|��|��tjddg���|��}tjddg���|��}tjgd	����|��}ttt	||��|��|��gd
�}gd�}tj	d��}tj
||f��}d
|_t||��}t|gd���dS)NrrBrCrEr�r
rhriro)rErErr�r�)rErC)rErFrFrFrFrFrFrF)
ror�r�rr�r��charr
r.r[rDr�r)rOr	rdrQrPrlr}res        rS�
test_rank1zTestSOSFilt.test_rank1�s����K��1�a� � �'�'��+�+���H�a��W���$�$�R�(�(���H�c�4�[�!�!�(�(��,�,���h�+�+�+�,�,�3�3�B�7�7���!�Q�����y�~��#�#�#�#�!�'�+�a��*;�*;�Q�"?�"?��E�E�E�
�H�a��V���#�#�B�'�'���H�a��V���#�#�B�'�'���h�*�*�*�+�+�2�2�2�6�6��!�'�+�a��*;�*;�Q�"?�"?��E�E�E��I�I���I�I���G�A�J�J���n�a��V�$�$����	��C��O�O����3�3�3�4�4�4�4�4rUc��d}tjdtj|��dz
tj|�����|��}|�|��}tjddg���|��}tjddg���|��}tjgd�gd�gd�gd�g|���}tjgd	�gd
�gd�gd�g|���}t
t||��|d�
��}t||��t
t||��|d�
��}t||��dS)NrrrEr�r
r�r�r	r�r�r�r�r	)	ror�rVrpr�rr.r�r
)	rOr	r�rdrQrPr�r�res	         rS�
test_rank2zTestSOSFilt.test_rank2�s_�����K��2�7�5�>�>�A�-�r�w�u�~�~�>�>�F�F�u�M�M��
�H�H�R�L�L���H�a��W���$�$�R�(�(���H�c�3�Z� � �'�'��+�+���(�I�I�I�y�y�y�)�)�)�Y�Y�Y�G�!#�%�%�%���(�I�I�I�z�z�z�=�=�=�)�M�M�+�24�6�6�6��
�K��1�%�%�q�q�1�1�1��!�'�1�-�-�-��K��1�%�%�q�q�1�1�1��!�'�1�-�-�-�-�-rUc�\�d}tjdtj|��dz
tj|�����|��}tjddg���|��}tjddg���|��}t
t||��|��}t|j	d��D]N}t|j	d��D]1}t|||ft|||||f�����2�OdS)Nr�rrEr�r
)ror�rVrprr�r.r�rqr�r
r#)	rOr	r�rdrQrPrerrr�s	         rSrezTestSOSFilt.test_rank3

s�����K��2�7�5�>�>�A�-�r�w�u�~�~�>�>�F�F�u�M�M���H�a��W���$�$�R�(�(���H�c�3�Z� � �'�'��+�+��
�K��1�%�%�q�)�)���q�w�q�z�"�"�	K�	K�A��1�7�1�:�&�&�
K�
K��)�!�A�q�D�'�7�1�a��1�a�4��3I�3I�J�J�J�J�
K�	K�	KrUc���tjddd��\}}tjddd��\}}tjddd��\}}tjtj||��|��}tjtj||��|��}	tjtj||ftj||ftj||ff��}
tj�d���|��}t||	|dd�tj
d�����\}}
tj|t||	|dd�|
���d	f}t|t||	|����t|
|dd�tj
d
�����\}}
tj|t|
|dd�|
���d	f}t||��t|
��}
tjd|��}t|
||
���\}}t|tjd����t||
��d|jz|_t!t"t|
||
���|
���}|
jd	d
d
|
jdf|_t!t"t|
||dd�dd�dd�gd�f���t|
||���\}}t|dtjd����t|dd�d	d	dd�f|
��dS)NrFr��lowr�rrrCrurr�r�r�rEr�)rrErEr�)rr&rorr�r_r�r�r�r#r�r�r.r0r[r�r�r�r�)rOr	�b1r(�b2r)�b3r*rQrPr}rd�y_truervr�rerz�zi_nds                  rS�test_initial_conditionsz#TestSOSFilt.test_initial_conditions
s����q�$��.�.���B���q�$��.�.���B���q�$��.�.���B��K���B��+�+�R�0�0���K���B��+�+�R�0�0���h���b�"�f�
�r�u�R��V�}�b�e�B��F�m�D�E�E���I�N�N�2���%�%�b�)�)���Q��1�S�b�S�6�b�h�q�k�k�:�:�:�
�����v�w�q�!�Q�r�s�s�V��;�;�;�A�>�>�?���V�W�Q��1�%5�%5�6�6�6��C��3�B�3��B�H�V�,<�,<�=�=�=�	��r���e�W�S�!�B�C�C�&�R�8�8�8��;�;�<���V�U�+�+�+���_�_���G�A�r�N�N����Q�2�&�&�&���2��Q����
�
�+�+�+��R��$�$�$��1�7�"����j�'�3��b�9�9�9�9����	�	���x��{�A�q�"�(�2�,�7����j�'�3���q�q�q�!�!�!�Q�Q�Q�	�	�	�1�2�	4�	4�	4�	4���Q�5�)�)�)���2��Q�t�W�b�g�a�j�j�1�1�1��R����1�a����
�^�R�0�0�0�0�0rUc��tj�d���ddd���}|�|��}tjddd�	��}t|�}|jd}d
}t|j��}d||<|g|z}tj
|��}t||||���\}	}
t||dd�dd�dd�f||���\}}t||dd�dd�dd�f||���\}
}tj||
f|�
��}t||	dd���t||
dd���t|��}|d
dd
g|_||dd�dd
�dd�fz}t||||���d}t|�\}}t!||��}d
|jd
g|_||dd�dd
�dd�fz}t%|||||���d}t||dd���dS)N�rrB)rFrdr@r�rCr�rr�rErFr�r	r��vIh�%<=r�)ror�rrr�rr&r(r�r
r�r.rDr�r0r'r$r�r#)rOr	rdrr}�	nsectionsr��shp�z0r4rzr�r�rGr�rervrQrP�y_tfs                    rS� test_initial_conditions_3d_axis1z,TestSOSFilt.test_initial_conditions_3d_axis1@
sD��
�I�!�!�#�&�&�.�.�q�!�*�.�E�E��
�H�H�R�L�L���m�A�t�E�2�2�2���s�m���I�a�L�	����1�7�m�m����D�	��k�C���
�X�c�]�]����a�d�r�2�2�2���B���a����2�A�2�q�q�q��k���<�<�<���B���a����1�2�2�q�q�q��k���<�<�<���B�
�N�B��8�$�/�/�/���Q���U�;�;�;�;��R��%�e�<�<�<�<���_�_���q�!�Q�'���
�!�A�A�A�q��s�A�A�A�I�,�
���C���"�-�-�-�a�0���s�|���1�
��1�
�
���r�w��?���
�!�A�A�A�q��s�A�A�A�I�,�
���q�!�Q�T�b�1�1�1�!�4���Q��5�u�=�=�=�=�=�=rUc��tjd|��}tjd��}tjd��}tjt
d���5t
|||d���ddd��n#1swxYwYd|dd�d	f<tjt
d
���5t
|||d���ddd��dS#1swxYwYdS)N)r@rdr@)rArC)rAr@r@rFzshould be all onesr2rE)rvr�rVr@zInvalid zi shape)ror`r�ror	r�r.)rOr	rdr}rvs     rS�test_bad_zi_shapezTestSOSFilt.test_bad_zi_shapen
sW��
�H�Z��$�$���h�v����
�X�l�
#�
#��
�]�:�-A�
B�
B�
B�	+�	+��C��r��*�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+���A�A�A�q�D�	�
�]�:�-?�
@�
@�
@�	+�	+��C��r��*�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s$�A9�9A=�A=�(C	�	C
�C
c�0�tjddd���}t|��}t|t	jd|��|���\}}t
||d���t	j|dd�dd	�f�d
���|dd�d	d�f�d
���z��}t
||d���t|t	jd|��|�	�����\}}t
||d���dS)NrCr�r}r�r)rur�r�r@r�r	)
rr&r0r.ror[r�rVr�r
)rOr	r}rvrerz�ssr�s        rS�test_sosfilt_zizTestSOSFilt.test_sosfilt_ziz
s���m�A�s�5�1�1�1��
��_�_����R�W�R��_�_��4�4�4���2��R��%�0�0�0�0��W�S����B�Q�B��Z�^�^��^�,�,�s�1�1�1�a�b�b�5�z�~�~�2�~�/F�/F�F�
G�
G���Q���/�/�/�/���R�W�R��_�_������=�=�=���2��R��%�0�0�0�0�0�0rUN)
r�r�r�r�r�rer�r�r�r�r�rUrSr�r��s�������5�5�5�4.�.�.�(K�K�K�$1�$1�$1�L,>�,>�,>�\
+�
+�
+�
1�
1�
1�
1�
1rUr�c� �eZdZd�Zd�Zd�ZdS)�TestDeconvolvec�n�gd�}ddg}gd�}tj||��\}}t||��dS)N)rrErrrErErrrFrE)	rrFrErrFr@rErr)r�
deconvolver)rO�original�impulse_response�recorded�	recovered�	remainders      rSrTzTestDeconvolve.test_basic�
sP��+�+�+���q�6��.�.�.��%�0��;K�L�L��	�9��	�8�,�,�,�,�,rUc��ddgddgg}ddg}tjtd���5tj||��\}}ddd��dS#1swxYwYdS)Nrzsignal must be 1-D.r2�ror	r�rr�rOrr�quotientrs     rS�test_n_dimensional_signalz(TestDeconvolve.test_n_dimensional_signal�
s�����F�Q��F�#���q�6��
�]�:�-B�
C�
C�
C�	P�	P�"(�"3�H�>N�"O�"O��H�i�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	P��A�A�Ac��ddg}ddgddgg}tjtd���5tj||��\}}ddd��dS#1swxYwYdS)Nrzdivisor must be 1-D.r2rr	s     rS�test_n_dimensional_divisorz)TestDeconvolve.test_n_dimensional_divisor�
s����q�6����F�Q��F�+��
�]�:�-C�
D�
D�
D�	P�	P�"(�"3�H�>N�"O�"O��H�i�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	PrN)r�r�r�rTrrr�rUrSr�r��
sI������-�-�-�P�P�P�P�P�P�P�PrUr�c��eZdZd�Zd�ZdS)�TestDetrendc��ttgd�����}tgd���}t||��dS)NrD)rrr)r3rr
)rO�	detrended�detrended_exacts   rSrTzTestDetrend.test_basic�
sB���E�)�)�)�,�,�-�-�	��	�	�	�*�*��!�)�_�=�=�=�=�=rUc��tgd���}t|d���}t|d���}t||��dS)N)rE�333333�?rpg�������?g333333@F)�overwrite_dataT)rr3r
)rOrd�
copy_array�inplaces    rS�	test_copyzTestDetrend.test_copy�
sP���)�)�)�*�*���Q�u�5�5�5�
��!�D�1�1�1��!�*�g�6�6�6�6�6rUN)r�r�r�rTrr�rUrSrr�
s2������>�>�>�
7�7�7�7�7rUrc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestUniqueRootsc��gd�}t|��\}}t||d���t|tjt|������dS)N)rUrhrrrrdr��r4rr
ror[rC�rOr�rMrNs    rS�test_real_no_repeatz#TestUniqueRoots.test_real_no_repeat�
sV��(�(�(��+�A�������F�A�r�2�2�2�2��\�2�7�3�q�6�6�?�?�3�3�3�3�3rUc�p�gd�}t|dd���\}}t|gd�d���t|gd���t|dd	���\}}t|gd
�d���t|gd���t|dd���\}}t|gd�d���t|gd���dS)
N)rU�ffffff��{�G�z�皙�����r
rV��������?rrK��tolr)rUr"r
rVrdr��rFrFrErFr)r!r#r
r$r})g333333�g
ףp=
�r
gffffff�?�r4rr
rs    rS�test_real_repeatz TestUniqueRoots.test_real_repeat�
s���6�6�6��+�A�4�u�E�E�E�����F�$;�$;�$;�R�H�H�H�H��\�<�<�<�0�0�0�+�A�4�u�E�E�E�����F�$<�$<�$<�b�I�I�I�I��\�<�<�<�0�0�0�+�A�4�u�E�E�E�����F�$@�$@�$@�"�M�M�M�M��\�<�<�<�0�0�0�0�0rUc��gd�}t|��\}}t||d���t|tjt|������dS)N)rUr���?�?r�rwrdr�rrs    rS�test_complex_no_repeatz&TestUniqueRoots.test_complex_no_repeat�
sV��=�=�=��+�A�������F�A�r�2�2�2�2��\�2�7�3�q�6�6�?�?�3�3�3�3�3rUc�p�gd�}t|dd���\}}t|gd�d���t|gd���t|dd	���\}}t|gd
�d���t|gd���t|dd���\}}t|gd�d���t|gd���dS)
N)rU�𿚙�����?�ffffff�333333�?��������333333�?rr+��������?�������?rrKr%)rUr/rr1rdr�r'r)r.r0rr+r})y𿚙�����?y�������333333�?ryffffff�?�������?r(rs    rS�test_complex_repeatz#TestUniqueRoots.test_complex_repeat�
s��
'�
'�
'�� ,�A�4�u�E�E�E�����F�$L�$L�$L�$&�	(�	(�	(�	(��\�<�<�<�0�0�0�+�A�4�u�E�E�E�����F�J�J�J�$&�	(�	(�	(�	(�	�\�<�<�<�0�0�0�+�A�4�u�E�E�E������H�H�H��	�	�	�	�	�\�<�<�<�0�0�0�0�0rUc�\�tjtjtjd��tjd������}gd�}t	|��\}}tj|��}t
tj|��|d���t|gd���dS)NrB)y��w��^Zu#��y��w��_Zu#��?yN�/7���?UDo�yP�/7���?�TDo�?r|r�)rFrFrFrF)ro�rootsrr[r4�sortrr
)rOr��
true_rootsrMrNs     rS�test_gh_4915zTestUniqueRoots.test_gh_4915�
s����H�R�[������R�W�Q�Z�Z�8�8�9�9��K�K�K�
�+�A�������������B�G�F�O�O�Z��C�C�C�C��\�<�<�<�0�0�0�0�0rUc���tgd���\}}t|ddgd���t|ddg��tgd�d	�
��\}}t|ddgd���t|ddg��dS)N)rVr�rVrVr�rdr�rFrE)rEg_p��?���&�.>�?r)r&r9r(rLs   rS�test_complex_roots_extraz(TestUniqueRoots.test_complex_roots_extra�
s���+�,<�,<�,<�=�=�����F�S�$�K��<�<�<�<��\�A�q�6�*�*�*�+�,D�,D�,D�#�N�N�N�����F�S�+�$6��C�C�C�C��\�A�q�6�*�*�*�*�*rUc��tj�d��dtj�d��zz}t|d��\}}t	|tj|��gd���t
|dg��dS)Nr�r�rFrdr�)ror�r�r4rrKr
rs    rS�test_single_unique_rootz'TestUniqueRoots.test_single_unique_root�
sx���I�N�N�3���"�r�y�~�~�c�':�':�":�:��+�A�q�1�1�����F�R�V�A�Y�Y�K��<�<�<�<��\�C�5�)�)�)�)�)rUN)
r�r�r�rr)r,r2r7r:r<r�rUrSrr�
s}������4�4�4�
1�
1�
1�4�4�4�1�1�1�*1�1�1�+�+�+�*�*�*�*�*rUrr-)r.r)�r��concurrent.futuresrrr�r�	itertoolsr�mathrror	r��
numpy.testingr
rrr
rrrr�numpyrrro�	scipy.fftrrcr�scipy.optimizerr�scipyr�scipy.signalrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6�scipy.signal.windowsr7�scipy.signal._signaltoolsr8r9r:�scipy.signal._upfirdnr;�
scipy._libr<r>r�rrsr�rrr&r)r+rLr_r�r=r�r?rOrTr�r�r�r�r�r�r�rrrrprqr�r�r�r�r�r�r�r�r�r�rr8rL�csingler�r�rNrjrqryr�r�r�r�r�r�r$r7r<r�r�r�r�r�r�rrr�rUrS�<module>rKs��
�
�
�
�?�?�?�?�?�?�?�?�������������������
�
�
�
�*�*�*�*�*�*���������������������
 ������������������%�%�%�%�%�%�6�6�6�6�6�6�6�6�����������������������������������������������������������������������&�%�%�%�%�%�4�4�4�4�4�4�4�4�4�4�0�0�0�0�0�0�!�!�!�!�!�!�eO�eO�eO�eO�eO�eO�eO�eO�Pq4�q4�q4�q4�q4�=�q4�q4�q4�hL�L�L�L�L�L�L�L�D?"�?"�?"�?"�?"�_�?"�?"�?"�DhL�hL�hL�hL�hL�hL�hL�hL�T3�3�3����

C�
C�
C����
E!�E!�E!�E!�E!�E!�E!�E!�PM"�M"�M"�M"�M"�M"�M"�M"�`K-�K-�K-�K-�K-�K-�K-�K-�\L�L�L�L�L�L�L�L�C�B�B���>�!��K6�K6�K6�K6�K6�K6�K6�K6�\*�*�*�*�*�*�*�*�>&�&�&�&�&�&�&�&�A�A�A�A�A�A�A�A�H�����/���������/���������$5��������� 1���������!2���������&7���������/���������.����
F�F�F�K�K�K�
�������"�'�2�9�b�h� "���b�l�B�L� "�
�B�J��
� '� )�*�*�s"�s"�s"�s"�s"�s"�s"�	*�*�s"�l*=�*=�*=�*=�*=�*=�*=�*=�Z�����!:�!:�!:�;�;������D�%�=�1�1������'K�'K�'K�L�L�0�0�M�L�2�1�<�;�0�2������
�B�J���G�H�H�\=�\=�\=�\=�\=�\=�\=�I�H�\=�~$=�$=�$=�$=�$=�$=�$=�$=�ND�D�D�D�D�D�D�D�2]%�]%�]%�]%�]%�]%�]%�]%�@N�N�N�N�N�l�N�N�N�)�)�)�X4�4�4�4�@D�D�D�>@�@�@�>m*�m*�m*�m*�m*�m*�m*�m*�`YE�YE�YE�YE�YE�YE�YE�YE�xF�F�F�F�F�F�F�F�.k(�k(�k(�k(�k(�k(�k(�k(�\RB�RB�RB�RB�RB�RB�RB�RB�j&�&�&�1�1�1�1������'�7�!3�4�4���5�4��.�����y�)�)�k1�k1�k1�k1�k1�k1�k1�*�)�k1�\P�P�P�P�P�P�P�P�.7�7�7�7�7�7�7�7�H*�H*�H*�H*�H*�H*�H*�H*�H*�H*rU

Youez - 2016 - github.com/yon3zu
LinuXploit