§
    ¢éUgöp ã                   ó~  — d dl Z d dlZd dlZd dlZd dlmZmZmZ d dl	m
Z d dl	Z	d d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mZmZmZmZmZmZ d dlm Z! d dl"m#c m Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,c m-Z. d dl/m0Z0 d dl1m2Z2 d dlm3Z4 d d	lm5Z6  G d
„ d¦  «        Z7 G d„ d¦  «        Z8d„ Z9d„ Z:d„ Z;d„ Z<d„ Z=d„ Z>d/d„Z?d0d„Z@d„ ZA G d„ d¦  «        ZB G d„ d¦  «        ZCd„ ZDd1d„ZE G d„ d ¦  «        ZFd!„ ZG G d"„ d#¦  «        ZHd$„ ZId%„ ZJd&„ ZK G d'„ d(¦  «        ZL G d)„ d*¦  «        ZM G d+„ d,¦  «        ZN G d-„ d.¦  «        ZOdS )2é    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Ú	NdBSplineÚmake_smoothing_splineÚRegularGridInterpolator)Ú_not_a_knotÚ_augkntÚ_woodbury_algorithmÚ_periodic_knotsÚ_make_interp_per_full_matr)Ú	AxisError)Úmake_ndbspl)Ú	_dfitpack)Ú	_bsplinesc                   ót  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej          !                    d e"dd¦  «        ¦  «        d „ ¦   «         Z#d!„ Z$d"„ Z%ej          !                    d#g d$¢¦  «        ej          !                    d% e"d&¦  «        ¦  «        d'„ ¦   «         ¦   «         Z&d(„ Z'd)„ Z(d*„ Z)ej          !                    d+g d,¢¦  «        d-„ ¦   «         Z*ej          !                    d+g d,¢¦  «        d.„ ¦   «         Z+d/„ Z,d0„ Z-d1S )2ÚTestBSplinec           
      ó  — t          t          t          ft          fi t	          ddgdgd¬¦  «        ¤Ž t          j        d¬¦  «        5  t          t          t          fi t	          dt
          j        gdgd¬¦  «        ¤Ž d d d ¦  «         n# 1 swxY w Y   t          t          t          fi t	          dt
          j        gdgd¬¦  «        ¤Ž t          t          t          fi t	          ddgdgd¬¦  «        ¤Ž t          t          t          fi t	          dgdggdgd¬¦  «        ¤Ž t          t          t          fi t	          g d	¢dgd¬¦  «        ¤Ž t          t          t          fi t	          g d
¢ddgd¬¦  «        ¤Ž t          t          t          fi t	          g d¢g d¢d¬¦  «        ¤Ž t          t          t          fi t	          g d¢g d¢d¬¦  «        ¤Ž t          t          t          fi t	          g d¢g d¢d¬¦  «        ¤Ž d\  }}t          j	        ||z   dz   ¦  «        }t
          j
         
                    |¦  «        }t          |||¦  «        }t          ||j        ¦  «         t          ||j        ¦  «         t          ||j        ¦  «         d S )Né   ù              ð?ç      ð?r   ©ÚtÚcÚkÚignore)Úinvalidéÿÿÿÿ©r   r%   é   ©r   r%   r0   é   é   r0   )ç        r4   r'   ç       @ç      @ç      @)r'   r'   r'   Úcubicç      @)r4   r   r%   r%   r0   r2   )r'   r%   r%   ©é   r2   )Úassert_raisesÚ	TypeErrorÚ
ValueErrorr   ÚdictÚnpÚerrstateÚnanÚinfÚarangeÚrandomr   r)   r*   r   r+   )ÚselfÚnr+   r)   r*   Úbs         úd/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/interpolate/tests/test_bsplines.pyÚ	test_ctorzTestBSpline.test_ctor!   s+  € å•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ÂBc                 óP  — t          ¦   «         }|j        }t          |j        |d         dd¬¦  «         t          |j        |d         dd¬¦  «         t          |j        |d         ¦  «         t          j        t          ¦  «        5  d|_        d d d ¦  «         d S # 1 swxY w Y   d S )Nr   çVçž¯Ò<©ÚatolÚrtolr%   r0   Úfoo)
Ú_make_random_splineÚtckr   r)   r*   r   r+   Úpytestr   ÚAttributeError)rF   rH   rR   s      rI   Útest_tckzTestBSpline.test_tckD   sá   € ÝÑ!Ô!ˆØŒeˆå˜œ˜S œV¨%°eÐ<Ñ<Ô<Ð<Ý˜œ˜S œV¨%°eÐ<Ñ<Ô<Ð<Ý�Q”S˜#˜aœ&Ñ!Ô!Ð!õ Œ]�>Ñ*Ô*ð 	ð 	ØˆAŒEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ÂBÂBÂ"Bc                 ó  — t          j        ddd¦  «        }t          ddgdgd¬¦  «        }t           ||¦  «        d¦  «         t          g d¢ddgd¬¦  «        }t           ||¦  «        t          j        |d	k     dd¦  «        ¦  «         d S )
Nr   r%   é
   r6   r(   r2   )r   çffffffÖ?r%   r3   rX   )r@   Úlinspacer   r   Úwhere©rF   ÚxxrH   s      rI   Útest_degree_0zTestBSpline.test_degree_0P   s“   € ÝŒ[˜˜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                 ó’  — g d¢}g d¢}d}t          |||¦  «        }t          j        ddd¦  «        }t          |d         t	          |¦  «        z  |d         t	          |dz
  ¦  «        z  z   |d         t	          |dz
  ¦  «        z  z    ||¦  «        d¬	¦  «         t          t          ||||f¦  «         ||¦  «        d¬	¦  «         d S )
Nr1   ©r%   r0   r2   r%   r2   é2   r   r0   ç›+¡†›„=©rN   )r   r@   rY   r   ÚB_012r   )rF   r)   r*   r+   rH   Úxs         rI   Útest_degree_1zTestBSpline.test_degree_1Y   sÒ   € Øˆ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¸Ð>Ñ>Ô>Ð>Ð>Ð>r^   c                 óÂ  — d}t          j        dg|dz   z  dg|dz   z  z   ¦  «        }t          j        g d¢¦  «        }t          |                     dd¦  «        ddg¦  «        }t	          |||¦  «        }t          j        ddd¦  «        }t           ||d	¬
¦  «         ||d	¬
¦  «        d¬¦  «         t          t          ||||f¦  «         ||¦  «        d¬¦  «         d S )Nr2   r   r%   ©r'   r5   r6   r7   r.   g      ð¿r5   rW   T©Úextrapolaterb   rc   )r@   Úasarrayr   Úreshaper   rY   r   r   )rF   r+   r)   r*   ÚbpÚbsplr\   s          rI   Útest_bernsteinzTestBSpline.test_bernsteind   s
  € àˆÝŒ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ð	.ñ 	.ô 	.ð 	.ð 	.ð 	.r^   c                 ó(  ‡‡‡— t          ¦   «         }|j        \  ŠŠŠt          j        ‰‰         ‰‰ dz
           d¦  «        } ||¦  «        }ˆˆˆfd„|D ¦   «         }t	          ||d¬¦  «         ˆˆˆfd„|D ¦   «         }t	          ||d¬¦  «         d S )Nr%   ra   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS © ©Ú_naive_eval©Ú.0re   r*   r+   r)   s     €€€rI   ú
<listcomp>z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>z   s'   ø€ Ð3Ð3Ð3¨1�{˜1˜a  AÑ&Ô&Ð3Ð3Ð3r^   rb   rc   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS rr   )Ú_naive_eval_2ru   s     €€€rI   rw   z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>}   s'   ø€ Ð6Ð6Ð6¨a•˜a  A qÑ)Ô)Ð6Ð6Ð6r^   )rQ   rR   r@   rY   r   )	rF   rH   r\   Úy_bÚy_nÚy_n2r*   r+   r)   s	         @@@rI   Útest_rndm_naive_evalz TestBSpline.test_rndm_naive_evalr   s»   øøø€ õ  Ñ!Ô!ˆØ”%‰ˆˆ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¨Ð.Ñ.Ô.Ð.Ð.Ð.r^   c           	      óÜ   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           ||¦  «        t          ||||f¦  «        d¬¦  «         d S )Nr%   ra   rb   rc   ©rQ   rR   r@   rY   r   r   ©rF   rH   r)   r*   r+   r\   s         rI   Útest_rndm_splevzTestBSpline.test_rndm_splev€   sn   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œ�u R¨!¨Q°¨Ñ3Ô3¸%Ð@Ñ@Ô@Ð@Ð@Ð@r^   c                 óÐ  — t           j                             d¦  «         t          j        t           j                             d¦  «        ¦  «        }t           j                             d¦  «        }t	          ||¦  «        }t          |Ž }|j        |j        }}t          j        ||         || dz
           d¦  «        }t           ||¦  «        t          ||¦  «        d¬¦  «         d S )NéÒ  é   r%   éP   rb   rc   )r@   rE   ÚseedÚsortr   r   r)   r+   rY   r   r   )rF   re   ÚyrR   rH   r)   r+   r\   s           rI   Útest_rndm_splrepzTestBSpline.test_rndm_splrep†   s¹   € Ý
Œ	�Š�tÑÔÐÝŒG•B”I×$Ò$ RÑ(Ô(Ñ)Ô)ˆÝŒI×Ò˜RÑ Ô ˆå�Q˜‰lŒlˆÝ�SˆMˆàŒs�A”Cˆ1ˆÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œ�u R¨™~œ~°EÐ:Ñ:Ô:Ð:Ð:Ð:r^   c                 ó  — t          ¦   «         }t          j        |j        ¦  «        |_        t          j        |j        |j                 |j        |j         dz
           d¦  «        }t           ||¦  «        d¦  «         d S )Nr%   éd   r'   )rQ   r@   Ú	ones_liker*   rY   r)   r+   r   )rF   rH   r\   s      rI   Útest_rndm_unityzTestBSpline.test_rndm_unity’   sg   € ÝÑ!Ô!ˆÝŒl˜1œ3ÑÔˆŒÝŒ[˜œ˜QœSœ 1¤3¨¬ t¨A¡v¤;°Ñ4Ô4ˆÝ˜˜˜"™œ˜rÑ"Ô"Ð"Ð"Ð"r^   c                 óŽ  — d\  }}t          j        t           j                             |¦  «        ¦  «        }t           j                             |ddf¬¦  «        }t          |||¦  «        }||         || dz
           }}|||z
  t           j                             d¦  «        z  z   }t	           ||¦  «        j        d¦  «         d S )N©é   r2   é   é   ©Úsizer%   ©r2   r3   é   )r2   r3   r–   r‘   r’   )r@   r‡   rE   r   r   Úshape)	rF   rG   r+   r)   r*   rH   ÚtmÚtpr\   s	            rI   Útest_vectorizationzTestBSpline.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Ð2r^   c           	      óÒ  — d\  }}t          j        t           j                             ||z   dz   ¦  «        ¦  «        }t           j                             |¦  «        }t           j        |t           j                             |dz   ¦  «        f         }t	          |||¦  «        t	          |||¦  «        }}|d         |d         z
  }t          j        |d         |z
  |d         |z   d¦  «        }	t           ||	¦  «         ||	¦  «        d¬¦  «         t           ||	¦  «        t          |	|||f¦  «        d¬¦  «         t           ||	¦  «        t          |	|||f¦  «        d¬¦  «         d S )N)é!   r2   r%   r.   r   ra   rb   rc   )r@   r‡   rE   Úr_r   rY   r   r   )
rF   rG   r+   r)   r*   Úc_padrH   Úb_padÚdtr\   s
             rI   Ú
test_len_czTestBSpline.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ÐDr^   c           	      óÊ   — t          ¦   «         }|j        \  }}}||         || dz
           }}dD ]2}t           |||g|¦  «         ||dz   |dz
  g|¦  «        d¬¦  «         Œ3d S )Nr%   )TFç»½×Ùß|Û=ç•Ö&è.>rc   ©rQ   rR   r   )rF   rH   r)   Ú_r+   r˜   r™   Úextraps           rI   Útest_endpointszTestBSpline.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ð 	Lr^   c           	      óÈ   — t          ¦   «         }|j        \  }}}t           |||dz   | dz
  …         dz
  ¦  «         |||dz   | dz
  …         dz   ¦  «        d¬¦  «         d S )Nr%   r£   r¤   rc   r¥   )rF   rH   r)   r¦   r+   s        rI   Útest_continuityzTestBSpline.test_continuity¼   s„   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝ˜˜˜!˜A˜a™C   1¡˜Hœ+¨Ñ-Ñ.Ô.°°°!°A°a±C¸¸¸1¹°H´+ÀÑ2EÑ0FÔ0FØð	ñ 	ô 	ð 	ð 	ð 	r^   c           	      ó¬  — t          ¦   «         }|j        \  }}}|d         |d         z
  }t          j        ||         |z
  || dz
           |z   d¦  «        }||         |k     ||| dz
           k     z  }t	           |||         d¬¦  «         |||         d¬¦  «        ¦  «         t	           ||d¬¦  «        t          ||||fd¬¦  «        ¦  «         d S )	Nr.   r   r%   ra   Tri   F)Úextr   )rF   rH   r)   r*   r+   r    r\   Úmasks           rI   Útest_extrapzTestBSpline.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 ˜)¨Ð+Ñ+Ô+ñ	-ô 	-ð 	-ð 	-ð 	-r^   c                 óâ   — t          ¦   «         }|j        \  }}}|d         dz
  |d         dz   g} ||¦  «        }t          t          j        t          j        |¦  «        ¦  «         ¦  «         d S )Nr   r%   r.   )rQ   rR   r   r@   ÚallÚisnan)rF   rH   r)   r¦   r+   r\   Úyys          rI   Útest_default_extrapzTestBSpline.test_default_extrapÒ   sj   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaØ�Œd�Q‰h˜˜"œ ™	Ð"ˆØˆQˆr‰UŒUˆÝ•B”F�2œ8 B™<œ<Ñ(Ô(Ð(Ñ)Ô)Ð)Ð)Ð)r^   c           	      óÚ  — t           j                             d¦  «         t          j        t           j                             d¦  «        ¦  «        }t           j                             d¦  «        }d}t	          |||d¬¦  «        }|j        |dz   z
  }|d         |d	         z
  }t          j        ||         |z
  ||         |z   d
¦  «        }||         |||         z
  ||         ||         z
  z  z   }t           ||¦  «        t          ||||f¦  «        ¦  «         g d¢}||         |||         z
  ||         ||         z
  z  z   }t           ||d¬¦  «         ||d¬¦  «        ¦  «         d S )Nrƒ   é   r3   r2   Úperiodicri   r%   r.   r   ra   )r.   r   ç      à?r%   T)
r@   rE   r†   r‡   r   r”   rY   r   r   r   )	rF   r)   r*   r+   rH   rG   r    r\   Úxys	            rI   Ú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ÐLr^   c                 óö   — t          ¦   «         }|j        \  }}}t          j        |||f¦  «        }t	          j        ||         ||          d¦  «        }t           ||¦  «         ||¦  «        dd¬¦  «         d S )Nr‹   rb   rM   )rQ   rR   r	   Úfrom_spliner@   rY   r   )rF   rH   r)   r*   r+   Úppr\   s          rI   Ú
test_ppolyzTestBSpline.test_ppolyì   sz   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝÔ  1 a˜yÑ)Ô)ˆåŒ[˜˜1œ˜q ! œu cÑ*Ô*ˆÝ˜˜˜"™œ˜r˜r "™vœv¨E¸Ð>Ñ>Ô>Ð>Ð>Ð>r^   c                 ót  — t          ¦   «         }|j        \  }}}t          j        |d         |d         d¦  «        }t          j        ||f         }t          d|dz   ¦  «        D ]4}t          ||||f|¬¦  «        }t          | |||¬¦  «        d¬¦  «         Œ5t           |||dz   ¬¦  «        dd¬¦  «         d S )	Nr   r.   ra   r%   ©Úder©Únurb   rc   )rQ   rR   r@   rY   r�   Úranger   r   )rF   rH   r)   r*   r+   r\   rÀ   Úyds           rI   Ú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Ð5r^   c                 óÜ  — d}g d¢}t           j                             d¦  «         t           j        ddt           j                             d¦  «        ddf         }t	          |||¦  «        }t          j        g d¢¦  «        }t           |||dk             dz
  ¦  «         |||dk             dz   ¦  «        ¦  «         t          t          j         |d	¦  «         |d
¦  «        ¦  «         ¦  «         t          j        ddg¦  «        }t           ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «         t          j        ddg¦  «        }t          t          j	        t          j         ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «        ¦  «         ¦  «         t          t          j	        t          j         ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «        ¦  «         ¦  «         d S )Nr0   )r.   r.   r   r%   r%   r2   r3   r‘   r‘   r‘   r’   r’   rƒ   r   r–   )r%   r2   r3   r‘   r‘   r£   g2Hþÿÿÿ@gÎ·   @r2   r3   r%   rÁ   )
r@   rE   r†   r�   r   rk   r   r   Úallcloser°   )rF   r+   r)   r*   rH   re   Úx0Úx1s           rI   Ú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ñ;ô ;ñ <ô <ð <ñ 	=ô 	=ð 	=ð 	=ð 	=r^   c           	      óø  — t          j        ddd¦  «        }t          j        g d¢¬¦  «        }t	           ||¦  «        t          ||j        |j        |j        f¦  «        d¬¦  «         t	           ||¦  «        t          |¦  «        d¬¦  «         t          j        g d¢¬¦  «        }t          j        d	d
d¦  «        }t	           ||¦  «        t          j
        |dk     ||z  d|z
  d
z  ¦  «        d¬¦  «         d S )Nr.   r3   r„   ©r   r%   r0   r2   )r)   rb   rc   ©r   r%   r%   r0   r   r0   rW   r%   r5   )r@   rY   r   Úbasis_elementr   r   r)   r*   r+   ÚB_0123rZ   r[   s      rI   Útest_basis_element_quadraticz(TestBSpline.test_basis_element_quadratic  s  € ÝŒ[˜˜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ð 	Ar^   c           	      óÚ   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           ||¦  «        t          ||||¦  «        d¬¦  «         d S )Nr%   r„   rb   rc   )rQ   rR   r@   rY   r   Ú_sum_basis_elementsr€   s         rI   Útest_basis_element_rndmz#TestBSpline.test_basis_element_rndm*  sm   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œÕ2°2°q¸!¸QÑ?Ô?ÀeÐLÑLÔLÐLÐLÐLr^   c                 óÀ  — t          ¦   «         }|j        \  }}}|dz  }t          |||¦  «        }t          ||j        j        |¦  «        }t          ||j        j        |¦  «        }t          j        ||         || dz
           d¦  «        }t           ||¦  «        j         ||¦  «        d¬¦  «         t           ||¦  «        j         ||¦  «        d¬¦  «         d S )Ny      ð?      @r%   r„   rb   rc   )	rQ   rR   r   r*   ÚrealÚimagr@   rY   r   )	rF   rH   r)   r*   r+   ÚccÚb_reÚb_imr\   s	            rI   Ú
test_cmplxzTestBSpline.test_cmplx0  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Ð9r^   c                 óš   — t          j        g d¢¦  «        }t          t          j         |t          j        ¦  «        ¦  «        ¦  «         d S )NrÍ   )r   rÎ   r   r@   r±   rB   ©rF   rH   s     rI   Útest_nanzTestBSpline.test_nan=  s>   € åÔ! , , ,Ñ/Ô/ˆÝ•”˜˜�2œ6™œÑ#Ô#Ñ$Ô$Ð$Ð$Ð$r^   c                 óD  — t          d¬¦  «        }|j        \  }}}t          |||¦  «        }t          j        ||         || dz
           d¦  «        }t          d|¦  «        D ]<}|                     ¦   «         }t           |||¦  «         ||¦  «        dd¬¦  «         Œ=d S )Nr–   ©r+   r%   r„   çê-�™—q=rM   )rQ   rR   r   r@   rY   rÃ   Ú
derivativer   )rF   rH   r)   r*   r+   Úb0r\   Újs           rI   Útest_derivative_methodz"TestBSpline.test_derivative_methodB  s¯   € Ý !Ð$Ñ$Ô$ˆØ”%‰ˆˆ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ð 	Fr^   c                 ó   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           |                     ¦   «                              ¦   «         |¦  «         ||¦  «        dd¬¦  «         t          j        |||f         }t          j        ||f¦  «        }t          |||¦  «        }t	           |                     ¦   «                              ¦   «         |¦  «         ||¦  «        dd¬¦  «         d S )Nr%   r„   rb   rM   )
rQ   rR   r@   rY   r   Úantiderivativerá   Úc_Údstackr   r€   s         rI   Útest_antiderivative_methodz&TestBSpline.test_antiderivative_methodK  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ð 	7r^   c                 ó
  — t          j        g d¢¦  «        }t          |                     dd¦  «        d¦  «         t          |                     dd¦  «        d¦  «         t          |                     dd¦  «        d¦  «         t          |                     dd¦  «        d¦  «         t          |                     ddd¬¦  «        d¦  «         t          |                     ddd	¬¦  «        d¦  «         t          |                     ddd	¬¦  «        d¦  «         t          |                     ddd	¬¦  «        t	          j        dd|j        ¦  «        ¦  «         d
