§
    µ³Ùg-õ ã                   óº  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	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  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-Z-m.Z.m/Z/ d dl0m1c m2Z3 d dl4m5Z5 d d	l6m7Z7 d d
l8m9Z9 d dlm:Z; d dlm<Z= d dlm>Z>  G d„ d¦  «        Z? G d„ d¦  «        Z@d„ ZAd„ ZBd„ ZCd„ ZDd„ ZEd„ ZFdId„ZGdJd„ZHd„ ZI G d„ d¦  «        ZJ G d„ d ¦  «        ZKd!„ ZLdKd"„ZMejN         O                    d#d$d%g¦  «        ZP G d&„ d'¦  «        ZQ G d(„ d)¦  «        ZRdLd+„ZSd,„ ZTd-„ ZU G d.„ d/¦  «        ZVd0„ ZW G d1„ d2¦  «        ZXd3„ ZYd4„ ZZd5„ Z[ G d6„ d7¦  «        Z\ G d8„ d9¦  «        Z] G d:„ d;¦  «        Z^ G d<„ d=¦  «        Z_d>„ Z`d?„ Za G d@„ dA¦  «        ZbdB„ Zc G dC„ dD¦  «        Zd G dE„ dF¦  «        Ze G dG„ dH¦  «        ZfdS )Mé    N)Úsuppress_warnings)Úxp_assert_equalÚxp_assert_close)Úraises)ÚBSplineÚBPolyÚPPolyÚmake_interp_splineÚmake_lsq_splineÚ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)Úgenerate_knotsÚmake_splrepÚmake_splprep)Ú	AxisError)Ú_run_concurrent_barrier)Úmake_ndbspl)Ú	_dfitpack)Ú	_bsplines)Ú_dierckxc                   óÎ  — 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d„ Ze j!         "                    d e#dd ¦  «        ¦  «        d!„ ¦   «         Z$d"„ Z%e j!        j&        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-d0„ Z.d1„ Z/e j!        j&        d2„ ¦   «         Z0d3„ Z1d4S )5Ú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
          j                             |¦  «        }t          |||¦  «        }t          ||j        ¦  «         t          ||j        ¦  «         ||j        k    sJ ‚d S )Né   ù              ð?ç      ð?r   ©ÚtÚcÚkÚignore)Úinvalidéÿÿÿÿ©r   r)   é   ©r   r)   r4   é   é   r4   )ç        r8   r+   ç       @ç      @ç      @)r+   r+   r+   Úcubicç      @)r8   r   r)   r)   r4   r6   )r+   r)   r)   ©é   r6   ©Údtype)Úassert_raisesÚ	TypeErrorÚ
ValueErrorr   ÚdictÚnpÚerrstateÚnanÚinfÚarangeÚfloat64Úrandomr   r-   r.   r/   )ÚselfÚnr/   r-   r.   Úbs         ú[/granary/edev/quantum/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¥2¤:Ð.Ñ.Ô.ˆÝŒI×Ò˜QÑÔˆÝ�A�q˜!ÑÔˆå˜˜1œ3ÑÔÐÝ˜˜1œ3ÑÔÐØ�A”CŠxˆxˆxˆxˆxˆxs   Á6B
Â
BÂBc                 ó@  — t          ¦   «         }|j        }t          |j        |d         dd¬¦  «         t          |j        |d         dd¬¦  «         |j        |d         k    sJ ‚t          j        t          ¦  «        5  d|_        d d d ¦  «         d S # 1 swxY w Y   d S )Nr   çVçž¯Ò<©ÚatolÚrtolr)   r4   Úfoo)	Ú_make_random_splineÚtckr   r-   r.   r/   Úpytestr   ÚAttributeError)rM   rO   rY   s      rP   Útest_tckzTestBSpline.test_tckL   sÞ   € ÝÑ!Ô!ˆØŒeˆå˜œ˜S œV¨%°eÐ<Ñ<Ô<Ð<Ý˜œ˜S œV¨%°eÐ<Ñ<Ô<Ð<ØŒs�c˜!”fŠ}ˆ}ˆ}ˆ}õ Œ]�>Ñ*Ô*ð 	ð 	ØˆAŒEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á>BÂBÂBc                 óF  — t          j        ddd¦  «        }t          ddgdgd¬¦  «        }t           ||¦  «        t          j        |¦  «        dz  ¦  «         t          g d¢ddgd¬¦  «        }t           ||¦  «        t          j        |d	k     dd
¦  «        ¦  «         d S )Nr   r)   é
   r:   r,   )r   çffffffÖ?r)   r6   r7   r_   r;   )rF   Úlinspacer   r   Ú	ones_likeÚwhere©rM   ÚxxrO   s      rP   Útest_degree_0zTestBSpline.test_degree_0X   s¢   € ÝŒ[˜˜A˜rÑ"Ô"ˆå�q˜!�f  ¨Ð*Ñ*Ô*ˆÝ˜˜˜"™œ�rœ|¨BÑ/Ô/°#Ñ5Ñ6Ô6Ð6å�l�l�l q¨! f°Ð2Ñ2Ô2ˆÝ˜˜˜"™œ�rœx¨¨Tª	°3¸Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=ó    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 )
Nr5   ©r)   r4   r6   r)   r6   é2   r   r4   ç›+¡†›„=©rU   )r   rF   r`   r   ÚB_012r   )rM   r-   r.   r/   rO   Úxs         rP   Útest_degree_1zTestBSpline.test_degree_1a   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¸Ð>Ñ>Ô>Ð>Ð>Ð>rf   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 )Nr6   r   r)   ©r+   r9   r:   r;   r2   g      ð¿r9   r^   T©Úextrapolaterj   rk   )rF   Úasarrayr   Úreshaper   r`   r   r   )rM   r/   r-   r.   ÚbpÚbsplrd   s          rP   Útest_bernsteinzTestBSpline.test_bernsteinl   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ð	.ñ 	.ô 	.ð 	.ð 	.ð 	.rf   c                 ó(  ‡‡‡— t          ¦   «         }|j        \  ŠŠŠt          j        ‰‰         ‰‰ dz
           d¦  «        } ||¦  «        }ˆˆˆfd„|D ¦   «         }t	          ||d¬¦  «         ˆˆˆfd„|D ¦   «         }t	          ||d¬¦  «         d S )Nr)   ri   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS © ©Ú_naive_eval©Ú.0rm   r.   r/   r-   s     €€€rP   ú
<listcomp>z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>‚   s'   ø€ Ð3Ð3Ð3¨1�{˜1˜a  AÑ&Ô&Ð3Ð3Ð3rf   rj   rk   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS rz   )Ú_naive_eval_2r}   s     €€€rP   r   z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>…   s'   ø€ Ð6Ð6Ð6¨a•˜a  A qÑ)Ô)Ð6Ð6Ð6rf   )rX   rY   rF   r`   r   )	rM   rO   rd   Úy_bÚy_nÚy_n2r.   r/   r-   s	         @@@rP   Útest_rndm_naive_evalz TestBSpline.test_rndm_naive_evalz   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¨Ð.Ñ.Ô.Ð.Ð.Ð.rf   c           	      óÜ   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           ||¦  «        t          ||||f¦  «        d¬¦  «         d S )Nr)   ri   rj   rk   ©rX   rY   rF   r`   r   r   ©rM   rO   r-   r.   r/   rd   s         rP   Útest_rndm_splevzTestBSpline.test_rndm_splevˆ   sn   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œ�u R¨!¨Q°¨Ñ3Ô3¸%Ð@Ñ@Ô@Ð@Ð@Ð@rf   c                 ó¨  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     d¦  «        }t	          ||¦  «        }t          |Ž }|j        |j        }}t          j        ||         || dz
           d¦  «        }t           ||¦  «        t          ||¦  «        d¬¦  «         d S )NéÒ  é   r)   éP   rj   rk   )rF   rL   ÚRandomStateÚsortr   r   r-   r/   r`   r   r   )	rM   Úrngrm   ÚyrY   rO   r-   r/   rd   s	            rP   Útest_rndm_splrepzTestBSpline.test_rndm_splrepŽ   s®   € ÝŒi×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜r‘N”NÑ#Ô#ˆØ�JŠJ�r‰NŒNˆå�Q˜‰lŒlˆÝ�SˆMˆàŒs�A”Cˆ1ˆÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œ�u R¨™~œ~°EÐ:Ñ:Ô:Ð:Ð:Ð:rf   c                 ó(  — t          ¦   «         }t          j        |j        ¦  «        |_        t          j        |j        |j                 |j        |j         dz
           d¦  «        }t           ||¦  «        t          j        |¦  «        ¦  «         d S )Nr)   éd   )rX   rF   ra   r.   r`   r-   r/   r   )rM   rO   rd   s      rP   Útest_rndm_unityzTestBSpline.test_rndm_unityš   sq   € ÝÑ!Ô!ˆÝŒl˜1œ3ÑÔˆŒÝŒ[˜œ˜QœSœ 1¤3¨¬ t¨A¡v¤;°Ñ4Ô4ˆÝ˜˜˜"™œ�rœ|¨BÑ/Ô/Ñ0Ô0Ð0Ð0Ð0rf   c                 ó€  — t           j                             d¦  «        }d\  }}t          j        |                     |¦  «        ¦  «        }|                     |ddf¬¦  «        }t	          |||¦  «        }||         || dz
           }}|||z
  |                     d¦  «        z  z   }	 ||	¦  «        j        dk    sJ ‚d S )	Nr‹   ©é   r6   é   é   ©Úsizer)   ©r6   r7   é   )r6   r7   rž   r™   rš   )rF   rL   rŽ   r�   r   Úshape)
rM   r�   rN   r/   r-   r.   rO   ÚtmÚtprd   s
             rP   Útest_vectorizationzTestBSpline.test_vectorization    sº   € ÝŒi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J˜q‘M”MÑ"Ô"ˆØ�JŠJ˜Q  1˜IˆJÑ&Ô&ˆÝ�A�q˜!ÑÔˆØ�1”�q˜!˜˜A™”wˆBˆØ�2˜‘7˜cŸjšj¨Ñ3Ô3Ñ3Ñ3ˆØˆq�‰uŒuŒ{˜oÒ-Ð-Ð-Ð-Ð-Ð-rf   c           	      óÔ  — t           j                             d¦  «        }d\  }}t          j        |                     ||z   dz   ¦  «        ¦  «        }|                     |¦  «        }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 )	Nr‹   )é!   r6   r)   r2   r   ri   rj   rk   )	rF   rL   rŽ   r�   Úr_r   r`   r   r   )rM   r�   rN   r/   r-   r.   Úc_padrO   Úb_padÚdtrd   s              rP   Ú
test_len_czTestBSpline.test_len_cª   sO  € õ Œi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J˜q ™s 1™uÑ%Ô%Ñ&Ô&ˆØ�JŠJ�q‰MŒMˆõ ”�a˜Ÿš A a¡C™œÐ(Ô)ˆå˜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ÐDrf   c           	      óÌ   — t          ¦   «         }|j        \  }}}||         || dz
           }}dD ]3}t           |||g|¦  «         ||dz   |dz
  g|¦  «        dd¬¦  «         Œ4d S )Nr)   ©TFç»½×Ùß|Û=ç•Ö&è.>çH¯¼šò×z>rT   ©rX   rY   r   )	rM   Únum_parallel_threadsrO   r-   Ú_r/   r    r¡   Úextraps	            rP   Útest_endpointszTestBSpline.test_endpoints½   s¢   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaØ�1”�q˜!˜˜A™”wˆBˆà#ð 	Wð 	WˆFÝ˜A˜A˜r 2˜h¨Ñ/Ô/Ø˜A˜r E™z¨2°©:Ð6¸Ñ?Ô?ÀdÐQUðWñ Wô Wð Wð Wð	Wð 	Wrf   c           	      óÈ   — t          ¦   «         }|j        \  }}}t           |||dz   | dz
  …         dz
  ¦  «         |||dz   | dz
  …         dz   ¦  «        d¬¦  «         d S )Nr)   r¬   r­   rk   r¯   )rM   r°   rO   r-   r±   r/   s         rP   Útest_continuityzTestBSpline.test_continuityÇ   s„   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝ˜˜˜!˜A˜a™C   1¡˜Hœ+¨Ñ-Ñ.Ô.°°°!°A°a±C¸¸¸1¹°H´+ÀÑ2EÑ0FÔ0FØð	ñ 	ô 	ð 	ð 	ð 	rf   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 )	Nr2   r   r)   ri   Trq   F)Úextr‡   )rM   rO   r-   r.   r/   r¨   rd   Úmasks           rP   Ú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 ˜)¨Ð+Ñ+Ô+ñ	-ô 	-ð 	-ð 	-ð 	-rf   c                 óÊ   — t          ¦   «         }|j        \  }}}|d         dz
  |d         dz   g} ||¦  «        }t          j        t          j        |¦  «        ¦  «        rJ ‚d S )Nr   r)   r2   )rX   rY   rF   ÚallÚisnan)rM   rO   r-   r±   r/   rd   Úyys          rP   Útest_default_extrapzTestBSpline.test_default_extrapÝ   se   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaØ�Œd�Q‰h˜˜"œ ™	Ð"ˆØˆQˆr‰UŒUˆÝ”6�"œ( 2™,œ,Ñ'Ô'Ð'Ð'Ð'Ð'Ð'rf   c           	      ó²  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     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‹   é   r7   r6   Úperiodicrq   r)   r2   r   ri   )r2   r   ç      à?r)   T)
rF   rL   rŽ   r�   r   rœ   r`   r   r   r   )
rM   r�   r-   r.   r/   rO   rN   r¨   rd   Úxys
             rP   Útest_periodic_extrapz TestBSpline.test_periodic_extrapå   sS  € ÝŒi×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜q‘M”MÑ"Ô"ˆØ�JŠJ�q‰MŒMˆØˆÝ�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¬$¡;Ñ/Ñ/ˆÝ˜˜˜"¨*Ð5Ñ5Ô5°q°q¸ÈÐ7NÑ7NÔ7NÑOÔOÐOÐOÐOrf   c                 óö   — t          ¦   «         }|j        \  }}}t          j        |||f¦  «        }t	          j        ||         ||          d¦  «        }t           ||¦  «         ||¦  «        dd¬¦  «         d S )Nr”   rj   rT   )rX   rY   r	   Úfrom_splinerF   r`   r   )rM   rO   r-   r.   r/   Úpprd   s          rP   Ú
test_ppolyzTestBSpline.test_ppoly÷   sz   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝÔ  1 a˜yÑ)Ô)ˆåŒ[˜˜1œ˜q ! œu cÑ*Ô*ˆÝ˜˜˜"™œ˜r˜r "™vœv¨E¸Ð>Ñ>Ô>Ð>Ð>Ð>rf   c                 ó˜  — t          ¦   «         }|j        \  }}}t          j        |d         |d         d¦  «        }t          j        ||f         }t          d|dz   ¦  «        D ]4}t          ||||f|¬¦  «        }t          | |||¬¦  «        d¬¦  «         Œ5t           |||dz   ¬¦  «        t          j        |¦  «        d¬¦  «         d S )	Nr   r2   ri   r)   ©Úder©Únurj   rk   )	rX   rY   rF   r`   r¥   Úranger   r   Ú
zeros_like)rM   rO   r-   r.   r/   rd   rË   Úyds           rP   Ú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¡˜™œ¥r¤}°RÑ'8Ô'8¸uÐEÑEÔEÐEÐEÐErf   c                 ó8  — d}g d¢}t           j                             d¦  «        }t           j        dd|                     d¦  «        ddf         }t	          |||¦  «        }t          j        g d¢¦  «        }t           |||dk             dz
  ¦  «         |||dk             dz   ¦  «        ¦  «         t          j         |d	¦  «         |d
¦  «        ¦  «        rJ ‚t          j        ddg¦  «        }t           ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «         t          j        ddg¦  «        }t          j         ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «        rJ ‚t          j         ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «        rJ ‚d S )Nr4   )r2   r2   r   r)   r)   r6   r7   r™   r™   r™   rš   rš   r‹   r   rž   )r)   r6   r7   r™   r™   r¬   g2Hþÿÿÿ@gÎ·   @r6   r7   r)   rÌ   )rF   rL   rŽ   r¥   r   rs   r   Úallclose)	rM   r/   r-   r�   r.   rO   rm   Úx0Úx1s	            rP   Útest_derivative_jumpsz!TestBSpline.test_derivative_jumps  sÆ  € ð ˆØ2Ð2Ð2ˆÝŒi×#Ò# DÑ)Ô)ˆÝŒE�!�Q˜Ÿ
š
 1™œ q¨!Ð+Ô,ˆÝ�A�q˜!ÑÔˆõ ŒJ�|�|�|Ñ$Ô$ˆÝ˜˜˜!˜A šFœ) eÑ+Ñ,Ô,Ø˜˜!˜A šFœ) eÑ+Ñ,Ô,ñ	.ô 	.ð 	.å”;˜q˜q ™{œ{¨A¨A¨g©J¬JÑ7Ô7Ð7Ð7Ð7õ ŒZ˜˜A˜ÑÔˆÝ˜˜˜"˜u™*¨Ð+Ñ+Ô+Ø˜˜"˜u™*¨Ð+Ñ+Ô+ñ	-ô 	-ð 	-åŒZ˜˜A˜ÑÔˆÝ”;˜q˜q  e¡°Ð2Ñ2Ô2°A°A°b¸5±jÀQÐ4GÑ4GÔ4GÑHÔHÐHÐHÐHõ ”;˜q˜q  U¡¨qÐ1Ñ1Ô1°1°1°Q¸±YÀ1Ð3EÑ3EÔ3EÑFÔFÐFÐFÐFÐFÐFrf   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 )Nr2   r7   rŒ   ©r   r)   r4   r6   )r-   rj   rk   ©r   r)   r)   r4   r   r4   r^   r)   r9   )rF   r`   r   Úbasis_elementr   r   r-   r.   r/   ÚB_0123rb   rc   s      rP   Ú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rf   c           	      óÚ   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           ||¦  «        t          ||||¦  «        d¬¦  «         d S )Nr)   rŒ   rj   rk   )rX   rY   rF   r`   r   Ú_sum_basis_elementsrˆ   s         rP   Útest_basis_element_rndmz#TestBSpline.test_basis_element_rndm3  sm   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œÕ2°2°q¸!¸QÑ?Ô?ÀeÐLÑLÔLÐLÐLÐLrf   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Œ   rj   rk   )	rX   rY   r   r.   ÚrealÚimagrF   r`   r   )	rM   rO   r-   r.   r/   ÚccÚb_reÚb_imrd   s	            rP   Ú
test_cmplxzTestBSpline.test_cmplx9  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Ð9rf   c                 ó„   — t          j        g d¢¦  «        }t          j         |t          j        ¦  «        ¦  «        sJ ‚d S )NrÙ   )r   rÚ   rF   r¼   rH   ©rM   rO   s     rP   Útest_nanzTestBSpline.test_nanF  s<   € åÔ! , , ,Ñ/Ô/ˆÝŒx˜˜�"œ&™	œ	Ñ"Ô"Ð"Ð"Ð"Ð"Ð"rf   c                 óD  — t          d¬¦  «        }|j        \  }}}t          |||¦  «        }t          j        ||         || dz
           d¦  «        }t          d|¦  «        D ]<}|                     ¦   «         }t           |||¦  «         ||¦  «        dd¬¦  «         Œ=d S )Nrž   ©r/   r)   rŒ   çê-�™—q=rT   )rX   rY   r   rF   r`   rÎ   Ú
derivativer   )rM   rO   r-   r.   r/   Úb0rd   Újs           rP   Útest_derivative_methodz"TestBSpline.test_derivative_methodK  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rf   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Œ   rj   rT   )
rX   rY   rF   r`   r   Úantiderivativerí   Úc_Údstackr   rˆ   s         rP   Útest_antiderivative_methodz&TestBSpline.test_antiderivative_methodT  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ð 	7rf   c           
      ó’
  — t          j        g d¢¦  «        }t          |                     dd¦  «        t	          j        d¦  «        ¦  «         t          |                     dd¦  «        t	          j        d¦  «        ¦  «         t          |                     dd¦  «        t	          j        d¦  «        ¦  «         t          |                     dd¦  «        t	          j        d¦  «        ¦  «         t          |                     ddd¬	¦  «        t	          j        d¦  «        ¦  «         t          |                     ddd
¬	¦  «        t	          j        d¦  «        ¦  «         t          |                     ddd
¬	¦  «        t	          j        d¦  «        ¦  «         t          |                     ddd
¬	¦  «        t	          j        t          j        dd|j        ¦  «        ¦  «        ¦  «         d|_	        | 
                    ¦   «         }t	          j         |d¦  «         |d¦  «        z
  ¦  «        }t          |                     dd¦  «        |¦  «         t          |                     dd¦  «        t	          j        d|z  ¦  «        ¦  «         t          |                     dd¦  «        |¦  «         t          |                     dd¦  «        t	          j        d|z  ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  d|z  z   ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        t	          j         |d¦  «         |d¦  «        z
  d|z  z
  ¦  «        ¦  «         d S )Nr3   r   r)   rÂ   ç      à¿r2   r8   Trq   FrÁ   r4   i÷ÿÿÿiùÿÿÿiøÿÿÿéüÿÿÿç      ø?r6   g      +@é   r™   iöÿÿÿr7   )r   rÚ   r   Ú	integraterF   rs   Ú_implr   rY   rr   rò   )rM   rO   ÚiÚ
period_ints       rP   Útest_integralzTestBSpline.test_integralb  sŽ  € ÝÔ! ) ) )Ñ,Ô,ˆÝ˜Ÿš A qÑ)Ô)­2¬:°c©?¬?Ñ;Ô;Ð;Ý˜Ÿš A qÑ)Ô)­2¬:°hÑ+?Ô+?Ñ@Ô@Ð@Ý˜Ÿš A qÑ)Ô)­2¬:°dÑ+;Ô+;Ñ<Ô<Ð<õ 	˜Ÿš B¨Ñ*Ô*­B¬J°s©O¬OÑ<Ô<Ð<Ý˜Ÿš B¨°t˜Ñ<Ô<½b¼jÈ¹o¼oÑNÔNÐNÝ˜Ÿš B¨°u˜Ñ=Ô=½r¼zÈ#¹¼ÑOÔOÐOÝ˜Ÿš A r°u˜Ñ=Ô=½r¼zÈ(Ñ?SÔ?SÑTÔTÐTõ 	˜Ÿš A r°u˜Ñ=Ô=Ýœ
¥5¤<°°2°q´uÑ#=Ô#=Ñ>Ô>ñ	@ô 	@ð 	@ð #ˆŒØ×ÒÑÔˆÝ”Z   !¡¤ q q¨¡t¤t¡Ñ,Ô,ˆ
å˜Ÿš A qÑ)Ô)¨:Ñ6Ô6Ð6Ý˜Ÿš A qÑ)Ô)­2¬:°b¸:±oÑ+FÔ+FÑGÔGÐGÝ˜Ÿš B¨Ñ+Ô+¨ZÑ8Ô8Ð8Ý˜Ÿš B¨Ñ+Ô+­R¬Z¸¸J¹Ñ-GÔ-GÑHÔHÐHå˜Ÿš C¨Ñ-Ô-Ýœ
 1 1 S¡6¤6¨A¨A¨c©F¬F¡?Ñ3Ô3ñ	5ô 	5ð 	5å˜Ÿš C¨Ñ+Ô+Ýœ
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°°1±´Ñ#5¸¸¸#¹¼Ñ#>Ñ?Ô?ñ	Aô 	Að 	Aå˜Ÿš H¨fÑ5Ô5Ýœ
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°°1±´Ñ#5¸¸¸#¹¼Ñ#>Ñ?Ô?ñ	Aô 	Að 	Aå˜Ÿš C¨Ñ0Ô0Ýœ
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°°1±´Ñ#5¸¸¸#¹¼Ñ#>ÀÀZÁÑ#OÑPÔPñ	Rô 	Rð 	Rõ 	˜Ÿš A rÑ*Ô*­B¬J°q°q¸±t´t¸a¸aÀ¹d¼d±{Ñ,CÔ,CÑDÔDÐDÝ˜Ÿš B¨Ñ,Ô,­b¬j¸¸¸1¹¼ÀÀÀ!ÁÄ¹Ñ.EÔ.EÑFÔFÐFÝ˜Ÿš A rÑ*Ô*Ýœ
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°Z±Ñ#?Ñ@Ô@ñ	Bô 	Bð 	Bð 	Bð 	Brf   c                 óä   — g d¢}t          ||¦  «        }d|_        t          j        |¦  «        }dD ]=\  }}t	          |                     ||¦  «        |                     ||¦  «        ¦  «         Œ>d S )Nr5   rÁ   ))éûÿÿÿrÂ   )rÂ   rž   )rø   é   )r
   rr   r	   rÆ   r   rû   )rM   rm   rO   ÚprÔ   rÕ   s         rP   Ú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ð 	1rf   c                 ó¾   — t          j        g d¢¦  «        }dD ]C}|                     dd|¬¦  «        }t          |t          j        ¦  «        sJ ‚|j        dk    sJ ‚ŒDd S )Nr3   r«   r   r)   rq   )r   rÚ   rû   Ú
isinstancerF   ÚndarrayÚndim)rM   rO   rr   Úress       rP   Útest_integrate_0D_alwaysz$TestBSpline.test_integrate_0D_always•  so   € åÔ! ) ) )Ñ,Ô,ˆØ(ð 	!ð 	!ˆKØ—+’+˜a °�+Ñ<Ô<ˆCÝ˜c¥2¤:Ñ.Ô.Ð.Ð.Ð.Ø”8˜q’=�=�=�=�=ð	!ð 	!rf   c                 óð   —  G d„ dt           ¦  «        }|                     g d¢¦  «        }|j        |k    sJ ‚|                     ¦   «         j        |k    sJ ‚|                     ¦   «         j        |k    sJ ‚d S )Nc                   ó   — e Zd ZdS )ú'TestBSpline.test_subclassing.<locals>.BN)Ú__name__Ú
__module__Ú__qualname__rz   rf   rP   ÚBr  Ÿ  s   € € € € € ØˆDrf   r  )r   r)   r4   r4   )r   rÚ   Ú	__class__rí   rò   )rM   r  rO   s      rP   Útest_subclassingzTestBSpline.test_subclassing�  s˜   € ð	ð 	ð 	ð 	ð 	•ñ 	ô 	ð 	ð �OŠO˜L˜L˜LÑ)Ô)ˆØŒ{˜aÒÐÐÐØ�|Š|‰~Œ~Ô'¨1Ò,Ð,Ð,Ð,Ø×ÒÑ!Ô!Ô+¨qÒ0Ð0Ð0Ð0Ð0Ð0rf   Úaxisrø   r7   c                 óø  — d\  }}t          j        dd||z   dz   ¦  «        }g d¢}|dz  }|                     ||¦  «         t          |¦  «        }t           j                             d¦  «        }|                     |¬¦  «        }t          ||||¬¦  «        }	|	j        j        ||         f|d |…         z   ||dz   d …         z   k    sJ ‚|                     d	¦  «        }
 |	|
¦  «        j        |d |…         |
j        z   ||dz   d …         z   k    sJ ‚|j	         dz
  |j	        fD ]+}t          t          t          fi t          ||||¬
