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/interpolate/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

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

d�c����ddlZddlmZmZmZddlmZddlZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZmZmZmZmZmZddlmZddlmZmZm Z m!Z!m"Z"ddl#m$cm%Z&ddl'Z'Gd�d��Z(d�Z)d	�Z*d
�Z+d�Z,d�Z-d
�Z.dd�Z/dd�Z0d�Z1Gd�d��Z2Gd�d��Z3d�Z4d d�Z5Gd�d��Z6d�Z7Gd�d��Z8dS)!�N)�assert_equal�assert_allclose�assert_)�raises)�BSpline�BPoly�PPoly�make_interp_spline�make_lsq_spline�_bspl�splev�splrep�splprep�splder�
splantider�sproot�splint�insert�CubicSpline�make_smoothing_spline)�_not_a_knot�_augknt�_woodbury_algorithm�_periodic_knots�_make_interp_per_full_matrc�n�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�Zd�Zd�Zd�Zej �!de"dd����d ���Z#d!�Z$d"�Z%ej �!d#gd$���ej �!d%e"d&����d'�����Z&d(�Z'd)�Z(d*�Z)ej �!d+gd,���d-���Z*ej �!d+gd,���d.���Z+d/�Z,d0S)1�TestBSplinec
��tttftfit	ddgdgd�����tjd���5tttfit	dt
jgdgd�����ddd��n#1swxYwYtttfit	dt
jgdgd�����tttfit	ddgdgd�����tttfit	dgdggdgd�����tttfit	gd	�dgd�����tttfit	gd
�ddgd�����tttfit	gd�gd
�d�����tttfit	gd�gd
�d�����tttfit	gd�gd�d�����d\}}tj	||zdz��}t
j
�
|��}t|||��}t||j��t||j
��t||j��dS)N���?��?r��t�c�k�ignore)�invalid����rr��rrr*��r*)�r.r!�@�@�@)r!r!r!�cubic�@)r.rrrr*r,)r!rr)�r,)�
assert_raises�	TypeError�
ValueErrorr�dict�np�errstate�nan�inf�arange�randomrr#r$rr%)�self�nr%r#r$�bs      �G/usr/lib/python3/dist-packages/scipy/interpolate/tests/test_bsplines.py�	test_ctorzTestBSpline.test_ctors+���y�*�-�w�	1�	1��!�S��b�T�Q�/�/�/�	1�	1�	1�
�[��
*�
*�
*�	S�	S��*�g�R�R���B�F���t�q�1Q�1Q�1Q�R�R�R�	S�	S�	S�	S�	S�	S�	S�	S�	S�	S�	S����	S�	S�	S�	S��j�'�N�N�T�Q���K�B�4�1�-M�-M�-M�N�N�N��j�'�J�J�T�Q��G��t�q�-I�-I�-I�J�J�J��j�'�M�M�T�a�S�1�#�J�2�$�!�-L�-L�-L�M�M�M�	�j�'�K�K�T�I�I�I�!���-J�-J�-J�K�K�K��j�'�	<�	<�����R��H��:�:�:�	<�	<�	<�	�i��	O�	O��1�1�1�\�\�\�W�M�M�M�	O�	O�	O��i��	K�	K��1�1�1�\�\�\�S�I�I�I�	K�	K�	K�	�j�'�	B�	B��,�,�,�
�
�
�a�@�@�@�	B�	B�	B����1��I�a��c�!�e�����I���Q�����A�q�!������1�3������1�3�����Q�������s�6B
�
B�Bc�P�t��}|j}t|j|ddd���t|j|ddd���t|j|d��tjt��5d|_ddd��dS#1swxYwYdS)Nr�V瞯�<��atol�rtolrr*�foo)
�_make_random_spline�tckrr#r$rr%�pytestr�AttributeError)r?rArKs   rB�test_tckzTestBSpline.test_tck8s����!�!���e�����S��V�%�e�<�<�<�<����S��V�%�e�<�<�<�<��Q�S�#�a�&�!�!�!��]�>�
*�
*�	�	��A�E�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�B�B�"Bc��tjddd��}tddgdgd���}t||��d��tgd�ddgd���}t||��tj|d	kdd����dS)
Nrr�
r0r"r,)r�ffffff�?rr-rQ)r9�linspacerr�where�r?�xxrAs   rB�
test_degree_0zTestBSpline.test_degree_0Ds���
�[��A�r�
"�
"���q�!�f����*�*�*�����"���q�!�!�!��l�l�l�q�!�f��2�2�2�����"���r�x��T�	�1�a�8�8�9�9�9�9�9�c��gd�}gd�}d}t|||��}tjddd��}t|dt	|��z|dt	|dz
��zz|dt	|dz
��zz||��d�	��tt||||f��||��d�	��dS)
Nr+�rr*r,rr,�2rr*�+����=�rG)rr9rRr�B_012r
)r?r#r$r%rA�xs      rB�
test_degree_1zTestBSpline.test_degree_1Ms����O�O���I�I��
���A�q�!�����K��1�b�!�!����!��U�1�X�X�
��!��U�1�Q�3�Z�Z��7�!�A�$�u�Q�q�S�z�z�/�I���!���5�	*�	*�	*�	*���a�!�Q���+�+�Q�Q�q�T�T��>�>�>�>�>�>rWc���d}tjdg|dzzdg|dzzz��}tjgd���}t|�dd��ddg��}t	|||��}tjddd��}t
||d	�
��||d	�
��d���t
t||||f��||��d���dS)
Nr,rr�r!r/r0r1r(g�r/rPT��extrapolater[r\)r9�asarrayr�reshaperrRrr
)r?r%r#r$�bp�bsplrUs       rB�test_bernsteinzTestBSpline.test_bernsteinXs
��
���J��s�A�a�C�y�A�3��!��9�,�-�-���J�'�'�'�(�(��
�1�9�9�R��#�#�a��V�
,�
,���q�!�Q����
�[��b�"�
%�
%�����2�4�0�0�0���R�T�2�2�2��	@�	@�	@�	@���b�1�a��)�,�,���R���u�	.�	.�	.�	.�	.�	.rWc�(����t��}|j\���tj����dz
d��}||��}���fd�|D��}t	||d������fd�|D��}t	||d���dS)NrrZc�4��g|]}t|�������S���_naive_eval��.0r^r$r%r#s  ���rB�
<listcomp>z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>ns'���3�3�3�1�{�1�a��A�&�&�3�3�3rWr[r\c�4��g|]}t|�������Srk)�
_naive_eval_2rns  ���rBrpz4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>qs'���6�6�6�a�
�a��A�q�)�)�6�6�6rW)rJrKr9rRr)	r?rArU�y_b�y_n�y_n2r$r%r#s	      @@@rB�test_rndm_naive_evalz TestBSpline.test_rndm_naive_evalfs������
 �!�!���%���1�a�
�[��1��q�!��A��w��
+�
+���a��e�e��3�3�3�3�3�3��3�3�3����S�u�-�-�-�-�6�6�6�6�6�6�2�6�6�6����T��.�.�.�.�.�.rWc	���t��}|j\}}}tj||||dz
d��}t	||��t||||f��d���dS)NrrZr[r\�rJrKr9rRrr
�r?rAr#r$r%rUs      rB�test_rndm_splevzTestBSpline.test_rndm_splevtsn���!�!���%���1�a�
�[��1��q�!��A��w��
+�
+�����"���u�R�!�Q���3�3�%�@�@�@�@�@�@rWc���tj�d��tjtj�d����}tj�d��}t	||��}t|�}|j|j}}tj||||dz
d��}t||��t||��d���dS)N���r�Pr[r\)r9r>�seed�sortrrr#r%rRrr
)r?r^�yrKrAr#r%rUs        rB�test_rndm_splrepzTestBSpline.test_rndm_splrepzs���
�	���t�����G�B�I�$�$�R�(�(�)�)���I���R� � ���Q��l�l���S�M���s�A�C�1��
�[��1��q�!��A��w��
+�
+�����"���u�R��~�~�E�:�:�:�:�:�:rWc��t��}tj|j��|_tj|j|j|j|jdz
d��}t||��d��dS)Nr�dr!)rJr9�	ones_liker$rRr#r%r)r?rArUs   rB�test_rndm_unityzTestBSpline.test_rndm_unity�sg���!�!���l�1�3�����
�[���Q�S��1�3���t�A�v�;��
4�
4�����"���r�"�"�"�"�"rWc��d\}}tjtj�|����}tj�|ddf���}t|||��}||||dz
}}|||z
tj�d��zz}t	||��jd��dS)N��r,����sizer�r,r-�)r,r-r�r�r�)r9r�r>rr�shape)	r?r@r%r#r$rA�tm�tprUs	         rB�test_vectorizationzTestBSpline.test_vectorization�s������1��G�B�I�$�$�Q�'�'�(�(���I���1�a��)��,�,���A�q�!�����1��q�!��A��w�B��
�2��7�b�i�.�.�y�9�9�9�
9���Q�Q�r�U�U�[�/�2�2�2�2�2rWc	���d\}}tjtj�||zdz����}tj�|��}tj|tj�|dz��f}t	|||��t	|||��}}|d|dz
}tj|d|z
|d|zd��}	t
||	��||	��d���t
||	��t|	|||f��d���t
||	��t|	|||f��d���dS)N)�!r,rr(rrZr[r\)r9r�r>�r_rrRrr
)
r?r@r%r#r$�c_padrA�b_pad�dtrUs
          rB�
test_len_czTestBSpline.test_len_c�sJ�����1��G�B�I�$�$�Q�q�S��U�+�+�,�,���I���Q������a���)�)�!�A�#�.�.�.�/���1�a��#�#�W�Q��q�%9�%9�5��
�r�U�Q�q�T�\��
�[��1����A�b�E�B�J��
3�
3�����"���u�u�R�y�y�u�5�5�5�5����"���u�R�!�Q���3�3�%�@�@�@�@����"���u�R�!�U�A��7�7�e�D�D�D�D�D�DrWc	���t��}|j\}}}||||dz
}}dD]2}t|||g|��||dz|dz
g|��d����3dS)Nr)TF绽���|�=��&�.>r\�rJrKr)r?rAr#�_r%r�r��extraps        rB�test_endpointszTestBSpline.test_endpoints�s����!�!���%���1�a��1��q�!��A��w�B��#�	L�	L�F��A�A�r�2�h��/�/��A�r�E�z�2��:�6��?�?�d�
L�
L�
L�
L�
L�	L�	LrWc	���t��}|j\}}}t|||dz|dz
�dz
��|||dz|dz
�dz��d���dS)Nrr�r�r\r�)r?rAr#r�r%s     rB�test_continuityzTestBSpline.test_continuity�s����!�!���%���1�a����!�A�a�C���1��H�+��-�.�.���!�A�a�C���1��H�+��2E�0F�0F��	�	�	�	�	�	rWc	��t��}|j\}}}|d|dz
}tj|||z
||dz
|zd��}|||k|||dz
kz}t	|||d���|||d�����t	||d���t||||fd�����dS)	Nr(rrrZTrbF)�extrx)r?rAr#r$r%r�rU�masks        rB�test_extrapzTestBSpline.test_extrap�s����!�!���%���1�a�
�r�U�Q�q�T�\��
�[��1����A�q�b��d�G�b�L�"�
5�
5���!��r�	�b�1�a�R��T�7�l�+��	���"�T�(��5�5�5���"�T�(��6�6�6�	8�	8�	8�	���"�$�/�/�/��b�1�a��)��+�+�+�	-�	-�	-�	-�	-rWc���t��}|j\}}}|ddz
|ddzg}||��}ttjtj|������dS)Nrrr()rJrKrr9�all�isnan)r?rAr#r�r%rU�yys       rB�test_default_extrapzTestBSpline.test_default_extrap�sj���!�!���%���1�a���d�Q�h��"���	�
"��
�Q�r�U�U���B�F�2�8�B�<�<�(�(�(�)�)�)�)�)rWc	���tj�d��tjtj�d����}tj�d��}d}t	|||d���}|j|dzz
}|d|d	z
}tj|||z
|||zd
��}|||||z
||||z
zz}t||��t||||f����gd�}|||||z
||||z
zz}t||d���||d�����dS)
Nr|�r-r,�periodicrbrr(rrZ)r(r��?rT)
r9r>rr�rr�rRrr
r)	r?r#r$r%rAr@r�rU�xys	         rB�test_periodic_extrapz TestBSpline.test_periodic_extrap�s^��
�	���t�����G�B�I�$�$�Q�'�'�(�(���I���Q����
���A�q�!��4�4�4��
�F�a�!�e���
�r�U�Q�q�T�\��
�[��1����A�a�D�2�I�r�
2�
2��
�q�T�R�!�A�$�Y�1�Q�4�!�A�$�;�/�
/�����"���u�R�!�Q���3�3�4�4�4��_�_��
�q�T�R�!�A�$�Y�1�Q�4�!�A�$�;�/�
/���Q�Q�r�z�2�2�2�A�A�b�d�4K�4K�4K�L�L�L�L�LrWc��t��}|j\}}}tj|||f��}t	j||||d��}t
||��||��dd���dS)Nr�r[rF)rJrKr	�from_spliner9rRr)r?rAr#r$r%�pprUs       rB�
test_ppolyzTestBSpline.test_ppoly�sz���!�!���%���1�a�
�
��1�a�y�
)�
)��
�[��1��q�!��u�c�
*�
*�����"���r�r�"�v�v�E��>�>�>�>�>�>rWc�t�t��}|j\}}}tj|d|dd��}tj||f}td|dz��D]4}t
||||f|���}t||||���d����5t|||dz���dd���dS)	Nrr(rZr��der��nur[r\)rJrKr9rRr��ranger
r)r?rAr#r$r%rUr��yds        rB�test_derivative_rndmz TestBSpline.test_derivative_rndm�s����!�!���%���1�a�
�[��1��q��u�b�
)�
)��
�U�2�q�5�\����A�a�C�=�=�	;�	;�C��r�A�q�!�9�#�.�.�.�B��B���"��
�
�
�E�:�:�:�:�:�	���"��1��
�
�
�q�u�5�5�5�5�5�5rWc���d}gd�}tj�d��tjddtj�d��ddf}t	|||��}tjgd���}t
|||dkdz
��|||dkdz����ttj|d	��|d
������tjddg��}t
||dz
d
���||dzd
�����tjd
dg��}ttj	tj||dz
d
���||dzd
���������ttj	tj||dz
d���||dzd���������dS)Nr*)r(r(rrrr,r-r�r�r�r�r�r|rr�)rr,r-r�r�r�g2H����@gη@r,r-rr�)
r9r>rr�rrdrr�allcloser�)r?r%r#r$rAr^�x0�x1s        rB�test_derivative_jumpsz!TestBSpline.test_derivative_jumps�s��
��2�2�2��
�	���t�����E�!�Q��	�(�(��+�+�Q��1�2���A�q�!����
�J�|�|�|�$�$�����!�A��F�)�e�+�,�,���!�A��F�)�e�+�,�,�	.�	.�	.��B�K���(���Q�Q�w�Z�Z�8�8�8�9�9�9��Z��A��
�
�����"�u�*��+�+�+���"�u�*��+�+�+�	-�	-�	-�
�Z��A��
�
���B�F�2�;�q�q��e���':�':�':�'(�q��e���':�':�':�<�<�=�=�=�	>�	>�	>�	�B�F�2�;�q�q��U��q�'9�'9�'9�'(�q��U��q�'9�'9�'9�;�;�<�<�<�	=�	=�	=�	=�	=rWc	��tjddd��}tjgd����}t	||��t||j|j|jf��d���t	||��t|��d���tjgd����}tjd	d
d��}t	||��tj
|dk||zd
|z
d
z��d���dS)Nr(r-r}�rrr*r,)r#r[r\�rrrr*rr*rPrr/)r9rRr�
basis_elementrr
r#r$r%�B_0123rSrTs   rB�test_basis_element_quadraticz(TestBSpline.test_basis_element_quadratics��
�[��Q��
#�
#���!�L�L�L�1�1�1�����"����b�1�3���Q�S�/�2�2��	@�	@�	@�	@����"����r�
�
��	0�	0�	0�	0�
�!�L�L�L�1�1�1��
�[��A�r�
"�
"�����"������a���B���B���
�3�3�%�	A�	A�	A�	A�	A�	ArWc	���t��}|j\}}}tj||||dz
d��}t	||��t||||��d���dS)Nrr}r[r\)rJrKr9rRr�_sum_basis_elementsrys      rB�test_basis_element_rndmz#TestBSpline.test_basis_element_rndmsm���!�!���%���1�a�
�[��1��q�!��A��w��
+�
+�����"���2�2�q�!�Q�?�?�e�L�L�L�L�L�LrWc��t��}|j\}}}|dz}t|||��}t||jj|��}t||jj|��}t
j||||dz
d��}t||��j||��d���t||��j||��d���dS)Ny�?@rr}r[r\)	rJrKrr$�real�imagr9rRr)	r?rAr#r$r%�cc�b_re�b_imrUs	         rB�
test_cmplxzTestBSpline.test_cmplx$s����!�!���%���1�a�
�(�^���A�r�1�����q�!�#�(�A�&�&���q�!�#�(�A�&�&��
�[��1��q�!��A��w��
+�
+�����"���
�D�D��H�H�5�9�9�9�9����"���
�D�D��H�H�5�9�9�9�9�9�9rWc��tjgd���}ttj|tj������dS)Nr�)rr�rr9r�r;�r?rAs  rB�test_nanzTestBSpline.test_nan1s>���!�,�,�,�/�/�������2�6���#�#�$�$�$�$�$rWc�D�td���}|j\}}}t|||��}tj||||dz
d��}td|��D]<}|���}t|||��||��dd����=dS)Nr��r%rr}��-���q=rF)rJrKrr9rRr��
derivativer)r?rAr#r$r%�b0rU�js        rB�test_derivative_methodz"TestBSpline.test_derivative_method6s����!�$�$�$���%���1�a�
�Q��1�
�
��
�[��1��q�!��A��w��
+�
+���q�!���	F�	F�A������A��B�B�r�1�I�I�q�q��u�u�5�u�E�E�E�E�E�	F�	FrWc� �t��}|j\}}}tj||||dz
d��}t	|������|��||��dd���tj|||f}tj||f��}t|||��}t	|������|��||��dd���dS)Nrr}r[rF)
rJrKr9rRr�antiderivativer��c_�dstackrrys      rB�test_antiderivative_methodz&TestBSpline.test_antiderivative_method?s���!�!���%���1�a�
�[��1��q�!��A��w��
+�
+���7��(�(�*�*�5�5�7�7��;�;���"���E��	7�	7�	7�	7�
�E�!�Q��'�N���I�q�!�f�����A�q�!�����7��(�(�*�*�5�5�7�7��;�;���"���E��	7�	7�	7�	7�	7�	7rWc�
�tjgd���}t|�dd��d��t|�dd��d��t|�dd��d��t|�dd��d��t|�ddd���d��t|�ddd	���d��t|�ddd	���d��t|�ddd	���t	jdd|j����d
|_|���}|d��|d��z
}t|�dd��|��t|�dd��d|z��t|�dd
��|��t|�dd��d|z��t|�dd��|d��|d��z
��t|�dd��|d��|d��z
|d��z|d��z
��t|�dd��|d��|d��z
|d��z|d��z
��t|�dd��|d��|d��z
|d��z|d��z
d|zz��t|�dd��|d��|d��z
��t|�dd��|d��|d��z
��t|�dd��|d��|d��z
d|zz
��dS)Nr)rrr�g�r(TrbFr�r*i����i����i���������?r,g+@�r�i����r-)	rr�r�	integrate�_implrrKrcr�)r?rA�i�
period_ints    rB�
test_integralzTestBSpline.test_integralMs����!�)�)�)�,�,������A�q�)�)�3�/�/�/�����A�q�)�)�8�4�4�4�����A�q�)�)�4�0�0�0�	����B��*�*�A�.�.�.�����B��t��<�<�a�@�@�@�����B��u��=�=�s�C�C�C�����A�r�u��=�=�x�H�H�H�	����A�r�u��=�=���Q��A�E�2�2�	4�	4�	4�#��
�
�������Q�q�T�T�A�A�a�D�D�[�
�����A�q�)�)�:�6�6�6�����A�q�)�)�2�
�?�;�;�;�����B��+�+�Z�8�8�8�����B��+�+�Q��^�<�<�<�����C��-�-�q�q��v�v���#����?�?�?�����C��+�+�Q�Q�q�T�T�A�A�a�D�D�[�1�1�Q�4�4�-?�!�!�C�&�&�-H�I�I�I�����H�f�5�5���!���q�q��t�t��a�a��d�d�*�Q�Q�s�V�V�3�	5�	5�	5�����C��0�0���!���q�q��t�t��a�a��d�d�*�Q�Q�s�V�V�3�a�*�n�D�	F�	F�	F�	����A�r�*�*�A�A�a�D�D�1�1�Q�4�4�K�8�8�8�����B��,�,�a�a��d�d�Q�Q�q�T�T�k�:�:�:�����A�r�*�*�A�A�a�D�D�1�1�Q�4�4�K�!�j�.�,H�I�I�I�I�IrWc���gd�}t||��}d|_tj|��}dD]=\}}t	|�||��|�||�����>dS)Nr+r�))���r�)r�r�)r��
)r
rcr	r�rr�)r?r^rA�pr�r�s      rB�test_integrate_ppolyz TestBSpline.test_integrate_ppolyrs����O�O���q�!�$�$��"��
���a� � ��5�	1�	1�F�B���A�K�K��B�/�/��K�K��B�/�/�
1�
1�
1�
1�	1�	1rWc� �Gd�dt��}|�gd���}t|j|��t|���j|��t|���j|��dS)Nc��eZdZdS)�'TestBSpline.test_subclassing.<locals>.BN)�__name__�
__module__�__qualname__rkrWrB�Br�s�������DrWr�)rrr*r*)rr�r�	__class__r�r�)r?r�rAs   rB�test_subclassingzTestBSpline.test_subclassing}s���	�	�	�	�	��	�	�	�
�O�O�L�L�L�)�)���Q�[�!�$�$�$��Q�\�\�^�^�-�q�1�1�1��Q�%�%�'�'�1�1�5�5�5�5�5rW�axisr�r-c��d\}}tjdd||zdz��}gd�}|dz}|�||��tj�|���}t	||||���}t|jj||g|d|�z||dzd�z��tj�d��}	t||	��j|d|�t|	j��z||dzd�z��|j	dz
|j	fD]0}
ttjtfit||||
�	�����1t	||||����
��t	||||����
d
��t	||||������t	||||����d
��fD]}t|j|j���dS)Nr�rr)r�r�r�r-r��r�r�)r#r$r%r�r*)r9rRrr>rrr$r��list�ndimr5�	AxisErrorr8r�r�r�)r?r�r@r%r#�sh�pos_axisr$rA�xp�ax�b1s            rB�	test_axiszTestBSpline.test_axis�s5�����1��K��1�a�!�e�a�i�(�(��
�Y�Y���!�8��
�	�	�(�A�����I���"��%�%���A�q�!�$�'�'�'���Q�S�Y���l�_�r�)�8�)�}�4�r�(�1�*�+�+��F�	H�	H�	H��Y�
�
�i�
(�
(���Q�Q�r�U�U�[��	��	�]�T�"�(�^�^�3�b��!����o�E�	G�	G�	G��F�7�Q�;���'�	:�	:�B��"�,��
:�
:� �1��Q�R�8�8�8�
:�
:�
:�
:��1�a���.�.�.�9�9�;�;��1�a���.�.�.�9�9�!�<�<��1�a���.�.�.�=�=�?�?��1�a���.�.�.�=�=�a�@�@�B�	*�	*�B�
���!�&�)�)�)�)�		*�	*rWc�"�d}gd�}tjgd�gd�g��}t|||d���}t||d|��}t||d|��}t|d	��|d	��|d	��g��dS)
Nr*)rrr*r,r-r�r�)r(r*rr()r*r���rr(r�rrr3)r9�arrayrr)r?r%r#r$�spl�spl0�spl1s       rB�
test_neg_axiszTestBSpline.test_neg_axis�s���
��!�!�!���H�n�n�n�m�m�m�4�5�5���a��A�B�'�'�'���q�!�A�$��"�"���q�!�A�$��"�"���S�S��X�X���S�	�	�4�4��9�9�5�6�6�6�6�6rWc��d�}d}d}dD]}||||���tddd��D]}|||d���d}tdd	��D]}|||d
���dS)a7
        Splines with different boundary conditions are built on different
        types of vectors of knots. As far as design matrix depends only on
        vector of knots, `k` and `x` it is useful to make tests for different
        boundary conditions (and as following different vectors of knots).
        c��tj�d��tjtj�|��dzdz