|_        |                     ¦   «         } |d¦  «         |d¦  «        z
  }t          |                     dd¦  «        |¦  «         t          |                     dd¦  «        d|z  ¦  «         t          |                     dd¦  «        |¦  «         t          |                     dd¦  «        d|z  ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
  ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  d|z  z   ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
  ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
  ¦  «         t          |                     dd¦  «         |d¦  «         |d¦  «        z
  d|z  z
  ¦  «         d S )Nr/   r   r%   r·   ç      à¿r.   Tri   Fr¶   r0   i÷ÿÿÿiùÿÿÿiøÿÿÿéüÿÿÿç      ø?r2   g      +@é   r‘   iöÿÿÿr3   )	r   rÎ   r   Ú	integrateÚ_implr   rR   rj   ræ   )rF   rH   ÚiÚ
period_ints       rI   Útest_integralzTestBSpline.test_integralY  s»  € ÝÔ! ) ) )Ñ,Ô,ˆÝ˜Ÿš 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ÐIr^   c                 óä   — g d¢}t          ||¦  «        }d|_        t          j        |¦  «        }dD ]=\  }}t	          |                     ||¦  «        |                     ||¦  «        ¦  «         Œ>d S )Nr1   r¶   ))éûÿÿÿr·   )r·   r–   )rì   é   )r
   rj   r	   r»   r   rï   )rF   re   rH   ÚprÈ   rÉ   s         rI   Útest_integrate_ppolyz TestBSpline.test_integrate_ppoly~  s†   € àˆOˆOˆÝ˜q !Ñ$Ô$ˆØ"ˆŒÝÔ˜aÑ Ô ˆà5ð 	1ð 	1‰FˆB�Ý˜AŸKšK¨¨BÑ/Ô/ØŸKšK¨¨BÑ/Ô/ñ1ô 1ð 1ð 1ð	1ð 	1r^   c                 ó   —  G d„ dt           ¦  «        }|                     g d¢¦  «        }t          |j        |¦  «         t          |                     ¦   «         j        |¦  «         t          |                     ¦   «         j        |¦  «         d S )Nc                   ó   — e Zd ZdS )ú'TestBSpline.test_subclassing.<locals>.BN)Ú__name__Ú
__module__Ú__qualname__rr   r^   rI   ÚBrû   ‹  s   € € € € € ØˆDr^   rÿ   )r   r%   r0   r0   )r   rÎ   r   Ú	__class__rá   ræ   )rF   rÿ   rH   s      rI   Útest_subclassingzTestBSpline.test_subclassing‰  s•   € ð	ð 	ð 	ð 	ð 	•ñ 	ô 	ð 	ð �OŠO˜L˜L˜LÑ)Ô)ˆÝ�Q”[ !Ñ$Ô$Ð$Ý�Q—\’\‘^”^Ô-¨qÑ1Ô1Ð1Ý�Q×%Ò%Ñ'Ô'Ô1°1Ñ5Ô5Ð5Ð5Ð5r^   Úaxisrì   r3   c                 ó  — d\  }}t          j        dd||z   dz   ¦  «        }g d¢}|dz  }|                     ||¦  «         t           j                             |¬¦  «        }t	          ||||¬¦  «        }t          |j        j        ||         g|d |…         z   ||dz   d …         z   ¦  «         t           j                             d¦  «        }	t           ||	¦  «        j        |d |…         t          |	j        ¦  «        z   ||dz   d …         z   ¦  «         |j	         dz
  |j	        fD ]+}
t          t          t          fi t          ||||
¬	¦  «        ¤Ž Œ,t	          ||||¬¦  «                             ¦   «         t	          ||||¬¦  «                             d
¦  «        t	          ||||¬¦  «                             ¦   «         t	          ||||¬¦  «                             d
¦  «        fD ]}t          |j        |j        ¦  «         Œd S )Nr�   r   r%   ©r‘   r’   rµ   r3   r“   ©r  r•   )r)   r*   r+   r  r0   )r@   rY   r   rE   r   r   r*   r—   ÚlistÚndimr<   r   r?   rá   ræ   r  )rF   r  rG   r+   r)   ÚshÚpos_axisr*   rH   ÚxpÚaxÚb1s               rI   Ú	test_axiszTestBSpline.test_axis“  s3  € à‰ˆˆ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Ý�)¥Wð :ð :Ý  1¨¨Q°RÐ8Ñ8Ô8ð:ð :ð :ð :õ ˜1˜a ¨Ð.Ñ.Ô.×9Ò9Ñ;Ô;Ý˜1˜a ¨Ð.Ñ.Ô.×9Ò9¸!Ñ<Ô<Ý˜1˜a ¨Ð.Ñ.Ô.×=Ò=Ñ?Ô?Ý˜1˜a ¨Ð.Ñ.Ô.×=Ò=¸aÑ@Ô@ðBð 	*ð 	*ˆBõ ˜œ !¤&Ñ)Ô)Ð)Ð)ð		*ð 	*r^   c                 ó"  — d}g d¢}t          j        g d¢g d¢g¦  «        }t          |||d¬¦  «        }t          ||d         |¦  «        }t          ||d         |¦  «        }t           |d	¦  «         |d	¦  «         |d	¦  «        g¦  «         d S )
Nr0   )r   r%   r0   r2   r3   r–   r‘   )r.   r0   r   r.   )r0   r   éýÿÿÿr%   r.   r  r   r%   r9   )r@   Úarrayr   r   )rF   r+   r)   r*   ÚsplÚspl0Úspl1s          rI   Útest_neg_axiszTestBSpline.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Ð6r^   c                 ó¾   — d„ }d}d}dD ]} ||||¦  «         Œt          ddd¦  «        D ]} |||d¦  «         Œd}t          dd	¦  «        D ]} |||d
¦  «         ŒdS )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                 óŒ  — t           j                             d¦  «         t          j        t           j                             | ¦  «        dz  dz
  ¦  «        }t           j                             | ¦  «        dz  dz
  }|dk    r|d         |d<   t          ||||¬¦  «        }t          j        t          |j        ¦  «        |z
  dz
  ¦  «        } t          |j        ||¦  «        |¦  «        }t          j
        ||j        |¦  «                             ¦   «         }t          ||j        z  |d	¬
¦  «         t          ||d	¬
¦  «         dS )zY
            To avoid repetition of code the following function is provided.
            rƒ   é(   r„   r¶   r.   r   ©r+   Úbc_typer%   rb   rc   N)r@   rE   r†   r‡   Úrandom_sampler
   ÚeyeÚlenr)   r   Údesign_matrixÚtoarrayr   r*   )	rG   r+   r  re   rˆ   rn   r*   Údes_matr_defÚdes_matr_csrs	            rI   Ú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ÐCr^   r;   r2   ©ÚclampedÚnaturalrµ   r0   ú
not-a-knotr–   r’   r¶   N)rÃ   )rF   r!  rG   r+   Úbcs        rI   Ú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ð 	6r^   rj   )FTr¶   Údegreer–   c           	      óü  — t           j                             d¦  «         t           j                             d|dz   z  ¦  «        }t          j        |¦  «        t          j        |¦  «        }}|}t           j        t          j        |dz
  |dz
  |¦  «        t          j        ||d|dz   z  ¦  «        t          j        |dz   |dz   |¦  «        f         }t          j        t          |¦  «        |z
  dz
  ¦  «        }t          ||||¦  «        }	t           |	|¦  «        t          j        ||||¦  «                             ¦   «         ¦  «         t          j        |dz
  |dz
  |dz   |dz   g¦  «        }|sKt          j        t"          ¦  «        5  t          j        ||||¦  «         ddd¦  «         dS # 1 swxY w Y   dS t           |	|¦  «        t          j        ||||¦  «                             ¦   «         ¦  «         dS )z;Test that design_matrix(x) is equivalent to BSpline(..)(x).rƒ   rW   r%   r0   rí   N)r@   rE   r†   r  ÚaminÚamaxr�   rY   r  r  r   r   r  r  r  rS   r   r>   )
rF   rj   r(  re   ÚxminÚxmaxr+   r)   r*   Úbsplines
             rI   Ú'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Æ6F3c                 ó  — t           j                             d¦  «         d}d}t          j        t           j                             |¦  «        dz  dz
  ¦  «        }t           j                             |¦  «        dz  dz
  }t          |||¬¦  «        }t          dd¦  «        D ]]}|d |…         }|d |…         }t          j        ||j	        |¦  «         
                    ¦   «         }	t          |	|j        z  |d	¬
¦  «         Œ^d S )Nrƒ   rW   r2   r  r„   rß   r%   r3   rb   rc   )r@   rE   r†   r‡   r  r
   rÃ   r   r  r)   r  r   r*   )
rF   rG   r+   re   rˆ   rn   rñ   ÚxcÚycr   s
             rI   Ú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ð 	Cr^   c                 óˆ   — g d¢}t          j        d|d¦  «                             ¦   «         }t          |g d¢gd¬¦  «         d S )N)r'   r'   r'   r5   r6   r7   r7   r7   r5   r2   )g      Ð?gm‰à¨ªªâ?gKÚ}\UUÅ?r4   rb   rc   )r   r  r  r   )rF   r)   Údes_matrs      rI   Útest_design_matrix_t_shapesz'TestBSpline.test_design_matrix_t_shapes  s_   € à,Ð,Ð,ˆÝÔ(¨¨Q°Ñ2Ô2×:Ò:Ñ<Ô<ˆÝ˜Ø;Ð;Ð;Ð<Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$r^   c                 ób  — t           j                             d¦  «         d}d}t          j        t           j                             |¦  «        dz  dz
  ¦  «        }t           j                             |¦  «        dz  dz
  }t          |||¬¦  «        }t          t          ¦  «        5  t          j	        ||j
        d d d…         |¦  «         d d d ¦  «         n# 1 swxY w Y   d}g d	¢}g d
¢}t          t          ¦  «        5  t          j	        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrƒ   rW   r2   r  r„   rß   r.   r0   )r4   r'   r5   r6   r7   ç      @rh   )r@   rE   r†   r‡   r  r
   r<   r>   r   r  r)   )rF   rG   r+   re   rˆ   rn   r)   s          rI   Útest_design_matrix_assertsz&TestBSpline.test_design_matrix_asserts  s¤  € Ý
Œ	�Š�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  )r$  r#  r¶   r%  c                 ó&  — t           j                             d¦  «         t          j        t           j                             d¦  «        ¦  «        }t           j                             d¦  «        }|dk    r|d         |d<   t	          |||¬¦  «        }t          j        ||¬¦  «        }t          j        ddd¦  «        }t           ||¦  «         ||¦  «        d¬	¦  «         t          |||¬¦  «        }t          |j
        |j
        d¬	¦  «         d S )
Nrƒ   r„   r¶   r   r.   ©r  r%   rL   rc   )r@   rE   r†   r‡   r   r   Úfrom_power_basisrY   r   r
   r*   )rF   r  re   rˆ   Úcbrn   r\   Úbspl_news           rI   Ú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Ð7r^   c                 ó¤  — t           j                             d¦  «         t          j        t           j                             d¦  «        ¦  «        }t           j                             d¦  «        t           j                             d¦  «        dz  z   }|dk    r|d         |d<   t	          |||¬¦  «        }t          j        ||¬¦  «        }t          ||j        |¬¦  «        }t          ||j	        |¬¦  «        }t          |j        j        |j        d|j        z  z   j        ¦  «         t          |j        |j        d|j        z  z   d¬	¦  «         d S )
Nrƒ   r„   r&   r¶   r   r.   r;  rL   rc   )r@   rE   r†   r‡   r   r   r<  r
   rÕ   rÖ   r   r*   Údtyper   )rF   r  re   rˆ   r=  rn   Úbspl_new_realÚbspl_new_imags           rI   Ú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:ð	<ñ 	<ô 	<ð 	<ð 	<ð 	<r^   c                 óÜ   — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        t	          ||d¬¦  «        d¬¦  «        }t          |j        g d¢d¬¦  «         dS )	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]
        r1   )r%   r%   r%   r%   r%   r$  r;  )r%   r%   r%   r%   r%   r%   r%   rL   rc   N)r@   r  r   r<  r   r   r*   )rF   re   rˆ   rn   s       rI   Útest_from_power_basis_exmpz&TestBSpline.test_from_power_basis_exmpL  sy   € õ ŒH�_�_�_Ñ%Ô%ˆÝŒH�_�_�_Ñ%Ô%ˆÝÔ'­°A°qÀ)Ð(LÑ(LÔ(LØ09ð;ñ ;ô ;ˆå˜œÐ 5Ð 5Ð 5¸EÐBÑBÔBÐBÐBÐBr^   c                 ób  — t          j        ddg¦  «        }t          j        dg¦  «        }|                     d¬¦  «         |                     d¬¦  «         t          j        ddd¦  «        }|                     d¬¦  «         t	          ||d¬¦  «        }t           ||¦  «        d¦  «         d S )	Nr   r%   r6   F©ÚwriterW   r(   r2   )r@   r  ÚsetflagsrY   r   r   )rF   r)   r*   r\   rH   s        rI   Útest_read_onlyzTestBSpline.test_read_only_  s¥   € åŒH�a˜�VÑÔˆÝŒH�c�U‰OŒOˆØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐåŒ[˜˜A˜rÑ"Ô"ˆØ
�Š˜%ˆÑ Ô Ð å�a˜1 Ð"Ñ"Ô"ˆÝ˜˜˜"™œ˜qÑ!Ô!Ð!Ð!Ð!r^   N).rü   rý   rþ   rJ   rU   r]   rf   ro   r}   r�   r‰   r�   rš   r¡   r¨   rª   r®   r³   r¹   r½   rÅ   rÊ   rÐ   rÓ   rÚ   rÝ   rä   ré   ró   rø   r  rS   ÚmarkÚparametrizerÃ   r  r  r'  r/  r3  r6  r9  r?  rD  rF  rK  rr   r^   rI   r#   r#      se  € € € € € ð!ð !ð !ðF
ð 
ð 
ð:ð :ð :ð	?ð 	?ð 	?ð.ð .ð .ð/ð /ð /ðAð Að Að
;ð 
;ð 
;ð#ð #ð #ð3ð 3ð 3ðEð Eð Eð$Lð Lð Lðð ð ð-ð -ð -ð*ð *ð *ðMð Mð Mð$?ð ?ð ?ð6ð 6ð 6ð=ð =ð =ð8Að 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ðð4Cð Cð Cð"$ð $ð $ð+ð +ð +ð$ „[×Ò˜Yð )Cð )Cð )Cñ Dô Dð8ð 8ñDô Dð8ð „[×Ò˜Yð )Cð )Cð )Cñ Dô Dð<ð <ñDô Dð<ðCð Cð Cð&"ð "ð "ð "ð "r^   r#   c                   ó  — e Zd Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zej                             dg d	¢¦  «        d
„ ¦   «         Z	d„ Z
d„ ZdS )Ú
TestInsertÚxval)r4   r'   r9   r3   ç      @ç      @c                 ó¢  — t          j        d¦  «        }t          j        |¦  «        dz  }t          ||d¬¦  «        }t	          ||¦  «        }|                     |¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d |j	         dz
  …         d¬¦  «         ||d         k    r|n	|d d…         }t           j
        |d|dd …         |d d…         z   z  f         }t           ||¦  «         ||¦  «        d¬¦  «         t          j        |¦  «        dz  }t          ||d¬¦  «        }	t          |t           j        ||f         d¬¦  «        }
|
                     |¦  «        }t          |j        |j        d¬¦  «         t          |j        t           j        |                     |¦  «        j        |	                     |¦  «        j        f         d¬¦  «         ||d         k    r|n	|d d…         }t           j
        |d|dd …         |d d…         z   z  f         }t           |
|¦  «         ||¦  «        d¬¦  «         d S )	Nrµ   r2   rß   rL   rc   r%   r.   r·   )r@   rD   Úsinr
   r   Úinsert_knotr   r)   r*   r+   r�   Úcosrç   )rF   rP  re   rˆ   r  Úspl_1fÚspl_1r\   Úy1Úspl_y1Úspl_yyÚspl_yy1s               rI   Útest_insertzTestInsert.test_inserto  sC  € õ ŒI�a‰LŒLˆÝŒF�1‰IŒI�q‰LˆÝ   A¨Ð+Ñ+Ô+ˆå˜˜cÑ"Ô"ˆØ—’ Ñ%Ô%ˆå˜œ ¤°Ð6Ñ6Ô6Ð6Ý˜œ ¤¨)¨C¬E¨6°!©8¨)Ô!4¸5ÐAÑAÔAÐAð ˜!˜Bœ%’-�-ˆQˆQ Q s¨ s¤VˆÝŒU�2�s˜A˜a˜b˜bœE A c r c¤F™NÑ+Ð+Ô,ˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7õ ŒV�A‰YŒY˜‰\ˆÝ# A r¨QÐ/Ñ/Ô/ˆÝ# A¥r¤u¨Q°¨U¤|°qÐ9Ñ9Ô9ˆØ×$Ò$ TÑ*Ô*ˆå˜œ	 5¤7°Ð7Ñ7Ô7Ð7Ý˜œ	¥2¤5¨¯ª¸Ñ)>Ô)>Ô)@Ø)/×);Ò);¸DÑ)AÔ)AÔ)Cð*Dô $EØKPð	Rñ 	Rô 	Rð 	Rð ˜!˜Bœ%’-�-ˆQˆQ Q s¨ s¤VˆÝŒU�2�s˜A˜a˜b˜bœE A c r c¤F™NÑ+Ð+Ô,ˆÝ˜˜˜r™
œ
 G G¨B¡K¤K°eÐ<Ñ<Ô<Ð<Ð<Ð<r^   zxval, m))r4   r0   )r'   r2   )rí   r–   )r3   r0   )rR  r0   c                 ó.  — t          j        d¦  «        }t          j        |¦  «        dz  }t          ||d¬¦  «        }t	          |||¬¦  «        }|                     ||¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d |j	         dz
  …         d¬¦  «         ||d         k    r|n	|d d…         }t           j
        |d	|dd …         |d d…         z   z  f         }t           ||¦  «         ||¦  «        d¬¦  «         d S )