¦  «        ¤Ž Œ,t          ||||¬¦  «                             ¦   «         t          ||||¬¦  «                             d¦  «        t          ||||¬¦  «                             ¦   «         t          ||||¬¦  «                             d¦  «        fD ]}|j        |	j        k    sJ ‚Œd S )Nr—   r   r)   ©r™   rš   rÀ   r7   r‹   r›   ©r  r�   )r-   r.   r/   r  r4   )rF   r`   r   ÚtuplerL   rŽ   r   r.   rŸ   r  rB   r    rE   rí   rò   r  )rM   r  rN   r/   r-   ÚshÚpos_axisr�   r.   rO   ÚxpÚaxÚb1s                rP   Ú	test_axiszTestBSpline.test_axis§  s1  € à‰ˆˆ1ÝŒK˜˜1˜a !™e a™iÑ(Ô(ˆØˆYˆYˆð ˜!‘8ˆØ
�	Š	�(˜AÑÔÐÝ�2‰YŒYˆÝŒi×#Ò# DÑ)Ô)ˆØ�JŠJ˜BˆJÑÔˆÝ�A�q˜! $Ð'Ñ'Ô'ˆØŒsŒy˜R œ\˜O¨b°°(°¬mÑ;¸bÀÈ!ÁÀÀ¼oÑMÒMÐMÐMÐMà�ZŠZ˜	Ñ"Ô"ˆØˆq�‰uŒuŒ{˜b  ( œm¨b¬hÑ6¸¸HÀQ¹J¸K¸K¼ÑHÒHÐHÐHÐHð ”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ð ”7˜aœfÒ$Ð$Ð$Ð$Ð$ð		%ð 	%rf   c                 ó"  — d}g d¢}t          j        g d¢g d¢g¦  «        }t          |||d¬¦  «        }t          ||d         |¦  «        }t          ||d         |¦  «        }t           |d	¦  «         |d	¦  «         |d	¦  «        g¦  «         d S )
Nr4   )r   r)   r4   r6   r7   rž   r™   )r2   r4   r   r2   )r4   r   éýÿÿÿr)   r2   r  r   r)   r=   )rF   Úarrayr   r   )rM   r/   r-   r.   ÚsplÚspl0Úspl1s          rP   Ú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œ$ Ñ"Ô"ˆÝ˜˜˜C™œ 4 4¨¡9¤9¨d¨d°3©i¬iÐ"8Ñ9Ô9Ð9Ð9Ð9rf   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                 ód  — t           j                             d¦  «        }t          j        |                     | ¦  «        dz  dz
  ¦  «        }|                     | ¦  «        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Á   r2   r   ©r/   Úbc_typer)   rj   rk   N)rF   rL   rŽ   r�   Úrandom_sampler
   ÚeyeÚlenr-   r   Údesign_matrixÚtoarrayr   r.   )
rN   r/   r*  r�   rm   r‘   rv   r.   Údes_matr_defÚdes_matr_csrs
             rP   Úrun_design_matrix_testszHTestBSpline.test_design_matrix_bc_types.<locals>.run_design_matrix_tests×  s)  € õ ”)×'Ò'¨Ñ-Ô-ˆCÝ”˜×)Ò)¨!Ñ,Ô,¨rÑ1°BÑ6Ñ7Ô7ˆAØ×!Ò! !Ñ$Ô$ rÑ)¨BÑ.ˆ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ÐCrf   r?   r6   ©ÚclampedÚnaturalrÀ   r4   ú
not-a-knotrž   rš   rÁ   N)rÎ   )rM   r2  rN   r/   Úbcs        rP   Ú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ð 	6rf   rr   )FTrÁ   Údegreerž   c           	      óè  — t           j                             d¦  «        }|                     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‹   r^   r)   r4   rù   N)rF   rL   rŽ   r+  ÚaminÚamaxr¥   r`   r,  r-  r   r   r.  r/  r!  rZ   r   rD   )rM   rr   r9  r�   rm   ÚxminÚxmaxr/   r-   r.   Úbsplines              rP   Ú'test_design_matrix_same_as_BSpline_callz3TestBSpline.test_design_matrix_same_as_BSpline_callú  s#  € õ Œi×#Ò# DÑ)Ô)ˆØ×Ò˜b F¨Q¡JÑ/Ñ0Ô0ˆÝ”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%Æ%F)Æ,F)c                 óÜ  — t           j                             d¦  «        }d}d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|                     |¦  «        dz  dz
  }t          |||¬¦  «        }t          dd¦  «        D ]]}|d |…         }|d |…         }	t          j        ||j	        |¦  «         
                    ¦   «         }
t          |
|j        z  |	d	¬
¦  «         Œ^d S )Nr‹   r^   r6   r(  rŒ   rë   r)   r7   rj   rk   )rF   rL   rŽ   r�   r+  r
   rÎ   r   r.  r-   r/  r   r.   )rM   r�   rN   r/   rm   r‘   rv   rý   ÚxcÚycr1  s              rP   Útest_design_matrix_x_shapesz'TestBSpline.test_design_matrix_x_shapes  s  € åŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-°Ñ2Ñ3Ô3ˆØ×Ò˜aÑ Ô  2Ñ%¨Ñ*ˆå! ! 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rf   c                 óˆ   — g d¢}t          j        d|d¦  «                             ¦   «         }t          |g d¢gd¬¦  «         d S )N)r+   r+   r+   r9   r:   r;   r;   r;   r9   r6   )g      Ð?gm‰à¨ªªâ?gKÚ}\UUÅ?r8   rj   rk   )r   r.  r/  r   )rM   r-   Údes_matrs      rP   Útest_design_matrix_t_shapesz'TestBSpline.test_design_matrix_t_shapes'  s_   € à,Ð,Ð,ˆÝÔ(¨¨Q°Ñ2Ô2×:Ò:Ñ<Ô<ˆÝ˜Ø;Ð;Ð;Ð<Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rf   c                 ó:  — t           j                             d¦  «        }d}d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|                     |¦  «        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‹   r^   r6   r(  rŒ   rë   r2   r4   )r8   r+   r9   r:   r;   ç      @rp   )rF   rL   rŽ   r�   r+  r
   rB   rD   r   r.  r-   )rM   r�   rN   r/   rm   r‘   rv   r-   s           rP   Útest_design_matrix_assertsz&TestBSpline.test_design_matrix_asserts/  s¡  € ÝŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-°Ñ2Ñ3Ô3ˆØ×Ò˜aÑ Ô  2Ñ%¨Ñ*ˆÝ! ! 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*  )r5  r4  rÁ   r6  c                 óþ  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     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   r2   ©r*  r)   rS   rk   )rF   rL   rŽ   r�   r   r   Úfrom_power_basisr`   r   r
   r.   )	rM   r*  r�   rm   r‘   Úcbrv   rd   Úbspl_news	            rP   Útest_from_power_basisz!TestBSpline.test_from_power_basisA  sí   € õ Œi×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜r‘N”NÑ#Ô#ˆØ�JŠJ�r‰NŒNˆØ�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Ð7rf   c                 ó
  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     d¦  «        |                     d¦  «        dz  z   }|dk    r|d         |d<   t	          |||¬¦  «        }t          j        ||¬¦  «        }t          ||j        |¬¦  «        }t          ||j	        |¬¦  «        }t          |j        |j        d|j        z  z   d¬	¦  «         d S )
Nr‹   rŒ   r*   rÁ   r   r2   rL  rS   rk   )rF   rL   rŽ   r�   r   r   rM  r
   rá   râ   r   r.   )	rM   r*  r�   rm   r‘   rN  rv   Úbspl_new_realÚbspl_new_imags	            rP   Útest_from_power_basis_complexz)TestBSpline.test_from_power_basis_complexP  sí   € õ Œi×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜r‘N”NÑ#Ô#ˆØ�JŠJ�r‰NŒN˜SŸZšZ¨™^œ^¨bÑ0Ñ0ˆØ�jÒ Ð Ø�a”DˆAˆb‰EÝ˜˜A wÐ/Ñ/Ô/ˆÝÔ'¨°GÐ<Ñ<Ô<ˆÝ*¨1¨a¬f¸gÐFÑFÔFˆÝ*¨1¨a¬f¸gÐFÑFÔFˆÝ˜œ ¤°"°}´Ñ2FÑ FÈUÐSÑSÔSÐSÐSÐSrf   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]
        r5   )r)   r)   r)   r)   r)   r5  rL  )r+   r)   r)   r)   r)   r)   r)   rS   rk   N)rF   r!  r   rM  r   r   r.   )rM   rm   r‘   rv   s       rP   Útest_from_power_basis_exmpz&TestBSpline.test_from_power_basis_exmp^  sy   € õ ŒH�_�_�_Ñ%Ô%ˆÝŒH�_�_�_Ñ%Ô%ˆÝÔ'­°A°qÀ)Ð(LÑ(LÔ(LØ09ð;ñ ;ô ;ˆå˜œÐ 7Ð 7Ð 7¸eÐDÑDÔDÐDÐDÐDrf   c                 óŒ  — t          j        ddg¦  «        }t          j        dg¦  «        }|                     d¬¦  «         |                     d¬¦  «         t          j        ddd¦  «        }|                     d¬¦  «         t	          ||d¬¦  «        }t           ||¦  «        t          j        |¦  «        dz  ¦  «         d S )Nr   r)   r:   F©Úwriter^   r,   )rF   r!  Úsetflagsr`   r   r   ra   )rM   r-   r.   rd   rO   s        rP   Útest_read_onlyzTestBSpline.test_read_onlyq  s´   € åŒH�a˜�VÑÔˆÝŒH�c�U‰OŒOˆØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐåŒ[˜˜A˜rÑ"Ô"ˆØ
�Š˜%ˆÑ Ô Ð å�a˜1 Ð"Ñ"Ô"ˆÝ˜˜˜"™œ�rœ|¨BÑ/Ô/°#Ñ5Ñ6Ô6Ð6Ð6Ð6rf   c                 óJ   — t          ¦   «         }d„ }t          d||¦  «         d S )Nc                 ó~   — |j         \  }} }t          j        ||         || dz
           d¦  «        } ||¦  «         d S )Nr)   i'  )rY   rF   r`   )r±   rO   r-   r/   rd   s        rP   Ú	worker_fnz/TestBSpline.test_concurrency.<locals>.worker_fnƒ  sA   € Ø”e‰GˆAˆq�!Ý”˜Q˜qœT 1 a R¨¡T¤7¨EÑ2Ô2ˆBØˆAˆb‰EŒEˆEˆEˆErf   r^   )rX   r!   )rM   rO   r^  s      rP   Útest_concurrencyzTestBSpline.test_concurrency~  s8   € õ  Ñ!Ô!ˆð	ð 	ð 	õ
 	   I¨qÑ1Ô1Ð1Ð1Ð1rf   c           	      óH  — t          ¦   «         }t          j        ddd¦  «        } ||¦  «        }t          j        ¦   «         }t          j        t          |                     d|› d�¦  «        ¦  «        d|j        j	        |j        j
        ¬¦  «        }|j        |d d …<   t          j        t          |                     d|› d�¦  «        ¦  «        d|j        j	        |j        j
        ¬¦  «        }|j        |d d …<   ||_        ||_        t           ||¦  «        |¦  «         d S )	Nr   r)   r^   r-   z.datzw+)ÚmoderA   rŸ   r.   )rX   rF   r`   Ú	threadingÚget_native_idÚmemmapÚstrÚjoinr-   rA   rŸ   r.   r   )rM   ÚtmpdirrO   rd   ÚexpectedÚtidÚt_mmÚc_mms           rP   Útest_memmapzTestBSpline.test_memmap‹  s  € õ  Ñ!Ô!ˆÝŒ[˜˜A˜rÑ"Ô"ˆà�1�R‘5”5ˆåÔ%Ñ'Ô'ˆÝŒy�˜VŸ[š[¨¨S¨¨¨Ñ7Ô7Ñ8Ô8¸tØ œsœy°´´	ð;ñ ;ô ;ˆà”#ˆˆQˆQˆQ‰ÝŒy�˜VŸ[š[¨¨S¨¨¨Ñ7Ô7Ñ8Ô8¸tØ œsœy°´´	ð;ñ ;ô ;ˆà”#ˆˆQˆQˆQ‰ØˆŒØˆŒå˜˜˜"™œ˜xÑ(Ô(Ð(Ð(Ð(rf   N)2r  r  r  rQ   r\   re   rn   rw   r…   r‰   r’   r•   r¢   r©   r³   rµ   r¹   r¾   rÄ   rÈ   rÑ   rÖ   rÜ   rß   ræ   ré   rð   rõ   rÿ   r  r
  r  rZ   ÚmarkÚparametrizerÎ   r  r%  Úthread_unsafer8  r@  rD  rG  rJ  rP  rT  rV  r[  r_  rl  rz   rf   rP   r'   r'   '   s¿  € € € € € ð!ð !ð !ðF
ð 
ð 
ð>ð >ð >ð	?ð 	?ð 	?ð.ð .ð .ð/ð /ð /ðAð Að Að
;ð 
;ð 
;ð1ð 1ð 1ð.ð .ð .ðEð Eð Eð&Wð Wð Wðð ð ð-ð -ð -ð(ð (ð (ðPð Pð Pð$?ð ?ð ?ðFð Fð FðGð Gð Gð4Að Að AðMð Mð Mð:ð :ð :ð#ð #ð #ð
Fð Fð Fð7ð 7ð 7ð&Bð &Bð &BðP	1ð 	1ð 	1ð!ð !ð !ð1ð 1ð 1ð „[×Ò˜V U U¨2¨q¡\¤\Ñ2Ô2ð%ð %ñ 3Ô2ð%ð::ð :ð :ð „[Ôð(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ð
Tð 
TñDô Dð
TðEð Eð Eð&7ð 7ð 7ð „[Ôð	2ð 	2ñ Ôð	2ð)ð )ð )ð )ð )rf   r'   c                   óP  — 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	ej                             dddg¦  «        d„ ¦   «         Z
d„ Zd„ ZdS )Ú
TestInsertÚxval)r8   r+   r=   r7   ç      @ç      @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À   r6   rë   rS   rk   r)   r2   rÂ   )rF   rJ   Úsinr
   r   Úinsert_knotr   r-   r.   r/   r¥   Úcosró   )rM   rr  rm   r‘   r"  Úspl_1fÚspl_1rd   Úy1Úspl_y1Úspl_yyÚspl_yy1s               rP   Útest_insertzTestInsert.test_insert¤  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Ð<Ñ<Ô<Ð<Ð<Ð<rf   zxval, m))r8   r4   )r+   r6   )rù   rž   )r7   r4   )rt  r4   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À   r6   rë   ©ÚmrS   rk   r)   r2   rÂ   )rF   rJ   rv  r
   r   rw  r   r-   r.   r/   r¥   )	rM   rr  r‚  rm   r‘   r"  ry  rz  rd   s	            rP   Ú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Ð7rf   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›   r6   r4   )ÚlowÚhighr¤   ©r†  r‡  rœ   rS   rk   )rF   rL   Údefault_rngr�   Úuniformr   rw  r   )
rM   r�   rN   r/   r-   r.   r"  Úxvrz  rd   s
             rP   Ú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Ð7rf   r‹  )	r   çš™™™™™¹?r9   r;   ç      @ç      @ç      @gffffff@rt  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À   r6   rë   rr   rÁ   T©ÚperrS   rk   r)   r‹   r   rš   é)   rˆ  )rF   rJ   rv  r   r   rw  r   rY   r   r-   r.   rL   r‰  rŠ  r   )rM   r‹  rm   r‘   rY   r"  rz  ÚtfÚcfr/   rd   s              rP   Ú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ÐFrf   rr   NrÁ   c                 ó€  — t          j        d¦  «        dz  t           j        z  }t          j        |¦  «        t          j        |¦  «        }}t          ||d|z  z   d¬¦  «        }||_        t          ||d¬¦  «        }||_        t          ||d¬¦  «        }||_        d}|                     |¦  «        }	|                     |¦  «        }
|                     |¦  «        }t          |	j	        |
j	        d¬¦  «         t          |	j	        |j	        d¬¦  «         t          |	j
        |
j
        d|j
        z  z   d¬¦  «         d S )	NrÀ   r4   r*   r6   rë   ç      @rS   rk   )rF   rJ   Úpirv  rx  r
   rr   rw  r   r-   r.   )rM   rr   rm   Úy_reÚy_imr"  Úspl_reÚspl_imr‹  rz  Úspl_1reÚspl_1ims               rP   Útest_complexzTestInsert.test_complex÷  s&  € åŒI�a‰LŒL˜‰N�2œ5Ñ ˆÝ”V˜A‘Y”Y¥¤ q¡	¤	ˆdˆå   D¨2¨d©7¡N°aÐ8Ñ8Ô8ˆØ%ˆŒå# A t¨qÐ1Ñ1Ô1ˆØ(ˆÔå# A t¨qÐ1Ñ1Ô1ˆØ(ˆÔàˆØ—’ Ñ#Ô#ˆØ×$Ò$ RÑ(Ô(ˆØ×$Ò$ RÑ(Ô(ˆå˜œ ¤°Ð7Ñ7Ô7Ð7Ý˜œ ¤°Ð7Ñ7Ô7Ð7Ý˜œ ¤¨R°´	©\Ñ!9ÀÐFÑFÔFÐFÐFÐFrf   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 )Nr™  r6   r   r)   ©r4   r6   r7   rž   rš   rÁ   rq   Tr’  )	rF   r!  Úonesr-  r   rB   rD   r   rw  )rM   r‹  r/   r-   r.   r"  s         rP   Ú+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 )	Nr6   r   r)   r£  rš   r2   rÀ   r�  )rF   r!  r¤  r-  r   rB   rD   rw  )rM   r/   r-   r.   r"  s        rP   Ú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$)r  r  r  rZ   rm  rn  r  rƒ  rŒ  r—  r¡  r¥  r§  rz   rf   rP   rq  rq  ¢  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ð „[×Ò˜]¨T°:Ð,>Ñ?Ô?ðGð Gñ @Ô?ðGð, ð  ð  ð($ð $ð $ð $ð $rf   rq  c            
      óÞ   — dd„} dD ]e}t          |¬¦  «        }t          t          |¦  «        ¦  «        D ]6\  }} | ||¦  «         t          d|dz   ¦  «        D ]} | |||dd¦  «         ŒŒ7Œfd S )	Nr   rj   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   r�  rÂ   r)   r2   zder = z  k = )rU   rV   Úerr_msg)rY   rF   Úuniquer¥   r   r   r/   )	rO   rï   rË   rU   rV   r-   r.   r/   rm   s	            rP   Úcheck_splevz,test_knots_multiplicity.<locals>.check_splev6  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rf   ©r)   r4   r6   r7   rž   rë   r)   rì   )r   rj   rj   )rX   Ú	enumerateÚ_make_multiplesrÎ   )r¬  r/   rO   rï   r  rË   s         rP   Útest_knots_multiplicityr°  2  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ð 6rf   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+   r8   ©Ú_naive_B©rm   r/   rý   r-   Úc1Úc2s         rP   r³  r³  I  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Ðrf   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²  )r~   rï   r.   rý   r/   r-   rm   s     €€€€€rP   ú	<genexpr>z_naive_eval.<locals>.<genexpr>f  sB   øè è € ÐFÐF°1ˆq��1‘Œv�  A q¨¡s¨AÑ.Ô.Ñ.ÐFÐFÐFÐFÐFÐFrf   r   )rF   Úsearchsortedr-  ÚsumrÎ   )rm   r-   r.   r/   rý   s   ````@rP   r|   r|   \  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ÐFrf   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²  ©r~   rý   r.   r/   r-   rm   s     €€€€rP   rº  z _naive_eval_2.<locals>.<genexpr>o  s:   øè è € Ð=Ð=¨qˆq�Œt•h˜q ! Q¨Ñ*Ô*Ñ*Ð=Ð=Ð=Ð=Ð=Ð=rf   ©r-  r¼  rÎ   ©rm   r-   r.   r/   rN   s   ```` rP   r�   r�   i  sœ   øøøø€ åˆA‰Œ�!�A‘#‰€AØ��!‘Š8ˆ8ˆ8ˆ8Ýˆq‰6Œ6�QŠ;ˆ;ˆ;ˆ;ØˆQŒ4�1ÐÐÒÐ˜˜!œÒÐÐÐÐÐÝÐ=Ð=Ð=Ð=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=Ñ=Ô=Ð=rf   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)   r8   r4   Frq   )r-  rÎ   r   rÚ   rF   Ú
nan_to_num)rm   r-   r.   r/   rN   Úsrý   rO   s           rP   rÞ   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 !Ñ$Ô$Ñ$Ñ$ˆˆØ€Hrf   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   r4   r)   c                 ó   — dS )Nr8   rz   ©rm   s    rP   ú<lambda>zB_012.<locals>.<lambda>ƒ  s   €  b€ rf   c                 ó   — | S r¹  rz   rÇ  s    rP   rÈ  zB_012.<locals>.<lambda>ƒ  s   € °A€ rf   c                 ó   — d| z
  S ©Nr9   rz   rÇ  s    rP   rÈ  zB_012.<locals>.<lambda>ƒ  s
   € ÀÀAÁ€ rf   )rF   Ú
atleast_1dÚ	piecewiserÇ  s    rP   rl   rl   }  sp   € å
Œ�aÑÔ€AÝŒ<˜˜Q šU q¨1¢uÑ-Ø !šV¨¨AªÑ.Ø !šV¨¨QªÑ/ð1ð )˜L¨+¨+°~°~ÐFñHô Hð Hrf   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
|› �¦  «        ‚t          j        | ||¦  «        }|S )z0A quadratic B-spline function B(x | 0, 1, 2, 3).r)   r4   r   c                 ó   — | | z  dz  S rË  rz   rÇ  s    rP   rÈ  zB_0123.<locals>.<lambda>‹  s   € ˜1˜Q™3˜r™6€ rf   c                 ó   — d| dz
  dz  z
  S )Ng      è?rù   r4   rz   rÇ  s    rP   rÈ  zB_0123.<locals>.<lambda>Œ  s   € ˜4 1 T¡6¨A¡+Ñ-€ rf   c                 ó   — d| z
  dz  dz  S )Nr:   r4   rz   rÇ  s    rP   rÈ  zB_0123.<locals>.<lambda>�  s   € ˜B˜q™D 1™9 q™=€ rf   c                 ó   — dS ©Nr+   rz   rÇ  s    rP   rÈ  zB_0123.<locals>.<lambda>�  ó   € ˜2€ rf   c                 ó   — dS )Ng       Àrz   rÇ  s    rP   rÈ  zB_0123.<locals>.<lambda>�  s   € ˜3€ rf   c                 ó   — dS rÓ  rz   rÇ  s    rP   rÈ  zB_0123.<locals>.<lambda>‘  rÔ  rf   znever be here: der=)rF   rÌ  rD   rÍ  )rm   rË   ÚcondsÚfuncsÚpiecess        rP   rÛ   rÛ   †  sª   € å
Œ�aÑÔ€AØ�ŠU�Q˜’U˜q 1šuÑ% q¨1¢uÐ-€EØ
ˆa‚x€xØ!Ð!Ø-Ð-Ø(Ð(ð*ˆˆð 
�ŠˆØ�Ø�Ø�ðˆˆõ Ð4¨sÐ4Ð4Ñ5Ô5Ð5ÝŒ\˜!˜U EÑ*Ô*€FØ€Mrf   é#   r6   c                 óð   — t           j                             d¦  «        }t          j        |                     | |z   dz   ¦  «        ¦  «        }|                     | ¦  «        }t	          j        |||¦  «        S )Né{   r)   )rF   rL   rŽ   r�   r   Úconstruct_fast)rN   r/   r�   r-   r.   s        rP   rX   rX   ˜  s^   € Ý
Œ)×
Ò
 Ñ
$Ô
$€CÝ
Œ�—
’
˜1˜Q™3˜q™5Ñ!Ô!Ñ"Ô"€AØ�
Š
�1‰Œ€AÝÔ! ! Q¨Ñ*Ô*Ð*rf   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)   r2   )r.   r/   r-   Úcopyr   )rO   r.   r/   Út1s       rP   r¯  r¯  Ÿ  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˜Ñ
Ô
ÐÐÐÐÐrf   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   r;   r”  rá  )rF   r`   rš  rx  r
   r-   r.   r/   rY   rd   r½   rO   Úxnewró   rô   r¶  r   Úb2)rM   rd   r½   rO   r¶  s        rP   Úsetup_methodzTestInterop.setup_methodµ  sÅ   € ÝŒ[˜˜B�rœu™H bÑ)Ô)ˆÝŒV�B‰ZŒZˆÝ˜r 2Ñ&Ô&ˆØ”C˜œ˜aœc�?ˆŒØ#% r¨1Ð ˆŒ�”˜$œ&å”K  2¥b¤e¡8¨RÑ0Ô0ˆŒ	åŒU�1”3˜œ˜QœS�=Ô!ˆÝ”)˜R ˜HÑ%Ô%ˆŒÝ˜!œ#˜tœw¨¬Ñ,Ô,ˆŒˆˆrf   c                 ó  ‡— | j         | j        | j        c}Š}t          t	          |‰¦  «         ‰|¦  «        dd¬¦  «         t          t	          |‰j        ¦  «         ‰|¦  «        dd¬¦  «         t          t          j        ˆ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          j        t	          ||¦  «        ¦  «         ||¦  «                             |¦  «        dd¬¦  «         d S )NrS   rT   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS rz   )r   )r~   rm   rO   s     €rP   r   z*TestInterop.test_splev.<locals>.<listcomp>Ë  s!   ø€ Ð#>Ð#>Ð#>°A¥E¨!¨Q¡K¤KÐ#>Ð#>Ð#>rf   zCalling splev.. with BSpline©Úmatchr)   ©r   )rç  rO   rè  r   r   rY   rF   rs   rB   rD   r  rÎ   r.   r  Ú	transposer-   r/   )rM   rç  rè  r  rã   rY   rO   s         @rP   Ú