��}tj�|��dzdz
}|dkr|d|d<t||||���}tjt|j��|z
dz
��}t|j||��|��}tj
||j|�����}t||j
z|d	�
��t||d	�
��dS)zY
            To avoid repetition of code the following function is provided.
            r|�(r}r�r(r�r%�bc_typerr[r\N)r9r>rr��
random_sampler
�eye�lenr#r�
design_matrix�toarrayrr$)	r@r%rr^r�rgr$�des_matr_def�des_matr_csrs	         rB�run_design_matrix_testszHTestBSpline.test_design_matrix_bc_types.<locals>.run_design_matrix_tests�s,��
�I�N�N�4� � � ����	�/�/��2�2�R�7�"�<�=�=�A��	�'�'��*�*�R�/�"�4�A��*�$�$���u��!��%�a��a��A�A�A�D���s�4�6�{�{�Q���*�+�+�A�0�7�4�6�1�a�0�0��3�3�L�"�0��15��12�4�4�4;�G�I�I�
�
�L�4�6�1�1�5�A�A�A�A��L�,�U�C�C�C�C�C�CrWr4r,��clamped�naturalr�r*�
not-a-knotr�r�r�N)r�)r?rr@r%�bcs     rB�test_design_matrix_bc_typesz'TestBSpline.test_design_matrix_bc_types�s���	D�	D�	D�*
��
��(�	.�	.�B�#�#�A�q�"�-�-�-�-��q�!�Q���	8�	8�A�#�#�A�q�,�7�7�7�7�
���q�!���	6�	6�A�#�#�A�q�*�5�5�5�5�	6�	6rWrc)FTr��degreer�c	��tj�d��tj�d|dzz��}tj|��tj|��}}|}tjtj|dz
|dz
|��tj||d|dzz��tj|dz|dz|��f}tjt|��|z
dz
��}t||||��}	t|	|��tj||||���
����tj|dz
|dz
|dz|dzg��}|sKtjt"��5tj||||��ddd��dS#1swxYwYdSt|	|��tj||||���
����dS)z;Test that design_matrix(x) is equivalent to BSpline(..)(x).r|rPrr*r�N)r9r>rr�amin�amaxr�rRrrrrrrrrLrr7)
r?rcr r^�xmin�xmaxr%r#r$�bsplines
          rB�'test_design_matrix_same_as_BSpline_callz3TestBSpline.test_design_matrix_same_as_BSpline_call�s$��	�	���t�����I�#�#�B�&�1�*�$5�6�6���W�Q�Z�Z������d�����E�"�+�d�Q�h��q��&�9�9��+�d�D�!�v��z�*:�;�;��+�d�Q�h��q��&�9�9�:�
;��
�F�3�q�6�6�A�:��>�"�"���!�Q��;�/�/����G�A�J�J��-�a��A�{�C�C�K�K�M�M�	
�	
�	
�

�H�d�R�i����4�#�:�t�b�y�A�B�B���	���z�*�*�
<�
<��%�a��A�{�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<�
<�
<�
����
�
��%�a��A�{�;�;�C�C�E�E�
�
�
�
�
s�
F/�/F3�6F3c��tj�d��d}d}tjtj�|��dzdz
��}tj�|��dzdz
}t|||���}t
dd��D]]}|d|�}|d|�}tj||j	|���
��}	t|	|jz|d	�
���^dS)Nr|rPr,rr}r�rr-r[r\)
r9r>rr�rr
r�rrr#rrr$)
r?r@r%r^r�rgr��xc�ycrs
          rB�test_design_matrix_x_shapesz'TestBSpline.test_design_matrix_x_shapes�s��
�	���t������
���G�B�I�+�+�A�.�.��3�b�8�9�9���I�#�#�A�&�&��+�b�0��!�!�Q�!�,�,�,���q�!���	C�	C�A��2�A�2��B��2�A�2��B�"�0��15��12�4�4�4;�G�I�I�
�
�L�4�6�1�2�E�B�B�B�B�B�
	C�	CrWc��gd�}tjd|d�����}t|gd�gd���dS)N)r!r!r!r/r0r1r1r1r/r,)g�?gm�ਪ��?gK�}\UU�?r.r[r\)rrrr)r?r#�des_matrs   rB�test_design_matrix_t_shapesz'TestBSpline.test_design_matrix_t_shapess_��,�,�,���(��Q��2�2�:�:�<�<����;�;�;�<�"�	$�	$�	$�	$�	$�	$rWc�b�tj�d��d}d}tjtj�|��dzdz
��}tj�|��dzdz
}t|||���}t
t��5tj	||j
ddd�|��ddd��n#1swxYwYd}gd	�}gd
�}t
t��5tj	|||��ddd��dS#1swxYwYdS)Nr|rPr,rr}r�r(r*)r.r!r/r0r1g@ra)r9r>rr�rr
r5r7rrr#)r?r@r%r^r�rgr#s       rB�test_design_matrix_assertsz&TestBSpline.test_design_matrix_assertss���
�	���t������
���G�B�I�+�+�A�.�.��3�b�8�9�9���I�#�#�A�&�&��+�b�0��!�!�Q�!�,�,�,���:�
&�
&�	6�	6��!�!�T�V�D�D�b�D�\�1�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�
��$�$�$������
�:�
&�
&�	+�	+��!�!�Q��*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s$�&%C�C�C�D$�$D(�+D(r)rrr�rc�&�tj�d��tjtj�d����}tj�d��}|dkr|d|d<t	|||���}tj||���}tjddd��}t||��||��d�	��t|||���}t|j
|j
d�	��dS)
Nr|r}r�rr(�rrrEr\)r9r>rr�rr�from_power_basisrRrr
r$)r?rr^r��cbrgrU�bspl_news        rB�test_from_power_basisz!TestBSpline.test_from_power_basis s���	�	���t�����G�B�I�$�$�R�(�(�)�)���I���R� � ���j� � ��a�D�A�b�E�
��A�w�
/�
/�
/���'��G�<�<�<��
�[��A�r�
"�
"�����2�����R���u�5�5�5�5�%�a��G�<�<�<������
��7�7�7�7�7�7rWc��tj�d��tjtj�d����}tj�d��tj�d��dzz}|dkr|d|d<t	|||���}tj||���}t||j|���}t||j	|���}t|jj|jd|jzzj��t|j|jd|jzzd�	��dS)
Nr|r}r r�rr(r2rEr\)r9r>rr�rrr3r
r�r�rr$�dtyper)r?rr^r�r4rg�
bspl_new_real�
bspl_new_imags        rB�test_from_power_basis_complexz)TestBSpline.test_from_power_basis_complex/s?��	�	���t�����G�B�I�$�$�R�(�(�)�)���I���R� � �2�9�#3�#3�B�#7�#7�"�#<�<���j� � ��a�D�A�b�E�
��A�w�
/�
/�
/���'��G�<�<�<��*�1�a�f�g�F�F�F�
�*�1�a�f�g�F�F�F�
��T�V�\�M�O�&(�=�?�&:�%;�<A�	C�	C�	C����
���}��.�!/�5:�	<�	<�	<�	<�	<�	<rWc���tjgd���}tjgd���}tjt	||d���d���}t|jgd�d���dS)	a}
        For x = [0, 1, 2, 3, 4] and y = [1, 1, 1, 1, 1]
        the coefficients of Cubic Spline in the power basis:

        $[[0, 0, 0, 0, 0],\$
        $[0, 0, 0, 0, 0],\$
        $[0, 0, 0, 0, 0],\$
        $[1, 1, 1, 1, 1]]$

        It could be shown explicitly that coefficients of the interpolating
        function in B-spline basis are c = [1, 1, 1, 1, 1, 1, 1]
        r+)rrrrrrr2)rrrrrrrrEr\N)r9rrr3rrr$)r?r^r�rgs    rB�test_from_power_basis_exmpz&TestBSpline.test_from_power_basis_exmp@sy��
�H�_�_�_�%�%���H�_�_�_�%�%���'��A�q�)�(L�(L�(L�09�;�;�;����� 5� 5� 5�E�B�B�B�B�B�BrWN)-r�r�r�rCrNrVr_rhrvrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rL�mark�parametrizer�rrrr'r+r.r0r6r;r=rkrWrBrrsX������!�!�!�F
�
�
�:�:�:�	?�	?�	?�.�.�.�/�/�/�A�A�A�
;�
;�
;�#�#�#�3�3�3�E�E�E�$L�L�L����
-�
-�
-�*�*�*�M�M�M�$?�?�?�6�6�6�=�=�=�8A�A�A�M�M�M�:�:�:�%�%�%�
F�F�F�7�7�7�#J�#J�#J�J	1�	1�	1�6�6�6��[���V�U�U�2�q�\�\�2�2�*�*�3�2�*�:7�7�7�(6�(6�(6�T�[���]�,E�,E�,E�F�F��[���X�u�u�Q�x�x�0�0���1�0�G�F��4C�C�C�"$�$�$�+�+�+�$�[���Y�)C�)C�)C�D�D�8�8�D�D�8��[���Y�)C�)C�)C�D�D�
<�
<�D�D�
<�C�C�C�C�CrWrc
���dd�}dD]e}t|���}tt|����D]6\}}|||��td|dz��D]}||||dd����7�fdS)	Nrr[c
�4�|j\}}}tj|��}tj|ddz
d|dd�|dd�zz|ddzf}t	t||||f|��|||��||d|�d|j�����dS)	Nrg�������?r�rr(zder = z  k = )rGrH�err_msg)rKr9�uniquer�rr
r%)	rAr�r�rGrHr#r$r%r^s	         rB�check_splevz,test_knots_multiplicity.<locals>.check_splevXs����%���1�a��I�a�L�L���E�!�A�$�s�(�C��1�2�2���2�A�2���/��2��s��:�;����a�!�Q���C�0�0�!�!�A�s�)�)����C�C�C����.M�	O�	O�	O�	O�	O�	OrW)rr*r,r-r�r�rr�)rr[r[)rJ�	enumerate�_make_multiplesr�)rDr%rAr�rr�s      rB�test_knots_multiplicityrGTs���O�O�O�O��6�6���!�$�$�$����q�1�1�2�2�	6�	6�E�A�r��K��A�����Q��!��}�}�
6�
6����B��3��u�5�5�5�5�
6�	6�6�6rWc��|dkr#|||cxkr||dzkrnndndS|||z||krd}n6|||z
|||z||z
zt||dz
||��z}|||zdz||dzkrd}nE|||zdz|z
|||zdz||dzz
zt||dz
|dz|��z}||zS)zw
    Naive way to compute B-spline basis functions. Useful only for testing!
    computes B(x; t[i],..., t[i+k+1])
    rrr!r.��_naive_B)r^r%r�r#�c1�c2s      rBrJrJks��
	�A�v�v���d�a�(�(�(�(�!�A�a�C�&�(�(�(�(�(�s�s�c�1���1��v��1��~�~�
����!�A�$�h��1�Q�3��!�A�$��
'�(�1�a��c�1�a�*@�*@�
@����1��Q��x�1�Q�q�S�6���
�����!��A��h��l�Q�q��s�1�u�X��!�A�#��.�
/�(�1�a��c�1�Q�3��2J�2J�
J����G�rWc�6���������kr��ntj����dz
����cxkr��dzksnJ���kr�t����z
ksJ�t�����fd�t	d�dz��D����S)z=
    Naive B-spline evaluation. Useful only for testing!
    rc3�Z�K�|]%}��|z
t���|z
���zV��&dS�NrI)ror�r$r�r%r#r^s  �����rB�	<genexpr>z_naive_eval.<locals>.<genexpr>�sB�����F�F�1�q��1��v���A�q��s�A�.�.�.�F�F�F�F�F�FrWr)r9�searchsortedr�sumr�)r^r#r$r%r�s````@rBrmrm~s��������	�A�a�D�y�y�
����O�A�q�!�!�A�%���Q�4�1������!�A�#����������6�6�a�#�a�&�&�1�*�n�n�n�n��F�F�F�F�F�F�F�F��a��1��
�
�F�F�F�F�F�FrWc������t����dzz
}|�dzksJ�t���|ksJ����cxkr�|ksnJ�t����fd�t|��D����S)z'Naive B-spline evaluation, another way.rc3�N�K�|]}�|t��|���zV�� dSrOrI)ror�r$r%r#r^s  ����rBrPz _naive_eval_2.<locals>.<genexpr>�s:�����=�=�q�q��t�h�q�!�Q��*�*�*�=�=�=�=�=�=rW)rrRr�)r^r#r$r%r@s```` rBrrrr�s��������A���!�A�#��A���!��8�8�8�8��q�6�6�Q�;�;�;�;��Q�4�1������!���������=�=�=�=�=�=�=�E�!�H�H�=�=�=�=�=�=rWc�2�t|��|dzz
}||dzksJ�t|��|ksJ�d}t|��D]O}tj||||zdz�d���|��}|||t	j|��zz
}�P|S)Nrr.r*Frb)rr�rr�r9�
nan_to_num)r^r#r$r%r@�sr�rAs        rBr�r��s����A���!�A�#��A���!��8�8�8�8��q�6�6�Q�;�;�;�;�
�A�
�1�X�X�%�%��@�G�!�!�A�a��c�!�e�G�*�%�@�@�@��C�C��	�Q�q�T�B�M�!�$�$�
$�$����HrWc��tj|��}tj||dk|dkz|dk|dkz|dk|dkzgd�d�d�g��S)z+ A linear B-spline function B(x | 0, 1, 2).rr*rc��dS)Nr.rk�r^s rB�<lambda>zB_012.<locals>.<lambda>�s��b�rWc��|SrOrkrZs rBr[zB_012.<locals>.<lambda>�s��A�rWc��d|z
S�Nr/rkrZs rBr[zB_012.<locals>.<lambda>�s
���A��rW)r9�
atleast_1d�	piecewiserZs rBr]r]�sp��
�
�a���A�
�<��Q��U�q�1�u�-��!�V��A��.��!�V��Q��/�1�)�L�+�+�~�~�F�H�H�HrWc���tj|��}|dk|dk|dkz|dkg}|dkr	d�d�d�g}n!|dkr	d�d�d	�g}ntd
|z���tj|||��}|S)z0A quadratic B-spline function B(x | 0, 1, 2, 3).rr*rc��||zdzSr^rkrZs rBr[zB_0123.<locals>.<lambda>�s��1�Q�3�r�6�rWc��d|dz
dzz
S)Ng�?r�r*rkrZs rBr[zB_0123.<locals>.<lambda>�s��4�1�T�6�A�+�-�rWc��d|z
dzdzS)Nr0r*rkrZs rBr[zB_0123.<locals>.<lambda>�s��B�q�D�1�9�q�=�rWc��dS�Nr!rkrZs rBr[zB_0123.<locals>.<lambda>����2�rWc��dS)Ng�rkrZs rBr[zB_0123.<locals>.<lambda>�s��3�rWc��dSrfrkrZs rBr[zB_0123.<locals>.<lambda>�rgrWznever be here: der=%s)r9r_r7r`)r^r��conds�funcs�piecess     rBr�r��s���
�
�a���A�
��U�Q��U�q�1�u�%�q�1�u�-�E�
�a�x�x�!�!�-�-�(�(�*���

��������������0�3�6�7�7�7�
�\�!�U�E�
*�
*�F��MrW�#r,c��tj�d��tjtj�||zdz����}tj�|��}t	j|||��S)N�{r)r9r>rr�r�construct_fast)r@r%r#r$s    rBrJrJ�sg���I�N�N�3����
���	� � ��1��Q��'�'�(�(�A�
�	������A��!�!�Q��*�*�*rWc#�K�|j|j}}|j���}|d|dd�<|d|d<t	|||��V�|j���}|d|d|dz�<t	|||��V�|j���}|d||dz
d�<t	|||��V�dS)	zIncrease knot multiplicity.���r�rNrr()r$r%r#�copyr)rAr$r%�t1s    rBrFrF�s������3���q�A�	
������B��2��B�r�"�u�I�
��V�B�r�F�
�"�a��
�
����	
������B��!�u�B�t��!��t�H�
�"�a��
�
����	
������B��2��B��r�!�t�u�u�I�
�"�a��
�
�����rWc�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�TestInteropc�
�tjddtjzd��}tj|��}t	||��}|j|j|jf|_|||c|_	|_
|_tjddtjzd��|_tj
|j|j|jf}tj||f��|_t!|j|j|j��|_dS)Nrr1�)rt)r9rR�pi�cosr
r#r$r%rKrUr�rA�xnewr�r�rLr�b2)r?rUr�rArLs     rB�setup_methodzTestInterop.setup_method�s���
�[��B�r�u�H�b�
)�
)��
�V�B�Z�Z���r�2�&�&���C���a�c�?���#%�r�1� �����$�&��K��2�b�e�8�R�0�0��	�
�U�1�3���Q�S�=�
!���)�R��H�%�%����!�#�t�w���,�,����rWc����|j|j|jc}�}tt	|����|��dd���tt	|�j���|��dd���t�fd�|D���|��dd���t
td���5t	||��ddd��n#1swxYwYttd|j
j����dz}|j
�|��}|j
||jf}tt	||��||���|��dd���dS)NrErFc�0��g|]}t|�����Srk)r
)ror^rAs  �rBrpz*TestInterop.test_splev.<locals>.<listcomp>�s!���3�3�3���q�!���3�3�3rWzCalling splev.. with BSpline��matchr�r)r}rAr~rr
rKr5r7�tupler�r$r��	transposer#r%)r?r}r~rr�rKrAs      @rB�
test_splevzTestInterop.test_splev�s�����i�������a��	��d�A�����$���e�%�	9�	9�	9�	9���d�A�E�*�*���$���e�%�	9�	9�	9�	9��3�3�3�3�d�3�3�3���$���e�%�	9�	9�	9�	9�
�:�-K�
L�
L�
L�	�	��$��O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��5��B�D�I�&�&�
'�
'�$�
.��
�T�^�^�B�
�
���t�R�������d�C�(�(���4���*�*�2�.�.�U��	H�	H�	H�	H�	H�	Hs�/C�C�Cc�F�|j|j}}t||��}tj||��\}}}t	|d|d���t	|d|d���t|d|��t||d���\}}}}t	|d|d���t	|d|d���t|d|��t
||��}	t	||	d���t|�}
t	||
|��d���dS)NrrEr\rr*T)�full_output)rUr�rr�rrr
r)r?r^r�rKr#r$r%�tck_fr�r�rAs           rB�test_splrepzTestInterop.test_splrep�s/���w���1���Q��l�l���,�q�!�$�$���1�a���A����.�.�.�.���A����.�.�.�.��S��V�Q���� ��1�$�7�7�7���q�!�Q���a��!�%�0�0�0�0���a��!�%�0�0�0�0��U�1�X�q�!�!�!��1�c�]�]����2�E�*�*�*�*�
�S�M����1�1�Q�4�4�e�,�,�,�,�,�,rWc��|j|j}}tj||f}t	t
��5t
||��ddd��n#1swxYwYt	t
��5tj||��ddd��n#1swxYwYt	td���5t
|dd�|dd���ddd��n#1swxYwYt	td���5tj|dd�|dd���ddd��dS#1swxYwYdS)N�m > k must holdr�r,)	rUr�r9r�r5r7rr�r6)r?r^r��y2s    rB�test_splrep_errorszTestInterop.test_splrep_errorss*���w���1��
�U�1�a�4�[��
�:�
&�
&�	�	��1�b�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�:�
&�
&�	 �	 ��L��B����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 ��9�,=�
>�
>�
>�	!�	!��1�R�a�R�5�!�B�Q�B�%� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�
�9�,=�
>�
>�
>�	'�	'��L��2�A�2���"�1�"��&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	'sG�A�A�A�3B�B�B�6!C#�#C'�*C'�&D7�7D;�>D;c���tjd���d��}t|��\}}t	j|��\}}t||d���tt
||��|d���tt
||��|d���t|dd���\\}}}}}t||d���tt
||��|d���dS)Nr��r,r�rEr\rT)rWr�)r9r=rerr�rr
)	r?r^rA�urK�u1�b_f�u_fr�s	         rB�test_splprepzTestInterop.test_splprep's����I�b�M�M�!�!�&�)�)���q�z�z���1��-��"�"���R�	��2�E�*�*�*�*���a����Q�U�3�3�3�3���a��
�
�q�u�5�5�5�5�&�a�1�$�?�?�?��
��c�A�q�!���3�U�+�+�+�+���c�3�����7�7�7�7�7�7rWc��tjd���d��}ttd���5t|��ddd��n#1swxYwYttd���5t
j|��ddd��n#1swxYwYtjddd���}ttd	���5t|g��ddd��n#1swxYwYttd	���5t
j|g��ddd��n#1swxYwYgd
�}ttd���5t|g��ddd��n#1swxYwYttd���5t
j|g��ddd��n#1swxYwYgd�}gd
�}ttd���5t|gd|g�ddd��dS#1swxYwYdS)N�<r�ztoo many values to unpackr�rrr,)�numr�)�
�>I�r��
�>K�r�zInvalid inputs)rr,r*r-)rg333333�?g�������?r)	r9r=rer5r7rr�rRr6)r?r^r�s   rB�test_splprep_errorszTestInterop.test_splprep_errors6s����I�e���$�$�Y�/�/��
�:�-H�
I�
I�
I�	�	��A�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�:�-H�
I�
I�
I�	�	��M�!����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�K��2�1�%�%�%��
�9�,=�
>�
>�
>�	�	��Q�C�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�9�,=�
>�
>�
>�	�	��M�1�#����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�

E�D�D��
�:�-=�
>�
>�
>�	�	��Q�C�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�:�-=�
>�
>�
>�	�	��M�1�#����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�L�L������
�:�-=�
>�
>�
>�	%�	%��q�c�4��^�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s}�A�A�!A�;B�B �#B �C1�1C5�8C5�D4�4D8�;D8�E6�6E:�=E:�F9�9F=�F=�"G=�=H�Hc�v�|j|j}}tjgd���tjz}tt
|��|dd���tt
|j|j|j	f��|dd���ttd���5t
|d���ddd��n#1swxYwY|j�dd	d
��}tj
t
|j||j	fd�����}t|jd��t||z
d
d�
��dS)N)r�r�r3g@gH�����z>rFzCalling sproot.. with BSpliner�rZ)�mestrr*r)r,r*r-r�r\)rAr~r9rr{rrr#r$r%r5r7r�rdrr�)r?rAr~�roots�c2r�rrs      rB�test_sprootzTestInterop.test_sprootSsc������2����-�-�-�.�.�r�u�4����q�	�	�5�t�$�?�?�?�?�����Q�S�!�#��/�/��T��M�M�M�M��:�-L�
M�
M�
M�	 �	 ��2�B�����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 ��d�n�n�Q��1�%�%��
�Z����c�2�4�0�r�:�:�:�
;�
;���R�X�y�)�)�)���U�
�A�E�2�2�2�2�2�2s�B8�8B<�?B<c	�x�|j|j}}ttdd|��tdd|j��d���ttdd|��|�dd��d���t
td���5tdd|��ddd��n#1swxYwY|j�	ddd��}tjtdd|j||j
f����}t|jd��t|tdd|��d���dS)	Nrrr[r\zCalling splint.. with BSpliner�r*)r,r*)rAr~rrrKr�r5r7r$r�r9rdr#r%rr�)r?rAr~r��integrs     rB�test_splintzTestInterop.test_splintds{������2����q�!�Q����q�!�Q�U�+�+�%�	9�	9�	9�	9���q�!�Q������A�q�)�)��	7�	7�	7�	7��:�-L�
M�
M�
M�	�	��1�a�����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��d�n�n�Q��1�%�%����F�1�a�"�$��R�T�):�;�;�<�<���V�\�6�*�*�*����q�!�Q���e�	5�	5�	5�	5�	5�	5s�B-�-B1�4B1c	��|j|jfD�]K}t|j��t|j��z
}|dkrFt
j|jtj|f|jjdd�z��f|_dD]�}t|��}tj	|j|j|jf��}t|j|dd���t|j|dd���t|j|d��tt|t ����tt|t"�����ѐ�MdS�NrrrYrEr\r*)rAr~rr#r$r9r��zerosr�rr�r%rrr�
isinstancerr��r?rA�ctr@�bd�tck_ds      rB�test_splderzTestInterop.test_splderws2���&�$�'�"�
	2�
	2�A��Q�S���C���H�H�$�B��A�v�v��e�A�C���2�%�!�#�)�A�B�B�-�*?�!@�!@�@�A����
2�
2���A�Y�Y����a�c�1�3���_�5�5�����e�A�h�U�;�;�;�;����e�A�h�U�;�;�;�;��R�T�5��8�,�,�,��
�2�w�/�/�0�0�0��
�5�%�0�0�1�1�1�1�
2�

	2�
	2rWc	��|j|jfD�]K}t|j��t|j��z
}|dkrFt
j|jtj|f|jjdd�z��f|_dD]�}t|��}tj	|j|j|jf��}t|j|dd���t|j|dd���t|j|d��tt|t ����tt|t"�����ѐ�MdSr�)rAr~rr#r$r9r�r�r�rr�r%rrrr�rr�r�s      rB�test_splantiderzTestInterop.test_splantider�s3���&�$�'�"�
	2�
	2�A��Q�S���C���H�H�$�B��A�v�v��e�A�C���2�%�!�#�)�A�B�B�-�*?�!@�!@�@�A����
2�
2����]�]���(�!�#�q�s�A�C��9�9�����e�A�h�U�;�;�;�;����e�A�h�U�;�;�;�;��R�T�5��8�,�,�,��
�2�w�/�/�0�0�0��
�5�%�0�0�1�1�1�1�
2�

	2�
	2rWc���|j|j|j}}}|jjdz}d|j||j|dzzz}t||��t||j|j|jf��}}tt||��t||��d���tt|t����tt|t����tt|jj����}|j�|dd�dz��}	t||j|	|jf��}
t||��}tt#jt||
�����ddd��||��d���tt|t����tt|
t����dS)Nr*r�rrEr\r�r)rAr~rUr#r�rr$r%rr
rr�rr�r�r�r�r9rd)r?rAr~rUr��tn�bn�tck_nrr��tck_n2�bn2s            rB�test_insertzTestInterop.test_insert�s����F�D�G�T�W�r�2��
�C�H��M��
�!�#�a�&�1�3�q��s�8�#�
$���2�q�M�M�6�"�q�s�A�C���o�#>�#>�E����b�"�
�
��b�%�(�(�u�	6�	6�	6�	6��
�2�w�'�'�(�(�(��
�5�%�(�(�)�)�)��5����#�#�
$�
$��
�T�^�^�B�q�r�r�F�T�M�
*�
*����R�T�2�r�t�,�-�-���R��n�n��	��
�5��V�#4�#4�5�5�?�?��1�a�H�H���B���e�	-�	-�	-�	-��
�3��(�(�)�)�)��
�6�5�)�)�*�*�*�*�*rWN)r�r�r�rr�r�r�r�r�r�r�r�r�r�rkrWrBrxrx�s�������-�-�-�H�H�H�6-�-�-�0'�'�'� 
8�
8�
8�%�%�%�:3�3�3�"5�5�5�&2�2�2� 2�2�2� +�+�+�+�+rWrxc��eZdZejddejz��Zeje��Zd�Z	d�Z
d�Zej
�dgd���d���Zej
�dgd���d	���Zd
�Zd�Zej
�dgd���d
���Zd�Zd�Zd�Zej
�dgd���d���Zd�Zd�Zd�Zd�Zd�Zej
�d���d���Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%ej
�dgd"���d#���Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)S)*�
TestInterpr.r/c��tt��5t|j|jd���ddd��dS#1swxYwYdS)Nr3r�)r5r6r
rUr�)r?s rB�test_non_int_orderzTestInterp.test_non_int_order�s���
�9�
%�
%�	8�	8��t�w���3�7�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�?�A�Ac��t|j|jd���}t||j��|jdd���t|j|jdd���}t||j��|jdd���dS)Nrr�r[rFr(�r%r��r
rUr�rr�s  rB�test_order_0zTestInterp.test_order_0�����t�w���1�5�5�5�����$�'�
�
�D�G�%�e�D�D�D�D��t�w���1�2�>�>�>�����$�'�
�
�D�G�%�e�D�D�D�D�D�DrWc��t|j|jd���}t||j��|jdd���t|j|jdd���}t||j��|jdd���dS)Nrr�r[rFr(r�r�r�s  rB�test_linearzTestInterp.test_linear�r�rWr%r�c��gd�}gd�}ttd���5t|||���ddd��dS#1swxYwYdS)N�rrr*r,r-r�)rrr*r,r-r�r�r�zShapes of xr�r��r5r7r
�r?r%r^r�s    rB�test_incompatible_x_yz TestInterp.test_incompatible_x_y�s�������$�$�$��
�:�]�
;�
;�
;�	*�	*��q�!�q�)�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�?�A�Ac��gd�}gd�}ttd���5t|||���ddd��n#1swxYwYgd�}ttd���5t|||���ddd��n#1swxYwYgd�}tj|���d��}ttd���5t|||���ddd��dS#1swxYwYdS)	N)rrrr*r,r-r�zx to not have duplicatesr�r�)rr*rr,r-r�zExpect x to be a 1D strictly)rr()r5r7r
r9rdrer�s    rB�
test_broken_xzTestInterp.test_broken_x�s�����������
�:�-G�
H�
H�
H�	*�	*��q�!�q�)�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
����
�:�-K�
L�
L�
L�	*�	*��q�!�q�)�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�����J�q�M�M�!�!�'�*�*��
�:�-K�
L�
L�
L�	*�	*��q�!�q�)�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s3�>�A�A�#B�B�	B�C.�.C2�5C2c��dD]C}t|j|j|��}t||j��|jdd����DdS)Nr�r[rFr�)r?r%rAs   rB�test_not_a_knotzTestInterp.test_not_a_knot�sZ���	I�	I�A�"�4�7�D�G�Q�7�7�A��A�A�d�g�J�J���e�%�H�H�H�H�H�	I�	IrWc�X�t|j|jdd���}t||j��|jdd���t	dd��D]@}t||jd|���||jd	|���d
����At|j|jddd	���}t||j��|jdd���t	dd��D]@}t||jd|���||jd	|���d
����AdS)
Nr�r�rr[rFrrr�r(g�dy���=r\�r%rr�)r
rUr�rr�)r?rAr�s   rB�
test_periodiczTestInterp.test_periodic�sB���t�w���1�j�I�I�I�����$�'�
�
�D�G�%�e�D�D�D�D��q�!���	S�	S�A��A�A�d�g�a�j�Q�/�/�/���4�7�2�;�1�1E�1E�1E�E�R�R�R�R�R��t�w���1�j�r�R�R�R�����$�'�
�
�D�G�%�e�D�D�D�D��q�!���	S�	S�A��A�A�d�g�a�j�Q�/�/�/���4�7�2�;�1�1E�1E�1E�E�R�R�R�R�R�	S�	SrW)r*r,r-r�r�r�c�f�d}tj�d��tjtj�|��dz��}tj�|��dz}|d|d<t|||d���}t
||��|d	�
��dS)Nr�r|rPr�r(rr�rr[r\)r9r>rr�rr
r)r?r%r@r^r�rAs      rB�test_periodic_randomzTestInterp.test_periodic_random�s���
��
�	���t�����G�B�I�+�+�A�.�.��3�4�4���I�#�#�A�&�&��,����u��!���q�!�q�*�=�=�=�����!���a�e�,�,�,�,�,�,rWc��|jjd}tj�d��tj�|��dztjz}tj|��}d|d<dtjz|d<tjd|f��}tj	|��|d<tj
|��|d<t||ddd�	��}t|��D]-}t|||��|dd�|fd
����.t||d��||d��d
���dS)Nrr|r*r.r(rr�r�r�r[r\)rUr�r9r>rrr{r�r��sinr|r
r�r)r?r@r^r�rAr�s      rB�test_periodic_axiszTestInterp.test_periodic_axis�s/���G�M�!���
�	���t�����I�#�#�A�&�&��*�R�U�2���G�A�J�J����!���B�E�	��"���H�a��V�����v�a�y�y��!���v�a�y�y��!���q�!�q�*�1�E�E�E���q���	:�	:�A��A�A�a��d�G�G�Q�q�q�q�!�t�W�5�9�9�9�9�9����!�A�$�����1�R�5����6�6�6�6�6�6rWc��tj�d��d}d}tjtj�|����}tj�|��}|ddz
|d<tt��5t|||d���ddd��dS#1swxYwYdS)	Nr|r�r�r(rrr�r)r9r>rr�rr5r7r
)r?r%r@r^r�s     rB�test_periodic_points_exceptionz)TestInterp.test_periodic_points_exception
s���
�	���t����
��
���G�B�I�+�+�A�.�.�/�/���I�#�#�A�&�&����u�q�y��!��
�:�
&�
&�	>�	>��q�!�q�*�=�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s�B7�7B;�>B;c��tj�d��d}d}tjtj�|����}tj�|��}tj|d|zz��}t
t��5t||||d��ddd��dS#1swxYwYdS)Nr|r,r�r*r�)	r9r>rr�rr�r5r7r
)r?r%r@r^r�r#s      rB�test_periodic_knots_exceptionz(TestInterp.test_periodic_knots_exceptions���
�	���t����
��
���G�B�I�+�+�A�.�.�/�/���I�#�#�A�&�&���H�Q��Q��Y����
�:�
&�
&�	7�	7��q�!�Q��:�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�"C�C�
C)r*r,r-r�c�|�t|j|j|d���}t|j|jd|���}t	|j|��}t|||j��d���t
d|��D];}t	|j||���}t|||j|�	��d
����<dS)Nr�rT)�perr%r[r\rr�r�r�)r
rUr�rr
rr�)r?r%rArKr	r�s      rB�test_periodic_splevzTestInterp.test_periodic_splev#s���
�t�w���1�j�I�I�I���T�W�d�g�4�1�5�5�5���D�G�S�!�!����Q�Q�t�w�Z�Z�e�4�4�4�4��q�!���	?�	?�A�����!�,�,�,�C��C���4�7�q�!1�!1�!1��>�>�>�>�>�	?�	?rWc�,�t|j|jdd���}t|j|jd���}t	||j��||j��d���d}tjt
j�|��dz��}t
j�|��dz}|d	|d
<t||dd���}t||d���}t	||��||��d���dS)Nr,r�rr2r[r\rPr�r(r)	r
rUr�rrr9r�r>r)r?rA�cubr@r^r�s      rB�test_periodic_cubiczTestInterp.test_periodic_cubic0s���t�w���1�j�I�I�I���$�'�4�7�J�?�?�?�����$�'�
�
�C�C���L�L�u�=�=�=�=�
���G�B�I�+�+�A�.�.��3�4�4���I�#�#�A�&�&��,����u��!���q�!�q�*�=�=�=���!�Q�
�3�3�3�����!���c�c�!�f�f�5�1�1�1�1�1�1rWc�:����d�t|j|j�d���}t|j����t	|j|j�����tj���fd���}t||j��||j��d���dS)Nr,r�rc�(��t|�����SrOrl)r^r$r%r#s ���rBr[z6TestInterp.test_periodic_full_matrix.<locals>.<lambda>Fs���K��1�a��$;�$;�rWr[r\)r
rUr�rrr9�	vectorizer)r?rArr$r%r#s   @@@rB�test_periodic_full_matrixz$TestInterp.test_periodic_full_matrix?s������
���t�w���1�j�I�I�I���D�G�Q�'�'��&�t�w����A�>�>��
�\�;�;�;�;�;�;�
<�
<�����$�'�
�
�B�B�t�w�K�K�e�<�<�<�<�<�<rWc���dg}t|j|jdd|f���}t||j��|jdd���t||jdd��|dddd���t|j|jd|df���}t||j��|jdd���t||jdd��|dddd���dS)	N�rg @r*rr[rFr(rrr�)r?r�rAs   rB�test_quadratic_derivzTestInterp.test_quadratic_derivIs����i��
�t�w���1�t�S�k�J�J�J�����$�'�
�
�D�G�%�e�D�D�D�D����$�'�"�+�q�)�)�3�q�6�!�9�5�u�M�M�M�M�
�t�w���1�s�D�k�J�J�J�����$�'�
�
�D�G�%�e�D�D�D�D����$�'�!�*�a�(�(�#�a�&��)�%�e�L�L�L�L�L�LrWc���d}dgdg}}t|j|j|||f���}t||j��|jdd���t||jdd��||jd	d��g|dd|ddgdd���d
gd
g}}t|j|j|||f���}t||j��|jdd���dS)Nr,�rr0)rr1r2r[rFrrr(�r*rr�)r?r%�der_l�der_rrAs     rB�test_cubic_derivzTestInterp.test_cubic_derivVs��
�� �y�7�)�u���t�w����U�E�N�K�K�K�����$�'�
�
�D�G�%�e�D�D�D�D����4�7�1�:�q�)�)�1�1�T�W�R�[�!�+<�+<�=��q��!��e�A�h�q�k�2��U�	L�	L�	L�	L��x�&��u���t�w����U�E�N�K�K�K�����$�'�
�
�D�G�%�e�D�D�D�D�D�DrWc��d\}}tj|���tj��}tj|��}ddg}ddg}t|||||f���}t
||��|dd���t
||d	d
��||d	d��gd�|D����t
||d
d
��||d
d��gd�|D����dS)N)r�r�)rg(�)r*rr�)r*r0rr[rFrrr*c��g|]\}}|��Srkrk�ror��vals   rBrpz2TestInterp.test_quintic_derivs.<locals>.<listcomp>n���4�4�4��"�c��4�4�4rWr(c��g|]\}}|��Srkrkr�s   rBrpz2TestInterp.test_quintic_derivs.<locals>.<listcomp>pr�rW)r9r=�astype�float_r�r
r)r?r%r@r^r�r�r�rAs        rB�test_quintic_derivszTestInterp.test_quintic_derivses�����1��I�a�L�L����	�*�*���F�1�I�I���F�#���'�"���q�!�q�5�%�.�A�A�A�����!���a�e�%�8�8�8�8����1�Q�4����Q�Q�q��t�Q�Z�Z�0�4�4�e�4�4�4�	6�	6�	6����1�R�5�!���a�a��"��q�k�k�2�4�4�e�4�4�4�	6�	6�	6�	6�	6rW�unstable)�reasonc���d}t|j|��}ddg}t|j|j|||df���}t	||j��|jdd���dS)Nr,r�)r*r1r2r[rF)rrUr
r�r)r?r%r#r�rAs     rB�test_cubic_deriv_unstablez$TestInterp.test_cubic_deriv_unstablersm��
���D�G�Q�����'�"���t�w����A��t�}�M�M�M�����$�'�
�
�D�G�%�e�D�D�D�D�D�DrWc���d}tj|jdf|dzz|jdd�|jdd�zdz|jdf|dzzf}t|j|j||dgdgf���}t||j��|jdd�	��t||jdd��||jdd��gd
d
gd���dS)Nr*rrr(r/r�r2r[rFr.r\)r9r�rUr
r�r)r?r%r#rAs    rB�test_knots_not_data_sitesz$TestInterp.test_knots_not_data_sites�s
��
���E�4�7�1�:�-��1��%��7�1�2�2�;����"���-��3��7�2�;�.�!�A�#�&�'�
(��
�t�w����A�)/��6�(�';�
=�
=�
=��	���$�'�
�
�D�G�%�e�D�D�D�D����4�7�1�:�q�)�)�1�1�T�W�R�[�!�+<�+<�=��B�x��	�	�	�	�	�	rWc��d}ddg}ddg}t|||dgdgf���}tjdd��}|dz}t||��|dd���dS)	Nr,r.r!�rr.r�r2r[rF)r
r9rRr)r?r%r^r�rArUr�s       rB�test_minimum_points_and_derivz(TestInterp.test_minimum_points_and_deriv�sy��
��
��H��
��H���q�!�Q�'��W�I�0F�G�G�G��
�[��R�
 �
 ��
��U�����"���r��E�:�:�:�:�:�:rWc��gd�x}}tt��5t||dgdf���ddd��n#1swxYwYtt��5t||d���ddd��n#1swxYwYtt��5t||dg���ddd��n#1swxYwYtt��5t||d���ddd��n#1swxYwYd\}}tt��5t||||f���ddd��dS#1swxYwYdS)N)r!r*r,r-r�r�r�r2�*)r�r�r�)r?r^r��l�rs     rB�test_deriv_speczTestInterp.test_deriv_spec�s���%�$�$�$��A�
�:�
&�
&�	@�	@��q�!�w�i��->�?�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@��:�
&�
&�	6�	6��q�!�W�5�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6��:�
&�
&�	8�	8��q�!�g�Y�7�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8��:�
&�
&�	1�	1��q�!�R�0�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
"���1�
�:�
&�
&�	5�	5��q�!�a��V�4�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5sW�=�A�A�A;�;A?�A?�B:�:B>�B>�C8�8C<�?C<�D>�>E�Ec��d}|j}|jd|jzz}dgdg}}t|||||f���}t||��|dd���t||dd	��||d
d	��g|dd	|dd	gdd���dD]0}t|||���}t||��|dd����1dS)
Nr,r )ry@)ry@@r2r[rFrrr()rrr�)rUr�r
r)r?r%rUr�r�r�rAs       rB�test_complexzTestInterp.test_complex�s��
��
�W��
�W�s�4�7�{�
"��!�z�K�=�u���r�2�q�5�%�.�A�A�A�����"���r��E�:�:�:�:����2�a�5�!���a�a��2���l�l�3��q��!��e�A�h�q�k�2��U�	L�	L�	L�	L��	?�	?�A�"�2�r�Q�/�/�/�A��A�A�b�E�E�2�E��>�>�>�>�>�	?�	?rWc��tjd���tj��}tjd���tj��}dD]}t	|||���}||��� dS)NrPr�r�)r9r=r��int_r
)r?r^r�r%rAs     rB�test_int_xyzTestInterp.test_int_xy�sz���I�b�M�M� � ���)�)���I�b�M�M� � ���)�)���	�	�A�"�1�a�1�-�-�-�A�
�A�a�D�D�D�D�	�	rWc��tjddd��}|ddd�}|ddd�}dD]}t|||����dS)Nr(rr�r�r�r�)r9rRr
)r?rUr^r�r%s     rB�test_sliced_inputzTestInterp.test_sliced_input�sd��
�[��Q��
$�
$���s�s��s�G���s�s��s�G���	*�	*�A��q�!�q�)�)�)�)�)�	*�	*rWc��tjd���t��}|dz}tjtjtjfD]#}||d<t
tt||���$dS)NrPr*r()	r9r=r��floatr;r<r5r7r
)r?r^r��zs    rB�test_check_finitezTestInterp.test_check_finite�ss���I�b�M�M� � ��'�'��
�q�D���&�"�&�2�6�'�*�	@�	@�A��A�b�E��*�&8�!�Q�?�?�?�?�	@�	@rW)rr*r,r�c�z�ttd����}d�|D��}t|||���dS)NrPc��g|]}|dz��S)r*rk)ro�as  rBrpz.TestInterp.test_list_input.<locals>.<listcomp>�s�����a�Q��T���rWr�)r�r�r
r�s    rB�test_list_inputzTestInterp.test_list_input�sC��
��r���O�O����1������1�a�1�%�%�%�%�%�%rWc���tjtj|j��tj|j��f}dddgfg}dddgfg}t|j|d||f���}t
||j��|dd�	��t
||jd
d��|d
ddd�	��t
||jdd��|d
ddd�	��dS)Nrr!r/r0r1r,rr[rFrr()r9r�r�rUr|r
r)r?r�r�r�rAs     rB�test_multiple_rhszTestInterp.test_multiple_rhs�s���
�U�2�6�$�'�?�?�B�F�4�7�O�O�3�
4���b�"�X�����b�"�X�����t�w��a�%���H�H�H�����$�'�
�
�B�U��?�?�?�?����$�'�!�*�a�(�(�%��(�1�+�E��N�N�N�N����$�'�"�+�q�)�)�5��8�A�;�U��O�O�O�O�O�OrWc�R�tj�d��d\}}tjtj�|�����}tj�|dddf���}t	|||��}t|jj|dddf��dtj�d��fg}dtj�d��fg}t	|||||f�	��}t|jj||zdz
dddf��dS)
Nr|�r,r�r�r�r�r�r�r�r�r�r2)r9r>rr�r
rr$r�)r?r%r@r^r�rA�d_l�d_rs        rB�test_shapeszTestInterp.test_shapes�s��
�	���t�������1��G�B�I�$�$�!�$�,�,�-�-���I���1�a��A�,��/�/���q�!�Q�'�'���Q�S�Y��A�q�!��-�-�-��2�9�#�#�I�.�.�/�0���2�9�#�#�I�.�.�/�0���q�!�Q��c�
�;�;�;���Q�S�Y��Q����A�q�!� 4�5�5�5�5�5rWc�J�tj|j��}t|j|dd���}t|j|ddgdgf���}t	|j|jd���t|j|dd���}t|j|ddgdgf���}t	|j|jd���t|j|d	d
���}t|j|d	ddgf���}t	|j|jd���t|j|dd���}t|j|dd���}t	|j|jd���t
t��5t|j|dd
���ddd��n#1swxYwYtjtj|j��tj	|j��f}dddgfg}d	ddgfg}t|j|d||f���}t|j|dd���}t	|j|jd���tj
�d��d\}}tjtj
�
|�����}tj
�
|dddf���}	dtj
d��fg}
dtj
d��fg}t||	||
|f���}t||	|d���}t	|j|jd���dS)Nr,rrr�rEr\)rr)rrr*)Nrr�r�typorr.rr|rr�r�r�r�rr2r)r9r�rUr
rr$r5r7r�r|r>rr�r�)r?r�rr~r�r�r%r@r^r�rrs            rB�test_string_aliaseszTestInterp.test_string_aliasesss��
�V�D�G�_�_�� ����q�)�
D�
D�
D��
����q�F�8�f�X�:N�
O�
O�
O�����b�d��/�/�/�/� ����q�(>�@�@�@��
����q�*0��F�8�(<�>�>�>�����b�d��/�/�/�/� ����q�:K�
L�
L�
L��
����q�4�(��:L�
M�
M�
M�����b�d��/�/�/�/� ����q�,�
G�
G�
G��
����q�$�
?�
?�
?�����b�d��/�/�/�/��:�
&�
&�	A�	A��t�w��a��@�@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A��U�2�6�$�'�?�?�B�F�4�7�O�O�3�
4���b�"�X�����b�"�X����
����q�5�%�.�
I�
I�
I��
����q�(>�@�@�@�����b�d��/�/�/�/�	�	���t�������1��G�B�I�$�$�!�$�,�,�-�-���I���1�a��A�,��/�/���2�8�I�&�&�'�(���2�8�I�&�&�'�(��
��1�a�#�s��
<�
<�
<��
��1�a��
;�
;�
;�����b�d��/�/�/�/�/�/s�)F�F�Fc��tj�d��d\}}tjtj�|�����}tj�|���}t	||��}t||||��}t
||||��}t|j|dd���dS)Nr|)r,r�r�r[rF)	r9r>rr�rr
�make_interp_full_matrrr$)r?r%r@r^r�r#rA�cfs        rB�test_full_matrixzTestInterp.test_full_matrix4s���
�	���t�������1��G�B�I�$�$�!�$�,�,�-�-���I���!��$�$����1�����q�!�Q��*�*��
"�1�a��A�
.�
.�����R�e�%�8�8�8�8�8�8rWc���tj�d��d}tddd��D�]0}t	|dz
dz��}tjtj�d|f����}td|dz��D]�}|d|�|d�fxxtjtj�d||z
f����z
cc<||d�d|�fxxtjtj�d||z
f����z
cc<��tj�||f��}||d|�|d�f<tj�||f��}|||d�d|�f<tj||f��}tt||dz
d����D]F\}}	|	d	krtj||	�
��||d|	�f<�)tj||	�
��|||	d�f<�Gtj�|��}
tt||||
|��tj�||
��d�����2dS)
z�
        Random elements in diagonal matrix with blocks in the
        left lower and right upper corners checking the
        implementation of Woodbury algorithm.
        r|��r,� r*rNr(r)�offsetr[r\)
r9r>rr��int�diagflatr�rE�diagonalrr�linalg�solve)r?r@r%r#rr��ur�ll�dr�rAs           rB�
test_woodburyzTestInterp.test_woodbury?sq��	�	���t�������q�"�a���	?�	?�A��!�a�%�1��%�%�F���B�I�,�,�a��V�4�4�5�5�A��1�f�q�j�)�)�
H�
H���#�A�2�#�q�r�r�'�
�
�
�b�k�"�)�*:�*:�A�q�1�u�:�*F�*F�G�G�G�
�
�
��!�"�"�c��r�c�'�
�
�
�b�k�"�)�*:�*:�A�q�1�u�:�*F�*F�G�G�G�
�
�
�
���!�!�6�6�"2�3�3�B�#%�A�g�v�g��w�x�x�� ���!�!�6�6�"2�3�3�B�#%�A�v�g�h�h����� ���!�Q�� � �A�!�%����!��R�"@�"@�A�A�
8�
8���1��q�5�5�!�{�1�Q�7�7�7�A�a��!��e�H�H�!�{�1�Q�7�7�7�A�a����e�H�H��	� � ��#�#�A��/��2�r�1�a�@�@��I�O�O�A�q�1�1��
?�
?�
?�
?�
?�#	?�	?rWN),r�r�r�r9rRr{rUr�r�r�r�r�rLr>r?r�r�r�r�r�r�r�r�r�r�r�r�r�r��xfailr�r�r�rrrrrrrrrrr,rkrWrBr�r��s�������
���R��B�E��	"�	"�B�	������B�8�8�8�E�E�E�E�E�E��[���S�,�,�,�/�/�*�*�0�/�*��[���S�,�,�,�/�/�
*�
*�0�/�
*�I�I�I�
S�S�S��[���S�"4�"4�"4�5�5�-�-�6�5�-�
7�
7�
7�	>�	>�	>�	7�	7�	7��[���S�,�,�,�/�/�
?�
?�0�/�
?�
2�
2�
2�=�=�=�M�M�M�
E�
E�
E�6�6�6��[���j��)�)�E�E�*�)�E�
�
�
�
;�
;�
;�5�5�5�.?�?�?�"���*�*�*�@�@�@��[���S�,�,�,�/�/�&�&�0�/�&�P�P�P�
6�
6�
6�10�10�10�f	9�	9�	9�?�?�?�?�?rWr�c��|j|jksJ�|j|j|zdzksJ�|j}tj||ftj���}t	|��D]W}||}|||kr|}ntj||��dz
}t
j||||��}	|	||||z
|dz�f<�Xtj	||��}
|
S)z�Assemble an spline order k with knots t to interpolate
    y(x) using full matrices.
    Not-a-knot BC only.

    This routine is here for testing only (even though it's functional).
    r�r8)
r�r9r�r�r�rQr�evaluate_all_bspl�slr()r^r�r#r%r@�Ar��xval�left�bbr$s           rBrr\s���
�6�Q�V������6�Q�V�a�Z�!�^�#�#�#�#�	��A�
��!�Q��r�y�)�)�)�A�
�1�X�X�	!�	!����t���1�Q�4�<�<��D�D��?�1�d�+�+�a�/�D��
$�Q��4��
6�
6�� ��!�T�!�V�D��F�]�
���
���A���A��HrWc��ttj|||f��\}}}|j}|j|z
dz
}tj||ftj���}t
|��D]W}||}|||kr|}	ntj||��dz
}	tj	||||	��}
|
|||	|z
|	dz�f<�Xtj
|j|��}tj
|j|��}tj
||��}
|
||ffS)z,Make the least-square spline, full matrices.rr/)�mapr9rdr�r�r�r�rQrr0�dot�Tr1r()r^r�r#r%�mr@r2r�r3r4r5r��Yr$s              rB�make_lsq_full_matrixr<xs���"�*�q�!�Q�i�(�(�G�A�q�!�	��A�	���
�Q��A�
��!�Q��r�y�)�)�)�A�
�1�X�X�
!�
!����t���1�Q�4�<�<��D�D��?�1�d�+�+�a�/�D��
$�Q��4��
6�
6�� ��!�T�!�V�D��F�]�
���	��q�s�A���A�
��q�s�A���A�
���A���A��q�!�f�9�rWc�J�eZdZej�d��d\ZZejej�e����Z	ej�e��Z
eeje	de	dd��e��Z
d�Zd�Zd�Zd	�Zd
�Zd�Zd�Zd
S)�TestLSQr|)r�r,rr(r�c��|j|j|j|jf\}}}}t	||||��\}}t||||��}t
|j|��t|jj	|j
|z
dz
f��|\}}	tj�
||d���\}
}}}t
|j|
��dS)Nrr()�rcond)r^r�r#r%r<rrr$rr�r�r9r'�lstsq)r?r^r�r#r%�c0�AYrA�aar�rKr�s            rB�
test_lstsqzTestLSQ.test_lstsq�s����V�T�V�T�V�T�V�3�
��1�a��%�a��A�q�1�1���B��A�q�!�Q�'�'�����R� � � ��Q�S�Y���!��a�� 1�2�2�2����B��i�o�o�b�!�2�o�6�6���A�q�!����R� � � � � rWc�\�|j|j|j|jf\}}}}t	j|��}t
||||��}t
|||||���}t|j|jd���t|j|jd���t|j|j��dS)N)�wr[r\)
r^r�r#r%r9r�rrr$r)r?r^r�r#r%rGrA�b_ws        rB�test_weightszTestLSQ.test_weights�s����V�T�V�T�V�T�V�3�
��1�a���L��O�O���A�q�!�Q�'�'���a��A�q�A�.�.�.�����S�U��/�/�/�/����S�U��/�/�/�/��Q�S�#�%� � � � � rWc��|j|j|j|jf\}}}}tj�|dddf���}t
||||��}t|jj	|j
|z
dz
dddf��dS)Nr�r�r�r�r)r^r#r%r@r9r>rrr$r�r�)r?r^r#r%r@r�rAs       rBrzTestLSQ.test_multiple_rhs�s����V�T�V�T�V�T�V�3�
��1�a���I���1�a��A�,��/�/���A�q�!�Q�'�'���Q�S�Y�����!��Q��1� 5�6�6�6�6�6rWc�,�|j|j|j}}}|jdz}t	||||��}t	||j||��}t	||j||��}t||��||��d||��zzdd���dS)Ny�?@r rErF)r^r#r%r�rr�r�r)r?r^r#r%r*rAr�r�s        rBrzTestLSQ.test_complex�s����&�$�&�$�&�a�1��
�V�x�
 ���A�r�1�a�(�(���q�"�'�1�a�0�0���q�"�'�1�a�0�0�����!���d�d�1�g�g��D�D��G�G��3�%�e�L�L�L�L�L�LrWc��tjd���tj��}tjd���tj��}t	|d���}t|||d���dS)NrPrr�)r9r=r�rrr)r?r^r�r#s    rBrzTestLSQ.test_int_xy�sh���I�b�M�M� � ���)�)���I�b�M�M� � ���)�)���A��O�O�O����1�a�1�%�%�%�%�%�%rWc��tjddd��}|ddd�}|ddd�}t|d��}t|||d���dS)Nr(rr�r,r�)r9rRrr)r?rUr^r�r#s     rBrzTestLSQ.test_sliced_input�s]��
�[��Q��
$�
$���s�s��s�G���s�s��s�G���A�q�M�M����1�a�1�%�%�%�%�%�%rWc��tjd���t��}|dz}t	|d��}tjtjtjfD]$}||d<ttt|||���%dS)N�r*r,r()
r9r=r�r
rr;r<r5r7r)r?r^r�r#rs     rB�test_checkfinitezTestLSQ.test_checkfinite�s����I�b�M�M� � ��'�'��
�q�D���A�q�M�M���&�"�&�2�6�'�*�	@�	@�A��A�b�E��*�o�q�!�Q�?�?�?�?�	@�	@rWN)r�r�r�r9r>rr@r%r�r^r�rrRr#rErIrrrrrPrkrWrBr>r>�s�������I�N�N�4�����D�A�q�����	� � ��#�#�$�$�A�
�	������A������A�a�D�!�B�%��+�+�Q�/�/�A�
!�
!�
!�
!�
!�
!�7�7�7�	M�	M�	M�&�&�&�&�&�&�@�@�@�@�@rWr>c���tj�tj�tj�t
����d|��S)N�data)�os�path�join�abspath�dirname�__file__)�basenames rB�	data_filerZ�s=��
�7�<�<����������(A�(A�B�B���*�*�*rWc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestSmoothingSplinec�2�tj�d��d}tjtj�|��dzdz
��}|dztjd|z��z|dzztj�dd|��z}tt��5t||dd���ddd��n#1swxYwYtt��5t|dd�|��ddd��n#1swxYwYtt��5t|�
d|��|��ddd��n#1swxYwYtt��5t|ddd	�|��ddd��n#1swxYwYtj|��}|d|d
<tt��5t||��ddd��dS#1swxYwYdS)Nr|r�r-r*r,r.r�rr(r)r9r>rr�rr��normalr5r7rreru)r?r@r^r��x_dupls     rB�test_invalid_inputz&TestSmoothingSpline.test_invalid_input�s��
�	���t�������G�B�I�+�+�A�.�.��2�Q�6�7�7��
�q�D�2�6�!�a�%�=�=� �1�a�4�'�"�)�*:�*:�2�s�A�*F�*F�F���:�
&�
&�	,�	,�!�!�Q�q�r�r�U�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�:�
&�
&�	,�	,�!�!�A�B�B�%��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�:�
&�
&�	6�	6�!�!�)�)�A�q�/�/�1�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6��:�
&�
&�	.�	.�!�!�D�D�b�D�'�1�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��������1�I��q�	�
�:�
&�
&�	-�	-�!�&�!�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-sZ�2C�C�C�6D�D�"D�:%E+�+E/�2E/�
F0�0F4�7F4�.H�H�Hc���tjtd����}|d}|d}|d}t||��|��}t	||dd���dS)ae
        Data is generated in the following way:
        >>> np.random.seed(1234)
        >>> n = 100
        >>> x = np.sort(np.random.random_sample(n) * 4 - 2)
        >>> y = np.sin(x) + np.random.normal(scale=.5, size=n)
        >>> np.savetxt('x.csv', x)
        >>> np.savetxt('y.csv', y)

        We obtain the result of performing the GCV smoothing splines
        package (by Woltring, gcvspl) on the sample data points
        using its version for Octave (https://github.com/srkuberski/gcvspl).
        In order to use this implementation, one should clone the repository
        and open the folder in Octave.
        In Octave, we load up ``x`` and ``y`` (generated from Python code
        above):

        >>> x = csvread('x.csv');
        >>> y = csvread('y.csv');

        Then, in order to access the implementation, we compile gcvspl files in
        Octave:

        >>> mex gcvsplmex.c gcvspl.c
        >>> mex spldermex.c gcvspl.c

        The first function computes the vector of unknowns from the dataset
        (x, y) while the second one evaluates the spline in certain points
        with known vector of coefficients.

        >>> c = gcvsplmex( x, y, 2 );
        >>> y0 = spldermex( x, c, 2, x, 0 );

        If we want to compare the results of the gcvspl code, we can save
        ``y0`` in csv file:

        >>> csvwrite('y0.csv', y0);

        z
gcvspl.npzr^r��y_GCVSPLg-C��6?rFN)r9�loadrZrr)r?rRr^r�rb�y_comprs      rB�test_compare_with_GCVSPLz,TestSmoothingSpline.test_compare_with_GCVSPLsq��R�w�y��.�.�/�/����I����I���
�#��-�'��1�-�-�a�0�0��
	����4�@�@�@�@�@�@rWc��tj�d��d}tjtj�|��dzdz
��}|dztjd|z��z|dzztj�dd|��z}t||d���}t||dd	�
��}tj	|d|dd|z��}t||��||��d
���dS)z�
        In case the regularization parameter is 0, the resulting spline
        is an interpolation spline with natural boundary conditions.
        r|r�r-r*r,r.r�)�lamrr2rr(rEr\N)r9r>rr�rr�r^rr
rRr)r?r@r^r��
spline_GCV�
spline_interp�grids       rB�test_non_regularized_casez-TestSmoothingSpline.test_non_regularized_case=s��	�	���t�������G�B�I�+�+�A�.�.��2�Q�6�7�7��
�q�D�2�6�!�a�%�=�=� �1�a�4�'�"�)�*:�*:�2�s�A�*F�*F�F��*�1�a�R�8�8�8�
�*�1�a��I�F�F�F�
��{�1�Q�4��2���A��.�.���
�
�4�(�(�%�
�d�+�+�"�	$�	$�	$�	$�	$�	$rWc���tj�d��d}tjtj�|��dzdz
��}|dztjd|z��z|dzztj�dd|��z}t||��}tj�td��d�	��D]�}tj
|��}d
||<t|||��}t|||��||z
��}t|||��||z
��}	||	krtd|d�d
|	d�������dS)Nr|r�r-r*r,r.r�rPr�g>@zJSpline with weights should be closer to the points than the original one: z.4z < )
r9r>rr�rr�r^r�choicer��ones�absr7)
r?r@r^r�r	�indrG�spl_w�orig�weighteds
          rB�test_weighted_smoothing_splinez2TestSmoothingSpline.test_weighted_smoothing_splinePsw��
�	���t�������G�B�I�+�+�A�.�.��2�Q�6�7�7��
�q�D�2�6�!�a�%�=�=� �1�a�4�'�"�)�*:�*:�2�s�A�*F�*F�F��#�A�q�)�)���9�#�#�E�#�J�J�R�#�8�8�	3�	3�C����
�
�A��A�c�F�)�!�Q��2�2�E��s�s�1�S�6�{�{�Q�s�V�+�,�,�D��5�5��3��=�=�1�S�6�1�2�2�H��h��� �"2�CG�!O�"2�"2�$,�!1�"2�"2�3�3�3��	3�	3rWN)r�r�r�r`rerkrtrkrWrBr\r\�sT������-�-�-�04A�4A�4A�l$�$�$�&3�3�3�3�3rWr\r�)rmr,)r,)9�numpyr9�
numpy.testingrrrrLrr5�scipy.interpolaterrr	r
rrr
rrrrrrrrr�scipy.linalgr'r1�scipy.interpolate._bsplinesrrrrr�scipy.interpolate._fitpack_impl�interpolate�
_fitpack_implr�rSrrGrJrmrrr�r]r�rJrFrxr�rr<r>rZr\rkrWrB�<module>r}s�������@�@�@�@�@�@�@�@�@�@�*�*�*�*�*�*�
�
�
�
�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�C�������E�E�E�E�E�E�E�E�E�E�E�E�E�E�0�/�/�/�/�/�/�/�/�	�	�	�	�~C�~C�~C�~C�~C�~C�~C�~C�B6�6�6�.���&
G�
G�
G�>�>�>�
�
�
�H�H�H�����$+�+�+�+����$\+�\+�\+�\+�\+�\+�\+�\+�~g?�g?�g?�g?�g?�g?�g?�g?�T

�
�
�8����8O@�O@�O@�O@�O@�O@�O@�O@�d*�*�*�
|3�|3�|3�|3�|3�|3�|3�|3�|3�|3rW

Youez - 2016 - github.com/yon3zu
LinuXploit