Nrµ   r2   rß   ©ÚmrL   rc   r%   r.   r·   )r@   rD   rT  r
   r   rU  r   r)   r*   r+   r�   )	rF   rP  r`  re   rˆ   r  rW  rX  r\   s	            rI   Útest_insert_multizTestInsert.test_insert_multi�  s  € õ ŒI�a‰LŒLˆÝŒF�1‰IŒI�q‰LˆÝ   A¨Ð+Ñ+Ô+ˆå˜˜c QÐ'Ñ'Ô'ˆØ—’  aÑ(Ô(ˆå˜œ ¤°Ð6Ñ6Ô6Ð6Ý˜œ ¤¨)¨C¬E¨6°!©8¨)Ô!4¸5ÐAÑAÔAÐAà˜!˜Bœ%’-�-ˆQˆQ Q s¨ s¤VˆÝŒU�2�s˜A˜a˜b˜bœE A c r c¤F™NÑ+Ð+Ô,ˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7Ð7Ð7r^   c                 ó  — t           j                             d¦  «        }d\  }}t          j        |                     ||z   dz   ¬¦  «        ¦  «        }|                     |ddf¬¦  «        }t          |||¦  «        }|                     ||dz            || dz
           ¬¦  «        }|                     |¦  «        }|                     ||dz            || dz
           d¬	¦  «        }	t           ||	¦  «         ||	¦  «        d
¬¦  «         d S )Né90  r:   r%   r“   r2   r0   )ÚlowÚhighrœ   ©rd  re  r”   rL   rc   )r@   rE   Údefault_rngr‡   Úuniformr   rU  r   )
rF   ÚrngrG   r+   r)   r*   r  ÚxvrX  r\   s
             rI   Útest_insert_randomzTestInsert.test_insert_random¢  sû   € ÝŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆ1åŒG�C—K’K Q q¡S¨¡U�KÑ+Ô+Ñ,Ô,ˆØ�KŠK˜a  A˜YˆKÑ'Ô'ˆÝ�a˜˜AÑÔˆà�[Š[˜Q˜q ™sœV¨!¨Q¨B¨q©D¬'ˆ[Ñ2Ô2ˆØ—’ Ñ#Ô#ˆà�[Š[˜Q˜q ™sœV¨!¨Q¨B¨q©D¬'¸ˆ[Ñ;Ô;ˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7Ð7Ð7r^   rj  )	r   çš™™™™™¹?r5   r7   ç      @ç      @ç      @gffffff@rR  c           	      óF  — t          j        d¦  «        }t          j        |¦  «        dz  }t          ||d¬¦  «        }t	          |ddiŽ}|                     |¦  «        }t          ||j        d¬¦  «        \  }}}	t          |j	        |d¬	¦  «         t          |j
        d |	 d
z
  …         |d |	 d
z
  …         d¬	¦  «         t           j                             d¦  «                             ddd¬¦  «        }
t           ||
¦  «        t          |
|||	f¦  «        d¬	¦  «         d S )Nrµ   r2   rß   rj   r¶   T©ÚperrL   rc   r%   rƒ   r   r’   é)   rf  )r@   rD   rT  r   r   rU  r   rR   r   r)   r*   rE   rg  rh  r   )rF   rj  re   rˆ   rR   r  rX  ÚtfÚcfr+   r\   s              rI   Útest_insert_periodiczTestInsert.test_insert_periodic°  s  € õ ŒI�a‰LŒLˆÝŒF�1‰IŒI�q‰LˆÝ�Q˜˜QÐÑÔˆÝ�sÐ3¨
Ð3Ð3ˆà—’ Ñ#Ô#ˆÝ˜2˜sœw¨DÐ1Ñ1Ô1‰	ˆˆB�å˜œ ¨%Ð0Ñ0Ô0Ð0Ý˜œ  !  A¡ œ¨¨5¨Q¨B¨q©D¨5¬	¸Ð>Ñ>Ô>Ð>åŒY×"Ò" 4Ñ(Ô(×0Ò0°Q¸QÀRÐ0ÑHÔHˆÝ˜˜˜b™	œ	¥5¨¨b°"°a¨[Ñ#9Ô#9ÀÐFÑFÔFÐFÐFÐFr^   c                 óÜ  — d}d}t          j        dg|dz   z  g d¢z   dg|dz   z  z   ¦  «        }t          j        t          |¦  «        |z
  dz
  ¦  «        }t	          |||d¬¦  «        }t          t          ¦  «        5  t          ||||fd	¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nç      @r2   r   r%   ©r0   r2   r3   r–   r’   r¶   ri   Trq  )	r@   r  Úonesr  r   r<   r>   r   rU  )rF   rj  r+   r)   r*   r  s         rI   Ú+test_insert_periodic_too_few_internal_knotsz6TestInsert.test_insert_periodic_too_few_internal_knotsÂ  sv  € ð ˆØˆÝŒH�a�S˜!˜A™#‘Y   Ñ-°°°Q°q±S±	Ñ9Ñ:Ô:ˆÝŒG•C˜‘F”F˜Q‘J ‘NÑ#Ô#ˆÝ�a˜˜A¨:Ð6Ñ6Ô6ˆå�:Ñ&Ô&ð 	,ð 	,Ý�2˜˜1˜a�y dÐ+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ �:Ñ&Ô&ð 	 ð 	 Ø�OŠO˜BÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   Á=BÂB#Â&B#Â>C!Ã!C%Ã(C%c                 óZ  — d}t          j        dg|dz   z  g d¢z   dg|dz   z  z   ¦  «        }t          j        t          |¦  «        |z
  dz
  ¦  «        }t	          |||¦  «        }t          t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr2   r   r%   ry  r’   r.   rµ   r_  )r@   r  rz  r  r   r<   r>   rU  )rF   r+   r)   r*   r  s        rI   Útest_insert_no_extrapz TestInsert.test_insert_no_extrapÖ  sÜ  € ØˆÝŒH�a�S˜!˜A™#‘Y   Ñ-°°°Q°q±S±	Ñ9Ñ:Ô:ˆÝŒG•C˜‘F”F˜Q‘J ‘NÑ#Ô#ˆÝ�a˜˜AÑÔˆå�:Ñ&Ô&ð 	 ð 	 Ø�OŠO˜BÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ �:Ñ&Ô&ð 	ð 	Ø�OŠO˜AÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �:Ñ&Ô&ð 	$ð 	$Ø�OŠO˜A ˆOÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$s6   Á9BÂBÂ"BÂ:CÃC Ã#C Ã;D Ä D$Ä'D$N)rü   rý   rþ   rS   rL  rM  r]  ra  rk  rv  r{  r}  rr   r^   rI   rO  rO  m  sö   € € € € € à„[×Ò˜VÐ%AÐ%AÐ%AÑBÔBð=ð =ñ CÔBð=ð@ „[×ÒØÐCÐCÐCñô ð8ð 8ñô ð8ð8ð 8ð 8ð „[×Ò˜Tð $8ð $8ð $8ñ ô ðGð Gñô ðGð ð  ð  ð($ð $ð $ð $ð $r^   rO  c            
      óÞ   — dd„} dD ]e}t          |¬¦  «        }t          t          |¦  «        ¦  «        D ]6\  }} | ||¦  «         t          d|dz   ¦  «        D ]} | |||dd¦  «         ŒŒ7Œfd S )	Nr   rb   c           
      ó4  — | j         \  }}}t          j        |¦  «        }t          j        |d         dz
  d|dd …         |d d…         z   z  |d         dz   f         }t	          t          ||||f|¦  «         | ||¦  «        ||d|› d| j        › �¬¦  «         d S )	Nr   rl  r·   r%   r.   zder = z  k = )rN   rO   Úerr_msg)rR   r@   Úuniquer�   r   r   r+   )	rH   rã   rÀ   rN   rO   r)   r*   r+   re   s	            rI   Úcheck_splevz,test_knots_multiplicity.<locals>.check_splevê  s¹   € à”%‰ˆˆ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±)´)Ø Ð.G°sÐ.GÐ.GÀ!Ä#Ð.GÐ.Gð	Iñ 	Iô 	Ið 	Ið 	Ið 	Ir^   )r%   r0   r2   r3   r–   rß   r%   rà   )r   rb   rb   )rQ   Ú	enumerateÚ_make_multiplesrÃ   )r‚  r+   rH   rã   r  rÀ   s         rI   Útest_knots_multiplicityr…  æ  sº   € ðIð Ið Ið Ið ð 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ð 6r^   c                 óÀ  — |dk    r#||         | cxk    r||dz            k     rn ndndS |||z            ||         k    rd}n6| ||         z
  |||z            ||         z
  z  t          | |dz
  ||¦  «        z  }|||z   dz            ||dz            k    rd}nE|||z   dz            | z
  |||z   dz            ||dz            z
  z  t          | |dz
  |dz   |¦  «        z  }||z   S )zw
    Naive way to compute B-spline basis functions. Useful only for testing!
    computes B(x; t[i],..., t[i+k+1])
    r   r%   r'   r4   ©Ú_naive_B©re   r+   rñ   r)   Úc1Úc2s         rI   rˆ  rˆ  ý  s  € ð
 	ˆ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Ðr^   c                 ó6  ‡ ‡‡‡‡— ‰ ‰‰         k    r‰Šnt          j        ‰‰ ¦  «        dz
  Š‰‰         ‰ cxk    r‰‰dz            k    sn J ‚‰‰k    r‰t          ‰¦  «        ‰z
  k     sJ ‚t          ˆˆˆˆˆ fd„t	          d‰dz   ¦  «        D ¦   «         ¦  «        S )z=
    Naive B-spline evaluation. Useful only for testing!
    r%   c              3   óZ   •K  — | ]%}‰‰|z
           t          ‰‰‰|z
  ‰¦  «        z  V — Œ&d S ©Nr‡  )rv   rã   r*   rñ   r+   r)   re   s     €€€€€rI   ú	<genexpr>z_naive_eval.<locals>.<genexpr>  sB   øè è € ÐFÐF°1ˆq��1‘Œv�  A q¨¡s¨AÑ.Ô.Ñ.ÐFÐFÐFÐFÐFÐFr^   r   )r@   Úsearchsortedr  ÚsumrÃ   )re   r)   r*   r+   rñ   s   ````@rI   rt   rt     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ÐFr^   c                 ó  ‡ ‡‡‡— t          ‰¦  «        ‰dz   z
  }|‰dz   k    sJ ‚t          ‰¦  «        |k    sJ ‚‰‰         ‰ cxk    r‰|         k    sn J ‚t          ˆˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        S )z'Naive B-spline evaluation, another way.r%   c              3   óN   •K  — | ]}‰|         t          ‰‰|‰¦  «        z  V — Œ d S rŽ  r‡  ©rv   rñ   r*   r+   r)   re   s     €€€€rI   r�  z _naive_eval_2.<locals>.<genexpr>#  s:   øè è € Ð=Ð=¨qˆq�Œt•h˜q ! Q¨Ñ*Ô*Ñ*Ð=Ð=Ð=Ð=Ð=Ð=r^   ©r  r‘  rÃ   ©re   r)   r*   r+   rG   s   ```` rI   ry   ry     sœ   øøøø€ åˆA‰Œ�!�A‘#‰€AØ��!‘Š8ˆ8ˆ8ˆ8Ýˆq‰6Œ6�QŠ;ˆ;ˆ;ˆ;ØˆQŒ4�1ÐÐÒÐ˜˜!œÒÐÐÐÐÐÝÐ=Ð=Ð=Ð=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=Ñ=Ô=Ð=r^   c                 ó2  — t          |¦  «        |dz   z
  }||dz   k    sJ ‚t          |¦  «        |k    sJ ‚d}t          |¦  «        D ]O} t          j        ||||z   dz   …         d¬¦  «        | ¦  «        }|||         t	          j        |¦  «        z  z  }ŒP|S )Nr%   r4   r0   Fri   )r  rÃ   r   rÎ   r@   Ú
nan_to_num)re   r)   r*   r+   rG   Úsrñ   rH   s           rI   rÒ   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 !Ñ$Ô$Ñ$Ñ$ˆˆØ€Hr^   c                 óª   — t          j        | ¦  «        } t          j        | | dk     | dk    z  | dk    | dk     z  | dk    | dk    z  gd„ d„ d„ g¦  «        S )z+ A linear B-spline function B(x | 0, 1, 2).r   r0   r%   c                 ó   — dS )Nr4   rr   ©re   s    rI   ú<lambda>zB_012.<locals>.<lambda>7  s   €  b€ r^   c                 ó   — | S rŽ  rr   rœ  s    rI   r�  zB_012.<locals>.<lambda>7  s   € °A€ r^   c                 ó   — d| z
  S ©Nr5   rr   rœ  s    rI   r�  zB_012.<locals>.<lambda>7  s
   € ÀÀAÁ€ r^   )r@   Ú
atleast_1dÚ	piecewiserœ  s    rI   rd   rd   1  sp   € å
Œ�aÑÔ€AÝŒ<˜˜Q šU q¨1¢uÑ-Ø !šV¨¨AªÑ.Ø !šV¨¨QªÑ/ð1ð )˜L¨+¨+°~°~ÐFñHô Hð Hr^   c                 óê   — t          j        | ¦  «        } | dk     | dk    | dk     z  | dk    g}|dk    r	d„ d„ d„ g}n!|dk    r	d„ d„ d	„ g}nt          d
|z  ¦  «        ‚t          j        | ||¦  «        }|S )z0A quadratic B-spline function B(x | 0, 1, 2, 3).r%   r0   r   c                 ó   — | | z  dz  S r   rr   rœ  s    rI   r�  zB_0123.<locals>.<lambda>?  s   € ˜1˜Q™3˜r™6€ r^   c                 ó   — d| dz
  dz  z
  S )Ng      è?rí   r0   rr   rœ  s    rI   r�  zB_0123.<locals>.<lambda>@  s   € ˜4 1 T¡6¨A¡+Ñ-€ r^   c                 ó   — d| z
  dz  dz  S )Nr6   r0   rr   rœ  s    rI   r�  zB_0123.<locals>.<lambda>A  s   € ˜B˜q™D 1™9 q™=€ r^   c                 ó   — dS ©Nr'   rr   rœ  s    rI   r�  zB_0123.<locals>.<lambda>C  ó   € ˜2€ r^   c                 ó   — dS )Ng       Àrr   rœ  s    rI   r�  zB_0123.<locals>.<lambda>D  s   € ˜3€ r^   c                 ó   — dS r¨  rr   rœ  s    rI   r�  zB_0123.<locals>.<lambda>E  r©  r^   znever be here: der=%s)r@   r¡  r>   r¢  )re   rÀ   ÚcondsÚfuncsÚpiecess        rI   rÏ   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Ø€Mr^   é#   r2   c                 ó  — t           j                             d¦  «         t          j        t           j                             | |z   dz   ¦  «        ¦  «        }t           j                             | ¦  «        }t	          j        |||¦  «        S )Né{   r%   )r@   rE   r†   r‡   r   Úconstruct_fast)rG   r+   r)   r*   s       rI   rQ   rQ   L  sg   € Ý„I‡N‚N�3ÑÔÐÝ
Œ•”	× Ò   1¡ Q¡Ñ'Ô'Ñ(Ô(€AÝ
Œ	×Ò˜ÑÔ€AÝÔ! ! Q¨Ñ*Ô*Ð*r^   c              #   ó   K  — | j         | j        }}| j                             ¦   «         }|d         |dd…<   |d         |d<   t	          |||¦  «        V — | j                             ¦   «         }|d         |d|dz   …<   t	          |||¦  «        V — | j                             ¦   «         }|d         || dz
  d…<   t	          |||¦  «        V — dS )	zIncrease knot multiplicity.é   é   é   r�   r   Nr%   r.   )r*   r+   r)   Úcopyr   )rH   r*   r+   Út1s       rI   r„  r„  S  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˜Ñ
Ô
ÐÐÐÐÐr^   c                   óP   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )ÚTestInteropc                 ó
  — t          j        ddt           j        z  d¦  «        }t          j        |¦  «        }t	          ||¦  «        }|j        |j        |j        f| _        |||c| _	        | _
        | _        t          j        ddt           j        z  d¦  «        | _        t           j        |j        |j        |j        f         }t          j        ||f¦  «        | _        t!          |j        | j        |j        ¦  «        | _        d S )Nr   r7   rs  r¶  )r@   rY   ÚpirV  r
   r)   r*   r+   rR   r\   r²   rH   Úxnewrç   rè   r‹  r   Úb2)rF   r\   r²   rH   r‹  s        rI   Úsetup_methodzTestInterop.setup_methodi  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¨¬Ñ,Ô,ˆŒˆˆr^   c                 óÒ  ‡— | j         | j        | j        c}Š}t          t	          |‰¦  «         ‰|¦  «        dd¬¦  «         t          t	          |‰j        ¦  «         ‰|¦  «        dd¬¦  «         t          ˆfd„|D ¦   «          ‰|¦  «        dd¬¦  «         t          t          d¬¦  «        5  t	          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d|j
        j        ¦  «        ¦  «        dz   }|j
                             |¦  «        }|j        ||j        f}t          t	          ||¦  «         ||¦  «                             |¦  «        dd¬¦  «         d S )NrL   rM   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rr   )r   )rv   re   rH   s     €rI   rw   z*TestInterop.test_splev.<locals>.<listcomp>  s!   ø€ Ð3Ð3Ð3¨�˜q !™œÐ3Ð3Ð3r^   zCalling splev.. with BSpline©Úmatchr%   ©r   )r½  rH   r¾  r   r   rR   r<   r>   ÚtuplerÃ   r*   r  Ú	transposer)   r+   )rF   r½  r¾  r  r×   rR   rH   s         @rI   Ú
test_splevzTestInterop.test_splevv  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ð 	Hs   Â/CÃCÃCc                 óF  — | j         | j        }}t          ||¦  «        }t          j        ||¦  «        \  }}}t	          |d         |d¬¦  «         t	          |d         |d¬¦  «         t          |d         |¦  «         t          ||d¬¦  «        \  }}}}t	          |d         |d¬¦  «         t	          |d         |d¬¦  «         t          |d         |¦  «         t          ||¦  «        }	t	          ||	d¬¦  «         t          |Ž }
t	          | |
|¦  «        d¬¦  «         d S )Nr   rL   rc   r%   r0   T)Úfull_output)r\   r²   r   rð   r   r   r   r   )rF   re   rˆ   rR   r)   r*   r+   Útck_fr¦   r²   rH   s              rI   Útest_splrepzTestInterop.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Ð,Ñ,Ô,Ð,Ð,Ð,r^   c                 óˆ  — | j         | j        }}t          j        ||f         }t	          t
          ¦  «        5  t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t
          ¦  «        5  t          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          d¬¦  «        5  t          |d d…         |d d…         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          d¬¦  «        5  t          j        |d d…         |d d…         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Núm > k must holdrÂ  r2   )	r\   r²   r@   rç   r<   r>   r   rð   r=   )rF   re   rˆ   Úy2s       rI   Útest_splrep_errorszTestInterop.test_splrep_errors©  s*  € ð Œ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Á3BÂBÂBÂ6!C#Ã#C'Ã*C'Ä&D7Ä7D;Ä>D;c                 óâ  — t          j        d¦  «                             d¦  «        }t          |¦  «        \  }}t	          j        |¦  «        \  }}t          ||d¬¦  «         t          t          ||¦  «        |d¬¦  «         t          t          ||¦  «        |d¬¦  «         t          |dd¬¦  «        \  \  }}}}}t          ||d¬¦  «         t          t          ||¦  «        |d¬¦  «         d S )Nrî   ©r2   r–   rL   rc   r   T)r™  rÉ  )r@   rD   rl   r   rð   r   r   )	rF   re   rH   ÚurR   Úu1Úb_fÚu_fr¦   s	            rI   Útest_splprepzTestInterop.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Ð7r^   c                 ó  — t          j        d¦  «                             d¦  «        }t          t          d¬¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ddd¬¦  «        }t          t          d	¬¦  «        5  t          |g¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d	¬¦  «        5  t          j        |g¦  «         d d d ¦  «         n# 1 swxY w Y   g d
¢}t          t          d¬¦  «        5  t          |g¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          j        |g¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}g d¢}t          t          d¬¦  «        5  t          |gd |gŽ  d d d ¦  «         d S # 1 swxY w Y   d S )Né<   r•   ztoo many values to unpackrÂ  r   r  r2   )ÚnumrÍ  )ç– Ð>IÀrÚ  ç– Ð>KÀrÛ  zInvalid inputs)r%   r2   r0   r3   )r   g333333Ó?gš™™™™™É?r%   )	r@   rD   rl   r<   r>   r   rð   rY   r=   )rF   re   rÒ  s      rI   Útest_splprep_errorszTestInterop.test_splprep_errorsÈ  sµ  € åŒ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Ã1C5Ã8C5ÄD4Ä4D8Ä;D8ÅE6Å6E:Å=E:ÆF9Æ9F=Ç F=Ç"G=Ç=HÈHc                 óv  — | j         | j        }}t          j        g d¢¦  «        t          j        z  }t          t          |¦  «        |dd¬¦  «         t          t          |j        |j        |j	        f¦  «        |dd¬¦  «         t          t          d¬¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |j                             dd	d
¦  «        }t          j        t          |j        ||j	        fd¬¦  «        ¦  «        }t          |j        d¦  «         t          ||z
  d
d¬¦  «         d S )N)r·   rí   r9   rx  gH¯¼šò×z>rM   zCalling sproot.. with BSplinerÂ  ra   )Úmestr%   r0   r   )r2   r0   r3   rà   rc   )rH   r¾  r@   r  r¼  r   r   r)   r*   r+   r<   r>   rÆ  rk   r   r—   )rF   rH   r¾  ÚrootsÚc2rÚrrs         rI   Útest_sprootzTestInterop.test_sprootå  sc  € Ø”˜œˆ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Â8B<Â?B<c           	      óx  — | j         | j        }}t          t          dd|¦  «        t          dd|j        ¦  «        d¬¦  «         t          t          dd|¦  «        |                     dd¦  «        d¬¦  «         t          t          d¬¦  «        5  t          dd|¦  «         d d d ¦  «         n# 1 swxY w Y   |j         	                    ddd¦  «        }t          j        t          dd|j        ||j        f¦  «        ¦  «        }t          |j        d¦  «         t          |t          dd|¦  «        d¬¦  «         d S )	Nr   r%   rb   rc   zCalling splint.. with BSplinerÂ  r0   ©r2   r0   )rH   r¾  r   r   rR   rï   r<   r>   r*   rÆ  r@   rk   r)   r+   r   r—   )rF   rH   r¾  rà  Úintegrs        rI   Útest_splintzTestInterop.test_splintö  s{  € à”˜œˆ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Â4B1c           	      ó¼  — | j         | j        fD �]K}t          |j        ¦  «        t          |j        ¦  «        z
  }|dk    rFt
          j        |j        t          j        |f|j        j        dd …         z   ¦  «        f         |_        dD ]Ð}t          |¦  «        }t          j	        |j        |j        |j        f¦  «        }t          |j        |d         d¬¦  «         t          |j        |d         d¬¦  «         t          |j        |d         ¦  «         t          t          |t           ¦  «        ¦  «         t          t          |t"          ¦  «        ¦  «         ŒÑ�ŒMd S ©Nr   r%   r`   rL   rc   r0   )rH   r¾  r  r)   r*   r@   r�   Úzerosr—   r   rð   r+   r   r   r   Ú
isinstancer   rÅ  ©rF   rH   ÚctrG   ÚbdÚtck_ds         rI   Útest_splderzTestInterop.test_splder	  s2  € Ø”&˜$œ'Ð"ð 	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ð 	2r^   c           	      ó¼  — | j         | j        fD �]K}t          |j        ¦  «        t          |j        ¦  «        z
  }|dk    rFt
          j        |j        t          j        |f|j        j        dd …         z   ¦  «        f         |_        dD ]Ð}t          |¦  «        }t          j	        |j        |j        |j        f¦  «        }t          |j        |d         d¬¦  «         t          |j        |d         d¬¦  «         t          |j        |d         ¦  «         t          t          |t           ¦  «        ¦  «         t          t          |t"          ¦  «        ¦  «         ŒÑ�ŒMd S rè  )rH   r¾  r  r)   r*   r@   r�   ré  r—   r   rð   r+   r   r   r   rê  r   rÅ  rë  s         rI   Útest_splantiderzTestInterop.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ð 	2r^   c                 óð  — | j         | j        | j        }}}|j        j        dz  }d|j        |         |j        |dz            z   z  }t          ||¦  «        t          ||j        |j        |j        f¦  «        }}t          t          ||¦  «        t          ||¦  «        d¬¦  «         t          t          |t          ¦  «        ¦  «         t          t          |t          ¦  «        ¦  «         t          t          |j        j        ¦  «        ¦  «        }|j                             |dd …         dz   ¦  «        }	t          ||j        |	|j        f¦  «        }