test_splevzTestInterop.test_splevÂ  sÜ  ø€ Ø”i ¤¨¬ˆˆˆa�õ 	�˜d A™œØ˜˜$™œ e°%ð	9ñ 	9ô 	9ð 	9å�˜d A¤EÑ*Ô*Ø˜˜$™œ e°%ð	9ñ 	9ô 	9ð 	9å�œ
Ð#>Ð#>Ð#>Ð#>¸Ð#>Ñ#>Ô#>Ñ?Ô?Ø˜˜$™œ e°%ð	9ñ 	9ô 	9ð 	9õ
 �:Ð-KÐLÑLÔLð 	ð 	Ý�$˜‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ •5˜˜BœDœIÑ&Ô&Ñ'Ô'¨$Ñ.ˆØŒT�^Š^˜BÑÔˆØŒt�R˜œÐˆÝ�œ
¥5¨¨sÑ#3Ô#3Ñ4Ô4Ø˜˜4™œ×*Ò*¨2Ñ.Ô.°UÀð	Hñ 	Hô 	Hð 	Hð 	Hð 	Hs   ÃCÃC"Ã%C"c                 ó&  — | j         | j        }}t          ||¦  «        }t          j        ||¦  «        \  }}}t	          |d         |d¬¦  «         t	          |d         |d¬¦  «         |d         |k    sJ ‚t          ||d¬¦  «        \  }}}}t	          |d         |d¬¦  «         t	          |d         |d¬¦  «         |d         |k    sJ ‚t          ||¦  «        }	t	          ||	d¬¦  «         t          |Ž }
t	          | |
|¦  «        d¬¦  «         d S )Nr   rS   rk   r)   r4   T)Úfull_output)rd   r½   r   rü   r   r   r   )rM   rm   r‘   rY   r-   r.   r/   Útck_fr±   r½   rO   s              rP   Útest_splrepzTestInterop.test_splrepÝ  s)  € ØŒw˜œˆ1ˆå�Q˜‰lŒlˆÝ”,˜q !Ñ$Ô$‰ˆˆ1ˆaÝ˜˜Aœ ¨Ð.Ñ.Ô.Ð.Ý˜˜Aœ ¨Ð.Ñ.Ô.Ð.Ø�1Œv˜Š{ˆ{ˆ{ˆ{õ    1°$Ð7Ñ7Ô7‰ˆˆq�!�QÝ˜˜aœ !¨%Ð0Ñ0Ô0Ð0Ý˜˜aœ !¨%Ð0Ñ0Ô0Ð0Ø�QŒx˜1Š}ˆ}ˆ}ˆ}õ �1�c‰]Œ]ˆÝ˜˜2 EÐ*Ñ*Ô*Ð*õ �SˆMˆÝ˜˜1˜1˜Q™4œ4 eÐ,Ñ,Ô,Ð,Ð,Ð,rf   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ì  r6   )	rd   r½   rF   ró   rB   rD   r   rü   rC   )rM   rm   r‘   Úy2s       rP   Ú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                 óf  — t          j        dt           j        ¬¦  «                             d¦  «        }t	          |¦  «        \  }}t          j        |¦  «        \  }}t          ||d¬¦  «         t          t          j        t          ||¦  «        ¦  «        |d¬¦  «         t          t          j        t          ||¦  «        ¦  «        |d¬¦  «         t	          |dd¬¦  «        \  \  }}}}}t          ||d¬¦  «         t          t          j        t          ||¦  «        ¦  «        |d¬¦  «         d S )	Nrú   r@   ©r6   rž   rS   rk   r   T)rÄ  rò  )	rF   rJ   rK   rt   r   rü   r   rs   r   )	rM   rm   rO   ÚurY   Úu1Úb_fÚu_fr±   s	            rP   Útest_splprepzTestInterop.test_splprep  s  € ÝŒI�b¥¤
Ð+Ñ+Ô+×3Ò3°FÑ;Ô;ˆÝ�q‰zŒz‰ˆˆ1Ý”- Ñ"Ô"‰ˆˆRõ 	˜˜2 EÐ*Ñ*Ô*Ð*Ý�œ
¥5¨¨A¡;¤;Ñ/Ô/°¸Ð?Ñ?Ô?Ð?Ý�œ
¥5¨¨C¡=¤=Ñ1Ô1°1¸5ÐAÑAÔAÐAõ & a¨1¸$Ð?Ñ?Ô?Ñ‰
ˆˆc�A�q˜!Ý˜˜3 UÐ+Ñ+Ô+Ð+Ý�œ
¥5¨¨c¡?¤?Ñ3Ô3°Q¸UÐCÑCÔCÐCÐCÐCrf   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(  r6   )Únumrö  )ç– Ð>IÀr  ç– Ð>KÀr  zInvalid inputs)r)   r6   r4   r7   )r   g333333Ó?gš™™™™™É?r)   )	rF   rJ   rt   rB   rD   r   rü   r`   rC   )rM   rm   rû  s      rP   Ú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                 óŠ  — | 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¬¦  «        ¦  «        }|j        dk    sJ ‚t          ||z
  t          j        |¦  «        d¬¦  «         d S )N)rÂ   rù   r=   r™  r®   rT   zCalling sproot.. with BSplinerì  ri   )Úmestr)   r4   r   )r6   r4   r7   rì   rk   )rO   rè  rF   r!  rš  r   r   r-   r.   r/   rB   rD   rï  rs   rŸ   rÏ   )rM   rO   rè  ÚrootsÚc2rÚrrs         rP   Útest_sprootzTestInterop.test_sproot1  sn  € Ø”˜œˆ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Ð:Ñ:Ô:Ñ;Ô;ˆØŒx˜9Ò$Ð$Ð$Ð$Ý˜˜U™
¥B¤M°"Ñ$5Ô$5¸EÐBÑBÔBÐBÐBÐBs   ÂB8Â8B<Â?B<c           	      ón  — | j         | j        }}t          t          dd|¦  «        t          dd|j        ¦  «        dd¬¦  «         t          t          d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¦  «        ¦  «        }|j        d	k    sJ ‚t          |t          dd|¦  «        dd¬
¦  «         d S )Nr   r)   rj   F)rU   Úcheck_0dzCalling splint.. with BSplinerì  r4   ©r6   r4   )rU   Úcheck_shape)rO   rè  r   r   rY   rû   rB   rD   r.   rï  rF   rs   r-   r/   rŸ   )rM   rO   rè  r	  Úintegrs        rP   Útest_splintzTestInterop.test_splintB  s�  € à”˜œˆ2ˆå�˜q ! Q™œÝ˜q ! Q¤UÑ+Ô+°%À%ð	Iñ 	Iô 	Ið 	Iå�˜q ! Q™œØŸš A qÑ)Ô)°Àð	Gñ 	Gô 	Gð 	Gõ �:Ð-LÐMÑMÔMð 	ð 	Ý�1�a˜ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð Œd�nŠn˜Q  1Ñ%Ô%ˆÝ”�F 1 a¨"¬$°°R´TÐ):Ñ;Ô;Ñ<Ô<ˆØŒ|˜vÒ%Ð%Ð%Ð%Ý˜Ý˜q ! Q™œ¨eÀð	Hñ 	Hô 	Hð 	Hð 	Hð 	Hs   ÂB/Â/B3Â6B3c           	      ó®  — | j         | j        fD �]D}t          |j        ¦  «        t          |j        ¦  «        z
  }|j                             ¦   «         }|dk    r7t          j        |t          j        |f|j	        dd …         z   ¦  «        f         }dD ]¿}t          |¦  «        }t          j
        |j                             ¦   «         ||j        f¦  «        }t          |j        |d         d¬¦  «         t          |j        |d         d¬¦  «         |j        |d         k    sJ ‚t          |t          ¦  «        sJ ‚t          |t           ¦  «        sJ ‚ŒÀ�ŒFd S ©Nr   r)   rh   rS   rk   r4   )rO   rè  r-  r-   r.   râ  rF   r¥   ÚzerosrŸ   r   rü   r/   r   r  r   r  ©rM   rO   ÚctÚb_crN   ÚbdÚtck_ds          rP   Útest_splderzTestInterop.test_splderV  s?  € Ø”&˜$œ'Ð"ð 	0ñ 	0ˆAå�Q”S‘”�C ¤™HœHÑ$ˆBØ”#—(’(‘*”*ˆCØ�AŠvˆvÝ”e˜C¥¤¨2¨%°#´)¸A¸B¸B´-Ñ*?Ñ!@Ô!@Ð@ÔA�àð 0ð 0�Ý˜A‘Y”Y�Ýœ a¤c§h¢h¡j¤j°#°q´sÐ%;Ñ<Ô<�Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ø”t˜u QœxÒ'Ð'Ð'Ð'Ý! "¥gÑ.Ô.Ð.Ð.Ð.Ý! %­Ñ/Ô/Ð/Ð/Ð/Ð/ñ0ð	0ð 	0rf   c           	      ó®  — | j         | j        fD �]D}t          |j        ¦  «        t          |j        ¦  «        z
  }|j                             ¦   «         }|dk    r7t          j        |t          j        |f|j	        dd …         z   ¦  «        f         }dD ]¿}t          |¦  «        }t          j
        |j                             ¦   «         ||j        f¦  «        }t          |j        |d         d¬¦  «         t          |j        |d         d¬¦  «         |j        |d         k    sJ ‚t          |t          ¦  «        sJ ‚t          |t           ¦  «        sJ ‚ŒÀ�ŒFd S r  )rO   rè  r-  r-   r.   râ  rF   r¥   r  rŸ   r   rü   r/   r   r  r   r  r  s          rP   Útest_splantiderzTestInterop.test_splantiderg  s@  € Ø”&˜$œ'Ð"ð 	0ñ 	0ˆAå�Q”S‘”�C ¤™HœHÑ$ˆBØ”#—(’(‘*”*ˆCØ�AŠvˆvÝ”e˜C¥¤¨2¨%°#´)¸A¸B¸B´-Ñ*?Ñ!@Ô!@Ð@ÔA�àð 0ð 0�Ý ‘]”]�ÝÔ(¨!¬#¯(ª(©*¬*°c¸1¼3Ð)?Ñ@Ô@�Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ø”t˜u QœxÒ'Ð'Ð'Ð'Ý! "¥gÑ.Ô.Ð.Ð.Ð.Ý! %­Ñ/Ô/Ð/Ð/Ð/Ð/ñ0ð	0ð 	0rf   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          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          t          |j        j        ¦  «        ¦  «        }|j                             |dd …         dz   ¦  «        }	t          ||j        |	|j        f¦  «        }
t          ||¦  «        }t          t!          j        t          ||
¦  «        ¦  «                             ddd¦  «         ||¦  «        d¬¦  «         t          |t          ¦  «        sJ ‚t          |
t          ¦  «        sJ ‚d S )Nr4   rÂ   r)   rS   rk   rî  r   )rO   rè  rd   r-   rœ   r   r.   r/   r   r   r  r   r  rÎ   r  rï  rF   rs   )rM   rO   rè  rd   rï   ÚtnÚbnÚtck_nr  ró   Útck_n2Úbn2s               rP   r  zTestInterop.test_insertx  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å˜"�gÑ&Ô&Ð&Ð&Ð&Ý˜%¥Ñ'Ô'Ð'Ð'Ð'õ •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ð	-ñ 	-ô 	-ð 	-å˜#�wÑ'Ô'Ð'Ð'Ð'Ý˜&¥%Ñ(Ô(Ð(Ð(Ð(Ð(Ð(rf   N)r  r  r  ré  rð  rô  rø  rÿ  r  r  r  r  r  r  rz   rf   rP   rå  rå  ±  sÅ   € € € € € ð-ð -ð -ðHð Hð Hð6-ð -ð -ð0'ð 'ð 'ð Dð Dð Dð%ð %ð %ð:Cð Cð Cð"Hð Hð Hð(0ð 0ð 0ð"0ð 0ð 0ð")ð )ð )ð )ð )rf   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 )+Ú
TestInterpr8   r9   c                 ó˜   — t          t          ¦  «        5  t          | j        | j        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr=   rë   )rB   rC   r
   rd   r½   ©rM   s    rP   Útest_non_int_orderzTestInterp.test_non_int_orderš  s�   € Ý�9Ñ%Ô%ð 	8ð 	8Ý˜tœw¨¬°3Ð7Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   •?¿AÁ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ë   rj   rT   r2   ©r/   r  ©r
   rd   r½   r   rè   s     rP   Útest_order_0zTestInterp.test_order_0ž  ó€   € Ý˜tœw¨¬°1Ð5Ñ5Ô5ˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÝ˜tœw¨¬°1¸2Ð>Ñ>Ô>ˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÐDÐDrf   c                 ó  — t          | j        | j        d¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t          | j        | j        dd¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         d S )Nr)   rë   rj   rT   r2   r)  r*  rè   s     rP   Útest_linearzTestInterp.test_linear¤  r,  rf   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)   r4   r6   r7   rž   )r   r)   r4   r6   r7   rž   r™   rš   zShapes of xrì  rë   ©rB   rD   r
   ©rM   r/   rm   r‘   s       rP   Ú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)   r4   r6   r7   r0  zx to not have duplicatesrì  rë   )r   r4   r)   r6   r7   rž   zExpect x to be a 1D strictly)r)   r2   )rB   rD   r
   rF   rs   rt   r2  s       rP   Útest_broken_xzTestInterp.test_broken_x±  sÖ  € àÐÐˆØÐÐˆÝ�:Ð-GÐHÑHÔHð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ÐÐˆÝ�:Ð-KÐLÑLÔLð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ÐÐˆÝŒJ�q‰MŒM×!Ò! 'Ñ*Ô*ˆÝ�:Ð-KÐLÑLÔLð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s3   Ÿ>¾AÁAÁ#BÂBÂ	BÃC.Ã.C2Ã5C2c                 ó’   — dD ]C}t          | j        | j        |¦  «        }t           || j        ¦  «        | j        dd¬¦  «         ŒDd S )N©r4   r6   r7   rž   r™   rš   rj   rT   r*  )rM   r/   rO   s      rP   Útest_not_a_knotzTestInterp.test_not_a_knotÁ  sZ   € Ø#ð 	Ið 	IˆAÝ" 4¤7¨D¬G°QÑ7Ô7ˆAÝ˜A˜A˜dœg™JœJ¨¬°eÀ%ÐHÑHÔHÐHÐHð	Ið 	Irf   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)  rj   rT   r)   r   rÌ   r2   ç•dyáý¥=rk   ©r/   r*  r  )r
   rd   r½   r   rÎ   )rM   rO   rý   s      rP   Útest_periodiczTestInterp.test_periodicÆ  sB  € å˜tœw¨¬°1¸jÐIÑIÔIˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDõ �q˜!‘”ð 	Sð 	SˆAÝ˜A˜A˜dœg aœj¨QÐ/Ñ/Ô/°°°4´7¸2´;À1Ð1EÑ1EÔ1EÈEÐRÑRÔRÐRÐRå˜tœw¨¬°1¸jÈrÐRÑRÔRˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÝ�q˜!‘”ð 	Sð 	SˆAÝ˜A˜A˜dœg aœj¨QÐ/Ñ/Ô/°°°4´7¸2´;À1Ð1EÑ1EÔ1EÈEÐRÑRÔRÐRÐRð	Sð 	Srf   r7  c                 ó>  — d}t           j                             d¦  «        }t          j        |                     |¦  «        dz  ¦  «        }|                     |¦  «        dz  }|d         |d<   t          |||d¬¦  «        }t           ||¦  «        |d	¬
¦  «         d S )Nrž   r‹   r^   r”   r2   r   rÁ   r)  rj   rk   )rF   rL   rŽ   r�   r+  r
   r   )rM   r/   rN   r�   rm   r‘   rO   s          rP   Útest_periodic_randomzTestInterp.test_periodic_randomÔ  sž   € ð ˆÝŒi×#Ò# DÑ)Ô)ˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-Ñ.Ô.ˆØ×Ò˜aÑ Ô  3Ñ&ˆØ�Œuˆˆ!‰Ý˜q ! q°*Ð=Ñ=Ô=ˆÝ˜˜˜!™œ˜a eÐ,Ñ,Ô,Ð,Ð,Ð,rf   c                 ó’  — | j         j        d         }t          j                             d¦  «        }|                     |¦  «        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‹   r4   r8   r2   r)   rž   rÁ   r;  rj   rk   )rd   rŸ   rF   rL   rŽ   r+  rš  r�   r  rv  rx  r
   rÎ   r   )rM   rN   r�   rm   r‘   rO   rý   s          rP   Útest_periodic_axiszTestInterp.test_periodic_axisß  s.  € ØŒGŒM˜!ÔˆÝŒi×#Ò# DÑ)Ô)ˆØ×Ò˜aÑ Ô  1Ñ$¥r¤uÑ,ˆÝŒ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Ð6rf   c                 ó`  — t           j                             d¦  «        }d}d}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À   r2   r)   r   rÁ   r)  )rF   rL   rŽ   r�   r+  rB   rD   r
   )rM   r�   r/   rN   rm   r‘   s         rP   Útest_periodic_points_exceptionz)TestInterp.test_periodic_points_exceptionî  së   € åŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(Ñ)Ô)ˆØ×Ò˜aÑ Ô ˆØ�Œu�q‰yˆˆ!‰Ý�:Ñ&Ô&ð 	>ð 	>Ý˜q ! q°*Ð=Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s   ÂB#Â#B'Â*B'c                 óx  — t           j                             d¦  «        }d}d}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‹   r6   rš   r4   rÁ   )	rF   rL   rŽ   r�   r+  r  rB   rD   r
   )rM   r�   r/   rN   rm   r‘   r-   s          rP   Útest_periodic_knots_exceptionz(TestInterp.test_periodic_knots_exceptionù  sð   € åŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(Ñ)Ô)ˆØ×Ò˜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   ÂB/Â/B3Â6B3r£  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)r“  r/   rj   rk   r)   rÊ   rÌ   r¬   )r
   rd   r½   r   r   r   rÎ   )rM   r/   rO   rY   r"  rý   s         rP   Ú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¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?rf   c                 óB  — t          | j        | j        dd¬¦  «        }t          | j        | j        d¬¦  «        }t	           || j        ¦  «         || j        ¦  «        d¬¦  «         t
          j                             d¦  «        }d}t          j        | 	                    |¦  «        dz  ¦  «        }| 	                    |¦  «        d	z  }|d
         |d<   t          ||dd¬¦  «        }t          ||d¬¦  «        }t	           ||¦  «         ||¦  «        d¬¦  «         d S )Nr6   rÁ   r)  rL  rj   rk   r‹   r^   r”   r2   r   )
r
   rd   r½   r   r   rF   rL   rŽ   r�   r+  )rM   rO   Úcubr�   rN   rm   r‘   s          rP   Útest_periodic_cubiczTestInterp.test_periodic_cubic  s  € å˜tœw¨¬°1¸jÐIÑIÔIˆÝ˜$œ' 4¤7°JÐ?Ñ?Ô?ˆÝ˜˜˜$œ'™
œ
 C C¨¬¡L¤L°uÐ=Ñ=Ô=Ð=õ Œi×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-Ñ.Ô.ˆØ×Ò˜aÑ Ô  3Ñ&ˆØ�Œuˆˆ!‰Ý˜q ! q°*Ð=Ñ=Ô=ˆÝ˜!˜Q¨
Ð3Ñ3Ô3ˆÝ˜˜˜!™œ˜c˜c !™fœf¨5Ð1Ñ1Ô1Ð1Ð1Ð1rf   c                 ó:  ‡‡‡— dŠt          | j        | j        ‰d¬¦  «        }t          | j        ‰¦  «        Št	          | j        | j        ‰‰¦  «        Št          j        ˆˆˆfd„¦  «        }t           || j        ¦  «         || j        ¦  «        d¬¦  «         d S )Nr6   rÁ   r)  c                 ó(   •— t          | ‰‰‰¦  «        S r¹  r{   )rm   r.   r/   r-   s    €€€rP   rÈ  z6TestInterp.test_periodic_full_matrix.<locals>.<lambda>(  s   ø€ ¥K°°1°a¸Ñ$;Ô$;€ rf   rj   rk   )r
   rd   r½   r   r   rF   Ú	vectorizer   )rM   rO   r  r.   r/   r-   s      @@@rP   Ú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Ð<Ñ<Ô<Ð<Ð<Ð<rf   c                 óô  — dg}t          | j        | j        dd |f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t           || j        d         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	¬
¦  «         d S )N©r)   g       @r4   r)  rj   rT   r2   r)   r   F©rU   rV   r  r*  )rM   rË   rO   s      rP   Ú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ÝØˆAˆdŒg�bŒk˜1ÑÔ˜s 1œv aœy¨u¸5È5ð	
ñ 	
ô 	
ð 	
õ
 ˜tœw¨¬°1¸sÀD¸kÐJÑJÔJˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÝØˆAˆdŒg�aŒj˜!ÑÔ˜c !œf Qœi¨e¸%È%ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rf   c           	      ó0  — d}dgdg}}t          | j        | j        |||f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         t          t	          j         || j        d         d¦  «         || j        d	         d¦  «        g¦  «        t	          j        |d         d         |d         d         g¦  «        dd¬¦  «         d
gd
g}}t          | j        | j        |||f¬¦  «        }t           || j        ¦  «        | j        dd¬¦  «         d S )Nr6   ©r)   r:   )r)   r;   rL  rj   rT   r   r)   r2   ©r4   r   )r
   rd   r½   r   rF   rs   )rM   r/   Úder_lÚder_rrO   s        rP   Ú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Ý�œ
 A A d¤g¨a¤j°!Ñ$4Ô$4°a°a¸¼À¼ÀQÑ6GÔ6GÐ#HÑIÔIÝœ
 E¨!¤H¨Q¤K°°q´¸!´Ð#=Ñ>Ô>ÀUÐQVð	Xñ 	Xô 	Xð 	Xð �x & ˆuˆÝ˜tœw¨¬°¸UÀE¸NÐKÑKÔKˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÐDÐDrf   c           	      óŒ  — d\  }}t          j        |¦  «                             t           j        ¦  «        }t          j        |¦  «        }ddg}ddg}t          |||||f¬¦  «        }t           ||¦  «        |dd¬¦  «         t          t          j         ||d	         d
¦  «         ||d	         d¦  «        g¦  «        t          j        d„ |D ¦   «         ¦  «        ¦  «         t          t          j         ||d         d
¦  «         ||d         d¦  «        g¦  «        t          j        d„ |D ¦   «         ¦  «        ¦  «         d S )N)rž   rš   )r)   g      (À)r4   r)   rO  )r4   r:   r)  rj   rT   r   r)   r4   c                 ó   — g | ]\  }}|‘ŒS rz   rz   ©r~   rÍ   Úvals      rP   r   z2TestInterp.test_quintic_derivs.<locals>.<listcomp>T  ó   € Ð#?Ð#?Ð#?©I¨R° CÐ#?Ð#?Ð#?rf   r2   c                 ó   — g | ]\  }}|‘ŒS rz   rz   rZ  s      rP   r   z2TestInterp.test_quintic_derivs.<locals>.<listcomp>V  r\  rf   )rF   rJ   ÚastyperK   rv  r
   r   rs   )rM   r/   rN   rm   r‘   rU  rV  rO   s           rP   Útest_quintic_derivszTestInterp.test_quintic_derivsK  sJ  € Ø‰ˆˆ1ÝŒI�a‰LŒL×Ò¥¤
Ñ+Ô+ˆÝŒF�1‰IŒIˆØ˜FÐ#ˆØ˜'Ð"ˆÝ˜q ! q°5¸%°.ÐAÑAÔAˆÝ˜˜˜!™œ˜a e°%Ð8Ñ8Ô8Ð8Ý�œ
 A A a¨¤d¨A¡J¤J°°°!°A´$¸±
´
Ð#;Ñ<Ô<Ýœ
Ð#?Ð#?¸Ð#?Ñ#?Ô#?Ñ@Ô@ñ	Bô 	Bð 	Bå�œ
 A A a¨¤e¨Q¡K¤K°°°1°R´5¸!±´Ð#=Ñ>Ô>Ýœ
Ð#?Ð#?¸Ð#?Ñ#?Ô#?Ñ@Ô@ñ	Bô 	Bð 	Bð 	Bð 	Brf   Úunstable)Úreasonc                 óÈ   — d}t          | j        |¦  «        }ddg}t          | j        | j        |||d f¬¦  «        }t	           || j        ¦  «        | j        dd¬¦  «         d S )Nr6   rS  )r4   r;   rL  rj   rT   )r   rd   r
   r½   r   )rM   r/   r-   rU  rO   s        rP   Útest_cubic_deriv_unstablez$TestInterp.test_cubic_deriv_unstableX  sm   € ð ˆÝ�D”G˜QÑÔˆà˜'Ð"ˆÝ˜tœw¨¬°°AÀÀt¸}ÐMÑMÔMˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÐDÐDrf   c                 ó0  — 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¦  «        t          j        d