t          ||¦  «        }t          t#          j        t          ||
¦  «        ¦  «                             ddd¦  «         ||¦  «        d¬¦  «         t          t          |t          ¦  «        ¦  «         t          t          |
t          ¦  «        ¦  «         d S )Nr0   r·   r%   rL   rc   rÄ  r   )rH   r¾  r\   r)   r”   r   r*   r+   r   r   r   rê  r   rÅ  rÃ   r  rÆ  r@   rk   )rF   rH   r¾  r\   rã   ÚtnÚbnÚtck_nr  rç   Útck_n2Úbn2s               rI   r]  zTestInterop.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Ñ)Ô)Ñ*Ô*Ð*Ð*Ð*r^   N)rü   rý   rþ   r¿  rÇ  rË  rÏ  rÖ  rÜ  râ  ræ  rï  rñ  r]  rr   r^   rI   rº  rº  e  s¼   € € € € € ð-ð -ð -ðHð Hð Hð6-ð -ð -ð0'ð 'ð 'ð 8ð 8ð 8ð%ð %ð %ð:3ð 3ð 3ð"5ð 5ð 5ð&2ð 2ð 2ð 2ð 2ð 2ð +ð +ð +ð +ð +r^   rº  c                   óÀ  — e Zd Z ej        ddej        z  ¦  «        Z ej        e¦  «        Zd„ Z	d„ Z
d„ Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d	„ ¦   «         Zd
„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             d¬¦  «        d„ ¦   «         Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&ej                             dg d#¢¦  «        d$„ ¦   «         Z'd%„ Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*S )+Ú
TestInterpr4   r5   c                 ó˜   — t          t          ¦  «        5  t          | j        | j        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr9   rß   )r<   r=   r
   r\   r²   )rF   s    rI   Útest_non_int_orderzTestInterp.test_non_int_orderK  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ÁAc                 ó  — t          | j        | j        d¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t          | j        | j        dd¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         d S )Nr   rß   rb   rM   r.   ©r+   r  ©r
   r\   r²   r   rÜ   s     rI   Útest_order_0zTestInterp.test_order_0O  ó€   € Ý˜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ÐDr^   c                 ó  — t          | j        | j        d¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t          | j        | j        dd¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         d S )Nr%   rß   rb   rM   r.   rý  rþ  rÜ   s     rI   Útest_linearzTestInterp.test_linearU  r   r^   r+   rÌ   c                 ó˜   — g d¢}g d¢}t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r   r%   r0   r2   r3   r–   )r   r%   r0   r2   r3   r–   r‘   r’   zShapes of xrÂ  rß   ©r<   r>   r
   ©rF   r+   re   rˆ   s       rI   Útest_incompatible_x_yz TestInterp.test_incompatible_x_y[  s¤   € àÐÐˆØ$Ð$Ð$ˆÝ�:¨]Ð;Ñ;Ô;ð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   Ÿ?¿AÁAc                 óö  — g d¢}g d¢}t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          j        |¦  «                             d¦  «        }t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	N)r   r%   r%   r0   r2   r3   r  zx to not have duplicatesrÂ  rß   )r   r0   r%   r2   r3   r–   zExpect x to be a 1D strictly)r%   r.   )r<   r>   r
   r@   rk   rl   r  s       rI   Útest_broken_xzTestInterp.test_broken_xb  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Ã5C2c                 ó’   — dD ]C}t          | j        | j        |¦  «        }t           || j        ¦  «        | j        dd¬¦  «         ŒDd S )NrÑ  rb   rM   rþ  )rF   r+   rH   s      rI   Útest_not_a_knotzTestInterp.test_not_a_knotr  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ð 	Ir^   c                 óX  — t          | j        | j        dd¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t	          dd¦  «        D ]@}t           || j        d         |¬¦  «         || j        d	         |¬¦  «        d
¬¦  «         ŒAt          | j        | j        ddd	¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t	          dd¦  «        D ]@}t           || j        d         |¬¦  «         || j        d	         |¬¦  «        d
¬¦  «         ŒAd S )Nr–   r¶   r  rb   rM   r%   r   rÁ   r.   ç•dyáý¥=rc   ©r+   r  r  )r
   r\   r²   r   rÃ   )rF   rH   rñ   s      rI   Útest_periodiczTestInterp.test_periodicw  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ð 	Sr^   )r0   r2   r3   r–   r‘   r’   c                 óf  — d}t           j                             d¦  «         t          j        t           j                             |¦  «        dz  ¦  «        }t           j                             |¦  «        dz  }|d         |d<   t          |||d¬¦  «        }t           ||¦  «        |d	¬
¦  «         d S )Nr–   rƒ   rW   r‹   r.   r   r¶   r  rb   rc   )r@   rE   r†   r‡   r  r
   r   )rF   r+   rG   re   rˆ   rH   s         rI   Útest_periodic_randomzTestInterp.test_periodic_random…  s¡   € ð ˆÝ
Œ	�Š�tÑÔÐÝŒG•B”I×+Ò+¨AÑ.Ô.°Ñ3Ñ4Ô4ˆÝŒI×#Ò# AÑ&Ô&¨Ñ,ˆØ�Œuˆˆ!‰Ý˜q ! q°*Ð=Ñ=Ô=ˆÝ˜˜˜!™œ˜a eÐ,Ñ,Ô,Ð,Ð,Ð,r^   c                 ó¦  — | j         j        d         }t          j                             d¦  «         t          j                             |¦  «        dz  t          j        z  }t          j        |¦  «        }d|d<   dt          j        z  |d<   t          j        d|f¦  «        }t          j	        |¦  «        |d<   t          j
        |¦  «        |d<   t          ||ddd¬	¦  «        }t          |¦  «        D ]-}t           |||         ¦  «        |d d …|f         d
¬¦  «         Œ.t           ||d         ¦  «         ||d         ¦  «        d
¬¦  «         d S )Nr   rƒ   r0   r4   r.   r%   r–   r¶   r  rb   rc   )r\   r—   r@   rE   r†   r  r¼  r‡   ré  rT  rV  r
   rÃ   r   )rF   rG   re   rˆ   rH   rñ   s         rI   Útest_periodic_axiszTestInterp.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Ð6r^   c                 óˆ  — t           j                             d¦  «         d}d}t          j        t           j                             |¦  «        ¦  «        }t           j                             |¦  «        }|d         dz
  |d<   t          t          ¦  «        5  t          |||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nrƒ   r–   rµ   r.   r%   r   r¶   r  )r@   rE   r†   r‡   r  r<   r>   r
   )rF   r+   rG   re   rˆ   s        rI   Útest_periodic_points_exceptionz)TestInterp.test_periodic_points_exceptionŸ  sî   € å
Œ	�Š�tÑÔÐØˆØˆÝŒG•B”I×+Ò+¨AÑ.Ô.Ñ/Ô/ˆÝŒI×#Ò# AÑ&Ô&ˆØ�Œu�q‰yˆˆ!‰Ý�:Ñ&Ô&ð 	>ð 	>Ý˜q ! q°*Ð=Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s   ÂB7Â7B;Â>B;c                 ó   — t           j                             d¦  «         d}d}t          j        t           j                             |¦  «        ¦  «        }t           j                             |¦  «        }t          j        |d|z  z   ¦  «        }t          t          ¦  «        5  t          ||||d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrƒ   r2   r’   r0   r¶   )	r@   rE   r†   r‡   r  ré  r<   r>   r
   )rF   r+   rG   re   rˆ   r)   s         rI   Útest_periodic_knots_exceptionz(TestInterp.test_periodic_knots_exceptionª  só   € å
Œ	�Š�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ry  c                 ó|  — t          | j        | j        |d¬¦  «        }t          | j        | j        d|¬¦  «        }t	          | j        |¦  «        }t          | || j        ¦  «        d¬¦  «         t          d|¦  «        D ];}t	          | j        ||¬¦  «        }t          | || j        |¬	¦  «        d
¬¦  «         Œ<d S )Nr¶   r  T)rr  r+   rb   rc   r%   r¿   rÁ   r£   )r
   r\   r²   r   r   r   rÃ   )rF   r+   rH   rR   r  rñ   s         rI   Útest_periodic_splevzTestInterp.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¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?r^   c                 ó,  — t          | j        | j        dd¬¦  «        }t          | j        | j        d¬¦  «        }t	           || j        ¦  «         || j        ¦  «        d¬¦  «         d}t          j        t
          j                             |¦  «        dz  ¦  «        }t
          j                             |¦  «        dz  }|d	         |d
<   t          ||dd¬¦  «        }t          ||d¬¦  «        }t	           ||¦  «         ||¦  «        d¬¦  «         d S )Nr2   r¶   r  r;  rb   rc   rW   r‹   r.   r   )	r
   r\   r²   r   r   r@   r‡   rE   r  )rF   rH   ÚcubrG   re   rˆ   s         rI   Útest_periodic_cubiczTestInterp.test_periodic_cubicÂ  s  € å˜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Ð1r^   c                 ó:  ‡‡‡— dŠt          | j        | j        ‰d¬¦  «        }t          | j        ‰¦  «        Št	          | j        | j        ‰‰¦  «        Št          j        ˆˆˆfd„¦  «        }t           || j        ¦  «         || j        ¦  «        d¬¦  «         d S )Nr2   r¶   r  c                 ó(   •— t          | ‰‰‰¦  «        S rŽ  rs   )re   r*   r+   r)   s    €€€rI   r�  z6TestInterp.test_periodic_full_matrix.<locals>.<lambda>Ø  s   ø€ ¥K°°1°a¸Ñ$;Ô$;€ r^   rb   rc   )r
   r\   r²   r   r   r@   Ú	vectorizer   )rF   rH   r  r*   r+   r)   s      @@@rI   Ú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Ð<Ñ<Ô<Ð<Ð<Ð<r^   c                 óð  — dg}t          | j        | j        dd |f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t           || j        d         d¦  «        |d         d         dd¬¦  «         t          | j        | j        d|d f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t           || j        d         d¦  «        |d         d         dd¬¦  «         d S )	N©r%   g       @r0   r  rb   rM   r.   r%   r   rþ  )rF   rÀ   rH   s      rI   Útest_quadratic_derivzTestInterp.test_quadratic_derivÛ  s÷   € Øˆ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ÐLr^   c                 óè  — d}dgdg}}t          | j        | j        |||f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t           || j        d         d¦  «         || j        d	         d¦  «        g|d         d         |d         d         gdd¬¦  «         d
gd
g}}t          | j        | j        |||f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         d S )Nr2   ©r%   r6   )r%   r7   r;  rb   rM   r   r%   r.   ©r0   r   rþ  )rF   r+   Úder_lÚder_rrH   s        rI   Útest_cubic_derivzTestInterp.test_cubic_derivè  s  € Øˆð  �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ÐDr^   c                 óü  — d\  }}t          j        |¦  «                             t           j        ¦  «        }t          j        |¦  «        }ddg}ddg}t          |||||f¬¦  «        }t           ||¦  «        |dd¬¦  «         t           ||d	         d
¦  «         ||d	         d¦  «        gd„ |D ¦   «         ¦  «         t           ||d         d
¦  «         ||d         d¦  «        gd„ |D ¦   «         ¦  «         d S )N)r–   r’   )r%   g      (À)r0   r%   r"  )r0   r6   r  rb   rM   r   r%   r0   c                 ó   — g | ]\  }}|‘ŒS rr   rr   ©rv   rÂ   Úvals      rI   rw   z2TestInterp.test_quintic_derivs.<locals>.<listcomp>   ó   € Ð4Ð4Ð4¡ " c˜Ð4Ð4Ð4r^   r.   c                 ó   — g | ]\  }}|‘ŒS rr   rr   r,  s      rI   rw   z2TestInterp.test_quintic_derivs.<locals>.<listcomp>  r.  r^   )r@   rD   ÚastypeÚfloat64rT  r
   r   )rF   r+   rG   re   rˆ   r'  r(  rH   s           rI   Útest_quintic_derivszTestInterp.test_quintic_derivs÷  s  € Ø‰ˆˆ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ð 	6r^   Úunstable)Úreasonc                 óÈ   — d}t          | j        |¦  «        }ddg}t          | j        | j        |||d f¬¦  «        }t	           || j        ¦  «        | j        dd¬¦  «         d S )Nr2   r%  )r0   r7   r;  rb   rM   )r   r\   r
   r²   r   )rF   r+   r)   r'  rH   s        rI   Útest_cubic_deriv_unstablez$TestInterp.test_cubic_deriv_unstable  sm   € ð ˆÝ�D”G˜QÑÔˆà˜'Ð"ˆÝ˜tœw¨¬°°AÀÀt¸}ÐMÑMÔMˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÐDÐDr^   c                 óÌ  — d}t           j        | j        d         f|dz   z  | j        dd …         | j        d d…         z   dz  | j        d         f|dz   z  f         }t          | j        | j        ||dgdgf¬¦  «        }t           || j        ¦  «        | j        dd¬	¦  «         t           || j        d         d¦  «         || j        d         d¦  «        gd
d
gd¬¦  «         d S )Nr0   r   r%   r.   r5   r&  r;  rb   rM   r4   rc   )r@   r�   r\   r
   r²   r   )rF   r+   r)   rH   s       rI   Ú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Øð	ñ 	ô 	ð 	ð 	ð 	r^   c                 ó´   — d}ddg}ddg}t          |||dgdgf¬¦  «        }t          j        dd¦  «        }|dz  }t           ||¦  «        |dd¬¦  «         d S )	Nr2   r4   r'   ©r%   r4   r%  r;  rb   rM   )r
   r@   rY   r   )rF   r+   re   rˆ   rH   r\   r²   s          rI   Ú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Ð:Ñ:Ô:Ð:Ð:Ð:r^   c                 ó–  — g d¢x}}t          t          ¦  «        5  t          ||dgd f¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          ||dg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   d\  }}t          t          ¦  «        5  t          ||||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r'   r0   r2   r3   r–   r‘   r:  r;  é*   )r:  r:  r  ©rF   re   rˆ   ÚlÚrs        rI   Útest_deriv_speczTestInterp.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Ã8C<Ã?C<ÄD>Ä>EÅEc                 óZ  — t          j        d¦  «        }|dz  }dgdg}}t          t          d¬¦  «        5  t	          ||||f¬¦  «         d d d ¦  «         n# 1 swxY w Y   dgdg}}t          t          d	¬¦  «        5  t	          ||||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr’   r0   )r‘   r   ©r%   r   zBad boundary conditions at 0.rÂ  r;  )iúÿÿÿr   zBad boundary conditions at 6.)r@   rD   r<   r>   r
   r>  s        rI   Útest_deriv_order_too_largez%TestInterp.test_deriv_order_too_largeE  sG  € ÝŒI�a‰LŒLˆØˆq‰DˆØˆx˜&˜ˆ1ˆÝ�:Ð-LÐMÑMÔMð 	5ð 	5å˜q !¨a°¨VÐ4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð ˆx˜'˜ˆ1ˆÝ�:Ð-LÐMÑMÔMð 	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ð 	5s#   ¶AÁAÁAÁ>B Â B$Â'B$c                 ó®  — d}| j         }| j        d| j        z  z   }dgdg}}t          |||||f¬¦  «        }t           ||¦  «        |dd¬¦  «         t           ||d         d	¦  «         ||d
         d	¦  «        g|d         d	         |d         d	         gdd¬¦  «         dD ]0}t          |||¬¦  «        }t           ||¦  «        |dd¬¦  «         Œ1d S )Nr2   r&   )r%   y              @)r%   y      @       @r;  rb   rM   r   r%   r.   )r   r%   rß   )r\   r²   r
   r   )rF   r+   r\   r²   r'  r(  rH   s          rI   Útest_complexzTestInterp.test_complexR  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¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?r^   c                 óú   — t          j        d¦  «                             t          ¦  «        }t          j        d¦  «                             t          ¦  «        }dD ]}t	          |||¬¦  «        } ||¦  «         Œ d S )NrW   rÌ   rß   )r@   rD   r0  Úintr
   )rF   re   rˆ   r+   rH   s        rI   Útest_int_xyzTestInterp.test_int_xyc  sv   € ÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆð ð 	ð 	ˆAÝ" 1 a¨1Ð-Ñ-Ô-ˆAØˆAˆa‰DŒDˆDˆDð	ð 	r^   c                 óŒ   — t          j        ddd¦  «        }|d d d…         }|d d d…         }dD ]}t          |||¬¦  «         Œd S )Nr.   r%   r‹   r–   rÌ   rß   )r@   rY   r
   )rF   r\   re   rˆ   r+   s        rI   Útest_sliced_inputzTestInterp.test_sliced_inputm  sd   € åŒ[˜˜Q Ñ$Ô$ˆàˆsˆs�ˆsŒGˆØˆsˆs�ˆsŒGˆàð 	*ð 	*ˆAÝ˜q ! qÐ)Ñ)Ô)Ð)Ð)ð	*ð 	*r^   c                 óø   — t          j        d¦  «                             t          ¦  «        }|dz  }t           j        t           j        t           j         fD ]#}||d<   t          t          t          ||¦  «         Œ$d S )NrW   r0   r.   )	r@   rD   r0  ÚfloatrB   rC   r<   r>   r
   ©rF   re   rˆ   Úzs       rI   Útest_check_finitezTestInterp.test_check_finitew  ss   € åŒI�b‰MŒM× Ò ¥Ñ'Ô'ˆØˆq‰Dˆå”&�"œ&¥2¤6 'Ð*ð 	@ð 	@ˆAØˆAˆb‰EÝ�*Õ&8¸!¸QÑ?Ô?Ð?Ð?ð	@ð 	@r^   )r%   r0   r2   r–   c                 óz   — t          t          d¦  «        ¦  «        }d„ |D ¦   «         }t          |||¬¦  «         d S )NrW   c                 ó   — g | ]}|d z  ‘ŒS )r0   rr   )rv   Úas     rI   rw   z.TestInterp.test_list_input.<locals>.<listcomp>„  s   € ÐÐÐ�aˆQ�‰TÐÐÐr^   rß   )r  rÃ   r
   r  s       rI   Útest_list_inputzTestInterp.test_list_input€  sC   € õ •�r‘”‰OŒOˆØÐ˜1ÐÑÔˆÝ˜1˜a 1Ð%Ñ%Ô%Ð%Ð%Ð%r^   c                 óì  — t           j        t          j        | j        ¦  «        t          j        | j        ¦  «        f         }dddgfg}dddgfg}t          | j        |d||f¬¦  «        }t           || j        ¦  «        |dd¬	¦  «         t           || j        d
         d¦  «        |d
         d         dd¬	¦  «         t           || j        d         d¦  «        |d
         d         dd¬	¦  «         d S )Nr%   r'   r5   r6   r7   r2   r  rb   rM   r   r.   )r@   rç   rT  r\   rV  r
   r   )rF   r²   r'  r(  rH   s        rI   Útest_multiple_rhszTestInterp.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ÐOr^   c                 óR  — t           j                             d¦  «         d\  }}t          j        t           j                             |¬¦  «        ¦  «        }t           j                             |dddf¬¦  «        }t	          |||¦  «        }t          |j        j        |dddf¦  «         dt           j                             d¦  «        fg}dt           j                             d¦  «        fg}t	          |||||f¬	¦  «        }t          |j        j        ||z   dz
  dddf¦  «         d S )
Nrƒ   ©r2   r�   r“   r–   r‘   r’   r%   ©r–   r‘   r’   r;  )r@   rE   r†   r‡   r
   r   r*   r—   )rF   r+   rG   re   rˆ   rH   Úd_lÚd_rs           rI   Útest_shapeszTestInterp.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Ð5r^   c                 óJ  — t          j        | j        ¦  «        }t          | j        |dd¬¦  «        }t          | j        |ddgdgf¬¦  «        }t	          |j        |j        d¬¦  «         t          | j        |dd¬¦  «        }t          | j        |ddgdgf¬¦  «        }t	          |j        |j        d¬¦  «         t          | j        |d	d
¬¦  «        }t          | j        |d	d dgf¬¦  «        }t	          |j        |j        d¬¦  «         t          | j        |dd¬¦  «        }t          | j        |dd ¬¦  «        }t	          |j        |j        d¬¦  «         t          t          ¦  «        5  t          | j        |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t           j        t          j        | j        ¦  «        t          j	        | j        ¦  «        f         }dddgfg}d	ddgfg}t          | j        |d||f¬¦  «        }t          | j        |dd¬¦  «        }t	          |j        |j        d¬¦  «         t           j
                             d¦  «         d\  }}t          j        t           j
         
                    |¬¦  «        ¦  «        }t           j
         
                    |dddf¬¦  «        }	dt          j        d¦  «        fg}
dt          j        d¦  «        fg}t          ||	||
|f¬¦  «        }t          ||	|d¬¦  «        }t	          |j        |j        d¬¦  «         d S )Nr2   r$  r  r&  rL   rc   )r$  r#  rC  r0   )Nr#  r:  r%  Útypor%   r4   r"  rƒ   rX  r“   r–   r‘   r’   rY  r;  r#  )r@   rT  r\   r
   r   r*   r<   r>   rç   rV  rE   r†   r‡   ré  )rF   r²   r  r¾  r'  r(  r+   rG   re   rˆ   rZ  r[  s               rI   Útest_string_aliaseszTestInterp.test_string_aliases   ss  € ÝŒ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ÆFc                 óŠ  — t           j                             d¦  «         d\  }}t          j        t           j                             |¬¦  «        ¦  «        }t           j                             |¬¦  «        }t	          ||¦  «        }t          ||||¦  «        }t          ||||¦  «        }t          |j        |dd¬¦  «         d S )Nrƒ   )r2   r’   r“   rb   rM   )	r@   rE   r†   r‡   r   r
   Úmake_interp_full_matrr   r*   )rF   r+   rG   re   rˆ   r)   rH   ru  s           rI   Útest_full_matrixzTestInterp.test_full_matrixÓ  s­   € Ý
Œ	�Š�tÑÔÐØ‰ˆˆ1ÝŒG•B”I×$Ò$¨!Ð$Ñ,Ô,Ñ-Ô-ˆÝŒI×Ò !ÐÑ$Ô$ˆÝ˜˜1ÑÔˆå˜q ! Q¨Ñ*Ô*ˆÝ" 1 a¨¨AÑ.Ô.ˆÝ˜œ˜R e°%Ð8Ñ8Ô8Ð8Ð8Ð8r^   c                 óÎ  — t           j                             d¦  «         d}t          ddd¦  «        D �]0}t	          |dz
  dz  ¦  «        }t          j        t           j                             d|f¦  «        ¦  «        }t          d|dz   ¦  «        D ]˜}|d| …|d…fxx         t          j        t           j                             d||z
  f¦  «        ¦  «        z  cc<   ||d…d| …fxx         t          j        t           j                             d||z
  f¦  «        ¦  «        z  cc<   Œ™t           j                             ||f¦  «        }||d|…| d…f<   t           j                             ||f¦  «        }||| d…d|…f<   t          j        ||f¦  «        }t          t          || dz
  d¦  «        ¦  «        D ]F\  }}	|	d	k     rt          j        ||	¬
¦  «        ||d|	…f<   Œ)t          j        ||	¬
¦  «        |||	d…f<   ŒGt           j                             |¦  «        }
t          t          ||||
|¦  «        t           j                             ||
¦  «        d¬¦  «         �Œ2dS )z­
        Random elements in diagonal matrix with blocks in the
        left lower and right upper corners checking the
        implementation of Woodbury algorithm.
        rƒ   éÉ   r2   é    r0   r%   Nr.   r   )Úoffsetrb   rc   )r@   rE   r†   rÃ   rH  Údiagflatré  rƒ  Údiagonalr   r   ÚlinalgÚsolve)rF   rG   r+   rf  rS  rñ   ÚurÚllÚdrã   rH   s              rI   Útest_woodburyzTestInterp.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¸ð?ñ ?ô ?ð ?ñ ?ð#	?ð 	?r^   N)-rü   rý   rþ   r@   rY   r¼  r\   rT  r²   rû  rÿ  r  rS   rL  rM  r  r	  r  r  r  r  r  r  r  r  r   r#  r)  r2  Úxfailr6  r8  r;  rA  rD  rF  rI  rK  rP  rT  rV  r\  r_  rb  rn  rr   r^   rI   rù  rù  D  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ð.5ð 5ð 5ð?ð ?ð ?ð"ð ð ð*ð *ð *ð@ð @ð @ð „[×Ò˜S , , ,Ñ/Ô/ð&ð &ñ 0Ô/ð&ðPð Pð Pð6ð 6ð 6ð10ð 10ð 10ðf	9ð 	9ð 	9ð?ð ?ð ?ð ?ð ?r^   rù  c                 ó¤  — | j         |j         k    sJ ‚|j         | j         |z   dz   k    sJ ‚| j         }t          j        ||ft          j        ¬¦  «        }t	          |¦  «        D ]W}| |         }|||         k    r|}nt          j        ||¦  «        dz
  }t          j        ||||¦  «        }	|	||||z
  |dz   …f<   ŒXt          j	        ||¦  «        }
|
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%   ©rA  )
r”   r@   ré  r1  rÃ   r�  r   Úevaluate_all_bsplÚslrj  )re   rˆ   r)   r+   rG   ÚArã   rP  ÚleftÚbbr*   s              rI   ra  ra  û  sé   € ð Œ6�Q”VÒÐÐÐØŒ6�Q”V˜a‘Z !‘^Ò#Ð#Ð#Ð#Ø	Œ€Aå
Œ�!�Q��rœzÐ*Ñ*Ô*€Aå�1‰XŒXð 	!ð 	!ˆØ�ŒtˆØ�1�Q”4Š<ˆ<ØˆDˆDå”? 1 dÑ+Ô+¨aÑ/ˆDõ Ô$ Q¨¨4°Ñ6Ô6ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
ÑÐå
Œ��A‰Œ€AØ€Hr^   c                 ó  — t          t          j        | ||f¦  «        \  } }}| j        }|j        |z
  dz
  }t          j        ||ft          j        ¬¦  «        }t          |¦  «        D ]W}| |         }|||         k    r|}	nt          j        ||¦  «        dz
  }	t          j	        ||||	¦  «        }