¦  «        d¬¦  «         t           || j        d         d¦  «        t          j        d
¦  «        d¬¦  «         d S )Nr4   r   r)   r2   r9   rT  rL  rj   rT   r8   rk   )rF   r¥   rd   r
   r½   r   rs   )rM   r/   r-   rO   s       rP   Útest_knots_not_data_sitesz$TestInterp.test_knots_not_data_sitesg  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Ý˜˜˜$œ' !œ* aÑ(Ô(­"¬*°S©/¬/ÀÐFÑFÔFÐFÝ˜˜˜$œ' "œ+ qÑ)Ô)­2¬:°c©?¬?ÀÐGÑGÔGÐGÐGÐGrf   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 )	Nr6   r8   r+   ©r)   r8   rS  rL  rj   rT   )r
   rF   r`   r   )rM   r/   rm   r‘   rO   rd   r½   s          rP   Útest_minimum_points_and_derivz(TestInterp.test_minimum_points_and_derivv  sy   € ð ˆØ�ˆHˆØ�ˆHˆÝ˜q ! Q°'°¸W¸IÐ0FÐGÑGÔGˆåŒ[˜˜RÑ Ô ˆØ�‰UˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:Ð:Ð:rf   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+   r4   r6   r7   rž   r™   rg  rL  é*   )rg  rg  r1  ©rM   rm   r‘   ÚlÚrs        rP   Ú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š   r4   )r™   r   ©r)   r   zBad boundary conditions at 0.rì  rL  )iúÿÿÿr   zBad boundary conditions at 6.)rF   rJ   rB   rD   r
   rk  s        rP   Útest_deriv_order_too_largez%TestInterp.test_deriv_order_too_large™  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	         ddd
¬¦  «         t           ||d         d	¦  «        |d         d	         ddd
¬¦  «         dD ]0}t          |||¬¦  «        }t           ||¦  «        |dd¬¦  «         Œ1d S )Nr6   r*   )r)   y              @)r)   y      @       @rL  rj   rT   r   r)   FrP  r2   )r   r)   rë   )rd   r½   r
   r   )rM   r/   rd   r½   rU  rV  rO   s          rP   r¡  zTestInterp.test_complex¦  s+  € ØˆØŒWˆØŒW�s˜4œ7‘{Ñ"ˆð !�z K =ˆuˆÝ˜r 2 q°5¸%°.ÐAÑAÔAˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝØˆAˆb�Œe�Q‰KŒK˜˜qœ !œ¨5°uÀuð	
ñ 	
ô 	
ð 	
õ 	ØˆAˆb�Œf�a‰LŒL˜% œ( 1œ+¨E¸Èð	
ñ 	
ô 	
ð 	
ð
 ð 	?ð 	?ˆAÝ" 2 r¨QÐ/Ñ/Ô/ˆAÝ˜A˜A˜b™EœE 2¨E¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?rf   c                 óú   — t          j        d¦  «                             t          ¦  «        }t          j        d¦  «                             t          ¦  «        }dD ]}t	          |||¬¦  «        } ||¦  «         Œ d S )Nr^   rØ   rë   )rF   rJ   r^  Úintr
   )rM   rm   r‘   r/   rO   s        rP   Útest_int_xyzTestInterp.test_int_xy»  sv   € ÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆð ð 	ð 	ˆAÝ" 1 a¨1Ð-Ñ-Ô-ˆAØˆAˆa‰DŒDˆDˆDð	ð 	rf   c                 óŒ   — t          j        ddd¦  «        }|d d d…         }|d d d…         }dD ]}t          |||¬¦  «         Œd S )Nr2   r)   r”   rž   rØ   rë   )rF   r`   r
   )rM   rd   rm   r‘   r/   s        rP   Útest_sliced_inputzTestInterp.test_sliced_inputÅ  sd   € åŒ[˜˜Q Ñ$Ô$ˆàˆsˆs�ˆsŒGˆØˆsˆs�ˆsŒGˆàð 	*ð 	*ˆAÝ˜q ! qÐ)Ñ)Ô)Ð)Ð)ð	*ð 	*rf   c                 óø   — t          j        d¦  «                             t          ¦  «        }|dz  }t           j        t           j        t           j         fD ]#}||d<   t          t          t          ||¦  «         Œ$d S )Nr^   r4   r2   )	rF   rJ   r^  ÚfloatrH   rI   rB   rD   r
   ©rM   rm   r‘   Úzs       rP   Útest_check_finitezTestInterp.test_check_finiteÏ  ss   € åŒI�b‰MŒM× Ò ¥Ñ'Ô'ˆØˆq‰Dˆå”&�"œ&¥2¤6 'Ð*ð 	@ð 	@ˆAØˆAˆb‰EÝ�*Õ&8¸!¸QÑ?Ô?Ð?Ð?ð	@ð 	@rf   )r)   r4   r6   rž   c                 óz   — t          t          d¦  «        ¦  «        }d„ |D ¦   «         }t          |||¬¦  «         d S )Nr^   c                 ó   — g | ]}|d z  ‘ŒS )r4   rz   )r~   Úas     rP   r   z.TestInterp.test_list_input.<locals>.<listcomp>Ü  s   € ÐÐÐ�aˆQ�‰TÐÐÐrf   rë   )ÚlistrÎ   r
   r2  s       rP   Útest_list_inputzTestInterp.test_list_inputØ  sC   € õ •�r‘”‰OŒOˆØÐ˜1ÐÑÔˆÝ˜1˜a 1Ð%Ñ%Ô%Ð%Ð%Ð%rf   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+   r9   r:   r;   r6   r)  rj   rT   r   r2   )rF   ró   rv  rd   rx  r
   r   )rM   r½   rU  rV  rO   s        rP   Ú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ÐOrf   c                 óâ  — t           j                             d¦  «        }d\  }}t          j        |                     |¬¦  «        ¦  «        }|                     |dddf¬¦  «        }t	          |||¦  «        }|j        j        |dddfk    sJ ‚d|                     d¦  «        fg}d|                     d¦  «        fg}t	          |||||f¬	¦  «        }|j        j        ||z   dz
  dddfk    sJ ‚d S )
Nr‹   ©r6   r˜   r›   rž   r™   rš   r)   ©rž   r™   rš   rL  )rF   rL   rŽ   r�   r
   r.   rŸ   )	rM   r�   r/   rN   rm   r‘   rO   Úd_lÚd_rs	            rP   Útest_shapeszTestInterp.test_shapesé  s   € ÝŒi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J A�JÑ&Ô&Ñ'Ô'ˆØ�JŠJ˜Q  1 a˜LˆJÑ)Ô)ˆå˜q ! QÑ'Ô'ˆØŒsŒy˜Q  1 a˜LÒ(Ð(Ð(Ð(ð �3—:’:˜iÑ(Ô(Ð)Ð*ˆØ�3—:’:˜iÑ(Ô(Ð)Ð*ˆÝ˜q ! Q°°c°
Ð;Ñ;Ô;ˆØŒsŒy˜Q ™U Q™Y¨¨1¨aÐ0Ò0Ð0Ð0Ð0Ð0Ð0rf   c                 ó"  — 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        | 
                    |¬¦  «        ¦  «        }	| 
                    |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 )Nr6   r5  r)  rT  rS   rk   )r5  r4  rp  r4   )Nr4  rg  r6  Útypor)   r8   r3  r‹   r…  r›   rž   r™   rš   r†  rL  r4  )rF   rv  rd   r
   r   r.   rB   rD   ró   rx  rL   rŽ   r�   r  )rM   r½   r  rè  rU  rV  r�   r/   rN   rm   r‘   r‡  rˆ  s                rP   Útest_string_aliaseszTestInterp.test_string_aliasesø  sj  € ÝŒ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¨Ð/Ñ/Ô/Ð/õ Œi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J A�JÑ&Ô&Ñ'Ô'ˆØ�JŠJ˜Q  1 a˜LˆJÑ)Ô)ˆð •2”8˜IÑ&Ô&Ð'Ð(ˆØ•2”8˜IÑ&Ô&Ð'Ð(ˆÝ  1 a°#°s°Ð<Ñ<Ô<ˆÝ  1 a°Ð;Ñ;Ô;ˆÝ˜œ˜bœd¨Ð/Ñ/Ô/Ð/Ð/Ð/s   Å)FÆFÆFc                 ób  — t           j                             d¦  «        }d\  }}t          j        |                     |¬¦  «        ¦  «        }|                     |¬¦  «        }t	          ||¦  «        }t          ||||¦  «        }t          ||||¦  «        }t          |j        |dd¬¦  «         d S )Nr‹   )r6   rš   r›   rj   rT   )	rF   rL   rŽ   r�   r   r
   Úmake_interp_full_matrr   r.   )	rM   r�   r/   rN   rm   r‘   r-   rO   r–  s	            rP   Útest_full_matrixzTestInterp.test_full_matrix+  s¤   € ÝŒi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J A�JÑ&Ô&Ñ'Ô'ˆØ�JŠJ˜AˆJÑÔˆÝ˜˜1ÑÔˆå˜q ! Q¨Ñ*Ô*ˆÝ" 1 a¨¨AÑ.Ô.ˆÝ˜œ˜R e°%Ð8Ñ8Ô8Ð8Ð8Ð8rf   c                 óV  — t           j                             d¦  «        }d}t          ddd¦  «        D �]ô}t	          |dz
  dz  ¦  «        }t          j        |                     d|f¦  «        ¦  «        }t          d|dz   ¦  «        D ]„}|d| …|d…fxx         t          j        |                     d||z
  f¦  «        ¦  «        z  cc<   ||d…d| …fxx         t          j        |                     d||z
  f¦  «        ¦  «        z  cc<   Œ…|                     ||f¦  «        }||d|…| d…f<   |                     ||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<   ŒG|                     |¦  «        }t          t          |	||||¦  «        t           j                             ||¦  «        d¬¦  «         �ŒödS )z­
        Random elements in diagonal matrix with blocks in the
        left lower and right upper corners checking the
        implementation of Woodbury algorithm.
        r‹   éÉ   r6   é    r4   r)   Nr2   r   )Úoffsetrj   rk   )rF   rL   rŽ   rÎ   rt  Údiagflatr  r®  Údiagonalr   r   ÚlinalgÚsolve)rM   r�   rN   r/   r“  r  rý   ÚurÚllÚdrï   rO   s               rP   Útest_woodburyzTestInterp.test_woodbury6  sX  € õ Œi×#Ò# DÑ)Ô)ˆØˆÝ�q˜"˜a‘”ð 	?ñ 	?ˆAÝ˜!˜a™% 1™Ñ%Ô%ˆFÝ”˜CŸJšJ¨¨1 vÑ.Ô.Ñ/Ô/ˆAÝ˜1˜f q™jÑ)Ô)ð Bð B�Ø�#�A�2�#�q�r�r�'�
�
”
�bœk¨#¯*ª*°a¸¸Q¹°ZÑ*@Ô*@ÑAÔAÑA�
�
‘
Ø�!�"�"�c˜�r�c�'�
�
”
�bœk¨#¯*ª*°a¸¸Q¹°ZÑ*@Ô*@ÑAÔAÑA�
�
‘
�
Ø—’˜V VÐ,Ñ-Ô-ˆBØ#%ˆAˆgˆvˆg˜�w�x�xÐÑ Ø—’˜V VÐ,Ñ-Ô-ˆ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Ø—
’
˜1‘”ˆAÝÕ/°°2°r¸1¸aÑ@Ô@ÝœIŸOšO¨A¨qÑ1Ô1¸ð?ñ ?ô ?ð ?ñ ?ð#	?ð 	?rf   N)-r  r  r  rF   r`   rš  rd   rv  r½   r'  r+  r.  rZ   rm  rn  r3  r5  r8  r<  r>  r@  rB  rD  rF  rI  rM  rQ  rW  r_  Úxfailrc  re  rh  rn  rq  r¡  ru  rw  r|  r�  rƒ  r‰  rŒ  r�  r›  rz   rf   rP   r$  r$  “  s  € € € € € ð 
ˆŒ�R˜˜BœE™Ñ	"Ô	"€BØ	ˆŒ�‰Œ€Bð8ð 8ð 8ðEð Eð EðEð Eð Eð „[×Ò˜S , , ,Ñ/Ô/ð*ð *ñ 0Ô/ð*ð „[×Ò˜S , , ,Ñ/Ô/ð*ð *ñ 0Ô/ð*ðIð Ið Ið
Sð Sð Sð „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð-ð -ñ 6Ô5ð-ð7ð 7ð 7ð	>ð 	>ð 	>ð	7ð 	7ð 	7ð „[×Ò˜S , , ,Ñ/Ô/ð
?ð 
?ñ 0Ô/ð
?ð2ð 2ð 2ð =ð =ð =ð
ð 
ð 
ð"Eð Eð EðBð Bð Bð „[×Ò˜jÐÑ)Ô)ðEð Eñ *Ô)ðEðHð Hð Hð
;ð 
;ð 
;ð5ð 5ð 5ð.5ð 5ð 5ð?ð ?ð ?ð*ð ð ð*ð *ð *ð@ð @ð @ð „[×Ò˜S , , ,Ñ/Ô/ð&ð &ñ 0Ô/ð&ðPð Pð Pð1ð 1ð 1ð10ð 10ð 10ðf	9ð 	9ð 	9ð?ð ?ð ?ð ?ð ?rf   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)   r@   )
rœ   rF   r  rK   rÎ   r»  r%   Úevaluate_all_bsplÚslr—  )rm   r‘   r-   r/   rN   ÚArï   rr  ÚleftÚbbr.   s              rP   rŽ  rŽ  S  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õ Ô'¨¨1¨d°DÑ9Ô9ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
ÑÐå
Œ��A‰Œ€AØ€Hrf   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)   r@   )ÚmaprF   rs   rœ   r  rK   rÎ   r»  r%   rž  ÚdotÚTrŸ  r—  )rm   r‘   r-   r/   r‚  rN   r   rï   rr  r¡  r¢  r  ÚYr.   s                 rP   Úmake_lsq_full_matrixr¨  o  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õ Ô'¨¨1¨d°DÑ9Ô9ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
ÑÐõ 	ŒˆqŒs�A‰Œ€AÝ
ŒˆqŒs�A‰Œ€AÝ
Œ��A‰Œ€Aàˆq�!ˆfˆ9Ðrf   Úmethodúnorm-eqÚqrc            	       ón  — e Zd Zej                             d¦  «        Zd\  ZZ ej	        e                     e¦  «        ¦  «        Z
e                     e¦  «        Z e ej        e
d         e
d         d¦  «        e¦  «        Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed	„ ¦   «         Zed
„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zej                             d e  e!dd¦  «        ¦  «        ¦  «        d„ ¦   «         Z"d„ Z#dS )ÚTestLSQr‹   )r  r6   r   r2   rš   c                 ó~  — | j         | j        | j        | j        f\  }}}}t	          ||||¦  «        \  }}t          |||||¬¦  «        }t          |j        |¦  «         |j        j        |j	        |z
  dz
  fk    sJ ‚|\  }	}
t          j                             |	|d¬¦  «        \  }}}}t          |j        |¦  «         d S )N©r©  r)   r2   )Úrcond)rm   r‘   r-   r/   r¨  r   r   r.   rŸ   rœ   rF   r–  Úlstsq)rM   r©  rm   r‘   r-   r/   Úc0ÚAYrO   Úaar½   rµ  r±   s                rP   Ú
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¨vÐ6Ñ6Ô6ˆå˜œ˜RÑ Ô Ð ØŒsŒy˜QœV a™Z¨!™^Ð-Ò-Ð-Ð-Ð-ð ‰ˆˆBÝ”i—o’o b¨!°2�oÑ6Ô6‰ˆˆAˆq�!Ý˜œ˜RÑ Ô Ð Ð Ð rf   c                 óR  — | j         | j        | j        | j        f\  }}}}t	          j        |¦  «        }t          |||||¬¦  «        }t          ||||||¬¦  «        }t          |j        |j        d¬¦  «         t          |j        |j        d¬¦  «         |j        |j        k    sJ ‚d S )Nr¯  ©Úwr©  rj   rk   )	rm   r‘   r-   r/   rF   ra   r   r   r.   )	rM   r©  rm   r‘   r-   r/   r¸  rO   Úb_ws	            rP   Útest_weightszTestLSQ.test_weights§  s¨   € ð ”V˜TœV T¤V¨T¬VÐ3‰
ˆˆ1ˆa�ÝŒL˜‰OŒOˆå˜A˜q ! Q¨vÐ6Ñ6Ô6ˆÝ˜a  A q¨A°fÐ=Ñ=Ô=ˆå˜œ˜SœU¨Ð/Ñ/Ô/Ð/Ý˜œ˜SœU¨Ð/Ñ/Ô/Ð/ØŒs�c”eŠ|ˆ|ˆ|ˆ|ˆ|ˆ|rf   c                 óº  — | j         | j        | j        | j        f\  }}}}t          j                             d¦  «                             |j        d         ¬¦  «        }t          |||||d¬¦  «        }t          |||||d¬¦  «        }t          ||||d¬¦  «        }t          |j        |j        d¬	¦  «         t	          j        |j        |j        d¬	¦  «        rJ ‚d S )
Nr‹   r   r›   rª  r·  r«  r¯  rj   rk   )rm   r‘   r-   r/   rF   rL   r‰  rŠ  rŸ   r   r   r.   rÓ   )	rM   rm   r‘   r-   r/   r¸  Úb_neÚb_qrÚb_no_ws	            rP   Útest_weights_samezTestLSQ.test_weights_same´  sØ   € à”V˜TœV T¤V¨T¬VÐ3‰
ˆˆ1ˆa�ÝŒI×!Ò! $Ñ'Ô'×/Ò/°Q´W¸Q´ZÐ/Ñ@Ô@ˆå˜q ! Q¨¨Q°yÐAÑAÔAˆÝ˜q ! Q¨¨Q°tÐ<Ñ<Ô<ˆÝ   A q¨!°DÐ9Ñ9Ô9ˆå˜œ ¤¨UÐ3Ñ3Ô3Ð3Ý”;˜vœx¨¬°eÐ<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<rf   c                 ó   — | j         | j        | j        | j        f\  }}}}t          j                             d¦  «        }|                     |dddf¬¦  «        }t          |||||¬¦  «        }|j        j	        |j
        |z
  dz
  dddfk    sJ ‚d S )Nr‹   rž   r™   rš   r›   r¯  r)   )rm   r-   r/   rN   rF   rL   rŽ   r   r.   rŸ   rœ   )	rM   r©  rm   r-   r/   rN   r�   r‘   rO   s	            rP   rƒ  zTestLSQ.test_multiple_rhsÀ  s–   € à”V˜TœV T¤V¨T¬VÐ3‰
ˆˆ1ˆa�ÝŒi×#Ò# DÑ)Ô)ˆØ�JŠJ˜Q  1 a˜LˆJÑ)Ô)ˆÝ˜A˜q ! Q¨vÐ6Ñ6Ô6ˆØŒsŒy˜QœV A™X a™Z¨¨A¨qÐ1Ò1Ð1Ð1Ð1Ð1Ð1rf   c                 óº  ‡‡‡‡	‡
‡— | j         | j        | j        | j        f\  Š
Š	Š}d}t          j                             d¦  «        }|                     ||f¬¦  «        Št          ‰
‰‰	‰‰¬¦  «        }ˆˆˆ	ˆ
ˆfd„t          |¦  «        D ¦   «         Št	          j	        ˆfd„t          |¦  «        D ¦   «         ¦  «        j
        }t          ||j        d¬¦  «         d S )	Nr6   r‹   r›   r¯  c           	      óL   •— g | ] }t          ‰‰d d …|f         ‰‰‰¬¦  «        ‘Œ!S )Nr¯  )r   )r~   rý   r/   r©  r-   rm   r‘   s     €€€€€rP   r   z/TestLSQ.test_multiple_rhs_2.<locals>.<listcomp>Ð  sH   ø€ ð $ð $ð $Øõ ˜a  1 1 1 a 4¤¨!¨Q°vÐ>Ñ>Ô>ð $ð $ð $rf   c                 ó*   •— g | ]}‰|         j         ‘ŒS rz   )r.   )r~   rý   r¢  s     €rP   r   z/TestLSQ.test_multiple_rhs_2.<locals>.<listcomp>Ò  s   ø€ Ð8Ð8Ð8 q˜2˜aœ5œ7Ð8Ð8Ð8rf   rS   rk   )rm   r-   r/   rN   rF   rL   rŽ   r   rÎ   Úvstackr¦  r   r.   )rM   r©  rN   Únrhsr�   rO   Úcoefsr¢  r/   r-   rm   r‘   s    `     @@@@@rP   Útest_multiple_rhs_2zTestLSQ.test_multiple_rhs_2È  sû   øøøøøø€ à”V˜TœV T¤V¨T¬VÐ3‰
ˆˆ1ˆa�ØˆÝŒi×#Ò# DÑ)Ô)ˆØ�JŠJ˜Q ˜IˆJÑ&Ô&ˆÝ˜A˜q ! Q¨vÐ6Ñ6Ô6ˆð$ð $ð $ð $ð $ð $ð $ð $Ý˜T‘{”{ð$ñ $ô $ˆå”	Ð8Ð8Ð8Ð8­E°$©K¬KÐ8Ñ8Ô8Ñ9Ô9Ô;ˆå˜˜qœs¨Ð/Ñ/Ô/Ð/Ð/Ð/rf   c                 ó  — | j         | j        | j        | j        f\  }}}}d}t          j                             ||f¬¦  «        }t          ||||d¬¦  «        }t          ||||d¬¦  «        }t          |j        |j        d¬¦  «         d S )Nr6   r›   r«  r¯  rª  rS   rk   )	rm   r-   r/   rN   rF   rL   r   r   r.   )	rM   rm   r-   r/   rN   rÅ  r‘   r½  Úb_neqs	            rP   Útest_multiple_rhs_3zTestLSQ.test_multiple_rhs_3Ö  s�   € Ø”V˜TœV T¤V¨T¬VÐ3‰
ˆˆ1ˆa�ØˆÝŒI×Ò 1 d )ÐÑ,Ô,ˆÝ˜q ! Q¨°$Ð7Ñ7Ô7ˆÝ  1 a¨°9Ð=Ñ=Ô=ˆÝ˜œ ¤¨eÐ4Ñ4Ô4Ð4Ð4Ð4rf   c                 ó8  — | j         | j        | j        }}}| j        dz  }t	          |||||¬¦  «        }t	          ||j        |||¬¦  «        }t	          ||j        |||¬¦  «        }t           ||¦  «         ||¦  «        d ||¦  «        z  z   dd¬¦  «         d S )Nù      ð?       @r¯  r*   rS   rT   )rm   r-   r/   r‘   r   rá   râ   r   )	rM   r©  rm   r-   r/   rC  rO   rä   rå   s	            rP   r¡  zTestLSQ.test_complexÞ  s­   € ð ”&˜$œ& $¤&ˆaˆ1ˆØŒV�xÑ ˆå˜A˜r 1 a°Ð7Ñ7Ô7ˆÝ˜q "¤'¨1¨a¸Ð?Ñ?Ô?ˆÝ˜q "¤'¨1¨a¸Ð?Ñ?Ô?ˆå˜˜˜!™œ˜d˜d 1™gœg¨¨D¨D°©G¬G©Ñ3¸%ÀeÐLÑLÔLÐLÐLÐLrf   c                 ót  — | j         | j        | j        }}}| j        dz  }t	          j        ||fd¬¦  «        }t          ||||¦  «        }t          ||j        ||¦  «        }t          ||j        ||¦  «        }t           ||¦  «         ||¦  «        d ||¦  «        z  z   dd¬¦  «         t	          j        ||fd¬¦  «        }t          ||||¦  «        }t          ||j        ||¦  «        }t          ||j        ||¦  «        }t           ||¦  «         ||¦  «        d ||¦  «        z  z   dd¬¦  «         d S )NrÌ  r)   r  r*   rS   rT   )
rm   r-   r/   r‘   rF   Ústackr   rá   râ   r   )rM   rm   r-   r/   rC  rO   rä   rå   s           rP   Útest_complex_2zTestLSQ.test_complex_2ê  sE  € ð ”&˜$œ& $¤&ˆaˆ1ˆØŒV�xÑ ˆÝŒX�r˜2�h QÐ'Ñ'Ô'ˆå˜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õ ŒX�r˜2�h QÐ'Ñ'Ô'ˆå˜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ÐLrf   c                 ó   — t          j        d¦  «                             t          ¦  «        }t          j        d¦  «                             t          ¦  «        }t	          |d¬¦  «        }t          |||d|¬¦  «         d S )Nr^   r)   rë   ©r/   r©  )rF   rJ   r^  rt  r   r   ©rM   r©  rm   r‘   r-   s        rP   ru  zTestLSQ.test_int_xy   sf   € åŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝ�A˜ˆO‰OŒOˆå˜˜1˜a 1¨VÐ4Ñ4Ô4Ð4Ð4Ð4rf   c                 ó   — t          j        dt           j        ¬¦  «        }t          j        dt           j        ¬¦  «        }t          |d¬¦  «        }t	          |||d|¬¦  «        }t	          |                     t          ¦  «        |                     t          ¦  «        |                     t          ¦  «        d|¬¦  «        }|dd …         |d d…         z   dz  }t           ||¦  «         ||¦  «        d¬	¦  «         d S )
Nr^   r@   r)   rë   rÑ  r2   r9   rS   rk   )rF   rJ   Úfloat32r   r   r^  ry  r   )rM   r©  rm   r‘   r-   Úspl_f32Úspl_f64Úx2s           rP   Útest_f32_xyzTestLSQ.test_f32_xy  sÝ   € åŒI�b¥¤
Ð+Ñ+Ô+ˆÝŒI�b¥¤
Ð+Ñ+Ô+ˆÝ�A˜ˆO‰OŒOˆÝ! ! Q¨¨Q°vÐ>Ñ>Ô>ˆÝ!Ø�HŠH•U‰OŒO˜QŸXšX¥e™_œ_¨a¯hªhµu©o¬oÀÈ6ð
ñ 
ô 
ˆð ���Œe�a˜˜˜”f‰n Ñ#ˆÝ˜˜ ™œ W W¨R¡[¤[°uÐ=Ñ=Ô=Ð=Ð=Ð=rf   c                 ó¦   — t          j        ddd¦  «        }|d d d…         }|d d d…         }t          |d¦  «        }t          |||d|¬¦  «         d S )Nr2   r)   r”   r6   rÑ  )rF   r`   r   r   )rM   r©  rd   rm   r‘   r-   s         rP   rw  zTestLSQ.test_sliced_input  sa   € õ Œ[˜˜Q Ñ$Ô$ˆàˆsˆs�ˆsŒGˆØˆsˆs�ˆsŒGˆÝ�A�q‰MŒMˆÝ˜˜1˜a 1¨VÐ4Ñ4Ô4Ð4Ð4Ð4rf   c           	      ó  — t          j        d¦  «                             t          ¦  «        }|dz  }t	          |d¦  «        }t           j        t           j        t           j         fD ]&}||d<   t          t          t          ||||¬¦  «         Œ'd S )Né   r4   r6   r2   r¯  )
rF   rJ   r^  ry  r   rH   rI   rB   rD   r   )rM   r©  rm   r‘   r-   r{  s         rP   Útest_checkfinitezTestLSQ.test_checkfinite  sˆ   € õ ŒI�b‰MŒM× Ò ¥Ñ'Ô'ˆØˆq‰DˆÝ�A�q‰MŒMˆå”&�"œ&¥2¤6 'Ð*ð 	Oð 	OˆAØˆAˆb‰EÝ�*¥o°q¸!¸QÀvÐNÑNÔNÐNÐNð	Oð 	Orf   c                 óÚ   — | j         | j        | j        }}}|                     d¬¦  «         |                     d¬¦  «         |                     d¬¦  «         t	          ||||¬¦  «         d S )NFrX  )rm   r‘   r-   r©  )rm   r‘   r-   rZ  r   rÒ  s        rP   r[  zTestLSQ.test_read_only*  sp   € ð ”&˜$œ& $¤&ˆaˆ1ˆØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐÝ˜!˜q A¨fÐ5Ñ5Ô5Ð5Ð5Ð5rf   r/   r)   c                 óJ  — | j         | j        }}t          t          j        |d         |d         d¦  «        |¦  «        }t          ||||d¬¦  «        }t          ||||d¬¦  «        }|dd …         |d d…         z   dz  }t           ||¦  «         ||¦  «        d	¬
¦  «         d S )Nr   r2   rš   rª  rÑ  r«  r)   r9   rS   rk   )rm   r‘   r   rF   r`   r   r   )rM   r/   rm   r‘   r-   Úspl_norm_eqÚspl_qrrd   s           rP   Útest_qr_vs_norm_eqzTestLSQ.test_qr_vs_norm_eq3  s¯   € ð Œv�t”vˆ1ˆÝ•B”K  !¤ a¨¤e¨QÑ/Ô/°Ñ3Ô3ˆÝ% a¨¨A°¸9ÐEÑEÔEˆÝ   A q¨A°dÐ;Ñ;Ô;ˆà���Œe�a˜˜˜”f‰n Ñ#ˆÝ˜˜ B™œ¨¨°©¬¸%Ð@Ñ@Ô@Ð@Ð@Ð@rf   c                 ó^  — t          j        | j        d¦  «        }t          j        | j        d¦  «        }t	          | j        | j        | j        dd¬¦  «        }t	          ||| j        dd¬¦  «        }|dd …         |d d…         z   dz  }t           ||¦  «         ||¦  «        d¬	¦  «         d S )
Nr4   r6   r«  rÑ  r)   r2   r9   rS   rk   )rF   Úrepeatrm   r‘   r   r-   r   )rM   rm   r‘   rz  Úspl_2rd   s         rP   Útest_duplicateszTestLSQ.test_duplicates>  s©   € åŒI�d”f˜aÑ Ô ˆÝŒI�d”f˜aÑ Ô ˆÝ ¤¨¬°´¸!ÀDÐIÑIÔIˆÝ  1 d¤f°¸$Ð?Ñ?Ô?ˆà���Œe�a˜˜˜”f‰n Ñ#ˆÝ˜˜˜b™	œ	 5 5¨¡9¤9°5Ð9Ñ9Ô9Ð9Ð9Ð9rf   N)$r  r  r  rF   rL   rŽ   r�   rN   r/   r�   rm   r‘   r   r`   r-   Úparametrize_lsq_methodsrµ  rº  r¿  rƒ  rÇ  rÊ  r¡  rÏ  ru  rØ  rw  rÜ  r[  rZ   rm  rn  r€  rÎ   rá  rå  rz   rf   rP   r­  r­  �  s'  € € € € € ð Œ)×
Ò
 Ñ
%Ô
%€CØ�D€A€qØˆŒ�—
’
˜1‘”ÑÔ€AØ�
Š
�1‰Œ€AØˆ��”˜A˜aœD ! B¤%¨Ñ+Ô+¨QÑ/Ô/€Aàð!ð !ñ Ôð!ð ð
ð 
ñ Ôð
ð
=ð 
=ð 
=ð ð2ð 2ñ Ôð2ð ð0ð 0ñ Ôð0ð5ð 5ð 5ð ð	Mð 	Mñ Ôð	MðMð Mð Mð, ð5ð 5ñ Ôð5ð ð
>ð 
>ñ Ôð
>ð ð5ð 5ñ Ôð5ð ðOð Oñ ÔðOð ð6ð 6ñ Ôð6ð „[×Ò˜S $ $ u u¨Q°¡{¤{Ñ"3Ô"3Ñ4Ô4ðAð Añ 5Ô4ðAð:ð :ð :ð :ð :rf   r­  c                   ó4   — e Zd ZdZd„ Zed„ ¦   «         Zd„ ZdS )ÚPackedMatrixas  A simplified CSR format for when non-zeros in each row are consecutive.

    Assuming that each row of an `(m, nc)` matrix 1) only has `nz` non-zeros, and
    2) these non-zeros are consecutive, we only store an `(m, nz)` matrix of
    non-zeros and a 1D array of row offsets. This way, a row `i` of the original
    matrix A is ``A[i, offset[i]: offset[i] + nz]``.

    c                 ó    — || _         || _        || _        |j        dk    sJ ‚|j        dk    sJ ‚|j        d         |j        d         k    sJ ‚d S )Nr4   r)   r   )r  r“  Úncr  rŸ   )rM   r  r“  rê  s       rP   Ú__init__zPackedMatrix.__init__R  s\   € ØˆŒØˆŒØˆŒàŒv˜Š{ˆ{ˆ{ˆ{ØŒ{˜aÒÐÐÐØŒw�qŒz˜Vœ\¨!œ_Ò,Ð,Ð,Ð,Ð,Ð,rf   c                 ó4   — | j         j        d         | j        fS )Nr   )r  rŸ   rê  r&  s    rP   rŸ   zPackedMatrix.shape[  s   € àŒvŒ|˜AŒ ¤Ð'Ð'rf   c                 ó>  — t          j        | j        ¦  «        }| j        j        d         }t	          |j        d         ¦  «        D ]V}t          | j        | j        |         z
  |¦  «        }| j        |d |…f         ||| j        |         | j        |         |z   …f<   ŒW|S )Nr)   r   )rF   r  rŸ   r  rÎ   Úminrê  r“  )rM   ÚoutÚnelemrý   Únels        rP   ÚtodensezPackedMatrix.todense_  s–   € ÝŒh�t”zÑ"Ô"ˆØ””˜Q”ˆÝ�s”y ”|Ñ$Ô$ð 	Jð 	JˆAÝ�d”g ¤¨A¤Ñ.°Ñ6Ô6ˆCØ:>¼&ÀÀDÀSÀDÀ¼/ˆC��4”;˜q”> $¤+¨a¤.°3Ñ"6Ð6Ð6Ñ7Ð7Øˆ