|
|||	|z
  |	dz   …f<   ŒXt          j
        |j        |¦  «        }t          j
        |j        |¦  «        }t          j        ||¦  «        }|||ffS )z,Make the least-square spline, full matrices.r%   rq  )Úmapr@   rk   r”   ré  r1  rÃ   r�  r   rr  ÚdotÚTrs  rj  )re   rˆ   r)   r+   r`  rG   rt  rã   rP  ru  rv  rÿ   ÚYr*   s                 rI   Úmake_lsq_full_matrixr|    s  € å•"”*˜q ! Q˜iÑ(Ô(�G€A€qˆ!Ø	Œ€AØ	Œ�‰
�Q‰€Aå
Œ�!�Q��rœzÐ*Ñ*Ô*€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Ðr^   c                   óP  — e Zd Zej                             d¦  «         d\  ZZ ej        ej                             e¦  «        ¦  «        Z	ej                             e¦  «        Z
 e ej        e	d         e	d         d¦  «        e¦  «        Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚTestLSQrƒ   )rö   r2   r   r.   r’   c                 óŠ  — | j         | j        | j        | j        f\  }}}}t	          ||||¦  «        \  }}t          ||||¦  «        }t          |j        |¦  «         t          |j        j	        |j
        |z
  dz
  f¦  «         |\  }}	t          j                             ||d¬¦  «        \  }
}}}t          |j        |
¦  «         d S )Nr%   r.   )Úrcond)re   rˆ   r)   r+   r|  r   r   r*   r   r—   r”   r@   ri  Úlstsq)rF   re   rˆ   r)   r+   Úc0ÚAYrH   Úaar²   rŠ  r¦   s               rI   Ú
test_lstsqzTestLSQ.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Ñ Ô Ð Ð Ð r^   c                 ó\  — | j         | j        | j        | j        f\  }}}}t	          j        |¦  «        }t          ||||¦  «        }t          |||||¬¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         t          |j        |j        ¦  «         d S )N)Úwrb   rc   )
re   rˆ   r)   r+   r@   rŒ   r   r   r*   r   )rF   re   rˆ   r)   r+   r‡  rH   Úb_ws           rI   Útest_weightszTestLSQ.test_weightsL  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˜#œ%Ñ Ô Ð Ð Ð r^   c                 ó  — | j         | j        | j        | j        f\  }}}}t          j                             |dddf¬¦  «        }t          ||||¦  «        }t          |j        j	        |j
        |z
  dz
  dddf¦  «         d S )Nr–   r‘   r’   r“   r%   )re   r)   r+   rG   r@   rE   r   r   r*   r—   r”   )rF   re   r)   r+   rG   rˆ   rH   s          rI   rV  zTestLSQ.test_multiple_rhsX  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Ð6r^   c                 ó,  — | j         | j        | j        }}}| j        dz  }t	          ||||¦  «        }t	          ||j        ||¦  «        }t	          ||j        ||¦  «        }t           ||¦  «         ||¦  «        d ||¦  «        z  z   dd¬¦  «         d S )Ny      ð?       @r&   rL   rM   )re   r)   r+   rˆ   r   rÕ   rÖ   r   )rF   re   r)   r+   r2  rH   rØ   rÙ   s           rI   rF  zTestLSQ.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ÐLr^   c                 óþ   — t          j        d¦  «                             t          ¦  «        }t          j        d¦  «                             t          ¦  «        }t	          |d¬¦  «        }t          |||d¬¦  «         d S )NrW   r%   rß   )r@   rD   r0  rH  r   r   ©rF   re   rˆ   r)   s       rI   rI  zTestLSQ.test_int_xyj  sd   € ÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝ�A˜ˆO‰OŒOˆå˜˜1˜a 1Ð%Ñ%Ô%Ð%Ð%Ð%r^   c                 ó¤   — t          j        ddd¦  «        }|d d d…         }|d d d…         }t          |d¦  «        }t          |||d¬¦  «         d S )Nr.   r%   r‹   r2   rß   )r@   rY   r   r   )rF   r\   re   rˆ   r)   s        rI   rK  zTestLSQ.test_sliced_inputq  s]   € åŒ[˜˜Q Ñ$Ô$ˆàˆsˆs�ˆsŒGˆØˆsˆs�ˆsŒGˆÝ�A�q‰MŒMˆÝ˜˜1˜a 1Ð%Ñ%Ô%Ð%Ð%Ð%r^   c                 ó  — t          j        d¦  «                             t          ¦  «        }|dz  }t	          |d¦  «        }t           j        t           j        t           j         fD ]$}||d<   t          t          t          |||¦  «         Œ%d S )Né   r0   r2   r.   )
r@   rD   r0  rM  r   rB   rC   r<   r>   r   )rF   re   rˆ   r)   rO  s        rI   Útest_checkfinitezTestLSQ.test_checkfinitez  s�   € åŒI�b‰MŒM× Ò ¥Ñ'Ô'ˆØˆq‰DˆÝ�A�q‰MŒMˆå”&�"œ&¥2¤6 'Ð*ð 	@ð 	@ˆAØˆAˆb‰EÝ�*¥o°q¸!¸QÑ?Ô?Ð?Ð?ð	@ð 	@r^   c                 óØ   — | j         | j        | j        }}}|                     d¬¦  «         |                     d¬¦  «         |                     d¬¦  «         t	          |||¬¦  «         d S )NFrH  )re   rˆ   r)   )re   rˆ   r)   rJ  r   r�  s       rI   rK  zTestLSQ.test_read_only„  sl   € à”&˜$œ& $¤&ˆaˆ1ˆØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐÝ˜!˜q AÐ&Ñ&Ô&Ð&Ð&Ð&r^   N)rü   rý   rþ   r@   rE   r†   rG   r+   r‡   re   rˆ   r   rY   r)   r…  r‰  rV  rF  rI  rK  r‘  rK  rr   r^   rI   r~  r~  3  s  € € € € € ð „I‡N‚N�4ÑÔÐØ�D€A€qØˆŒ�”	× Ò  Ñ#Ô#Ñ$Ô$€AØ
Œ	×Ò˜ÑÔ€AØˆ��”˜A˜aœD ! B¤%¨Ñ+Ô+¨QÑ/Ô/€Að!ð !ð !ð
!ð 
!ð 
!ð7ð 7ð 7ð	Mð 	Mð 	Mð&ð &ð &ð&ð &ð &ð@ð @ð @ð'ð 'ð 'ð 'ð 'r^   r~  c                 óÂ   — t           j                             t           j                             t           j                             t
          ¦  «        ¦  «        d| ¦  «        S )NÚdata)ÚosÚpathÚjoinÚabspathÚdirnameÚ__file__)Úbasenames    rI   Ú	data_filerœ  �  s=   € ÝŒ7�<Š<�œŸš­¬¯ª½Ñ(AÔ(AÑBÔBØ ñ*ô *ð *r^   c                   ó&   — e Zd Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestSmoothingSplinec                 ó  — t           j                             d¦  «         d}t          j        t           j                             |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   t           j                             dd|¦  «        z   }t          t          ¦  «        5  t          ||dd …         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          |dd …         |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          | 
                    d|¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          |d d d	…         |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }|d         |d
<   t          t          ¦  «        5  t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          j        d¦  «        }d}t          j        t          |¬¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrƒ   r‹   r3   r0   r2   r4   rí   r%   r.   r   z)``x`` and ``y`` length must be at least 5rÂ  )r@   rE   r†   r‡   r  rT  Únormalr<   r>   r   rl   r·  rD   rz  rS   r   )rF   rG   re   rˆ   Úx_duplÚexception_messages         rI   Ú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‰	å�:Ñ&Ô&ð 	-ð 	-Ý! &¨!Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ ŒI�a‰LŒLˆÝŒG�A‰JŒJˆØGÐÝŒ]�:Ð->Ð?Ñ?Ô?ð 	(ð 	(Ý! ! QÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(sl   Â2CÃCÃCÃ6DÄDÄ"DÄ:%E+Å+E/Å2E/Æ
F0Æ0F4Æ7F4Ç.HÈHÈHÉI9É9I=Ê I=c                 ó   — t          j        t          d¦  «        ¦  «        5 }|d         }|d         }|d         }ddd¦  «         n# 1 swxY w Y    t          ||¦  «        |¦  «        }t	          ||dd¬¦  «         dS )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.npzre   rˆ   Úy_GCVSPLNg-Cëâ6?rM   )r@   Úloadrœ  r   r   )rF   r”  re   rˆ   r¥  Úy_comprs         rI   Útest_compare_with_GCVSPLz,TestSmoothingSpline.test_compare_with_GCVSPLµ  sÆ   € õR ŒW•Y˜|Ñ,Ô,Ñ-Ô-ð 	(°à�S”	ˆAØ�S”	ˆAà˜JÔ'ˆHð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð .Õ'¨¨1Ñ-Ô-¨aÑ0Ô0ˆõ
 	˜ °¸4Ð@Ñ@Ô@Ð@Ð@Ð@s   ¢AÁAÁAc                 ó  — t           j                             d¦  «         d}t          j        t           j                             |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   t           j                             dd|¦  «        z   }t          ||d¬¦  «        }t          ||dd	¬
¦  «        }t          j	        |d         |d         d|z  ¦  «        }t           ||¦  «         ||¦  «        d¬¦  «         dS )z–
        In case the regularization parameter is 0, the resulting spline
        is an interpolation spline with natural boundary conditions.
        rƒ   r‹   r3   r0   r2   r4   rí   )Úlamr$  r;  r   r.   rL   rc   N)r@   rE   r†   r‡   r  rT  r   r   r
   rY   r   )rF   rG   re   rˆ   Ú
spline_GCVÚspline_interpÚgrids          rI   Ú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Ñ+Ô+Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$r^   c                 óì  — t           j                             d¦  «         d}t          j        t           j                             |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   t           j                             dd|¦  «        z   }t          ||¦  «        }t           j                             t          d¦  «        d¬	¦  «        D ]—}t          j
        |¦  «        }d
||<   t          |||¦  «        }t           |||         ¦  «        ||         z
  ¦  «        }t           |||         ¦  «        ||         z
  ¦  «        }	||	k     rt          d|d›d|	d›�¦  «        ‚Œ˜d S )Nrƒ   r‹   r3   r0   r2   r4   rí   rW   r“   g      >@zJSpline with weights should be closer to the points than the original one: z.4z < )r@   rE   r†   r‡   r  rT  r   r   ÚchoicerÃ   rz  Úabsr>   )
rF   rG   re   rˆ   r  Úindr‡  Úspl_wÚorigÚweighteds
             rI   Útest_weighted_smoothing_splinez2TestSmoothingSpline.test_weighted_smoothing_splineþ  sw  € å
Œ	�Š�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ð 	3r^   N)rü   rý   rþ   r£  r¨  r®  r¶  rr   r^   rI   rž  rž  ’  sT   € € € € € ð(ð (ð (ð>4Að 4Að 4Aðl$ð $ð $ð&3ð 3ð 3ð 3ð 3r^   rž  c           	      ó   ‡‡‡‡‡‡‡	— | \  ŠŠ	|\  ŠŠt          ‰¦  «        ‰z
  dz
  }|‰dz   k    sJ ‚t          ‰¦  «        ‰z
  dz
  Š‰‰dz   k    sJ ‚t          ˆˆˆˆˆˆˆ	fd„t          |¦  «        D ¦   «         ¦  «        S )z-A naive 2D tensort product spline evaluation.r%   c           	   3   óœ   •K  — | ]F}t          ‰¦  «        D ]4}‰||f         t          ‰‰|‰¦  «        z  t          ‰	‰|‰¦  «        z  V — Œ5ŒGd S rŽ  )rÃ   rÿ   )
rv   ÚixÚiyr*   r+   ÚnyÚtxÚtyre   rˆ   s
      €€€€€€€rI   r�  zbspline2.<locals>.<genexpr>"  s{   øè è € ð 8ð 8Ø­U°2©Y¬Yð8ð 8Ø')ð ��R�Œy�1˜Q  2 r™?œ?Ñ*­Q¨q°!°R¸©_¬_Ñ<ð 8ð 8ð 8ð 8ð 8ð 8ð 8r^   r•  )
r¸   r)   r*   r+   Únxr»  r¼  r½  re   rˆ   s
     `` @@@@@rI   Úbspline2r¿    s¿   øøøøøøø€ à�D€A€qØ�F€BˆÝ	ˆR‰Œ�1‰�q‰€BØ�!�A‘#ŠIˆIˆIˆIÝ	ˆR‰Œ�1‰�q‰€BØ�!�A‘#ŠIˆIˆIˆIÝð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8Ý˜r™œð8ñ 8ô 8ñ 8ô 8ð 8r^   c                 óÀ  — |dk    r#||         | cxk    r||dz            k     rn ndndS |||z            ||         k    rd}n6| ||         z
  |||z            ||         z
  z  t          | |dz
  ||¦  «        z  }|||z   dz            ||dz            k    rd}nE|||z   dz            | z
  |||z   dz            ||dz            z
  z  t          | |dz
  |dz   |¦  «        z  }||z   S )Nr   r%   r'   r4   ©rÿ   r‰  s         rI   rÿ   rÿ   &  s  € ØˆA‚v€vØ˜”d˜aÐ(Ð(Ò(Ð( ! A a¡C¤&Ò(Ð(Ð(Ð(Ð(ˆsˆs¨cÐ1Øˆˆ1‰„v��1”‚~€~Øˆˆà�!�A”$‰h˜˜1˜Q™3œ ! A¤$™Ñ'­!¨A¨q°©s°A°q©/¬/Ñ9ˆØˆˆ1‰ˆQ‰„x�1�Q�q‘S”6ÒÐØˆˆà��!‘�A‘Œh˜‰l˜Q˜q ™s 1™uœX¨¨!¨A©#¬Ñ.Ñ/µ!°A°q¸±s¸A¸a¹CÀÑ2CÔ2CÑCˆØ�‰7€Nr^   c                 óÆ   ‡ ‡‡‡— t          ‰¦  «        ‰z
  dz
  }|‰dz   k    rt          ‰¦  «        |k    sJ ‚t          ˆˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        S )Nr%   c              3   óN   •K  — | ]}‰|         t          ‰‰|‰¦  «        z  V — Œ d S rŽ  rÁ  r”  s     €€€€rI   r�  zbspline.<locals>.<genexpr>7  s8   øè è € Ð6Ð6¨ˆq�Œt•a˜˜1˜a ‘m”mÑ#Ð6Ð6Ð6Ð6Ð6Ð6r^   r•  r–  s   ```` rI   r.  r.  4  sj   øøøø€ ÝˆA‰Œ�‰
�Q‰€AØ��1‘ŠHˆH�3˜q™6œ6 Qš;˜;˜;˜;ÝÐ6Ð6Ð6Ð6Ð6Ð6Ð6­U°1©X¬XÐ6Ñ6Ô6Ñ6Ô6Ð6r^   c                   ó   — e Zd Zdd„Zd„ ZdS )Ú
NdBSpline0r2   c                 ó,  — t          |¦  «        }|t          |j        ¦  «        k    sJ ‚	 t          |¦  «         n# t          $ r	 |f|z  }Y nw xY wt          d„ |D ¦   «         ¦  «        | _        t          d„ |D ¦   «         ¦  «        | _        || _        dS )a¯  Tensor product spline object.

        c[i1, i2, ..., id] * B(x1, i1) * B(x2, i2) * ... * B(xd, id)

        Parameters
        ----------
        c : ndarray, shape (n1, n2, ..., nd, ...)
            b-spline coefficients
        t : tuple of 1D ndarrays
            knot vectors in directions 1, 2, ... d
            ``len(t[i]) == n[i] + k + 1``
        k : int or length-d tuple of integers
            spline degrees.
        c              3   ó>   K  — | ]}t          j        |¦  «        V — Œd S rŽ  )ÚoperatorÚindex)rv   Úkis     rI   r�  z&NdBSpline0.__init__.<locals>.<genexpr>S  s,   è è € Ð6Ð6¨b•x”~ bÑ)Ô)Ð6Ð6Ð6Ð6Ð6Ð6r^   c              3   óL   K  — | ]}t          j        |t          ¬ ¦  «        V — Œ dS )rq  N)r@   rk   rM  )rv   Útis     rI   r�  z&NdBSpline0.__init__.<locals>.<genexpr>T  s1   è è € Ð?Ð?°r•r”z "­EÐ2Ñ2Ô2Ð?Ð?Ð?Ð?Ð?Ð?r^   N)r  r—   r=   rÅ  r+   r)   r*   )rF   r)   r*   r+   r  s        rI   Ú__init__zNdBSpline0.__init__;  s­   € õ �1‰vŒvˆØ•s˜1œ7‘|”|Ò#Ð#Ð#Ð#ð	Ý�‰FŒFˆFˆFøÝð 	ð 	ð 	à��T‘	ˆAˆAˆAð	øøøõ Ð6Ð6°AÐ6Ñ6Ô6Ñ6Ô6ˆŒÝÐ?Ð?¸QÐ?Ñ?Ô?Ñ?Ô?ˆŒØˆŒˆˆs   «; »AÁAc                 óÚ  ‡ ‡‡
‡— t          ‰ j        ¦  «        }t          ‰¦  «        |k    sJ ‚dg|z  Š
t          |¦  «        D ]§}‰ j        |         ‰|         }}‰ j        |         }|||         k    r|‰
|<   nt	          j        ||¦  «        dz
  ‰
|<   |‰
|                  |cxk    r|‰
|         dz            k    sn J ‚‰
|         |k    r‰
|         t          |¦  «        |z
  k     sJ ‚Œ¨t          ‰
¦  «        Š
d}ˆ
ˆ fd„t          |¦  «        D ¦   «         }t          j        |Ž D ]DŠ‰ j	        ‰         t	          j
        ˆˆ ˆfd„t          |¦  «        D ¦   «         ¦  «        z  }	||	z  }ŒE|S )NÚnoner%   r   c                 ój   •— g | ]/}t          ‰|         ‰j        |         z
  ‰|         d z   ¦  «        ‘Œ0S )r%   )rÃ   r+   )rv   rm  rñ   rF   s     €€rI   rw   z'NdBSpline0.__call__.<locals>.<listcomp>o  s:   ø€ ÐHÐHÐH°q•�q˜”t˜dœf QœiÑ'¨¨1¬°©Ñ2Ô2ÐHÐHÐHr^   c           	      óx   •— g | ]6}t          ‰|         ‰j        |         ‰|         ‰j        |         ¦  «        ‘Œ7S rr   )rÿ   r+   r)   )rv   rm  ÚidxrF   re   s     €€€rI   rw   z'NdBSpline0.__call__.<locals>.<listcomp>q  sQ   ø€ ð *@ð *@ð *@Ø./õ +,¨A¨a¬D°$´&¸´)¸SÀ¼VÀTÄVÈAÄYÑ*OÔ*Oð *@ð *@ð *@r^   )r  r)   rÃ   r+   r@   r�  rÅ  Ú	itertoolsÚproductr*   Úprod)rF   re   r  rm  ÚtdÚxdr+   ÚresultÚitersÚtermrñ   rÒ  s   ``        @@rI   Ú__call__zNdBSpline0.__call__W  s¼  øøøø€ Ý�4”6‰{Œ{ˆå�1‰vŒv˜Š~ˆ~ˆ~ˆ~ð ˆJ�t‰OˆÝ�t‘”ð 
	4ð 
	4ˆAØ”V˜A”Y  !¤�ˆBØ”�q”	ˆAð �R˜”UŠ{ˆ{Ø��!‘�å” r¨2Ñ.Ô.°Ñ2��!‘Ø�a˜”d”8˜rÐ/Ð/Ò/Ð/ R¨¨!¬¨Q©¤ZÒ/Ð/Ð/Ð/Ð/Ð/Ø�Q”4˜1’9�9  1¤­¨B©¬°!©Ò!3Ð!3Ð!3Ð!3Ð!3Ý�!‰HŒHˆð
 ˆØHÐHÐHÐHÐH½EÀ$¹K¼KÐHÑHÔHˆÝÔ$ eÐ,ð 	ð 	ˆCØ”6˜#”;¥¤ð *@ð *@ð *@ð *@ð *@ð *@Ý38¸±;´;ð*@ñ *@ô *@ñ "Aô "Añ AˆDà�d‰NˆFˆFØˆr^   N©r2   )rü   rý   rþ   rÍ  rÛ  rr   r^   rI   rÅ  rÅ  :  s7   € € € € € ðð ð ð ð8ð ð ð ð r^   rÅ  c                   ód  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             dddg¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         Zej                             dddg¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestNdBSplinec                 ó  — t           j                             d¦  «        }d\  }}d}t          j        |                     ||z   dz   ¬¦  «        ¦  «        }|                     ||f¬¦  «        }t          |||¦  «        }t          |f||¦  «        }|                     d¬¦  «        }	t           ||	d d …d f         ¦  «         ||	¦  «        d¬¦  «          ||	d d …d f         ¦  «        j        |	j        d	         |j        d         fk    sJ ‚d S )
Nrc  r:   r’   r%   r“   r¶  rb   rc   r   )	r@   rE   rg  r‡   rh  r   r   r   r—   )
rF   ri  rG   r+   Ún_trr)   r*   rH   ÚnbÚxis
             rI   Útest_1DzTestNdBSpline.test_1Dy  s  € åŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆ1ØˆÝŒG�C—K’K Q¨¡U¨Q¡Y�KÑ/Ô/Ñ0Ô0ˆØ�KŠK˜a ˜YˆKÑ'Ô'ˆå�A�q˜!ÑÔˆÝ˜�t˜Q Ñ"Ô"ˆà�[Š[˜bˆ[Ñ!Ô!ˆå˜˜˜2˜a˜a˜a ˜gœ;™œØ˜˜"™œ Eð	+ñ 	+ô 	+ð 	+àˆr�"�Q�Q�Q˜�W”+‰ŒÔ$¨¬°!¬°a´g¸a´jÐ(AÒAÐAÐAÐAÐAÐAr^   c                 óþ   — t          j        d¦  «        }|dz  }t          ||d¬¦  «        }|dz  d|z  z   }t          ||d¬¦  «        }|j        |j        f}|j        d d …d f         |j        d d d …f         z  }||dfS )Nr‘   r2   rß   r0   ©r@   rD   r
   r)   r*   ©rF   re   rˆ   r  Úy_1rX  Út2r‹  s           rI   Úmake_2d_casezTestNdBSpline.make_2d_caseŠ  s’   € åŒI�a‰LŒLˆØˆq‰DˆÝ   A¨Ð+Ñ+Ô+ˆà�‰d�Q�q‘S‰jˆÝ" 1 c¨QÐ/Ñ/Ô/ˆàŒe�U”WÐˆØŒU�1�1�1�d�7Œ^˜eœg d¨A¨A¨A gÔ.Ñ.ˆà�2�qˆyÐr^   c                 óB  — t          j        d¦  «        }|dz  }t          ||d¬¦  «        }t          j        d¦  «        dz   }|dz  d|z  z   }t          ||d¬¦  «        }|j        |j        f}|j        d d …d f         |j        d d d …f         z  }|||j        |j        fS )Nr‘   r2   rß   r–   rí   r0   )r@   rD   r
   r)   r*   r+   ræ  s           rI   Úmake_2d_mixedzTestNdBSpline.make_2d_mixed˜  s«   € åŒI�a‰LŒLˆØˆq‰DˆÝ   A¨Ð+Ñ+Ô+ˆåŒI�a‰LŒL˜3ÑˆØ�‰d�Q�q‘S‰jˆÝ" 1 c¨QÐ/Ñ/Ô/ˆàŒe�U”WÐˆØŒU�1�1�1�d�7Œ^˜eœg d¨A¨A¨A gÔ.Ñ.ˆà�2�s”u˜eœgÐ%Ð%r^   c                 ó~  ‡‡	‡
— g d¢}|                       ¦   «         \  Š
ŠŠ	d„ |D ¦   «         }t          ˆˆ	ˆ
fd„|D ¦   «         |d¬¦  «         t          ‰
‰d¬¦  «        } ||¦  «        j        t	          |¦  «        fk    sJ ‚t           ||¦  «        |d¬¦  «         t
          j                             d¦  «        }|                     d	¬
¦  «        dz  } ||¦  «        }|j        dk    sJ ‚| 	                    d¦  «        j
        \  }}t          |                     ¦   «         |dz  |dz  d|z  z   z  d¬¦  «         d S )N©©rí   r9   )r9   r%   )r·   rí   c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS rä  rr   ©rv   re   rˆ   s      rI   rw   z3TestNdBSpline.test_2D_separable.<locals>.<listcomp>ª  ó1   € Ð7Ð7Ð7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ñ%Ð7Ð7Ð7r^   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS rr   ©r¿  )rv   r¸   r‹  r+   rè  s     €€€rI   rw   z3TestNdBSpline.test_2D_separable.<locals>.<listcomp>­  s'   ø€ Ð>Ð>Ð>°R� " b¨"¨aÑ0Ô0Ð>Ð>Ð>r^   rb   rc   r2   rß   rc  )r3   r2   r0   r“   r–   )r3   r2   )r.   r0   r0   )ré  r   r   r—   r  r@   rE   rg  rh  rl   rz  Úravel)rF   râ  ÚtargetÚbspl2ri  rØ  re   rˆ   r‹  r+   rè  s           @@@rI   Útest_2D_separablezTestNdBSpline.test_2D_separable§  sƒ  øøø€ Ø/Ð/Ð/ˆØ×%Ò%Ñ'Ô'‰	ˆˆB�Ø7Ð7°BÐ7Ñ7Ô7ˆõ 	Ð>Ð>Ð>Ð>Ð>Ð>¸2Ð>Ñ>Ô>ØØ"ð	$ñ 	$ô 	$ð 	$õ
 ˜"˜b AÐ&Ñ&Ô&ˆØˆu�R‰yŒyŒ¥3 r¡7¤7 +Ò-Ð-Ð-Ð-Ý˜˜˜b™	œ	Ø Uð	,ñ 	,ô 	,ð 	,õ Œi×#Ò# EÑ*Ô*ˆØ�[Š[˜iˆ[Ñ(Ô(¨1Ñ,ˆØ��r‘”ˆØŒ|˜vÒ%Ð%Ð%Ð%ð �zŠz˜'Ñ"Ô"Ô$‰ˆˆ1Ý˜Ÿš™œØ˜1™  1¡ q¨¡s¡
Ñ+°%ð	9ñ 	9ô 	9ð 	9ð 	9ð 	9r^   c                 óî  — d}g d¢}d„ |D ¦   «         }|                       ¦   «         \  }}}t          j        ||||f¦  «        }d}t          ||d¬¦  «        }	 |	|¦  «        }
 t          |||¦  «        |¦  «        }|
j        dk    sJ ‚t          |
|gdz  d	¬
¦  «          |	|¦  «        j        t          j        |¦  «        d d…         |	j        j        |d …         z   k    sJ ‚t           |	|¦  «        t          j        |¦  «        d d …d f         z
  dd¬
¦  «         |                     d¦  «        }t          ||d¬¦  «        } ||¦  «        }
|
j        dk    sJ ‚t          |
||g||ggd	¬
¦  «          ||¦  «        j        t          j        |¦  «        d d…         |j        j        |d …         z   k    sJ ‚t           ||¦  «        t          j        |¦  «        d d …d d f         z
  dd¬
¦  «         d S )Nr0   rí  c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS rä  rr   rð  s      rI   rw   z5TestNdBSpline.test_2D_separable_2.<locals>.<listcomp>Æ  rñ  r^   rî  r2   rß   )r3   r3   rb   rc   r.   r   g‚vIhÂ%,=©r‘   r‘   r0   r0   )r0   r0   )	ré  r@   rè   r   r—   r   r*   rk   rl   )rF   r  râ  rõ  rè  r‹  r+   Úc2_4r¸   Úbspl2_4rØ  Ú
val_singleÚc2_22Úbspl2_22s                 rI   Útest_2D_separable_2z!TestNdBSpline.test_2D_separable_2Â  se  € àˆØ/Ð/Ð/ˆØ7Ð7°BÐ7Ñ7Ô7ˆà×%Ò%Ñ'Ô'‰	ˆˆB�ÝŒy˜"˜b " bÐ)Ñ*Ô*ˆàˆÝ˜B ¨Ð*Ñ*Ô*ˆØ�˜‘”ˆØ)•Y˜r 2 qÑ)Ô)¨"Ñ-Ô-ˆ
ØŒ|˜tÒ#Ð#Ð#Ð#Ý˜Ø#˜ qÑ(¨uð	6ñ 	6ô 	6ð 	6ð
 ˆw�r‰{Œ{Ô ¥B¤H¨R¡L¤L°°"°Ô$5¸¼	¼ÈÈÈÔ8NÑ$NÒNÐNÐNÐNÝ˜˜ ™œ¥b¤j°Ñ&8Ô&8¸¸¸¸D¸Ô&AÑAØ ð	'ñ 	'ô 	'ð 	'ð —’˜\Ñ*Ô*ˆÝ˜R ¨!Ð,Ñ,Ô,ˆà�˜"‘”ˆØŒ|˜vÒ%Ð%Ð%Ð%Ý˜Ø$ jÐ1Ø$ jÐ1ð3Ø9>ð	@ñ 	@ô 	@ð 	@ð �˜‘”Ô"Ý”˜‘”˜S˜b˜SÔ! H¤JÔ$4°T°U°UÔ$;Ñ;ò<ð <ð <ð <å˜˜ ™œ¥r¤z°&Ñ'9Ô'9¸!¸!¸!¸TÀ4¸-Ô'HÑHØ ð	'ñ 	'ô 	'ð 	'ð 	'ð 	'r^   c           
      óÆ  ‡‡‡‡— t           j                             d¦  «        }dŠt           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         Št           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         Š|                     ‰j        ‰z
  dz
  ‰j        ‰z
  dz
  f¬¦  «        Št          ‰‰f‰‰¬	¦  «        }d
}t           ||¦  «        t          |‰‰f‰‰¦  «        d¬¦  «         t           j
        g d¢g d¢f         }t           ||¦  «        ˆˆˆˆfd„|D ¦   «         d¬¦  «         d S )Nrc  r2   r   r’   r“   rµ   r3   r%   rß   )r'   r'   rb   rc   ©r%   rí   r0   ©çš™™™™™ñ?gš™™™™™ù?çÍÌÌÌÌÌ @c                 ó8   •— g | ]}t          |‰‰f‰‰¦  «        ‘ŒS rr   ró  )rv   r¸   r*   r+   r¼  r½  s     €€€€rI   rw   z0TestNdBSpline.test_2D_random.<locals>.<listcomp>ú  s+   ø€ ÐCÐCÐC¸"� " r¨2 h°°1Ñ5Ô5ÐCÐCÐCr^   )r@   rE   rg  r�   r‡   rh  r”   r   r   r¿  rç   )rF   ri  r  râ  r*   r+   r¼  r½  s       @@@@rI   Útest_2D_randomzTestNdBSpline.test_2D_randomê  s‹  øøøø€ ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg a™i¨™k¨2¬7°1©9°Q©;Ð7ˆKÑ8Ô8ˆå˜˜R˜ ! qÐ)Ñ)Ô)ˆàˆÝ˜˜˜B™œÝ   b¨" X¨q°!Ñ4Ô4¸5ð	Bñ 	Bô 	Bð 	Bõ ŒU�;�;�;Ø"�?�?ð#ô $ˆå˜˜˜B™œØCÐCÐCÐCÐCÐCÐCÀÐCÑCÔCØ"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$r^   c                 óþ   — |                       ¦   «         \  }}}}g d¢}d„ |D ¦   «         }t          ||||f¬¦  «        } ||¦  «        j        t          |¦  «        fk    sJ ‚t	           ||¦  «        |d¬¦  «         d S )N©)çffffffö?rm  )r9   g333333@)rm  rx  c                 ó6   — g | ]\  }}|d z  |dz  d|z  z   z  ‘ŒS rä  rr   rð  s      rI   rw   z/TestNdBSpline.test_2D_mixed.<locals>.<listcomp>   rñ  r^   rß   rb   rc   )rë  r   r—   r  r   )rF   rè  r‹  ÚkxÚkyrâ  rõ  rö  s           rI   Útest_2D_mixedzTestNdBSpline.test_2D_mixedý  s¤   € Ø×+Ò+Ñ-Ô-‰ˆˆB��BØ1Ð1Ð1ˆØ7Ð7°BÐ7Ñ7Ô7ˆÝ˜"˜b R¨ HÐ-Ñ-Ô-ˆØˆu�R‰yŒyŒ¥3 r¡7¤7 +Ò-Ð-Ð-Ð-Ý˜˜˜b™	œ	Ø Uð	,ñ 	,ô 	,ð 	,ð 	,ð 	,r^   c                 óD  — |                       ¦   «         \  }}}}g d¢}t          ||||f¬¦  «        } ||d¬¦  «        }t          |d„ |D ¦   «         d¬¦  «          ||d¬¦  «        }t          |d	„ |D ¦   «         d¬¦  «          ||d
¬¦  «        }t          |d„ |D ¦   «         d¬¦  «         t          t          ¦  «        5   ||d¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5   ||d¬¦  «        }d d d ¦  «         d S # 1 swxY w Y   d S )Nr	  rß   rC  rÁ   c                 ó<   — g | ]\  }}d |dz  z  |dz  d|z  z   z  ‘ŒS rä  rr   rð  s      rI   rw   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>  s5   € Ð>Ð>Ð>±4°1°a˜˜1˜a™4™ 1 a¡4¨!¨A©#¡:Ñ.Ð>Ð>Ð>r^   rb   rc   ©r%   r%   c                 ó6   — g | ]\  }}d |dz  z  d|z  dz   z  ‘ŒS rä  rr   rð  s      rI   rw   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>  s1   € Ð;Ð;Ð;±°°1˜˜1˜a™4™ 1 Q¡3¨¡7Ñ+Ð;Ð;Ð;r^   )r   r   c                 ó6   — g | ]\  }}|d z  |dz  d|z  z   z  ‘ŒS rä  rr   rð  s      rI   rw   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>  s1   € Ð<Ð<Ð<±°°A˜˜A™  A¡¨¨!©¡Ñ,Ð<Ð<Ð<r^   )r.   r   )r.   r   r%   )rë  r   r   r<   r>   )rF   rè  r‹  r  r  râ  rö  rÀ   s           rI   Útest_2D_derivativez TestNdBSpline.test_2D_derivative  s  € Ø×+Ò+Ñ-Ô-‰ˆˆB��BØ1Ð1Ð1ˆÝ˜"˜b R¨ HÐ-Ñ-Ô-ˆàˆe�B˜6Ð"Ñ"Ô"ˆÝ˜Ø>Ð>¸2Ð>Ñ>Ô>ÀUð	Lñ 	Lô 	Lð 	Lð ˆe�B˜6Ð"Ñ"Ô"ˆÝ˜Ø;Ð;¸Ð;Ñ;Ô;À%ð	Iñ 	Iô 	Ið 	Ið ˆe�B˜6Ð"Ñ"Ô"ˆÝ˜Ø<Ð<¸Ð<Ñ<Ô<À5ð	Jñ 	Jô 	Jð 	Jõ �:Ñ&Ô&ð 	(ð 	(à�%˜˜wÐ'Ñ'Ô'ˆCð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ �:Ñ&Ô&ð 	+ð 	+à�%˜˜zÐ*Ñ*Ô*ˆCð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s$   ÃCÃCÃ"CÃ:DÄDÄDc           
      ó’  ‡	— t           j                             d¦  «        }d\  }}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  d	z
  |j        |z
  d	z
  f¬¦  «        }t           j        g d
¢g d¢f         }t          ||f|||f¬¦  «        }t          ||f|||f¬¦  «        Š	t           ||¦  «        ˆ	fd„|D ¦   «         d¬¦  «         d S )Nrc  )r0   r2   r   r’   r“   r2   rµ   r3   r%   r  r  rß   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rr   rr   ©rv   r
  Úbspl2_0s     €rI   rw   z6TestNdBSpline.test_2D_mixed_random.<locals>.<listcomp>-  ó!   ø€ Ð2Ð2Ð2¨˜˜ ™œÐ2Ð2Ð2r^   rb   rc   )r@   rE   rg  r�   r‡   rh  r”   rç   r   rÅ  r   ©
rF   ri  r  r  r¼  r½  r*   râ  rö  r  s
            @rI   Útest_2D_mixed_randomz"TestNdBSpline.test_2D_mixed_random  si  ø€ ÝŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆBÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg¨™l¨QÑ.°´¸"±¸qÑ0@ÐAˆKÑBÔBˆåŒU�;�;�;Ø"�?�?ð#ô $ˆõ ˜2˜r˜( A¨"¨b¨Ð2Ñ2Ô2ˆÝ˜b "˜X q¨R°¨HÐ5Ñ5Ô5ˆå˜˜˜b™	œ	Ø2Ð2Ð2Ð2¨rÐ2Ñ2Ô2¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@r^   c                 óð  — t          j        d¦  «        }t          j        d¦  «        dz   }t          ||dz  d¬¦  «        }t          ||dz  d|z  z   d¬¦  «        }|j        d d …d f         |j        d d d …f         z  }t	          |j        |j        f||j        |j        f¦  «        }|dz  d d …d f         |dz  d|z  z   d d d …f         z  }t          ||f|¦  «        }d„ t          j	        ||¦  «        D ¦   «         }	 ||	¦  «        }
t          j
        |
¦  «                             ¦   «         rJ ‚t          |
 ||	¦  «        d¬	¦  «         t          |
                     |j        ¦  «        |d¬	¦  «         d S )
Nr‘   r’   rí   r2   rß   r0   c                 ó   — g | ]	\  }}||f‘Œ
S rr   rr   ©rv   rS  rH   s      rI   rw   z0TestNdBSpline.test_tx_neq_ty.<locals>.<listcomp><  ó    € Ð9Ð9Ð9™˜˜Aˆq�!ˆfÐ9Ð9Ð9r^   rb   rc   )r@   rD   r
   r*   r   r)   r+   r   rÓ  rÔ  r±   Úanyr   rl   r—   )rF   re   rˆ   Úspl_xÚspl_yr×   rn   ÚvaluesÚrgirâ  Úbxis              rI   Útest_tx_neq_tyzTestNdBSpline.test_tx_neq_ty/  s}  € åŒI�a‰LŒLˆÝŒI�a‰LŒL˜3Ñˆå" 1 a¨¡d¨aÐ0Ñ0Ô0ˆÝ" 1 a¨¡d¨Q¨q©S¡j°AÐ6Ñ6Ô6ˆØŒW�Q�Q�Q˜�WÔ ¤¨¨a¨a¨a¨Ô 0Ñ0ˆÝ˜%œ' 5¤7Ð+¨R°%´'¸5¼7Ð1CÑDÔDˆà�Q‘$˜˜˜˜4˜” A q¡D¨1¨Q©3¡J°°a°a°a°Ô#8Ñ8ˆÝ% q¨! f¨fÑ5Ô5ˆà9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆØˆd�2‰hŒhˆå”8˜C‘=”=×$Ò$Ñ&Ô&Ð&Ð&Ð&Ý˜˜S˜S ™WœW¨5Ð1Ñ1Ô1Ð1Ý˜Ÿš F¤LÑ1Ô1°6ÀÐFÑFÔFÐFÐFÐFr^   c                 ót  — t          j        d¦  «        }|dz  }t          ||d¬¦  «        }|dz  d|z  z   }t          ||d¬¦  «        }|dz  d|z  z   dz   }t          ||d¬¦  «        }|j        |j        |j        f}|j        d d …d d f         |j        d d d …d f         z  |j        d d d d …f         z  }	||	dfS )Nr‘   r2   rß   r0   r%   rå  )
rF   re   rˆ   r  rç  rX  Úy_2Úspl_2rè  r‹  s
             rI   Úmake_3d_casezTestNdBSpline.make_3d_caseC  sâ   € åŒI�a‰LŒLˆØˆq‰DˆÝ   A¨Ð+Ñ+Ô+ˆà�‰d�Q�q‘S‰jˆÝ" 1 c¨QÐ/Ñ/Ô/ˆà�‰d�Q�q‘S‰j˜1‰nˆÝ" 1 c¨QÐ/Ñ/Ô/ˆàŒe�U”W˜eœgÐ&ˆØŒe�A�A�A�t˜T�MÔ"ØŒg�d˜A˜A˜A˜t�mÔ$ñ%àŒg�d˜D ! ! !�mÔ$ñ%ˆð �2�qˆyÐr^   c                 óœ  — t           j                             d¦  «        }|                     d¬¦  «        dz  \  }}}|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }|                      ¦   «         \  }}}t          ||d¬¦  «        }	d	„ t          |||¦  «        D ¦   «         }
 |	|
¦  «        }|j        d
k    sJ ‚t          ||d¬¦  «         d S )Nrc  ©r2   r;   r“   r–   r2   r0   r%   rß   c                 ó   — g | ]}|‘ŒS rr   rr   ©rv   r¦   s     rI   rw   z3TestNdBSpline.test_3D_separable.<locals>.<listcomp>^  ó   € Ð&Ð&Ð&�AˆaÐ&Ð&Ð&r^   )r;   rb   rc   )	r@   rE   rg  rh  r*  r   Úzipr—   r   )rF   ri  re   rˆ   rO  rõ  Út3Úc3r+   Úbspl3râ  rØ  s               rI   Útest_3D_separablezTestNdBSpline.test_3D_separableV  sç   € ÝŒi×#Ò# EÑ*Ô*ˆØ—+’+ 7�+Ñ+Ô+¨aÑ/‰ˆˆ1ˆaØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆà&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ��r‘”ˆØŒ|˜uÒ$Ð$Ð$Ð$Ý˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3r^   c                 óF  — |                       ¦   «         \  }}}t          ||d¬¦  «        }t          j                             d¦  «        }|                     d¬¦  «        dz  \  }}}d„ t          |||¦  «        D ¦   «         }	t           ||	d¬	¦  «        d|d
z  z  |dz  d
|z  z   z  |dz  d|z  z   dz   z  d¬¦  «         t           ||	d¬	¦  «        d|z  |dz  d
|z  z   z  |dz  d|z  z   dz   z  d¬¦  «         t           ||	d¬	¦  «        d|z  d|d
z  z  d
z   z  |dz  d|z  z   dz   z  d¬¦  «         t           ||	d¬	¦  «        d|z  d|d
z  z  d
z   z  dz  d¬¦  «         t           ||	d¬	¦  «        t          j        t          |	¦  «        ¦  «        d¬¦  «         d S )Nr2   rß   rc  r,  r“   r–   c                 ó   — g | ]}|‘ŒS rr   rr   r.  s     rI   rw   z4TestNdBSpline.test_3D_derivative.<locals>.<listcomp>h  r/  r^   )r%   r   r   rÁ   r0   r%   rb   rc   )r0   r   r   r‘   )r0   r%   r   )r0   r%   r2   )r0   r%   r3   )
r*  r   r@   rE   rg  rh  r0  r   ré  r  )
rF   r1  r2  r+   r3  ri  re   rˆ   rO  râ  s
             rI   Útest_3D_derivativez TestNdBSpline.test_3D_derivativec  s(  € Ø×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆÝŒi×#Ò# EÑ*Ô*ˆØ—+’+ 7�+Ñ+Ô+¨aÑ/‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆå˜˜˜b YÐ/Ñ/Ô/Ø˜!˜Q™$™ ! Q¡$¨¨1©¡*Ñ-°°A±¸¸!¹±¸a±Ñ@Àuð	Nñ 	Nô 	Nð 	Nõ 	˜˜˜b YÐ/Ñ/Ô/Ø˜!™˜q !™t a¨¡c™zÑ*¨a°©d°Q°q±S©j¸1©nÑ=ÀEð	Kñ 	Kô 	Kð 	Kõ 	˜˜˜b YÐ/Ñ/Ô/Ø˜!™˜q  A¡™v¨™zÑ*¨a°©d°Q°q±S©j¸1©nÑ=ÀEð	Kñ 	Kô 	Kð 	Kõ 	˜˜˜b YÐ/Ñ/Ô/Ø˜!™˜q  A¡™v¨™zÑ*¨aÑ0°uð	>ñ 	>ô 	>ð 	>õ 	˜˜˜b YÐ/Ñ/Ô/Ýœ¥ R¡¤Ñ)Ô)°ð	7ñ 	7ô 	7ð 	7ð 	7ð 	7r^   c           
      óz  ‡	— t           j                             d¦  «        }d}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        }t          |||f||¬	¦  «        }t          |||f||¬	¦  «        Š	d
}t           ||¦  «         ‰	|¦  «        d¬¦  «         t           j
        g d¢g d¢g d¢f         }t           ||¦  «        ˆ	fd„|D ¦   «         d¬¦  «         d S )Nrc  r2   r   r’   r“   rµ   r3   r%   rß   )r'   r'   r%   rb   rc   r  r  ©gÍÌÌÌÌÌì?r
  gffffffþ?c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rr   rr   )rv   r
  Úspl_0s     €rI   rw   z0TestNdBSpline.test_3D_random.<locals>.<listcomp>Š  s!   ø€ Ð!9Ð!9Ð!9° % %¨¡)¤)Ð!9Ð!9Ð!9r^   )r@   rE   rg  r�   r‡   rh  r”   r   rÅ  r   rç   )
rF   ri  r+   r¼  r½  Útzr*   r  râ  r;  s
            @rI   Útest_3D_randomzTestNdBSpline.test_3D_randomy  sÆ  ø€ ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg a™i¨™k¨2¬7°1©9°Q©;¸¼À¹	À!¹ÐDˆKÑEÔEˆå˜˜R ˜ a¨1Ð-Ñ-Ô-ˆÝ˜B  B˜<¨¨aÐ0Ñ0Ô0ˆàˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7åŒU�;�;�;Ø"�?�?Ø"�?�?ð#ô $ˆõ 	˜˜˜B™œÐ!9Ð!9Ð!9Ð!9°bÐ!9Ñ!9Ô!9ÀÐFÑFÔFÐFÐFÐFr^   c           
      óþ  — t           j                             d¦  «        }d}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        |                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        d	z  z   }t          |||f||¬
¦  «        }t          |||f|j        |¬
¦  «        }t          |||f|j	        |¬
¦  «        }	t           j
        g d¢g d¢g d¢f         }
t           ||
¦  «         ||
¦  «        d	 |	|
¦  «        z  z   d¬¦  «         d S )Nrc  r2   r   r’   r“   rµ   r3   r%   r&   rß   r  r  r9  rb   rc   )r@   rE   rg  r�   r‡   rh  r”   r   rÕ   rÖ   rç   r   )rF   ri  r+   r¼  r½  r<  r*   r  Úspl_reÚspl_imrâ  s              rI   Útest_3D_random_complexz$TestNdBSpline.test_3D_random_complexŒ  s  € ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�[Š[˜rœw q™y¨™{¨B¬G°A©I°a©K¸¼À¹À1¹ÐEˆ[ÑFÔFØ�[Š[˜rœw q™y¨™{¨B¬G°A©I°a©K¸¼À¹À1¹ÐEˆ[ÑFÔFÀrÑIñJˆõ ˜˜R ˜ a¨1Ð-Ñ-Ô-ˆÝ˜B  B˜<¨¬°1Ð5Ñ5Ô5ˆÝ˜B  B˜<¨¬°1Ð5Ñ5Ô5ˆåŒU�;�;�;Ø"�?�?Ø"�?�?ð#ô $ˆõ 	˜˜˜B™œØ˜˜r™
œ
 R¨¨¨r©
¬
¡]Ñ2¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@r^   Ú
cls_extrapNTÚcall_extrapc                 ój  — |                       ¦   «         \  }}}t          ||d|¬¦  «        }g d¢g d¢g d¢}	}}t          t          j        |||	f¦  «        \  }}}	d„ t          |||	¦  «        D ¦   «         }
|dz  |dz  d|z  z   z  |	dz  d|	z  z   dz   z  } ||
|¬	¦  «        }t          ||d
¬¦  «         d S )Nr2   ©r+   rj   ©éþÿÿÿr.   r’   ©r  rë   rQ  ©r.   g      ø¿ç      @c                 ó   — g | ]}|‘ŒS rr   rr   r.  s     rI   rw   z?TestNdBSpline.test_extrapolate_3D_separable.<locals>.<listcomp>©  r/  r^   r0   r%   ri   rb   rc   ©r*  r   rx  r@   rk   r0  r   )rF   rB  rC  r1  r2  r+   r3  re   rˆ   rO  râ  rõ  rØ  s                rI   Útest_extrapolate_3D_separablez+TestNdBSpline.test_extrapolate_3D_separableŸ  sä   € ð ×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b A°:Ð>Ñ>Ô>ˆð �+�+˜˜˜°°°ˆaˆ1ˆÝ•b”j 1 a¨ )Ñ,Ô,‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà��r {Ð3Ñ3Ô3ˆÝ˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3r^   r§   )FT)TNc                 ót  — |                       ¦   «         \  }}}|\  }}t          ||d|¬¦  «        }g d¢g d¢g d¢}
}	}t          t          j        ||	|
f¦  «        \  }}	}
d„ t          ||	|
¦  «        D ¦   «         }|dz  |	dz  d|	z  z   z  |
dz  d|
z  z   dz   z  } |||¬	¦  «        }t          ||d
¬¦  «         d S )Nr2   rE  rF  rH  rI  c                 ó   — g | ]}|‘ŒS rr   rr   r.  s     rI   rw   zATestNdBSpline.test_extrapolate_3D_separable_2.<locals>.<listcomp>º  r/  r^   r0   r%   ri   rb   rc   rL  )rF   r§   r1  r2  r+   rB  rC  r3  re   rˆ   rO  râ  rõ  rØ  s                 rI   Útest_extrapolate_3D_separable_2z-TestNdBSpline.test_extrapolate_3D_separable_2¯  sî   € ð ×%Ò%Ñ'Ô'‰	ˆˆB�Ø"(Ñˆ
�KÝ˜"˜b A°:Ð>Ñ>Ô>ˆð �+�+˜˜˜°°°ˆaˆ1ˆÝ•b”j 1 a¨ )Ñ,Ô,‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà��r {Ð3Ñ3Ô3ˆÝ˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3r^   c                 óø  — |                       ¦   «         \  }}}t          ||d¬¦  «        }g d¢g d¢g d¢}}}t          t          j        |||f¦  «        \  }}}d„ t          |||¦  «        D ¦   «         }|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }	 ||d	¬
¦  «        }
t          j        |
d         ¦  «        sJ ‚t          j        |
d         ¦  «        sJ ‚t          |
dd…         |	dd…         d¬¦  «         d S )Nr2   rß   )rG  r%   r’   )r  r·   rQ  )r.   rí   rJ  c                 ó   — g | ]}|‘ŒS rr   rr   r.  s     rI   rw   zETestNdBSpline.test_extrapolate_false_3D_separable.<locals>.<listcomp>È  r/  r^   r0   r%   Fri   r   r.   rb   rc   )r*  r   rx  r@   rk   r0  r±   r   )rF   r1  r2  r+   r3  re   rˆ   rO  râ  rõ  rØ  s              rI   Ú#test_extrapolate_false_3D_separablez1TestNdBSpline.test_extrapolate_false_3D_separableÀ  s$  € à×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆð �*�*˜n˜n˜n¨n¨n¨nˆaˆ1ˆÝ•b”j 1 a¨ )Ñ,Ô,‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà��r uÐ-Ñ-Ô-ˆÝŒx˜˜qœ	Ñ"Ô"Ð"Ð"Ð"ÝŒx˜˜rœ
Ñ#Ô#Ð#Ð#Ð#Ý˜˜q ˜tœ f¨Q¨r¨T¤l¸Ð?Ñ?Ô?Ð?Ð?Ð?r^   c           	      óò  — |                       ¦   «         \  }}}t          ||d¬¦  «        }t          j        ddt          j        dddt          j        g¦  «        }t          j        dddt          j        dd	d	g¦  «        }t          j        d
dddt          j        ddg¦  «        }d„ t          |||¦  «        D ¦   «         }|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }	t          j        |¦  «        t          j        |¦  «        z  t          j        |¦  «        z  }
t          j        |	|
<    ||¦  «        }t          j        ||
         ¦  «                             ¦   «         sJ ‚t          ||	d¬¦  «         d S )Nr2   rß   rG  r%   r0   r’   r  rx  rQ  r.   rJ  c                 ó   — g | ]}|‘ŒS rr   rr   r.  s     rI   rw   z/TestNdBSpline.test_x_nan_3D.<locals>.<listcomp>Ù  r/  r^   rb   rc   )	r*  r   r@   rk   rB   r0  r±   r°   r   )rF   r1  r2  r+   r3  re   rˆ   rO  râ  rõ  r­   rØ  s               rI   Útest_x_nan_3DzTestNdBSpline.test_x_nan_3DÐ  s]  € à×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆõ ŒJ˜˜A�rœv q¨!¨Qµ´Ð7Ñ8Ô8ˆÝŒJ˜˜C ¥B¤F¨A¨s°CÐ8Ñ9Ô9ˆÝŒJ˜˜C  A¥r¤v¨s°CÐ8Ñ9Ô9ˆØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆÝŒx˜‰{Œ{�RœX a™[œ[Ñ(­2¬8°A©;¬;Ñ6ˆÝ”vˆˆt‰à��r‘”ˆÝŒx˜˜tœÑ%Ô%×)Ò)Ñ+Ô+Ð+Ð+Ð+Ý˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3r^   c                 ó¨  ‡	— t           j                             d¦  «        }d\  }}t          j        |                     ddd¬¦  «        ¦  «        }t           j        |d         f|z  ||d         f|z  f         }t          j        |                     ddd¬¦  «        ¦  «        }t           j        |d         f|z  ||d         f|z  f         }|d d d…         j        j        rJ ‚|d d d…         j        j        rJ ‚|                     |j        dz  |z
  d	z
  |j        dz  |z
  d	z
  f¬
¦  «        }|j	        }|j        j        rJ ‚t           j
        g d¢g d¢f         }t          |d d d…         |d d d…         f|||f¬¦  «        }t          |d d d…         |d d d…         f|||f¬¦  «        Š	t           ||¦  «        ˆ	fd„|D ¦   «         d¬¦  «         d S )Nrc  ©r2   r2   r   r3   é   rf  r.   r0   r%   r“   r  r  rß   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rr   rr   r  s     €rI   rw   z7TestNdBSpline.test_non_c_contiguous.<locals>.<listcomp>ù  r  r^   rb   rc   )r@   rE   rg  r‡   rh  r�   ÚflagsÚc_contiguousr”   rz  rç   r   rÅ  r   r  s
            @rI   Útest_non_c_contiguousz#TestNdBSpline.test_non_c_contiguousâ  s  ø€ åŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆBÝŒW�S—[’[ Q¨Q°R�[Ñ8Ô8Ñ9Ô9ˆÝŒU�B�q”E�8˜B‘;  R¨¤V I¨b¡LÐ0Ô1ˆÝŒW�S—[’[ Q¨Q°R�[Ñ8Ô8Ñ9Ô9ˆÝŒU�B�q”E�8˜B‘;  R¨¤V I¨b¡LÐ0Ô1ˆà�c�c˜�c”7”=Ô-Ð-Ð-Ð-Ø�c�c˜�c”7”=Ô-Ð-Ð-Ð-à�KŠK˜bœg q™j¨2™o°Ñ1°2´7¸A±:À±?ÀQÑ3FÐGˆKÑHÔHˆØŒCˆØ”7Ô'Ð'Ð'Ð'åŒU�;�;�;Ø"�?�?ð#ô $ˆõ ˜2˜c˜c ˜cœ7 B s s¨ s¤GÐ,¨a°B¸°8Ð<Ñ<Ô<ˆÝ˜b   1 œg r¨#¨#¨A¨#¤wÐ/°°r¸2°hÐ?Ñ?Ô?ˆå˜˜˜b™	œ	Ø2Ð2Ð2Ð2¨rÐ2Ñ2Ô2¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@r^   c                 ó  — |                       ¦   «         \  }}}t          ||d¬¦  «        }t          d¦  «        D ]}d||         j        _        Œd|j        _        t          ||d¬¦  «        } |d¦  «         |d¦  «        k    sJ ‚d S )Nr2   rß   Fr`   )r*  r   rÃ   r[  Ú	writeable)rF   r1  r2  r+   r3  rñ   Úbspl3_s          rI   Útest_readonlyzTestNdBSpline.test_readonlyû  sœ   € Ø×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆå�q‘”ð 	*ð 	*ˆAØ$)ˆBˆqŒEŒKÔ!Ð!Ø"ˆŒÔå˜2˜r QÐ'Ñ'Ô'ˆàˆu�YÑÔ 6 6¨)Ñ#4Ô#4Ò4Ð4Ð4Ð4Ð4Ð4r^   c                 ó¸  — |                       ¦   «         \  }}}t          j        g d¢g d¢g¦  «        }t          |||¦  «                             |||¦  «        }t          j        |||||g¦  «        }|j        d         |j        d         k    sJ ‚t          |                     ¦   «         |                     ¦   «         d¬¦  «         t          t          ¦  «        5  t          j        g d¢||gdz  ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          j        d	d