rf   N)r  r  r  Ú__doc__rë  ÚpropertyrŸ   rò  rz   rf   rP   rè  rè  I  sW   € € € € € ðð ð-ð -ð -ð ð(ð (ñ „Xð(ðð ð ð ð rf   rè  r)   c                 ó|  — ddl m} | j        }| j        }| j        }|j        \  }}|j        d         |k    sJ ‚|                     ¦   «         }	|                     ¦   «         }
t          ||¦  «        D ]ò}||         }t          ||¦  «        D ]×}|t          ||¦  «        k    r nÀ ||	|df         |	|df         ¦  «        \  }}}||	|df<   t          d|¦  «        D ]4}t          |||	||f         |	||f         ¦  «        \  |	||f<   |	||dz
  f<   Œ5d|	|df<   t          |
j        d         ¦  «        D ]1}t          |||
||f         |
||f         ¦  «        \  |
||f<   |
||f<   Œ2ŒØŒót          t          |	j        d         ¦  «        ¦  «        }t          |	t          j        |t          j        ¬¦  «        |¦  «        }||
fS )zjThis is a python counterpart of the `_qr_reduce` routine,
    declared in interpolate/src/__fitpack.h
    r   )Údlartgr)   r8   r2   r@   )Úscipy.linalg.lapackrö  r  r“  rê  rŸ   râ  rÎ   rî  Úfprotar€  rè  rF   r!  Úint64)Úa_pr‘   Ústartrowrö  r  r“  rê  r‚  ÚnzÚRr{  rý   Úoirï   r.   rÄ  rm  rl  ÚoffsÚR_ps                       rP   Ú_qr_reduce_pyr  h  sþ  € ð +Ð*Ð*Ð*Ð*Ð*ð 	Œ€AØŒZ€FØ	Œ€BàŒG�E€A€ràŒ7�1Œ:˜Š?ˆ?ˆ?ˆ?Ø	�Š‰Œ€AØ	
�Š‰Œ€Bå�8˜QÑÔð Fð FˆØ�AŒYˆÝ�r˜2‘”ð 	Fð 	FˆAà•C˜˜2‘J”JŠˆØ�ð �f˜Q˜q !˜tœW a¨¨1¨¤gÑ.Ô.‰GˆAˆq�!ð ˆAˆa�ˆd‰GÝ˜1˜b‘\”\ð Dð D�Ý%+¨A¨q°!°A°q°D´'¸1¸QÀ¸T¼7Ñ%CÔ%CÑ"��!�Q�$‘˜˜1˜a ™c˜6™˜ØˆAˆa�ˆe‰Hõ ˜2œ8 Aœ;Ñ'Ô'ð Fð F�Ý%+¨A¨q°"°Q¸°T´(¸B¸qÀ!¸t¼HÑ%EÔ%EÑ"��1�a�4‘˜"˜Q ˜T™(˜(ðFøõ •�a”g˜a”jÑ!Ô!Ñ"Ô"€DÝ
�q�"œ( 4­r¬xÐ8Ñ8Ô8¸"Ñ
=Ô
=€Cà�ˆ7€Nrf   c                 ó8   — | |z  ||z  z   }| |z  | |z  z   }||fS )zLGivens rotate [a, b].

    [aa] = [ c s] @ [a]
    [bb]   [-s c]   [b]

    rz   )r.   rÄ  r  rO   r´  r¢  s         rP   rø  rø  ”  s1   € ð ˆA‰#��!‘‰)€BØ
ˆˆA‰��!‘‰€BØˆrˆ6€Mrf   c                 óÞ  — | j         }|j        \  }}| j        }|j        d         |j        d         k    sJ ‚t          j        |d|…         ¦  «        }||dz
           ||dz
  df         z  ||dz
  df<   t          |dz
  dd¦  «        D ]d}t          |||z
  ¦  «        }||d|…df         ||dz   ||z   …df         z                       d¬¦  «        }	||         |	z
  ||df         z  ||df<   Œe|S )z€Backsubsitution solve upper triangular banded `R @ c = y.`

    `R` is in the "packed" format: `R[i, :]` is `a[i, i:i+k+1]`
    r   Nr)   .r4   r2   r  )r  rŸ   rê  rF   rÏ   rÎ   rî  r¼  )
r   r‘   rý  r±   rü  rê  r.   rý   rñ  Úsumms
             rP   Úfpbackr     s  € ð
 	Œ€AØŒG�E€A€rØ	Œ€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#å
Œ�a˜˜˜”fÑÔ€AØ�R˜‘T”7˜Q˜r !™t Q˜wœZÑ'€A€bˆ�dˆC€i�LÝ�2�a‘4˜˜RÑ Ô ð .ð .ˆÝ�"�b˜‘d‰mŒmˆà�!�Q�s�U˜D�.Ô! A a¨¡c¨!¨C©% i° nÔ$5Ñ5×:Ò:ÀÐ:ÑBÔBˆØ˜”d˜T‘k a¨¨1¨¤gÑ-ˆˆ!ˆSˆ&‰	ˆ	Ø€Hrf   c                   ó,   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestGivensQRc                 ó„   — d}t          j        |t          ¬¦  «        }|dz  dd|z   z  z   }t          ||¦  «        }||||fS )Nr6   r@   r)   )rF   rJ   ry  r   )rM   rN   r/   rm   r‘   r-   s         rP   Ú_get_xytzTestGivensQR._get_xyt·  sM   € ØˆÝŒI�a�uÐ%Ñ%Ô%ˆØˆq‰D�1�a˜‘c‘7‰NˆÝ˜˜1ÑÔˆØ�!�Q˜ˆzÐrf   c                 óZ  — d}|                       |¦  «        \  }}}}t          j        |||¦  «        }t          j        |                     ¦   «         ¦  «        \  }}|j        |z  }	|j        \  }
}||j        d         |z
  dz
  k    sJ ‚|j        d d |dz   …         }t          j
        |t          j        ¬¦  «        }|j                             |
|dz   ¦  «        }t          |||¦  «        }|d d …d f         }t          j        ||||¦  «         t#          t          j        |                     ¦   «         |z   |                     ¦   «         |z
  ¦  «        t          j        |¦  «        d¬¦  «         t#          t          j        t)          |	|d d …df         z
  ¦  «        t)          |	|d d …df         z   ¦  «        ¦  «        t          j        |	¦  «        d¬¦  «         t          j        ||	¦  «        }t          j        |j        |j        |¦  «        }t#          ||d d …df         d¬¦  «         d S )	Nr^   r   r)   r@   rS   rk   g‚vIhÂ%L=çê-�™—a=)r	  r   r.  rŸ  r«  rò  r¦  rŸ   ÚindicesrF   Úascontiguousarrayrù  Údatart   rè  r%   Ú	qr_reducer   ÚminimumrÏ   Úabsr—  r  r  rê  )rM   rN   rm   r‘   r-   r/   Úa_csrÚqrm  ÚqTyr‚  rê  r“  r   rý  Úy_Úc_fullÚc_bandeds                     rP   Útest_vs_fullzTestGivensQR.test_vs_full¾  s"  € ØˆØ—]’] 1Ñ%Ô%‰
ˆˆ1ˆa�õ Ô% a¨¨AÑ.Ô.ˆõ Œu�U—]’]‘_”_Ñ%Ô%‰ˆˆ1ØŒc�A‰gˆð ”‰ˆˆ2Ø�Q”W˜Q”Z !‘^ aÑ'Ò'Ð'Ð'Ð'à”˜w˜w ! A¡#˜wÔ'ˆÝÔ% fµB´HÐ=Ñ=Ô=ˆØŒJ×Ò˜q ! A¡#Ñ&Ô&ˆå˜˜F BÑ'Ô'ˆØˆqˆqˆq�$ˆwŒZˆÝÔ˜1˜f b¨"Ñ-Ô-Ð-õ 	�œ
 1§9¢9¡;¤;°¡?Ø#$§9¢9¡;¤;°¡?ñ4ô 4Ý57´]À1Ñ5EÔ5EÈEð	Sñ 	Sô 	Sð 	Så�œ
¥3 s¨R°°°°1°¬X¡~Ñ#6Ô#6Ý#& s¨R°°°°1°¬X¡~Ñ#6Ô#6ñ8ô 8Ý9;¼ÀsÑ9KÔ9KÐRWð	Yñ 	Yô 	Yð 	Yõ ”˜!˜SÑ!Ô!ˆÝ”? 1¤3¨¬¨bÑ1Ô1ˆÝ˜ ¨¨¨¨A¨¤°UÐ;Ñ;Ô;Ð;Ð;Ð;rf   c                 ó˜  — d}|                       |¦  «        \  }}}}t          j        |||¦  «        }|j        \  }}||j        d         |z
  dz
  k    sJ ‚|j        d d |dz   …         }	t          j        |	t
          j        ¬¦  «        }	|j         	                    ||dz   ¦  «        }
t          |
|	|¦  «        }|d d …d f         }t          ||¦  «        \  }}t          j        |
|	||¦  «         t          |j        |j        d¬¦  «         t!          |j        |j        d¬¦  «         |j        |j        k    sJ ‚t          ||d¬¦  «         d S )	Nr^   r   r)   r@   rS   rk   F)Úcheck_dtype)r	  r   r.  rŸ   r  rF   r  rù  r  rt   rè  r  r%   r  r   r  r   r“  rê  )rM   rN   rm   r‘   r-   r/   r  r‚  rê  r“  r   rý  r  ÚRRr½   s                  rP   Útest_py_vs_compiledz TestGivensQR.test_py_vs_compiledá  sS  € àˆØ—]’] 1Ñ%Ô%‰
ˆˆ1ˆa�õ Ô% a¨¨AÑ.Ô.ˆØ”‰ˆˆ2Ø�Q”W˜Q”Z !‘^ aÑ'Ò'Ð'Ð'Ð'à”˜w˜w ! A¡#˜wÔ'ˆÝÔ% fµB´HÐ=Ñ=Ô=ˆØŒJ×Ò˜q ! A¡#Ñ&Ô&ˆå˜˜F BÑ'Ô'ˆØˆqˆqˆq�$ˆwŒZˆå˜q "Ñ%Ô%‰ˆˆBÝÔ˜1˜f b¨2Ñ.Ô.Ð.å˜œ˜aœc¨Ð.Ñ.Ô.Ð.Ý˜œ	 1¤8¸Ð?Ñ?Ô?Ð?ØŒu˜œŠ}ˆ}ˆ}ˆ}Ý˜˜B UÐ+Ñ+Ô+Ð+Ð+Ð+rf   c                 óN  — d}|                       |¦  «        \  }}}}t          j        d|dz   t          ¬¦  «        }t	          j        ||||¦  «        \  }}}	|j        d         }
t          j        |||¦  «        }||d d …d f         z   	                    ¦   «         }|j
                             |
|dz   f¦  «        }|j        d d |dz   …                              t          j        ¦  «        }t          ||d¬¦  «         t!          ||¦  «         |	|j        d         |z
  dz
  k    sJ ‚d S )Nr^   r)   r@   r   rS   rk   )r	  rF   rJ   ry  r%   Údata_matrixrŸ   r   r.  Útocsrr  rt   r  r^  rù  r   r   )rM   rN   rm   r‘   r-   r/   r¸  r   r“  rê  r‚  r  Úa_wÚA_Úoffset_s                  rP   Útest_data_matrixzTestGivensQR.test_data_matrixü  s%  € ØˆØ—]’] 1Ñ%Ô%‰
ˆˆ1ˆa�ÝŒI�a˜˜1™¥EÐ*Ñ*Ô*ˆå Ô,¨Q°°1°aÑ8Ô8‰ˆˆ6�2àŒG�AŒJˆÝÔ% a¨¨AÑ.Ô.ˆØ�q˜˜˜˜D˜”zÑ!×(Ò(Ñ*Ô*ˆØŒX×Ò˜q ! A¡#˜hÑ'Ô'ˆØ”+˜g˜g  1¡˜gÔ&×-Ò-­b¬hÑ7Ô7ˆå˜˜2 EÐ*Ñ*Ô*Ð*Ý˜ Ñ(Ô(Ð(Ø�Q”W˜Q”Z !‘^ aÑ'Ò'Ð'Ð'Ð'Ð'Ð'rf   c                 ó†  — d}|                       |¦  «        \  }}}}t          j        ||dz  f         }t          j        |||t          j        |¦  «        ¦  «        \  }}}t          |||¦  «        }	t          j        ||||¦  «         t          |	|¦  «        }
t          j        |||¦  «        }t          ||
d¬¦  «         d S )Nr^   r4   rj   rk   )
r	  rF   ró   r%   r  ra   rè  r  r  r   )rM   rN   rm   r‘   r-   r/   r   r“  rê  rý  r.   rã   s               rP   Útest_fpbackzTestGivensQR.test_fpback  sº   € ØˆØ—]’] 1Ñ%Ô%‰
ˆˆ1ˆa�ÝŒE�!�Q˜‘T�'ŒNˆÝ Ô,¨Q°°1µb´lÀ1±o´oÑFÔF‰ˆˆ6�2Ý˜˜F BÑ'Ô'ˆÝÔ˜1˜f b¨!Ñ,Ô,Ð,å�1�a‰LŒLˆÝŒ_˜Q  AÑ&Ô&ˆå˜˜A EÐ*Ñ*Ô*Ð*Ð*Ð*rf   N)r  r  r  r	  r  r  r#  r%  rz   rf   rP   r  r  ´  s`   € € € € € ðð ð ð!<ð !<ð !<ðF,ð ,ð ,ð6(ð (ð (ð"+ð +ð +ð +ð +rf   r  c                 óÂ   — t           j                             t           j                             t           j                             t
          ¦  «        ¦  «        d| ¦  «        S )Nr  )ÚosÚpathrf  ÚabspathÚdirnameÚ__file__)Úbasenames    rP   Ú	data_filer-    s=   € ÝŒ7�<Š<�œŸš­¬¯ª½Ñ(AÔ(AÑBÔBØ ñ*ô *ð *rf   c                   óf   — e Zd Zd„ Zd„ Zd„ Zej                             d¦  «        d„ ¦   «         Z	dS )ÚTestSmoothingSplinec                 óä  — t           j                             d¦  «        }d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   |                     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”   r7   r4   r6   r8   rù   r)   r2   r   z)``x`` and ``y`` length must be at least 5rì  )rF   rL   rŽ   r�   r+  rv  ÚnormalrB   rD   r   rt   râ  rJ   r¤  rZ   r   )rM   r�   rN   rm   r‘   Úx_duplÚexception_messages          rP   Útest_invalid_inputz&TestSmoothingSpline.test_invalid_input$  s¬  € ÝŒi×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨1Ñ,¨qÑ0Ñ1Ô1ˆØˆq‰D•2”6˜!˜a™%‘=”=Ñ  1 a¡4Ñ'¨#¯*ª*°R¸¸aÑ*@Ô*@Ñ@ˆõ �:Ñ&Ô&ð 	,ð 	,Ý! ! 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   ÂCÃCÃ
CÃ"DÄDÄDÄ&%EÅEÅEÅ6FÆF Æ#F ÇG7Ç7G;Ç>G;ÉI%É%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¬¦  «         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.npzrm   r‘   Úy_GCVSPLNg-Cëâ6?F)rU   rV   r  )rF   Úloadr-  r   r   )rM   r  rm   r‘   r6  Úy_comprs         rP   Útest_compare_with_GCVSPLz,TestSmoothingSpline.test_compare_with_GCVSPLC  sÈ   € õR ŒW•Y˜|Ñ,Ô,Ñ-Ô-ð 	(°à�S”	ˆAØ�S”	ˆAà˜JÔ'ˆHð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð .Õ'¨¨1Ñ-Ô-¨aÑ0Ô0ˆõ 	˜ °¸4ÈUÐSÑSÔSÐSÐSÐSs   ¢AÁAÁAc                 óô  — t           j                             d¦  «        }d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   |                     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”   r7   r4   r6   r8   rù   )Úlamr5  rL  r   r2   rS   rk   N)rF   rL   rŽ   r�   r+  rv  r1  r   r
   r`   r   )rM   r�   rN   rm   r‘   Ú
spline_GCVÚspline_interpÚgrids           rP   Útest_non_regularized_casez-TestSmoothingSpline.test_non_regularized_case{  s  € õ Œi×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨1Ñ,¨qÑ0Ñ1Ô1ˆØˆq‰D•2”6˜!˜a™%‘=”=Ñ  1 a¡4Ñ'¨#¯*ª*°R¸¸aÑ*@Ô*@Ñ@ˆå*¨1¨a°RÐ8Ñ8Ô8ˆ
Ý*¨1¨a°¸IÐFÑFÔFˆåŒ{˜1˜Qœ4  2¤¨¨A©Ñ.Ô.ˆÝ˜
˜
 4Ñ(Ô(Ø%˜ dÑ+Ô+Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rf   r4   c                 ó°  — t           j                             d¦  «        }d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   |                     dd|¦  «        z   }t          ||¦  «        }|                     t          d¦  «        d¬	¦  «        D ]—}t          j
        |¦  «        }d
||<   t          |||¦  «        }t           |||         ¦  «        ||         z
  ¦  «        }	t           |||         ¦  «        ||         z
  ¦  «        }
|	|
k     rt          d|	d›d|
d›�¦  «        ‚Œ˜d S )Nr‹   r”   r7   r4   r6   r8   rù   r^   r›   g      >@zJSpline with weights should be closer to the points than the original one: z.4z < )rF   rL   rŽ   r�   r+  rv  r1  r   ÚchoicerÎ   r¤  r  rD   )rM   r�   rN   rm   r‘   r"  Úindr¸  Úspl_wÚorigÚweighteds              rP   Útest_weighted_smoothing_splinez2TestSmoothingSpline.test_weighted_smoothing_splineŽ  so  € õ Œi×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨1Ñ,¨qÑ0Ñ1Ô1ˆØˆq‰D•2”6˜!˜a™%‘=”=Ñ  1 a¡4Ñ'¨#¯*ª*°R¸¸aÑ*@Ô*@Ñ@ˆå# A qÑ)Ô)ˆð —:’:�e C™jœj¨r�:Ñ2Ô2ð 	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ð 	3rf   N)
r  r  r  r4  r9  r?  rZ   rm  Ú	fail_slowrF  rz   rf   rP   r/  r/     sq   € € € € € ð(ð (ð (ð>6Tð 6Tð 6Tðp$ð $ð $ð& „[×Ò˜1ÑÔð3ð 3ñ Ôð3ð 3ð 3rf   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 ¦   «         ¦  «        }t          j        |¦  «        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  )
r~   ÚixÚiyr.   r/   ÚnyÚtxÚtyrm   r‘   s
      €€€€€€€rP   rº  zbspline2.<locals>.<genexpr>³  s{   øè è € ð 7ð 7Ø­E°"©I¬Ið7ð 7Ø&(ð ��B�Œi�!˜A˜q " b™/œ/Ñ)­A¨a°°B¸©O¬OÑ;ð 7ð 7ð 7ð 7ð 7ð 7ð 7rf   )r-  r¼  rÎ   rF   rs   )rÃ   r-   r.   r/   Únxr	  rL  rM  rN  rm   r‘   s     ``  @@@@@rP   Úbspline2rP  «  sÊ   øøøøøøø€ à�D€A€qØ�F€BˆÝ	ˆR‰Œ�1‰�q‰€BØ�!�A‘#ŠIˆIˆIˆIÝ	ˆR‰Œ�1‰�q‰€BØ�!�A‘#ŠIˆIˆIˆIÝ
ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7Ý˜b™	œ	ð7ñ 7ô 7ñ 7ô 7€CåŒ:�c‰?Œ?Ðrf   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+   r8   ©r  r´  s         rP   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€Nrf   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¹  rR  r¿  s     €€€€rP   rº  zbspline.<locals>.<genexpr>É  s8   øè è € Ð6Ð6¨ˆq�Œt•a˜˜1˜a ‘m”mÑ#Ð6Ð6Ð6Ð6Ð6Ð6rf   rÀ  rÁ  s   ```` rP   r?  r?  Æ  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Ð6rf   c                   ó   — e Zd Zdd„Zd„ ZdS )Ú
NdBSpline0r6   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)r~   Úkis     rP   rº  z&NdBSpline0.__init__.<locals>.<genexpr>å  s,   è è € Ð6Ð6¨b•x”~ bÑ)Ô)Ð6Ð6Ð6Ð6Ð6Ð6rf   c              3   óL   K  — | ]}t          j        |t          ¬ ¦  «        V — Œ dS )r@   N)rF   rs   ry  )r~   Útis     rP   rº  z&NdBSpline0.__init__.<locals>.<genexpr>æ  s1   è è € Ð?Ð?°r•r”z "­EÐ2Ñ2Ô2Ð?Ð?Ð?Ð?Ð?Ð?rf   N)r-  rŸ   rC   r  r/   r-   r.   )rM   r-   r.   r/   r  s        rP   rë  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  }ŒEt	          j        |¦  «        S )NÚnoner)   r   c                 ój   •— g | ]/}t          ‰|         ‰j        |         z
  ‰|         d z   ¦  «        ‘Œ0S ©r)   )rÎ   r/   )r~   rš  rý   rM   s     €€rP   r   z'NdBSpline0.__call__.<locals>.<listcomp>	  s:   ø€ ÐHÐHÐH°q•�q˜”t˜dœf QœiÑ'¨¨1¬°©Ñ2Ô2ÐHÐHÐHrf   c           	      óx   •— g | ]6}t          ‰|         ‰j        |         ‰|         ‰j        |         ¦  «        ‘Œ7S rz   )r  r/   r-   )r~   rš  ÚidxrM   rm   s     €€€rP   r   z'NdBSpline0.__call__.<locals>.<listcomp>	  sQ   ø€ ð *@ð *@ð *@Ø./õ +,¨A¨a¬D°$´&¸´)¸SÀ¼VÀTÄVÈAÄYÑ*OÔ*Oð *@ð *@ð *@rf   )r-  r-   rÎ   r/   rF   r»  r  Ú	itertoolsÚproductr.   Úprodrs   )rM   rm   r  rš  ÚtdÚxdr/   ÚresultÚitersÚtermrý   rc  s   ``        @@rP   Ú__call__zNdBSpline0.__call__é  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ÝŒz˜&Ñ!Ô!Ð!rf   N©r6   )r  r  r  rë  rl  rz   rf   rP   rV  rV  Ì  s7   € € € € € ðð ð ð ð8"ð "ð "ð "ð "rf   rV  c                   ó”  — 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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ej        j        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 )
Nr…  r>   rš   r)   r›   rá  rj   rk   r   )	rF   rL   r‰  r�   rŠ  r   r   r   rŸ   )
rM   r�   rN   r/   Ún_trr-   r.   rO   ÚnbÚxis
             rP   Útest_1DzTestNdBSpline.test_1D	  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ÐArf   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™   r6   rë   r4   ©rF   rJ   r
   r-   r.   ©rM   rm   r‘   r"  Úy_1rz  Út2r¶  s           rP   Ú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Ðrf   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™   r6   rë   rž   rù   r4   )rF   rJ   r
   r-   r.   r/   rw  s           rP   Ú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Ð%Ð%rf   c                 óÈ  ‡‡	‡
— g d¢}|                       ¦   «         \  Š
ŠŠ	d„ |D ¦   «         }t          t          j        ˆˆ	ˆ
fd„|D ¦   «         ¦  «        t          j        |¦  «        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ù   r=   )r=   r)   )rÂ   rù   c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS r  rz   ©r~   rm   r‘   s      rP   r   z3TestNdBSpline.test_2D_separable.<locals>.<listcomp><	  ó1   € Ð7Ð7Ð7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ñ%Ð7Ð7Ð7rf   c                 ó4   •— g | ]}t          |‰‰‰¦  «        ‘ŒS rz   ©rP  )r~   rÃ   r¶  r/   ry  s     €€€rP   r   z3TestNdBSpline.test_2D_separable.<locals>.<listcomp>?	  s'   ø€ Ð#IÐ#IÐ#IÀ¥H¨R°°R¸Ñ$;Ô$;Ð#IÐ#IÐ#Irf   Frj   ©r  rU   r6   rë   rk   r…  )r7   r6   r4   r›   rž   )r7   r6   )r2   r4   r4   )rz  r   rF   rs   r   rŸ   r-  rL   r‰  rŠ  rt   r¦  Úravel)rM   rs  ÚtargetÚbspl2r�   ri  rm   r‘   r¶  r/   ry  s           @@@rP   Útest_2D_separablezTestNdBSpline.test_2D_separable9	  sš  øøø€ Ø/Ð/Ð/ˆØ×%Ò%Ñ'Ô'‰	ˆˆB�Ø7Ð7°BÐ7Ñ7Ô7ˆõ 	�œ
Ð#IÐ#IÐ#IÐ#IÐ#IÐ#IÀbÐ#IÑ#IÔ#IÑJÔJÝœ
 6Ñ*Ô*Ø$)Ø"ð	$ñ 	$ô 	$ð 	$õ ˜"˜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ð 	9rf   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         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         dd¬¦  «         d S )Nr4   r~  c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS r  rz   r�  s      rP   r   z5TestNdBSpline.test_2D_separable_2.<locals>.<listcomp>Y	  r‚  rf   r  r6   rë   ©r7   r7   rj   rk   r2   Fg‚vIhÂ%,=r…  ©r™   r™   r4   r4   )r4   r4   )	rz  rF   rô   r   rŸ   r   r.   rs   rt   )rM   r  rs  r‡  ry  r¶  r/   Úc2_4rÃ   Úbspl2_4ri  Ú
val_singleÚc2_22Úbspl2_22s                 rP   Útest_2D_separable_2z!TestNdBSpline.test_2D_separable_2U	  sa  € àˆØ/Ð/Ð/ˆØ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Ø$)Ø"ð	$ñ 	$ô 	$ð 	$ð
 —’˜\Ñ*Ô*ˆÝ˜R ¨!Ð,Ñ,Ô,ˆà�˜"‘”ˆØŒ|˜vÒ%Ð%Ð%Ð%Ý˜Ø$ jÐ1Ø$ jÐ1ð3Ø9>ð	@ñ 	@ô 	@ð 	@ð �˜‘”Ô"Ý”˜‘”˜S˜b˜SÔ! H¤JÔ$4°T°U°UÔ$;Ñ;ò<ð <ð <ð <å˜˜ ™œ¥b¤j°Ñ&8Ô&8¸¸¸¸DÀ$¸Ô&GØ$)Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rf   c                 ó`  — g d¢}d„ |D ¦   «         }d„ |D ¦   «         }|                       ¦   «         \  }}}|dz  }t          j        ||||f¦  «        }d}t          ||d¬¦  «        } ||¦  «        }	 t          |||¦  «        |¦  «        }
|	j        dk    sJ ‚t          |	|
gd	z  d
¬¦  «         d S )Nr~  c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS r  rz   r�  s      rP   r   z=TestNdBSpline.test_2D_separable_2_complex.<locals>.<listcomp>ƒ	  r‚  rf   c                 ó   — g | ]
}|d |z  z   ‘ŒS )y               @rz   )r~   r-   s     rP   r   z=TestNdBSpline.test_2D_separable_2_complex.<locals>.<listcomp>…	  s    € Ð+Ð+Ð+˜q�!�b˜‘d‘(Ð+Ð+Ð+rf   rÌ  r  r6   rë   rŒ  r7   rj   rk   )rz  rF   rô   r   rŸ   r   )rM   rs  r‡  ry  r¶  r/   rŽ  rÃ   r�  ri  r�  s              rP   Útest_2D_separable_2_complexz)TestNdBSpline.test_2D_separable_2_complex€	  sî   € à/Ð/Ð/ˆØ7Ð7°BÐ7Ñ7Ô7ˆà+Ð+ FÐ+Ñ+Ô+ˆà×%Ò%Ñ'Ô'‰	ˆˆB�Ø�6‰]ˆÝŒy˜"˜b " bÐ)Ñ*Ô*ˆàˆÝ˜B ¨Ð*Ñ*Ô*ˆØ�˜‘”ˆØ)•Y˜r 2 qÑ)Ô)¨"Ñ-Ô-ˆ
ØŒ|˜tÒ#Ð#Ð#Ð#Ý˜Ø#˜ qÑ(¨uð	6ñ 	6ô 	6ð 	6ð 	6ð 	6rf   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 )Nr…  r6   r   rš   r›   rÀ   r7   r)   rë   )r+   r+   rj   rk   ©r)   rù   r4   ©çš™™™™™ñ?gš™™™™™ù?çÍÌÌÌÌÌ @c                 ó8   •— g | ]}t          |‰‰f‰‰¦  «        ‘ŒS rz   r„  )r~   rÃ   r.   r/   rM  rN  s     €€€€rP   r   z0TestNdBSpline.test_2D_random.<locals>.<listcomp>£	  s+   ø€ ÐCÐCÐC¸"� " r¨2 h°°1Ñ5Ô5ÐCÐCÐCrf   )rF   rL   r‰  r¥   r�   rŠ  rœ   r   r   rP  ró   )rM   r�   r"  rs  r.   r/   rM  rN  s       @@@@rP   Ú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Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rf   c                 óþ   — |                       ¦   «         \  }}}}g d¢}d„ |D ¦   «         }t          ||||f¬¦  «        } ||¦  «        j        t          |¦  «        fk    sJ ‚t	           ||¦  «        |d¬¦  «         d S )N©)çffffffö?rŽ  )r=   g333333@)rŽ  r™  c                 ó6   — g | ]\  }}|d z  |dz  d|z  z   z  ‘ŒS r  rz   r�  s      rP   r   z/TestNdBSpline.test_2D_mixed.<locals>.<listcomp>©	  r‚  rf   rë   rj   rk   )r|  r   rŸ   r-  r   )rM   ry  r¶  ÚkxÚkyrs  r‡  rˆ  s           rP   Ú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ð	,ñ 	,ô 	,ð 	,ð 	,ð 	,rf   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ë   rp  rÌ   c                 ó<   — g | ]\  }}d |dz  z  |dz  d|z  z   z  ‘ŒS r  rz   r�  s      rP   r   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>¶	  s5   € Ð>Ð>Ð>±4°1°a˜˜1˜a™4™ 1 a¡4¨!¨A©#¡:Ñ.Ð>Ð>Ð>rf   rj   rk   ©r)   r)   c                 ó6   — g | ]\  }}d |dz  z  d|z  dz   z  ‘ŒS r  rz   r�  s      rP   r   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>º	  s1   € Ð;Ð;Ð;±°°1˜˜1˜a™4™ 1 Q¡3¨¡7Ñ+Ð;Ð;Ð;rf   )r   r   c                 ó6   — g | ]\  }}|d z  |dz  d|z  z   z  ‘ŒS r  rz   r�  s      rP   r   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>¾	  s1   € Ð<Ð<Ð<±°°A˜˜A™  A¡¨¨!©¡Ñ,Ð<Ð<Ð<rf   )r2   r   )r2   r   r)   )r|  r   r   rB   rD   )rM   ry  r¶  r£  r¤  rs  rˆ  rË   s           rP   Ú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 )Nr…  )r4   r6   r   rš   r›   r6   rÀ   r7   r)   r™  rš  rë   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rz   rz   ©r~   r  Úbspl2_0s     €rP   r   z6TestNdBSpline.test_2D_mixed_random.<locals>.<listcomp>Ö	  ó!   ø€ Ð2Ð2Ð2¨˜˜ ™œÐ2Ð2Ð2rf   rj   rk   )rF   rL   r‰  r¥   r�   rŠ  rœ   ró   r   rV  r   ©
rM   r�   r£  r¤  rM  rN  r.   rs  rˆ  r¯  s
            @rP   Ú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¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@rf   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ù   r6   rë   r4   c                 ó   — g | ]	\  }}||f‘Œ
S rz   rz   ©r~   r  rO   s      rP   r   z0TestNdBSpline.test_tx_neq_ty.<locals>.<listcomp>å	  ó    € Ð9Ð9Ð9™˜˜Aˆq�!ˆfÐ9Ð9Ð9rf   rj   rk   )rF   rJ   r
   r.   r   r-   r/   r   rd  re  r¼   Úanyr   rt   rŸ   )rM   rm   r‘   Úspl_xÚspl_yrã   rv   ÚvaluesÚrgirs  Úbxis              rP   Ú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ÐFrf   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™   r6   rë   r4   r)   rv  )
rM   rm   r‘   r"  rx  rz  Úy_2rä  ry  r¶  s
             rP   Úmake_3d_casezTestNdBSpline.make_3d_caseì	  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Ðrf   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 )Nr…  ©r6   r?   r›   rž   r6   r4   r)   rë   c                 ó   — g | ]}|‘ŒS rz   rz   ©r~   r±   s     rP   r   z3TestNdBSpline.test_3D_separable.<locals>.<listcomp>
  ó   € Ð&Ð&Ð&�AˆaÐ&Ð&Ð&rf   )r?   rj   rk   )	rF   rL   r‰  rŠ  rÀ  r   ÚziprŸ   r   )rM   r�   rm   r‘   r{  r‡  Út3Úc3r/   Úbspl3rs  ri  s               rP   Útest_3D_separablezTestNdBSpline.test_3D_separableÿ	  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Ð3rf   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 )Nr6   rë   r…  rÂ  r›   rž   c                 ó   — g | ]}|‘ŒS rz   rz   rÄ  s     rP   r   z4TestNdBSpline.test_3D_derivative.<locals>.<listcomp>
  rÅ  rf   )r)   r   r   rÌ   r4   r)   rj   rk   )r4   r   r   r™   )r4   r)   r   )r4   r)   r6   )r4   r)   r7   )
rÀ  r   rF   rL   r‰  rŠ  rÆ  r   r  r-  )
rM   rÇ  rÈ  r/   rÉ  r�   rm   r‘   r{  rs  s
             rP   Útest_3D_derivativez TestNdBSpline.test_3D_derivative
  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ð 	7rf   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 )Nr…  r6   r   rš   r›   rÀ   r7   r)   rë   )r+   r+   r)   rj   rk   r™  rš  ©gÍÌÌÌÌÌì?r¡  gffffffþ?c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rz   rz   )r~   r  Úspl_0s     €rP   r   z0TestNdBSpline.test_3D_random.<locals>.<listcomp>3
  s!   ø€ Ð!9Ð!9Ð!9° % %¨¡)¤)Ð!9Ð!9Ð!9rf   )rF   rL   r‰  r¥   r�   rŠ  rœ   r   rV  r   ró   )
rM   r�   r/   rM  rN  Útzr.   r"  rs  rÑ  s
            @rP   Útest_3D_randomzTestNdBSpline.test_3D_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ˆÝŒ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ÐFrf   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 )Nr…  r6   r   rš   r›   rÀ   r7   r)   r*   rë   r™  rš  rÏ  rj   rk   )rF   rL   r‰  r¥   r�   rŠ  rœ   r   rá   râ   ró   r   )rM   r�   r/   rM  rN  rÒ  r.   r"  r�  rž  rs  s              rP   Útest_3D_random_complexz$TestNdBSpline.test_3D_random_complex5
  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¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@rf   Ú
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 )Nr6   ©r/   rr   ©éþÿÿÿr2   rš   ©r   r÷   rs  ©r2   g      ø¿ç      @c                 ó   — g | ]}|‘ŒS rz   rz   rÄ  s     rP   r   z?TestNdBSpline.test_extrapolate_3D_separable.<locals>.<listcomp>R
  rÅ  rf   r4   r)   rq   rj   rk   ©rÀ  r   r¤  rF   rs   rÆ  r   )rM   rÖ  r×  rÇ  rÈ  r/   rÉ  rm   r‘   r{  rs  r‡  ri  s                rP   Útest_extrapolate_3D_separablez+TestNdBSpline.test_extrapolate_3D_separableH
  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Ð3rf   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 )Nr6   rÙ  rÚ  rÜ  rÝ  c                 ó   — g | ]}|‘ŒS rz   rz   rÄ  s     rP   r   zATestNdBSpline.test_extrapolate_3D_separable_2.<locals>.<listcomp>c
  rÅ  rf   r4   r)   rq   rj   rk   rà  )rM   r²   rÇ  rÈ  r/   rÖ  r×  rÉ  rm   r‘   r{  rs  r‡  ri  s                 rP   Útest_extrapolate_3D_separable_2z-TestNdBSpline.test_extrapolate_3D_separable_2X
  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Ð3rf   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 )Nr6   rë   )rÛ  r)   rš   )r   rÂ   rs  )r2   rù   rÞ  c                 ó   — g | ]}|‘ŒS rz   rz   rÄ  s     rP   r   zETestNdBSpline.test_extrapolate_false_3D_separable.<locals>.<listcomp>q
  rÅ  rf   r4   r)   Frq   r   r2   rj   rk   )rÀ  r   r¤  rF   rs   rÆ  r¼   r   )rM   rÇ  rÈ  r/   rÉ  rm   r‘   r{  rs  r‡  ri  s              rP   Ú#test_extrapolate_false_3D_separablez1TestNdBSpline.test_extrapolate_false_3D_separablei
  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¸Ð?Ñ?Ô?Ð?Ð?Ð?rf   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 )Nr6   rë   rÛ  r)   r4   rš   r   r™  rs  r2   rÞ  c                 ó   — g | ]}|‘ŒS rz   rz   rÄ  s     rP   r   z/TestNdBSpline.test_x_nan_3D.<locals>.<listcomp>‚
  rÅ  rf   rj   rk   )	rÀ  r   rF   rs   rH   rÆ  r¼   r»   r   )rM   rÇ  rÈ  r/   rÉ  rm   r‘   r{  rs  r‡  r¸   ri  s               rP   Útest_x_nan_3DzTestNdBSpline.test_x_nan_3Dy
  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Ð3rf   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 )Nr…  ©r6   r6   r   r7   é   rˆ  r2   r4   r)   r›   r™  rš  rë   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS rz   rz   r®  s     €rP   r   z7TestNdBSpline.test_non_c_contiguous.<locals>.<listcomp>¢
  r°  rf   rj   rk   )rF   rL   r‰  r�   rŠ  r¥   ÚflagsÚc_contiguousrœ   r¦  ró   r   rV  r   r±  s
            @rP   Ú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¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@rf   c                 ó  — |                       ¦   «         \  }}}t          ||d¬¦  «        }t          d¦  «        D ]}d||         j        _        Œd|j        _        t          ||d¬¦  «        } |d¦  «         |d¦  «        k    sJ ‚d S )Nr6   rë   Frh   )rÀ  r   rÎ   rï  Ú	writeable)rM   rÇ  rÈ  r/   rÉ  rý   Úbspl3_s          rP   Ú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Ð4rf   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 )Nrh   )r7   rž   r™   r   g¼‰Ø—²Òœ<rk   r6   zData and knots*rì  r)   r4   )
rÀ  rF   rs   r   r.  rŸ   r   rò  rB   rD   )rM   rÇ  rÈ  r/   rs  ÚdmÚdm1s          rP   Ú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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¬¦  «        }t          |||f||¬	¦  «        }d
„ }t          d||¦  «         d S )Nr…  r6   r   rš   r›   rÀ   r7   r)   rë   c                 óR   — t           j        g d¢g d¢g d¢f         } ||¦  «         d S )Nr™  rš  rÏ  )rF   ró   )r±   r"  rs  s      rP   r^  z1TestNdBSpline.test_concurrency.<locals>.worker_fnÊ
  s:   € Ý”�{�{�{Ø&��Ø&��ð'ô (ˆBð ˆC�‰GŒGˆGˆGˆGrf   r^   )	rF   rL   r‰  r¥   r�   rŠ  rœ   r   r!   )	rM   r�   r/   rM  rN  rÒ  r.   r"  r^  s	            rP   r_  zTestNdBSpline.test_concurrency¿
  sK  € åŒ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Ð-Ñ-Ô-ˆð	ð 	ð 	õ 	   I¨sÑ3Ô3Ð3Ð3Ð3rf   )r  r  r  rt  rz  r|  r‰  r“  r—  rž  r¥  r«  r²  r½  rÀ  rÊ  rÍ  rÓ  rÕ  rZ   rm  rn  rá  rä  rç  rê  rñ  rõ  rù  ro  r_  rz   rf   rP   ro  ro  		  s  € € € € € ðBð Bð Bð"ð ð ð&ð &ð &ð9ð 9ð 9ð8($ð ($ð ($ðV6ð 6ð 6ð&$ð $ð $ð&,ð ,ð ,ð+ð +ð +ð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ð „[Ôð4ð 4ñ Ôð4ð 4ð 4rf   ro  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Â   r6   r4   c                 ó   — g | ]	\  }}||f‘Œ
S rz   rz   rµ  s      rP   r   z7TestMakeND.test_2D_separable_simple.<locals>.<listcomp>Ø
  r¶  rf   r)   rë   rS   rk   r:  r   rT   )r   Úlinearr¯  rj   )rF   rJ   rd  re  r"   r   r†  r
   r.   Úscipy.interpolater   )rM   rm   r‘   rº  rs  rv   r¸  r¹  rã   ÚRGIr»  s              rP   Ú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Ð6rf   c                 ó8  — 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¦  «                             t          ¦  «        }|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 rz   rz   rµ  s      rP   r   z>TestMakeND.test_2D_separable_trailing_dims.<locals>.<listcomp>ì
  r¶  rf   r6   r4   ©r/   Úsolver)é$   r7   r7   rj   rk   r�  )r  r4   r4   )rF   rJ   rd  re  rô   r"   ÚsslÚspsolver^  ry  rŸ   r   rt   )
rM   rm   r‘   rs  rº  Úvalues4rv   ri  r‡  Úvalues22s
             rP   Ú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Ð;Ñ<Ô<×CÒCÅEÑJÔJˆØŒ|˜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rf   r/   )rì  r¨  )r6   r)   )r)   r6   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 rz   rz   rµ  s      rP   r   z,TestMakeND.test_2D_mixed.<locals>.<listcomp>  r¶  rf   r6   r4   r  rS   rk   )	rF   rJ   rd  re  r"   r	  r
  r   r†  )rM   r/   rm   r‘   rs  rº  rv   s          rP   r¥  zTestMakeND.test_2D_mixed  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Ð=Ñ=Ô=Ð=Ð=Ð=rf   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Â   r9   r:   r;   r�  r�  )r)   r4   r)   r4   r)   r)   )r)   r4   r6   r4   r)   r)   )r)   r4   r4   r4   r)   r)   )rF   r!  rz  s       rP   Ú_get_sample_2d_datazTestMakeND._get_sample_2d_data  s‡   € åŒHÐ.Ð.Ð.Ñ/Ô/ˆÝŒHÐ.Ð.Ð.Ñ/Ô/ˆÝŒHà"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"ðñ	
ô 	
ˆð �!�Qˆwˆrf   c                 ó  — |                       ¦   «         \  }}}t          ||f|d¬¦  «        }t          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr)   rë   r   r¯  ©r)   gffffff@g333333@rÂ   çffffff
@ç333333ó?r6   ©r)   r  r  r;   rI  r+   r6   rj   rk   ©r  r"   r   rF   r!  r¦  r   ©rM   rm   r‘   r{  rv   r»  rs  s          rP   Útest_2D_vs_RGI_linearz TestMakeND.test_2D_vs_RGI_linear  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Ð6rf   c                 ó"  — |                       ¦   «         \  }}}t          ||f|dt          j        ¬¦  «        }t	          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr6   r  Úcubic_legacyr¯  r  r  rj   rk   ©	r  r"   r	  r
  r   rF   r!  r¦  r   r  s          rP   Útest_2D_vs_RGI_cubiczTestMakeND.test_2D_vs_RGI_cubic'  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Ð6rf   r  c                 ó  — |                       ¦   «         \  }}}t          ||f|d|d¬¦  «        }t          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        dd	¬