gg||gdz  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr`   )r3   r–   r‘   r   g¼‰Ø—²Òœ<rc   r2   zData and knots*rÂ  r%   r0   )
r*  r@   rk   r   r  r—   r   Útodenser<   r>   )rF   r1  r2  r+   râ  ÚdmÚdm1s          rI   Útest_design_matrixz TestNdBSpline.test_design_matrix	  sÑ  € Ø×%Ò%Ñ'Ô'‰	ˆˆB�åŒZ˜˜˜ I I IÐ.Ñ/Ô/ˆÝ�r˜2˜qÑ!Ô!×/Ò/°°B¸Ñ:Ô:ˆÝÔ% b¨"¨q°!°Q¨iÑ8Ô8ˆØŒx˜Œ{˜bœh qœkÒ)Ð)Ð)Ð)Ý˜Ÿ
š
™œ c§k¢k¡m¤m¸%Ð@Ñ@Ô@Ð@å�:Ñ&Ô&ð 	:ð 	:ÝÔ# I I I¨r°A°3°q±5Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ �:Ð->Ð?Ñ?Ô?ð 	9ð 	9ÝÔ# a¨ V H¨b°1°#°a±%Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9s$   ÃDÄDÄ
DÄ$EÅEÅE)rü   rý   rþ   rã  ré  rë  r÷  r   r  r  r  r  r&  r*  r4  r7  r=  rA  rS   rL  rM  rM  rP  rS  rV  r]  ra  rf  rr   r^   rI   rÞ  rÞ  w  sÝ  € € € € € ðBð Bð Bð"ð ð ð&ð &ð &ð9ð 9ð 9ð6&'ð &'ð &'ðP$ð $ð $ð&,ð ,ð ,ð+ð +ð +ð2@ð @ð @ð Gð Gð Gð(ð ð ð&4ð 4ð 4ð7ð 7ð 7ð,Gð Gð Gð&@ð @ð @ð& „[×Ò˜\¨D°$¨<Ñ8Ô8Ø„[×Ò˜]¨T°4¨LÑ9Ô9ð4ð 4ñ :Ô9ñ 9Ô8ð4ð „[×Ò˜X¨°|Ð'DÑEÔEð4ð 4ñ FÔEð4ð @ð @ð @ð 4ð 4ð 4ð$@ð @ð @ð2
5ð 
5ð 
5ð9ð 9ð 9ð 9ð 9r^   rÞ  c                   ó0  — e Zd Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Z	d„ Z
d„ Zej                             d	ej        ej        g¦  «        d
„ ¦   «         Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ ZdS )Ú
TestMakeNDc                 ó°  — t          j        d¦  «        }t          j        d¦  «        dz   }|d d …d f         dz  |dz  d|z  z   d d d …f         z  }d„ t          j        ||¦  «        D ¦   «         }t	          ||f|d¬¦  «        }t           ||¦  «        |                     ¦   «         d¬	¦  «         t          ||dz  d¬¦  «        }t          ||dz  d|z  z   d¬¦  «        }|j        d d …d f         |j        d d d …f         z  }t          ||j        d
d¬¦  «         ddl	m
}	  |	||f|d¬¦  «        }
t           |
|¦  «         ||¦  «        d¬	¦  «         d S )Nr‘   r·   r2   r0   c                 ó   — g | ]	\  }}||f‘Œ
S rr   rr   r  s      rI   rw   z7TestMakeND.test_2D_separable_simple.<locals>.<listcomp>	  r  r^   r%   rß   rL   rc   r  r   rM   )r   Úlinear©Úmethodrb   )r@   rD   rÓ  rÔ  r   r   rô  r
   r*   Úscipy.interpolater   )rF   re   rˆ   r#  râ  rn   r!  r"  r×   ÚRGIr$  s              rI   Útest_2D_separable_simplez#TestMakeND.test_2D_separable_simple	  s†  € ÝŒI�a‰LŒLˆÝŒI�a‰LŒL˜3ÑˆØ�1�1�1�d�7”˜Q‘ ! Q¡$¨¨1©¡*¨d°A°A°A¨gÔ!6Ñ6ˆØ9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆå˜A˜q˜6 6¨QÐ/Ñ/Ô/ˆÝ˜˜˜R™œ &§,¢,¡.¤.°uÐ=Ñ=Ô=Ð=õ # 1 a¨¡d¨aÐ0Ñ0Ô0ˆÝ" 1 a¨¡d¨Q¨q©S¡j°AÐ6Ñ6Ô6ˆØŒW�Q�Q�Q˜�WÔ ¤¨¨a¨a¨a¨Ô 0Ñ0ˆÝ˜˜DœF¨°QÐ7Ñ7Ô7Ð7ð 	EÐDÐDÐDÐDÐDØˆc�1�a�&˜&¨Ð2Ñ2Ô2ˆÝ˜˜˜B™œ   b¡¤°Ð6Ñ6Ô6Ð6Ð6Ð6r^   c                 ó  — t          j        d¦  «        }t          j        d¦  «        }d„ t          j        ||¦  «        D ¦   «         }|d d …d f         dz  |dz  d|z  z   d d d …f         z  }t          j        ||||f¦  «        }t          ||f|dt          j        ¬¦  «        } ||¦  «        }t          j        ||||f¦  «        }|j        dk    sJ ‚t          | 
                    ddd¦  «        |d¬	¦  «         | 
                    d
¦  «        }	t          ||f|	dt          j        ¬¦  «        } ||¦  «        }|j        dk    sJ ‚t          | 
                    dddd¦  «        | 
                    d
¦  «        d¬	¦  «         d S )Nr‘   c                 ó   — g | ]	\  }}||f‘Œ
S rr   rr   r  s      rI   rw   z>TestMakeND.test_2D_separable_trailing_dims.<locals>.<listcomp>0	  r  r^   r2   r0   ©r+   Úsolver)é$   r3   r3   rb   rc   rú  )ru  r0   r0   )r@   rD   rÓ  rÔ  rè   r   ÚsslÚspsolver—   r   rl   )
rF   re   rˆ   râ  r#  Úvalues4rn   rØ  rõ  Úvalues22s
             rI   Útest_2D_separable_trailing_dimsz*TestMakeND.test_2D_separable_trailing_dims,	  s¦  € åŒI�a‰LŒLˆÝŒI�a‰LŒLˆØ9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆð �1�1�1�d�7”˜Q‘ ! Q¡$¨¨1©¡*¨d°A°A°A¨gÔ!6Ñ6ˆÝ”)˜V V¨V°VÐ<Ñ=Ô=ˆÝ˜A˜q˜6 7¨a½¼ÐDÑDÔDˆà��b‘”ˆÝ”˜F F¨F°FÐ;Ñ<Ô<ˆØŒ|˜wÒ&Ð&Ð&Ð&Ý˜Ÿš q¨!¨QÑ/Ô/Ø Uð	,ñ 	,ô 	,ð 	,ð —?’? <Ñ0Ô0ˆÝ˜A˜q˜6 8¨q½¼ÐEÑEÔEˆà��b‘”ˆØŒ|˜zÒ)Ð)Ð)Ð)Ý˜Ÿš q¨!¨Q°Ñ2Ô2ØŸš |Ñ4Ô4¸5ð	Bñ 	Bô 	Bð 	Bð 	Bð 	Br^   r+   )rX  r  )r2   r%   )r%   r2   rÑ  c                 ó|  — t          j        d¦  «        }t          j        d¦  «        dz   }d„ t          j        ||¦  «        D ¦   «         }|dz  d d …d f         |dz  d|z  z   d d d …f         z  }t	          ||f||t
          j        ¬¦  «        }t           ||¦  «        |                     ¦   «         d¬	¦  «         d S )
Nr‘   r’   rí   c                 ó   — g | ]	\  }}||f‘Œ
S rr   rr   r  s      rI   rw   z,TestMakeND.test_2D_mixed.<locals>.<listcomp>K	  r  r^   r2   r0   rs  rL   rc   )	r@   rD   rÓ  rÔ  r   rv  rw  r   rô  )rF   r+   re   rˆ   râ  r#  rn   s          rI   r  zTestMakeND.test_2D_mixedF	  s½   € õ ŒI�a‰LŒLˆÝŒI�a‰LŒL˜3ÑˆØ9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆà�Q‘$˜˜˜˜4˜” A q¡D¨1¨Q©3¡J°°a°a°a°Ô#8Ñ8ˆÝ˜A˜q˜6 6¨Qµs´{ÐCÑCÔCˆÝ˜˜˜R™œ &§,¢,¡.¤.°uÐ=Ñ=Ô=Ð=Ð=Ð=r^   c           	      ó°   — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g d¢g d¢g d¢g d¢g d¢g d¢g¦  «        }|||fS )N)r·   r5   r6   r7   rn  ro  )r%   r0   r%   r0   r%   r%   )r%   r0   r2   r0   r%   r%   )r%   r0   r0   r0   r%   r%   )r@   r  rN  s       rI   Ú_get_sample_2d_datazTestMakeND._get_sample_2d_dataQ	  s‡   € åŒHÐ.Ð.Ð.Ñ/Ô/ˆÝŒHÐ.Ð.Ð.Ñ/Ô/ˆÝŒHà"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"ðñ	
ô 	
ˆð �!�Qˆwˆr^   c                 ó  — |                       ¦   «         \  }}}t          ||f|d¬¦  «        }t          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr%   rß   rk  rl  ©r%   gffffff@g333333@r·   çffffff
@ç333333ó?r2   ©r%   r�  r‚  r7   r8  r'   r2   rb   rc   ©r~  r   r   r@   r  rz  r   ©rF   re   rˆ   rO  rn   r$  râ  s          rI   Útest_2D_vs_RGI_linearz TestMakeND.test_2D_vs_RGI_lineara	  s¤   € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨Ð*Ñ*Ô*ˆÝ% q¨! f¨a¸ÐAÑAÔAˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6r^   c                 ó"  — |                       ¦   «         \  }}}t          ||f|dt          j        ¬¦  «        }t	          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr2   rs  Úcubic_legacyrl  r€  rƒ  rb   rc   ©	r~  r   rv  rw  r   r@   r  rz  r   r…  s          rI   Útest_2D_vs_RGI_cubiczTestMakeND.test_2D_vs_RGI_cubick	  s¨   € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨µ#´+Ð>Ñ>Ô>ˆÝ% q¨! f¨a¸ÐGÑGÔGˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6r^   rt  c                 ó  — |                       ¦   «         \  }}}t          ||f|d|d¬¦  «        }t          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬	¦  «         d S )
Nr2   g�íµ ÷Æ°>)r+   rt  rO   rˆ  rl  r€  rƒ  rb   rc   r„  )rF   rt  re   rˆ   rO  rn   r$  râ  s           rI   Útest_2D_vs_RGI_cubic_iterativez)TestMakeND.test_2D_vs_RGI_cubic_iterativeu	  sª   € ð ×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨°&¸tÐDÑDÔDˆÝ% q¨! f¨a¸ÐGÑGÔGˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6r^   c                 ó"  — |                       ¦   «         \  }}}t          ||f|dt          j        ¬¦  «        }t	          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr–   rs  Úquintic_legacyrl  r€  rƒ  rb   rc   r‰  r…  s          rI   Útest_2D_vs_RGI_quinticz!TestMakeND.test_2D_vs_RGI_quintic„	  s©   € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨µ#´+Ð>Ñ>Ô>ˆÝ% q¨! f¨aÐ8HÐIÑIÔIˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6r^   zk, meth))r%   rk  )r2   rˆ  )r–   rŽ  c                 óV  — t           j                             d¦  «        }t          j        |                     d¬¦  «        ¦  «        }t          j        |                     d¬¦  «        ¦  «        }t          j        |                     d¬¦  «        ¦  «        }|                     d¬¦  «        }t          |||f||t          j        ¬¦  «        }t          |||f||¬¦  «        }	t           j                             d	d
d¬¦  «        }
t           ||
¦  «         |	|
¦  «        d¬¦  «         d S )Ni@â r‘   r“   r’   rµ   r  rs  rl  gffffffæ?r  r:   rf  rb   rc   )
r@   rE   rg  Úcumsumrh  r   rv  rw  r   r   )rF   r+   ÚmethÚrndmre   rˆ   rO  r#  rn   r$  râ  s              rI   Útest_3D_random_vs_RGIz TestMakeND.test_3D_random_vs_RGIŽ	  s  € õ Œy×$Ò$ VÑ,Ô,ˆÝŒI�d—l’l¨�lÑ*Ô*Ñ+Ô+ˆÝŒI�d—l’l¨�lÑ*Ô*Ñ+Ô+ˆÝŒI�d—l’l¨�lÑ*Ô*Ñ+Ô+ˆØ—’ 9�Ñ-Ô-ˆå˜A˜q !˜9 f°½#¼+ÐFÑFÔFˆÝ% q¨!¨Q i°ÀÐEÑEÔEˆåŒY×Ò 3¨S°wÐÑ?Ô?ˆÝ˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6r^   c                 óh  — |                       ¦   «         \  }}}ddi}t          t          d¬¦  «        5  t          ||f|fddi|¤Ž d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          ||ft	          j        ||f¦  «        fddi|¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )NÚmaxiterr%   rt  rÂ  r+   r2   )r~  r<   r>   r   r@   rè   )rF   re   rˆ   rO  Úsolver_argss        rI   Útest_solver_err_not_convergedz(TestMakeND.test_solver_err_not_convergedž	  sg  € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaØ  !�nˆÝ�:¨XÐ6Ñ6Ô6ð 	7ð 	7Ý˜˜A˜ Ð6Ð6 QÐ6¨+Ð6Ð6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ �:¨XÐ6Ñ6Ô6ð 	Gð 	GÝ˜˜A˜¥¤	¨1¨a¨&Ñ 1Ô 1ÐFÐF°QÐF¸+ÐFÐFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gs#   ³AÁAÁAÁ3'B'Â'B+Â.B+N)rü   rý   rþ   rp  rz  rS   rL  rM  r  r~  r†  rŠ  rv  ÚgmresÚgcrotmkrŒ  r�  r”  r˜  rr   r^   rI   rh  rh  	  s/  € € € € € ð7ð 7ð 7ð(Bð Bð Bð4 „[×Ò˜SÐ"JÐ"JÐ"JÑKÔKð>ð >ñ LÔKð>ðð ð ð 7ð 7ð 7ð7ð 7ð 7ð „[×Ò˜X¨¬	°3´;Ð'?Ñ@Ô@ð7ð 7ñ AÔ@ð7ð7ð 7ð 7ð „[×ÒØÐNÐNÐNñô ð7ð 7ñô ð7ðGð Gð Gð Gð Gr^   rh  c                   óJ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )Ú
TestFpchecc                 ó¨  — d}t          j        d¦  «                             dd¦  «        }t          j        d¦  «        }t          j        t
          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr%   r�  r0   r‘   z1D sequencerÂ  )r@   rD   rl   rS   r   r>   Ú_bÚfpcheck©rF   r+   r)   re   s       rI   Útest_1D_x_tzTestFpchec.test_1D_x_t«	  s>  € ØˆÝŒI�b‰MŒM×!Ò! ! QÑ'Ô'ˆÝŒI�b‰MŒMˆåŒ]�:¨]Ð;Ñ;Ô;ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ Œ]�:¨]Ð;Ñ;Ô;ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   ÁA=Á=BÂBÂ#CÃCÃCc                 ó†  — d}d|dz   z  dz
  }|dz   }t          j        |¦  «        }t          j        |¦  «        }t          j        |||¦  «        dk    sJ ‚t	          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   d|dz   z  dz   }||z
  dz
  }t          j        |¦  «        }t          j        |¦  «        }t          j        |||¦  «        dk    sJ ‚t	          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr2   r0   r%   r;   rW   z	Need k+1*rÂ  )	r@   rD   ÚdfitpackÚfpchecrS   r   r>   rž  rŸ  )rF   r+   rG   r`  r)   re   s         rI   Útest_condition_1zTestFpchec.test_condition_1¶	  s¾  € àˆØ��A‘‰Y˜‰]ˆØ�‰FˆÝŒI�a‰LŒLˆÝŒI�a‰LŒLˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:¨[Ð9Ñ9Ô9ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆq�‰s‰G�a‰KˆØ�‰E�A‰IˆÝŒI�a‰LŒLˆÝŒI�a‰LŒLˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:¨[Ð9Ñ9Ô9ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   Á2BÂBÂBÄD6Ä6D:Ä=D:c                 óº  — d}dg|dz   z  dgz   dg|dz   z  z   }g d¢}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚|                     ¦   «         }|d         |d<   t          j        |||¦  «        dk    sJ ‚t          j        t          d	¬
¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|d         |d<   t          j        |||¦  «        dk    sJ ‚t          j        t          d¬
¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr2   r   r%   r0   r–   )r%   r0   r2   r3   rm  r.   r„   zLast k knots*rÂ  zFirst k knots*©r£  r¤  rž  rŸ  r·  rS   r   r>   )rF   r+   r)   re   Útts        rI   Útest_condition_2zTestFpchec.test_condition_2Ë	  sñ  € ð ˆØˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆØÐÐˆåŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*à�VŠV‰XŒXˆØ�A”ˆˆ2‰ÝŒ˜q " aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:¨_Ð=Ñ=Ô=ð 	!ð 	!ÝŒJ�q˜"˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð �VŠV‰XŒXˆØ�2”ˆˆ1‰ÝŒ˜q " aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:Ð-=Ð>Ñ>Ô>ð 	!ð 	!ÝŒJ�q˜"˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s$   Â(CÃCÃCÄ,EÅEÅEc                 ó¦  — d}dg|dz   z  ddgz   dg|dz   z  z   }g d¢}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚dg|dz   z  ddgz   dg|dz   z  z   }t          j        |||¦  «        dk    sJ ‚t	          j        t          d¬	¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr2   r   r%   r0   r–   ©r%   r0   r2   rx  r3   rm  é   zInternal knots*rÂ  )r£  r¤  rž  rŸ  rS   r   r>   r   s       rI   Útest_condition_3zTestFpchec.test_condition_3á	  sF  € àˆØˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆØ"Ð"Ð"ˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*àˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð->Ð?Ñ?Ô?ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   Â"CÃC
ÃC
c                 ód  — d}dg|dz   z  dg|dz   z  z   }g d¢}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚|                     ¦   «         }|d         |d<   t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚|                     ¦   «         }|d         dz
  |d<   t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|d	         dz   |d	<   t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr2   r   r%   r–   r«  r  zOut of bounds*rÂ  r.   r§  )rF   r+   r)   re   r\   s        rI   Útest_condition_4zTestFpchec.test_condition_4î	  sG  € ð ˆØˆC��1‘‰I˜˜˜Q˜q™S™	Ñ!ˆØ"Ð"Ð"ˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*à�VŠV‰XŒXˆØ�!”ˆˆ1‰ÝŒ˜r 1 aÑ(Ô(¨AÒ-Ð-Ð-Ð-ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*à�VŠV‰XŒXˆØ�!”�q‘ˆˆ1‰ÝŒ˜r 1 aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:Ð-=Ð>Ñ>Ô>ð 	!ð 	!ÝŒJ�r˜1˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð �VŠV‰XŒXˆØ�2”˜‘ˆˆ2‰ÝŒ˜r 1 aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:Ð-=Ð>Ñ>Ô>ð 	!ð 	!ÝŒJ�r˜1˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s$   Ã:DÄD!Ä$D!ÆF%Æ%F)Æ,F)c                 ó¸  — d}g d¢}g d¢}t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr%   )r   r   r%   r0   r0   )r  r  r  ra   úSchoenberg-Whitney*rÂ  )r·   r·   r·   ©r£  r¤  rS   r   r>   rž  rŸ  r   s       rI   Útest_condition_5_x1xmz TestFpchec.test_condition_5_x1xm
  so  € àˆØˆOˆOˆØˆOˆOˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆOˆOˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   ÁA%Á%A)Á,A)Â+CÃCÃCc                 ó‚   — d}g d¢}ddg}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚d S )Nr%   )r   r   r%   r%   r·   g333333ã?r   )r£  r¤  rž  rŸ  r   s       rI   Útest_condition_5_k1zTestFpchec.test_condition_5_k1
  sX   € àˆØˆLˆLˆØ�#ˆJˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*Ð*Ð*r^   c                 ó  — d}dg|dz   z  dgz   dg|dz   z  z   }dgdz  }t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   dg|dz   z  dgz   dg|dz   z  z   }dgdz  }t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr2   r   r%   r0   r–   ra   r±  rÂ  r²  r   s       rI   Útest_condition_5_1zTestFpchec.test_condition_5_1#
  s²  € àˆØˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆØˆC�‰EˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆØˆC�‰EˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   ÁA:Á:A>ÂA>ÃC=Ã=DÄDc                 ó–  — d}dg|dz   z  ddgz   dg|dz   z  z   }dgdz  dgz   }t          j        |||¦  «        dk    sJ ‚t          j        t          d	¬
¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   dgdz  ddgz   }t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚d S )Nr2   r   r%   r0   r–   r  r3   ra   r±  rÂ  r²  r   s       rI   Útest_condition_5_2zTestFpchec.test_condition_5_22
  s2  € àˆØˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆØˆE�!‰G�q�c‰MˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆE�!‰G�q˜!�fÑˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*Ð*Ð*s   ÁA?Á?BÂBc                 óæ   — d}g d¢}g d¢}t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr%   )	r   r   r0   r2   r3   r–   r‘   r’   r’   )r%   r%   r%   çÍÌÌÌÌÌ@r»  r»  rQ  ra   r±  rÂ  r²  r   s       rI   Útest_condition_5_3zTestFpchec.test_condition_5_3A
  sÊ   € àˆØ'Ð'Ð'ˆØ)Ð)Ð)ˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ÁA&Á&A*Á-A*N)rü   rý   rþ   r¡  r¥  r©  r­  r¯  r³  rµ  r·  r¹  r¼  rr   r^   rI   rœ  rœ  ¨	  sª   € € € € € ð	 ð 	 ð 	 ð ð  ð  ð*!ð !ð !ð, ð  ð  ð!ð !ð !ð> ð  ð  ð+ð +ð +ð ð  ð  ð+ð +ð +ð ð  ð  ð  ð  r^   rœ  rÄ  )r¯  r2   rÜ  )Pr•  rÈ  rÓ  Únumpyr@   Únumpy.testingr   r   r   rS   r   r<   rn  r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úscipy.linalgri  rs  Úscipy.sparse.linalgÚsparserv  Úscipy.interpolate._bsplinesr   r   r   r   r   Úscipy.interpolate._fitpack_implÚinterpolateÚ_fitpack_implrð   Úscipy._lib._utilr   Úscipy.interpolate._ndbspliner   r    r£  r!   rž  r#   rO  r…  rˆ  rt   ry   rÒ   rd   rÏ   rQ   r„  rº  rù  ra  r|  r~  rœ  rž  r¿  rÿ   r.  rÅ  rÞ  rh  rœ  rr   r^   rI   ú<module>rÈ     s  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ø @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø &Ð &Ð &Ð &Ð &Ð &ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -ðK	"ð K	"ð K	"ð K	"ð K	"ñ K	"ô K	"ð K	"ð\v$ð v$ð v$ð v$ð v$ñ v$ô v$ð v$ðr6ð 6ð 6ð.ð ð ð&
Gð 
Gð 
Gð>ð >ð >ðð ð ðHð Hð Hðð ð ð ð$+ð +ð +ð +ðð ð ð$\+ð \+ð \+ð \+ð \+ñ \+ô \+ð \+ð~t?ð t?ð t?ð t?ð t?ñ t?ô t?ð t?ðnð ð ð8ð ð ð ð8W'ð W'ð W'ð W'ð W'ñ W'ô W'ð W'ðt*ð *ð *ð
C3ð C3ð C3ð C3ð C3ñ C3ô C3ð C3ðP	8ð 	8ð 	8ðð ð ð7ð 7ð 7ð:ð :ð :ð :ð :ñ :ô :ð :ðz]9ð ]9ð ]9ð ]9ð ]9ñ ]9ô ]9ð ]9ð@NGð NGð NGð NGð NGñ NGô NGð NGðba ð a ð a ð a ð a ñ a ô a ð a ð a ð a r^   