¦  «         d S )Nr6   g�íµ ÷Æ°>)r/   r  rV   r  r¯  r  r  rj   r®   rT   r  )rM   r  rm   r‘   r{  rv   r»  rs  s           rP   Útest_2D_vs_RGI_cubic_iterativez)TestMakeND.test_2D_vs_RGI_cubic_iterative1  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¡'¤'°¸DÐAÑAÔAÐAÐAÐArf   c                 ó"  — |                       ¦   «         \  }}}t          ||f|dt          j        ¬¦  «        }t	          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nrž   r  Úquintic_legacyr¯  r  r  rj   rk   r  r  s          rP   Ú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Ð6rf   zk, meth))r)   r   )r6   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  r  r¯  gffffffæ?rœ  r>   rˆ  rj   rk   )
rF   rL   r‰  ÚcumsumrŠ  r"   r	  r
  r   r   )rM   r/   ÚmethÚrndmrm   r‘   r{  rº  rv   r»  rs  s              rP   Útest_3D_random_vs_RGIz TestMakeND.test_3D_random_vs_RGIJ  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Ð6rf   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)   r  rì  r/   r6   )r  rB   rD   r"   rF   rô   )rM   rm   r‘   r{  Úsolver_argss        rP   Útest_solver_err_not_convergedz(TestMakeND.test_solver_err_not_convergedZ  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  r  r  rZ   rm  rn  r¥  r  r  r  r	  ÚgmresÚgcrotmkr  r"  r'  r+  rz   rf   rP   rý  rý  Ó
  s2  € € € € € ð7ð 7ð 7ð(Bð Bð Bð4 „[×Ò˜SÐ"JÐ"JÐ"JÑKÔKð>ð >ñ LÔKð>ðð ð ð 7ð 7ð 7ð7ð 7ð 7ð „[×Ò˜X¨¬	°3´;Ð'?Ñ@Ô@ðBð Bñ AÔ@ðBð7ð 7ð 7ð „[×ÒØÐNÐNÐNñô ð7ð 7ñô ð7ðGð Gð Gð Gð Grf   rý  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Û  r4   r™   z1D sequencerì  )rF   rJ   rt   rZ   r   rD   Ú_bÚfpcheck©rM   r/   r-   rm   s       rP   Útest_1D_x_tzTestFpchec.test_1D_x_tg  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 )Nr6   r4   r)   r?   r^   z	Need k+1*rì  )	rF   rJ   ÚdfitpackÚfpchecrZ   r   rD   r1  r2  )rM   r/   rN   r‚  r-   rm   s         rP   Útest_condition_1zTestFpchec.test_condition_1r  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 )Nr6   r   r)   r4   rž   )r)   r4   r6   r7   rŽ  r2   rŒ   zLast k knots*rì  zFirst k knots*©r6  r7  r1  r2  râ  rZ   r   rD   )rM   r/   r-   rm   Útts        rP   Ú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 )
Nr6   r   r)   r4   rž   ©r)   r4   r6   r™  r7   rŽ  é   zInternal knots*rì  )r6  r7  r1  r2  rZ   r   rD   r3  s       rP   Ú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 )
Nr6   r   r)   rž   r>  r(  zOut of bounds*rì  r2   r:  )rM   r/   r-   rm   rd   s        rP   Ú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)   r4   r4   )r›  r›  r›  ri   úSchoenberg-Whitney*rì  )rÂ   rÂ   rÂ   ©r6  r7  rZ   r   rD   r1  r2  r3  s       rP   Ú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   )r6  r7  r1  r2  r3  s       rP   Útest_condition_5_k1zTestFpchec.test_condition_5_k1×  sX   € àˆØˆLˆLˆØ�#ˆJˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*Ð*Ð*rf   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 )	Nr6   r   r)   r4   rž   ri   rD  rì  rE  r3  s       rP   Ú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 )Nr6   r   r)   r4   rž   r›  r7   ri   rD  rì  rE  r3  s       rP   Útest_condition_5_2zTestFpchec.test_condition_5_2î  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   r4   r6   r7   rž   r™   rš   rš   )r)   r)   r)   çÍÌÌÌÌÌ@rN  rN  rs  ri   rD  rì  rE  r3  s       rP   Útest_condition_5_3zTestFpchec.test_condition_5_3ý  sÊ   € àˆØ'Ð'Ð'ˆØ)Ð)Ð)ˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ÁA&Á&A*Á-A*N)r  r  r  r4  r8  r<  r@  rB  rF  rH  rJ  rL  rO  rz   rf   rP   r/  r/  d  sª   € € € € € ð	 ð 	 ð 	 ð ð  ð  ð*!ð !ð !ð, ð  ð  ð!ð !ð !ð> ð  ð  ð+ð +ð +ð ð  ð  ð+ð +ð +ð ð  ð  ð  ð  rf   r/  c                 óà  ‡‡— t          j        | ||| …         ¦  «        Šˆˆfd„t          t          ‰¦  «        dz
  ¦  «        D ¦   «         }‰‰dd…                  }t          t          |¦  «        ¦  «        D ]0}||         dz  }||xx         |z  cc<   ||dz   xx         |z  cc<   Œ1|dxx         ‰d         z  cc<   t	          t          |¦  «        t          ‰¦  «        d¬¦  «         |‰fS )z)Split the knot interval into "runs".
    c                 óf   •— g | ]-}‰‰|         ‰|d z            …                               ¦   «         ‘Œ.S ra  )r¼  )r~   rý   rJ  Ú	residualss     €€rP   r   z_split.<locals>.<listcomp>  s:   ø€ ÐGÐGÐG°ˆi˜˜1œ˜b  1¡œg˜Ô&×*Ò*Ñ,Ô,ÐGÐGÐGrf   r)   r2   r4   rS   rk   )rF   r»  rÎ   r-  r   r¼  )	rm   r-   r/   rR  ÚfpartsÚcarriesrý   ÚcarryrJ  s	      `    @rP   Ú_splitrV  
  s  øø€ õ 
Œ˜˜A˜a  ˜dœGÑ	$Ô	$€BàGÐGÐGÐGÐGµe½CÀ¹G¼GÀA¹IÑ6FÔ6FÐGÑGÔG€FØ˜˜1˜R˜4œÔ!€Gå•3�w‘<”<Ñ Ô ð ð ˆØ˜”
˜Q‘ˆØˆqˆ	ˆ	Œ	�UÑˆ	ˆ	‰	Øˆq�‰sˆˆŒ�uÑˆˆ‰ˆà
ˆ2€J€J„J�)˜B”-Ñ€J€J�Jå•C˜‘K”K¥ Y¡¤°eÐ<Ñ<Ô<Ð<à�2ˆ:Ðrf   c                 ó´  — t          | |||¦  «        \  }}d}d}t          t          |¦  «        ¦  «        D ]0}||dz            ||         z
  dk    r||         |k    r
|}||         }Œ1|dk    rt          d¦  «        ‚||         ||dz            z   dz   dz  }	| |	         }
t	          j        ||
¦  «        }t          j        |d|…         |
||d…         f         }|S )z Insert a new knot given reduals.i›ÿÿÿg}Ã”%­I²Ôr)   z5Internal error, please report it to SciPy developers.r4   N)rV  rÎ   r-  rD   rF   r»  r¥   )rm   r-   r/   rR  rS  rJ  Úidx_maxÚ	fpart_maxrý   Úidx_newknotÚnew_knotÚidx_tÚt_news                rP   Ú	_add_knotr^    sö   € å˜˜1˜a Ñ+Ô+�J€FˆBð €GØ€IÝ•3�v‘;”;ÑÔð "ð "ˆØˆa�‰cŒ7�R˜”U‰?˜QÒÐ 6¨!¤9¨yÒ#8Ð#8ØˆGØ˜qœ	ˆIøà�$‚€ÝÐPÑQÔQÐQð �g”;  G¨A¡I¤Ñ.°Ñ2°qÑ8€KØ�Œ~€HÝŒO˜A˜xÑ(Ô(€EÝŒE�!�F�U�F”)˜X q¨¨¨¤yÐ0Ô1€EØ€Lrf   c                   óF  — e Zd Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zej        j        d„ ¦   «         ZdS )ÚTestGenerateKnotsc                 ó2  — t          j        dt          ¬¦  «        }|dz  dd|z   z  z   }d}t          j        dg|dz   z  dg|dz   z  z   ¦  «        }t	          ||||¬¦  «        } ||¦  «        |z
  d	z  }d
dlm} |                     ||||¦  «        }t          ||||¦  «        }	t          ||	d¬¦  «         t	          ||||¬¦  «        }
 |
|¦  «        |z
  d	z  }|                     ||||¦  «        }t          ||||¦  «        }t          ||d¬¦  «         d S )NrÀ   r@   r6   r+   r)   r8   rt  )r/   r-   r4   r   ©Ú_fitpack_reprorS   rk   )
rF   rJ   ry  r!  r   r  rc  Úadd_knotr^  r   )rM   rm   r‘   r/   r-   r"  rR  Ú_frÚnew_tÚnew_t_pyÚspl2Ú
residuals2Únew_t2Ú	new_t2_pys                 rP   Útest_split_add_knotz%TestGenerateKnots.test_split_add_knot6  sH  € åŒI�a�uÐ%Ñ%Ô%ˆØˆq‰D�2�q˜1‘u‘:ÑˆØˆÝŒH�b�T˜1˜Q™3‘Z 2 $¨¨!©¡*Ñ,Ñ-Ô-ˆÝ˜a  a¨1Ð-Ñ-Ô-ˆØ�S˜‘V”V˜a‘Z !‘Oˆ	à;Ð;Ð;Ð;Ð;Ð;Ø—’˜Q  1 iÑ0Ô0ˆÝ˜Q  1 iÑ0Ô0ˆå˜˜x¨eÐ4Ñ4Ô4Ð4õ ˜q ! q¨EÐ2Ñ2Ô2ˆØ�d˜1‘g”g ‘k AÑ%ˆ
à—’˜a ¨¨:Ñ6Ô6ˆÝ˜a ¨¨:Ñ6Ô6ˆ	å˜ 	°Ð6Ñ6Ô6Ð6Ð6Ð6rf   r/   r­  c                 ó0  — t          j        dt           j        ¬¦  «        }t          j        |t           j        z  dz  ¦  «        }t          t          |||d¬¦  «        ¦  «        d         }t          |||d¬¦  «        d         }t          ||d¬¦  «         d S )NrÀ   r@   r   ©r/   rÄ  r2   rS   rk   )	rF   rJ   rK   rv  rš  r€  r   r   r   )rM   r/   rm   r‘   r-   r;  s         rP   Útest_s0zTestGenerateKnots.test_s0N  sŠ   € åŒI�a�rœzÐ*Ñ*Ô*ˆÝŒF�1•R”U‘7˜1‘9ÑÔˆÝ•  1¨¨QÐ/Ñ/Ô/Ñ0Ô0°Ô4ˆå�A�q˜A Ð#Ñ#Ô# AÔ&ˆÝ˜˜2 EÐ*Ñ*Ô*Ð*Ð*Ð*rf   c                 óÈ   — d}t          j        |¦  «        }|dz  }t          t          ||dd¬¦  «        ¦  «        }t	          |d         t          |d¦  «        d¬¦  «         d S )Nr^   r6   r   rn  r2   rS   rk   ©rF   rJ   r€  r   r   r   ©rM   rN   rm   r‘   Úknotss        rP   Ú	test_s0_1zTestGenerateKnots.test_s0_1W  sd   € àˆÝŒI�a‰LŒLˆØˆq‰DˆÝ•^ A q¨A°Ð3Ñ3Ô3Ñ4Ô4ˆÝ˜˜bœ	¥;¨q°!Ñ#4Ô#4¸5ÐAÑAÔAÐAÐAÐArf   c                 óÈ   — d}t          j        |¦  «        }|dz  }t          t          ||dd¬¦  «        ¦  «        }t	          |d         t          |d¦  «        d¬¦  «         d S )NrŒ   r6   r   rn  r2   rS   rk   rq  rr  s        rP   Útest_s0_n20zTestGenerateKnots.test_s0_n20_  sd   € ØˆÝŒI�a‰LŒLˆØˆq‰DˆÝ•^ A q¨A°Ð3Ñ3Ô3Ñ4Ô4ˆÝ˜˜bœ	¥;¨q°!Ñ#4Ô#4¸5ÐAÑAÔAÐAÐAÐArf   c           
      óÔ   — t          j        d¦  «        }|dz  }t          t          ¦  «        5  t	          t          ||ddd¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr^   r6   r   ©r/   rÄ  Únest)rF   rJ   rB   rD   r€  r   ©rM   rm   r‘   s      rP   Útest_s0_nestzTestGenerateKnots.test_s0_nestf  s«   € åŒI�b‰MŒMˆØˆq‰DˆÝ�:Ñ&Ô&ð 	:ð 	:Ý•  1¨¨Q°RÐ8Ñ8Ô8Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ®"AÁA!Á$A!c                 óÎ  — t          j        d¦  «        }t          j        |t           j        z  dz  ¦  «        }d}t	          t          |||d¬¦  «        ¦  «        }g d¢g d¢g d¢g d¢g d	¢g}t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D ]\  }}t          ||d
¬¦  «         Œt          |||d¬¦  «        \  }}}t          |d         |d
¬¦  «         dS )aY  
        To generate the `wanted` list below apply the following diff and rerun
        the test. The stdout will contain successive iterations of the `t`
        array.

$ git diff scipy/interpolate/fitpack/fpcurf.f
diff --git a/scipy/interpolate/fitpack/fpcurf.f b/scipy/interpolate/fitpack/fpcurf.f
index 1afb1900f1..d817e51ad8 100644
--- a/scipy/interpolate/fitpack/fpcurf.f
+++ b/scipy/interpolate/fitpack/fpcurf.f
@@ -216,6 +216,9 @@ c  t(j+k) <= x(i) <= t(j+k+1) and store it in fpint(j),j=1,2,...nrint.
         do 190 l=1,nplus
 c  add a new knot.
           call fpknot(x,m,t,n,fpint,nrdata,nrint,nest,1)
+          print*, l, nest, ': ', t
+          print*, "n, nmax = ", n, nmax
+
 c  if n=nmax we locate the knots as for interpolation.
           if(n.eq.nmax) go to 10
 c  test whether we cannot further increase the number of knots.
        rÀ   r6   r®   rn  )r8   r8   r8   r8   rt  rt  rt  rt  )	r8   r8   r8   r8   r;   rt  rt  rt  rt  ©
r8   r8   r8   r8   r9   r;   rt  rt  rt  rt  )r8   r8   r8   r8   r9   r;   r�  rt  rt  rt  rt  )r8   r8   r8   r8   r9   r:   r;   rI  rš   rt  rt  rt  rS   rk   r2   N)
rF   rJ   rv  rš  r€  r   r-  rÆ  r   r   )	rM   rm   r‘   r/   rs  Úwantedr-   r;  r±   s	            rP   Útest_s_switchzTestGenerateKnots.test_s_switchm  s  € õ. ŒI�a‰LŒLˆÝŒF�1•R”U‘7˜1‘9ÑÔˆØˆå•^ A q¨A°Ð6Ñ6Ô6Ñ7Ô7ˆØ2Ð2Ð2Ø6Ð6Ð6Ø:Ð:Ð:Ø>Ð>Ð>ØAÐAÐAð	
ˆõ �5‰zŒz�S ™[œ[Ò(Ð(Ð(Ð(Ý˜ Ñ'Ô'ð 	/ð 	/‰EˆAˆrÝ˜A˜r¨Ð.Ñ.Ô.Ð.Ð.õ ˜˜A  dÐ+Ñ+Ô+‰ˆˆ1ˆaÝ˜˜bœ	 1¨5Ð1Ñ1Ô1Ð1Ð1Ð1rf   c                 ó‚   — t          t          d¦  «        ¦  «        }t          ||dd¬¦  «        }t          |¦  «         d S )NrÀ   r�  r)   )rÄ  r/   )r€  rÎ   r   Únext)rM   rm   Úgens      rP   r�  z!TestGenerateKnots.test_list_input˜  s8   € å•�q‘”‰NŒNˆÝ˜Q  S¨AÐ.Ñ.Ô.ˆÝˆS‰	Œ	ˆ	ˆ	ˆ	rf   c           	      óŠ  — t          j        d¦  «        }t          j        |t           j        z  dz  ¦  «        }d}t	          t          ||d|d¬¦  «        ¦  «        }t          |d         g d¢d¬	¦  «         t          t          ¦  «        5  t	          t          ||dd
¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÀ   r®   r6   r^   rx  r2   r}  rS   rk   r7   )r/   ry  )	rF   rJ   rv  rš  r€  r   r   rB   rD   )rM   rm   r‘   rÄ  rs  s        rP   Ú	test_nestzTestGenerateKnots.test_nestž  s  € åŒI�a‰LŒLˆÝŒF�1•R”U‘7˜1‘9ÑÔˆØˆå•^ A q¨A°¸Ð<Ñ<Ô<Ñ=Ô=ˆÝ˜˜bœ	Ø@Ð@Ð@Àuð	Nñ 	Nô 	Nð 	Nõ �:Ñ&Ô&ð 	4ð 	4å•  1¨°Ð2Ñ2Ô2Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Â
!B8Â8B<Â?B<c           
      óî  — t          j        d¦  «        }t          j        |t           j        z  dz  ¦  «        }t	          t
          ¦  «        5  t          t          ||t          j        d¦  «        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t
          ¦  «        5  t          t          ||t          j        d¦  «         ¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÀ   r?   ©r¸  )	rF   rJ   rv  rš  rB   rD   r€  r   r¤  rz  s      rP   rº  zTestGenerateKnots.test_weights¬  sK  € ÝŒI�a‰LŒLˆÝŒF�1•R”U‘7˜1‘9ÑÔˆå�:Ñ&Ô&ð 	8ð 	8Ý•  1­¬	°"©¬Ð6Ñ6Ô6Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8õ �:Ñ&Ô&ð 	6ð 	6Ý•  1­¬°©¬¨Ð4Ñ4Ô4Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s$   Á2BÂBÂBÂ*3C*Ã*C.Ã1C.Únpts)r?  ri   r”   rÄ  )r�  g{®Gáz„?r   c                 óÀ  — t           j                             d¦  «        }dt          j        |                     |¬¦  «        ¦  «        z  }t          j        |t           j        z  dz  ¦  «        t          j        |dz
  dz   ¦  «        z   }d}t          ||||¬¦  «        d         }t          t          ||||¬¦  «        ¦  «        d	         }t          ||d
¬¦  «         d S )Nr…  r^   r›   r™   r4   r6   rn  r   r2   rS   rk   )rF   rL   rŽ   r�   rŠ  rv  rš  Úexpr   r€  r   r   )	rM   rÄ  r‡  r&  rm   r‘   r/   r-   r;  s	            rP   Útest_vs_splrepz TestGenerateKnots.test_vs_splrep¶  sË   € õ Œy×$Ò$ UÑ+Ô+ˆØ�rŒw�t—|’|¨�|Ñ.Ô.Ñ/Ô/Ñ/ˆÝŒF�1•R”U‘7˜2‘:ÑÔ¥¤¨!¨A©#°©¨	Ñ!2Ô!2Ñ2ˆàˆÝ�1�a˜1 Ð"Ñ"Ô" 1Ô%ˆÝ•.  A¨¨aÐ0Ñ0Ô0Ñ1Ô1°"Ô5ˆå˜˜A EÐ*Ñ*Ô*Ð*Ð*Ð*rf   c                 ó†  — d}t          j        |¦  «        }|dz  }t          t          ||dd¬¦  «        ¦  «        }t	          ¦   «         5 }|                     t          ¦  «        }t          ||dd¬¦  «        }t          |¦  «        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   t          |d         |d         ¦  «         d S )Né   r6   ç¸ÔJzî�5rn  r)   r2   r   )
rF   rJ   r€  r   r   ÚrecordÚRuntimeWarningr   r-  r   )rM   rN   rm   r‘   rs  Úsuprm  rY   s           rP   Útest_s_too_smallz"TestGenerateKnots.test_s_too_smallÉ  s÷   € àˆÝŒI�a‰LŒLˆØˆq‰Dˆõ •^ A q¨A°Ð7Ñ7Ô7Ñ8Ô8ˆåÑ Ô ð 	 CØ—
’
�>Ñ*Ô*ˆAÝ˜˜A  eÐ,Ñ,Ô,ˆCÝ�q‘6”6˜Q’;�;�;�;�;ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ 	˜˜bœ	 3 q¤6Ñ*Ô*Ð*Ð*Ð*s   Á
ABÂBÂ!BN)r  r  r  rl  rZ   rm  rn  ro  rt  rv  r{  r  r�  r„  rº  rŠ  ro  r‘  rz   rf   rP   r`  r`  5  s9  € € € € € ð7ð 7ð 7ð0 „[×Ò˜S / / /Ñ2Ô2ð+ð +ñ 3Ô2ð+ðBð Bð BðBð Bð Bð:ð :ð :ð)2ð )2ð )2ðVð ð ð4ð 4ð 4ð6ð 6ð 6ð „[×Ò˜V ] ] ]Ñ3Ô3Ø„[×Ò˜S . . .Ñ1Ô1ð+ð +ñ 2Ô1ñ 4Ô3ð+ð" „[Ôð+ð +ñ Ôð+ð +ð +rf   r`  c                 óˆ  — | j         d         }| ||z
  dz
           | |         z
  }|d|z  z
  dz
  }| |dz   ||z
  dz
  …         }t          j        |d¦  «        }|ddd…xx         dz  cc<   |ddd…xx         dz  cc<    t          | t          j        ||z
  dz
  ¦  «        |¦  «        ||¬¦  «        }t          j        |dz
  |j         d         ft          ¬¦  «        }t          d|j         d         d¦  «        D ](}	||	dd…f         ||	dz   dd…f         z
  ||	dz  dd…f<   Œ)|||z  |z  t          j	        |¦  «        z  z  }|S )z­Straitforward way to compute the discontinuity matrix. For testing ONLY.

    This routine returns a dense matrix, while `_fitpack_repro.disc` returns
    a packed one.
    r   r)   r4   Nr¬   rÌ   r@   )
rŸ   rF   rã  r   r,  Úemptyry  rÎ   ÚmathÚ	factorial)
r-   r/   rN   ÚdeltaÚnrintr]  Útiir‚  Úmatrrý   s
             rP   Ú
disc_naiverš  Ù  sq  € ð 	
Œ�Œ
€Aàˆa�!‰e�a‰iŒL˜1˜Qœ4Ñ€EØ��!‘‰G�a‰K€Eà	
ˆ1ˆQ‰3ˆq�‰s�1‰uˆ9Œ€BÝ
Œ)�B˜Ñ
Ô
€CØˆˆˆ!ˆ€H€H„H�Ñ€H€H�HØˆˆˆ1ˆ€I€I„I�Ñ€I€I�IØ(��•2”6˜!˜a™% !™)Ñ$Ô$ aÑ(Ô(¨°Ð3Ñ3Ô3€AåŒ8�U˜1‘W˜aœg aœjÐ)µÐ7Ñ7Ô7€DÝ�1�a”g˜a”j !Ñ$Ô$ð ,ð ,ˆØ˜!˜Q˜Q˜Q˜$œ ! A a¡C¨¨¨ F¤)Ñ+ˆˆQ�‰T�1�1�1ˆW‰ˆàˆU�5‰[˜1Ñ�tœ~¨aÑ0Ô0Ñ0Ñ0€DØ€Krf   c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚF_densezm The r.h.s. of ``f(p) = s``, an analog of _fitpack_repro.F
    Uses full matrices, so is for tests only.
    Nc                 ó|  — || _         || _        || _        || _        |€t	          j        |t          ¬¦  «        n|| _        | j        j        dk    sJ ‚ t          |t	          j
        |j        d         |z
  dz
  ¦  «        |¦  «        |¦  «        }|| j        d d …d f         z  | _        ddlm} t          |                     ||¦  «        Ž                      ¦   «         | _        |j        dk    sJ ‚|| j        z  }	t          j        |	t	          j        | j        j        d         ¦  «        f         | _        || _        d S )Nr@   r)   r   rb  )rm   r‘   r-   r/   rF   ra   ry  r¸  r  r   r,  rŸ   Úa_denser  rc  rè  Údiscrò  Úb_denser¥   r  r½   rÄ  )
rM   rm   r‘   r-   r/   rÄ  r¸  rž  re  r½   s
             rP   rë  zF_dense.__init__ö  s&  € ØˆŒØˆŒØˆŒØˆŒØ12°•”˜a¥uÐ-Ñ-Ô-Ð-ÀˆŒØŒvŒ{˜aÒÐÐÐð <•'˜!�RœV A¤G¨A¤J°¡N°QÑ$6Ñ7Ô7¸Ñ;Ô;¸AÑ>Ô>ˆØ ¤¨¨¨¨4¨¤Ñ0ˆŒà;Ð;Ð;Ð;Ð;Ð;Ý# S§X¢X¨a°¡^¤^Ð4×<Ò<Ñ>Ô>ˆŒð Œv˜Š{ˆ{ˆ{ˆ{Ø�”‰ZˆÝ”%˜�BœH T¤\Ô%7¸Ô%:Ñ;Ô;Ð;Ô<ˆŒàˆŒˆˆrf   c                 ó¸  — t          j        | j        | j        |z  f¦  «        }ddlm}m}  ||d¬¦  «        \  }}|j        | j        z  }|j	        d         } ||d |…d |…f         |d |…         ¦  «        }	t          | j        |	| j        ¦  «        }
t          j        | j        dz   |
| j        ¦  «        | j        z
  dz  z  ¦  «        }|
| _        || j        z
  S )Nr   )r«  r—  Úeconomic)ra  r)   r4   )rF   rÄ  rž  r   Úscipy.linalgr«  r—  r¦  r½   rŸ   r   r-   r/   r¼  r¸  rm   r‘   r"  rÄ  )rM   r  Úabr«  r—  r  rm  Úqyrê  r.   r"  Úfps               rP   rl  zF_dense.__call__  sê   € ÝŒY˜œ d¤l°QÑ&6Ð7Ñ8Ô8ˆð 	+Ð*Ð*Ð*Ð*Ð*Ð*Ð*Øˆr�"˜:Ð&Ñ&Ô&‰ˆˆ1àŒS�4”7‰]ˆàŒW�QŒZˆØˆE�!�C�R�C˜˜"˜�H”+˜r # 2 #œwÑ'Ô'ˆå�d”f˜a ¤Ñ(Ô(ˆÝŒV�D”F˜A‘I   T¤V¡¤¨t¬vÑ!5¸Ñ 9Ñ9Ñ:Ô:ˆàˆŒà�D”F‰{Ðrf   r¹  )r  r  r  ró  rë  rl  rz   rf   rP   rœ  rœ  ò  sA   € € € € € ðð ðð ð ð ð,ð ð ð ð rf   rœ  c                   óz   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zej        j        d
„ ¦   «         Zd„ Zd„ ZdS )ÚTestMakeSplrepc                 ó’  — t          j        ddd¦  «        }t          j        ddd¦  «        }t          t          ¦  «        5  t	          ||¦  «         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          t          ¦  «        5  t          j        |j        dddf¦  «        }t	          ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          t          ¦  «        5  t	          ||d	z  |d¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «         }t          t          ¦  «        5  t	          ||d	z  |d¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |j        d         df¦  «        }t          t          ¦  «        5  t	          ||d	z  |d¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          |d d d…         |d	z  d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d	z  dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d	z  d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d	z  d	dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d	z  dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          t          j	        d¦  «        t          j	        d¦  «        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r^   r?   rÛ  r)   r4   r�  ©rÄ  r6   )r¸  rÄ  r2   r=   rn  )r/   ry  rÄ  )rÄ  ry  rÀ   é	   )
rF   r`   rB   rD   r   r¤  rœ   rŸ   rC   rJ   )rM   rm   r‘   r¸  s       rP   Útest_input_errorsz TestMakeSplrep.test_input_errors!  s  € ÝŒK˜˜2˜rÑ"Ô"ˆÝŒK˜˜2˜rÑ"Ô"ˆÝ�:Ñ&Ô&ð 	ð 	å˜˜1ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �:Ñ&Ô&ð 	%ð 	%å˜˜1 Ð$Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%õ �:Ñ&Ô&ð 	%ð 	%å”˜œ  A qÐ)Ñ*Ô*ˆAÝ˜˜1 Ð$Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%õ
 ŒG�B‰KŒKˆÝ�:Ñ&Ô&ð 	-ð 	-å˜˜1˜a™4 1¨Ð,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ ŒW�R‰[Œ[ˆLˆÝ�:Ñ&Ô&ð 	-ð 	-å˜˜1˜a™4 1¨Ð,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ ŒG�Q”W˜Q”Z �OÑ$Ô$ˆÝ�:Ñ&Ô&ð 	-ð 	-å˜˜1˜a™4 1¨Ð,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ �:Ñ&Ô&ð 	.ð 	.å˜˜$˜$˜B˜$œ  A¡¨Ð-Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ �9Ñ%Ô%ð 	/ð 	/å˜˜1˜a™4 3¨#Ð.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/õ �:Ñ&Ô&ð 	'ð 	'å˜˜1˜a™4 2Ð&Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'õ �:Ñ&Ô&ð 	5ð 	5å˜˜1˜a™4 1¨1°Ð4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ �:Ñ&Ô&ð 	/ð 	/å˜˜1˜a™4 1¨2Ð.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/õ �:Ñ&Ô&ð 	;ð 	;å�œ	 !™œ¥b¤i°¡l¤l°cÐ:Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð 	;ð 	;sØ   ÁAÁA"Á%A"Á=BÂB Â#B Â;0C7Ã7C;Ã>C;Ä*EÅEÅEÆF$Æ$F(Æ+F(Ç$HÈHÈHÈ&IÉIÉIÉ0JÊJÊJÊ2KËKËKË3LÌLÌLÌ6MÍMÍ MÍ87N<Î<O ÏO c                 óÒ   — t          j        ddd¦  «        }t          j        |dz  dz  ¦  «        dz  }d}d}t          j        dg|dz   z  d	d
gz   dg|dz   z  z   ¦  «        }|||||fS )Nr   rž   r?   g…ëQ¸	@r4   r6   g€Ÿqá@H&?r)   r=   r;   )rF   r`   rv  r!  )rM   rm   r‘   r/   rÄ  r;  s         rP   Ú	_get_xyktzTestMakeSplrep._get_xyktX  s|   € ÝŒK˜˜1˜bÑ!Ô!ˆÝŒV�A�d‘F˜Q‘JÑÔ Ñ"ˆØˆØˆÝŒX�q�c˜1˜Q™3‘i 3¨ *Ñ,°¨s°A°a±C©yÑ8Ñ9Ô9ˆà�!�Q˜˜2ˆ~Ðrf   c                 óð   — ddl m} |                      ¦   «         \  }}}}} |||d d …d f         |||¦  «        }t          |||||¦  «        }dD ]&}	t	           ||	¦  «         ||	¦  «        d¬¦  «         Œ'd S )Nr   ©ÚF©r)   r^   r”   rS   rk   )Ú scipy.interpolate._fitpack_repror±  r®  rœ  r   )
rM   r±  rm   r‘   r/   rÄ  r-   ÚfÚf_dr  s
             rP   Útest_fitpack_FzTestMakeSplrep.test_fitpack_Fa  s¦   € à6Ð6Ð6Ð6Ð6Ð6àŸšÑ(Ô(‰ˆˆ1ˆa��AØˆAˆa��1�1�1�d�7”˜Q  1Ñ%Ô%ˆÝ�a˜˜A˜q !Ñ$Ô$ˆØð 	6ð 	6ˆAÝ˜A˜A˜a™DœD # # a¡&¤&¨uÐ5Ñ5Ô5Ð5Ð5ð	6ð 	6rf   c                 óÀ  — ddl m} |                      ¦   «         \  }}}}}t          j        |j        d         t          ¬¦  «        } |||d d …d f         ||||¬¦  «        }t          ||||||¬¦  «        }	t          |||||¦  «        }
dD ]Q}t           ||¦  «         |	|¦  «        d¬¦  «         t          j	         |
|¦  «         |	|¦  «        d¬¦  «        rJ ‚ŒRd S )Nr   r°  r@   r†  r²  rS   rk   )
r³  r±  r®  rF   rJ   rŸ   ry  rœ  r   rÓ   )rM   r±  rm   r‘   r/   rÄ  r-   r¸  ÚfwÚfw_drµ  r  s               rP   Útest_fitpack_F_with_weightsz*TestMakeSplrep.test_fitpack_F_with_weightsk  s  € à6Ð6Ð6Ð6Ð6Ð6àŸšÑ(Ô(‰ˆˆ1ˆa��AÝŒI�a”g˜a”j­Ð.Ñ.Ô.ˆØˆQˆq�!�A�A�A�t�G”*˜a  A¨Ð+Ñ+Ô+ˆÝ�q˜!˜Q  1¨Ð*Ñ*Ô*ˆå�a˜˜A˜q !Ñ$Ô$ˆàð 	@ð 	@ˆAÝ˜B˜B˜q™EœE 4 4¨¡7¤7°Ð7Ñ7Ô7Ð7Ý”{ 3 3 q¡6¤6¨4¨4°©7¬7¸Ð?Ñ?Ô?Ð?Ð?Ð?Ð?ð	@ð 	@rf   c           
      óÚ  — dd l mc m} t          j                             d¦  «        }t          j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t          |¦  «        d}}t          |                     ||¦  «        Ž                      ¦   «         }t          ||¦  «        }|j        d         |d|z  z
  dz
  k    sJ ‚t          ||d¬	¦  «         d S )
Nr   r…  rš   r›   rž   r6   r4   rS   rk   )r³  Úinterpolaterc  rF   rL   r‰  r¥   r�   rŠ  r-  rè  rŸ  rò  rš  rŸ   r   )rM   re  r�   r-   rN   r/   ÚDÚD_denses           rP   Útest_disc_matrixzTestMakeSplrep.test_disc_matrixz  sî   € ð 	7Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6åŒi×#Ò# EÑ*Ô*ˆÝŒE�!�Q˜˜1�bœg c§k¢k°q kÑ&9Ô&9Ñ:Ô:¸1Ñ<¸aÀÀAÀqÐHÔIˆå�1‰vŒv�qˆ1ˆÝ˜#Ÿ(š( 1 a™.œ.Ð)×1Ò1Ñ3Ô3ˆÝ˜Q Ñ"Ô"ˆØŒw�qŒz˜Q  1¡™W q™[Ò(Ð(Ð(Ð(Ý˜˜7¨Ð/Ñ/Ô/Ð/Ð/Ð/rf   c                 ó^  — |                       ¦   «         \  }}}}}t          j        dg|dz   z  ddgz   dg|dz   z  z   ¦  «        }t          ||||¬¦  «        \  }}}t	          ||k    ¦  «        sJ ‚t          ||||¬¦  «        }t          |d |j        j        …         |j        d¬¦  «         d S )	Nr   r)   r=   r;   rž   rn  rS   rk   )	r®  rF   r!  r   r»   r   r   r.   rœ   )	rM   rm   r‘   r/   rÄ  r;  r-   r.   r"  s	            rP   Útest_simple_vs_splrepz$TestMakeSplrep.test_simple_vs_splrepˆ  s½   € ØŸšÑ)Ô)‰ˆˆ1ˆa��BÝŒX�q�c˜1˜Q™3‘i 3¨ *Ñ,°¨s°A°a±C©yÑ8Ñ9Ô9ˆå�q˜!˜q AÐ&Ñ&Ô&‰ˆˆ!ˆAÝ�1˜’7‰|Œ|ÐÐÐå˜!˜Q ! qÐ)Ñ)Ô)ˆÝ˜˜+˜3œ5œ:˜+œ¨¬°EÐ:Ñ:Ô:Ð:Ð:Ð:rf   c                 óh  — |                       ¦   «         \  }}}}}t          t          ||||¬¦  «        ¦  «        d         }t          ||||¬¦  «        }t          |||||¬¦  «        }t	          |j        |j        d¬¦  «         t	          |j        |j        d¬¦  «         |j        |j        k    sJ ‚d S )Nrn  r2   )r-   r/   rÄ  rS   rk   )r®  r€  r   r   r   r-   r.   r/   )	rM   rm   r‘   r/   rÄ  r±   r-   Úspl_autoÚspl_ts	            rP   Útest_with_knotszTestMakeSplrep.test_with_knots’  s¹   € ØŸšÑ(Ô(‰ˆˆ1ˆa��Aå•  1¨¨QÐ/Ñ/Ô/Ñ0Ô0°Ô4ˆå˜q ! q¨AÐ.Ñ.Ô.ˆÝ˜A˜q A¨¨aÐ0Ñ0Ô0ˆå˜œ
 E¤G°%Ð8Ñ8Ô8Ð8Ý˜œ
 E¤G°%Ð8Ñ8Ô8Ð8ØŒz˜UœWÒ$Ð$Ð$Ð$Ð$Ð$rf   c                 ó¢   — d}t          j        |¦  «        }|dz  }d}t          |||d¬¦  «        }|j        j        d         d|dz   z  k    sJ ‚d S )Nr^   r6   r)   rn  r   r4   )rF   rJ   r   r-   rŸ   )rM   rN   rm   r‘   r/   r"  s         rP   Útest_no_internal_knotsz%TestMakeSplrep.test_no_internal_knotsž  s_   € àˆÝŒI�a‰LŒLˆØˆq‰DˆØˆÝ˜!˜Q ! qÐ)Ñ)Ô)ˆØŒuŒ{˜1Œ~  A a¡C¡Ò(Ð(Ð(Ð(Ð(Ð(rf   c                 ó¼   — d}t          j        |¦  «        }|dz  }t          ||d¬¦  «        }t          ||d¬¦  «        }t	          |j        |j        d¬¦  «         d S )Nr^   r6   rë   rS   rk   )rF   rJ   r   r
   r   r.   )rM   rN   rm   r‘   r"  Úspl_is         rP   Útest_default_szTestMakeSplrep.test_default_s§  sd   € ØˆÝŒI�a‰LŒLˆØˆq‰DˆÝ˜!˜Q !Ð$Ñ$Ô$ˆÝ" 1 a¨1Ð-Ñ-Ô-ˆå˜œ˜uœw¨UÐ3Ñ3Ô3Ð3Ð3Ð3rf   c                 óà  — d}t          j        |¦  «        }|dz  }t          ¦   «         5 }|                     t          ¦  «        }t          ||dd¬¦  «        }t          ||dd¬¦  «        }t          |¦  «        dk    sJ ‚t          |j	        |d         ¦  «         t          t           j        |j        dg|j        dz   z  f         |d         d¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
NrŒ  r6   r�  rn  r4   r   r)   r  rk   )rF   rJ   r   rŽ  r�  r   r   r-  r   r-   r   r¥   r.   r/   )rM   rN   rm   r‘   r�  rm  rY   r"  s           rP   r‘  zTestMakeSplrep.test_s_too_small°  s.  € ð ˆÝŒI�a‰LŒLˆØˆq‰DˆåÑ Ô ð 	0 CØ—
’
�>Ñ*Ô*ˆAÝ˜˜A  eÐ,Ñ,Ô,ˆCÝ˜a  a¨5Ð1Ñ1Ô1ˆCÝ�q‘6”6˜Q’;�;�;�;Ý˜CœE 3 q¤6Ñ*Ô*Ð*Ý�BœE #¤%¨!¨¨c¬e°A©g©Ð"6Ô7Ø œF¨ð0ñ 0ô 0ð 0ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s   ªB,C#Ã#C'Ã*C'c                 ó0  — d\  }}t          j        |¦  «        }|dz  }t          |||¬¦  «        }t          |||d¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚t          ||dd|z   z  z   |d¬¦  «        }|j        j        dk    sJ ‚d S )N©r^   r6   r6   rë   çñhãˆµøä>rn  r)   )rF   rJ   r   r.   r  )rM   rN   r/   rm   r‘   r"  rz  rä  s           rP   Ú
test_shapezTestMakeSplrep.test_shapeÀ  s°   € à‰ˆˆ1ÝŒI�a‰LŒLˆØˆq‰Dˆå˜!˜Q !Ð$Ñ$Ô$ˆÝ˜A˜q A¨Ð.Ñ.Ô.ˆàŒuŒz˜QŠˆˆˆØŒwŒ|˜qÒ Ð Ð Ð õ ˜A˜q 1 a¨¡c¡7™{¨a°4Ð8Ñ8Ô8ˆØŒwŒ|˜qÒ Ð Ð Ð Ð Ð rf   c                 óN  — d\  }}t          j        |¦  «        }|dz  }t          ||dd¬¦  «        }t          ||dd¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚|j        j        d         ||z   dz   k    sJ ‚|j        j        d         d|dz   z  k    sJ ‚d S )NrÍ  r6   r   rn  r)   r4   )rF   rJ   r   r.   r  r-   rŸ   )rM   rN   r/   rm   r‘   rÑ  rz  s          rP   Útest_s0_vs_notzTestMakeSplrep.test_s0_vs_notÐ  sÁ   € à‰ˆˆ1ÝŒI�a‰LŒLˆØˆq‰Dˆå˜A˜q A¨Ð+Ñ+Ô+ˆÝ˜A˜q A¨Ð+Ñ+Ô+ˆàŒwŒ|˜qÒ Ð Ð Ð ØŒwŒ|˜qÒ Ð Ð Ð àŒwŒ}˜QÔ 1 q¡5¨1¡9Ò,Ð,Ð,Ð,ØŒwŒ}˜QÔ 1¨¨A©¡;Ò.Ð.Ð.Ð.Ð.Ð.rf   N)r  r  r  r¬  r®  r¶  rº  r¿  rÁ  rÅ  rÇ  rÊ  rZ   rm  ro  r‘  rÏ  rÑ  rz   rf   rP   r¨  r¨     sÞ   € € € € € ð5;ð 5;ð 5;ðnð ð ð6ð 6ð 6ð@ð @ð @ð0ð 0ð 0ð;ð ;ð ;ð
%ð 
%ð 
%ð)ð )ð )ð4ð 4ð 4ð „[Ôð0ð 0ñ Ôð0ð!ð !ð !ð /ð /ð /ð /ð /rf   r¨  c                   óÀ   — e Zd Zdd„Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Z	d	„ Z
d
„ ZdS )ÚTestMakeSplprepr^   r6   c                 ó¤   — t          j        |¦  «        t           j        z  |z  }t          j        |¦  «        t          j        |¦  «        g}|||fS r¹  )rF   rJ   rš  rv  rx  )rM   r‚  r/   rm   r‘   s        rP   Ú_get_xykzTestMakeSplprep._get_xyká  s@   € ÝŒI�a‰LŒL�2œ5Ñ  1Ñ$ˆÝŒV�A‰YŒY�œ˜q™	œ	Ð"ˆØ�!�Qˆwˆrf   rÄ  ©r   r�  gü©ñÒMbP?rÎ  c           
      ó`  — d\  }}t          j        |¦  «        t           j        z  |z  }t          j        |¦  «        t          j        |¦  «        g}dddddœ}t          ||¬¦  «        \  \  }}}}	t          ||¬¦  «        \  }
}t          ||	d¬	¦  «         t          |
j        |d¬	¦  «         t          |¦  «        ||         k    sJ ‚t          j
        |¦  «        j        }t          |
j        |d¬	¦  «         t           |
|¦  «         t          |||d
¬¦  «        |¦  «        d¬	¦  «         d S )NrÍ  rŒ  rÀ   r«  r^   rÖ  rª  rS   rk   r)   r  )rF   rJ   rš  rv  rx  r   r   r   r-   r-  rs   r¦  r.   r   )rM   rÄ  r‚  r/   rm   r‘   Ú	num_knotsr-   r.   Úu_r"  rû  rã   s                rP   Útest_simple_vs_splprepz&TestMakeSplprep.test_simple_vs_splprepæ  sJ  € ð ‰ˆˆ1ÝŒI�a‰LŒL�2œ5Ñ  1Ñ$ˆÝŒV�A‰YŒY�œ˜q™	œ	Ð"ˆð  ¨%°uÐ=Ð=ˆ	õ    Q˜™œ‰‰	ˆˆAˆq�2Ý˜a 1Ð%Ñ%Ô%‰ˆˆQõ 	˜˜2 EÐ*Ñ*Ô*Ð*õ 	˜œ˜q uÐ-Ñ-Ô-Ð-Ý�1‰vŒv˜ 1œÒ%Ð%Ð%Ð%õ ŒZ˜‰]Œ]Œ_ˆÝ˜œ˜r¨Ð.Ñ.Ô.Ð.õ 	˜˜˜A™œØ0�  1 a¨aÐ0Ñ0Ô0°Ñ3Ô3¸%ð	Añ 	Aô 	Að 	Að 	Að 	Arf   c                 ó&  — |                       ¦   «         \  }}}t          |t          ¦  «        sJ ‚t          j        |¦  «        d         dk    sJ ‚t          ||¬¦  «        \  }}t          t          j        |¦  «        |¬¦  «        \  }}t          |||¬¦  «         t          |d         |d         d¬¦  «         t          |d         ¦  «        t          |d         ¦  «        k    sJ ‚t          |d         |d         ¦  «        D ]\  }}	t          ||	d¬¦  «         Œ|d         |d         k    sJ ‚t          j        t          ||¦  «        ¦  «        t          j        |¦  «        k    sJ ‚t          ||¬¦  «        \  }
}t          ||d¬¦  «         t          |
j        |d         d¬¦  «         t          |
j        j        |d         d¬¦  «         |
j        |d         k    sJ ‚ |
|¦  «        j        t          j        |¦  «        k    sJ ‚t          t          j        |¦  «        |¬¦  «        \  }
}t          ||d¬¦  «         t          |
j        |d         d¬¦  «         t          |
j        j        |d         d¬¦  «         |
j        |d         k    sJ ‚ |
|¦  «        j        t          j        |¦  «        k    sJ ‚t!          t"          ¦  «        5  t          t          j        |¦  «        j        |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r4   rª  rk   rS   r)   )rÕ  r  r€  rF   rŸ   r   rs   r   r-  rÆ  r   r   r-   r.   r¦  r/   rB   rD   )rM   rÄ  r±   r‘   rY   rû  Útck_aÚu_arµ  r¶  r"  s              rP   Útest_array_not_listz#TestMakeSplprep.test_array_not_list  s&  € ð —-’-‘/”/‰ˆˆ1ˆaÝ˜!�TÑ"Ô"Ð"Ð"Ð"ÝŒx˜‰{Œ{˜1Œ~ Ò"Ð"Ð"Ð"õ ˜˜a�‘”‰ˆˆQÝ�RœZ¨™]œ]¨aÐ0Ñ0Ô0‰
ˆˆsÝ˜˜3 QÐ'Ñ'Ô'Ð'Ý˜˜Aœ  a¤¨uÐ5Ñ5Ô5Ð5Ý�3�q”6‰{Œ{�c %¨¤(™mœmÒ+Ð+Ð+Ð+Ý˜#˜aœ& %¨¤(Ñ+Ô+ð 	0ð 	0‰FˆB�Ý˜B ¨Ð/Ñ/Ô/Ð/Ð/Ø�1Œv˜˜qœÒ!Ð!Ð!Ð!ÝŒx�˜a ™œÑ&Ô&­"¬(°1©+¬+Ò5Ð5Ð5Ð5å˜a 1Ð%Ñ%Ô%‰ˆˆQÝ˜˜3 UÐ+Ñ+Ô+Ð+Ý˜œ˜u Qœx¨eÐ4Ñ4Ô4Ð4Ý˜œœ  q¤°Ð6Ñ6Ô6Ð6ØŒu˜˜aœÒ Ð Ð Ð Øˆs�1‰vŒvŒ|�rœx¨™{œ{Ò*Ð*Ð*Ð*å�bœj¨™mœm¨qÐ1Ñ1Ô1‰ˆˆQÝ˜˜3 UÐ+Ñ+Ô+Ð+Ý˜œ˜u Qœx¨eÐ4Ñ4Ô4Ð4Ý˜œœ  q¤°Ð6Ñ6Ô6Ð6ØŒu˜˜aœÒ Ð Ð Ð Øˆs�1‰vŒvŒ|�rœx¨™{œ{Ò*Ð*Ð*Ð*å�:Ñ&Ô&ð 	/ð 	/Ý�œ A™œœ¨AÐ.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   Ë)LÌL
ÌL
c                 ó”   — |                       d¬¦  «        \  }}}t          |¦  «        \  }}t           ||¦  «        |d¬¦  «         d S )Nr^   r�  rS   rk   )rÕ  r   r   )rM   rm   r‘   r/   r"  rû  s         rP   Útest_default_s_is_zeroz&TestMakeSplprep.test_default_s_is_zero'  sM   € Ø—-’- "�-Ñ%Ô%‰ˆˆ1ˆaå˜a‘”‰ˆˆQÝ˜˜˜A™œ ¨Ð.Ñ.Ô.Ð.Ð.Ð.rf   c                 óv  — |                       d¬¦  «        \  }}}t          |d¬¦  «        \  }}t          |d¬¦  «        \  }}t          ||d¬¦  «         t           ||¦  «        |d¬¦  «         t           ||¦  «        |d¬¦  «         |j        |j        k    sJ ‚|j        j        |j        j        k    sJ ‚d S )Nr^   r�  r   rª  rS   rk   r®   )rÕ  r   r   r  r.   rŸ   )rM   rm   r‘   r/   rÉ  Úu_iÚspl_nÚu_ns           rP   Útest_s_zero_vs_near_zeroz(TestMakeSplprep.test_s_zero_vs_near_zero-  sÊ   € à—-’- "�-Ñ%Ô%‰ˆˆ1ˆaå! ! qÐ)Ñ)Ô)‰
ˆˆsÝ! ! uÐ-Ñ-Ô-‰
ˆˆså˜˜S uÐ-Ñ-Ô-Ð-Ý˜˜˜c™
œ
 A¨EÐ2Ñ2Ô2Ð2Ý˜˜˜c™
œ
 A¨DÐ1Ñ1Ô1Ð1ØŒz˜UœZÒ'Ð'Ð'Ð'ØŒwŒ} ¤¤Ò-Ð-Ð-Ð-Ð-Ð-rf   c                 ó^  — t          j        dt          ¬¦  «        }t          t          ¦  «        5  t          |¦  «         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 ¦  «         n# 1 swxY w Y   t          |gd¬¦  «        \  }}t          |gd¬¦  «        \  }} ||¦  «        j        dk    sJ ‚t           ||¦  «        |gd¬	¦  «         d S )
NrÀ   r@   r   rª  r�  rÎ  )r)   rÀ   rS   rk   )	rF   rJ   ry  rB   rD   r   r   rŸ   r   )rM   rm   rY   rÙ  r"  rû  s         rP   rt  zTestMakeSplprep.test_1D:  sæ  € ÝŒI�a�uÐ%Ñ%Ô%ˆÝ�:Ñ&Ô&ð 	ð 	Ý�A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �:Ñ&Ô&ð 	!ð 	!Ý˜˜aÐ Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!õ �:Ñ&Ô&ð 	#ð 	#Ý˜˜cÐ"Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ ˜1˜# Ð&Ñ&Ô&‰ˆˆRÝ˜q˜c TÐ*Ñ*Ô*‰ˆˆQàˆs�1‰vŒvŒ|˜vÒ%Ð%Ð%Ð%Ý˜˜˜A™œ  ¨%Ð0Ñ0Ô0Ð0Ð0Ð0s5   °AÁAÁAÁ+B	Â	BÂBÂ(CÃC
ÃC
NrÍ  )r  r  r  rÕ  rZ   rm  rn  rÚ  rÞ  rà  rå  rt  rz   rf   rP   rÓ  rÓ  à  sÃ   € € € € € ðð ð ð ð
 „[×Ò˜SÐ"6Ð"6Ð"6Ñ7Ô7ðAð Añ 8Ô7ðAð: „[×Ò˜SÐ"6Ð"6Ð"6Ñ7Ô7ð /ð  /ñ 8Ô7ð /ðD/ð /ð /ð.ð .ð .ð1ð 1ð 1ð 1ð 1rf   rÓ  rî  )rÚ  r6   rm  ra  )gr'  rY  rd  r”  rb  ÚnumpyrF   Únumpy.testingr   Úscipy._lib._array_apir   r   rZ   r   rB   r  r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r£  r–  rŸ  Úscipy.sparse.linalgÚsparser	  Úscipy.interpolate._bsplinesr   r   r   r   r   r   r   r   Úscipy.interpolate._fitpack_implr¼  Ú_fitpack_implrü   Úscipy._lib._utilr    Úscipy._lib._testutilsr!   Úscipy.interpolate._ndbspliner"   r#   r6  r$   r1  r%   r'   rq  r°  r³  r|   r�   rÞ   rl   rÛ   rX   r¯  rå  r$  rŽ  r¨  rm  rn  ræ  r­  rè  r  rø  r  r  r-  r/  rP  r  r?  rV  ro  rý  r/  rV  r^  r`  rš  rœ  r¨  rÓ  rz   rf   rP   ú<module>rò     só  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð à Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð HÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø &Ð &Ð &Ð &Ð &Ð &Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &ðy	)ð y	)ð y	)ð y	)ð y	)ñ y	)ô y	)ð y	)ðvM$ð M$ð M$ð M$ð M$ñ M$ô M$ð M$ð`6ð 6ð 6ð.ð ð ð&
Gð 
Gð 
Gð>ð >ð >ðð ð ðHð Hð Hðð ð ð ð$+ð +ð +ð +ðð ð ð$_)ð _)ð _)ð _)ð _)ñ _)ô _)ð _)ðD}?ð }?ð }?ð }?ð }?ñ }?ô }?ð }?ð@ð ð ð8ð ð ð ð8 !œ+×1Ò1°(¸YÈÐ<MÑNÔNÐ ðy:ð y:ð y:ð y:ð y:ñ y:ô y:ð y:ðxð ð ð ð ñ ô ð ð>)ð )ð )ð )ðX	ð 	ð 	ðð ð ð(d+ð d+ð d+ð d+ð d+ñ d+ô d+ð d+ðN*ð *ð *ð
F3ð F3ð F3ð F3ð F3ñ F3ô F3ð F3ðV
ð 
ð 
ðð ð ð7ð 7ð 7ð:"ð :"ð :"ð :"ð :"ñ :"ô :"ð :"ðzG4ð G4ð G4ð G4ð G4ñ G4ô G4ð G4ðT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 ðLð ð ð(ð ð ð.a+ð a+ð a+ð a+ð a+ñ a+ô a+ð a+ðHð ð ð2+ð +ð +ð +ð +ñ +ô +ð +ð\}/ð }/ð }/ð }/ð }/ñ }/ô }/ð }/ð@i1ð i1ð i1ð i1ð i1ñ i1ô i1ð i1ð i1ð i1rf   