Ë
    ÏÍ:j•\ ã                   óh  — 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Zd dlZd dlZd dl	Z
d dlmZmZmZmZmZmZmZmZ d dlmc 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l0m1c m.Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z:m;Z; d dlm<Z<m=Z=m>Z> d dl?m@c mAZB d dlCmDZD d d	lEmFZF d d
lGmHZH d dlmIZJ d dlmKZL d dlmMZM ejœ                  jž                  ZOejœ                  j                   ZP ee«       G d„ d«      «       ZQ eedf«       G d„ d«      «       ZRd„ ZSd„ ZTd„ ZUd„ ZVd„ ZWe
fd„ZXdSd„ZYdde
fd„ZZd„ Z[ G d„ d«      Z\ ee«       G d „ d!«      «       Z]d"„ Z^dTd#„Z_ejœ                  jÁ                  d$d%d&g«      Za ee «       G d'„ d(«      «       Zb G d)„ d*«      ZcdUd+„Zdd,„ Zed-„ Zf G d.„ d/«      Zgd0„ Zh ee+«       G d1„ d2«      «       Zid3„ Zjd4„ Zkd5„ Zl G d6„ d7«      Zm ee*«       G d8„ d9«      «       Zn G d:„ d;«      Zo G d<„ d=«      Zpd>„ Zqd?„ Zr ee<«       G d@„ dA«      «       ZsdB„ Zt G dC„ dD«      Zu G dE„ dF«      Zv ee=«       G dG„ dHev«      «       Zw ee=«       G dI„ dJev«      «       Zx ee>«       G dK„ dL«      «       Zy ee>«       G dM„ dN«      «       Zz G dO„ dP«      Z{ G dQ„ dR«      Z|y)Vé    N)Úxp_assert_equalÚxp_assert_closeÚxp_default_dtypeÚ	concat_1dÚmake_xp_test_caseÚxp_ravelÚ_xp_copy_to_numpyÚarray_namespace)Ú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)Ú	FperiodicÚ	root_rati)Úgenerate_knotsÚmake_splrepÚmake_splprep)Ú	AxisError)Ú_run_concurrent_barrier)Úmake_ndbspl)Ú_fitpack)Ú	_bsplines)Ú_dierckxc                   óZ  — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	 e
dd	¬
«       e
dd¬
«       e
dd¬
«      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
dd¬
«      d„ «       Zd „ Zd!„ Zd"„ Zd#„ Zd$„ Zd%„ Zd&„ Z  e!dd'¬
«      d(„ «       Z"d)„ Z#d*„ Z$d+„ Z%e&jN                  jQ                  d, e)d-d.«      «      d/„ «       Z*d0„ Z+d1„ Z,e&jN                  jQ                  d2g d3¢«      e&jN                  jQ                  d4 e)d5«      «      d6„ «       «       Z-d7„ Z.d8„ Z/d9„ Z0e&jN                  jQ                  d:g d;¢«      d<„ «       Z1e&jN                  jQ                  d:g d;¢«      d=„ «       Z2d>„ Z3d?„ Z4d@„ Z5e&jN                  jm                  e7jp                  dAk(  dBe9¬C«      dD„ «       Z:yE)FÚ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 «       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\  }}|j                  ||z   dz   |j                  ¬«      }|j                  t
        j                  j                  |«      «      }t        |||«      }t        ||j                  «       t        ||j                  «       ||j                   k(  sJ ‚y # 1 sw Y   �ŒßxY w)Né   ù              ð?ç      ð?r   ©ÚtÚcÚkÚignore)Úinvalidéÿÿÿÿ©r   r0   é   ©r   r0   r;   é   é   r;   )ç        r?   r2   ç       @ç      @ç      @)r2   r2   r2   Úcubicç      @)r?   r   r0   r0   r;   r=   )r2   r0   r0   ©é   r=   ©Údtype)Úassert_raisesÚ	TypeErrorÚ
ValueErrorr   ÚdictÚnpÚerrstateÚnanÚinfÚarangeÚfloat64ÚasarrayÚrandomr   r4   r5   r6   )ÚselfÚxpÚnr6   r4   r5   Úbs          úz/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_bsplines.pyÚ	test_ctorzTestBSpline.test_ctor5   só  € ä”y¤*Ð-¬wñ 	1Ü˜!˜S˜ b T¨QÔ/ò	1ä�[‰[ Ô*ñ 	SÜœ*¤gÑR´¸¼B¿F¹F¸ÈÀtÈqÔ1QÒR÷	Sä”j¤'ÑN¬T°Q¼¿¹°KÀBÀ4È1Ô-MÒNÜ”j¤'ÑJ¬T°Q¸°GÀ¸tÀqÔ-IÒJÜ”j¤'ÑM¬T°a°S¸1¸#°JÀ2À$È!Ô-LÒMô 	”j¤'ÑK¬T²IÀ!ÀÈÔ-JÒKÜ”j¤'ñ 	<Üš¨R°¨H¸Ô:ò	<ô 	”i¤ñ 	OÜÒ1²\ÀWÔMò	Oä”i¤ñ 	KÜÒ1²\ÀSÔIò	Kô 	”j¤'ñ 	BÜÒ,²
¸aÔ@ò	Bð ‰ˆˆ1Ø�I‰I�a˜‘c˜!‘e 2§:¡:ˆIÓ.ˆØ�J‰J”r—y‘y×'Ñ'¨Ó*Ó+ˆÜ�A�q˜!Óˆä˜˜1Ÿ3™3ÔÜ˜˜1Ÿ3™3ÔØ�A—C‘CŠxˆ‰x÷;	Sñ 	Sús   Á3IÉIc                 ó2  — 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 «       y # 1 sw Y   y xY w)Nr   çVçž¯Ò<©ÚatolÚrtolr0   r;   Úfoo)	Ú_make_random_splineÚtckr   r4   r5   r6   Úpytestr   ÚAttributeError)rU   rX   rb   s      rY   Útest_tckzTestBSpline.test_tckX   s}   € ÜÓ!ˆØ�e‰eˆä˜Ÿ™˜S ™V¨%°eÕ<Ü˜Ÿ™˜S ™V¨%°eÕ<Ø�s‰s�c˜!‘fŠ}Ðˆ}ô �]‰]œ>Ó*ñ 	ØˆAŒE÷	÷ 	ñ 	ús   Á<BÂBc                 ó  — t        |j                  g d¢«      |j                  ddg«      d¬«      }|j                  ddd«      }|j                  |dk  |j                  d|j                  ¬	«      d
«      }t         ||«      |«       y )N©r   r2   r;   rA   r>   r   r3   r;   é
   r2   rG   rB   )r   rS   ÚlinspaceÚwhererR   r   )rU   rV   rX   ÚxxÚexpecteds        rY   Útest_call_namespacezTestBSpline.test_call_namespaced   so   € ô �b—j‘j¢Ó,°·
±
¸BÀ¸7Ó0CÀqÔIˆØ�[‰[˜˜A˜rÓ"ˆà—8‘8˜B ™G R§Z¡Z°¸"¿*¹* ZÓ%EÀsÓKˆÜ™˜"›˜xÕ(ó    c                 óÈ   — t        |j                  g d¢«      |j                  ddg«      d¬«      }t        |j                  «      |u sJ ‚t        |j                  «      |u sJ ‚y )Nrg   rA   r>   r   r3   )r   rS   r
   r4   r5   ©rU   rV   rX   s      rY   Ú&test_attributes_have_correct_namespacez2TestBSpline.test_attributes_have_correct_namespacem   sT   € Ü�b—j‘j¢Ó,°·
±
¸BÀ¸7Ó0CÀqÔIˆÜ˜qŸs™sÓ# rÑ)Ð)Ð)Ü˜qŸs™sÓ# rÑ)Ð)Ñ)rn   c                 ó  — 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
«      «       y )Nr   r0   rh   rA   r3   )r   çffffffÖ?r0   r=   r>   rs   rB   )rM   ri   r   r   Ú	ones_likerj   )rU   rk   rX   s      rY   Útest_degree_0zTestBSpline.test_degree_0r   su   € Ü�[‰[˜˜A˜rÓ"ˆä�q˜!�f  ¨Ô*ˆÜ™˜"›œrŸ|™|¨BÓ/°#Ñ5Ô6ä’l q¨! f°Ô2ˆÜ™˜"›œrŸx™x¨¨T©	°3¸Ó<Õ=rn   c           	      óä  — |j                  g d¢«      }|j                  g d¢«      }d}t        |||«      }|j                  ddd|j                  ¬«      }t	         ||«      |d   t        ||¬	«      z  |d   t        |dz
  |¬	«      z  z   |d
   t        |d
z
  |¬	«      z  z   d¬«       t        t        |||f«      \  }}}	t        |||	|f«      }
t	         ||«      |j                  |
«      d¬«       y )Nr<   )r2   r;   r=   r0   r2   rA   é2   rG   r   ©rV   r;   ç›+¡†›„=©r^   )	rS   r   ri   rR   r   ÚB_012Úmapr	   r   )rU   rV   r4   r5   r6   rX   ÚxÚx_npÚt_npÚc_npÚsplev_results              rY   Útest_degree_1zTestBSpline.test_degree_1{   sè   € Ø�J‰J’Ó'ˆØ�J‰J’{Ó#ˆØˆÜ�A�q˜!Óˆà�K‰K˜˜S "¨B¯J©JˆKÓ7ˆÜÙˆa‹DØˆa‰D”�q˜R”Ñ  1 Q¡4¬¨a°©c°bÔ(9Ñ#9Ñ9¸A¸a¹DÄÀqÈÁsÈrÔARÑ<RÑRØõ	
ô
 Ô0°1°a¸°)Ó<Ñˆˆd�DÜ˜T D¨$° ?Ó3ˆÜ™˜!›˜bŸj™j¨Ó6¸UÖCrn   c           
      óœ  — d}|j                  dg|dz   z  dg|dz   z  z   «      }|j                  g d¢«      }t        t        |j                  |d«      «      t        |j                  ddg«      «      «      }t	        |||«      }|j                  ddd«      }t         ||d	¬
«      |j                   |t        |«      d	¬
«      «      d¬«       y )Nr=   r   r0   ©r2   r@   rA   rB   )r9   r0   g      ð¿r@   rh   T©Úextrapolatery   rz   )rS   r   r	   Úreshaper   ri   r   )rU   rV   r6   r4   r5   ÚbpÚbsplrk   s           rY   Útest_bernsteinzTestBSpline.test_bernstein‹   s¿   € àˆØ�J‰J˜�s˜A˜a™C‘y A 3¨¨!©¡9Ñ,Ó-ˆØ�J‰JÒ'Ó(ˆÜÜ˜bŸj™j¨¨GÓ4Ó5Ü˜bŸj™j¨!¨Q¨Ó0Ó1ó
ˆô �q˜!˜QÓˆà�[‰[˜˜b "Ó%ˆÜÙ� Ô&Ø�J‰J‘rÔ+¨BÓ/¸TÔBÓCØö	
rn   z
dask.arrayz"_naive_eval is not dask-compatible©Úreasonz	jax.numpyztoo slow; XXX a slow-if marker?Útorchz	OOB on CIc                 ó†  — t        |¬«      }|j                  \  }}}|j                  ||   || dz
     d«      } ||«      }|j                  |D �cg c]  }t	        |||||¬«      ‘Œ c}«      }	t        ||	d¬«       |j                  |D �cg c]  }t        |||||¬«      ‘Œ c}«      }
t        ||
d¬«       y c c}w c c}w )Nrx   r0   rw   ry   rz   )ra   rb   ri   ÚstackÚ_naive_evalr   Ú_naive_eval_2)rU   rV   rX   r4   r5   r6   rk   Úy_br}   Úy_nÚy_n2s              rY   Útest_rndm_naive_evalz TestBSpline.test_rndm_naive_eval�   s¶   € ô   2Ô&ˆØ—%‘%‰ˆˆ1ˆaØ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÙ�‹eˆØ�h‰hÀÖC¸1œ A q¨!¨Q°2Ö6ÒCÓDˆÜ˜˜S uÕ-à�x‰xÀ2ÖF¸aœ q¨!¨Q°°bÖ9ÒFÓGˆÜ˜˜T¨Ö.ùò	 Dùò Gs   ÁB9ÂB>c           	      ó¼   — t        «       }|j                  \  }}}t        j                  ||   || dz
     d«      }t	         ||«      t        ||||f«      d¬«       y )Nr0   rw   ry   rz   )ra   rb   rM   ri   r   r   ©rU   rX   r4   r5   r6   rk   s         rY   Útest_rndm_splevzTestBSpline.test_rndm_splev­   sV   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›œu R¨!¨Q°¨Ó3¸%Ö@rn   c                 ó‚  — t         j                  j                  d«      }t        j                  |j                  d«      «      }|j                  d«      }t	        ||«      }t        |Ž }|j                  |j                  }}t        j                  ||   || dz
     d«      }t         ||«      t        ||«      d¬«       y )NéÒ  é   r0   éP   ry   rz   )rM   rT   ÚRandomStateÚsortr   r   r4   r6   ri   r   r   )	rU   Úrngr}   Úyrb   rX   r4   r6   rk   s	            rY   Útest_rndm_splrepzTestBSpline.test_rndm_splrep³   s”   € Ü�i‰i×#Ñ# DÓ)ˆÜ�G‰G�C—J‘J˜r“NÓ#ˆØ�J‰J�r‹Nˆä�Q˜‹lˆÜ�SˆMˆà�s‰s�A—C‘Cˆ1ˆÜ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›œu R¨›~°EÖ:rn   c                 ó@  — t        |¬«      }|j                  |j                  «      |_        |j                  |j                  |j
                     |j                  |j
                   dz
     d|j                  ¬«      }t         ||«      |j                  |«      «       y )Nrx   r0   éd   rG   )ra   rt   r5   ri   r4   r6   rR   r   )rU   rV   rX   rk   s       rY   Útest_rndm_unityzTestBSpline.test_rndm_unity¿   so   € Ü 2Ô&ˆØ�l‰l˜1Ÿ3™3ÓˆŒØ�[‰[˜Ÿ™˜QŸS™S™ 1§3¡3¨¯© t¨A¡v¡;°¸2¿:¹:ˆ[ÓFˆÜ™˜"›˜rŸ|™|¨BÓ/Õ0rn   c                 óª  — t         j                  j                  d«      }d\  }}t        j                  |j                  |«      «      }|j                  |ddf¬«      }t	        |j
                  ||f«      \  }}t        |||«      }||   || dz
     }	}||	|z
  |j                  |j                  d«      «      z  z   }
 ||
«      j                  dk(  sJ ‚y )	Nrš   ©é   r=   é   é   ©Úsizer0   ©r=   r>   é   )r=   r>   r­   r¨   r©   )rM   rT   r�   rž   r|   rS   r   Úshape)rU   rV   rŸ   rW   r6   r4   r5   rX   ÚtmÚtprk   s              rY   Útest_vectorizationzTestBSpline.test_vectorizationÅ   sÃ   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ü�G‰G�C—J‘J˜q“MÓ"ˆØ�J‰J˜Q  1˜IˆJÓ&ˆÜ�2—:‘:  1˜vÓ&‰ˆˆ1Ü�A�q˜!ÓˆØ�1‘�q˜!˜˜A™‘wˆBˆØ�2˜‘7˜bŸj™j¨¯©°IÓ)>Ó?Ñ?Ñ?ˆÙ�‹u�{‰{˜oÒ-Ð-Ñ-rn   c           	      óX  — t         j                  j                  d«      }d\  }}t        j                  |j                  ||z   dz   «      «      }|j                  |«      }t         j                  ||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¬«       y )	Nrš   )é!   r=   r0   r9   r   rw   ry   rz   )	rM   rT   r�   rž   Úr_r   ri   r   r   )rU   rŸ   rW   r6   r4   r5   Úc_padrX   Úb_padÚdtrk   s              rY   Ú
test_len_czTestBSpline.test_len_cÐ   s
  € ô �i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ü�G‰G�C—J‘J˜q ™s 1™uÓ%Ó&ˆØ�J‰J�q‹Mˆô —‘�a˜Ÿ™ A a¡C›Ð(Ñ)ˆä˜1˜a Ó#¤W¨Q°°qÓ%9ˆ5ˆàˆr‰U�Q�q‘T‰\ˆÜ�[‰[˜˜1™ ™ A b¡E¨B¡J°Ó3ˆÜ™˜"›™u R›y¨uÕ5Ü™˜"›œu R¨!¨Q°¨Ó3¸%Õ@Ü™˜"›œu R¨!¨U°A¨Ó7¸eÖDrn   c           	      ó°   — t        «       }|j                  \  }}}||   || dz
     }}dD ])  }t         |||g|«       ||dz   |dz
  g|«      dd¬«       Œ+ y )Nr0   ©TFç»½×Ùß|Û=ç•Ö&è.>çH¯¼šò×z>r]   ©ra   rb   r   )	rU   Únum_parallel_threadsrX   r4   Ú_r6   r¯   r°   Úextraps	            rY   Útest_endpointszTestBSpline.test_endpointsã   ss   € äÓ!ˆØ—%‘%‰ˆˆ1ˆaØ�1‘�q˜!˜˜A™‘wˆBˆà#ò 	WˆFÜ™A˜r 2˜h¨Ó/Ù˜r E™z¨2°©:Ð6¸Ó?ÀdÐQUöWñ	Wrn   c           	      ó    — t        «       }|j                  \  }}}t         |||dz   | dz
   dz
  «       |||dz   | dz
   dz   «      d¬«       y )Nr0   r»   r¼   rz   r¾   )rU   r¿   rX   r4   rÀ   r6   s         rY   Útest_continuityzTestBSpline.test_continuityí   s\   € äÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ™˜!˜A˜a™C   1¡˜+¨Ñ-Ó.±°!°A°a±C¸¸¸1¹°+ÀÑ2EÓ0FØö	rn   c                 óœ  — t        |¬«      }|j                  \  }}}|d   |d   z
  }|j                  ||   |z
  || dz
     |z   d«      }||   |k  ||| dz
     k  z  }t         |||   d¬«       |||   d¬«      «       t	        t
        |||f«      \  }	}
}|j                  t        |	|
||fd¬	«      «      }t         ||d¬«      |«       y )
Nrx   r9   r   r0   rw   Tr…   F)Úext)ra   rb   ri   r   r|   r	   rS   r   )rU   rV   rX   r4   r5   r6   r·   rk   ÚmaskÚxx_npr   r€   r�   s                rY   Útest_extrapzTestBSpline.test_extrapô   sã   € Ü 2Ô&ˆØ—%‘%‰ˆˆ1ˆaØˆr‰U�Q�q‘T‰\ˆØ�[‰[˜˜1™ ™ A q b¨¡d¡G¨b¡L°"Ó5ˆØ�!‘�r‘	˜b 1 a R¨¡T¡7™lÑ+ˆô 	™˜"˜T™(°Ô5Ù˜"˜T™(°Ô6ô	8ô  Ô 1°B¸¸1°:Ó>Ñˆˆt�TØ—z‘z¤%¨°°d¸A¨ÀAÔ"FÓGˆÜ™˜"¨$Ô/°Õ>rn   c                 ó¼   — t        «       }|j                  \  }}}|d   dz
  |d   dz   g} ||«      }t        j                  t        j                  |«      «      rJ ‚y )Nr   r0   r9   )ra   rb   rM   ÚallÚisnan)rU   rX   r4   rÀ   r6   rk   Úyys          rY   Útest_default_extrapzTestBSpline.test_default_extrap  sY   € äÓ!ˆØ—%‘%‰ˆˆ1ˆaØ�‰d�Q‰h˜˜"™ ™	Ð"ˆÙˆr‹UˆÜ—6‘6œ"Ÿ(™( 2›,Ô'Ð'Ð'Ð'rn   c                 óR  — t         j                  j                  d«      }t        j                  |j                  d«      «      }|j                  d«      }t	        |j
                  ||f«      \  }}d}t        |||d¬«      }|j                  d   |dz   z
  }|d	   |d   z
  }|j                  ||   |z
  ||   |z   d
«      }	||   |	||   z
  ||   ||   z
  z  z   }
t	        t        |
||f«      \  }}}t        |«      |j                  k(  rdnd}t         ||	«      |j                  t        ||||f«      «      |¬«       |j                  g d¢«      }	||   |	||   z
  ||   ||   z
  z  z   }
t         ||	d¬«       ||
d¬«      t        |«      |j                  k(  rd¬«       y d¬«       y )Nrš   é   r>   r=   Úperiodicr…   r   r0   r9   rw   çê-�™—q=gH¯¼šò×Š>rz   )r9   r   ç      à?r0   Try   g�íµ ÷Æ >)rM   rT   r�   rž   r|   rS   r   r®   ri   r	   r   rR   r   r   )rU   rV   rŸ   r4   r5   r6   rX   rW   r·   rk   ÚxyÚxy_npr   r€   r^   s                  rY   Útest_periodic_extrapz TestBSpline.test_periodic_extrap  s¢  € Ü�i‰i×#Ñ# DÓ)ˆÜ�G‰G�C—J‘J˜q“MÓ"ˆØ�J‰J�q‹MˆÜ�2—:‘:  1˜vÓ&‰ˆˆ1ØˆÜ�A�q˜!¨Ô4ˆØ�G‰G�A‰J˜!˜a™%Ñ ˆàˆr‰U�Q�q‘T‰\ˆØ�[‰[˜˜1™ ™ A a¡D¨2¡I¨rÓ2ˆØˆq‰T�R˜!˜A™$‘Y 1 Q¡4¨!¨A©$¡;Ñ/Ñ/ˆÜÔ 1°B¸¸1°:Ó>Ñˆˆt�TÜ(¨Ó,°·
±
Ò:‰uÀˆÜÙˆb‹E�2—:‘:œe E¨D°$¸¨?Ó;Ó<À4õ	
ð
 �Z‰ZšÓ(ˆØˆq‰T�R˜!˜A™$‘Y 1 Q¡4¨!¨A©$¡;Ñ/Ñ/ˆÜÙˆb˜jÔ)Ùˆb˜dÔ#Ü*¨2Ó.°"·*±*Ò<�ö	
ð CGö	
rn   c                 óÚ   — t        «       }|j                  \  }}}t        j                  |||f«      }t	        j
                  ||   ||    d«      }t         ||«       ||«      dd¬«       y )Nr£   ry   r]   )ra   rb   r   Úfrom_splinerM   ri   r   )rU   rX   r4   r5   r6   Úpprk   s          rY   Ú
test_ppolyzTestBSpline.test_ppoly'  sa   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ×Ñ  1 a˜yÓ)ˆä�[‰[˜˜1™˜q ! ™u cÓ*ˆÜ™˜"›™r "›v¨E¸Ö>rn   c                 ój  — t        «       }|j                  \  }}}t        j                  |d   |d   d«      }t        j                  ||f   }t        d|dz   «      D ])  }t        ||||f|¬«      }t        | |||¬«      d¬«       Œ+ t         |||dz   ¬«      t        j                  |«      d¬«       y )	Nr   r9   rw   r0   ©Úder©Únury   rz   )	ra   rb   rM   ri   r´   Úranger   r   Ú
zeros_like)rU   rX   r4   r5   r6   rk   rÝ   Úyds           rY   Útest_derivative_rndmz TestBSpline.test_derivative_rndm/  s¤   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ�[‰[˜˜1™˜q ™u bÓ)ˆÜ�U‰U�2�q�5‰\ˆä˜˜A˜a™C“=ò 	;ˆCÜ�r˜A˜q !˜9¨#Ô.ˆBÜ˜B¡ "¨¤°EÖ:ð	;ô
 	™˜"  1¡œ¤r§}¡}°RÓ'8¸uÖErn   c                 óØ  — d}g d¢}t         j                  j                  d«      }t         j                  dd|j                  d«      ddf   }t	        |||«      }t        j
                  g d¢«      }t         |||dk7     dz
  «       |||dk7     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 ‚y )Nr;   )r9   r9   r   r0   r0   r=   r>   r¨   r¨   r¨   r©   r©   rš   r   r­   )r0   r=   r>   r¨   r¨   r»   g2Hþÿÿÿ@gÎ·   @r=   r>   r0   rÞ   )rM   rT   r�   r´   r   rS   r   Úallclose)	rU   r6   r4   rŸ   r5   rX   r}   Úx0Úx1s	            rY   Útest_derivative_jumpsz!TestBSpline.test_derivative_jumps<  sP  € ð ˆÚ2ˆÜ�i‰i×#Ñ# DÓ)ˆÜ�E‰E�!�Q˜Ÿ
™
 1› q¨!Ð+Ñ,ˆÜ�A�q˜!Óˆô �J‰J’|Ó$ˆÜ™˜!˜A ™F™) eÑ+Ó,Ù˜!˜A ™F™) eÑ+Ó,ô	.ä—;‘;™q ›{©A¨g«JÔ7Ð7Ð7ô �Z‰Z˜˜A˜ÓˆÜ™˜"˜u™*¨Ô+Ù˜"˜u™*¨Ô+ô	-ä�Z‰Z˜˜A˜ÓˆÜ—;‘;™q  e¡°Ô2±A°b¸5±jÀQÔ4GÔHÐHÐHô —;‘;™q  U¡¨qÔ1±1°Q¸±YÀ1Ô3EÔFÐFÐFÐFrn   ÚcupyzCuPy doesn't raisec           	      óæ   — t        t        t        j                  fi t	        |j                  dg«      ¬«      ¤Ž t        t        t        j                  fi t	        |j                  g «      ¬«      ¤Ž y )Nr   ©r4   )rI   rK   r   Úbasis_elementrL   rS   ©rU   rV   s     rY   Ú$test_basis_element_invalid_too_shortz0TestBSpline.test_basis_element_invalid_too_shortV  sJ   € ô 	”j¤'×"7Ñ"7ÑS¼4À"Ç*Á*ÈaÈSÃ/Ô;RÒSÜ”j¤'×"7Ñ"7ÑR¼4À"Ç*Á*ÈRÃ.Ô;QÓRrn   c           	      óÜ  — |j                  ddd«      }t        j                  |j                  g d¢«      ¬«      }t	        t
        ||j                  |j                  f«      \  }}}|j                  t        ||||j                  f«      «      }t         ||«      |d¬«       t        |«      |j                  k(  rdnd}t         ||«      |j                  t        |«      |j                  ¬	«      |¬«       t        j                  |j                  g d
¢«      ¬«      }|j                  ddd|j                  ¬	«      }t         ||«      |j                  |dk  ||z  d|z
  dz  «      d¬«       y )Nr9   r>   r›   ©r   r0   r;   r=   rë   ry   rz   r½   rG   ©r   r0   r0   r;   r   r;   rh   r0   r@   )ri   r   rì   rS   r|   r	   r4   r5   r   r6   r   r   rR   ÚB_0123rj   )	rU   rV   rk   rX   rÈ   r   r€   r�   r^   s	            rY   Útest_basis_element_quadraticz(TestBSpline.test_basis_element_quadratic\  s  € Ø�[‰[˜˜Q Ó#ˆÜ×!Ñ! B§J¡Jª|Ó$<Ô=ˆäÔ 1°B¸¿¹¸Q¿S¹S°>ÓBÑˆˆt�TØ—z‘z¤%¨°°d¸A¿C¹CÐ/@Ó"AÓBˆÜ™˜"›˜|°%Õ8ä& rÓ*¨b¯j©jÒ8‰U¸dˆÜ™˜"›˜rŸz™z¬&°«*¸B¿J¹J˜zÓGÈdÕSä×!Ñ! B§J¡Jª|Ó$<Ô=ˆØ�[‰[˜˜A˜r¨¯©ˆ[Ó4ˆÜ™˜"›Ø—‘˜˜a™  B¡¨¨B©°©
Ó3¸%ö	Arn   c           	      óº   — t        «       }|j                  \  }}}t        j                  ||   || dz
     d«      }t	         ||«      t        ||||«      d¬«       y )Nr0   r›   ry   rz   )ra   rb   rM   ri   r   Ú_sum_basis_elementsr—   s         rY   Útest_basis_element_rndmz#TestBSpline.test_basis_element_rndml  sU   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›Ô2°2°q¸!¸QÓ?ÀeÖLrn   c                 ó²  — t        «       }|j                  \  }}}|dz  }t        |||«      }t        ||j                  j                  |«      }t        ||j                  j
                  |«      }t        j                  ||   || dz
     d«      }t         ||«      j                   ||«      d¬«       t         ||«      j
                   ||«      d¬«       y )Ny      ð?      @r0   r›   ry   rz   )	ra   rb   r   r5   ÚrealÚimagrM   ri   r   )	rU   rX   r4   r5   r6   ÚccÚb_reÚb_imrk   s	            rY   Ú
test_cmplxzTestBSpline.test_cmplxr  s¬   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaØ�(‰^ˆä�A�r˜1ÓˆÜ�q˜!Ÿ#™#Ÿ(™( AÓ&ˆÜ�q˜!Ÿ#™#Ÿ(™( AÓ&ˆä�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›Ÿ
™
¡D¨£H°5Õ9Ü™˜"›Ÿ
™
¡D¨£H°5Ö9rn   c                 ó–   — t        j                  |j                  g d¢«      «      }|j                   ||j                  «      «      sJ ‚y )Nrñ   )r   rì   rS   rÌ   rO   rp   s      rY   Útest_nanzTestBSpline.test_nan  s5   € ä×!Ñ! "§*¡*ª\Ó":Ó;ˆØ�x‰x™˜"Ÿ&™&›	Ô"Ð"Ñ"rn   c                 ó  — t        d|¬«      }|j                  \  }}}t        |||«      }|j                  ||   || dz
     d«      }t	        d|«      D ].  }|j                  «       }t         |||«       ||«      dd¬«       Œ0 y )Nr­   )r6   rV   r0   r›   rÒ   r]   )ra   rb   r   ri   rà   Ú
derivativer   )	rU   rV   rX   r4   r5   r6   Úb0rk   Újs	            rY   Útest_derivative_methodz"TestBSpline.test_derivative_method„  s…   € Ü !¨Ô+ˆØ—%‘%‰ˆˆ1ˆaÜ�Q˜˜1ÓˆØ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ�q˜!“ò 	FˆAØ—‘“ˆAÜ™B˜r 1›I¡q¨£u°5¸uÖEñ	Frn   c                 óÂ  — t        |¬«      }|j                  \  }}}|j                  ||   || dz
     d«      }t         |j	                  «       j                  «       |«       ||«      dd¬«       |j                  |||fd¬«      }|j                  ||fd¬«      }t        |||«      }t         |j	                  «       j                  «       |«       ||«      dd¬«       y )Nrx   r0   r›   ry   r]   ©Úaxisr;   )ra   rb   ri   r   Úantiderivativer  r�   r   )rU   rV   rX   r4   r5   r6   rk   s          rY   Útest_antiderivative_methodz&TestBSpline.test_antiderivative_method�  s×   € Ü 2Ô&ˆØ—%‘%‰ˆˆ1ˆaØ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜÐ7˜×(Ñ(Ó*×5Ñ5Ó7¸Ó;Ù˜"› E°õ	7ð �H‰H�a˜˜A�Y QˆHÓ'ˆØ�H‰H�a˜�V !ˆHÓ$ˆÜ�A�q˜!ÓˆÜÐ7˜×(Ñ(Ó*×5Ñ5Ó7¸Ó;Ù˜"› E°ö	7rn   c                 óV  — t        j                  |j                  g d¢«      «      }t        j                  |j                  dd«      dd¬«      sJ ‚t        j                  |j                  dd«      dd¬«      sJ ‚t        j                  |j                  dd«      dd¬«      sJ ‚t        j                  |j                  dd«      dd¬«      sJ ‚t        j                  |j                  dd«      dd¬«      sJ ‚t        j                  |j                  dd«      dd¬«      sJ ‚t        j                  |j                  dd«      d	d¬«      sJ ‚t        j                  |j                  ddd
¬«      d	d¬«      sJ ‚t        j                  |j                  ddd¬«      dd¬«      sJ ‚t        j                  |j                  ddd¬«      dd¬«      sJ ‚t        j                  |j                  ddd¬«      t        j                  ddt        t        |j                  «      «      d¬«      sJ ‚y )Nr:   r   r0   rÓ   ry   ©Úabs_tolç      à¿r9   r?   Tr…   F)r   rì   rS   ÚmathÚiscloseÚ	integrateÚ_implr   r|   r	   rb   rp   s      rY   Útest_integralzTestBSpline.test_integral›  s¿  € Ü×!Ñ! "§*¡*ªYÓ"7Ó8ˆÜ�|‰|˜AŸK™K¨¨1Ó-¨s¸EÕBÐBÐBÜ�|‰|˜AŸK™K¨¨1Ó-¨xÀÕGÐGÐGÜ�|‰|˜AŸK™K¨¨1Ó-¨t¸UÕCÐCÐCô �|‰|˜AŸK™K¨¨1Ó-¨s¸EÕBÐBÐBÜ�|‰|˜AŸK™K¨¨1Ó-¨xÀÕGÐGÐGÜ�|‰|˜AŸK™K¨¨1Ó-¨t¸UÕCÐCÐCô �|‰|˜AŸK™K¨¨AÓ.°¸UÕCÐCÐCÜ�|‰|˜AŸK™K¨¨A¸4˜KÓ@À#ÈuÕUÐUÐUÜ�|‰|˜AŸK™K¨¨A¸5˜KÓAÀ3ÐPUÕVÐVÐVÜ�|‰|˜AŸK™K¨¨2¸5˜KÓAÀ4ÐQVÕWÐWÐWô �|‰|˜AŸK™K¨¨2¸5˜KÓAÜ!ŸL™L¨¨B´Ô4EÀqÇuÁuÓ0MÓNØ$)õ+ð 	+ñ +rn   z(CuPy periodic extrapolation seems brokenc           	      óÒ  — t        j                  |j                  g d¢«      «      }d|_        |j	                  «       }|j                   |d«       |d«      z
  |j
                  ¬«      }t        j                  |j                  dd«      |«      sJ ‚t        j                  |j                  dd«      d|z  «      sJ ‚t        j                  |j                  dd«      |«      sJ ‚t        j                  |j                  d	d
«      d|z  «      sJ ‚t        |j                  dd«      |j                   |d«       |d«      z
  «      «       t        |j                  dd«      |j                   |d«       |d«      z
   |d«      z    |d«      z
  «      «       t        |j                  dd«      |j                   |d«       |d«      z
   |d«      z    |d«      z
  «      «       t        |j                  dd«      |j                   |d«       |d«      z
   |d«      z    |d«      z
  d|z  z   «      «       t        |j                  dd«      |j                   |d«       |d«      z
  «      «       t        |j                  dd«      |j                   |d«       |d«      z
  «      «       t        |j                  dd«      |j                   |d«       |d«      z
  d|z  z
  «      «       y )Nr:   rÑ   r;   r   rG   r9   i÷ÿÿÿiùÿÿÿiøÿÿÿéüÿÿÿrÓ   ç      ø?r=   r0   g      +@é   r¨   iöÿÿÿr>   )
r   rì   rS   r†   r  rR   r  r  r  r   )rU   rV   rX   ÚiÚ
period_ints        rY   Útest_integral_periodicz"TestBSpline.test_integral_periodic±  s[  € ô ×!Ñ! "§*¡*ªYÓ"7Ó8ˆØ"ˆŒØ×ÑÓˆØ—Z‘Z¡ !£¡q¨£t¡°2·:±:�ZÓ>ˆ
ä�|‰|˜AŸK™K¨¨1Ó-¨zÔ:Ð:Ð:Ü�|‰|˜AŸK™K¨¨1Ó-¨r°J©Ô?Ð?Ð?Ü�|‰|˜AŸK™K¨¨BÓ/°Ô<Ð<Ð<Ü�|‰|˜AŸK™K¨¨BÓ/°°Z±Ô@Ð@Ð@ä˜Ÿ™ C¨Ó-ØŸ
™
¡1 S£6©A¨c«F¡?Ó3ô	5ä˜Ÿ™ C¨Ó+ØŸ
™
¡1 Q£4©!¨A«$¡;±°1³Ñ#5¹¸#»Ñ#>Ó?ô	Aä˜Ÿ™ H¨fÓ5ØŸ
™
¡1 Q£4©!¨A«$¡;±°1³Ñ#5¹¸#»Ñ#>Ó?ô	Aä˜Ÿ™ C¨Ó0ØŸ
™
¡1 Q£4©!¨A«$¡;±°1³Ñ#5¹¸#»Ñ#>ÀÀZÁÑ#OÓPô	Rô 	˜Ÿ™ A rÓ*¨B¯J©J±q¸³t¹aÀ»d±{Ó,CÔDÜ˜Ÿ™ B¨Ó,¨b¯j©j¹¸1»ÁÀ!Ã¹Ó.EÔFÜ˜Ÿ™ A rÓ*ØŸ
™
¡1 Q£4©!¨A«$¡;°°Z±Ñ#?Ó@õ	Brn   c                 óÈ   — g d¢}t        ||«      }d|_        t        j                  |«      }dD ]1  \  }}t	        |j                  ||«      |j                  ||«      «       Œ3 y )Nr<   rÑ   ))éûÿÿÿrÓ   )rÓ   r­   )r  é   )r   r†   r   rØ   r   r  )rU   r}   rX   Úpræ   rç   s         rY   Útest_integrate_ppolyz TestBSpline.test_integrate_ppolyÌ  s`   € âˆÜ˜q !Ó$ˆØ"ˆŒÜ×Ñ˜aÓ ˆà5ò 	1‰FˆB�Ü˜AŸK™K¨¨BÓ/ØŸK™K¨¨BÓ/õ1ñ	1rn   c                 óÂ   — t        j                  g d¢«      }dD ]C  }|j                  dd|¬«      }t        |t        j
                  «      sJ ‚|j                  dk(  rŒCJ ‚ y )Nr:   rº   r   r0   r…   )r   rì   r  Ú
isinstancerM   ÚndarrayÚndim)rU   rX   r†   Úress       rY   Útest_integrate_0D_alwaysz$TestBSpline.test_integrate_0D_always×  sY   € ä×!Ñ!¢)Ó,ˆØ(ò 	!ˆKØ—+‘+˜a °�+Ó<ˆCÜ˜c¤2§:¡:Ô.Ð.Ð.Ø—8‘8˜q“=Ð �=ñ	!rn   c                 óæ   —  G d„ dt         «      }|j                  g d¢«      }|j                  |k(  sJ ‚|j                  «       j                  |k(  sJ ‚|j	                  «       j                  |k(  sJ ‚y )Nc                   ó   — e Zd Zy)ú'TestBSpline.test_subclassing.<locals>.BN)Ú__name__Ú
__module__Ú__qualname__© rn   rY   ÚBr'  á  s   „ Ørn   r,  )r   r0   r;   r;   )r   rì   Ú	__class__r  r  )rU   r,  rX   s      rY   Útest_subclassingzTestBSpline.test_subclassingß  sg   € ô	”ô 	ð �O‰OšLÓ)ˆØ�{‰{˜aÒÐÐØ�|‰|‹~×'Ñ'¨1Ò,Ð,Ð,Ø×ÑÓ!×+Ñ+¨qÒ0Ð0Ñ0rn   r  r  r>   c                 ó¶  — d\  }}|j                  dd||z   dz   «      }g d¢}|dz  }|j                  ||«       t        |«      }t        j                  j                  d«      }|j                  |j	                  |¬«      «      }	t        ||	||¬«      }
|
j                  j                  ||   f|d | z   ||dz   d  z   k(  sJ ‚|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        ||	||¬«      j                  «       t        ||	||¬«      j                  d«      t        ||	||¬«      j                  «       t        ||	||¬«      j                  d«      fD ]  }|j                   |
j                   k(  rŒJ ‚ y )Nr¦   r   r0   ©r¨   r©   rÐ   r>   rš   rª   r  r¬   )r4   r5   r6   r  r;   )ri   r   ÚtuplerM   rT   r�   rS   r   r5   r®   r"  rI   r'   rL   r  r  r  )rU   r  rV   rW   r6   r4   ÚshÚpos_axisrŸ   r5   rX   ÚaxÚb1s                rY   Ú	test_axiszTestBSpline.test_axisé  sÐ  € à‰ˆˆ1Ø�K‰K˜˜1˜a !™e a™iÓ(ˆÚˆð ˜!‘8ˆØ
�	‰	�(˜AÔÜ�2‹YˆÜ�i‰i×#Ñ# DÓ)ˆØ�J‰J�s—z‘z r�zÓ*Ó+ˆÜ�A�q˜! $Ô'ˆØ�s‰s�y‰y˜R ™\˜O¨b°°(¨mÑ;¸bÀÈ!ÁÀ¸oÑMÒMÐMÐMà�Z‰Z˜	Ó"ˆÙ�‹u�{‰{˜b  (˜m¨b¯h©hÑ6¸¸HÀQ¹J¸K¸ÑHÒHÐHÐHð —F‘F�7˜Q‘; §¡Ð'ò 	:ˆBÜœ)¤Wñ :Ü  1¨¨Q°RÔ8ó:ð	:ô
 ˜1˜a ¨Ô.×9Ñ9Ó;Ü˜1˜a ¨Ô.×9Ñ9¸!Ó<Ü˜1˜a ¨Ô.×=Ñ=Ó?Ü˜1˜a ¨Ô.×=Ñ=¸aÓ@ðBò 	%ˆBð —7‘7˜aŸf™fÓ$Ð$Ð$ñ		%rn   c           	      ó(  — d}|j                  g d¢«      }|j                  g d¢g d¢g«      }t        |||d¬«      }t        ||dd d …f   |«      }t        ||dd d …f   |«      }t         |d	«      |j                   |d	«       |d	«      g«      «       y )
Nr;   )r   r0   r;   r=   r>   r­   r¨   )r9   r;   r   r9   )r;   r   éýÿÿÿr0   r9   r  r   r0   rD   )rS   r   r   r�   )rU   rV   r6   r4   r5   ÚsplÚspl0Úspl1s           rY   Útest_neg_axiszTestBSpline.test_neg_axis  s‰   € ØˆØ�J‰JÒ,Ó-ˆØ�J‰JšªÐ6Ó7ˆä�a˜˜A BÔ'ˆÜ�q˜!˜Ašq˜D™' 1Ó%ˆÜ�q˜!˜Ašq˜D™' 1Ó%ˆÜ™˜C› "§(¡(©D°«I±t¸C³yÐ+AÓ"BÕCrn   c                 ó¦   — d„ }d}d}dD ]  } ||||«       Œ t        ddd«      D ]  } |||d«       Œ d}t        dd	«      D ]  } |||d
«       Œ y)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                 óB  — t         j                  j                  d«      }t        j                  |j	                  | «      dz  dz
  «      }|j	                  | «      dz  dz
  }|dk(  r|d   |d<   t        ||||¬«      }t        j                  t        |j                  «      |z
  dz
  «      } t        |j                  ||«      |«      }t        j                  ||j                  |«      j                  «       }	t        |	|j                  z  |d	¬
«       t        ||	d	¬
«       y)zY
            To avoid repetition of code the following function is provided.
            rš   é(   r›   rÑ   r9   r   ©r6   Úbc_typer0   ry   rz   N)rM   rT   r�   rž   Úrandom_sampler   ÚeyeÚlenr4   r   Údesign_matrixÚtoarrayr   r5   )
rW   r6   rA  rŸ   r}   r    r‰   r5   Údes_matr_defÚdes_matr_csrs
             rY   Úrun_design_matrix_testszHTestBSpline.test_design_matrix_bc_types.<locals>.run_design_matrix_tests  sû   € ô —)‘)×'Ñ'¨Ó-ˆCÜ—‘˜×)Ñ)¨!Ó,¨rÑ1°BÑ6Ó7ˆAØ×!Ñ! !Ó$ rÑ)¨BÑ.ˆAØ˜*Ò$Ø˜‘u��!‘ä% a¨¨a¸ÔAˆDä—‘”s˜4Ÿ6™6“{ Q‘¨Ñ*Ó+ˆAØ0œ7 4§6¡6¨1¨aÓ0°Ó3ˆLÜ"×0Ñ0°Ø15·±Ø12ó4ç4;±G³Ið ô ˜L¨4¯6©6Ñ1°1¸5ÕAÜ˜L¨,¸UÖCrn   rF   r=   ©ÚclampedÚnaturalrÐ   r;   ú
not-a-knotr­   r©   rÑ   N)rà   )rU   rI  rW   r6   Úbcs        rY   Útest_design_matrix_bc_typesz'TestBSpline.test_design_matrix_bc_types  s|   € ò	Dð* ˆØˆØ(ò 	.ˆBÙ# A q¨"Õ-ð	.ô �q˜!˜Q“ò 	8ˆAÙ# A q¨,Õ7ð	8ð ˆÜ�q˜!“ò 	6ˆAÙ# A q¨*Õ5ñ	6rn   r†   )FTrÑ   Údegreer­   c           	      ó®  — t         j                  j                  d«      }|j                  d|dz   z  «      }t        j                  |«      t        j
                  |«      }}|}t         j                  t        j                  |dz
  |dz
  |«      t        j                  ||d|dz   z  «      t        j                  |dz   |dz   |«      f   }t        j                  t        |«      |z
  dz
  «      }	t        ||	||«      }
t         |
|«      t        j                  ||||«      j                  «       «       t        j                  |dz
  |dz
  |dz   |dz   g«      }|s;t        j                   t"        «      5  t        j                  ||||«       ddd«       yt         |
|«      t        j                  ||||«      j                  «       «       y# 1 sw Y   yxY w)z;Test that design_matrix(x) is equivalent to BSpline(..)(x).rš   rh   r0   r;   r  N)rM   rT   r�   rB  ÚaminÚamaxr´   ri   rC  rD  r   r   rE  rF  Úarrayrc   r   rK   )rU   r†   rP  rŸ   r}   ÚxminÚxmaxr6   r4   r5   Úbsplines              rY   Ú'test_design_matrix_same_as_BSpline_callz3TestBSpline.test_design_matrix_same_as_BSpline_call;  s•  € ô �i‰i×#Ñ# DÓ)ˆØ×Ñ˜b F¨Q¡JÑ/Ó0ˆÜ—W‘W˜Q“Z¤§¡¨£ˆdˆØˆÜ�E‰E”"—+‘+˜d Q™h¨¨q©°&Ó9Ü—+‘+˜d D¨!¨v¸©zÑ*:Ó;Ü—+‘+˜d Q™h¨¨q©°&Ó9ð:ñ ;ˆô �F‰F”3�q“6˜A‘: ‘>Ó"ˆÜ˜!˜Q  ;Ó/ˆÜÙ�A‹Jœ×-Ñ-¨a°°A°{ÓC×KÑKÓMô	
ô
 �H‰H�d˜R‘i ¨¡¨4°#©:°t¸b±yÐAÓBˆÙÜ—‘œzÓ*ñ <Ü×%Ñ% a¨¨A¨{Ô;÷<ð <ô Ù˜“
Ü×%Ñ% a¨¨A¨{Ó;×CÑCÓEõ÷<ð <ús   Å2GÇGc                 ó²  — t         j                  j                  d«      }d}d}t        j                  |j	                  |«      dz  dz
  «      }|j	                  |«      dz  dz
  }t        |||¬«      }t        dd«      D ]V  }|d | }|d | }	t        j                  ||j                  |«      j                  «       }
t        |
|j                  z  |	d	¬
«       ŒX y )Nrš   rh   r=   r?  r›   ©r6   r0   r>   ry   rz   )rM   rT   r�   rž   rB  r   rà   r   rE  r4   rF  r   r5   )rU   rŸ   rW   r6   r}   r    r‰   r  ÚxcÚycrH  s              rY   Útest_design_matrix_x_shapesz'TestBSpline.test_design_matrix_x_shapesW  sÕ   € ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-°Ñ2Ó3ˆØ×Ñ˜aÓ  2Ñ%¨Ñ*ˆä! ! Q¨!Ô,ˆÜ�q˜!“ò 	CˆAØ�2�A�ˆBØ�2�A�ˆBÜ"×0Ñ0°Ø15·±Ø12ó4ç4;±G³Ið ô ˜L¨4¯6©6Ñ1°2¸EÖBñ	Crn   c                 óx   — g d¢}t        j                  d|d«      j                  «       }t        |g d¢gd¬«       y )N)r2   r2   r2   r@   rA   rB   rB   rB   r@   r=   )g      Ð?gm‰à¨ªªâ?gKÚ}\UUÅ?r?   ry   rz   )r   rE  rF  r   )rU   r4   Údes_matrs      rY   Útest_design_matrix_t_shapesz'TestBSpline.test_design_matrix_t_shapesh  s7   € â,ˆÜ×(Ñ(¨¨Q°Ó2×:Ñ:Ó<ˆÜ˜Ú;Ð<Ø"ö	$rn   c                 ó  — t         j                  j                  d«      }d}d}t        j                  |j	                  |«      dz  dz
  «      }|j	                  |«      dz  dz
  }t        |||¬«      }t        t        «      5  t        j                  ||j                  d d d…   |«       d d d «       d}g d	¢}g d
¢}t        t        «      5  t        j                  |||«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   y xY w)Nrš   rh   r=   r?  r›   rZ  r9   r;   )r?   r2   r@   rA   rB   ç      @r„   )rM   rT   r�   rž   rB  r   rI   rK   r   rE  r4   )rU   rŸ   rW   r6   r}   r    r‰   r4   s           rY   Útest_design_matrix_assertsz&TestBSpline.test_design_matrix_assertsp  së   € Ü�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-°Ñ2Ó3ˆØ×Ñ˜aÓ  2Ñ%¨Ñ*ˆÜ! ! Q¨!Ô,ˆô œ:Ó&ñ 	6Ü×!Ñ! ! T§V¡V©D¨b¨D¡\°1Ô5÷	6àˆÚ$ˆÚˆäœ:Ó&ñ 	+Ü×!Ñ! ! Q¨Ô*÷	+ð 	+÷	6ð 	6ú÷	+ð 	+ús   Â(C,ÃC8Ã,C5Ã8DrA  )rL  rK  rÑ   rM  c                 óÒ  — t         j                  j                  d«      }t        j                  |j                  d«      «      }|j                  d«      }|dk(  r|d   |d<   t	        |||¬«      }t        j                  ||¬«      }t        j                  ddd«      }t         ||«       ||«      d¬	«       t        |||¬«      }t        |j                  |j                  d¬	«       y )
Nrš   r›   rÑ   r   r9   ©rA  r0   r\   rz   )rM   rT   r�   rž   r   r   Úfrom_power_basisri   r   r   r5   )	rU   rA  rŸ   r}   r    Úcbr‰   rk   Úbspl_news	            rY   Útest_from_power_basisz!TestBSpline.test_from_power_basis‚  s¸   € ô �i‰i×#Ñ# DÓ)ˆÜ�G‰G�C—J‘J˜r“NÓ#ˆØ�J‰J�r‹NˆØ�jÒ Ø�a‘DˆAˆb‰EÜ˜˜A wÔ/ˆÜ×'Ñ'¨°GÔ<ˆÜ�[‰[˜˜A˜rÓ"ˆÜ™˜2›¡ R£¨uÕ5Ü% a¨°GÔ<ˆÜ˜Ÿ™ §
¡
°Ö7rn   c                 óþ  — t         j                  j                  d«      }t        j                  |j                  d«      «      }|j                  d«      |j                  d«      dz  z   }|dk(  r|d   |d<   t	        |||¬«      }t        j                  ||¬«      }t        ||j                  |¬«      }t        ||j                  |¬«      }t        |j                  |j                  d|j                  z  z   d¬	«       y )
Nrš   r›   r1   rÑ   r   r9   re  r\   rz   )rM   rT   r�   rž   r   r   rf  r   rø   rù   r   r5   )	rU   rA  rŸ   r}   r    rg  r‰   Úbspl_new_realÚbspl_new_imags	            rY   Útest_from_power_basis_complexz)TestBSpline.test_from_power_basis_complex’  sÈ   € ô �i‰i×#Ñ# DÓ)ˆÜ�G‰G�C—J‘J˜r“NÓ#ˆØ�J‰J�r‹N˜SŸZ™Z¨›^¨bÑ0Ñ0ˆØ�jÒ Ø�a‘DˆAˆb‰EÜ˜˜A wÔ/ˆÜ×'Ñ'¨°GÔ<ˆÜ*¨1¨a¯f©f¸gÔFˆÜ*¨1¨a¯f©f¸gÔFˆÜ˜Ÿ™ §¡°"°}·±Ñ2FÑ FÈUÖSrn   c                 óÚ   — t        j                  g d¢«      }t        j                  g d¢«      }t        j                  t	        ||d¬«      d¬«      }t        |j                  g d¢d¬«       y)	a}  
        For x = [0, 1, 2, 3, 4] and y = [1, 1, 1, 1, 1]
        the coefficients of Cubic Spline in the power basis:

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

        It could be shown explicitly that coefficients of the interpolating
        function in B-spline basis are c = [1, 1, 1, 1, 1, 1, 1]
        r<   )r0   r0   r0   r0   r0   rL  re  )r2   r0   r0   r0   r0   r0   r0   r\   rz   N)rM   rT  r   rf  r   r   r5   )rU   r}   r    r‰   s       rY   Útest_from_power_basis_exmpz&TestBSpline.test_from_power_basis_exmp¡  sO   € ô �H‰H’_Ó%ˆÜ�H‰H’_Ó%ˆÜ×'Ñ'¬°A°qÀ)Ô(LØ09ô;ˆä˜Ÿ™Ò 7¸eÖDrn   c                 ód  — t        j                  ddg«      }t        j                  dg«      }|j                  d¬«       |j                  d¬«       t        j                  ddd«      }|j                  d¬«       t	        ||d¬«      }t         ||«      t        j                  |«      dz  «       y )Nr   r0   rA   F©Úwriterh   r3   )rM   rT  Úsetflagsri   r   r   rt   )rU   r4   r5   rk   rX   s        rY   Útest_read_onlyzTestBSpline.test_read_only´  s‰   € ä�H‰H�a˜�VÓˆÜ�H‰H�c�U‹OˆØ	�
‰
˜ˆ
ÔØ	�
‰
˜ˆ
Ôä�[‰[˜˜A˜rÓ"ˆØ
�‰˜%ˆÔ ä�a˜1 Ô"ˆÜ™˜"›œrŸ|™|¨BÓ/°#Ñ5Õ6rn   c                 óB   ‡— t        ‰¬«      }ˆfd„}t        d||«       y )Nrx   c                 óp   •— |j                   \  }} }‰j                  ||   || dz
     d«      } ||«       y )Nr0   i'  )rb   ri   )rÀ   rX   r4   r6   rk   rV   s        €rY   Ú	worker_fnz/TestBSpline.test_concurrency.<locals>.worker_fnÅ  s9   ø€ Ø—e‘e‰GˆAˆq�!Ø—‘˜Q˜q™T 1 a R¨¡T¡7¨EÓ2ˆBÙˆb�Ern   rh   )ra   r(   )rU   rV   rX   rw  s    `  rY   Útest_concurrencyzTestBSpline.test_concurrencyÁ  s    ø€ ä 2Ô&ˆô	ô
 	   I¨qÕ1rn   Úcygwinz'threading.get_native_id not implemented)rŒ   r   c           	      ón  — t        «       }t        j                  ddd«      } ||«      }t        j                  «       }t        j
                  t        |j                  d|› d�«      «      d|j                  j                  |j                  j                  ¬«      }|j                  |d d  t        j
                  t        |j                  d|› d�«      «      d|j                  j                  |j                  j                  ¬«      }|j                  |d d  ||_        ||_        t         ||«      |«       y )	Nr   r0   rh   r4   z.datzw+)ÚmoderH   r®   r5   )ra   rM   ri   Ú	threadingÚget_native_idÚmemmapÚstrÚjoinr4   rH   r®   r5   r   )rU   ÚtmpdirrX   rk   rl   ÚtidÚt_mmÚc_mms           rY   Útest_memmapzTestBSpline.test_memmapÍ  så   € ô  Ó!ˆÜ�[‰[˜˜A˜rÓ"ˆá�R“5ˆä×%Ñ%Ó'ˆÜ�y‰yœ˜VŸ[™[¨1¨S¨E°¨Ó7Ó8¸tØ Ÿs™sŸy™y°·±·	±	ô;ˆà—#‘#ˆ‰QˆÜ�y‰yœ˜VŸ[™[¨1¨S¨E°¨Ó7Ó8¸tØ Ÿs™sŸy™y°·±·	±	ô;ˆà—#‘#ˆ‰QˆØˆŒØˆŒä™˜"›˜xÕ(rn   N);r(  r)  r*  rZ   re   rm   rq   ru   r‚   rŠ   Úskip_xp_backendsr•   r˜   r¡   r¤   r±   r¸   rÂ   rÄ   rÉ   rÎ   rÖ   rÚ   rã   rè   rî   ró   rö   rý   rÿ   r  r	  r  Úxfail_xp_backendsr  r  r$  r.  rc   ÚmarkÚparametrizerà   r6  r<  rO  rX  r]  r`  rc  ri  rm  ro  rt  rx  ÚxfailÚsysÚplatformrd   r…  r+  rn   rY   r.   r.   2   sM  „ ò!òF
ò)ò*ò
>òDò 
ñ$ �lÐ+OÔPÙ�kÐ*KÔLÙ�g kÔ2ñ/ó 3ó Mó Qð/òAò
;ò1ò	.òEò&Wòò?ò (ò
ò6?òFòGñ4 �fÐ%9Ô:ñSó ;ðSò
Aò Mò:ò#ò
Fò7ò+ñ, �vÐ&PÔQñBó RðBò4	1ò!ò1ð ‡[�[×Ñ˜V¡U¨2¨q£\Ó2ñ%ó 3ð%ò:Dò(6ðT ‡[�[×Ñ˜]Ò,EÓFØ‡[�[×Ñ˜X¡u¨Q£xÓ0ñó 1ó Gðò4Cò"$ò+ð$ ‡[�[×Ñ˜Yò )Có Dñ8óDð8ð ‡[�[×Ñ˜Yò )Có DñTóDðTòEò&7ò	2ð ‡[�[×ÑØ�‰˜Ñ Ø8Øð ó ñ
)óñ
)rn   r.   Úinsert_knotc                   ó>  — e Zd Zej                  j                  dg d¢«      d„ «       Zej                  j                  dg d¢«      d„ «       Zd„ Zej                  j                  dg d	¢«      d
„ «       Z	ej                  j                  dddg«      d„ «       Z
d„ Zd„ Zy)Ú
TestInsertÚxval)r?   r2   rD   r>   ç      @ç      @c           	      óÞ  — |j                  d|j                  ¬«      }|j                  |«      dz  }t        ||d¬«      }t	        |j
                  «      t	        |j                  «      |j                  f}t        t        ||«      Ž }|j                  |«      }t        |j
                  |j                  |j
                  «      d¬«       t        |j                  |j                  |j                  d |j                   dz
   «      d¬«       ||d   k7  r|n|d d }	|j                  |	d	|dd  |d d z   z  f«      }	t         ||	«       ||	«      d¬«       |j                  |«      dz  }
t        ||
d¬«      }t        ||j                  ||
fd¬
«      d¬«      }|j                  |«      }t        |j
                  |j
                  d¬«       t        |j                  |j                  |j                  |«      j                  |j                  |«      j                  fd¬
«      d¬«       ||d   k7  r|n|d d }	|j                  |	d	|dd  |d d z   z  f«      }	t         ||	«       ||	«      d¬«       y )NrÐ   rG   r=   rZ  r\   rz   r0   r9   rÓ   r  )rQ   rR   Úsinr   r	   r4   r5   r6   r   r   r�  r   rS   ÚconcatÚcosr�   )rU   r�  rV   r}   r    r9  rb   Úspl_1fÚspl_1rk   Úy1Úspl_y1Úspl_yyÚspl_yy1s                 rY   Útest_insertzTestInsert.test_insertí  s  € ð �I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1‹I�q‰LˆÜ   A¨Ô+ˆä  §¡Ó'Ô):¸3¿5¹5Ó)AÀ3Ç5Á5ÐIˆÜœ&  sÓ+Ð,ˆØ—‘ Ó%ˆä˜Ÿ™ §¡¨F¯H©HÓ!5¸EÕBÜ˜Ÿ™ §¡¨F¯H©H°Y°s·u±u°f¸Q±hÐ,?Ó!@ÀuÕMð ˜!˜B™%’-‰Q Q s¨ VˆØ�Y‰Y˜˜C  1 2 ¨¨3¨B¨¡Ñ0Ð1Ó2ˆÜ™˜B›¡ r£°Õ7ð �V‰V�A‹Y˜‰\ˆÜ# A r¨QÔ/ˆÜ# A r§x¡x°°B°¸a xÓ'@ÀAÔFˆØ×$Ñ$ TÓ*ˆä˜Ÿ	™	 5§7¡7°Õ7ÜØ�I‰IØ�H‰H�c—o‘o dÓ+×-Ñ-¨v×/AÑ/AÀ$Ó/G×/IÑ/IÐJÐQRˆHÓSØõ	
ð ˜!˜B™%’-‰Q Q s¨ VˆØ�Y‰Y˜˜C  1 2 ¨¨3¨B¨¡Ñ0Ð1Ó2ˆÜ™˜r›
¡G¨B£K°eÖ<rn   zxval, m))r?   r;   )r2   r=   )r  r­   )r>   r;   )r’  r;   c           	      óª  — |j                  d|j                  ¬«      }|j                  |«      dz  }t        ||d¬«      }t	        t        |t        |j                  «      t        |j                  «      |j                  f|¬«      Ž }|j                  ||«      }t        |j                  |j                  |j                  «      d¬«       t        |j                  |j                  |j                  d |j                   dz
   «      d¬«       ||d	   k7  r|n|d d	 }	|j                  |	d
|dd  |d d	 z   z  f«      }	t         ||	«       ||	«      d¬«       y )NrÐ   rG   r=   rZ  ©Úmr\   rz   r0   r9   rÓ   )rQ   rR   r”  r   r   r   r	   r4   r5   r6   r�  r   rS   r•  )
rU   r�  r   rV   r}   r    r9  r—  r˜  rk   s
             rY   Útest_insert_multizTestInsert.test_insert_multi  s"  € ð �I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1‹I�q‰LˆÜ   A¨Ô+ˆäÜØÔ(¨¯©Ó/Ô1BÀ3Ç5Á5Ó1IÈ3Ï5É5ÐQÐUVôð
ˆð
 —‘  aÓ(ˆä˜Ÿ™ §¡¨F¯H©HÓ!5¸EÕBÜ˜Ÿ™ §¡¨F¯H©H°Y°s·u±u°f¸Q±hÐ,?Ó!@ÀuÕMà˜!˜B™%’-‰Q Q s¨ VˆØ�Y‰Y˜˜C  1 2 ¨¨3¨B¨¡Ñ0Ð1Ó2ˆÜ™˜B›¡ r£°Ö7rn   c                 ó6  — t         j                  j                  d«      }d\  }}|j                  t        j                  |j                  ||z   dz   ¬«      «      «      }|j                  |j                  |ddf¬«      «      }t        |||«      }|j                  |j                  ||dz      || dz
     ¬«      «      }|j                  |«      }	|j                  |j                  ||dz      || dz
     d¬	«      «      }
t         ||
«       |	|
«      d
¬«       y )Né90  rE   r0   rª   r=   r;   )ÚlowÚhighr³   ©r¤  r¥  r«   r\   rz   )	rM   rT   Údefault_rngrS   rž   Úuniformr   r�  r   )rU   rV   rŸ   rW   r6   r4   r5   r9  Úxvr˜  rk   s              rY   Útest_insert_randomzTestInsert.test_insert_random(  sô   € Ü�i‰i×#Ñ# EÓ*ˆØ‰ˆˆ1à�J‰J”r—w‘w˜sŸ{™{°°!±°A±˜{Ó6Ó7Ó8ˆØ�J‰J�s—{‘{¨¨A¨q¨	�{Ó2Ó3ˆÜ�a˜˜AÓˆà�Z‰Z˜Ÿ™¨¨!¨A©#©°Q¸°r¸!±t±W˜Ó=Ó>ˆØ—‘ Ó#ˆà�Z‰Z˜Ÿ™¨¨!¨A©#©°Q¸°r¸!±t±WÀ2˜ÓFÓGˆÜ™˜B›¡ r£°Ö7rn   r©  )	r   çš™™™™™¹?r@   rB   ç      @ç      @ç      @gffffff@r’  c                 óÔ  — |j                  d|j                  ¬«      }|j                  |«      dz  }t        ||d¬«      \  }}}t	        |j
                  ||f«      \  }}t        |||d¬«      }|j                  |«      }	t        ||j                  d¬«      \  }
}}t        |	j                  |j                  |
«      d	¬
«       t        |	j                  d | dz
   |j                  |d | dz
   «      d	¬
«       t        j                  j                  d«      j!                  ddd¬«      }|j                  |«      }t         |	|«      |j                  t#        ||
||f«      «      d	¬
«       y )NrÐ   rG   r=   rZ  rÑ   r…   T©Úperr\   rz   r0   rš   r   r©   é)   r¦  )rQ   rR   r”  r   r|   rS   r   r�  r   rb   r   r4   r5   rM   rT   r§  r¨  r   )rU   r©  rV   r}   r    r4   r5   r6   r9  r˜  ÚtfÚcfrÈ   rk   s                 rY   Útest_insert_periodiczTestInsert.test_insert_periodic6  s0  € ð �I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1‹I�q‰LˆÜ˜˜A Ô#‰ˆˆ1ˆaÜ�2—:‘:  1˜vÓ&‰ˆˆ1Ü�a˜˜A¨:Ô6ˆà—‘ Ó#ˆÜ˜2˜sŸw™w¨DÔ1‰	ˆˆB�ä˜Ÿ™ §¡¨B£°eÕ<Ü˜Ÿ™  !  A¡˜¨¯
©
°2°e¸°r¸!±t°9Ó(=ÀEÕJä—	‘	×%Ñ% dÓ+×3Ñ3¸ÀÈÐ3ÓKˆØ�Z‰Z˜ÓˆÜ™˜b›	 2§:¡:¬e°E¸BÀÀA¸;Ó.GÓ#HÈuÖUrn   r†   NrÑ   c                 óŠ  — |j                  d|j                  ¬«      dz  t        j                  z  }|j	                  |«      |j                  |«      }}t        ||d|z  z   d¬«      }||_        t        ||d¬«      }||_        t        ||d¬«      }||_        d}	|j                  |	«      }
|j                  |	«      }|j                  |	«      }t        |
j                  |j                  d¬	«       t        |
j                  |j                  d¬	«       t        |
j                  |j                  d|j                  z  z   d¬	«       y )
NrÐ   rG   r;   r1   r=   rZ  ç      @r\   rz   )rQ   rR   rM   Úpir”  r–  r   r†   r�  r   r4   r5   )rU   r†   rV   r}   Úy_reÚy_imr9  Úspl_reÚspl_imr©  r˜  Úspl_1reÚspl_1ims                rY   Útest_complexzTestInsert.test_complexJ  s  € à�I‰I�a˜rŸz™zˆIÓ*¨QÑ.´·±Ñ6ˆØ—V‘V˜A“Y §¡ q£	ˆdˆä   D¨2¨d©7¡N°aÔ8ˆØ%ˆŒä# A t¨qÔ1ˆØ(ˆÔä# A t¨qÔ1ˆØ(ˆÔàˆØ—‘ Ó#ˆØ×$Ñ$ RÓ(ˆØ×$Ñ$ RÓ(ˆä˜Ÿ™ §¡°Õ7Ü˜Ÿ™ §¡°Õ7Ü˜Ÿ™ §¡¨R°·	±	©\Ñ!9ÀÖFrn   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 «       t        t        «      5  |j                  |«       d d d «       y # 1 sw Y   Œ3xY w# 1 sw Y   y xY w)Nr·  r=   r   r0   ©r;   r=   r>   r­   r©   rÑ   r…   Tr°  )	rM   rT  ÚonesrD  r   rI   rK   r   r�  )rU   r©  r6   r4   r5   r9  s         rY   Ú+test_insert_periodic_too_few_internal_knotsz6TestInsert.test_insert_periodic_too_few_internal_knotsa  sÃ   € ð ˆØˆÜ�H‰H�a�S˜!˜A™#‘Y¢Ñ-°°°Q°q±S±	Ñ9Ó:ˆÜ�G‰G”C˜“F˜Q‘J ‘NÓ#ˆÜ�a˜˜A¨:Ô6ˆäœ:Ó&ñ 	,Ü�2˜˜1˜a�y dÕ+÷	,ô œ:Ó&ñ 	 Ø�O‰O˜BÔ÷	 ð 	 ÷	,ð 	,ú÷	 ð 	 ús   Á2B6ÂCÂ6B?ÃCc                 ó  — 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  |j                  d«       d d d «       t        t        «      5  |j                  d«       d d d «       t        t        «      5  |j                  dd¬«       d d d «       y # 1 sw Y   Œ^xY w# 1 sw Y   ŒAxY w# 1 sw Y   y xY w)	Nr=   r   r0   rÁ  r©   r9   rÐ   rŸ  )rM   rT  rÂ  rD  r   rI   rK   r�  )rU   r6   r4   r5   r9  s        rY   Útest_insert_no_extrapz TestInsert.test_insert_no_extrapu  sã   € ØˆÜ�H‰H�a�S˜!˜A™#‘Y¢Ñ-°°°Q°q±S±	Ñ9Ó:ˆÜ�G‰G”C˜“F˜Q‘J ‘NÓ#ˆÜ�a˜˜AÓˆäœ:Ó&ñ 	 Ø�O‰O˜BÔ÷	 ô œ:Ó&ñ 	Ø�O‰O˜AÔ÷	ô œ:Ó&ñ 	$Ø�O‰O˜A ˆOÔ#÷	$ð 	$÷	 ð 	 ú÷	ð 	ú÷	$ð 	$ús$   Á.CÂC)Ã C5ÃC&Ã)C2Ã5C>)r(  r)  r*  rc   rˆ  r‰  r�  r¡  rª  rµ  r¿  rÃ  rÅ  r+  rn   rY   r�  r�  ê  s»   „ ð ‡[�[×Ñ˜VÒ%AÓBñ!=ó Cð!=ðH ‡[�[×ÑØÒCóñ8óð8ò&8ð ‡[�[×Ñ˜Tò $8ó ñVóðVð" ‡[�[×Ñ˜]¨T°:Ð,>Ó?ñGó @ðGò, ó($rn   r�  c            
      ó¼   — dd„} dD ]S  }t        |¬«      }t        t        |«      «      D ].  \  }} | ||«       t        d|dz   «      D ]  } | |||dd«       Œ Œ0 ŒU y )Nc           
      ó  — | 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                  › �¬«       y )	Nr   r«  rÓ   r0   r9   zder = z  k = )r^   r_   Úerr_msg)rb   rM   Úuniquer´   r   r   r6   )	rX   r  rÝ   r^   r_   r4   r5   r6   r}   s	            rY   Úcheck_splevz,test_knots_multiplicity.<locals>.check_splev‰  s’   € à—%‘%‰ˆˆ1ˆaÜ�I‰I�a‹LˆÜ�E‰E�!�A‘$�s‘(˜C  1 2 ¨¨2¨A¨¡Ñ/°°2±°s±Ð:Ñ;ˆÜœ˜a ! Q¨ ¨CÓ0±!°A°s³)Ø °°s°e¸6À!Ç#Á#ÀÐ.Gö	Irn   ©r0   r;   r=   r>   r­   rZ  r0   rÒ   )r   ry   ry   )ra   Ú	enumerateÚ_make_multiplesrà   )rÊ  r6   rX   r  r5  rÝ   s         rY   Útest_knots_multiplicityrÎ  …  ss   € óIð ò 6ˆÜ !Ô$ˆÜœ¨qÓ1Ó2ò 	6‰EˆAˆrÙ˜˜AÔÜ˜Q  !¡“}ò 6�Ù˜B  3¨¨uÕ5ñ6ñ	6ñ6rn   c                 ób  — |dk(  r||   | cxk  r||dz      k  rdS  dS |||z      ||   k(  rd}n)| ||   z
  |||z      ||   z
  z  t        | |dz
  ||«      z  }|||z   dz      ||dz      k(  rd}||z   S |||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   r0   r2   r?   ©Ú_naive_B©r}   r6   r  r4   Úc1Úc2s         rY   rÑ  rÑ  ›  s  € ð
 	ˆA‚vØ˜‘d˜aÔ( ! A a¡C¡&Ò(ˆsÐ1Ð(¨cÐ1Øˆˆ1‰�v��1‘‚~Ø‰à�!�A‘$‰h˜˜1˜Q™3™ ! A¡$™Ñ'¬(°1°a¸±c¸1¸aÓ*@Ñ@ˆØˆˆ1‰ˆQ‰�x�1�Q�q‘S‘6ÒØˆð �‰GÐð ��!‘�A‘‰h˜‰l˜Q˜q ™s 1™u™X¨¨!¨A©#©Ñ.Ñ/´(¸1¸aÀ¹cÀ1ÀQÁ3ÈÓ2JÑJˆØ�‰GÐrn   c                ó   ‡ ‡‡‡‡— ‰ ‰‰   k(  r‰Šn|j                  ‰‰ «      dz
  Š‰‰   ‰ cxk  r‰‰dz      k  sJ ‚ J ‚‰‰k\  r‰‰j                  d   ‰z
  k  sJ ‚t        ˆˆˆˆˆ fd„t        d‰dz   «      D «       «      S )z=
    Naive B-spline evaluation. Useful only for testing!
    r0   r   c              3   óR   •K  — | ]  }‰‰|z
     t        ‰‰‰|z
  ‰«      z  –— Œ  y ­w©NrÐ  )Ú.0r  r5   r  r6   r4   r}   s     €€€€€rY   ú	<genexpr>z_naive_eval.<locals>.<genexpr>¸  s-   øè ø€ ÒF°1ˆq��1‘‰vœ  A q¨¡s¨AÓ.Õ.ÑFùs   ƒ$')Úsearchsortedr®   Úsumrà   )r}   r4   r5   r6   rV   r  s   ```` @rY   r�   r�   ­  sŠ   ü€ ð 	ˆAˆa‰D‚yØ‰à�O‰O˜A˜qÓ! AÑ%ˆàˆQ‰4�1Ô˜˜!˜A™#™ÒÐÑÐÐØ�Š6�a˜!Ÿ'™' !™* q™.Ò(Ð(Ð(Ü×F¼¸aÀÀ1Á»ÔFÓFÐFrn   c                óÜ   ‡ ‡‡‡— ‰j                   d   ‰dz   z
  }|‰dz   k\  sJ ‚‰j                   d   |k\  sJ ‚‰‰   ‰ cxk  r	‰|   k  sJ ‚ J ‚t        ˆˆˆˆ fd„t        |«      D «       «      S )z'Naive B-spline evaluation, another way.r   r0   c              3   óF   •K  — | ]  }‰|   t        ‰‰|‰«      z  –— Œ y ­wr×  rÐ  ©rØ  r  r5   r6   r4   r}   s     €€€€rY   rÙ  z _naive_eval_2.<locals>.<genexpr>Á  s%   øè ø€ Ò=¨qˆq�‰t”h˜q ! Q¨Ó*Õ*Ñ=ùó   ƒ!)r®   rÛ  rà   )r}   r4   r5   r6   rV   rW   s   ````  rY   r‘   r‘   »  sr   û€ à	�‰�‰
�a˜‘cÑ€AØ��!‘Š8€Oˆ8Ø�7‰7�1‰:˜Š?Ðˆ?ØˆQ‰4�1Ô˜˜!™ÒÐÑÐÐÜÖ=´E¸!³HÔ=Ó=Ð=rn   c                 ó  — t        |«      |dz   z
  }||dz   k\  sJ ‚|j                  d   |k\  sJ ‚d}t        |«      D ]F  } t        j                  ||||z   dz    d¬«      | «      }|||   t        j                  |«      z  z  }ŒH |S )Nr0   r   r?   r;   Fr…   )rD  r®   rà   r   rì   rM   Ú
nan_to_num)r}   r4   r5   r6   rW   Úsr  rX   s           rY   rõ   rõ   Ä  s˜   € ÜˆA‹�!�A‘#‰€AØ��!‘Š8€Oˆ8Ø�7‰7�1‰:˜Š?Ðˆ?Ø
€AÜ�1‹Xò %ˆØ@ŒG×!Ñ! ! A a¨¡c¨!¡e *¸%Ô@ÀÓCˆØ	ˆQˆq‰T”B—M‘M !Ó$Ñ$Ñ$‰ð%ð €Hrn   c                 óÖ   — t        j                  t        | «      «      } t        j                  | | dk  | dkD  z  | dk\  | dk  z  | dk\  | dk  z  gd„ d„ d„ g«      }|j	                  |«      S )z+ A linear B-spline function B(x | 0, 1, 2).r   r;   r0   c                  ó   — y©Nr?   r+  ©r}   s    rY   ú<lambda>zB_012.<locals>.<lambda>Õ  ó   � rn   c                 ó   — | S r×  r+  ræ  s    rY   rç  zB_012.<locals>.<lambda>Õ  s   € °A€ rn   c                 ó   — d| z
  S ©Nr@   r+  ræ  s    rY   rç  zB_012.<locals>.<lambda>Õ  s
   € ÀÀAÁ€ rn   )rM   Ú
atleast_1dr	   Ú	piecewiserS   )r}   rV   Úresults      rY   r{   r{   Ï  sx   € ä
�‰Ô'¨Ó*Ó+€AÜ�\‰\˜!˜q 1™u¨¨Q©Ñ/Ø !™V¨¨A©Ñ.Ø !™V¨¨Q©Ñ/ð1ñ )©+±~ÐFóH€Fð �:‰:�fÓÐrn   c                 óì   — t        j                  t        | «      «      } | dk  | dkD  | dk  z  | dkD  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).r0   r;   r   c                 ó   — | | z  dz  S rë  r+  ræ  s    rY   rç  zB_0123.<locals>.<lambda>Þ  s   € ˜1˜Q™3˜r™6€ rn   c                 ó   — d| dz
  dz  z
  S )Ng      è?r  r;   r+  ræ  s    rY   rç  zB_0123.<locals>.<lambda>ß  s   € ˜4 1 T¡6¨A¡+Ñ-€ rn   c                 ó   — d| z
  dz  dz  S )NrA   r;   r+  ræ  s    rY   rç  zB_0123.<locals>.<lambda>à  s   € ˜B˜q™D 1™9 q™=€ rn   c                  ó   — y©Nr2   r+  ræ  s    rY   rç  zB_0123.<locals>.<lambda>â  rè  rn   c                  ó   — y)Ng       Àr+  ræ  s    rY   rç  zB_0123.<locals>.<lambda>ã  rè  rn   c                  ó   — yrô  r+  ræ  s    rY   rç  zB_0123.<locals>.<lambda>ä  rè  rn   znever be here: der=)rM   rì  r	   rK   rí  )r}   rÝ   ÚcondsÚfuncsÚpiecess        rY   rò   rò   Ù  s“   € ä
�‰Ô'¨Ó*Ó+€AØ�‰U�Q˜‘U˜q 1™uÑ% q¨1¡uÐ-€EØ
ˆa‚xÙ!Ù-Ù(ð*‰ð 
�ŠÙÙÙð‰ô Ð.¨s¨eÐ4Ó5Ð5Ü�\‰\˜!˜U EÓ*€FØ€Mrn   é#   r=   c                 ó(  — t         j                  j                  d«      }t        j                  |j                  | |z   dz   «      «      }|j                  | «      }|j	                  |«      |j	                  |«      }}t        j                  |||«      S )Né{   r0   )rM   rT   r�   rž   rS   r   Úconstruct_fast)rW   r6   rV   rŸ   r4   r5   s         rY   ra   ra   ë  sp   € Ü
�)‰)×
Ñ
 Ó
$€CÜ
�‰�—
‘
˜1˜Q™3˜q™5Ó!Ó"€AØ�
‰
�1‹€AØ�:‰:�a‹=˜"Ÿ*™* Q›-€q€AÜ×!Ñ! ! Q¨Ó*Ð*rn   c              #   ó€  K  — | j                   | j                  }}| j                  j                  «       }|d   |dd |d   |d<   t	        |||«      –— | j                  j                  «       }|d   |d|dz    t	        |||«      –— | j                  j                  «       }|d   || dz
  d t	        |||«      –— y­w)	zIncrease knot multiplicity.é   é   é   r§   r   Nr0   r9   )r5   r6   r4   Úcopyr   )rX   r5   r6   Út1s       rY   rÍ  rÍ  ó  sµ   è ø€ à�3‰3�—‘€q€Aà	
�‰�‰‹€BØ�2‘€B€rˆ"€IØ�‰V€B€r�FÜ
�"�a˜Ó
Òà	
�‰�‰‹€BØ�!‰u€B€tˆˆ!‰€HÜ
�"�a˜Ó
Òà	
�‰�‰‹€BØ�2‘€Bˆ€rˆ!�t€u€IÜ
�"�a˜Ó
Óùs   ‚B<B>c                   óN   — 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y)ÚTestInteropc                 ól  — 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                  «      | _        y )Nr   rB   r²  r  )rM   ri   r¸  r–  r   r4   r5   r6   rb   rk   rÍ   rX   ÚxnewÚc_ÚdstackrÔ  r   Úb2)rU   rk   rÍ   rX   rÔ  s        rY   Úsetup_methodzTestInterop.setup_method	  sÐ   € Ü�[‰[˜˜BœrŸu™u™H bÓ)ˆÜ�V‰V�B‹ZˆÜ˜r 2Ó&ˆØ—C‘C˜Ÿ™˜aŸc™c�?ˆŒØ#% r¨1Ð ˆŒ�”˜$œ&ä—K‘K  2¤b§e¡e¡8¨RÓ0ˆŒ	ä�U‰U�1—3‘3˜Ÿ™˜QŸS™S�=Ñ!ˆÜ—)‘)˜R ˜HÓ%ˆŒÜ˜!Ÿ#™#˜tŸw™w¨¯©Ó,ˆ�rn   c                 ó  — | j                   | j                  | j                  }}}t        t	        ||«       ||«      dd¬«       t        t	        ||j
                  «       ||«      dd¬«       t        t        j                  |D �cg c]  }t	        ||«      ‘Œ c}«       ||«      dd¬«       t        t        d¬«      5  t	        ||«       d d d «       t        t        d|j                  j                  «      «      dz   }|j                  j                  |«      }|j                  ||j                   f}t        t        j                  t	        ||«      «       ||«      j                  |«      dd¬«       y c c}w # 1 sw Y   Œ°xY w)Nr\   r]   zCalling splev.. with BSpline©Úmatchr0   ©r   )r  rX   r
  r   r   rb   rM   rS   rI   rK   r1  rà   r5   r"  Ú	transposer4   r6   )rU   r  rX   r
  r}   r2  rú   rb   s           rY   Ú
test_splevzTestInterop.test_splev  s.  € Ø—i‘i §¡¨¯©�ˆaˆô 	œ˜d A›Ù˜$› e°%õ	9äœ˜d A§E¡EÓ*Ù˜$› e°%õ	9äœŸ
™
¸Ö#>°A¤E¨!¨Q¥KÒ#>Ó?Ù˜$› e°%õ	9ô
 œ:Ð-KÔLñ 	Ü�$˜ŒO÷	ô ”5˜˜BŸD™DŸI™IÓ&Ó'¨$Ñ.ˆØ�T‰T�^‰^˜BÓˆØ�t‰t�R˜Ÿ™ÐˆÜœŸ
™
¤5¨¨sÓ#3Ó4Ù˜4›×*Ñ*¨2Ó.°UÀö	Hùò $?÷
	ð 	ús   ÂE5Â>E:Å:F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¬«       y )Nr   r\   rz   r0   r;   T)Úfull_output)rk   rÍ   r   r  r   r   r   )rU   r}   r    rb   r4   r5   r6   Útck_frÀ   rÍ   rX   s              rY   Útest_splrepzTestInterop.test_splrep1  sà   € Ø�w‰w˜Ÿ™ˆ1ˆä�Q˜‹lˆÜ—,‘,˜q !Ó$‰ˆˆ1ˆaÜ˜˜A™ ¨Õ.Ü˜˜A™ ¨Õ.Ø�1‰v˜Š{Ðˆ{ô    1°$Ô7‰ˆˆq�!�QÜ˜˜a™ !¨%Õ0Ü˜˜a™ !¨%Õ0Ø�Q‰x˜1Š}Ðˆ}ô �1�c‹]ˆÜ˜˜2 EÕ*ô �SˆMˆÜ˜™1˜Q›4 eÖ,rn   c                 ó&  — | j                   | j                  }}t        j                  ||f   }t	        t
        «      5  t        ||«       d d d «       t	        t
        «      5  t        j                  ||«       d d d «       t	        t        d¬«      5  t        |d d |d d «       d d d «       t	        t        d¬«      5  t        j                  |d d |d d «       d d d «       y # 1 sw Y   ŒšxY w# 1 sw Y   ŒxxY w# 1 sw Y   ŒXxY w# 1 sw Y   y xY w)Núm > k must holdr  r=   )	rk   rÍ   rM   r  rI   rK   r   r  rJ   )rU   r}   r    Úy2s       rY   Útest_splrep_errorszTestInterop.test_splrep_errorsI  sî   € ð �w‰w˜Ÿ™ˆ1ˆÜ�U‰U�1�a�4‰[ˆÜœ:Ó&ñ 	Ü�1�bŒM÷	äœ:Ó&ñ 	 Ü�L‰L˜˜BÔ÷	 ô œ9Ð,=Ô>ñ 	!Ü�1�R�a�5˜!˜B˜Q˜%Ô ÷	!äœ9Ð,=Ô>ñ 	'Ü�L‰L˜˜2˜A˜  " 1 Ô&÷	'ð 	'÷	ð 	ú÷	 ð 	 ú÷	!ð 	!ú÷	'ð 	'ús/   ½C#Á!C/ÂC;Â=DÃ#C,Ã/C8Ã;DÄDc                 ó  — t        j                  dt         j                  ¬«      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¬«       y )	Nr  rG   ©r=   r­   r\   rz   r   T)râ  r  )	rM   rQ   rR   r‡   r   r  r   rS   r   )	rU   r}   rX   Úurb   Úu1Úb_fÚu_frÀ   s	            rY   Útest_splprepzTestInterop.test_splprepY  sÈ   € Ü�I‰I�b¤§
¡
Ô+×3Ñ3°FÓ;ˆÜ�q‹z‰ˆˆ1Ü—-‘- Ó"‰ˆˆRô 	˜˜2 EÕ*ÜœŸ
™
¤5¨¨A£;Ó/°¸Õ?ÜœŸ
™
¤5¨¨C£=Ó1°1¸5ÕAô & a¨1¸$Ô?Ñ‰
ˆˆc�A�q˜!Ü˜˜3 UÕ+ÜœŸ
™
¤5¨¨c£?Ó3°Q¸UÖCrn   c                 óŒ  — t        j                  d«      j                  d«      }t        t        d¬«      5  t        |«       d d d «       t        t        d¬«      5  t        j
                  |«       d d d «       t        j                  ddd¬«      }t        t        d	¬«      5  t        |g«       d d d «       t        t        d	¬«      5  t        j
                  |g«       d d d «       g d
¢}t        t        d¬«      5  t        |g«       d d d «       t        t        d¬«      5  t        j
                  |g«       d d d «       g d¢}g d¢}t        t        d¬«      5  t        |gd |gŽ  d d d «       y # 1 sw Y   �Œ0xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒÜxY w# 1 sw Y   Œ¸xY w# 1 sw Y   ŒšxY w# 1 sw Y   ŒvxY w# 1 sw Y   y xY w)Né<   r¬   ztoo many values to unpackr  r   r?  r=   )Únumr  )ç– Ð>IÀr$  ç– Ð>KÀr%  zError on input data)r0   r=   r;   r>   )r   g333333Ó?gš™™™™™É?r0   )	rM   rQ   r‡   rI   rK   r   r  ri   rJ   )rU   r}   r  s      rY   Útest_splprep_errorszTestInterop.test_splprep_errorsh  sy  € ä�I‰I�eÓ×$Ñ$ YÓ/ˆÜœ:Ð-HÔIñ 	Ü�AŒJ÷	äœ:Ð-HÔIñ 	Ü�M‰M˜!Ô÷	ô �K‰K˜˜2 1Ô%ˆÜœ9Ð,=Ô>ñ 	Ü�Q�CŒL÷	äœ9Ð,=Ô>ñ 	Ü�M‰M˜1˜#Ô÷	ò
 EˆÜœ:Ð-BÔCñ 	Ü�Q�CŒL÷	äœ:Ð-BÔCñ 	Ü�M‰M˜1˜#Ô÷	ò ˆÚˆÜœ:Ð-BÔCñ 	%Ü�q�c˜4 �^Ñ$÷	%ð 	%÷/	ñ 	ú÷	ñ 	ú÷
	ð 	ú÷	ð 	ú÷	ð 	ú÷	ð 	ú÷	%ð 	%úsS   ¶E0ÁE=Â"F
ÃFÃ<F"Ä"F.ÅF:Å0E:Å=FÆ
FÆFÆ"F+Æ.F7Æ:G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 «       |j                  j                  dd	d
«      }t        j                  t        |j                  ||j                  fd¬«      «      }|j                  dk(  sJ ‚t        ||z
  t        j                  |«      d¬«       y # 1 sw Y   Œ“xY w)N)rÓ   r  rD   r·  r½   r]   zCalling sproot.. with BSpliner  rw   )Úmestr0   r;   r   )r=   r;   r>   rÒ   rz   )rX   r
  rM   rT  r¸  r   r   r4   r5   r6   rI   rK   r  rS   r®   rá   )rU   rX   r
  ÚrootsÚc2rÚrrs         rY   Útest_sprootzTestInterop.test_sproot…  sõ   € Ø—‘˜Ÿ™ˆ2ˆÜ—‘Ò-Ó.¬r¯u©uÑ4ˆäœ˜q›	 5¨t¸$Õ?Üœ §¡ Q§S¡S¨!¯#©#˜Ó/°¸TÈÕMô œ:Ð-LÔMñ 	 Ü�2˜BÕ÷	 ð �d‰d�n‰n˜Q  1Ó%ˆÜ�Z‰Zœ §¡ c¨2¯4©4Ð0°rÔ:Ó;ˆØ�x‰x˜9Ò$Ð$Ð$Ü˜˜U™
¤B§M¡M°"Ó$5¸EÖB÷	 ð 	 ús   Â#EÅEc           	      óJ  — | j                   | j                  }}t        t        dd|«      t        dd|j                  «      dd¬«       t        t        dd|«      |j                  dd«      dd¬«       t        t        d¬«      5  t        dd|«       d d d «       |j                  j                  ddd«      }t        j                  t        dd|j                  ||j                  f«      «      }|j                  d	k(  sJ ‚t        |t        dd|«      dd¬
«       y # 1 sw Y   Œ‰xY w)Nr   r0   ry   F)r^   Úcheck_0dzCalling splint.. with BSpliner  r;   )r=   r;   )r^   Úcheck_shape)rX   r
  r   r   rb   r  rI   rK   r5   r  rM   rS   r4   r6   r®   )rU   rX   r
  r*  Úintegrs        rY   Útest_splintzTestInterop.test_splint–  s÷   € à—‘˜Ÿ™ˆ2ˆäœ˜q ! Q›Ü˜q ! Q§U¡UÓ+°%À%õ	Iäœ˜q ! Q›ØŸ™ A qÓ)°Àõ	Gô œ:Ð-LÔMñ 	Ü�1�a˜Ô÷	ð �d‰d�n‰n˜Q  1Ó%ˆÜ—‘œF 1 a¨"¯$©$°°R·T±TÐ):Ó;Ó<ˆØ�|‰|˜vÒ%Ð%Ð%Ü˜Ü˜q ! Q›¨eÀö	H÷	ð 	ús   ÂDÄD"c           	      ó¼  — | j                   | j                  fD �]@  }t        |j                  «      t        |j                  «      z
  }|j                  j                  «       }|dkD  r9t        j                  |t        j                  |f|j                  dd  z   «      f   }dD ]µ  }t        |«      }t        j                  |j                  j                  «       ||j                  f«      }t        |j                  |d   d¬«       t        |j                  |d   d¬«       |j                  |d   k(  sJ ‚t        |t        «      sJ ‚t        |t         «      rŒµJ ‚ �ŒC y ©Nr   r0   ©r0   r;   r=   r\   rz   r;   )rX   r
  rD  r4   r5   r  rM   r´   Úzerosr®   r   r  r6   r   r   r   r1  ©rU   rX   ÚctÚb_crW   ÚbdÚtck_ds          rY   Útest_splderzTestInterop.test_splderª  s  € Ø—&‘&˜$Ÿ'™'Ð"ó 	0ˆAä�Q—S‘S“œC §¡›HÑ$ˆBØ—#‘#—(‘(“*ˆCØ�AŠvÜ—e‘e˜C¤§¡¨2¨%°#·)±)¸A¸B°-Ñ*?Ó!@Ð@ÑA�àò 0�Ü˜A“Y�ÜŸ™ a§c¡c§h¡h£j°#°q·s±sÐ%;Ó<�Ü §¡ e¨A¡h°UÕ;Ü §¡ e¨A¡h°UÕ;Ø—t‘t˜u Q™xÒ'Ð'Ð'Ü! "¤gÔ.Ð.Ð.Ü! %¬Õ/Ð/Ð/ò0ñ	0rn   c           	      ó¼  — | j                   | j                  fD �]@  }t        |j                  «      t        |j                  «      z
  }|j                  j                  «       }|dkD  r9t        j                  |t        j                  |f|j                  dd  z   «      f   }dD ]µ  }t        |«      }t        j                  |j                  j                  «       ||j                  f«      }t        |j                  |d   d¬«       t        |j                  |d   d¬«       |j                  |d   k(  sJ ‚t        |t        «      sJ ‚t        |t         «      rŒµJ ‚ �ŒC y r3  )rX   r
  rD  r4   r5   r  rM   r´   r5  r®   r   r  r6   r   r   r   r1  r6  s          rY   Útest_splantiderzTestInterop.test_splantider»  s  € Ø—&‘&˜$Ÿ'™'Ð"ó 	0ˆAä�Q—S‘S“œC §¡›HÑ$ˆBØ—#‘#—(‘(“*ˆCØ�AŠvÜ—e‘e˜C¤§¡¨2¨%°#·)±)¸A¸B°-Ñ*?Ó!@Ð@ÑA�àò 0�Ü “]�Ü×(Ñ(¨!¯#©#¯(©(«*°c¸1¿3¹3Ð)?Ó@�Ü §¡ e¨A¡h°UÕ;Ü §¡ e¨A¡h°UÕ;Ø—t‘t˜u Q™xÒ'Ð'Ð'Ü! "¤gÔ.Ð.Ð.Ü! %¬Õ/Ð/Ð/ò0ñ	0rn   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                  j                  |dd  dz   «      }	t        ||j                  |	|j                  f«      }
t        ||«      }t        t!        j"                  t        ||
«      «      j                  ddd«       ||«      d¬«       t        |t        «      sJ ‚t        |
t        «      sJ ‚y )Nr;   rÓ   r0   r\   rz   r  r   )rX   r
  rk   r4   r«   r   r5   r6   r   r   r   r   r1  rà   r"  r  rM   rS   )rU   rX   r
  rk   r  ÚtnÚbnÚtck_nr2  r  Útck_n2Úbn2s               rY   r�  zTestInterop.test_insertÌ  sb  € Ø—F‘F˜DŸG™G T§W¡Wˆrˆ2ˆà�C‰C�H‰H˜‰MˆØ�!—#‘#�a‘&˜1Ÿ3™3˜q ™s™8Ñ#Ñ$ˆä˜2˜q“M¤6¨"¨q¯s©s°A·C±C¸¿¹¨oÓ#>ˆEˆÜœ˜b "›Ü˜b %Ó(¨uõ	6ä˜"œgÔ&Ð&Ð&Ü˜%¤Ô'Ð'Ð'ô ”5˜Ÿ™Ÿ™Ó#Ó$ˆØ�T‰T�^‰^˜B˜q˜r˜F T™MÓ*ˆÜ˜˜RŸT™T 2 r§t¡tÐ,Ó-ˆä�R˜‹nˆô 	œŸ
™
¤5¨¨VÓ#4Ó5×?Ñ?ÀÀ1ÀaÓHÙ˜B› eõ	-ä˜#œwÔ'Ð'Ð'Ü˜&¤%Ô(Ð(Ñ(rn   N)r(  r)  r*  r  r  r  r  r   r&  r,  r1  r;  r=  r�  r+  rn   rY   r  r    s=   „ ò-òHò6-ò0'ò Dò%ò:Cò"Hò(0ò"0ó")rn   r  c                   ó¾  — e Zd Z ej                  ddej
                  z  «      Z ej                  e«      Zd„ Z	d„ Z
d„ Zd„ Zej                  j                  dg d¢«      d	„ «       Zej                  j                  dg d¢«      d
„ «       Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zej                  j=                  d¬«      d„ «       Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'ej                  j                  dg d$¢«      d%„ «       Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*„ Z-y+),Ú
TestInterpr?   r@   c                 ón   — |j                  | j                  «      |j                  | j                  «      fS r×  )rS   rk   rÍ   rí   s     rY   Ú_get_xyzTestInterp._get_xyï  s'   € Ø�z‰z˜$Ÿ'™'Ó" B§J¡J¨t¯w©wÓ$7Ð7Ð7rn   c                 ó�   — t        t        «      5  t        | j                  | j                  d¬«       d d d «       y # 1 sw Y   y xY w)NrD   rZ  )rI   rJ   r   rk   rÍ   ©rU   s    rY   Útest_non_int_orderzTestInterp.test_non_int_orderò  s3   € Üœ9Ó%ñ 	8Ü˜tŸw™w¨¯©°3Õ7÷	8÷ 	8ñ 	8ús	   �#<¼Ac                 óº   — | j                  |«      \  }}t        ||d¬«      }t         ||«      |dd¬«       t        ||dd¬«      }t         ||«      |dd¬«       y )Nr   rZ  ry   r]   r9   ©r6   r  ©rG  r   r   ©rU   rV   rk   rÍ   rX   s        rY   Útest_order_0zTestInterp.test_order_0ö  óV   € Ø—‘˜bÓ!‰ˆˆBÜ˜r 2¨Ô+ˆÜ™˜"›˜r¨°EÕ:Ü˜r 2¨°Ô4ˆÜ™˜"›˜r¨°EÖ:rn   c                 óº   — | j                  |«      \  }}t        ||d¬«      }t         ||«      |dd¬«       t        ||dd¬«      }t         ||«      |dd¬«       y )Nr0   rZ  ry   r]   r9   rL  rM  rN  s        rY   Útest_linearzTestInterp.test_linearý  rP  rn   r6   rð   c                 ó|   — g d¢}g d¢}t        t        d¬«      5  t        |||¬«       d d d «       y # 1 sw Y   y xY w)N©r   r0   r;   r=   r>   r­   )r   r0   r;   r=   r>   r­   r¨   r©   zShapes of xr  rZ  ©rI   rK   r   ©rU   r6   r}   r    s       rY   Útest_incompatible_x_yz TestInterp.test_incompatible_x_y  s7   € âˆÚ$ˆÜœ:¨]Ô;ñ 	*Ü˜q ! qÕ)÷	*÷ 	*ñ 	*ús   š2²;c                 ó¤  — g d¢}g d¢}t        t        d¬«      5  t        |||¬«       d d d «       g d¢}t        t        d¬«      5  t        |||¬«       d d d «       g d¢}t        j                  |«      j                  d«      }t        t        d¬«      5  t        |||¬«       d d d «       y # 1 sw Y   Œ†xY w# 1 sw Y   ŒfxY w# 1 sw Y   y xY w)	N)r   r0   r0   r;   r=   r>   rT  zx to not have duplicatesr  rZ  )r   r;   r0   r=   r>   r­   zExpect x to be a 1D strictly)r0   r9   )rI   rK   r   rM   rS   r‡   rV  s       rY   Útest_broken_xzTestInterp.test_broken_x  s»   € âˆÚˆÜœ:Ð-GÔHñ 	*Ü˜q ! qÕ)÷	*ò ˆÜœ:Ð-KÔLñ 	*Ü˜q ! qÕ)÷	*ò ˆÜ�J‰J�q‹M×!Ñ! 'Ó*ˆÜœ:Ð-KÔLñ 	*Ü˜q ! qÕ)÷	*ð 	*÷	*ð 	*ú÷	*ð 	*ú÷
	*ð 	*ús#   šB.ÁB:ÂCÂ.B7Â:CÃCc                 ó~   — | j                  |«      \  }}dD ]$  }t        |||«      }t         ||«      |dd¬«       Œ& y )N©r;   r=   r>   r­   r¨   r©   ry   r]   rM  )rU   rV   rk   rÍ   r6   rX   s         rY   Útest_not_a_knotzTestInterp.test_not_a_knot  sC   € Ø—‘˜bÓ!‰ˆˆBØ#ò 	?ˆAÜ" 2 r¨1Ó-ˆAÜ™A˜b›E 2¨E¸Ö>ñ	?rn   c                 ó’  — | j                  |«      \  }}t        ||dd¬«      }t         ||«      |dd¬«       t        dd«      D ]&  }t         ||d   |¬«       ||d	   |¬«      d
¬«       Œ( t        ||ddd	¬«      }t         ||«      |dd¬«       t        dd«      D ]&  }t         ||d   |¬«       ||d	   |¬«      d
¬«       Œ( y )Nr­   rÑ   r@  ry   r]   r0   r   rÞ   r9   ç•dyáý¥=rz   ©r6   rA  r  )rG  r   r   rà   )rU   rV   rk   rÍ   rX   r  s         rY   Útest_periodiczTestInterp.test_periodic!  sÎ   € Ø—‘˜bÓ!‰ˆˆBô ˜r 2¨°JÔ?ˆÜ™˜"›˜r¨°EÕ:ô �q˜!“ò 	IˆAÜ™A˜b ™e¨œN©A¨b°©f¸¬OÀ%ÖHð	Iô ˜r 2¨°JÀRÔHˆÜ™˜"›˜r¨°EÕ:Ü�q˜!“ò 	IˆAÜ™A˜b ™e¨œN©A¨b°©f¸¬OÀ%ÖHñ	Irn   r[  c                 óV  — d}t         j                  j                  d«      }t        j                  |j	                  |«      dz  «      }|j	                  |«      dz  }|d   |d<   |j                  |«      |j                  |«      }}t        |||d¬«      }t         ||«      |d	¬
«       y )Nr­   rš   rh   r£   r9   r   rÑ   r@  ry   rz   )rM   rT   r�   rž   rB  rS   r   r   )rU   r6   rV   rW   rŸ   r}   r    rX   s           rY   Útest_periodic_randomzTestInterp.test_periodic_random1  s–   € ð ˆÜ�i‰i×#Ñ# DÓ)ˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-Ó.ˆØ×Ñ˜aÓ  3Ñ&ˆØ�‰uˆˆ!‰Ø�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆä˜q ! q°*Ô=ˆÜ™˜!›˜a eÖ,rn   c                 ó¬  — | j                   j                  d   }t        j                  j	                  d«      }|j                  |«      dz  t        j                  z  }t        j                  |«      }d|d<   dt        j                  z  |d<   t        j                  d|f«      }t        j                  |«      |d<   t        j                  |«      |d<   |j                  |«      |j                  |«      }}t        ||ddd¬	«      }t        |«      D ]   }t         |||   «      |d d …|f   d
¬«       Œ" t         ||d   «       ||d   «      d
¬«       y )Nr   rš   r;   r?   r9   r0   r­   rÑ   r_  ry   rz   )rk   r®   rM   rT   r�   rB  r¸  rž   r5  r”  r–  rS   r   rà   r   )rU   rV   rW   rŸ   r}   r    rX   r  s           rY   Útest_periodic_axiszTestInterp.test_periodic_axis>  s  € Ø�G‰G�M‰M˜!ÑˆÜ�i‰i×#Ñ# DÓ)ˆØ×Ñ˜aÓ  1Ñ$¤r§u¡uÑ,ˆÜ�G‰G�A‹JˆØˆˆ!‰Ø”B—E‘E‘	ˆˆ"‰Ü�H‰H�a˜�VÓˆÜ�v‰v�a‹yˆˆ!‰Ü�v‰v�a‹yˆˆ!‰Ø�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆä˜q ! q°*À1ÔEˆÜ�q“ò 	:ˆAÜ™A˜a ™d›G Q¢q¨! t¡W°5Ö9ð	:ä™˜!˜A™$›¡ 1 R¡5£°Ö6rn   c                 ó0  — t         j                  j                  d«      }d}d}t        j                  |j	                  |«      «      }|j	                  |«      }|d   dz
  |d<   t        t        «      5  t        |||d¬«       d d d «       y # 1 sw Y   y xY w)	Nrš   r­   rÐ   r9   r0   r   rÑ   r@  )rM   rT   r�   rž   rB  rI   rK   r   )rU   rŸ   r6   rW   r}   r    s         rY   Útest_periodic_points_exceptionz)TestInterp.test_periodic_points_exceptionO  s…   € ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(Ó)ˆØ×Ñ˜aÓ ˆØ�‰u�q‰yˆˆ!‰Üœ:Ó&ñ 	>Ü˜q ! q°*Õ=÷	>÷ 	>ñ 	>ús   Á3BÂBc                 óP  — t         j                  j                  d«      }d}d}t        j                  |j	                  |«      «      }|j	                  |«      }t        j
                  |d|z  z   «      }t        t        «      5  t        ||||d«       d d d «       y # 1 sw Y   y xY w)Nrš   r=   r©   r;   rÑ   )	rM   rT   r�   rž   rB  r5  rI   rK   r   )rU   rŸ   r6   rW   r}   r    r4   s          rY   Útest_periodic_knots_exceptionz(TestInterp.test_periodic_knots_exceptionZ  sŒ   € ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(Ó)ˆØ×Ñ˜aÓ ˆÜ�H‰H�Q˜˜Q™‘YÓˆÜœ:Ó&ñ 	7Ü˜q ! Q¨¨:Ô6÷	7÷ 	7ñ 	7ús   ÂBÂB%rÁ  c                 óŠ  — t        | j                  | j                  |d¬«      }t        | j                  | j                  d|¬«      }t	        | j                  |«      }t        | || j                  «      d¬«       t        d|«      D ]:  }t	        | j                  ||¬«      }t        | || j                  |¬	«      d
¬«       Œ< y )NrÑ   r@  T)r±  r6   ry   rz   r0   rÜ   rÞ   r»   )r   rk   rÍ   r   r   r   rà   )rU   r6   rX   rb   r9  r  s         rY   Útest_periodic_splevzTestInterp.test_periodic_spleve  s˜   € ô ˜tŸw™w¨¯©°1¸jÔIˆÜ�T—W‘W˜dŸg™g¨4°1Ô5ˆÜ�D—G‘G˜SÓ!ˆÜ˜™Q˜tŸw™w›Z¨eÕ4ô �q˜!“ò 	?ˆAÜ˜Ÿ™ ¨!Ô,ˆCÜ˜C¡ 4§7¡7¨qÔ!1¸Ö>ñ	?rn   c                 ó   — t        | j                  | j                  dd¬«      }t        | j                  | j                  d¬«      }t	         || j                  «       || j                  «      d¬«       t
        j                  j                  d«      }d}t        j                  |j                  |«      dz  «      }|j                  |«      d	z  }|d
   |d<   t        ||dd¬«      }t        ||d¬«      }t	         ||«       ||«      d¬«       y )Nr=   rÑ   r@  re  ry   rz   rš   rh   r£   r9   r   )
r   rk   rÍ   r   r   rM   rT   r�   rž   rB  )rU   rX   ÚcubrŸ   rW   r}   r    s          rY   Útest_periodic_cubiczTestInterp.test_periodic_cubicr  sÙ   € ä˜tŸw™w¨¯©°1¸jÔIˆÜ˜$Ÿ'™' 4§7¡7°JÔ?ˆÜ™˜$Ÿ'™'›
¡C¨¯©£L°uÕ=ô �i‰i×#Ñ# DÓ)ˆØˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-Ó.ˆØ×Ñ˜aÓ  3Ñ&ˆØ�‰uˆˆ!‰Ü˜q ! q°*Ô=ˆÜ˜!˜Q¨
Ô3ˆÜ™˜!›™c !›f¨5Ö1rn   c                 óT  ‡‡‡— dŠt        | j                  | j                  ‰d¬«      }t        | j                  ‰«      Št	        | j                  | j                  ‰‰«      Št        j                  ˆˆˆfd„«      }t         || j                  «       || j                  «      d¬«       y )Nr=   rÑ   r@  c                 ó,   •— t        | ‰‰‰t        ¬«      S )Nrx   )r�   rM   )r}   r5   r6   r4   s    €€€rY   rç  z6TestInterp.test_periodic_full_matrix.<locals>.<lambda>‰  s   ø€ ¤K°°1°a¸¼rÔ$B€ rn   ry   rz   )r   rk   rÍ   r    r!   rM   Ú	vectorizer   )rU   rX   r5  r5   r6   r4   s      @@@rY   Útest_periodic_full_matrixz$TestInterp.test_periodic_full_matrix‚  su   ú€ ð ˆÜ˜tŸw™w¨¯©°1¸jÔIˆÜ˜DŸG™G QÓ'ˆÜ& t§w¡w°·±¸¸AÓ>ˆÜ�\‰\ÕBÓCˆÜ™˜$Ÿ'™'›
¡B t§w¡w£K°eÖ<rn   c                 ó¶  — | j                  |«      \  }}dg}t        ||dd |f¬«      }t         ||«      |dd¬«       t         ||d   d«      |j                  |d   d   |j                  ¬	«      ddd
¬«       t        ||d|d f¬«      }t         ||«      |dd¬«       t         ||d   d«      |j                  |d   d   |j                  ¬	«      ddd
¬«       y )N©r0   g       @r;   r@  ry   r]   r9   r0   r   rG   F)r^   r_   r.  ©rG  r   r   rS   rR   )rU   rV   rk   rÍ   rÝ   rX   s         rY   Útest_quadratic_derivzTestInterp.test_quadratic_derivŒ  sÛ   € Ø—‘˜bÓ!‰ˆˆBØˆiˆô ˜r 2¨°T¸3°KÔ@ˆÜ™˜"›˜r¨°EÕ:ÜÙˆb�‰f�a‹LØ�J‰J�s˜1‘v˜a‘y¨¯
©
ˆJÓ3Ø˜U¨Uõ	
ô ˜r 2¨°S¸$°KÔ@ˆÜ™˜"›˜r¨°EÕ:ÜÙˆb�‰e�Q‹KØ�J‰J�s˜1‘v˜a‘y¨¯
©
ˆJÓ3Ø˜U¨Uö	
rn   c                 óÈ  — | j                  |«      \  }}d}dgdg}}t        |||||f¬«      }t         ||«      |dd¬«       t         ||d   d«      |j                  |d   d   |j                  ¬	«      dd¬«       t         ||d
   d«      |j                  |d   d   |j                  ¬	«      dd¬«       dgdg}}t        |||||f¬«      }t         ||«      |dd¬«       y )Nr=   ©r0   rA   )r0   rB   re  ry   r]   r   r0   rG   r9   ©r;   r   rt  )rU   rV   rk   rÍ   r6   Úder_lÚder_rrX   s           rY   Útest_cubic_derivzTestInterp.test_cubic_deriv¢  sï   € Ø—‘˜bÓ!‰ˆˆBØˆð  �y 7 )ˆuˆÜ˜r 2 q°5¸%°.ÔAˆÜ™˜"›˜r¨°EÕ:ÜÙˆb�‰e�Q‹KØ�J‰J�u˜Q‘x ‘{¨"¯*©*ˆJÓ5¸EÈõ	
ô 	Ùˆb�‰f�a‹LØ�J‰J�u˜Q‘x ‘{¨"¯*©*ˆJÓ5¸EÈõ	
ð �x & ˆuˆÜ˜r 2 q°5¸%°.ÔAˆÜ™˜"›˜r¨°EÖ:rn   c                 óZ  — d\  }}|j                  ||j                  ¬«      }|j                  |«      }ddg}ddg}t        |||||f¬«      }t	         ||«      |dd¬	«       t	        |j                   ||d
   d«       ||d
   d«      g«      |j                  |D �	�
cg c]  \  }	}
|
‘Œ	 c}
}	|j                  ¬«      «       t	        |j                   ||d   d«       ||d   d«      g«      |j                  |D �	�
cg c]  \  }	}
|
‘Œ	 c}
}	|j                  ¬«      «       y c c}
}	w c c}
}	w )N)r­   r©   rG   )r0   g      (À)r;   r0   rs  )r;   rA   r@  ry   r]   r   r0   r;   r9   )rQ   rR   r”  r   r   r�   rS   )rU   rV   r6   rW   r}   r    ry  rz  rX   rß   Úvals              rY   Útest_quintic_derivszTestInterp.test_quintic_derivs¸  s  € Ø‰ˆˆ1Ø�I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1‹IˆØ˜FÐ#ˆØ˜'Ð"ˆÜ˜q ! q°5¸%°.ÔAˆÜ™˜!›˜a e°%Õ8Ü˜Ÿ™¡! A a¡D¨!£*©a°°!±°a«jÐ!9Ó:ØŸ
™
¸×#?©I¨R°¢CÓ#?ÀrÇzÁz˜
ÓRô	Tä˜Ÿ™¡! A b¡E¨1£+©q°°2±¸«{Ð!;Ó<ØŸ
™
¸×#?©I¨R°¢CÓ#?ÀrÇzÁz˜
ÓRõ	Tùó $@ùã#?s   ÂD!Ã<D'Úunstabler‹   c                 óÚ   — d}t        | j                  |«      }ddg}t        | j                  | j                  |||d f¬«      }t	         || j                  «      | j                  dd¬«       y )Nr=   rw  )r;   rB   re  ry   r]   )r   rk   r   rÍ   r   )rU   r6   r4   ry  rX   s        rY   Útest_cubic_deriv_unstablez$TestInterp.test_cubic_deriv_unstableÅ  s[   € ð ˆÜ�D—G‘G˜QÓˆà˜'Ð"ˆÜ˜tŸw™w¨¯©°°AÀÀt¸}ÔMˆÜ™˜$Ÿ'™'›
 D§G¡G°%¸eÖDrn   c           	      ó¦  — d}| j                  |«      \  }}t        ||j                  |dz   «      |d   z  |dd  |d d z   dz  |j                  |dz   «      |d   z  «      }t        ||||dgdgf¬«      }t	         ||«      |dd¬	«       t        j                   ||d   d«      d
d¬«      sJ ‚t        j                   ||d   d«      d
d¬«      sJ ‚y )Nr;   r0   r   r9   r@   rx  re  ry   r]   r?   r  )rG  r   rÂ  r   r   r  r  )rU   rV   r6   rk   rÍ   r4   rX   s          rY   Útest_knots_not_data_sitesz$TestInterp.test_knots_not_data_sitesÔ  sä   € ð ˆØ—‘˜bÓ!‰ˆˆBä�bØ—‘˜˜!™“˜r !™uÑ$Ø�A�B�˜"˜S˜b˜'Ñ! RÑ'Ø—‘˜˜!™“˜r "™vÑ%ó
ˆô
 ˜r 2 q¨!Ø)/¨°6°(Ð';ô=ˆô 	™˜"›˜r¨°EÕ:Ü�|‰|™A˜b ™e Q›K¨°eÕ<Ð<Ð<Ü�|‰|™A˜b ™f a›L¨#°uÕ=Ð=Ñ=rn   c                 óì   — d}|j                  ddg«      }|j                  ddg«      }t        |||dgdgf¬«      }|j                  ddd|j                  ¬«      }|dz  }t	         ||«      |d	d	¬
«       y )Nr=   r?   r2   ©r0   r?   rw  re  r  rG   ry   r]   )rS   r   ri   rR   r   )rU   rV   r6   r}   r    rX   rk   rÍ   s           rY   Útest_minimum_points_and_derivz(TestInterp.test_minimum_points_and_derivç  s{   € ð ˆØ�J‰J˜˜B�xÓ ˆØ�J‰J˜˜B�xÓ ˆÜ˜q ! Q°'°¸W¸IÐ0FÔGˆà�[‰[˜˜R ¨2¯:©:ˆ[Ó6ˆØ�‰UˆÜ™˜"›˜r¨°EÖ:rn   c                 ó  — g d¢x}}t        t        «      5  t        ||dgd f¬«       d d d «       t        t        «      5  t        ||d¬«       d d d «       t        t        «      5  t        ||dg¬«       d d d «       t        t        «      5  t        ||d¬«       d d d «       d\  }}t        t        «      5  t        ||||f¬«       d d d «       y # 1 sw Y   ŒªxY w# 1 sw Y   Œ�xY w# 1 sw Y   ŒuxY w# 1 sw Y   Œ[xY w# 1 sw Y   y xY w)N)r2   r;   r=   r>   r­   r¨   r…  re  é*   )r…  r…  rU  )rU   r}   r    ÚlÚrs        rY   Útest_deriv_speczTestInterp.test_deriv_specó  s  € ò %Ð$ˆˆAäœ:Ó&ñ 	@Ü˜q !¨w¨i¸Ð->Õ?÷	@ô œ:Ó&ñ 	6Ü˜q !¨WÕ5÷	6ô œ:Ó&ñ 	8Ü˜q !¨g¨YÕ7÷	8ô œ:Ó&ñ 	1Ü˜q !¨RÕ0÷	1ð
 "‰ˆˆ1Üœ:Ó&ñ 	5Ü˜q !¨a°¨VÕ4÷	5ð 	5÷	@ð 	@ú÷	6ð 	6ú÷	8ð 	8ú÷	1ð 	1ú÷	5ð 	5ús:   –C¿CÁ%C)ÂC5Â7DÃCÃC&Ã)C2Ã5C>ÄD
c                 ó   — |j                  d«      }|dz  }dgdg}}t        t        d¬«      5  t        ||||f¬«       d d d «       dgdg}}t        t        d	¬«      5  t        ||||f¬«       d d d «       y # 1 sw Y   Œ:xY w# 1 sw Y   y xY w)
Nr©   r;   )r¨   r   ©r0   r   zBad boundary conditions at 0.r  re  )iúÿÿÿr   zBad boundary conditions at 6.)rQ   rI   rK   r   )rU   rV   r}   r    r‰  rŠ  s         rY   Útest_deriv_order_too_largez%TestInterp.test_deriv_order_too_large
  s™   € Ø�I‰I�a‹LˆØˆq‰DˆØˆx˜&˜ˆ1ˆÜœ:Ð-LÔMñ 	5ä˜q !¨a°¨VÕ4÷	5ð ˆx˜'˜ˆ1ˆÜœ:Ð-LÔMñ 	5ä˜q !¨a°¨VÕ4÷	5ð 	5÷	5ð 	5ú÷
	5ð 	5ús   ®A8ÁBÁ8BÂBc                 ó”  — d}| j                  |«      \  }}|d|z  z   }dgdg}}t        |||||f¬«      }t         ||«      |dd¬«       t        j                   ||d   d	«      |d   d	   d¬
«      sJ ‚t        j                   ||d   d	«      |d   d	   d¬
«      sJ ‚dD ]%  }t        |||¬«      }t         ||«      |dd¬«       Œ' y )Nr=   r1   )r0   y              @)r0   y      @       @re  ry   r]   r   r0   r  r9   ©r   r0   rZ  )rG  r   r   Úcmathr  )rU   rV   r6   rk   rÍ   ry  rz  rX   s           rY   r¿  zTestInterp.test_complex  sÜ   € ØˆØ—‘˜bÓ!‰ˆˆBØ�#�b‘&‰[ˆð !�z K =ˆuˆÜ˜r 2 q°5¸%°.ÔAˆÜ™˜"›˜r¨°EÕ:Ü�}‰}™Q˜r !™u a›[¨%°©(°1©+¸uÕEÐEÐEÜ�}‰}™Q˜r "™v q›\¨5°©8°A©;ÀÕFÐFÐFð ò 	?ˆAÜ" 2 r¨QÔ/ˆAÜ™A˜b›E 2¨E¸Ö>ñ	?rn   c                 ó²   — |j                  d|j                  ¬«      }|j                  d|j                  ¬«      }dD ]  }t        |||¬«      } ||«       Œ y )Nrh   rG   rð   rZ  )rQ   Úint32r   )rU   rV   r}   r    r6   rX   s         rY   Útest_int_xyzTestInterp.test_int_xy(  sT   € Ø�I‰I�b §¡ˆIÓ)ˆØ�I‰I�b §¡ˆIÓ)ˆð ò 	ˆAÜ" 1 a¨1Ô-ˆAÙˆa�Dñ	rn   c                 ót   — |j                  ddd«      }|d d d…   }|d d d…   }dD ]  }t        |||¬«       Œ y )Nr9   r0   r£   r­   rð   rZ  )ri   r   )rU   rV   rk   r}   r    r6   s         rY   Útest_sliced_inputzTestInterp.test_sliced_input2  sI   € à�[‰[˜˜Q Ó$ˆà‰s�ˆs‰GˆØ‰s�ˆs‰Gˆàò 	*ˆAÜ˜q ! qÖ)ñ	*rn   c                 ó  — |j                  d|j                  ¬«      }|dz  }|j                  |j                  |j                   fD ]=  }t	        j
                  |d«      j                  |«      }t        t        t        ||«       Œ? y )Nrh   rG   r;   r9   )
rQ   rR   rO   rP   ÚxpxÚatÚsetrI   rK   r   )rU   rV   r}   r    Úzs        rY   Útest_check_finitezTestInterp.test_check_finite<  sp   € à�I‰I�b §
¡
ˆIÓ+ˆØˆq‰Dˆà—&‘&˜"Ÿ&™& 2§6¡6 'Ð*ò 	@ˆAÜ—‘�q˜"“×!Ñ! !Ó$ˆAÜœ*Ô&8¸!¸QÕ?ñ	@rn   )r0   r;   r=   r­   c                 óv   — t        t        d«      «      }|D �cg c]  }|dz  ‘Œ	 }}t        |||¬«       y c c}w )Nrh   r;   rZ  )Úlistrà   r   )rU   r6   r}   Úar    s        rY   Útest_list_inputzTestInterp.test_list_inputE  s9   € ô ”�r“‹OˆØÖ�aˆQ�‹TÐˆÐÜ˜1˜a 1Ö%ùò s   ™6c                 ó¦  — | j                  |«      \  }}|j                  ||fd¬«      }dddgfg}dddgfg}t        ||d||f¬«      }t         ||«      |d	d	¬
«       t         ||d   d«      |j	                  |d   d   |j
                  ¬«      d	d	¬
«       t         ||d   d«      |j	                  |d   d   |j
                  ¬«      d	d	¬
«       y )Nr0   r  r2   r@   rA   rB   r=   r@  ry   r]   r   rG   r9   )rG  r�   r   r   rS   rR   )rU   rV   rk   rÍ   ry  rz  rX   s          rY   Útest_multiple_rhszTestInterp.test_multiple_rhsL  sÚ   € Ø—‘˜bÓ!‰ˆˆBØ�X‰X�r˜2�h QˆXÓ'ˆØ�b˜"�X��ˆØ�b˜"�X��ˆä˜r 2¨°U¸E°NÔCˆÜ™˜"›˜r¨°EÕ:ÜÙˆb�‰e�Q‹KØ�J‰J�u˜Q‘x ‘{¨"¯*©*ˆJÓ5¸EÈõ	
ô 	Ùˆb�‰f�a‹LØ�J‰J�u˜Q‘x ‘{¨"¯*©*ˆJÓ5¸EÈö	
rn   c                 óÖ  — t         j                  j                  d«      }d\  }}t        j                  |j                  |¬«      «      }|j                  |dddf¬«      }t	        |||«      }|j
                  j                  |dddfk(  sJ ‚d|j                  d«      fg}d|j                  d«      fg}t	        |||||f¬	«      }|j
                  j                  ||z   dz
  dddfk(  sJ ‚y )
Nrš   ©r=   r§   rª   r­   r¨   r©   r0   ©r­   r¨   r©   re  )rM   rT   r�   rž   r   r5   r®   )	rU   rŸ   r6   rW   r}   r    rX   Úd_lÚd_rs	            rY   Útest_shapeszTestInterp.test_shapes]  så   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ü�G‰G�C—J‘J A�JÓ&Ó'ˆØ�J‰J˜Q  1 a˜LˆJÓ)ˆä˜q ! QÓ'ˆØ�s‰s�y‰y˜Q  1 a˜LÒ(Ð(Ð(ð �3—:‘:˜iÓ(Ð)Ð*ˆØ�3—:‘:˜iÓ(Ð)Ð*ˆÜ˜q ! Q°°c°
Ô;ˆØ�s‰s�y‰y˜Q ™U Q™Y¨¨1¨aÐ0Ò0Ð0Ñ0rn   c                 ó¨  — | j                  |«      \  }}|j                  |«      }t        ||dd¬«      }t        ||ddgdgf¬«      }t        |j                  |j                  d¬«       t        ||dd¬«      }t        ||ddgdgf¬«      }t        |j                  |j                  d¬«       t        ||d	d
¬«      }t        ||d	d dgf¬«      }t        |j                  |j                  d¬«       t        ||dd¬«      }t        ||dd ¬«      }t        |j                  |j                  d¬«       t        t        «      5  t        ||dd¬«       d d d «       |j                  |j                  |«      |j                  |«      fd¬«      }dddgfg}d	ddgfg}t        ||d||f¬«      }t        ||dd¬«      }t        |j                  |j                  d¬«       t        j                  j                  d«      }d\  }	}
t        j                  |j                  |
¬«      «      }|j                  |
dddf¬«      }|j                  |«      |j                  |«      }}d|j                  d«      fg}d|j                  d«      fg}t        |||	||f¬«      }t        |||	d¬«      }t        |j                  |j                  d¬«       y # 1 sw Y   �ŒyxY w)Nr=   rL  r@  rx  r\   rz   )rL  rK  r�  r;   )NrK  r…  rM  Útypor0   r  r?   rJ  rš   r¤  rª   r­   r¨   r©   r¥  re  rK  )rG  r”  r   r   r5   rI   rK   r�   r–  rM   rT   r�   rž   rS   r5  )rU   rV   rk   rÍ   r5  r
  ry  rz  rŸ   r6   rW   r}   r    r¦  r§  s                  rY   Útest_string_aliaseszTestInterp.test_string_aliasesl  s™  € Ø—‘˜bÓ!‰ˆˆBØ�V‰V�B‹Zˆô    B¨!°YÔ?ˆÜ  B¨!°v°hÀÀÐ5IÔJˆÜ˜Ÿ™˜bŸd™d¨Õ/ô    B¨!Ø(>ô@ˆä  B¨!Ø*0¨°F°8Ð(<ô>ˆä˜Ÿ™˜bŸd™d¨Õ/ô    B¨!Ð5FÔGˆÜ  B¨!°d¸X¸JÐ5GÔHˆÜ˜Ÿ™˜bŸd™d¨Õ/ô    B¨!°\ÔBˆÜ  B¨!°TÔ:ˆÜ˜Ÿ™˜bŸd™d¨Õ/ô œ:Ó&ñ 	<Ü˜r 2¨°FÕ;÷	<ð �X‰X�r—v‘v˜b“z 2§6¡6¨"£:Ð.°QˆXÓ7ˆØ�b˜"�X��ˆØ�b˜"�X��ˆÜ  B¨!°e¸U°^ÔDˆÜ  B¨!Ø(>ô@ˆä˜Ÿ™˜bŸd™d¨Õ/ô �i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ü�G‰G�C—J‘J A�JÓ&Ó'ˆØ�J‰J˜Q  1 a˜LˆJÓ)ˆØ�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆð �2—8‘8˜IÓ&Ð'Ð(ˆØ�2—8‘8˜IÓ&Ð'Ð(ˆÜ  1 a°#°s°Ô<ˆÜ  1 a°Ô;ˆÜ˜Ÿ™˜bŸd™d¨Ö/÷1	<ñ 	<ús   Å KËKc                 ó˜  — t         j                  j                  d«      }d\  }}t        j                  |j                  |¬«      «      }|j                  |¬«      }t	        ||«      }t        ||||«      }|j                  |«      }t        |j                  |||f«      \  }	}
}t        |	|
||«      }t        |j                  |dd¬«       y )Nrš   )r=   r©   rª   ry   r]   )rM   rT   r�   rž   r   Úmake_interp_full_matrrS   r|   r   r   r5   )rU   rV   rŸ   r6   rW   r~   Úy_npr   r´  r}   r    r4   rX   s                rY   Útest_full_matrixzTestInterp.test_full_matrix¡  s°   € Ü�i‰i×#Ñ# DÓ)ˆØ‰ˆˆ1Ü�w‰w�s—z‘z q�zÓ)Ó*ˆØ�z‰z˜qˆzÓ!ˆÜ˜4 Ó#ˆÜ" 4¨¨t°QÓ7ˆØ�Z‰Z˜‹^ˆä�b—j‘j 4¨¨tÐ"4Ó5‰ˆˆ1ˆaÜ˜q ! Q¨Ó*ˆÜ˜Ÿ™˜R e°%Ö8rn   c                 óö  — t         j                  j                  d«      }d}t        ddd«      D �]Ç  }t	        |dz
  dz  «      }t        j
                  |j                  d|f«      «      }t        d|dz   «      D ]x  }|d| …|d…fxx   t        j
                  |j                  d||z
  f«      «      z  cc<   ||d…d| …fxx   t        j
                  |j                  d||z
  f«      «      z  cc<   Œz |j                  ||f«      }||d|…| d…f<   |j                  ||f«      }||| d…d|…f<   t        j                  ||f«      }	t        t        || dz
  d«      «      D ]G  \  }}
|
d	k  rt        j                  ||
¬
«      |	|d|
…f<   Œ*t        j                  ||
¬
«      |	||
d…f<   ŒI |j                  |«      }t        t        |	||||«      t         j                  j                  ||«      d¬«       �ŒÊ y)z­
        Random elements in diagonal matrix with blocks in the
        left lower and right upper corners checking the
        implementation of Woodbury algorithm.
        rš   éÉ   r=   é    r;   r0   Nr9   r   )Úoffsetry   rz   )rM   rT   r�   rà   ÚintÚdiagflatr5  rÌ  Údiagonalr   r   ÚlinalgÚsolve)rU   rŸ   rW   r6   r³  rŸ  r  ÚurÚllÚdr  rX   s               rY   Útest_woodburyzTestInterp.test_woodbury®  sì  € ô �i‰i×#Ñ# DÓ)ˆØˆÜ�q˜"˜a“ó 	?ˆAÜ˜!˜a™% 1™Ó%ˆFÜ—‘˜CŸJ™J¨¨1 vÓ.Ó/ˆAÜ˜1˜f q™jÓ)ò B�Ø�#�A�2�#�q‘r�'“
œbŸk™k¨#¯*©*°a¸¸Q¹°ZÓ*@ÓAÑA“
Ø�!‘"�c˜�r�c�'“
œbŸk™k¨#¯*©*°a¸¸Q¹°ZÓ*@ÓAÑA”
ðBð —‘˜V VÐ,Ó-ˆBØ#%ˆAˆgˆvˆg˜�w‘xÐÑ Ø—‘˜V VÐ,Ó-ˆBØ#%ˆAˆvˆg‰h˜˜˜ÐÑ Ü—‘˜!˜Q˜Ó ˆAÜ!¤%¨°°¸!±¸RÓ"@ÓAò 8‘��1Ø�q’5Ü!Ÿ{™{¨1°QÔ7�A�a˜˜!˜�e’Hä!Ÿ{™{¨1°QÔ7�A�a˜™�e’Hð	8ð
 —
‘
˜1“ˆAÜÔ/°°2°r¸1¸aÓ@ÜŸI™IŸO™O¨A¨qÓ1¸÷?ñ#	?rn   N).r(  r)  r*  rM   ri   r¸  rk   r”  rÍ   rG  rJ  rO  rR  rc   rˆ  r‰  rW  rY  r\  r`  rb  rd  rf  rh  rj  rm  rq  ru  r{  r~  rŠ  r�  rƒ  r†  r‹  rŽ  r¿  r”  r–  rœ  r   r¢  r¨  r«  r¯  r¼  r+  rn   rY   rE  rE  ç  sš  „ ð
 
ˆ�‰�R˜˜BŸE™E™Ó	"€BØ	ˆ�‰�‹€Bò8ò8ò;ò;ð ‡[�[×Ñ˜S¢,Ó/ñ*ó 0ð*ð ‡[�[×Ñ˜S¢,Ó/ñ*ó 0ð*ò?òIð  ‡[�[×Ñ˜SÒ"4Ó5ñ
-ó 6ð
-ò7ò"	>ò	7ð ‡[�[×Ñ˜S¢,Ó/ñ
?ó 0ð
?ò2ò =ò
ò,;ò,Tð ‡[�[×Ñ˜jÐÓ)ñEó *ðEò>ò&
;ò5ò.5ò?ò"ò*ò@ð ‡[�[×Ñ˜S¢,Ó/ñ&ó 0ð&ò
ò"1ò30òj9ó?rn   rE  c                 óÐ  — | j                   |j                   k(  sJ ‚|j                   | j                   |z   dz   k(  sJ ‚| j                   }t        j                  ||ft        j                  ¬«      }t	        |«      D ]R  }| |   }|||   k(  r|}nt        j
                  ||«      dz
  }t        j                  ||||«      }	|	||||z
  |dz   …f<   ŒT t        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).
    r0   rG   )
r«   rM   r5  rR   rà   rÚ  r,   Úevaluate_all_bsplÚslr¸  )r}   r    r4   r6   rW   ÚAr  r�  ÚleftÚbbr5   s              rY   r­  r­  Ë  sã   € ð �6‰6�Q—V‘VÒÐÐØ�6‰6�Q—V‘V˜a‘Z !‘^Ò#Ð#Ð#Ø	�‰€Aä
�‰�!�Q�œrŸz™zÔ*€Aä�1‹Xò 	!ˆØ�‰tˆØ�1�Q‘4Š<Ø‰Dä—?‘? 1 dÓ+¨aÑ/ˆDô ×'Ñ'¨¨1¨d°DÓ9ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
Òð	!ô 	�‰��A‹€AØ€Hrn   c                 óF  — t        t        j                  | ||f«      \  } }}| j                  }|j                  |z
  dz
  }t        j                  ||ft        j
                  ¬«      }t        |«      D ]R  }| |   }|||   k(  r|}	nt        j                  ||«      dz
  }	t        j                  ||||	«      }
|
|||	|z
  |	dz   …f<   ŒT t        j                  |j                  |«      }t        j                  |j                  |«      }t        j                  ||«      }|||ffS )z,Make the least-square spline, full matrices.r0   rG   )r|   rM   rS   r«   r5  rR   rà   rÚ  r,   r¾  ÚdotÚTr¿  r¸  )r}   r    r4   r6   r   rW   rÀ  r  r�  rÁ  rÂ  r,  ÚYr5   s                 rY   Úmake_lsq_full_matrixrÇ  ç  s	  € ä”"—*‘*˜q ! Q˜iÓ(�G€A€qˆ!Ø	�‰€AØ	�‰�‰
�Q‰€Aä
�‰�!�Q�œrŸz™zÔ*€Aä�1‹Xò 
!ˆØ�‰tˆà�1�Q‘4Š<Ø‰Dä—?‘? 1 dÓ+¨aÑ/ˆDô ×'Ñ'¨¨1¨d°DÓ9ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
Òð
!ô 	�‰ˆq�s‰s�A‹€AÜ
�‰ˆq�s‰s�A‹€AÜ
�‰��A‹€Aàˆq�!ˆfˆ9Ðrn   Úmethodúnorm-eqÚqrc            	       ó  — e Zd Zej                  j                  d«      Zd\  ZZ ej                  ej	                  e«      «      Z
ej	                  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<                  j?                  d e  e!dd«      «      «      d„ «       Z"d„ Z#y)ÚTestLSQrš   )r  r=   r   r9   r©   c                 ó´  — | j                   | j                  | j                  | j                  f\  }}}}t	        ||||«      \  }}t        |||||¬«      }t        |j                  |«       |j                  j                  |j                  |z
  dz
  fk(  sJ ‚|\  }	}
t        j                  j                  |	|d¬«      \  }}}}t        |j                  |«       y )N©rÈ  r0   r9   )Úrcond)r}   r    r4   r6   rÇ  r   r   r5   r®   r«   rM   r·  Úlstsq)rU   rÈ  r}   r    r4   r6   Úc0ÚAYrX   ÚaarÍ   rÓ  rÀ   s                rY   Ú
test_lstsqzTestLSQ.test_lstsq  s¼   € ð —V‘V˜TŸV™V T§V¡V¨T¯V©VÐ3‰
ˆˆ1ˆa�ä% a¨¨A¨qÓ1‰ˆˆBÜ˜A˜q ! Q¨vÔ6ˆä˜Ÿ™˜RÔ Ø�s‰s�y‰y˜QŸV™V a™Z¨!™^Ð-Ò-Ð-Ð-ð ‰ˆˆBÜ—i‘i—o‘o b¨!°2�oÓ6‰ˆˆAˆq�!Ü˜Ÿ™˜RÕ rn   c                 ó¼  — g t        |j                  | j                  | j                  | j                  f«      ¢| j
                  ‘­\  }}}}|j                  |«      }t        |||||¬«      }t        ||||||¬«      }	t        |j                  |	j                  d¬«       t        |j                  |	j                  d¬«       |j
                  |	j
                  k(  sJ ‚y )NrÎ  ©ÚwrÈ  ry   rz   )
r|   rS   r}   r    r4   r6   rt   r   r   r5   )
rU   rÈ  rV   r}   r    r4   r6   r×  rX   Úb_ws
             rY   Útest_weightszTestLSQ.test_weights!  s­   € ð H”c˜"Ÿ*™* t§v¡v¨t¯v©v°t·v±vÐ&>Ó?ÐGÀÇÁÑG‰
ˆˆ1ˆa�Ø�L‰L˜‹Oˆä˜A˜q ! Q¨vÔ6ˆÜ˜a  A q¨A°fÔ=ˆä˜Ÿ™˜SŸU™U¨Õ/Ü˜Ÿ™˜SŸU™U¨Õ/Ø�s‰s�c—e‘eŠ|Ð‰|rn   c                 óT  — g t        |j                  | j                  | j                  | j                  f«      ¢| j
                  ‘­\  }}}}t        j                  j                  d«      j                  |j                  d   ¬«      }|j                  |«      }t        |||||d¬«      }t        |||||d¬«      }t        ||||d¬«      }	t        |j                  |j                  d¬	«       |j                  |j                  |	j                  |j                  z
  «      dk  «      rJ ‚y )
Nrš   r   rª   rÉ  rÖ  rÊ  rÎ  ry   rz   )r|   rS   r}   r    r4   r6   rM   rT   r§  r¨  r®   r   r   r5   rË   Úabs)
rU   rV   r}   r    r4   r6   r×  Úb_neÚb_qrÚb_no_ws
             rY   Útest_weights_samezTestLSQ.test_weights_same.  sð   € àG”c˜"Ÿ*™* t§v¡v¨t¯v©v°t·v±vÐ&>Ó?ÐGÀÇÁÑG‰
ˆˆ1ˆa�Ü�I‰I×!Ñ! $Ó'×/Ñ/°Q·W±W¸Q±ZÐ/Ó@ˆØ�J‰J�q‹Mˆä˜q ! Q¨¨Q°yÔAˆÜ˜q ! Q¨¨Q°tÔ<ˆÜ   A q¨!°DÔ9ˆä˜Ÿ™ §¡¨UÕ3Ø—6‘6˜"Ÿ&™& §¡¨D¯F©FÑ!2Ó3°eÑ;Ô<Ð<Ð<Ð<rn   c                 ó¬  — g t        |j                  | j                  | j                  f«      ¢| j                  ‘| j
                  ‘­\  }}}}t        j                  j                  d«      }|j                  |dddf¬«      }|j                  |«      }t        |||||¬«      }	|	j                  j                  |j                  d   |z
  dz
  dddfk(  sJ ‚y )	Nrš   r­   r¨   r©   rª   rÎ  r   r0   )r|   rS   r}   r4   r6   rW   rM   rT   r�   r   r5   r®   )
rU   rÈ  rV   r}   r4   r6   rW   rŸ   r    rX   s
             rY   r¢  zTestLSQ.test_multiple_rhs;  s¹   € àG”c˜"Ÿ*™* t§v¡v¨t¯v©vÐ&6Ó7ÐG¸¿¹ÐGÀÇÁÑG‰
ˆˆ1ˆa�Ü�i‰i×#Ñ# DÓ)ˆØ�J‰J˜Q  1 a˜LˆJÓ)ˆØ�J‰J�q‹Mˆä˜A˜q ! Q¨vÔ6ˆØ�s‰s�y‰y˜QŸW™W Q™Z¨!™^¨aÑ/°°A°qÐ9Ò9Ð9Ñ9rn   c           
      ód  — g t        |j                  | j                  | j                  f«      ¢| j                  ‘| j
                  ‘­\  }}}}d}t        j                  j                  d«      }|j                  ||f¬«      }	|j                  |	«      }	t        ||	|||¬«      }
t        |«      D �cg c]  }t        ||	d d …|f   |||¬«      ‘Œ }}|j                  t        |«      D �cg c]  }||   j                  ‘Œ c}«      j                  }t        ||
j                  d¬«       y c c}w c c}w )Nr=   rš   rª   rÎ  r\   rz   )r|   rS   r}   r4   r6   rW   rM   rT   r�   r   rà   r�   r5   rÅ  r   )rU   rÈ  rV   r}   r4   r6   rW   ÚnrhsrŸ   r    rX   r  rÂ  Úcoefss                 rY   Útest_multiple_rhs_2zTestLSQ.test_multiple_rhs_2E  s  € àG”c˜"Ÿ*™* t§v¡v¨t¯v©vÐ&6Ó7ÐG¸¿¹ÐGÀÇÁÑG‰
ˆˆ1ˆa�ØˆÜ�i‰i×#Ñ# DÓ)ˆØ�J‰J˜Q ˜IˆJÓ&ˆØ�J‰J�q‹MˆÜ˜A˜q ! Q¨vÔ6ˆô ˜T“{ö$Øô ˜a ¢1 a 4¡¨!¨Q°vÖ>ð $ˆð $à—‘¬5°«;Ö7 a˜"˜Q™%Ÿ'›'Ò7Ó8×:Ñ:ˆä˜˜qŸs™s¨Ö/ùò	$ùâ7s   Â0D(Ã(D-c                 óŠ  — g t        |j                  | j                  | j                  f«      ¢| j                  ‘| j
                  ‘­\  }}}}d}t        j                  j                  ||f¬«      }|j                  |«      }t        ||||d¬«      }t        ||||d¬«      }	t        |j                  |	j                  d¬«       y )Nr=   rª   rÊ  rÎ  rÉ  r\   rz   )r|   rS   r}   r4   r6   rW   rM   rT   r   r   r5   )
rU   rV   r}   r4   r6   rW   râ  r    rÝ  Úb_neqs
             rY   Útest_multiple_rhs_3zTestLSQ.test_multiple_rhs_3T  s£   € ØG”c˜"Ÿ*™* t§v¡v¨t¯v©vÐ&6Ó7ÐG¸¿¹ÐGÀÇÁÑG‰
ˆˆ1ˆa�ØˆÜ�I‰I×Ñ 1 d )ÐÓ,ˆØ�J‰J�q‹MˆÜ˜q ! Q¨°$Ô7ˆÜ  1 a¨°9Ô=ˆÜ˜Ÿ™ §¡¨eÖ4rn   c                 ó¨  — g t        |j                  | j                  | j                  f«      ¢| j                  ‘­\  }}}|j                  | j
                  dz  «      }t        |||||¬«      }t        ||j                  |«      |||¬«      }t        ||j                  |«      |||¬«      }	t         ||«       ||«      d |	|«      z  z   dd¬«       y )Nù      ð?       @rÎ  r1   r\   r]   )
r|   rS   r}   r4   r6   r    r   rø   rù   r   )
rU   rÈ  rV   r}   r4   r6   r\  rX   rû   rü   s
             rY   r¿  zTestLSQ.test_complex]  sµ   € ð =”3�r—z‘z D§F¡F¨D¯F©FÐ#3Ó4Ð<°d·f±fÑ<‰ˆˆ1ˆaØ�Z‰Z˜Ÿ™ (Ñ+Ó,ˆä˜A˜r 1 a°Ô7ˆÜ˜q "§'¡'¨"£+¨q°!¸FÔCˆÜ˜q "§'¡'¨"£+¨q°!¸FÔCˆä™˜!›™d 1›g¨©D°«G©Ñ3¸%ÀeÖLrn   c                 óÎ  — g t        |j                  | j                  | j                  f«      ¢| j                  ‘­\  }}}|j                  | j
                  dz  «      }|j                  ||fd¬«      }t        ||||«      }t        ||j                  |«      ||«      }t        ||j                  |«      ||«      }t         ||«       ||«      d ||«      z  z   dd¬«       |j                  ||fd¬«      }t        ||||«      }t        ||j                  |«      ||«      }t        ||j                  |«      ||«      }t         ||«       ||«      d ||«      z  z   dd¬«       y )Nré  r0   r  r1   r\   r]   )r|   rS   r}   r4   r6   r    r�   r   rø   rù   r   )	rU   rV   r}   r4   r6   r\  rX   rû   rü   s	            rY   Útest_complex_2zTestLSQ.test_complex_2i  s@  € ð =”3�r—z‘z D§F¡F¨D¯F©FÐ#3Ó4Ð<°d·f±fÑ<‰ˆˆ1ˆaØ�Z‰Z˜Ÿ™ (Ñ+Ó,ˆØ�X‰X�r˜2�h QˆXÓ'ˆä˜A˜r 1 aÓ(ˆÜ˜q "§'¡'¨"£+¨q°!Ó4ˆÜ˜q "§'¡'¨"£+¨q°!Ó4ˆä™˜!›™d 1›g¨©D°«G©Ñ3¸%ÀeÕLð �X‰X�r˜2�h QˆXÓ'ˆä˜A˜r 1 aÓ(ˆÜ˜q "§'¡'¨"£+¨q°!Ó4ˆÜ˜q "§'¡'¨"£+¨q°!Ó4ˆä™˜!›™d 1›g¨©D°«G©Ñ3¸%ÀeÖLrn   c                 óÞ   — t        j                  d«      j                  t        «      }t        j                  d«      j                  t        «      }t	        |d¬«      }t        |||d|¬«       y )Nrh   r0   rZ  ©r6   rÈ  )rM   rQ   Úastyper´  r   r   ©rU   rÈ  r}   r    r4   s        rY   r”  zTestLSQ.test_int_xy  sM   € ä�I‰I�b‹M× Ñ ¤Ó%ˆÜ�I‰I�b‹M× Ñ ¤Ó%ˆÜ�A˜ŒOˆä˜˜1˜a 1¨VÖ4rn   c                 ó´  — t        j                  dt         j                  ¬«      }t        j                  dt         j                  ¬«      }t        |d¬«      }t	        |||d|¬«      }t	        |j                  t        «      |j                  t        «      |j                  t        «      d|¬«      }|dd  |d d z   dz  }t         ||«       ||«      d¬	«       y )
Nrh   rG   r0   rZ  rí  r9   r@   r\   rz   )rM   rQ   Úfloat32r   r   rî  Úfloatr   )rU   rÈ  r}   r    r4   Úspl_f32Úspl_f64Úx2s           rY   Útest_f32_xyzTestLSQ.test_f32_xy‡  s¤   € ä�I‰I�b¤§
¡
Ô+ˆÜ�I‰I�b¤§
¡
Ô+ˆÜ�A˜ŒOˆÜ! ! Q¨¨Q°vÔ>ˆÜ!Ø�H‰H”U‹O˜QŸX™X¤e›_¨a¯h©h´u«oÀÈ6ô
ˆð ��ˆe�a˜˜�f‰n Ñ#ˆÜ™ ›¡W¨R£[°uÖ=rn   c                 óŠ   — t        j                  ddd«      }|d d d…   }|d d d…   }t        |d«      }t        |||d|¬«       y )Nr9   r0   r£   r=   rí  )rM   ri   r   r   )rU   rÈ  rk   r}   r    r4   s         rY   r–  zTestLSQ.test_sliced_input”  sK   € ô �[‰[˜˜Q Ó$ˆà‰s�ˆs‰GˆØ‰s�ˆs‰GˆÜ�A�q‹MˆÜ˜˜1˜a 1¨VÖ4rn   c           	      ó  — t        j                  d«      j                  t        «      }|dz  }t	        |d«      }t         j
                  t         j                  t         j                   fD ]   }||d<   t        t        t        ||||¬«       Œ" y )Né   r;   r=   r9   rÎ  )
rM   rQ   rî  rò  r   rO   rP   rI   rK   r   )rU   rÈ  r}   r    r4   r›  s         rY   Útest_checkfinitezTestLSQ.test_checkfinitež  sq   € ô �I‰I�b‹M× Ñ ¤Ó'ˆØˆq‰DˆÜ�A�q‹Mˆä—&‘&œ"Ÿ&™&¤2§6¡6 'Ð*ò 	OˆAØˆAˆb‰EÜœ*¤o°q¸!¸QÀvÖNñ	Orn   c                 óÖ   — | j                   | j                  | j                  }}}|j                  d¬«       |j                  d¬«       |j                  d¬«       t	        ||||¬«       y )NFrq  )r}   r    r4   rÈ  )r}   r    r4   rs  r   rï  s        rY   rt  zTestLSQ.test_read_only©  sU   € ð —&‘&˜$Ÿ&™& $§&¡&ˆaˆ1ˆØ	�
‰
˜ˆ
ÔØ	�
‰
˜ˆ
ÔØ	�
‰
˜ˆ
ÔÜ˜!˜q A¨fÖ5rn   r6   r0   c                 ó  — | j                   | j                  }}t        t        j                  |d   |d   d«      |«      }t        ||||d¬«      }t        ||||d¬«      }|dd  |d d z   dz  }t         ||«       ||«      d	¬
«       y )Nr   r9   r©   rÉ  rí  rÊ  r0   r@   r\   rz   )r}   r    r   rM   ri   r   r   )rU   r6   r}   r    r4   Úspl_norm_eqÚspl_qrrk   s           rY   Útest_qr_vs_norm_eqzTestLSQ.test_qr_vs_norm_eq²  sˆ   € ð �v‰v�t—v‘vˆ1ˆÜ”B—K‘K  !¡ a¨¡e¨QÓ/°Ó3ˆÜ% a¨¨A°¸9ÔEˆÜ   A q¨A°dÔ;ˆà��ˆe�a˜˜�f‰n Ñ#ˆÜ™ B›©°«¸%Ö@rn   c                 ód  — 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¬	«       y )
Nr;   r=   rÊ  rí  r0   r9   r@   r\   rz   )rM   Úrepeatr}   r    r   r4   r   )rU   r}   r    r˜  Úspl_2rk   s         rY   Útest_duplicateszTestLSQ.test_duplicates½  sŒ   € ä�I‰I�d—f‘f˜aÓ ˆÜ�I‰I�d—f‘f˜aÓ ˆÜ §¡¨¯©°·±¸!ÀDÔIˆÜ  1 d§f¡f°¸$Ô?ˆà��ˆe�a˜˜�f‰n Ñ#ˆÜ™˜b›	¡5¨£9°5Ö9rn   N)$r(  r)  r*  rM   rT   r�   rŸ   rW   r6   rž   r}   r    r   ri   r4   Úparametrize_lsq_methodsrÔ  rÙ  rß  r¢  rä  rç  r¿  rë  r”  rö  r–  rú  rt  rc   rˆ  r‰  rž  rà   rÿ  r  r+  rn   rY   rÌ  rÌ    sz  „ ð
 �)‰)×
Ñ
 Ó
%€CØ�D€A€qØˆ�‰�—
‘
˜1“Ó€AØ�
‰
�1‹€AÙ��—‘˜A˜a™D ! B¡%¨Ó+¨QÓ/€Aàñ!ó ð!ð ñ
ó ð
ò=ð ñ:ó ð:ð ñ0ó ð0ò5ð ñ	Mó ð	MòMð, ñ5ó ð5ð ñ
>ó ð
>ð ñ5ó ð5ð ñOó ðOð ñ6ó ð6ð ‡[�[×Ñ˜S¡$¡u¨Q°£{Ó"3Ó4ñAó 5ðAó:rn   rÌ  c                   ó,   — e Zd ZdZd„ Zed„ «       Zd„ Zy)Ú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 ‚y )Nr;   r0   r   )rŸ  r³  Úncr"  r®   )rU   rŸ  r³  r  s       rY   Ú__init__zPackedMatrix.__init__Ñ  sW   € ØˆŒØˆŒØˆŒà�v‰v˜Š{Ðˆ{Ø�{‰{˜aÒÐÐØ�w‰w�q‰z˜VŸ\™\¨!™_Ò,Ð,Ñ,rn   c                 óL   — | j                   j                  d   | j                  fS ©Nr   )rŸ  r®   r  rI  s    rY   r®   zPackedMatrix.shapeÚ  s   € à�v‰v�|‰|˜A‰ §¡Ð'Ð'rn   c                 ój  — t        j                  | j                  «      }| j                  j                  d   }t	        |j                  d   «      D ]_  }t        | j                  | j                  |   z
  |«      }| j                  |d |…f   ||| j                  |   | j                  |   |z   …f<   Œa |S )Nr0   r   )rM   r5  r®   rŸ  rà   Úminr  r³  )rU   ÚoutÚnelemr  Únels        rY   ÚtodensezPackedMatrix.todenseÞ  s    € Ü�h‰h�t—z‘zÓ"ˆØ—‘—‘˜Q‘ˆÜ�s—y‘y ‘|Ó$ò 	JˆAÜ�d—g‘g §¡¨A¡Ñ.°Ó6ˆCØ:>¿&¹&ÀÀDÀSÀDÀ¹/ˆC��4—;‘;˜q‘> $§+¡+¨a¡.°3Ñ"6Ð6Ð6Ò7ð	Jð ˆ
rn   N)r(  r)  r*  Ú__doc__r	  Úpropertyr®   r  r+  rn   rY   r  r  È  s%   „ ñò-ð ñ(ó ð(órn   r  c                 óh  — ddl m}  |dt        j                  d¬«      }| j                  }| j
                  }| j                  }|j                  \  }}	|j                  d   |k(  sJ ‚|j                  «       }
|j                  «       }t        ||«      D ]É  }||   }t        ||«      D ]³  }|t        ||«      k\  r Œ( ||
|df   |
|df   «      \  }}}||
|df<   t        d|	«      D ]*  }t        |||
||f   |
||f   «      \  |
||f<   |
||dz
  f<   Œ, d|
|df<   t        |j                  d   «      D ]'  }t        |||||f   |||f   «      \  |||f<   |||f<   Œ) Œµ ŒË 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   )Úget_lapack_funcsÚlartgÚ	preferred)rH   Úilp64r0   r?   r9   rG   )Úscipy.linalg.lapackr  rM   rR   rŸ  r³  r  r®   r  rà   r  Úfprotarž  r  rT  Úint64)Úa_pr    Ústartrowr  ÚdlartgrŸ  r³  r  r   ÚnzÚRr™  r  Úoir  r5   râ  rŠ  r‰  ÚoffsÚR_ps                        rY   Ú_qr_reduce_pyr$  ç  sÙ  € õ 5Ù˜g¬R¯Z©Z¸{ÔK€Fð 	�‰€AØ�Z‰Z€FØ	�‰€Bà�G‰G�E€A€rà�7‰7�1‰:˜Š?Ðˆ?Ø	�‰‹€AØ	
�‰‹€Bä�8˜QÓò FˆØ�A‰YˆÜ�r˜2“ò 	FˆAà”C˜˜2“JŠÙñ ˜Q˜q !˜t™W a¨¨1¨¡gÓ.‰GˆAˆq�!ð ˆAˆa�ˆd‰GÜ˜1˜b“\ò D�Ü%+¨A¨q°!°A°q°D±'¸1¸QÀ¸T¹7Ó%CÑ"��!�Q�$‘˜˜1˜a ™c˜6šðDàˆAˆa�ˆe‰Hô ˜2Ÿ8™8 A™;Ó'ò F�Ü%+¨A¨q°"°Q¸°T±(¸B¸qÀ!¸t¹HÓ%EÑ"��1�a�4‘˜"˜Q ˜Tš(ñFñ	FðFô* ”�a—g‘g˜a‘jÓ!Ó"€DÜ
�qœ"Ÿ(™( 4¬r¯x©xÔ8¸"Ó
=€Cà�ˆ7€Nrn   c                 ó8   — | |z  ||z  z   }| |z  | |z  z   }||fS )zLGivens rotate [a, b].

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

    r+  )r5   râ  rŸ  rX   rÓ  rÂ  s         rY   r  r    s1   € ð ˆA‰#��!‘‰)€BØ
ˆˆA‰��!‘‰€BØˆrˆ6€Mrn   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 ]P  }t        |||z
  «      }||d|…df   ||dz   ||z   …df   z  j                  d¬«      }	||   |	z
  ||df   z  ||df<   ŒR |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   Nr0   .r;   r9   r  )rŸ  r®   r  rM   rá   rà   r  rÛ  )
r#  r    r   rÀ   r  r  r5   r  r  Úsumms
             rY   Úfpbackr(     s  € ð
 	�‰€AØ�G‰G�E€A€rØ	�‰€BØ�7‰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ˆà�!�Q�s�U˜D�.Ñ! A a¨¡c¨!¨C©% i° nÑ$5Ñ5×:Ñ:ÀÐ:ÓBˆØ˜‘d˜T‘k a¨¨1¨¡gÑ-ˆˆ!ˆSˆ&Š	ð	.ð
 €Hrn   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚTestGivensQRc                 ó|   — d}t        j                  |t        ¬«      }|dz  dd|z   z  z   }t        ||«      }||||fS )Nr=   rG   r0   )rM   rQ   rò  r   )rU   rW   r6   r}   r    r4   s         rY   Ú_get_xytzTestGivensQR._get_xyt7  sF   € ØˆÜ�I‰I�aœuÔ%ˆØˆq‰D�1�a˜‘c‘7‰NˆÜ˜˜1ÓˆØ�!�Q˜ˆzÐrn   c                 ót  — d}| j                  |«      \  }}}}t        j                  |||«      }t        j                  |j                  «       «      \  }}|j                  |z  }	|j                  \  }
}||j                  d   |z
  dz
  k(  sJ ‚|j                  d d |dz   …   }t        j                  |t        j                  ¬«      }|j                  j                  |
|dz   «      }t        |||«      }|d d …d f   }t        j                   ||||«       t#        t        j$                  |j                  «       |z   |j                  «       |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.                  |j0                  ||||t        j2                  |«      |«      \  }}}t#        ||d d …df   d¬«       y )	Nrh   r   r0   rG   r\   rz   g‚vIhÂ%L=çê-�™—a=)r,  r   rE  r¿  rÊ  r  rÅ  r®   ÚindicesrM   Úascontiguousarrayr  Údatar‡   r  r,   Ú	qr_reducer   Úminimumrá   rÛ  r¸  r(  rŸ  r  rt   )rU   rW   r}   r    r4   r6   Úa_csrÚqrŠ  ÚqTyr   r  r³  rÀ  r   Úy_Úc_fullÚc_bandedrÀ   s                      rY   Útest_vs_fullzTestGivensQR.test_vs_full>  sÝ  € ØˆØ—]‘] 1Ó%‰
ˆˆ1ˆa�ô ×%Ñ% a¨¨AÓ.ˆô �u‰u�U—]‘]“_Ó%‰ˆˆ1Ø�c‰c�A‰gˆð —‘‰ˆˆ2Ø�Q—W‘W˜Q‘Z !‘^ aÑ'Ò'Ð'Ð'à—‘™w ! A¡#˜wÑ'ˆÜ×%Ñ% f´B·H±HÔ=ˆØ�J‰J×Ñ˜q ! A¡#Ó&ˆä˜˜F BÓ'ˆØŠq�$ˆw‰ZˆÜ×Ñ˜1˜f b¨"Ô-ô 	œŸ
™
 1§9¡9£;°¡?Ø#$§9¡9£;°¡?ó4Ü57·]±]À1Ó5EÈEõ	SäœŸ
™
¤3 s¨R²°1°©X¡~Ó#6Ü#& s¨R²°1°©X¡~Ó#6ó8Ü9;¿¹ÀsÓ9KÐRWõ	Yô —‘˜!˜SÓ!ˆÜ!Ÿ™¨¯©¨a¯d©d°A°r¸1¸aÄÇÁÈaÃÐRTÓU‰ˆ�!�QÜ˜ ª¨A¨¡°UÖ;rn   c                 óº  — d}| j                  |«      \  }}}}t        j                  |||«      }|j                  \  }}||j                  d   |z
  dz
  k(  sJ ‚|j                  d d |dz   …   }	t        j                  |	t
        j                  ¬«      }	|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¬«       y )	Nrh   r   r0   rG   r\   rz   F)Úcheck_dtype)r,  r   rE  r®   r/  rM   r0  r  r1  r‡   r  r$  r,   r2  r   rŸ  r   r³  r  )rU   rW   r}   r    r4   r6   r4  r   r  r³  rÀ  r   r7  ÚRRrÍ   s                  rY   Útest_py_vs_compiledz TestGivensQR.test_py_vs_compileda  s,  € àˆØ—]‘] 1Ó%‰
ˆˆ1ˆa�ô ×%Ñ% a¨¨AÓ.ˆØ—‘‰ˆˆ2Ø�Q—W‘W˜Q‘Z !‘^ aÑ'Ò'Ð'Ð'à—‘™w ! A¡#˜wÑ'ˆÜ×%Ñ% f´B·H±HÔ=ˆØ�J‰J×Ñ˜q ! A¡#Ó&ˆä˜˜F BÓ'ˆØŠq�$ˆw‰Zˆä˜q "Ó%‰ˆˆBÜ×Ñ˜1˜f b¨2Ô.ä˜Ÿ™˜aŸc™c¨Õ.Ü˜Ÿ	™	 1§8¡8¸Õ?Ø�u‰u˜Ÿ™Š}Ðˆ}Ü˜˜B UÖ+rn   c                 ó6  — d}| j                  |«      \  }}}}t        j                  d|dz   t        ¬«      }t	        j
                  ||||«      \  }}}	|j                  d   }
t        j                  |||«      }||d d …d f   z  j                  «       }|j                  j                  |
|dz   f«      }|j                  d d |dz   …   j                  t        j                  «      }t        ||d¬«       t!        ||«       |	|j                  d   |z
  dz
  k(  sJ ‚y )Nrh   r0   rG   r   r\   rz   )r,  rM   rQ   rò  r,   Údata_matrixr®   r   rE  Útocsrr1  r‡   r/  rî  r  r   r   )rU   rW   r}   r    r4   r6   r×  rÀ  r³  r  r   r4  Úa_wÚA_Úoffset_s                  rY   Útest_data_matrixzTestGivensQR.test_data_matrix|  s  € ØˆØ—]‘] 1Ó%‰
ˆˆ1ˆa�Ü�I‰I�a˜˜1™¤EÔ*ˆä ×,Ñ,¨Q°°1°aÓ8‰ˆˆ6�2à�G‰G�A‰JˆÜ×%Ñ% a¨¨AÓ.ˆØ�qš˜D˜‘zÑ!×(Ñ(Ó*ˆØ�X‰X×Ñ˜q ! A¡#˜hÓ'ˆØ—+‘+™g  1¡˜gÑ&×-Ñ-¬b¯h©hÓ7ˆä˜˜2 EÕ*Ü˜ Ô(Ø�Q—W‘W˜Q‘Z !‘^ aÑ'Ò'Ð'Ñ'rn   c                 ó¦  — d}| j                  |«      \  }}}}t        j                  ||dz  f   }t        j                  |||t        j
                  |«      «      \  }}}t        |||«      }	t        j                  ||||«       t        |	|«      }
t        j                  ||||||t        j
                  |«      |«      \  }}}t        ||
d¬«       y )Nrh   r;   ry   rz   )
r,  rM   r  r,   r@  rt   r  r2  r(  r   )rU   rW   r}   r    r4   r6   rÀ  r³  r  r   r5   rú   rÀ   s                rY   Útest_fpbackzTestGivensQR.test_fpback�  s¹   € ØˆØ—]‘] 1Ó%‰
ˆˆ1ˆa�Ü�E‰E�!�Q˜‘T�'‰NˆÜ ×,Ñ,¨Q°°1´b·l±lÀ1³oÓF‰ˆˆ6�2Ü˜˜F BÓ'ˆÜ×Ñ˜1˜f b¨!Ô,ä�1�a‹LˆÜ—?‘? 1 b¨!¨Q°°1´b·l±lÀ1³oÀqÓI‰ˆˆAˆqä˜˜A EÖ*rn   c                 ó  — d}| j                  |«      \  }}}}t        j                  |dz   ft        ¬«      }|D ]N  }t	        t        j                  |||||dz   «      |«       t	        t        j                  ||||d|z  «      |«       ŒP y )Nrh   r0   rG   r;   )r,  rM   r5  rò  r   r,   r¾  )rU   rW   r}   rÀ   r4   r6   Ú
zero_arrayr�  s           rY   Útest_evaluate_all_bsplz#TestGivensQR.test_evaluate_all_bsplš  sŽ   € ØˆØ—]‘] 1Ó%‰
ˆˆ1ˆa�Ü—X‘X˜q 1™u˜h¬eÔ4ˆ
Øò 	LˆDÜÜ×*Ñ*¨1¨a°°q¸!¸a¹%Ó@À*ôNäÜ×*Ñ*¨1¨a°°q¸!¸A¹#Ó>À
õLñ	Lrn   N)	r(  r)  r*  r,  r:  r>  rE  rG  rJ  r+  rn   rY   r*  r*  4  s"   „ òò!<òF,ò6(ò"+óLrn   r*  c                 óÀ   — t         j                  j                  t         j                  j                  t         j                  j	                  t
        «      «      d| «      S )Nr1  )ÚosÚpathr€  ÚabspathÚdirnameÚ__file__)Úbasenames    rY   Ú	data_filerR  ¥  s8   € Ü�7‰7�<‰<œŸ™Ÿ™¬¯©¯©¼Ó(AÓBØ ó*ð *rn   c                   ó`   — e Zd Zd„ Zd„ Zd„ Zej                  j                  d«      d„ «       Z	y)ÚTestSmoothingSplinec                 ó0  — t         j                  j                  d«      }d}t        j                  |j	                  |«      dz  dz
  «      }|dz  t        j
                  d|z  «      z  |dz  z   |j                  dd|«      z   }t        t        «      5  t        ||dd  «       d d d «       t        t        «      5  t        |dd  |«       d d d «       t        t        «      5  t        |j                  d|«      |«       d d d «       t        t        «      5  t        |d d d	…   |«       d d d «       t        j                  |«      }|d   |d
<   t        t        «      5  t        ||«       d d d «       t        j                  d«      }t        j                  d«      }d}t        j                  t        |¬«      5  t        ||«       d d d «       y # 1 sw Y   �Œ-xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒëxY w# 1 sw Y   ŒÍxY w# 1 sw Y   Œ˜xY w# 1 sw Y   y xY w)Nrš   r£   r>   r;   r=   r?   r  r0   r9   r   z)``x`` and ``y`` length must be at least 5r  )rM   rT   r�   rž   rB  r”  ÚnormalrI   rK   r   r‡   r  rQ   rÂ  rc   r   )rU   rŸ   rW   r}   r    Úx_duplÚexception_messages          rY   Útest_invalid_inputz&TestSmoothingSpline.test_invalid_input¯  sÉ  € Ü�i‰i×#Ñ# DÓ)ˆØˆÜ�G‰G�C×%Ñ% aÓ(¨1Ñ,¨qÑ0Ó1ˆØˆq‰D”2—6‘6˜!˜a™%“=Ñ  1 a¡4Ñ'¨#¯*©*°R¸¸aÓ*@Ñ@ˆô œ:Ó&ñ 	,Ü! ! Q q r UÔ+÷	,äœ:Ó&ñ 	,Ü! ! A B %¨Ô+÷	,äœ:Ó&ñ 	6Ü! !§)¡)¨A¨q£/°1Ô5÷	6ô œ:Ó&ñ 	.Ü! !¡D b D¡'¨1Ô-÷	.ô —‘˜“ˆØ˜1‘Iˆˆq‰	äœ:Ó&ñ 	-Ü! &¨!Ô,÷	-ô �I‰I�a‹LˆÜ�G‰G�A‹JˆØGÐÜ�]‰]œ:Ð->Ô?ñ 	(Ü! ! QÔ'÷	(ð 	(÷+	,ñ 	,ú÷	,ñ 	,ú÷	6ð 	6ú÷	.ð 	.ú÷	-ð 	-ú÷	(ð 	(úsH   ÂGÂ:GÃ!G(ÄG4ÅH Æ8HÇGÇG%Ç(G1Ç4G=È H	ÈHc                 óÌ   — t        j                  t        d«      «      5 }|d   }|d   }|d   }ddd«        t        «      |«      }t	        |ddd¬«       y# 1 sw Y   Œ,xY w)	ae  
        Data is generated in the following way:
        >>> np.random.seed(1234)
        >>> n = 100
        >>> x = np.sort(np.random.random_sample(n) * 4 - 2)
        >>> y = np.sin(x) + np.random.normal(scale=.5, size=n)
        >>> np.savetxt('x.csv', x)
        >>> np.savetxt('y.csv', y)

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

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

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

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

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

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

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

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

        z
gcvspl.npzr}   r    Úy_GCVSPLNç-Cëâ6?F)r^   r_   r<  )rM   ÚloadrR  r   r   )rU   r1  r}   r    r[  Úy_comprs         rY   Útest_compare_with_GCVSPLz,TestSmoothingSpline.test_compare_with_GCVSPLÎ  sq   € ôR �W‰W”Y˜|Ó,Ó-ð 	(°à�S‘	ˆAØ�S‘	ˆAà˜JÑ'ˆH÷	(ð .Ô'¨¨1Ó-¨aÓ0ˆô 	˜ °¸4ÈUÖS÷	(ð 	(ús   ŸAÁA#c                 óô  — t         j                  j                  d«      }d}t        j                  |j	                  |«      dz  dz
  «      }|dz  t        j
                  d|z  «      z  |dz  z   |j                  dd|«      z   }|j                  |«      |j                  |«      }}t        ||d¬«      }t        ||dd	¬
«      }|j                  |d   |d   d|z  «      }t         ||«       ||«      d¬«       y)z–
        In case the regularization parameter is 0, the resulting spline
        is an interpolation spline with natural boundary conditions.
        rš   r£   r>   r;   r=   r?   r  )ÚlamrL  re  r   r9   r\   rz   N)rM   rT   r�   rž   rB  r”  rV  rS   r   r   ri   r   )	rU   rV   rŸ   rW   r}   r    Ú
spline_GCVÚspline_interpÚgrids	            rY   Útest_non_regularized_casez-TestSmoothingSpline.test_non_regularized_case	  sä   € ô �i‰i×#Ñ# DÓ)ˆØˆÜ�G‰G�C×%Ñ% aÓ(¨1Ñ,¨qÑ0Ó1ˆØˆq‰D”2—6‘6˜!˜a™%“=Ñ  1 a¡4Ñ'¨#¯*©*°R¸¸aÓ*@Ñ@ˆà�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆä*¨1¨a°RÔ8ˆ
Ü*¨1¨a°¸IÔFˆà�{‰{˜1˜Q™4  2¡¨¨A©Ó.ˆÜ™
 4Ó(Ù% dÓ+Ø"ö	$rn   r;   c                 óÊ  — t         j                  j                  d«      }d}t        j                  |j	                  |«      dz  dz
  «      }|dz  t        j
                  d|z  «      z  |dz  z   |j                  dd|«      z   }t        |j                  ||f«      \  }}t        ||«      }|j                  t        d«      d¬	«      D ]š  }|j                  |«      }t        j                  |t        |«      «      j!                  d
«       t        |||«      }	t#         |||   «      ||   z
  «      }
t#         |	||   «      ||   z
  «      }|
|k  sŒ‰t%        d|
d›d|d›�«      ‚ y )Nrš   r£   r>   r;   r=   r?   r  rh   rª   g      >@zJSpline with weights should be closer to the points than the original one: z.4z < )rM   rT   r�   rž   rB  r”  rV  r|   rS   r   Úchoicerà   rÂ  r˜  r™  r´  rš  rÛ  rK   )rU   rV   rŸ   rW   r}   r    r9  Úindr×  Úspl_wÚorigÚweighteds               rY   Útest_weighted_smoothing_splinez2TestSmoothingSpline.test_weighted_smoothing_spline	  sZ  € ô �i‰i×#Ñ# DÓ)ˆØˆÜ�G‰G�C×%Ñ% aÓ(¨1Ñ,¨qÑ0Ó1ˆØˆq‰D”2—6‘6˜!˜a™%“=Ñ  1 a¡4Ñ'¨#¯*©*°R¸¸aÓ*@Ñ@ˆä�2—:‘:  1˜vÓ&‰ˆˆ1ä# A qÓ)ˆð —:‘:œe C›j¨r�:Ó2ò 	3ˆCØ—‘˜“
ˆAÜ�F‰F�1”c˜#“hÓ×#Ñ# CÔ(Ü)¨!¨Q°Ó2ˆEô ‘s˜1˜S™6“{ Q s¡VÑ+Ó,ˆDÜ™5  3¡›=¨1¨S©6Ñ1Ó2ˆHà�h‹Ü ð $CØCGÈÀ)È3Ø$,¨R =ð"2ó 3ð 3ñ	3rn   N)
r(  r)  r*  rY  r_  re  rc   rˆ  Ú	fail_slowrl  r+  rn   rY   rT  rT  ª  s6   „ ò
(ò>6Tòp$ð* ‡[�[×Ñ˜1Óñ3ó ñ3rn   rT  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.r0   c           	   3   óˆ   •K  — | ]9  }t        ‰«      D ])  }‰||f   t        ‰‰|‰«      z  t        ‰	‰|‰«      z  –— Œ+ Œ; y ­wr×  )rà   r,  )
rØ  ÚixÚiyr5   r6   ÚnyÚtxÚtyr}   r    s
      €€€€€€€rY   rÙ  zbspline2.<locals>.<genexpr>B	  sU   øè ø€ ò 7Ø¬E°"«Iò7Ø&(ð ��B�‰iœ!˜A˜q " b›/Ñ)¬A¨a°°B¸«OÕ;ð 7Ð;ñ 7ùs   ƒ?A)rD  rÛ  rà   rM   rS   )rÔ   r4   r5   r6   Únxr#  rr  rs  rt  r}   r    s     ``  @@@@@rY   Úbspline2rv  :	  s…   þ€ à�D€A€qØ�F€BˆÜ	ˆR‹�1‰�q‰€BØ�!�A‘#ŠIÐˆIÜ	ˆR‹�1‰�q‰€BØ�!�A‘#ŠIÐˆIÜ
÷ 7ñ 7Ü˜b›	ô7ó 7€Cä�:‰:�c‹?Ðrn   c                 ób  — |dk(  r||   | cxk  r||dz      k  rdS  dS |||z      ||   k(  rd}n)| ||   z
  |||z      ||   z
  z  t        | |dz
  ||«      z  }|||z   dz      ||dz      k(  rd}||z   S |||z   dz      | z
  |||z   dz      ||dz      z
  z  t        | |dz
  |dz   |«      z  }||z   S )Nr   r0   r2   r?   ©r,  rÒ  s         rY   r,  r,  G	  sþ   € ØˆA‚vØ˜‘d˜aÔ( ! A a¡C¡&Ò(ˆsÐ1Ð(¨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ÒØˆð �‰7€Nð ��!‘�A‘‰h˜‰l˜Q˜q ™s 1™u™X¨¨!¨A©#©Ñ.Ñ/´!°A°q¸±s¸A¸a¹CÀÓ2CÑCˆØ�‰7€Nrn   c                 óœ   ‡ ‡‡‡— t        ‰«      ‰z
  dz
  }|‰dz   k\  rt        ‰«      |k\  sJ ‚t        ˆˆˆˆ fd„t        |«      D «       «      S )Nr0   c              3   óF   •K  — | ]  }‰|   t        ‰‰|‰«      z  –— Œ y ­wr×  rx  rÞ  s     €€€€rY   rÙ  zbspline.<locals>.<genexpr>X	  s$   øè ø€ Ò6¨ˆq�‰t”a˜˜1˜a “mÕ#Ñ6ùrß  )rD  rÛ  rà   )r}   r4   r5   r6   rW   s   ```` rY   rW  rW  U	  sD   û€ ÜˆA‹�‰
�Q‰€AØ��1‘ŠHœ3˜q›6 Qš;Ð'Ð'ÜÖ6¬U°1«XÔ6Ó6Ð6rn   c                   ó   — e Zd Zdd„Zd„ Zy)Ú
NdBSpline0c                 óú   — t        |«      }|t        |j                  «      k  sJ ‚	 t        |«       t        d„ |D «       «      | _        t        d„ |D «       «      | _        || _        y# t        $ r	 |f|z  }Y ŒGw xY w)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   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr×  )ÚoperatorÚindex)rØ  Úkis     rY   rÙ  z&NdBSpline0.__init__.<locals>.<genexpr>t	  s   è ø€ Ò6¨b”x—~‘~ b×)Ñ6ùs   ‚!c              3   óR   K  — | ]  }t        j                  |t        ¬ «      –— Œ! y­w)rG   N)rM   rS   rò  )rØ  Útis     rY   rÙ  z&NdBSpline0.__init__.<locals>.<genexpr>u	  s   è ø€ Ò?°r”r—z‘z "¬E×2Ð2Ñ?ùs   ‚%'N)rD  r®   rJ   r1  r6   r4   r5   )rU   r4   r5   r6   r"  s        rY   r	  zNdBSpline0.__init__\	  sx   € ô �1‹vˆØ”s˜1Ÿ7™7“|Ò#Ð#Ð#ð	Ü�ŒFô
 Ñ6°AÔ6Ó6ˆŒÜÑ?¸QÔ?Ó?ˆŒØˆ�øô ò 	à��T‘	ŠAð	ús   §A( Á(A:Á9A:c                 ób  — 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J ‚ J ‚||   |k\  r||   t        |«      |z
  k  rŒŒJ ‚ t        |«      }d}t        |«      D �cg c]'  }t        ||   | j                  |   z
  ||   dz   «      ‘Œ) }	}t        j                  |	Ž D ]o  }
| j                  |
   t	        j                  t        |«      D �cg c]0  }t        ||   | j                  |   |
|   | j                  |   «      ‘Œ2 c}«      z  }||z  }Œq t	        j                  |«      S c c}w c c}w )NÚnoner0   r   )rD  r4   rà   r6   rM   rÚ  r1  Ú	itertoolsÚproductr5   Úprodr,  rS   )rU   r}   r"  r  r»  ÚtdÚxdr6   rî  ÚitersÚidxÚterms               rY   Ú__call__zNdBSpline0.__call__x	  sÈ  € Ü�4—6‘6‹{ˆä�1‹v˜Š~Ðˆ~ð ˆJ�t‰OˆÜ�t“ò 
	4ˆAØ—V‘V˜A‘Y  !¡�ˆBØ—‘�q‘	ˆAð �R˜‘UŠ{Ø��!’ä—‘ r¨2Ó.°Ñ2��!‘Ø�a˜‘d‘8˜rÔ/ R¨¨!©¨Q©¡ZÒ/Ð/Ñ/Ð/Ð/Ø�Q‘4˜1’9  1¡¬¨B«°!©Ó!3Ð3Ð3ð
	4ô �!‹Hˆð
 ˆÜ<AÀ$»KÖH°q”�q˜‘t˜dŸf™f Q™iÑ'¨¨1©°©Õ2ÐHˆÐHÜ×$Ñ$ eÐ,ò 	ˆCØ—6‘6˜#‘;¤§¡Ü38¸³;ö*@Ø./ô +,¨A¨a©D°$·&±&¸±)¸SÀ¹VÀTÇVÁVÈAÁYÕ*Oò *@ó "Añ AˆDà�d‰N‰Fð	ô �z‰z˜&Ó!Ð!ùò Iùò*@s   Ã ,F'Å5F,N©r=   )r(  r)  r*  r	  rŽ  r+  rn   rY   r|  r|  [	  s   „ óó8"rn   r|  c                   ón  — e Zd Zd„ Zefd„Zefd„Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zefd„Zd„ Zd„ Zd„ Zd„ Zej*                  j-                  dddg«      ej*                  j-                  dddg«      d„ «       «       Zej*                  j-                  dddg«      d„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy) ÚTestNdBSplinec                 óD  — t         j                  j                  d«      }d\  }}d}t        j                  |j	                  ||z   dz   ¬«      «      }|j	                  ||f¬«      }|j                  |«      }|j                  |«      }t        |||«      }t        |f||«      }	|j	                  d¬«      }
|j                  |
«      }
t         |	|
d d …d f   «       ||
«      d¬«        |	|
d d …d f   «      j                  |
j                  d	   |j                  d   fk(  sJ ‚y )
Nr£  rE   r©   r0   rª   r  ry   rz   r   )
rM   rT   r§  rž   r¨  rS   r   r   r   r®   )rU   rV   rŸ   rW   r6   Ún_trr4   r5   rX   ÚnbÚxis              rY   Útest_1DzTestNdBSpline.test_1D›	  s  € ä�i‰i×#Ñ# EÓ*ˆØ‰ˆˆ1ØˆÜ�G‰G�C—K‘K Q¨¡U¨Q¡Y�KÓ/Ó0ˆØ�K‰K˜a ˜YˆKÓ'ˆà�J‰J�q‹MˆØ�J‰J�q‹Mˆä�A�q˜!ÓˆÜ˜�t˜Q Ó"ˆà�[‰[˜bˆ[Ó!ˆØ�Z‰Z˜‹^ˆô 	™˜2ša ˜g™;›Ù˜"› Eõ	+á�"’Q˜�W‘+‹×$Ñ$¨¯©°!©°a·g±g¸a±jÐ(AÒAÐAÑArn   c                 ó  — |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¨   r=   rZ  r;   ©rQ   r   r4   r5   ©	rU   rV   r}   r    r9  Úy_1r˜  Út2rÔ  s	            rY   Úmake_2d_casezTestNdBSpline.make_2d_case±	  s†   € à�I‰I�a‹LˆØˆq‰DˆÜ   A¨Ô+ˆà�‰d�Q�q‘S‰jˆÜ" 1 c¨QÔ/ˆà�e‰e�U—W‘WÐˆØ�U‰U’1�d�7‰^˜eŸg™g dªA gÑ.Ñ.ˆà�2�qˆyÐrn   c                 ón  — |j                  d«      }|dz  }t        ||d¬«      }|j                  d|j                  ¬«      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¨   r=   rZ  r­   rG   r  r;   )rQ   r   rR   r4   r5   r6   r™  s	            rY   Úmake_2d_mixedzTestNdBSpline.make_2d_mixed¿	  s¬   € à�I‰I�a‹LˆØˆq‰DˆÜ   A¨Ô+ˆà�I‰I�a˜rŸz™zˆIÓ*¨SÑ0ˆØ�‰d�Q�q‘S‰jˆÜ" 1 c¨QÔ/ˆà�e‰e�U—W‘WÐˆØ�U‰U’1�d�7‰^˜eŸg™g dªA gÑ.Ñ.ˆà�2�s—u‘u˜eŸg™gÐ%Ð%rn   c                 óè  — g d¢}| j                  |¬«      \  }}}|D ��cg c]  \  }}|dz  |dz  d|z  z   z  ‘Œ }}}|D �	�
cg c]D  }	t        |	|D �
cg c]  }
t        j                  |
«      ‘Œ c}
t        j                  |«      |«      ‘ŒF }}	}
t        j                  |t        j                  ¬«      }t        |j                  |«      |j                  ||j                  ¬«      dd¬«       t        ||d¬	«      } ||«      j                  t        |«      fk(  sJ ‚t         ||«      |j                  ||j                  ¬«      d¬
«       t        j                  |«      }t        j                  |d<   |j                  |«      }t        |j                   ||«      «      |j                  g d¢«      «       t        j                  j                  d«      }|j                  d¬«      dz  }|j                  |«      } ||«      }|j                  dk(  sJ ‚|j                  |d«      j                   }|d   |d   }}t        t#        ||¬«      |dz  |dz  d|z  z   z  d¬
«       y c c}}w c c}
w c c}
}	w )N©©r  rD   )rD   r0   )rÓ   r  rx   r=   r;   rG   Fry   ©r/  r^   rZ  rz   r�  )TFFr£  )r>   r=   r;   rª   r­   )r>   r=   )r9   r;   )r   .)r0   .)rœ  rv  rM   rS   rR   r   r   r®   rD  rO   r   rÌ   rT   r§  r¨  r‡   rÅ  r   )rU   rV   r•  r›  rÔ  r6   r}   r    ÚtargetrÔ   rÀ   r
  Úbspl2rŸ   rî  Úrrrs                   rY   Útest_2D_separablezTestNdBSpline.test_2D_separableÎ	  s-  € Ú/ˆØ×%Ñ%¨Ð%Ó,‰	ˆˆB�Ø46×7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%Ð7ˆÑ7ð ÷
ð
 ô ØØ(*Ö+ 1”—‘˜A•Ò+Ü—
‘
˜2“Øõ	ð 
ˆñ 
ô �Z‰Z˜¤"§*¡*Ô-ˆÜ˜Ÿ
™
 2›ØŸ
™
 6°·±˜
Ó<Ø$)Ø"õ	$ô ˜"˜b AÔ&ˆÙ�R‹y�‰¤3 r£7 +Ò-Ð-Ð-Ü™˜b›	ØŸ
™
 6°·±˜
Ó<À5õ	Jô �Z‰Z˜‹^ˆÜ—6‘6ˆˆ4‰Ø�Z‰Z˜‹^ˆÜ˜Ÿ™¡ r£Ó+¨R¯Z©ZÒ8LÓ-MÔNô �i‰i×#Ñ# EÓ*ˆØ�[‰[˜iˆ[Ó(¨1Ñ,ˆØ�Z‰Z˜‹^ˆÙ�r“ˆØ�|‰|˜vÒ%Ð%Ð%ð �j‰j˜˜WÓ%×'Ñ'ˆØ�6‰{˜C ™Kˆ1ˆÜœ ¨BÔ/Ø˜1™  1¡ q¨¡s¡
Ñ+°%ö	9ùóM 8ùò
 ,ùó
s    I#ÁI.ÁI)Á.I.É)I.c                 ó>  — d}g d¢}|D ��cg c]  \  }}|dz  |dz  d|z  z   z  ‘Œ }}}| j                  |¬«      \  }}}	|j                  ||||fd¬«      }
d}t        ||
d¬«      } ||«      } t        |||	«      |«      }|j                  dk(  sJ ‚t	        ||j                  |gd	z  «      d
¬«        ||«      j                  t        j                  |«      d d |j                  j                  |d  z   k(  sJ ‚t	         ||«      |j                  ||j                  ¬«      d d …d f   dd¬«       |j                  |
d«      }t        ||d¬«      } ||«      }|j                  dk(  sJ ‚|j                  d|j                  ¬«      |z  }t	        ||d
¬«        ||«      j                  t        j                  |«      d d |j                  j                  |d  z   k(  sJ ‚t	         ||«      |j                  ||j                  ¬«      d d …d d f   dd¬«       y c c}}w )Nr;   r   r=   rx   r  r¡  rZ  ©r>   r>   ry   rz   r9   rG   Fg‚vIhÂ%,=r¢  ©r¨   r¨   r;   r;   )r;   r;   )rœ  r�   r   r®   r   rM   r5   rS   rR   r‡   rÂ  )rU   rV   r"  r•  r}   r    r£  r›  rÔ  r6   Úc2_4rÔ   Úbspl2_4rî  Ú
val_singleÚc2_22Úbspl2_22Ú
target2_22s                     rY   Útest_2D_separable_2z!TestNdBSpline.test_2D_separable_2ú	  s  € àˆÚ/ˆØ46×7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%Ð7ˆÑ7à×%Ñ%¨Ð%Ó,‰	ˆˆB�Ø�x‰x˜˜R  RÐ(¨qˆxÓ1ˆàˆÜ˜B ¨Ô*ˆÙ˜“ˆØ)”Y˜r 2 qÓ)¨"Ó-ˆ
Ø�|‰|˜tÒ#Ð#Ð#Ü˜ØŸ™ * °Ñ!1Ó2¸õ	@ñ
 �r‹{× Ñ ¤B§H¡H¨R£L°°"Ð$5¸¿	¹	¿¹ÈÈÐ8NÑ$NÒNÐNÐNÜ™ ›ØŸ
™
 6°·±˜
Ó<ºQÀ¸WÑEØ$)Ø"õ	$ð —
‘
˜4 Ó.ˆÜ˜R ¨!Ô,ˆá˜"“ˆØ�|‰|˜vÒ%Ð%Ð%Ø—W‘W˜V¨2¯:©:�WÓ6°zÑAˆ
Ü˜ 
°Õ7ñ ˜“×"Ñ"Ü—‘˜“˜S˜bÐ! H§J¡J×$4Ñ$4°T°UÐ$;Ñ;ò<ð 	=ð <ä™ ›ØŸ
™
 6°·±˜
Ó<ºQÀÀd¸]ÑKØ$)Ø"ö	$ùóE 8s   ŒHc                 ó°  — g d¢}|D ��cg c]  \  }}|dz  |dz  d|z  z   z  ‘Œ }}}|D �cg c]
  }|d|z  z   ‘Œ }}| j                  |¬«      \  }}}	|dz  }|j                  ||||fd¬«      }
d}t        ||
d¬	«      } ||«      } t        |||	«      |«      }|j                  d
k(  sJ ‚t	        ||j                  |gdz  «      d¬«       y c c}}w c c}w )Nr   r=   r;   y               @rx   ré  r  r¡  rZ  r¨  r>   ry   rz   )rœ  r�   r   r®   r   )rU   rV   r•  r}   r    r£  r4   r›  rÔ  r6   rª  rÔ   r«  rî  r¬  s                  rY   Útest_2D_separable_2_complexz)TestNdBSpline.test_2D_separable_2_complex%
  sô   € â/ˆØ46×7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%Ð7ˆÑ7à$*Ö+˜q�!�b˜‘d“(Ð+ˆÐ+à×%Ñ%¨Ð%Ó,‰	ˆˆB�Ø�6‰]ˆØ�x‰x˜˜R  RÐ(¨qˆxÓ1ˆàˆÜ˜B ¨Ô*ˆÙ˜“ˆØ)”Y˜r 2 qÓ)¨"Ó-ˆ
Ø�|‰|˜tÒ#Ð#Ð#Ü˜ØŸ™ * ¨a¡Ó0°uö	>ùó 8ùâ+s
   ŠC¬Cc                 óº  — t         j                  j                  d«      }d}t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }|j                  |j                  |z
  dz
  |j                  |z
  dz
  f¬«      }t        ||f||¬	«      }d
}t         ||«      t        |||f||«      d¬«       t         j                  g d¢g d¢f   }t         ||«      |D �cg c]  }t        |||f||«      ‘Œ c}d¬«       y c c}w )Nr£  r=   r   r©   rª   rÐ   r>   r0   rZ  )r2   r2   ry   rz   ©r0   r  r;   ©çš™™™™™ñ?gš™™™™™ù?çÍÌÌÌÌÌ @)rM   rT   r§  r´   rž   r¨  r«   r   r   rv  r  )	rU   rŸ   r6   rs  rt  r5   r9  r•  rÔ   s	            rY   Útest_2D_randomzTestNdBSpline.test_2D_random8
  sA  € Ü�i‰i×#Ñ# EÓ*ˆØˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆØ�K‰K˜bŸg™g a™i¨™k¨2¯7©7°1©9°Q©;Ð7ˆKÓ8ˆä˜˜R˜ ! qÔ)ˆàˆÜ™˜B›Ü   b¨" X¨q°!Ó4¸5õ	Bô �U‰U’;Ú"ð#ñ $ˆä™˜B›Ø@BÖC¸"œ " r¨2 h°°1Õ5ÒCØ"ö	$ùÚCs   Ä7E
c                 ó  — | j                  «       \  }}}}g d¢}|D ��cg c]  \  }}|dz  |dz  d|z  z   z  ‘Œ }}}t        ||||f¬«      }	 |	|«      j                  t        |«      fk(  sJ ‚t	         |	|«      |d¬«       y c c}}w )N©)çffffffö?r¬  )rD   g333333@)r¬  r·  r=   r;   rZ  ry   rz   )rž  r   r®   rD  r   )
rU   r›  rÔ  ÚkxÚkyr•  r}   r    r£  r¤  s
             rY   Útest_2D_mixedzTestNdBSpline.test_2D_mixedK
  s�   € Ø×+Ñ+Ó-‰ˆˆB��BÚ1ˆØ46×7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%Ð7ˆÑ7Ü˜"˜b R¨ HÔ-ˆÙ�R‹y�‰¤3 r£7 +Ò-Ð-Ð-Ü™˜b›	Ø Uö	,ùó 8s   ŸBc                 ó¾  — | j                  |¬«      \  }}}}g d¢}t        ||||f¬«      }dd„ dd„ dd	„ d
|z  dfd„ d
|z  dfd„ dd|z  fd„ dd|z  fd„ d|z  d
|z  fd„ i}|j                  «       D ]y  \  }	}
|j                  |D ��cg c]  \  }} |
||«      ‘Œ c}}|j                  ¬«      } |||	¬«      }t        ||d¬«        |j                  |	«      |«      }t        ||d¬«       Œ{ dD ]M  }t        t        «      5   |||¬«       d d d «       t        t        «      5  |j                  |«       d d d «       ŒO y c c}}w # 1 sw Y   Œ;xY w# 1 sw Y   ŒlxY w)Nrx   rº  rZ  r�  c                 ó*   — d| dz  z  |dz  d|z  z   z  S ©Nr=   r;   r+  ©r}   r    s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>[
  s   €   Q¨¡T¡¨Q°©T°A°a±C©ZÑ!8€ rn   ©r0   r0   c                 ó$   — d| dz  z  d|z  dz   z  S rÁ  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>\
  s   €   Q¨¡T¡¨Q¨q©S°1©WÑ!5€ rn   )r   r   c                 ó$   — | dz  |dz  d|z  z   z  S rÁ  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>]
  s   €   A¡¨¨A©°°!±©Ñ!4€ rn   r;   r0   c                  ó   — yr  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>^
  rè  rn   r   c                  ó   — yr  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>_
  rè  rn   r=   c                  ó   — yr  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>`
  rè  rn   c                  ó   — yr  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>a
  rè  rn   c                  ó   — yr  r+  rÂ  s     rY   rç  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>b
  rè  rn   rG   rÞ   ry   rz   ))r9   r   ©r9   r   r0   )	rž  r   ÚitemsrS   rR   r   r  rI   rK   )rU   rV   r›  rÔ  r¼  r½  r•  r¤  Ú
test_casesrß   Úexpected_fnr}   r    Úexpected_valsÚdirectÚ
via_methodÚbad_nus                    rY   Útest_2D_derivativez TestNdBSpline.test_2D_derivativeT
  s’  € Ø×+Ñ+¨rÐ+Ó2‰ˆˆB��BÚ1ˆÜ˜"˜b R¨ HÔ-ˆð Ñ8ØÑ5ØÑ4Øˆr‰T�1ˆI‘~Øˆr‰T�1ˆI‘~Ø��"‘ˆI‘~Ø��"‘ˆI‘~Øˆr‰T�1�R‘4ˆL™.ð	
ˆ
ð  *×/Ñ/Ó1ò 	C‰OˆB�ØŸJ™JØ/1×2¡t q¨!‘˜Q Õ"Ó2¸"¿*¹*ð 'ó ˆMñ
 ˜2 "Ô%ˆFÜ˜F M¸Õ>ð .˜×)Ñ)¨"Ó-¨bÓ1ˆJÜ˜J¨¸EÖBð	Cð#ò 	)ˆFäœzÓ*ñ %Ù�b˜VÕ$÷%äœzÓ*ñ )Ø× Ñ  Ô(÷)ð )ñ		)ùó 3÷%ð %ú÷)ð )ús   ÂEÄEÄ$EÅE	ÅE	c           
      ó�  — t         j                  j                  d«      }d\  }}t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }|j                  |j                  |z
  d	z
  |j                  |z
  d	z
  f¬«      }t         j                  g d
¢g d¢f   }t        ||f|||f¬«      }t        ||f|||f¬«      }	t         ||«      |D �
cg c]
  }
 |	|
«      ‘Œ c}
d¬«       y c c}
w )Nr£  )r;   r=   r   r©   rª   r=   rÐ   r>   r0   r´  rµ  rZ  ry   rz   )rM   rT   r§  r´   rž   r¨  r«   r  r   r|  r   ©rU   rŸ   r¼  r½  rs  rt  r5   r•  r¤  Úbspl2_0rV   s              rY   Útest_2D_mixed_randomz"TestNdBSpline.test_2D_mixed_randomz
  s.  € Ü�i‰i×#Ñ# EÓ*ˆØ‰ˆˆBÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆØ�K‰K˜bŸg™g¨™l¨QÑ.°·±¸"±¸qÑ0@ÐAˆKÓBˆä�U‰U’;Ú"ð#ñ $ˆô ˜2˜r˜( A¨"¨b¨Ô2ˆÜ˜b "˜X q¨R°¨HÔ5ˆä™˜b›	Ø/1Ö2¨™ �Ò2¸ö	@ùÚ2s   Ä*E
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|«      }t        j                  ||«      D �	�
cg c]	  \  }	}
|	|
f‘Œ }}	}
 ||«      }t        j                  |«      j                  «       rJ ‚t        | ||«      d¬«       t        |j                  |j                  «      |d¬«       y c c}
}	w )	Nr¨   r©   r  r=   rZ  r;   ry   rz   )rM   rQ   r   r5   r   r4   r6   r   r†  r‡  rÌ   Úanyr   r‡   r®   )rU   r}   r    Úspl_xÚspl_yrú   r‰   ÚvaluesÚrgirŸ  rX   r•  Úbxis                rY   Útest_tx_neq_tyzTestNdBSpline.test_tx_neq_tyŠ
  sM  € ä�I‰I�a‹LˆÜ�I‰I�a‹L˜3Ñˆä" 1 a¨¡d¨aÔ0ˆÜ" 1 a¨¡d¨Q¨q©S¡j°AÔ6ˆØ�W‰W’Q˜�WÑ §¡¨ªa¨Ñ 0Ñ0ˆÜ˜%Ÿ'™' 5§7¡7Ð+¨R°%·'±'¸5¿7¹7Ð1CÓDˆà�Q‘$š˜4˜‘ A q¡D¨1¨Q©3¡J°²a°Ñ#8Ñ8ˆÜ% q¨! f¨fÓ5ˆä!*×!2Ñ!2°1°aÓ!8×9™˜˜Aˆq�!ŠfÐ9ˆÑ9Ù�2‹hˆä—8‘8˜C“=×$Ñ$Ô&Ð&Ð&Ü˜™S ›W¨5Õ1Ü˜Ÿ™ F§L¡LÓ1°6ÀÖFùó :s   Ã<E6c                 ó€  — |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¨   r=   rZ  r;   r0   r˜  )rU   rV   r}   r    r9  rš  r˜  Úy_2r  r›  rÔ  s              rY   Úmake_3d_casezTestNdBSpline.make_3d_casež
  sÐ   € à�I‰I�a‹LˆØˆq‰DˆÜ   A¨Ô+ˆà�‰d�Q�q‘S‰jˆÜ" 1 c¨QÔ/ˆà�‰d�Q�q‘S‰j˜1‰nˆÜ" 1 c¨QÔ/ˆà�e‰e�U—W‘W˜eŸg™gÐ&ˆØ�e‰e’A�t˜T�MÑ"Ø�g‰g�dšA˜t�mÑ$ñ%à�g‰g�d˜D¢!�mÑ$ñ%ˆð �2�qˆyÐrn   c                 ó„  — t         j                  j                  d«      }|j                  d¬«      dz  \  }}}|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }| j	                  «       \  }}}t        ||d¬«      }	t        |||«      D �
cg c]  }
|
‘Œ }}
 |	|«      }|j                  d	k(  sJ ‚t        ||d
¬«       y c c}
w )Nr£  ©r=   rF   rª   r­   r=   r;   r0   rZ  ©rF   ry   rz   )	rM   rT   r§  r¨  râ  r   Úzipr®   r   )rU   rŸ   r}   r    r›  r£  Út3Úc3r6   Úbspl3rÀ   r•  rî  s                rY   Útest_3D_separablezTestNdBSpline.test_3D_separable±
  sÉ   € Ü�i‰i×#Ñ# EÓ*ˆØ—+‘+ 7�+Ó+¨aÑ/‰ˆˆ1ˆaØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà×%Ñ%Ó'‰	ˆˆB�Ü˜"˜b AÔ&ˆä˜Q  1›Ö&�AŠaÐ&ˆÐ&Ù�r“ˆØ�|‰|˜uÒ$Ð$Ð$Ü˜ ¨UÖ3ùò 's   Â
	B=c                 ó^  — | j                  |¬«      \  }}}t        ||d¬«      }t        j                  j	                  d«      }|j                  d¬«      dz  \  }}}	t        |||	«      D �
cg c]  }
|
‘Œ }}
|j                  |«      }d„ d	„ d
„ d„ d„ dœ}|j                  «       D ]z  \  }}|D ���cg c]  \  }}} ||||«      ‘Œ }}}}|j                  ||j                  ¬«      }t         |||¬«      |d¬«       t         |j                  |«      |«      |d¬«       Œ| y c c}
w c c}}}w )Nrx   r=   rZ  r£  rä  rª   r­   c                 óH   — d| dz  z  |dz  d|z  z   z  |dz  d|z  z   dz   z  S )Nr=   r;   r0   r+  ©r}   r    r›  s      rY   rç  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>É
  s4   €  q¨1¨a©4¡x°1°a±4¸!¸A¹#±:Ñ'>À!ÀQÁ$ÈÈ1ÉÁ*ÈqÁ.Ñ'Q€ rn   c                 óB   — d| z  |dz  d|z  z   z  |dz  d|z  z   dz   z  S ©Nr¨   r=   r;   r0   r+  rí  s      rY   rç  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>Ê
  s0   €  q¨1¡u°°1±°q¸±s±
Ñ';¸qÀ!¹tÀaÈÁc¹zÈA¹~Ñ'N€ rn   c                 óB   — d| z  d|dz  z  dz   z  |dz  d|z  z   dz   z  S rï  r+  rí  s      rY   rç  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>Ë
  s0   €  q¨1¡u°°!°Q±$±¸±
Ñ';¸qÀ!¹tÀaÈÁc¹zÈA¹~Ñ'N€ rn   c                 ó*   — d| z  d|dz  z  dz   z  dz  S )Nr¨   r=   r;   r+  rí  s      rY   rç  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>Ì
  s    €  q¨1¡u°°!°Q±$±¸±
Ñ';¸aÑ'?€ rn   c                  ó   — yrå  r+  rí  s      rY   rç  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>Í
  rè  rn   ))r0   r   r   )r;   r   r   )r;   r0   r   )r;   r0   r=   )r;   r0   r>   rG   rÞ   ry   rz   )râ  r   rM   rT   r§  r¨  ræ  rS   rÌ  rR   r   r  )rU   rV   rç  rè  r6   ré  rŸ   r}   r    r›  rÀ   Úxi_npr•  rÍ  rß   rÎ  Úxi_Úyi_Úzi_rÏ  s                       rY   Útest_3D_derivativez TestNdBSpline.test_3D_derivative¾
  s2  € Ø×%Ñ%¨Ð%Ó,‰	ˆˆB�Ü˜"˜b AÔ&ˆÜ�i‰i×#Ñ# EÓ*ˆØ—+‘+ 7�+Ó+¨aÑ/‰ˆˆ1ˆaä  1 a›LÖ)�q’Ð)ˆÐ)Ø�Z‰Z˜Óˆñ RÙNÙNÙ?Ù*ñ
ˆ
ð  *×/Ñ/Ó1ò 	Q‰OˆB�ØMR×SÐS¹M¸CÀÀc™[¨¨c°3Õ7ÐSˆMÒSØŸJ™J }¸B¿J¹J˜JÓGˆMÜ™E "¨Ô,¨mÀ%ÕHÜÐ0˜E×,Ñ,¨RÓ0°Ó4°mÈ%ÖPñ		Qùò *ùô Ts   Á,	D#Â1D(
c           
      ój  — t         j                  j                  d«      }d}t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }|j                  |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         ||	«      |	D �
cg c]
  }
 ||
«      ‘Œ c}
d¬«       y c c}
w )Nr£  r=   r   r©   rª   rÐ   r>   r0   rZ  )r2   r2   r0   ry   rz   r´  rµ  ©gÍÌÌÌÌÌì?r»  gffffffþ?)rM   rT   r§  r´   rž   r¨  r«   r   r|  r   r  )rU   rŸ   r6   rs  rt  Útzr5   r9  Úspl_0r•  rV   s              rY   Útest_3D_randomzTestNdBSpline.test_3D_randomÖ
  s„  € Ü�i‰i×#Ñ# EÓ*ˆØˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆØ�K‰K˜bŸg™g a™i¨™k¨2¯7©7°1©9°Q©;¸¿¹À¹	À!¹ÐDˆKÓEˆä˜˜R ˜ a¨1Ô-ˆÜ˜B  B˜<¨¨aÔ0ˆàˆÜ™˜B›¡ r£°Õ7ä�U‰U’;Ú"Ú"ð#ñ $ˆô 	™˜B›°bÖ!9°¡%¨¥)Ò!9ÀÖFùÒ!9s   ÆF0
c           
      ó   — t         j                  j                  d«      }d}t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }|j                  |j                  |z
  dz
  |j                  |z
  dz
  |j                  |z
  dz
  f¬«      |j                  |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¬«       y )Nr£  r=   r   r©   rª   rÐ   r>   r0   r1   rZ  r´  rµ  rù  ry   rz   )rM   rT   r§  r´   rž   r¨  r«   r   rø   rù   r  r   )rU   rŸ   r6   rs  rt  rú  r5   r9  r»  r¼  r•  s              rY   Útest_3D_random_complexz$TestNdBSpline.test_3D_random_complexé
  sÐ  € Ü�i‰i×#Ñ# EÓ*ˆØˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆØ�[‰[˜rŸw™w q™y¨™{¨B¯G©G°A©I°a©K¸¿¹À¹À1¹ÐEˆ[ÓFØ�[‰[˜rŸw™w q™y¨™{¨B¯G©G°A©I°a©K¸¿¹À¹À1¹ÐEˆ[ÓFÀrÑIñJˆô ˜˜R ˜ a¨1Ô-ˆÜ˜B  B˜<¨¯©°1Ô5ˆÜ˜B  B˜<¨¯©°1Ô5ˆä�U‰U’;Ú"Ú"ð#ñ $ˆô 	™˜B›Ù˜r›
 R©¨r«
¡]Ñ2¸ö	@rn   Ú
cls_extrapNTÚcall_extrapc                 óR  — | j                  «       \  }}}t        ||d|¬«      }g d¢g d¢g d¢}	}}t        t        j                  |||	f«      \  }}}	t        |||	«      D �
cg c]  }
|
‘Œ }}
|dz  |dz  d|z  z   z  |	dz  d|	z  z   dz   z  } |||¬«      }t        ||d	¬
«       y c c}
w ©Nr=   )r6   r†   )éþÿÿÿr9   r©   )r8  r  r‘  )r9   g      ø¿ç      @r;   r0   r…   ry   rz   ©râ  r   r|   rM   rS   ræ  r   )rU   rÿ  r   rç  rè  r6   ré  r}   r    r›  rÀ   r•  r£  rî  s                 rY   Útest_extrapolate_3D_separablez+TestNdBSpline.test_extrapolate_3D_separableü
  sº   € ð ×%Ñ%Ó'‰	ˆˆB�Ü˜"˜b A°:Ô>ˆò š²ˆaˆ1ˆÜ”b—j‘j 1 a¨ )Ó,‰ˆˆ1ˆaÜ˜Q  1›Ö&�AŠaÐ&ˆÐ&Ø�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆá�r {Ô3ˆÜ˜ ¨UÖ3ùò	 's   Á 	B$rÁ   )FT)TNc                 ó\  — | j                  «       \  }}}|\  }}t        ||d|¬«      }g d¢g d¢g d¢}
}	}t        t        j                  ||	|
f«      \  }}	}
t        ||	|
«      D �cg c]  }|‘Œ }}|dz  |	dz  d|	z  z   z  |
dz  d|
z  z   dz   z  } |||¬«      }t        ||d	¬
«       y c c}w r  r  )rU   rÁ   rç  rè  r6   rÿ  r   ré  r}   r    r›  rÀ   r•  r£  rî  s                  rY   Útest_extrapolate_3D_separable_2z-TestNdBSpline.test_extrapolate_3D_separable_2  sÄ   € ð ×%Ñ%Ó'‰	ˆˆB�Ø"(Ñˆ
�KÜ˜"˜b A°:Ô>ˆò š²ˆaˆ1ˆÜ”b—j‘j 1 a¨ )Ó,‰ˆˆ1ˆaÜ˜Q  1›Ö&�AŠaÐ&ˆÐ&Ø�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆá�r {Ô3ˆÜ˜ ¨UÖ3ùò	 's   Á%	B)c                 óÄ  — | j                  «       \  }}}t        ||d¬«      }g d¢g d¢g d¢}}}t        t        j                  |||f«      \  }}}t        |||«      D �cg c]  }|‘Œ }	}|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¬«       y c c}w )Nr=   rZ  )r  r0   r©   )r8  rÓ   r‘  )r9   r  r  r;   r0   Fr…   r   r9   ry   rz   )râ  r   r|   rM   rS   ræ  rÌ   r   )rU   rç  rè  r6   ré  r}   r    r›  rÀ   r•  r£  rî  s               rY   Ú#test_extrapolate_false_3D_separablez1TestNdBSpline.test_extrapolate_false_3D_separable  sî   € à×%Ñ%Ó'‰	ˆˆB�Ü˜"˜b AÔ&ˆò šnªnˆaˆ1ˆÜ”b—j‘j 1 a¨ )Ó,‰ˆˆ1ˆaÜ˜Q  1›Ö&�AŠaÐ&ˆÐ&Ø�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆá�r uÔ-ˆÜ�x‰x˜˜q™	Ô"Ð"Ð"Ü�x‰x˜˜r™
Ô#Ð#Ð#Ü˜˜q ˜ f¨Q¨r l¸Ö?ùò 's   Á	Cc           	      ó  — | j                  «       \  }}}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«      }t        |||«      D �cg c]  }|‘Œ }	}|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                  ||   «      j                  «       sJ ‚t        ||
d¬«       y c c}w )Nr=   rZ  r  r0   r;   r©   r8  r·  r‘  r9   r  ry   rz   )	râ  r   rM   rS   rO   ræ  rÌ   rË   r   )rU   rç  rè  r6   ré  r}   r    r›  rÀ   r•  r£  rÇ   rî  s                rY   Útest_x_nan_3DzTestNdBSpline.test_x_nan_3D-  sD  € à×%Ñ%Ó'‰	ˆˆB�Ü˜"˜b AÔ&ˆô �J‰J˜˜AœrŸv™v q¨!¨Q´·±Ð7Ó8ˆÜ�J‰J˜˜C ¤B§F¡F¨A¨s°CÐ8Ó9ˆÜ�J‰J˜˜C  A¤r§v¡v¨s°CÐ8Ó9ˆÜ˜Q  1›Ö&�AŠaÐ&ˆÐ&Ø�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆÜ�x‰x˜‹{œRŸX™X a›[Ñ(¬2¯8©8°A«;Ñ6ˆÜ—v‘vˆˆt‰á�r“ˆÜ�x‰x˜˜t™Ó%×)Ñ)Ô+Ð+Ð+Ü˜ ¨UÖ3ùò 's   Â>	E<c           	      ó°  — t         j                  j                  d«      }d\  }}t        j                  |j	                  ddd¬«      «      }t         j
                  |d   f|z  ||d   f|z  f   }t        j                  |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	                  |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         ||«      |D �
cg c]
  }
 |	|
«      ‘Œ c}
d¬«       y c c}
w )Nr£  ©r=   r=   r   r>   é   r¦  r9   r;   r0   rª   r´  rµ  rZ  ry   rz   )rM   rT   r§  rž   r¨  r´   ÚflagsÚc_contiguousr«   rÅ  r  r   r|  r   rÕ  s              rY   Útest_non_c_contiguousz#TestNdBSpline.test_non_c_contiguous?  sÂ  € ä�i‰i×#Ñ# EÓ*ˆØ‰ˆˆBÜ�W‰W�S—[‘[ Q¨Q°R�[Ó8Ó9ˆÜ�U‰U�B�q‘E�8˜B‘;  R¨¡V I¨b¡LÐ0Ñ1ˆÜ�W‰W�S—[‘[ Q¨Q°R�[Ó8Ó9ˆÜ�U‰U�B�q‘E�8˜B‘;  R¨¡V I¨b¡LÐ0Ñ1ˆà‘c˜�c‘7—=‘=×-Ò-Ð-Ð-Ø‘c˜�c‘7—=‘=×-Ò-Ð-Ð-à�K‰K˜bŸg™g q™j¨2™o°Ñ1°2·7±7¸A±:À±?ÀQÑ3FÐGˆKÓHˆØ�C‰CˆØ—7‘7×'Ò'Ð'Ð'ä�U‰U’;Ú"ð#ñ $ˆô ˜2™c ˜c™7 B¡s¨ s¡GÐ,¨a°B¸°8Ô<ˆÜ˜b¡ 1 ™g r©#¨A¨#¡wÐ/°°r¸2°hÔ?ˆä™˜b›	Ø/1Ö2¨™ �Ò2¸ö	@ùÚ2s   Æ:G
c                 óô   — | j                  «       \  }}}t        ||d¬«      }t        d«      D ]  }d||   j                  _        Œ d|j                  _        t        ||d¬«      } |d«       |d«      k(  sJ ‚y )Nr=   rZ  Fr4  )râ  r   rà   r  Ú	writeable)rU   rç  rè  r6   ré  r  Úbspl3_s          rY   Útest_readonlyzTestNdBSpline.test_readonlyX  sy   € Ø×%Ñ%Ó'‰	ˆˆB�Ü˜"˜b AÔ&ˆä�q“ò 	*ˆAØ$)ˆBˆq‰E�K‰KÕ!ð	*à"ˆ�‰Ôä˜2˜r QÔ'ˆá�YÓ¡6¨)Ó#4Ò4Ð4Ñ4rn   c                 ór  — | j                  «       \  }}}t        j                  g d¢g d¢g«      }t        |||«      j	                  |||«      }t        j                  |||||g«      }|j
                  d   |j
                  d   k(  sJ ‚t        |j                  «       |j                  «       d¬«       t        t        «      5  t        j                  g d¢||gdz  «       d d d «       t        t        d¬«      5  t        j                  d	d
gg||gdz  «       d d d «       y # 1 sw Y   ŒBxY w# 1 sw Y   y xY w)Nr4  )r>   r­   r¨   r   g¼‰Ø—²Òœ<rz   r=   zData and knots*r  r0   r;   )
râ  rM   rS   r   rE  r®   r   r  rI   rK   )rU   rç  rè  r6   r•  ÚdmÚdm1s          rY   Útest_design_matrixz TestNdBSpline.test_design_matrixd  s  € Ø×%Ñ%Ó'‰	ˆˆB�ä�Z‰Zš¢IÐ.Ó/ˆÜ�r˜2˜qÓ!×/Ñ/°°B¸Ó:ˆÜ×%Ñ% b¨"¨q°!°Q¨iÓ8ˆØ�x‰x˜‰{˜bŸh™h q™kÒ)Ð)Ð)Ü˜Ÿ
™
› c§k¡k£m¸%Õ@äœ:Ó&ñ 	:Ü×#Ñ#¢I¨r°A°3°q±5Ô9÷	:ô œ:Ð->Ô?ñ 	9Ü×#Ñ# a¨ V H¨b°1°#°a±%Ô8÷	9ð 	9÷	:ð 	:ú÷	9ð 	9ús   ÃD!Ã9D-Ä!D*Ä-D6c           
      óž  — t         j                  j                  d«      }d}t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t         j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }|j                  |j                  |z
  dz
  |j                  |z
  dz
  |j                  |z
  dz
  f¬«      }t        |||f||¬	«      }d
„ }t        d||«       y )Nr£  r=   r   r©   rª   rÐ   r>   r0   rZ  c                 óL   — t         j                  g d¢g d¢g d¢f   } ||«       y )Nr´  rµ  rù  )rM   r  )rÀ   r9  r•  s      rY   rw  z1TestNdBSpline.test_concurrency.<locals>.worker_fn}  s&   € Ü—‘’{Ú&Ú&ð'ñ (ˆBñ ��Grn   rh   )	rM   rT   r§  r´   rž   r¨  r«   r   r(   )	rU   rŸ   r6   rs  rt  rú  r5   r9  rw  s	            rY   rx  zTestNdBSpline.test_concurrencys  s+  € Ü�i‰i×#Ñ# EÓ*ˆØˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆÜ�U‰U�1�a˜˜AœrŸw™w s§{¡{¸ {Ó':Ó;¸aÑ?ÀÀAÀqÈ!ÐKÑLˆØ�K‰K˜bŸg™g a™i¨™k¨2¯7©7°1©9°Q©;¸¿¹À¹	À!¹ÐDˆKÓEˆä˜˜R ˜ a¨1Ô-ˆò	ô 	   I¨sÕ3rn   )r(  r)  r*  r–  rM   rœ  rž  r¦  r°  r²  r¸  r¾  rÓ  r×  rß  râ  rê  r÷  rü  rþ  rc   rˆ  r‰  r  r  r
  r  r  r  r  rx  r+  rn   rY   r‘  r‘  ˜	  sû   „ òBð, !ó ð  "ó &ò*9òX)$òV>ò&$ò&,ò$)òL@ò Gð( !ó ò&4òQò0Gò&@ð& ‡[�[×Ñ˜\¨D°$¨<Ó8Ø‡[�[×Ñ˜]¨T°4¨LÓ9ñ4ó :ó 9ð4ð ‡[�[×Ñ˜X¨°|Ð'DÓEñ4ó Fð4ò @ò 4ò$@ò2
5ò9ó4rn   r‘  c                   ó<  — e Zd Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Z	d„ Z
d„ Zd	„ Zej                  j                  d
ej                  ej                  g«      d„ «       Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Zy)Ú
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  }t        j                  ||«      D ��cg c]	  \  }}||f‘Œ }}}t	        ||f|d¬«      }t         ||«      |j                  «       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¬«       y c c}}w )Nr¨   rÓ   r=   r;   r0   rZ  r\   rz   r^  r   r]   )r   ÚlinearrÎ  ry   )rM   rQ   r†  r‡  r)   r   Úravelr   r5   Úscipy.interpolater   )rU   r}   r    rÜ  rŸ  rX   r•  r‰   rÚ  rÛ  rú   ÚRGIrÝ  s                rY   Útest_2D_separable_simplez#TestMakeND.test_2D_separable_simple‡  s1  € Ü�I‰I�a‹LˆÜ�I‰I�a‹L˜3ÑˆØ’1�d�7‘˜Q‘ ! Q¡$¨¨1©¡*¨d²A¨gÑ!6Ñ6ˆÜ!*×!2Ñ!2°1°aÓ!8×9™˜˜Aˆq�!ŠfÐ9ˆÑ9ä˜A˜q˜6 6¨QÔ/ˆÜ™˜R› &§,¡,£.°uÕ=ô # 1 a¨¡d¨aÔ0ˆÜ" 1 a¨¡d¨Q¨q©S¡j°AÔ6ˆØ�W‰W’Q˜�WÑ §¡¨ªa¨Ñ 0Ñ0ˆÜ˜˜DŸF™F¨°QÕ7õ 	EÙ�1�a�&˜&¨Ô2ˆÜ™˜B›¡ b£°Ö6ùó :s   Á&D?c                 ó  — t        j                  d«      }t        j                  d«      }t        j                  ||«      D ��cg c]	  \  }}||f‘Œ }}}|d d …d f   dz  |dz  d|z  z   d d d …f   z  }t        j                  ||||f«      }t        ||f|dt        j                  ¬«      } ||«      }	t        j                  ||||f«      j                  t        «      }
|	j                  dk(  sJ ‚t        |	j                  ddd«      |
d¬«       |j                  d	«      }t        ||f|dt        j                  ¬«      } ||«      }	|	j                  d
k(  sJ ‚t        |	j                  dddd«      |
j                  d	«      d¬«       y c c}}w )Nr¨   r=   r;   ©r6   Úsolver)é$   r>   r>   ry   rz   r©  )r(  r;   r;   )rM   rQ   r†  r‡  r	  r)   ÚsslÚspsolverî  rò  r®   r   r‡   )rU   r}   r    rŸ  rX   r•  rÜ  Úvalues4r‰   rî  r£  Úvalues22s               rY   Útest_2D_separable_trailing_dimsz*TestMakeND.test_2D_separable_trailing_dims›  si  € ä�I‰I�a‹LˆÜ�I‰I�a‹LˆÜ!*×!2Ñ!2°1°aÓ!8×9™˜˜Aˆq�!ŠfÐ9ˆÑ9ð ’1�d�7‘˜Q‘ ! Q¡$¨¨1©¡*¨d²A¨gÑ!6Ñ6ˆÜ—)‘)˜V V¨V°VÐ<Ó=ˆÜ˜A˜q˜6 7¨a¼¿¹ÔDˆá�b“ˆÜ—‘˜F F¨F°FÐ;Ó<×CÑCÄEÓJˆØ�|‰|˜wÒ&Ð&Ð&Ü˜Ÿ™ q¨!¨QÓ/Ø Uõ	,ð —?‘? <Ó0ˆÜ˜A˜q˜6 8¨q¼¿¹ÔEˆá�b“ˆØ�|‰|˜zÒ)Ð)Ð)Ü˜Ÿ™ q¨!¨Q°Ó2ØŸ™ |Ó4¸5ö	Bùó' :s   ÁF	r6   )r  rÃ  )r=   r0   )r0   r=   r  c                 ó~  — t        j                  d«      }t        j                  d«      dz   }t        j                  ||«      D ��cg c]	  \  }}||f‘Œ }}}|dz  d d …d f   |dz  d|z  z   d d d …f   z  }t	        ||f||t
        j                  ¬«      }t         ||«      |j                  «       d¬«       y c c}}w )	Nr¨   r©   r  r=   r;   r&  r\   rz   )	rM   rQ   r†  r‡  r)   r)  r*  r   r!  )	rU   r6   r}   r    rŸ  rX   r•  rÜ  r‰   s	            rY   r¾  zTestMakeND.test_2D_mixedµ  s©   € ô �I‰I�a‹LˆÜ�I‰I�a‹L˜3ÑˆÜ!*×!2Ñ!2°1°aÓ!8×9™˜˜Aˆq�!ŠfÐ9ˆÑ9à�Q‘$š˜4˜‘ A q¡D¨1¨Q©3¡J°²a°Ñ#8Ñ8ˆÜ˜A˜q˜6 6¨Q´s·{±{ÔCˆÜ™˜R› &§,¡,£.°uÖ=ùó	 :s   ÁB9c                 ó*  — t        j                  d«      }t        j                  d«      dz   }t         j                  |d<   |d d …d f   dz  |dz  d|z  z   d d d …f   z  }t        t        «      5  t        ||f|d¬«       d d d «       y # 1 sw Y   y xY w)Nr¨   rÓ   r9   r=   r;   r0   rZ  )rM   rQ   rO   rI   rK   r)   )rU   r}   r    rÜ  s       rY   Útest_2D_nanszTestMakeND.test_2D_nansÀ  s†   € Ü�I‰I�a‹LˆÜ�I‰I�a‹L˜3ÑˆÜ—‘ˆˆ"‰Ø’1�d�7‘˜Q‘ ! Q¡$¨¨1©¡*¨d²A¨gÑ!6Ñ6ˆäœ:Ó&ñ 	-Ü˜˜A˜ ¨!Õ,÷	-÷ 	-ñ 	-ús   Á/B	Â	B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Ó   r@   rA   rB   r­  r®  )r0   r;   r0   r;   r0   r0   )r0   r;   r=   r;   r0   r0   )r0   r;   r;   r;   r0   r0   )rM   rT  )rU   r}   r    r›  s       rY   Ú_get_sample_2d_datazTestMakeND._get_sample_2d_dataÉ  sR   € ä�H‰HÒ.Ó/ˆÜ�H‰HÒ.Ó/ˆÜ�H‰Hâ"Ú"Ú"Ú"Ú"Ú"ðó	
ˆð �!�Qˆwˆrn   c                 óê   — | j                  «       \  }}}t        ||f|d¬«      }t        ||f|d¬«      }t        j                  g d¢g d¢g«      j
                  }t         ||«       ||«      d¬«       y )	Nr0   rZ  r   rÎ  ©r0   gffffff@g333333@rÓ   çffffff
@ç333333ó?r=   ©r0   r5  r6  rB   rb  r2   r=   ry   rz   ©r2  r)   r   rM   rT  rÅ  r   ©rU   r}   r    r›  r‰   rÝ  r•  s          rY   Útest_2D_vs_RGI_linearz TestMakeND.test_2D_vs_RGI_linearÙ  sq   € Ø×*Ñ*Ó,‰ˆˆ1ˆaÜ˜A˜q˜6 1¨Ô*ˆÜ% q¨! f¨a¸ÔAˆä�X‰XÒ6Ú6ð8ó 9ß9:¹ð 	ô 	™˜R›¡# b£'°Ö6rn   c                 ó  — | j                  «       \  }}}t        ||f|dt        j                  ¬«      }t	        ||f|d¬«      }t        j                  g d¢g d¢g«      j                  }t         ||«       ||«      d¬«       y )	Nr=   r&  Úcubic_legacyrÎ  r4  r7  ry   rz   ©	r2  r)   r)  r*  r   rM   rT  rÅ  r   r9  s          rY   Útest_2D_vs_RGI_cubiczTestMakeND.test_2D_vs_RGI_cubicã  sw   € Ø×*Ñ*Ó,‰ˆˆ1ˆaÜ˜A˜q˜6 1¨´#·+±+Ô>ˆÜ% q¨! f¨a¸ÔGˆä�X‰XÒ6Ú6ð8ó 9ß9:¹ð 	ô 	™˜R›¡# b£'°Ö6rn   r'  c                 óð   — | j                  «       \  }}}t        ||f|d|d¬«      }t        ||f|d¬«      }t        j                  g d¢g d¢g«      j
                  }t         ||«       ||«      dd	¬
«       y )Nr=   ç�íµ ÷Æ°>)r6   r'  r_   r<  rÎ  r4  r7  ry   r½   r]   r8  )rU   r'  r}   r    r›  r‰   rÝ  r•  s           rY   Útest_2D_vs_RGI_cubic_iterativez)TestMakeND.test_2D_vs_RGI_cubic_iterativeí  sy   € ð ×*Ñ*Ó,‰ˆˆ1ˆaÜ˜A˜q˜6 1¨°&¸tÔDˆÜ% q¨! f¨a¸ÔGˆä�X‰XÒ6Ú6ð8ó 9ß9:¹ð 	ô 	™˜R›¡# b£'°¸DÖArn   c                 ó  — | j                  «       \  }}}t        ||f|dt        j                  ¬«      }t	        ||f|d¬«      }t        j                  g d¢g d¢g«      j                  }t         ||«       ||«      d¬«       y )	Nr­   r&  Úquintic_legacyrÎ  r4  r7  ry   rz   r=  r9  s          rY   Útest_2D_vs_RGI_quinticz!TestMakeND.test_2D_vs_RGI_quinticü  sx   € Ø×*Ñ*Ó,‰ˆˆ1ˆaÜ˜A˜q˜6 1¨´#·+±+Ô>ˆÜ% q¨! f¨aÐ8HÔIˆä�X‰XÒ6Ú6ð8ó 9ß9:¹ð 	ô 	™˜R›¡# b£'°Ö6rn   zk, meth))r0   r   )r=   r<  )r­   rC  c                 ó  — t         j                  j                  d«      }t        j                  |j	                  d¬«      «      }t        j                  |j	                  d¬«      «      }t        j                  |j	                  d¬«      «      }|j	                  d¬«      }t        |||f||t        j                  ¬«      }t        |||f||¬«      }	t         j                  j	                  d	d
d¬«      }
t         ||
«       |	|
«      d¬«       y )Ni@â r¨   rª   r©   rÐ   r0  r&  rÎ  gffffffæ?r·  rE   r¦  ry   rz   )
rM   rT   r§  Úcumsumr¨  r)   r)  r*  r   r   )rU   r6   ÚmethÚrndmr}   r    r›  rÜ  r‰   rÝ  r•  s              rY   Útest_3D_random_vs_RGIz TestMakeND.test_3D_random_vs_RGI  sÐ   € ô �y‰y×$Ñ$ VÓ,ˆÜ�I‰I�d—l‘l¨�lÓ*Ó+ˆÜ�I‰I�d—l‘l¨�lÓ*Ó+ˆÜ�I‰I�d—l‘l¨�lÓ*Ó+ˆØ—‘ 9�Ó-ˆä˜A˜q !˜9 f°¼#¿+¹+ÔFˆÜ% q¨!¨Q i°ÀÔEˆä�Y‰Y×Ñ 3¨S°wÐÓ?ˆÜ™˜R›¡# b£'°Ö6rn   c                 ó:  — | j                  «       \  }}}ddi}t        t        d¬«      5  t        ||f|fddi|¤Ž d d d «       t        t        d¬«      5  t        ||ft	        j
                  ||f«      fddi|¤Ž d d d «       y # 1 sw Y   ŒJxY w# 1 sw Y   y xY w)NÚmaxiterr0   r'  r  r6   r=   )r2  rI   rK   r)   rM   r	  )rU   r}   r    r›  Úsolver_argss        rY   Útest_solver_err_not_convergedz(TestMakeND.test_solver_err_not_converged  s¦   € Ø×*Ñ*Ó,‰ˆˆ1ˆaØ  !�nˆÜœ:¨XÔ6ñ 	7Ü˜˜A˜ Ñ6 QÐ6¨+Ò6÷	7ô œ:¨XÔ6ñ 	GÜ˜˜A˜¤§	¡	¨1¨a¨&Ó 1ÑF°QÐF¸+ÒF÷	Gð 	G÷	7ð 	7ú÷	Gð 	Gús   ªBÁ'BÂBÂBN)r(  r)  r*  r$  r-  rc   rˆ  r‰  r¾  r0  r2  r:  r>  r)  ÚgmresÚgcrotmkrA  rD  rI  rM  r+  rn   rY   r  r  †  s±   „ ò7ò(Bð4 ‡[�[×Ñ˜SÒ"JÓKñ>ó Lð>ò-òò 7ò7ð ‡[�[×Ñ˜X¨¯	©	°3·;±;Ð'?Ó@ñBó AðBò7ð ‡[�[×ÑØÒNóñ7óð7óGrn   r  c                   óH   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)Ú
TestFpchecc                 ó˜  — d}t        j                  d«      j                  dd«      }t        j                  d«      }t        j                  t
        d¬«      5  t        j                  |||«       d d d «       t        j                  t
        d¬«      5  t        j                  |||«       d d d «       y # 1 sw Y   ŒExY w# 1 sw Y   y xY w)Nr0   rù  r;   r¨   z1D sequencer  )rM   rQ   r‡   rc   r   rK   Ú_bÚfpcheck©rU   r6   r4   r}   s       rY   Útest_1D_x_tzTestFpchec.test_1D_x_t#  s›   € ØˆÜ�I‰I�b‹M×!Ñ! ! QÓ'ˆÜ�I‰I�b‹Mˆä�]‰]œ:¨]Ô;ñ 	 Ü�J‰J�q˜!˜QÔ÷	 ô �]‰]œ:¨]Ô;ñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð 	 ÷	 ð 	 ú÷	 ð 	 ús   ÁB4ÂC Â4B=Ã 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 «       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 «       y # 1 sw Y   ŒžxY w# 1 sw Y   y xY w)Nr=   r;   r0   rF   rh   z	Need k+1*r  )	rM   rQ   ÚdfitpackÚfpchecrc   r   rK   rS  rT  )rU   r6   rW   r   r4   r}   s         rY   Útest_condition_1zTestFpchec.test_condition_1.  s  € àˆØ��A‘‰Y˜‰]ˆØ�‰FˆÜ�I‰I�a‹LˆÜ�I‰I�a‹Lˆä�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:¨[Ô9ñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð ˆq�‰s‰G�a‰KˆØ�‰E�A‰IˆÜ�I‰I�a‹LˆÜ�I‰I�a‹Lˆä�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:¨[Ô9ñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð 	 ÷	 ð 	 ú÷	 ð 	 ús   Á4D)ÄD5Ä)D2Ä5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 ‚|j	                  «       }|d   |d<   t        j                  |||«      dk(  sJ ‚t        j                  t        d	¬
«      5  t        j                  |||«       d d d «       |j	                  «       }|d   |d<   t        j                  |||«      dk(  sJ ‚t        j                  t        d¬
«      5  t        j                  |||«       d d d «       y # 1 sw Y   ŒyxY w# 1 sw Y   y xY w)Nr=   r   r0   r;   r­   )r0   r;   r=   r>   r¬  r9   r›   zLast k knots*r  zFirst k knots*©rX  rY  rS  rT  r  rc   r   rK   )rU   r6   r4   r}   Útts        rY   Útest_condition_2zTestFpchec.test_condition_2C  s:  € ð ˆØˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆÚˆä�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ð*à�V‰V‹XˆØ�A‘ˆˆ2‰Ü�‰˜q " aÓ(¨BÒ.Ð.Ð.Ü�]‰]œ:¨_Ô=ñ 	!Ü�J‰J�q˜"˜aÔ ÷	!ð �V‰V‹XˆØ�2‘ˆˆ1‰Ü�‰˜q " aÓ(¨BÒ.Ð.Ð.Ü�]‰]œ:Ð-=Ô>ñ 	!Ü�J‰J�q˜"˜aÔ ÷	!ð 	!÷	!ð 	!ú÷	!ð 	!ús   Â"D2ÄD>Ä2D;Ä>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 «       y # 1 sw Y   y xY w)
Nr=   r   r0   r;   r­   ©r0   r;   r=   r·  r>   r¬  é   zInternal knots*r  )rX  rY  rS  rT  rc   r   rK   rU  s       rY   Útest_condition_3zTestFpchec.test_condition_3Y  sÝ   € àˆØˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆÚ"ˆÜ�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ð*àˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð->Ô?ñ 	 Ü�J‰J�q˜!˜QÔ÷	 ÷ 	 ñ 	 ús   Â#CÃCc                 ó2  — d}dg|dz   z  dg|dz   z  z   }g d¢}t        j                  |||«      dk(  sJ ‚t        j                  |||«      �J ‚|j	                  «       }|d   |d<   t        j                  |||«      dk(  sJ ‚t        j                  |||«      �J ‚|j	                  «       }|d   dz
  |d<   t        j                  |||«      dk(  sJ ‚t        j                  t        d¬«      5  t        j                  |||«       d d d «       |j	                  «       }|d	   dz   |d	<   t        j                  |||«      dk(  sJ ‚t        j                  t        d¬«      5  t        j                  |||«       d d d «       y # 1 sw Y   Œ|xY w# 1 sw Y   y xY w)
Nr=   r   r0   r­   r`  r?  zOut of bounds*r  r9   r\  )rU   r6   r4   r}   rk   s        rY   Útest_condition_4zTestFpchec.test_condition_4f  s‰  € ð ˆØˆC��1‘‰I˜˜˜Q˜q™S™	Ñ!ˆÚ"ˆÜ�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ð*à�V‰V‹XˆØ�!‘ˆˆ1‰Ü�‰˜r 1 aÓ(¨AÒ-Ð-Ð-Ü�z‰z˜!˜Q Ó"Ð*Ð*Ð*à�V‰V‹XˆØ�!‘�q‘ˆˆ1‰Ü�‰˜r 1 aÓ(¨BÒ.Ð.Ð.Ü�]‰]œ:Ð-=Ô>ñ 	!Ü�J‰J�r˜1˜aÔ ÷	!ð �V‰V‹XˆØ�2‘˜‘ˆˆ2‰Ü�‰˜r 1 aÓ(¨BÒ.Ð.Ð.Ü�]‰]œ:Ð-=Ô>ñ 	!Ü�J‰J�r˜1˜aÔ ÷	!ð 	!÷	!ð 	!ú÷	!ð 	!ús   Ã.FÅ 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 «       g d¢}t        j                  |||«      dk(  sJ ‚t        j                  t        d¬«      5  t        j                  |||«       d d d «       y # 1 sw Y   ŒexY w# 1 sw Y   y xY w)Nr0   )r   r   r0   r;   r;   )r¶  r¶  r¶  rw   úSchoenberg-Whitney*r  )rÓ   rÓ   rÓ   ©rX  rY  rc   r   rK   rS  rT  rU  s       rY   Útest_condition_5_x1xmz TestFpchec.test_condition_5_x1xm…  s»   € àˆÚˆÚˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÔCñ 	 Ü�J‰J�q˜!˜QÔ÷	 ò ˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÔCñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð 	 ÷	 ð 	 ú÷
	 ð 	 ús   ÁB>ÂC
Â>CÃ
Cc                 ó‚   — d}g d¢}ddg}t        j                  |||«      dk(  sJ ‚t        j                  |||«      �J ‚y )Nr0   )r   r   r0   r0   rÓ   g333333ã?r   )rX  rY  rS  rT  rU  s       rY   Útest_condition_5_k1zTestFpchec.test_condition_5_k1“  sI   € àˆÚˆØ�#ˆJˆÜ�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ñ*rn   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 «       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 «       y # 1 sw Y   Œ~xY w# 1 sw Y   y xY w)	Nr=   r   r0   r;   r­   rw   rf  r  rg  rU  s       rY   Ú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ñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð ˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆØˆC�‰EˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÔCñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð 	 ÷	 ð 	 ú÷	 ð 	 ús   ÁC,ÃC8Ã,C5Ã8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 «       dgdz  ddgz   }t        j                  |||«      dk(  sJ ‚t        j                  |||«      �J ‚y # 1 sw Y   ŒJxY w)Nr=   r   r0   r;   r­   r¶  r>   rw   rf  r  rg  rU  s       rY   Útest_condition_5_2zTestFpchec.test_condition_5_2ª  sØ   € àˆØˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆØˆE�!‰G�q�c‰Mˆä�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÔCñ 	 Ü�J‰J�q˜!˜QÔ÷	 ð ˆE�!‰G�q˜!�fÑˆÜ�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ñ*÷	 ð 	 ús   ÁB=Â=Cc                 óÞ   — d}g d¢}g d¢}t        j                  |||«      dk(  sJ ‚t        j                  t        d¬«      5  t        j                  |||«       d d d «       y # 1 sw Y   y xY w)Nr0   )	r   r   r;   r=   r>   r­   r¨   r©   r©   )r0   r0   r0   çÍÌÌÌÌÌ@rp  rp  r‘  rw   rf  r  rg  rU  s       rY   Útest_condition_5_3zTestFpchec.test_condition_5_3¹  s`   € àˆÚ'ˆÚ)ˆä�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÔCñ 	 Ü�J‰J�q˜!˜QÔ÷	 ÷ 	 ñ 	 ús   ÁA#Á#A,N)r(  r)  r*  rV  rZ  r^  rb  rd  rh  rj  rl  rn  rq  r+  rn   rY   rQ  rQ     s4   „ ò	 ò ò*!ò, ò!ò> ò+ò ò+ó rn   rQ  c                 ó°  — t        j                  | |||  «      }t        t        |«      dz
  «      D �cg c]  }|||   ||dz       j	                  «       ‘Œ  }}||dd    }t        t        |«      «      D ]'  }||   dz  }||xx   |z  cc<   ||dz   xx   |z  cc<   Œ) |dxx   |d   z  cc<   t        t	        |«      t	        |«      d¬«       ||fS c c}w )z)Split the knot interval into "runs".
    r0   r9   r;   r\   rz   )rM   rÚ  rà   rD  rÛ  r   )	r}   r4   r6   Ú	residualsrp  r  ÚfpartsÚcarriesÚcarrys	            rY   Ú_splitrw  Æ  så   € ô 
�‰˜˜A˜a  ˜GÓ	$€Bä6;¼CÀ»GÀA¹IÓ6FÖG°ˆi˜˜1™˜b  1¡™gÐ&×*Ñ*Õ,ÐG€FÐGØ˜˜1˜R˜Ñ!€Gä”3�w“<Ó ò ˆØ˜‘
˜Q‘ˆØˆq‹	�UÑ‹	Øˆq�‰s‹�uÑŒðð
 ˆ2ƒJ�)˜B‘-ÑƒJä”C˜“K¤ Y£°eÕ<à�2ˆ:Ðùò Hs   ´#Cc                 ó\  — t        | |||«      \  }}d}d}t        t        |«      «      D ]$  }||dz      ||   z
  dkD  sŒ||   |kD  sŒ|}||   }Œ& |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²Ôr0   z5Internal error, please report it to SciPy developers.r;   N)rw  rà   rD  rK   rM   rÚ  r´   )r}   r4   r6   rs  rt  rp  Úidx_maxÚ	fpart_maxr  Úidx_newknotÚnew_knotÚidx_tÚt_news                rY   Ú	_add_knotr  Ú  sá   € ä˜˜1˜a Ó+�J€FˆBð €GØ€IÜ”3�v“;Óò "ˆØˆa�‰c‰7�R˜‘U‰?˜QÓ 6¨!¡9¨yÓ#8ØˆGØ˜q™	‰Ið"ð
 �$‚ÜÐPÓQÐQð �g‘;  G¨A¡I¡Ñ.°Ñ2°qÑ8€KØ�‰~€HÜ�O‰O˜A˜xÓ(€EÜ�E‰E�!�F�U�)˜X q¨¨ yÐ0Ñ1€EØ€Lrn   c                   ó  — e Zd Zd„ Zej
                  j                  dg d¢«      d„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zej
                  j                  dg d¢«      ej
                  j                  dg d¢«      d„ «       «       Zd„ Zd„ Zy)ÚTestGenerateKnotsc                 óæ  — 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} |j                  ||||«      }t        ||||«      }	t        ||	d¬«       t	        ||||¬«      }
 |
|«      |z
  d	z  }|j                  ||||«      }t        ||||«      }t        ||d¬«       y )NrÐ   rG   r=   r2   r0   r?   r’  )r6   r4   r;   r   ©Ú_fitpack_repror\   rz   )
rM   rQ   rò  rT  r   r"  r„  Úadd_knotr  r   )rU   r}   r    r6   r4   r9  rs  Ú_frÚnew_tÚnew_t_pyÚspl2Ú
residuals2Únew_t2Ú	new_t2_pys                 rY   Útest_split_add_knotz%TestGenerateKnots.test_split_add_knotó  sü   € ä�I‰I�aœuÔ%ˆØˆq‰D�2�q˜1‘u‘:ÑˆØˆÜ�H‰H�b�T˜1˜Q™3‘Z 2 $¨¨!©¡*Ñ,Ó-ˆÜ˜a  a¨1Ô-ˆÙ˜“V˜a‘Z !‘Oˆ	å;Ø—‘˜Q  1 iÓ0ˆÜ˜Q  1 iÓ0ˆä˜˜x¨eÕ4ô ˜q ! q¨EÔ2ˆÙ˜1“g ‘k AÑ%ˆ
à—‘˜a ¨¨:Ó6ˆÜ˜a ¨¨:Ó6ˆ	ä˜ 	°Ö6rn   r6   rË  c                 ó0  — |j                  d|j                  ¬«      }|j                  ||j                  z  dz  «      }t	        t        |||d¬«      «      d   }t        |||d¬«      d   }|j                  ||j                  ¬«      }t        ||d¬«       y )NrÐ   rG   r   ©r6   râ  r9   r\   rz   )	rQ   rR   r”  r¸  rž  r$   r   rS   r   )rU   r6   rV   r}   r    r4   r]  s          rY   Útest_s0zTestGenerateKnots.test_s0  sƒ   € à�I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1�R—U‘U‘7˜1‘9ÓˆÜ”  1¨¨QÔ/Ó0°Ñ4ˆä�A�q˜A Ô# AÑ&ˆØ�Z‰Z˜ "§*¡*ˆZÓ-ˆÜ˜˜2 EÖ*rn   c                 óú   — d}|j                  ||j                  ¬«      }|dz  }t        t        ||dd¬«      «      }|j	                  t        t        j                  |«      d«      «      }t        |d   |d¬«       y )	Nrh   rG   r=   r   r�  r9   r\   rz   )rQ   rR   rž  r$   rS   r   rM   r   ©rU   rV   rW   r}   r    Úknotsrl   s          rY   Ú	test_s0_1zTestGenerateKnots.test_s0_1  sh   € àˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰DˆÜ”^ A q¨A°Ô3Ó4ˆØ—:‘:œk¬"¯*©*°Q«-¸Ó;Ó<ˆÜ˜˜b™	 8°%Ö8rn   c                 óâ   — d}|j                  |«      }|dz  }t        t        ||dd¬«      «      }|j                  t	        t        j                  |«      d«      «      }t        |d   |d¬«       y )Nr›   r=   r   r�  r9   r\   rz   )rQ   rž  r$   rS   r   rM   r   r’  s          rY   Útest_s0_n20zTestGenerateKnots.test_s0_n20  s_   € ØˆØ�I‰I�a‹LˆØˆq‰DˆÜ”^ A q¨A°Ô3Ó4ˆØ—:‘:œk¬"¯*©*°Q«-¸Ó;Ó<ˆÜ˜˜b™	 8°%Ö8rn   c           
      ó²   — t        j                  d«      }|dz  }t        t        «      5  t	        t        ||ddd¬«      «       d d d «       y # 1 sw Y   y xY w)Nrh   r=   r   ©r6   râ  Únest)rM   rQ   rI   rK   rž  r$   ©rU   r}   r    s      rY   Útest_s0_nestzTestGenerateKnots.test_s0_nest&  sJ   € ä�I‰I�b‹MˆØˆq‰DˆÜœ:Ó&ñ 	:Ü”  1¨¨Q°RÔ8Ô9÷	:÷ 	:ñ 	:ús   ªAÁAc                 ó  — |j                  d|j                  ¬«      }|j                  |t        j                  z  dz  «      }d}t        t        |||d¬«      «      }g d¢g d¢g d¢g d	¢g d
¢g}|D �cg c]  }|j                  ||j                  ¬«      ‘Œ! }}t        |«      t        |«      k(  sJ ‚t        ||«      D ]  \  }}	t        ||	d¬«       Œ t        |||d¬«      \  }}
}
t        |d   |j                  |«      d¬«       yc c}w )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Ð   rG   r=   r½   r�  )r?   r?   r?   r?   r’  r’  r’  r’  )	r?   r?   r?   r?   rB   r’  r’  r’  r’  ©
r?   r?   r?   r?   r@   rB   r’  r’  r’  r’  )r?   r?   r?   r?   r@   rB   r®  r’  r’  r’  r’  )r?   r?   r?   r?   r@   rA   rB   rb  r©   r’  r’  r’  r\   rz   r9   N)rQ   rR   r”  rM   r¸  rž  r$   rS   rD  ræ  r   r   )rU   rV   r}   r    r6   r“  ÚwantedÚwantr4   r]  rÀ   s              rY   Útest_s_switchzTestGenerateKnots.test_s_switch-  sþ   € ð. �I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1”R—U‘U‘7˜1‘9ÓˆØˆä”^ A q¨A°Ô6Ó7ˆÚ2Ú6Ú:Ú>ÚAð	
ˆð BHÖH¸�"—*‘*˜T¨¯©�*Õ4ÐHˆÐHä�5‹zœS ›[Ò(Ð(Ð(Ü˜ Ó'ò 	/‰EˆAˆrÜ˜A˜r¨Ö.ð	/ô ˜˜A  dÔ+‰ˆˆ1ˆaÜ˜˜b™	 2§:¡:¨a£=°uÖ=ùò Is   Á2$Dc                 ó`   — t        t        d«      «      }t        ||dd¬«      }t        |«       y )NrÐ   r«  r0   )râ  r6   )rž  rà   r$   Únext)rU   r}   Úgens      rY   r   z!TestGenerateKnots.test_list_inputY  s&   € ä”�q“‹NˆÜ˜Q  S¨AÔ.ˆÜˆS�	rn   c           	      óŠ  — |j                  d|j                  ¬«      }|j                  ||j                  z  dz  «      }d}t	        t        ||d|d¬«      «      }t        |d   |j                  g d¢|j                  ¬«      d	¬
«       t        t        «      5  t	        t        ||dd¬«      «       d d d «       y # 1 sw Y   y xY w)NrÐ   rG   r½   r=   rh   r˜  r9   r�  r\   rz   r>   )r6   r™  )
rQ   rR   r”  r¸  rž  r$   r   rS   rI   rK   )rU   rV   r}   r    râ  r“  s         rY   Ú	test_nestzTestGenerateKnots.test_nest_  s§   € à�I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1�R—U‘U‘7˜1‘9ÓˆØˆä”^ A q¨A°¸Ô<Ó=ˆÜØ�"‰IØ�J‰JÒ?ÀrÇzÁzˆJÓRØõ	
ô œ:Ó&ñ 	4ä”  1¨°Ô2Ô3÷	4÷ 	4ñ 	4ús   ÂB9Â9Cc           
      óº  — t        j                  d«      }t        j                  |t         j                  z  dz  «      }t	        t
        «      5  t        t        ||t        j                  d«      ¬«      «       d d d «       t	        t
        «      5  t        t        ||t        j                  d«       ¬«      «       d d d «       y # 1 sw Y   ŒMxY w# 1 sw Y   y xY w)NrÐ   rF   ©r×  )	rM   rQ   r”  r¸  rI   rK   rž  r$   rÂ  rš  s      rY   rÙ  zTestGenerateKnots.test_weightsp  sž   € Ü�I‰I�a‹LˆÜ�F‰F�1”R—U‘U‘7˜1‘9Óˆäœ:Ó&ñ 	8Ü”  1¬¯	©	°"«Ô6Ô7÷	8ô œ:Ó&ñ 	6Ü”  1¬¯©°«¨Ô4Ô5÷	6ð 	6÷	8ð 	8ú÷	6ð 	6ús   Á+CÂ,CÃCÃCÚnpts)ra  rw   r£   râ  )r«  ç{®Gáz„?r   c                 ó˜  — t         j                  j                  d«      }dt        j                  |j	                  |¬«      «      z  }t        j
                  |t         j                  z  dz  «      t        j                  |dz
  dz   «      z   }d}t        ||||¬«      d   }t        t        ||||¬«      «      d	   }t        ||d
¬«       y )Nr£  rh   rª   r¨   r;   r=   r�  r   r9   r\   rz   )rM   rT   r�   rž   r¨  r”  r¸  Úexpr   rž  r$   r   )	rU   râ  r¨  rH  r}   r    r6   r4   r]  s	            rY   Útest_vs_splrepz TestGenerateKnots.test_vs_splrepz  s¨   € ô �y‰y×$Ñ$ UÓ+ˆØŒr�w‰w�t—|‘|¨�|Ó.Ó/Ñ/ˆÜ�F‰F�1”R—U‘U‘7˜2‘:Ó¤§¡¨!¨A©#°©¨	Ó!2Ñ2ˆàˆÜ�1�a˜1 Ô" 1Ñ%ˆÜ”.  A¨¨aÔ0Ó1°"Ñ5ˆä˜˜A EÖ*rn   c                 ó*  — d}t        j                  |«      }|dz  }t        t        ||dd¬«      «      }t	        j
                  t        «      5 }t        ||dd¬«      }d d d «       t        «      dk(  sJ ‚t        |d   d   «       y # 1 sw Y   Œ,xY w)Né   r=   ç¸ÔJzî�5r�  r0   r9   r   )
rM   rQ   rž  r$   rc   ÚwarnsÚRuntimeWarningr   rD  r   )rU   rW   r}   r    r“  rŠ  rb   s          rY   Útest_s_too_smallz"TestGenerateKnots.test_s_too_small�  s‰   € ØˆÜ�I‰I�a‹LˆØˆq‰Dˆô ”^ A q¨A°Ô7Ó8ˆä�\‰\œ.Ó)ð 	-¨QÜ˜˜A  eÔ,ˆC÷	-ä�1‹v˜Š{Ðˆ{Ü˜˜b™	 3 q¡6Õ*÷	-ð 	-ús   ÁB	Â	Bc                 ó¤   — t        g d¢g d¢g d¢d¬«      }t        j                  t        d¬«      5  t	        |«       d d d «       y # 1 sw Y   y xY w)N)r?   r2   r@   rA   )rB   rb  r®  r’  )r?   r?   r?   r?   r0   )r×  râ  zweights are zeror  )r$   rc   r   rK   rž  )rU   r£  s     rY   Útest_zero_weightsz#TestGenerateKnots.test_zero_weightsš  s=   € äš]ªMº]ÈaÔPˆÜ�]‰]œ:Ð-?Ô@ñ 	Ü�ŒI÷	÷ 	ñ 	ús   ±AÁAN)r(  r)  r*  r�  rc   rˆ  r‰  r�  r”  r–  r›  r   r   r¥  rÙ  r¬  r²  r´  r+  rn   rY   r�  r�  ñ  s˜   „ ò7ð0 ‡[�[×Ñ˜S¢/Ó2ñ+ó 3ð+ò9ò9ò:ò*>òXò4ò"6ð ‡[�[×Ñ˜V¢]Ó3Ø‡[�[×Ñ˜S¢.Ó1ñ+ó 2ó 4ð+ò"+órn   r�  c                 óZ  — | 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   r0   r;   Nr»   rÞ   rG   )
r®   rM   r  r   rC  Úemptyrò  rà   r  Ú	factorial)
r4   r6   rW   ÚdeltaÚnrintrƒ  Útiir   Úmatrr  s
             rY   Ú
disc_naiver¼  ¡  sD  € ð 	
�‰�‰
€Aàˆa�!‰e�a‰i‰L˜1˜Q™4Ñ€EØ��!‘‰G�a‰K€Eà	
ˆ1ˆQ‰3ˆq�‰s�1‰uˆ€BÜ
�)‰)�B˜Ó
€CØ‰ˆ!ˆƒH�ÑƒHØˆˆˆ1ˆƒI�ÑƒIØ(Œ�”2—6‘6˜!˜a™% !™)Ó$ aÓ(¨°Ô3€Aä�8‰8�U˜1‘W˜aŸg™g a™jÐ)´Ô7€DÜ�1�a—g‘g˜a‘j !Ó$ò ,ˆØ˜!šQ˜$™ ! A a¡Cª F¡)Ñ+ˆˆQ�‰T’1ˆWŠð,ð 	ˆU�5‰[˜1ÑœtŸ~™~¨aÓ0Ñ0Ñ0€DØ€Krn   c                   ó   — e Zd ZdZdd„Zd„ Zy)Ú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#                  ||«      Ž j%                  «       | _        |j                  dk(  sJ ‚|| j                  z  }
t        j(                  |
t	        j*                  | j&                  j                  d   «      f   | _        || _        y )NrG   r0   r   r…   rƒ  )r}   r    r4   r6   rM   rt   rò  r×  r†   r"  r   rC  r®   Úa_denser"  r„  r  Údiscr  Úb_denser´   r5  rÍ   râ  )rU   r}   r    r4   r6   râ  r×  r†   rÀ  r†  rÍ   s              rY   r	  zF_dense.__init__¾  s  € ØˆŒØˆŒØˆŒØˆŒØ12°”—‘˜a¤uÕ-ÀˆŒØ&ˆÔØ�v‰v�{‰{˜aÒÐÐð U”'˜!œRŸV™V A§G¡G¨A¡J°¡N°QÑ$6Ó7¸ÈÔTÐUVÓWˆØ §¡ª¨4¨¡Ñ0ˆŒå;Ü# S§X¡X¨a°£^Ð4×<Ñ<Ó>ˆŒð �v‰v˜Š{Ðˆ{Ø�—‘‰ZˆÜ—%‘%˜œBŸH™H T§\¡\×%7Ñ%7¸Ñ%:Ó;Ð;Ñ<ˆŒàˆ�rn   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                  | j                  ¬«      }
t        j                  | j                  dz   |
| j                   «      | j"                  z
  dz  z  «      }|
| _        || j&                  z
  S )Nr   )rÊ  r¸  Úeconomic)r{  r0   r…   r;   )rM   ÚvstackrÀ  rÂ  Úscipy.linalgrÊ  r¸  rÅ  rÍ   r®   r   r4   r6   r†   rÛ  r×  r}   r    r9  râ  )rU   r  ÚabrÊ  r¸  r5  rŠ  Úqyr  r5   r9  Úfps               rY   rŽ  zF_dense.__call__Õ  sÛ   € Ü�Y‰Y˜Ÿ™ d§l¡l°QÑ&6Ð7Ó8ˆ÷ 	+Ù�"˜:Ô&‰ˆˆ1à�S‰S�4—7‘7‰]ˆà�W‰W�Q‰ZˆÙ�!�C�R�C˜˜"˜�H‘+˜r # 2˜wÓ'ˆä�d—f‘f˜a §¡°T×5EÑ5EÔFˆÜ�V‰V�D—F‘F˜A‘I¡ T§V¡V£¨t¯v©vÑ!5¸Ñ 9Ñ9Ó:ˆàˆŒà�D—F‘F‰{Ðrn   )NT)r(  r)  r*  r  r	  rŽ  r+  rn   rY   r¾  r¾  º  s   „ ñóó.rn   r¾  c                   ó²  — e Zd ZdZefd„Zd„ Zd„ Zej                  j                  dg d¢«      d„ «       Zd„ Zej                  j                  dg d¢«      d	„ «       Zej                  j                  d
„ «       Zej                  j                  dg d¢«      d„ «       Zd„ Zej                  j                  dddg«      ej                  j                  dg d¢«      d„ «       «       Zej                  j                  dddg«      d„ «       Zej                  j                  dddg«      ej                  j                  dg d¢«      d„ «       «       Zej                  j                  dg d¢«      ej                  j                  dg d¢«      d„ «       «       Zej                  j                  dg d¢«      ej                  j                  dg d¢«      d„ «       «       Zy)Ú_TestMakeSplrepBaseNc                 ó   — | j                   dk(  r<|j                  ddt        j                  z  d«      }|j	                  |«      }d}|||fS |j                  ddd«      }|j	                  |dz  dz  «      dz  }d}|||fS )	NrÑ   r   r;   rh   g€Ÿqá@H&?r­   rF   g…ëQ¸	@)rA  ri   rM   r¸  r”  )rU   rV   r}   r    râ  s        rY   Ú	_get_xyktz_TestMakeSplrepBase._get_xyktí  s‚   € Ø�<‰<˜:Ò%Ø—‘˜A˜q¤§¡™w¨Ó+ˆAØ—‘˜“ˆAØˆAà�a˜�7ˆNà—‘˜A˜q "Ó%ˆAØ—‘˜˜$™ ™
Ó# QÑ&ˆAØˆAà�a˜�7ˆNrn   c           	      ó¤  — t        j                  ddd«      }t        j                  ddd«      }t        t        «      5  t	        ||| j
                  ¬«       d d d «       t        t        «      5  t	        ddd| j
                  ¬	«       d d d «       t        t        «      5  t        j                  |j                  dddf«      }t	        ||d| j
                  ¬	«       d d d «       t        j                  d«      }t        t        «      5  t	        ||d
z  |d| j
                  ¬«       d d d «       t        j                  d«       }t        t        «      5  t	        ||d
z  |d| j
                  ¬«       d d d «       t        j                  |j                  d   df«      }t        t        «      5  t	        ||d
z  |d| j
                  ¬«       d d d «       t        t        «      5  t	        |d d d…   |d
z  d| j
                  ¬	«       d d d «       t        t        «      5  t	        ||d
z  dd| j
                  ¬«       d d d «       t        t        «      5  t	        ||d
z  d| j
                  ¬	«       d d d «       t        t        «      5  t	        ||d
z  d
dd| j
                  ¬«       d d d «       t        t        «      5  t	        ||d
z  dd| j
                  ¬«       d d d «       t        t        «      5  t	        t        j                  d«      t        j                  d«      d| j
                  ¬	«       d d d «       y # 1 sw Y   �ŒãxY w# 1 sw Y   �Œ¿xY w# 1 sw Y   �ŒxxY w# 1 sw Y   �Œ;xY w# 1 sw Y   �ŒýxY w# 1 sw Y   �Œ±xY w# 1 sw Y   �Œ„xY w# 1 sw Y   �Œ\xY w# 1 sw Y   �Œ5xY w# 1 sw Y   �ŒxY w# 1 sw Y   ŒãxY w# 1 sw Y   y xY w)Nr   rh   rF   rù  re  r0   r;   r«  ©râ  rA  r=   )r×  râ  rA  r9   rD   ©r6   râ  rA  )r6   r™  râ  rA  )râ  r™  rA  rÐ   é	   )rM   ri   rI   rK   r%   rA  rÂ  r«   r®   rJ   rQ   ©rU   r}   r    r×  s       rY   Útest_input_errorsz%_TestMakeSplrepBase.test_input_errorsû  s,  € Ü�K‰K˜˜2˜rÓ"ˆÜ�K‰K˜˜2˜rÓ"ˆÜœ:Ó&ñ 	4ä˜˜1 d§l¡lÕ3÷	4ô œ:Ó&ñ 	;ä˜˜1 ¨T¯\©\Õ:÷	;ô œ:Ó&ñ 	;ä—‘˜Ÿ™  A qÐ)Ó*ˆAÜ˜˜1 ¨T¯\©\Õ:÷	;ô
 �G‰G�B‹KˆÜœ:Ó&ñ 	Cä˜˜1˜a™4 1¨°T·\±\ÕB÷	Cô �W‰W�R‹[ˆLˆÜœ:Ó&ñ 	Cä˜˜1˜a™4 1¨°T·\±\ÕB÷	Cô �G‰G�Q—W‘W˜Q‘Z �OÓ$ˆÜœ:Ó&ñ 	Cä˜˜1˜a™4 1¨°T·\±\ÕB÷	Cô œ:Ó&ñ 	Dä˜™$˜B˜$™  A¡¨°d·l±lÕC÷	Dô œ9Ó%ñ 	Eä˜˜1˜a™4 3¨#°t·|±|ÕD÷	Eô œ:Ó&ñ 	=ä˜˜1˜a™4 2¨t¯|©|Õ<÷	=ô œ:Ó&ñ 	Kä˜˜1˜a™4 1¨1°¸T¿\¹\ÕJ÷	Kô œ:Ó&ñ 	Eä˜˜1˜a™4 1¨2°t·|±|ÕD÷	Eô œ:Ó&ñ 	QäœŸ	™	 !›¤b§i¡i°£l°cÀ4Ç<Á<ÕP÷	Qð 	Q÷a	4ñ 	4ú÷	;ñ 	;ú÷	;ñ 	;ú÷	Cñ 	Cú÷
	Cñ 	Cú÷
	Cñ 	Cú÷	Dñ 	Dú÷	Eñ 	Eú÷	=ñ 	=ú÷	Kñ 	Kú÷	Eð 	Eú÷	Qð 	Qús�   ¾L8Á.MÂ=MÄMÅM,Æ,M9Ç!#NÈNÉN ÊN-Ê:N:Ë/A OÌ8MÍMÍMÍM)Í,M6Í9NÎNÎNÎ N*Î-N7Î:OÏOc           	      óx  — t        t        ||||| j                  ¬«      «      d   }t        ||||| j                  ¬«      }t        |||||| j                  ¬«      }t	        |j
                  |j
                  d¬«       t	        |j                  |j                  d¬«       |j                  |j                  k(  sJ ‚y )NrÐ  r9   )r4   r6   râ  rA  r\   rz   )rž  r$   rA  r%   r   r4   r5   r6   )rU   r}   r    r6   râ  r4   Úspl_autoÚspl_ts           rY   Ú_test_with_knotsz$_TestMakeSplrepBase._test_with_knots2  sŽ   € Ü”  1¨¨Q¸¿¹ÔEÓFÀrÑJˆä˜q ! q¨A°t·|±|ÔDˆÜ˜A˜q A¨¨a¸¿¹ÔFˆä˜Ÿ
™
 E§G¡G°%Õ8Ü˜Ÿ
™
 E§G¡G°%Õ8Ø�z‰z˜UŸW™WÒ$Ð$Ñ$rn   r6   ©r0   r;   r=   r>   r­   r¨   c                 óT   — | j                  «       \  }}}| j                  ||||«       y r×  )rÍ  r×  )rU   r6   r}   r    râ  s        rY   Útest_with_knotsz#_TestMakeSplrepBase.test_with_knots<  s(   € à—.‘.Ó"‰ˆˆ1ˆaà×Ñ˜a  A qÕ)rn   c                 óV  — t        |||| j                  ¬«      }t        |||| j                  ¬«      }t        t	        |||| j                  ¬«      «      d   }t        |j                  |j                  d¬«       t        |j                  |d¬«       t        |j                  |d¬«       y )Nr@  r9   r\   rz   )r%   rA  r   rž  r$   r   r5   r4   )rU   r}   r    r6   r9  Úspl_ir4   s          rY   Ú_test_default_sz#_TestMakeSplrepBase._test_default_sB  s|   € Ü˜!˜Q !¨T¯\©\Ô:ˆÜ" 1 a¨1°d·l±lÔCˆÜ”  1¨°4·<±<Ô@ÓAÀ"ÑEˆä˜Ÿ™˜uŸw™w¨UÕ3Ü˜Ÿ™˜q uÕ-Ü˜Ÿ™ ¨Ö/rn   c                 óR   — | j                  «       \  }}}| j                  |||«       y r×  )rÍ  rÝ  )rU   r6   r}   r    rÀ   s        rY   Útest_default_sz"_TestMakeSplrepBase.test_default_sK  s&   € à—.‘.Ó"‰ˆˆ1ˆaØ×Ñ˜Q  1Õ%rn   c           	      ó   — d}| j                   dk(  r>t        j                  ddt        j                  z  d«      }t        j                  |«      }nt        j
                  d«      }|dz  }t        j                  «       5  t        j                  dt        «       t        ||d|| j                   dk(  ¬«      }d d d «       t        j                  «       5  t        j                  dt        «       t        ||d|| j                   ¬	«      }d d d «       t        j                  d   «       t        t        j                  |j                  dg|j                   d
z   z  f   |d
   d¬«       y # 1 sw Y   Œ³xY w# 1 sw Y   ŒnxY w)Ng ÂëþKH´9rÑ   r   r;   r®  r=   r7   ©r6   râ  r±  rÐ  r0   r.  rz   )rA  rM   ri   r¸  r”  rQ   ÚwarningsÚcatch_warningsÚsimplefilterr±  r   r%   r   r4   r´   r5   r6   )rU   râ  r}   r    rb   r9  s         rY   r²  z$_TestMakeSplrepBase.test_s_too_smallP  sB  € ð ˆØ�<‰<˜:Ò%Ü—‘˜A˜q¤§¡™w¨Ó+ˆAÜ—‘�q“	‰Aä—	‘	˜"“ˆAØ�1‘ˆAä×$Ñ$Ó&ñ 	KÜ×!Ñ!ØÜôô ˜˜A  a¨d¯l©l¸jÑ.HÔJˆC÷	Kô ×$Ñ$Ó&ñ 	DÜ×!Ñ!ØÜôô ˜a  a¨1°d·l±lÔCˆC÷	Dô 	˜Ÿ™˜s 1™vÔ&ÜœŸ™˜cŸe™e a S¨#¯%©%°©'¡]Ð2Ñ3Ø˜A™ Uö	,÷	Kð 	Kú÷	Dð 	Dús   Á>8E(Ã5E4Å(E1Å4E=r4  c                 ó$  — d}| j                   dk(  r>t        j                  ddt        j                  z  |«      }t        j                  |«      }nt        j
                  |«      }|dz  }t        |||| j                   ¬«      }t        |||d| j                   ¬«      }|j                  j                  d	k(  sJ ‚|j                  j                  d	k(  sJ ‚t        ||d	d	|z   z  z   |d| j                   ¬«      }|j                  j                  d	k(  sJ ‚y )
Nrh   rÑ   r   r;   r=   r@  çñhãˆµøä>rÐ  r0   )	rA  rM   ri   r¸  r–  rQ   r%   r5   r"  )rU   r6   rW   r}   r    r9  r˜  r  s           rY   Ú
test_shapez_TestMakeSplrepBase.test_shapem  sà   € ð ˆØ�<‰<˜:Ò%Ü—‘˜A˜q¤§¡™w¨Ó*ˆAÜ—‘�q“	‰Aä—	‘	˜!“ˆAØ�1‘ˆAä˜!˜Q !¨T¯\©\Ô:ˆÜ˜A˜q A¨°t·|±|ÔDˆà�u‰u�z‰z˜QŠÐˆØ�w‰w�|‰|˜qÒ Ð Ð ô ˜A˜q 1 a¨¡c¡7™{¨a°4ÀÇÁÔNˆØ�w‰w�|‰|˜qÒ Ð Ñ rn   c                 óö   — d}ddt         j                  z  }}t        j                  |||dz   «      }t        j                  |«      }t	        t
        «      5  t        ||dd¬«       d d d «       y # 1 sw Y   y xY w)Nrh   r   r;   r0   ç:Œ0âŽyE>ÚnonsenserÏ  )rM   r¸  ri   r«  rI   rK   r%   ©rU   ÚNrŸ  rX   r}   r    s         rY   Útest_error_on_invalid_bc_typez1_TestMakeSplrepBase.test_error_on_invalid_bc_type‚  sf   € ØˆØ�!”B—E‘E‘'ˆ1ˆÜ�K‰K˜˜1˜a !™eÓ$ˆÜ�F‰F�1‹Iˆäœ:Ó&ñ 	:Ü˜˜1 ¨jÕ9÷	:÷ 	:ñ 	:ús   ÁA/Á/A8rA  rÑ   rË  c           	      ó¸  — t        j                  ddt         j                  z  d«      }t        j                  |«      }t        j                  ddt	        |«      «      }t        ||||d|dk(  ¬«      }t        |||d||¬	«      }t        |j                  |d   «       t        t         j                  |j                  dg|j                  dz   z  f   |d   d¬
«       y )Nr   r;   rh   r0   r­   ré  rÑ   ©r×  r6   râ  r±  ©r×  râ  r6   rA  rz   )rM   ri   r¸  r”  rD  r   r%   r   r4   r´   r5   r6   )rU   rA  r6   r}   r    r×  rb   r9  s           rY   Ú%test_make_splrep_with_unequal_weightsz9_TestMakeSplrepBase.test_make_splrep_with_unequal_weights‹  s³   € ô �K‰K˜˜1œRŸU™U™7 BÓ'ˆÜ�F‰F�1‹Iˆä�K‰K˜˜1œc !›fÓ%ˆä�Q˜˜Q ! t°'¸ZÑ2GÔIˆÜ˜!˜Q ! t¨q¸'ÔBˆä˜Ÿ™˜s 1™vÔ&ÜœŸ™˜cŸe™e a S¨#¯%©%°©'¡]Ð2Ñ3Ø˜A™ Tö	+rn   c           	      óà  — d„ }t        j                  ddt         j                  z  d«      }t        j                  |«      }t         j                  ||f   j
                  \  }}|j                  j                  du sJ ‚|j                  j                  du sJ ‚t        j                  ddt        |«      «      }t         j                  ||f   j
                  \  }}	|j                  j                  du sJ ‚t        |||dd	|d
k(  ¬«      }
t        |||d	d|¬«      } |||
«       t        |||d	d|¬«      } |||
«       t        |||d	d|¬«      } |||
«       t        |||d	d|¬«      } |||
«       y )Nc                 ó´   — t        | j                  |d   «       t        t        j                  | j                  dg| j
                  dz   z  f   |d   d¬«       y )Nr   r0   ré  rz   )r   r4   rM   r´   r5   r6   )r9  rb   s     rY   ÚcheckzO_TestMakeSplrepBase.test_make_splrep_with_non_c_contiguous_input.<locals>.check   sG   € Ü˜CŸE™E 3 q¡6Ô*ÜœBŸE™E #§%¡%¨!¨¨c¯e©e°A©g©Ð"6Ñ7Ø ™F¨ö/rn   r   r;   rh   Fr0   r­   r=   ré  rÑ   rï  rð  )rM   ri   r¸  r”  r  rÅ  r  r  rD  r   r%   )rU   rA  rô  r}   r    rç   r™  r×  Úw1rÀ   rb   r9  s               rY   Ú,test_make_splrep_with_non_c_contiguous_inputz@_TestMakeSplrepBase.test_make_splrep_with_non_c_contiguous_inputœ  s\  € ò	/ô �K‰K˜˜1œRŸU™U™7 BÓ'ˆÜ�F‰F�1‹Iˆä—‘�q˜!�t‘—‘‰ˆˆBð �x‰x×$Ñ$¨Ñ-Ð-Ð-Ø�x‰x×$Ñ$¨Ñ-Ð-Ð-ä�K‰K˜˜1œc !›fÓ%ˆÜ—‘�a˜�d‘—‘‰ˆˆAð �x‰x×$Ñ$¨Ñ-Ð-Ð-ä�Q˜˜Q ! t°'¸ZÑ2GÔIˆô ˜"˜a 1¨°¸7ÔCˆÙˆc�3Œô ˜!˜R 1¨°¸7ÔCˆÙˆc�3Œô ˜!˜Q "¨°¸7ÔCˆÙˆc�3Œô ˜"˜b B¨$°!Ø")ô+ˆáˆc�3�rn   c                 ó|  — t        j                  ddd«      }t        j                  dt         j                  z  |z  «      }|d   |d   }}d}d}t        j                  |g|dz   z  |g|dz   z  z   «      }t        |||||||d |¬«	      }	t        |	t        «      sJ ‚|	j                  j                  d   d|dz   z  k(  sJ ‚|	j                  |k(  sJ ‚t        |	j                  d |dz    t        j                  |g|dz   z  «      «       t        |	j                  |dz    d  t        j                  |g|dz   z  «      «       y )	Nr   r0   rh   r;   r9   r=   ré  )ÚxbÚxer6   râ  r4   r™  rA  )rM   ri   r”  r¸  rT  r%   r   r   r4   r®   r6   r   rS   )
rU   rA  r6   r}   r    rø  rù  râ  r4   r9  s
             rY   Ú%test_make_splrep_impl_no_optimizationz9_TestMakeSplrepBase.test_make_splrep_impl_no_optimizationË  s/  € ô �K‰K˜˜1˜bÓ!ˆÜ�F‰F�1”r—u‘u‘9˜q‘=Ó!ˆà�1‘�q˜‘uˆBˆØˆØˆô �H‰H�b�T˜Q ™U‘^ r d¨a°!©e¡nÑ4Ó5ˆô ˜!˜Q 2¨"°Ø˜q t°Wô>ˆô ˜#œwÔ'Ð'Ð'Ø�u‰u�{‰{˜1‰~  a¨!¡e¡Ò,Ð,Ð,Ø�u‰u˜ŠzÐˆzÜ˜Ÿ™˜d˜q ™s˜¤R§Z¡Z°°¸¸A¹±Ó%?Ô@Ü˜Ÿ™  !¡˜f˜g˜¬¯
©
°B°4¸1¸q¹5±>Ó(BÕCrn   rW   )r£   é3   r  rF   râ  )rh   rÐ   r­   r0   r©  c           
      ól  — t         j                  j                  d«      }t         j                  dt        j                  |j                  ddt         j                  z  |dz
  ¬«      «      dt         j                  z  f   }t        j                  |«      t        j                  |«      z   }t        |||| j                  dk(  ¬«      \  }}}t        |||| j                  ¬«      }	|dk(  r|d	k(  r| j                  dk(  s8t        |	j                  |d
¬«       t        |	j                  |d | d	z
   d
¬«       y y )Nrü  r   r;   rª   rÑ   ©râ  r±  rÏ  rF   r0   r\   rz   )rM   rT   r§  r´   rž   r¨  r¸  r”  r–  r   rA  r%   r   r4   r5   ©
rU   rW   râ  rŸ   r}   r    r4   r5   r6   r9  s
             rY   Ú(test_make_splrep_matches_splrep_periodicz<_TestMakeSplrepBase.test_make_splrep_matches_splrep_periodicã  sð   € ô �i‰i×#Ñ# CÓ(ˆÜ�E‰E�!”R—W‘W˜SŸ[™[¨¨A´·±©I¸AÀ¹E˜[ÓBÓCÀQÌÏÉÁYÐNÑOˆÜ�F‰F�1‹IœŸ™˜q›	Ñ!ˆä˜˜A ¨¯©¸Ñ)CÔE‰ˆˆ1ˆaÜ˜!˜Q !¨T¯\©\Ô:ˆà�R’˜A šF t§|¡|°zÒ'AÜ˜CŸE™E 1¨5Õ1Ü˜CŸE™E 1 W q b¨1¡f :°EÖ:ð (Brn   c           
      ó
  — t         j                  j                  d«      }t         j                  dt        j                  |j                  ddt         j                  z  |dz
  ¬«      «      dt         j                  z  f   }t        j                  |«      t        j                  |«      z   }t        |||| j                  dk(  ¬«      \  }}}t        |||| j                  |¬«      }	t        |	j                  |d | dz
   d	¬
«       y )Nrü  r   r;   rª   rÑ   rý  )râ  rA  r4   r0   r\   rz   )rM   rT   r§  r´   rž   r¨  r¸  r”  r–  r   rA  r%   r   r5   rþ  s
             rY   Ú"test_make_splrep_with_splrep_knotsz6_TestMakeSplrepBase.test_make_splrep_with_splrep_knotsñ  sÄ   € ô �i‰i×#Ñ# CÓ(ˆÜ�E‰E�!”R—W‘W˜SŸ[™[¨¨A´·±©I¸AÀ¹E˜[ÓBÓCÀQÌÏÉÁYÐNÑOˆÜ�F‰F�1‹IœŸ™˜q›	Ñ!ˆä˜˜A ¨¯©¸Ñ)CÔE‰ˆˆ1ˆaÜ˜!˜Q !¨T¯\©\¸QÔ?ˆÜ˜Ÿ™˜q  1 " q¡&˜z°Ö6rn   )r(  r)  r*  rA  rM   rÍ  rÓ  r×  rc   rˆ  r‰  rÚ  rÝ  rß  Úthread_unsafer²  rç  rí  rñ  rö  rú  rÿ  r  r+  rn   rY   rË  rË  é  sç  „ à€Gàó ò5Qòn%ð ‡[�[×Ñ˜SÒ"4Ó5ñ*ó 6ð*ò
0ð ‡[�[×Ñ˜SÒ"4Ó5ñ&ó 6ð&ð ‡[�[×Ññ,ó ð,ð8 ‡[�[×Ñ˜S¢)Ó,ñ!ó -ð!ò(:ð ‡[�[×Ñ˜Y¨°TÐ(:Ó;Ø‡[�[×Ñ˜S¢/Ó2ñ+ó 3ó <ð+ð ‡[�[×Ñ˜Y¨°TÐ(:Ó;ñ+ó <ð+ð\ ‡[�[×Ñ˜Y¨°TÐ(:Ó;Ø‡[�[×Ñ˜S¢/Ó2ñDó 3ó <ðDð, ‡[�[×Ñ˜SÒ"3Ó4Ø‡[�[×Ñ˜SÒ"5Ó6ñ
;ó 7ó 5ð
;ð ‡[�[×Ñ˜SÒ"3Ó4Ø‡[�[×Ñ˜SÒ"5Ó6ñ7ó 7ó 5ñ7rn   rË  c                   óÒ   — e Zd Zej                  j                  dg d¢«      d„ «       Zej                  j                  dg d¢«      d„ «       Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zy)ÚTestMakeSplrepr6   rØ  c                 ó  — ddl m} | j                  «       \  }}}t        j                  dg|dz   z  ddgz   dg|dz   z  z   «      } |||d d …d f   |||«      }t        |||||«      }dD ]  }	t         ||	«       ||	«      d¬	«       Œ y )
Nr   ©ÚFr0   rD   rB   r­   ©r0   rh   r£   r\   rz   )Ú scipy.interpolate._fitpack_repror  rÍ  rM   rT  r¾  r   )
rU   r6   r  r}   r    râ  r4   ÚfÚf_dr  s
             rY   Útest_fitpack_FzTestMakeSplrep.test_fitpack_F   s˜   € õ 	7à—.‘.Ó"‰ˆˆ1ˆaÜ�H‰H�a�S˜!˜A™#‘Y # s Ñ+¨q¨c°1°Q±3©iÑ7Ó8ˆÙˆa�’1�d�7‘˜Q  1Ó%ˆÜ�a˜˜A˜q !Ó$ˆØò 	6ˆAÜ™A˜a›D¡# a£&¨uÖ5ñ	6rn   c                 óÖ  — ddl m} | j                  «       \  }}}t        j                  dg|dz   z  ddgz   dg|dz   z  z   «      }t        j
                  |j                  d   t        ¬«      } |||d d …d f   ||||¬«      }t        ||||||¬«      }	t        |||||«      }
d	D ]B  }t         ||«       |	|«      d
¬«       t        j                   |
|«       |	|«      d
¬«      sŒBJ ‚ y )Nr   r  r0   rD   rB   r­   rG   r§  r  r\   rz   )r	  r  rÍ  rM   rT  rQ   r®   rò  r¾  r   rå   )rU   r6   r  r}   r    râ  r4   r×  ÚfwÚfw_dr  r  s               rY   Útest_fitpack_F_with_weightsz*TestMakeSplrep.test_fitpack_F_with_weights  sæ   € õ 	7à—.‘.Ó"‰ˆˆ1ˆaÜ�H‰H�a�S˜!˜A™#‘Y # s Ñ+¨q¨c°1°Q±3©iÑ7Ó8ˆÜ�I‰I�a—g‘g˜a‘j¬Ô.ˆÙˆq�!’A�t�G‘*˜a  A¨Ô+ˆÜ�q˜!˜Q  1¨Ô*ˆä�a˜˜A˜q !Ó$ˆàò 	@ˆAÜ™B˜q›E¡4¨£7°Õ7Ü—{‘{¡3 q£6©4°«7¸Ö?Ð?Ð?ñ	@rn   c           
      ó¬  — dd l mc m} t        j                  j                  d«      }t        j                  ddddt        j                  |j                  d¬«      «      dz  ddddf	   }t        |«      d}}t        |j                  ||«      Ž j                  «       }t        ||«      }|j                  d   |d|z  z
  dz
  k(  sJ ‚t        ||d¬	«       y )
Nr   r£  r©   rª   r­   r=   r;   r\   rz   )r	  Úinterpolater„  rM   rT   r§  r´   rž   r¨  rD  r  rÁ  r  r¼  r®   r   )rU   r†  rŸ   r4   rW   r6   ÚDÚD_denses           rY   Útest_disc_matrixzTestMakeSplrep.test_disc_matrix  s¼   € ÷ 	7Ð6ä�i‰i×#Ñ# EÓ*ˆÜ�E‰E�!�Q˜˜1œbŸg™g c§k¡k°q kÓ&9Ó:¸1Ñ<¸aÀÀAÀqÐHÑIˆä�1‹v�qˆ1ˆÜ˜#Ÿ(™( 1 a›.Ð)×1Ñ1Ó3ˆÜ˜Q Ó"ˆØ�w‰w�q‰z˜Q  1¡™W q™[Ò(Ð(Ð(Ü˜˜7¨Ö/rn   c                 óŒ  — d}| j                  |«      \  }}}|j                  dg|dz   z  ddgz   dg|dz   z  z   «      }t        ||||¬«      \  }}}|j                  |«      |j                  |«      }}t        ||k(  «      sJ ‚t	        ||||¬«      }	t        |d |	j                  j                  d    |	j                  d¬	«       y )
Nr=   r   r0   rD   rB   r­   r�  r\   rz   )rÍ  rS   r   rË   r%   r   r5   r®   )
rU   rV   r6   r}   r    râ  r]  r4   r5   r9  s
             rY   Útest_simple_vs_splrepz$TestMakeSplrep.test_simple_vs_splrep+  s½   € àˆØ—.‘. Ó$‰ˆˆ1ˆaØ�Z‰Z˜˜˜Q˜q™S™	 S¨# JÑ.°!°°a¸±c±Ñ:Ó;ˆä˜˜A  aÔ(‰ˆˆ1ˆaØ�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆÜ�1˜‘7Œ|Ðˆ|ä˜!˜Q ! qÔ)ˆÜ˜˜/˜3Ÿ5™5Ÿ;™; q™>Ð*¨C¯E©E¸Ö>rn   c                 ób  — d}| j                  «       \  }}}t        t        ||||¬«      «      d   }t        ||||¬«      }t        |||||¬«      }t	        |j
                  |j
                  d¬«       t	        |j                  |j                  d¬«       |j                  |j                  k(  sJ ‚y )Nr=   r�  r9   )r4   r6   râ  r\   rz   )rÍ  rž  r$   r%   r   r4   r5   r6   )rU   r6   r}   r    râ  r4   rÕ  rÖ  s           rY   rÚ  zTestMakeSplrep.test_with_knots8  s“   € ØˆØ—.‘.Ó"‰ˆˆ1ˆaä”  1¨¨QÔ/Ó0°Ñ4ˆä˜q ! q¨AÔ.ˆÜ˜A˜q A¨¨aÔ0ˆä˜Ÿ
™
 E§G¡G°%Õ8Ü˜Ÿ
™
 E§G¡G°%Õ8Ø�z‰z˜UŸW™WÒ$Ð$Ñ$rn   c                 ó¶   — d}|j                  ||j                  ¬«      }|dz  }d}t        |||d¬«      }|j                  j                  d   d|dz   z  k(  sJ ‚y )Nrh   rG   r=   r0   r�  r   r;   )rQ   rR   r%   r4   r®   )rU   rV   rW   r}   r    r6   r9  s          rY   Útest_no_internal_knotsz%TestMakeSplrep.test_no_internal_knotsE  s]   € àˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰DˆØˆÜ˜!˜Q ! qÔ)ˆØ�u‰u�{‰{˜1‰~  A a¡C¡Ò(Ð(Ñ(rn   c                 óÈ   — d}|j                  ||j                  ¬«      }|dz  }t        ||d¬«      }t        ||d¬«      }t	        |j
                  |j
                  d¬«       y )Nrh   rG   r=   rZ  r\   rz   )rQ   rR   r%   r   r   r5   )rU   rV   rW   r}   r    r9  rÜ  s          rY   rß  zTestMakeSplrep.test_default_sN  sV   € ØˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰DˆÜ˜!˜Q !Ô$ˆÜ" 1 a¨1Ô-ˆä˜Ÿ™˜uŸw™w¨UÖ3rn   c                 ó¤  — d}t        j                  |«      }|dz  }t        j                  t        «      5 }t        ||dd¬«      }t        ||dd¬«      }t        |j                  |d   «       t        t         j                  |j                  dg|j                  dz   z  f   |d   d¬«       d d d «       t        «      d	k(  sJ ‚y # 1 sw Y   ŒxY w)
Nr®  r=   r¯  r�  r   r0   r.  rz   r;   )rM   rQ   rc   r°  r±  r   r%   r   r4   r   r´   r5   r6   rD  )rU   rW   r}   r    rŠ  rb   r9  s          rY   r²  zTestMakeSplrep.test_s_too_smallW  s·   € àˆÜ�I‰I�a‹LˆØˆq‰Dˆä�\‰\œ.Ó)ð 	0¨QÜ˜˜A  eÔ,ˆCÜ˜a  a¨5Ô1ˆCÜ˜CŸE™E 3 q¡6Ô*ÜœBŸE™E #§%¡%¨!¨¨c¯e©e°A©g©Ð"6Ñ7Ø ™F¨õ0÷		0ô �1‹v˜Š{Ð‰{÷	0ð 	0ús   ¶A7CÃCc                 ót  — t        j                  g d¢t         j                  ¬«      }t        j                  g d¢t         j                  ¬«      }t        j                  dg|j                  d   z  t         j                  ¬«      }t	        t
        «      5  t        |||dd¬«       d d d «       y # 1 sw Y   y xY w)	N)g      4@gR¸…ë9c@g
×£p=òe@g×£p=
Oi@gìQ¸…£m@gìQ¸…³o@g)\�Âõ(p@gfffffq@gq=
×£Èq@gö(\�ÂYr@g)\�Âõ¨r@gö(\�ÂÝr@g…ëQ¸s@gìQ¸…3s@g33333Gs@çš™™™™as@r  g     hs@rG   )g     €J@g     ÀH@gÍÌÌÌÌLH@gffffffG@gš™™™™™E@g)\�Âõ(D@gÍÌÌÌÌÌC@g      B@g333333@@gÍÌÌÌÌÌ<@g3333339@gš™™™™™5@g      2@gÍÌÌÌÌÌ,@gš™™™™™%@gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@r?   g5{ 2ö?r   r;   rù  )r×  r6   râ  )rM   rS   rR   r®   rI   rK   r%   rÒ  s       rY   Útest_issue_22704zTestMakeSplrep.test_issue_22704e  sŽ   € ä�J‰Jò %ô -/¯J©Jô8ˆô �J‰Jò ô &(§Z¡Zô1ˆô �J‰J˜�y 1§7¡7¨1¡:Ñ-´R·Z±ZÔ@ˆÜœ:Ó&ñ 	.Ü˜˜1  Q¨"Õ-÷	.÷ 	.ñ 	.ús   ÂB.Â.B7c                 ó^  — d\  }}|j                  ||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 ‚y )N©rh   r=   rG   r=   rZ  ræ  r�  r0   )rQ   rR   r%   r5   r"  )	rU   rV   rW   r6   r}   r    r9  r˜  r  s	            rY   rç  zTestMakeSplrep.test_shapes  s¦   € à‰ˆˆ1Ø�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰Dˆä˜!˜Q !Ô$ˆÜ˜A˜q A¨Ô.ˆà�u‰u�z‰z˜QŠÐˆØ�w‰w�|‰|˜qÒ Ð Ð ô ˜A˜q 1 a¨¡c¡7™{¨a°4Ô8ˆØ�w‰w�|‰|˜qÒ Ð Ñ rn   c                 óŠ  — d\  }}|j                  ||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 ‚y )Nr!  rG   r=   r   r�  r0   r;   )rQ   rR   r%   r5   r"  r4   r®   )rU   rV   rW   r6   r}   r    rû  r˜  s           rY   Útest_s0_vs_notzTestMakeSplrep.test_s0_vs_notƒ  s¼   € à‰ˆˆ1Ø�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰Dˆä˜A˜q A¨Ô+ˆÜ˜A˜q A¨Ô+ˆà�w‰w�|‰|˜qÒ Ð Ð Ø�w‰w�|‰|˜qÒ Ð Ð à�w‰w�}‰}˜QÑ 1 q¡5¨1¡9Ò,Ð,Ð,Ø�w‰w�}‰}˜QÑ 1¨¨A©¡;Ò.Ð.Ñ.rn   N)r(  r)  r*  rc   rˆ  r‰  r  r  r  r  rÚ  r  rß  r²  r  rç  r#  r+  rn   rY   r  r  ý  s}   „ ð ‡[�[×Ñ˜SÒ"4Ó5ñ	6ó 6ð	6ð ‡[�[×Ñ˜SÒ"4Ó5ñ@ó 6ð@ò 0ò?ò%ò)ò4òò.ò!ó /rn   r  c                   ó|  — e Zd ZdZej
                  j                  dg d¢«      d„ «       Zej
                  j                  dg d¢«      d„ «       Zd„ Z	d„ Z
ej
                  j                  dd	d
g«      d„ «       Zej
                  j                  dg d¢«      ej
                  j                  ddg«      d„ «       «       Zy)ÚTestMakeSplrepPeriodicrÑ   r6   rØ  c                 óÈ   — |j                  ddd«      }|j                  d«      }t        |||d| j                  ¬«      }|j                  j
                  d   d|dz   z  k(  sJ ‚y )Nr   rh   rF   rå  r0   rÐ  r;   )ri   rÂ  r%   rA  r4   r®   )rU   r6   rV   r}   r    r9  s         rY   r  z-TestMakeSplrepPeriodic.test_no_internal_knots˜  s[   € ð �K‰K˜˜2˜rÓ"ˆØ�G‰G�E‹Nˆä˜!˜Q ! q°$·,±,Ô?ˆØ�u‰u�{‰{˜1‰~  A a¡C¡Ò(Ð(Ñ(rn   c                 óÊ  — d}t        j                  ddt         j                  z  |«      }t        j                  |«      t        j                  |«      z   }t        |||d| j                  ¬«      }t        |||d| j                  ¬«      }|j                  j                  dk(  sJ ‚|j                  j                  dk(  sJ ‚|j                  j                  d   |d|z  z   k(  sJ ‚y )Nrh   r   r;   rÐ  r0   )rM   ri   r¸  r”  r–  r%   rA  r5   r"  r4   r®   )rU   r6   rW   r}   r    rû  r˜  s          rY   r#  z%TestMakeSplrepPeriodic.test_s0_vs_not¡  s¸   € ð ˆÜ�K‰K˜˜1œRŸU™U™7 AÓ&ˆÜ�F‰F�1‹IœŸ™˜q›	Ñ!ˆä˜A˜q A¨°D·L±LÔAˆÜ˜A˜q A¨°D·L±LÔAˆà�w‰w�|‰|˜qÒ Ð Ð Ø�w‰w�|‰|˜qÒ Ð Ð à�w‰w�}‰}˜QÑ 1 q¨1¡u¡9Ò,Ð,Ñ,rn   c                 óT  — d}dd|j                   z  }}|j                  |||dz   |j                  ¬«      }|j                  |«      }t	        ||d| j
                  ¬«      }t        t        ||«      |dd	¬
«       |j                  |«      |j                  |«      z   }t	        ||d| j
                  ¬«      }t        t        ||«      |dd¬
«       d|j                  |«      z  |j                  |«      dz  z   }t	        ||d| j
                  ¬«      }t        t        ||«      |dd	¬
«       y )Nrh   r   r;   r0   rG   ré  rÏ  ræ  r\  r]   rÒ   r@  r­   r=   )	r¸  ri   rR   r–  r%   rA  r   r   r”  )rU   rV   rì  rŸ  rX   r}   r    r9  s           rY   Ú test_periodic_with_periodic_dataz7TestMakeSplrepPeriodic.test_periodic_with_periodic_data°  s÷   € ØˆØ�!�B—E‘E‘'ˆ1ˆØ�K‰K˜˜1˜a !™e¨2¯:©:ˆKÓ6ˆà�F‰F�1‹IˆÜ˜!˜Q $°·±Ô=ˆÜœ˜a › q¨t¸$Õ?à�F‰F�1‹I˜Ÿ™˜q›	Ñ!ˆÜ˜!˜Q %°·±Ô>ˆÜœ˜a › q¨t¸$Õ?àˆb�f‰f�Q‹i‰K˜"Ÿ&™& ›) A™+Ñ%ˆÜ˜!˜Q $°·±Ô=ˆÜœ˜a › q¨t¸$Ö?rn   c                 ó
  — d}ddt         j                  z  }}t        j                  |||dz   «      }t        j                  |«      }t	        t
        «      5  t        ||d| j                  ¬«       d d d «       y # 1 sw Y   y xY w)Nrh   r   r;   r0   ré  rÏ  )rM   r¸  ri   r«  rI   rK   r%   rA  rë  s         rY   Ú$test_periodic_with_non_periodic_dataz;TestMakeSplrepPeriodic.test_periodic_with_non_periodic_dataÁ  sj   € ØˆØ�!”B—E‘E‘'ˆ1ˆÜ�K‰K˜˜1˜a !™eÓ$ˆä�F‰F�1‹IˆÜœ:Ó&ñ 	<Ü˜˜1 ¨d¯l©lÕ;÷	<÷ 	<ñ 	<ús   ÁA9Á9Brâ  r   r¯  c                 ó–  — t        j                  ddg«      }t        j                  ddg«      }|dkD  rt        j                  ddg«      nd }t        |||dd|¬«      }t        |||dd|¬«      }|dkD  rt	        |j
                  |d   «       t	        t         j                  |j                  dg|j                  dz   z  f   |d   «       y )	Nr?   r2   rb  r   r0   rÑ   )r×  r6   rA  râ  )r×  r6   r±  râ  )	rM   rT  r%   r   r   r4   r´   r5   r6   )rU   râ  r}   r    r×  r9  rb   s          rY   Ú'test_make_splrep_periodic_m_eq_2_k_eq_1z>TestMakeSplrepPeriodic.test_make_splrep_periodic_m_eq_2_k_eq_1Ê  s¶   € ô �H‰H�c˜3�ZÓ ˆÜ�H‰H�c˜3�ZÓ ˆØ$%¨¢EŒB�H‰H�c˜3�ZÔ ¨tˆô ˜!˜Q ! q°*ÀÔBˆÜ�Q˜˜Q !¨¨aÔ0ˆàˆqŠ5Ü˜CŸE™E 3 q¡6Ô*ÜœŸ™˜cŸe™e a S¨#¯%©%°©'¡]Ð2Ñ3Ø˜A™õ	 rn   Úk_fp))r0   ç-Cëâ6¿)r;   r/  )r=   g�ÕA¹È˜¿r\  c           	      ó@  — d}t        j                  dd|«      }t        j                  dt         j                  z  |z  «      }|\  }}t	        ||||d¬«      }d}	t        ||d d …d f   |d   ||¬«      }
t        j                  «       5  t        j                  dt        «       t        |
d	d|	|z
  ft         j                  ||z
  ff|d
z  «      }d d d «       |
j                  }t        j                  ddg«      } ||«      }t        |d   |d   «       y # 1 sw Y   ŒGxY w)Nrh   r   r0   r;   rá  r¬  r�  r7   r@   çü©ñÒMbP?r?   r2   )rM   ri   r”  r¸  r   r"   râ  rã  rä  r±  r#   rP   r9  rT  r   )rU   r.  râ  rW   r}   r    r6   rÉ  rb   Úfp0ÚsplinerÀ   ÚbsÚx_checkÚy_checks                  rY   Útest_fperiodic_basic_fitz/TestMakeSplrepPeriodic.test_fperiodic_basic_fitÚ  s  € ð ˆÜ�K‰K˜˜1˜aÓ ˆÜ�F‰F�1”r—u‘u‘9˜q‘=Ó!ˆØ‰ˆˆ2ä�Q˜˜Q !¨Ô+ˆàˆä˜1˜a¢ 4 ™j¨#¨a©&°A¸Ô;ˆÜ×$Ñ$Ó&ñ 	TÜ×!Ñ! (¬NÔ;Ü˜& #¨¨C°!©G¨´r·v±v¸rÀA¹vÐ6FÐ'GÈÈUÉÓSˆA÷	Tð
 �Z‰ZˆÜ—(‘(˜C ˜:Ó&ˆÙ�W“+ˆä˜ ™
 G¨A¡JÕ/÷	Tð 	Tús   ÂADÄDN)r(  r)  r*  rA  rc   rˆ  r‰  r  r#  r)  r+  r-  r7  r+  rn   rY   r%  r%  “  sÉ   „ ð €Gà‡[�[×Ñ˜SÒ"4Ó5ñ)ó 6ð)ð ‡[�[×Ñ˜SÒ"4Ó5ñ-ó 6ð-ò@ò"<ð ‡[�[×Ñ˜S 1 e *Ó-ñ ó .ð ð ‡[�[×Ñ˜VÒ%QÓRØ‡[�[×Ñ˜S 4 &Ó)ñ0ó *ó Sñ0rn   r%  c                   ó¼   — e Zd Zddefd„Zej                  j                  dg d¢«      d„ «       Zej                  j                  dg d¢«      d„ «       Z	d„ Z
d	„ Zd
„ Zy)ÚTestMakeSplpreprh   r=   c                 óª   — |j                  ||j                  ¬«      |j                  z  |z  }|j                  |«      |j	                  |«      g}|||fS )NrG   )rQ   rR   r¸  r”  r–  )rU   r   r6   rV   r}   r    s         rY   Ú_get_xykzTestMakeSplprep._get_xykõ  sK   € Ø�I‰I�a˜rŸz™zˆIÓ*¨R¯U©UÑ2°QÑ6ˆØ�V‰V�A‹Y˜Ÿ™˜q›	Ð"ˆØ�!�Qˆwˆrn   râ  ©r   r«  r1  ræ  c           
      ó8  — 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¬	«       y )Nr!  r®  rÐ   rÑ  rh   r<  ©râ  r\   rz   r0   r  )rM   rQ   r¸  r”  r–  r   r&   r   r4   rD  rS   rÅ  r5   r   )rU   râ  r   r6   r}   r    Ú	num_knotsr4   r5   Úu_r9  r  rú   s                rY   Útest_simple_vs_splprepz&TestMakeSplprep.test_simple_vs_splprepú  sú   € ð ‰ˆˆ1Ü�I‰I�a‹Lœ2Ÿ5™5Ñ  1Ñ$ˆÜ�V‰V�A‹YœŸ™˜q›	Ð"ˆð  ¨%°uÑ=ˆ	ô    Qœ‰‰	ˆˆAˆq�2Ü˜a 1Ô%‰ˆˆQô 	˜˜2 EÕ*ô 	˜Ÿ™˜q uÕ-Ü�1‹v˜ 1™Ò%Ð%Ð%ô �Z‰Z˜‹]�_‰_ˆÜ˜Ÿ™˜r¨Õ.ô 	™˜A›Ø0œ  1 a¨aÔ0°Ó3¸%ö	Arn   c                 óT  — | j                  «       \  }}}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¬«       |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 «       y # 1 sw Y   y xY w)Nr   r;   r>  rz   r\   r0   )r;  r   rž  rM   r®   r   rS   r   rD  r   r&   r4   r5   rÅ  r6   rI   rK   )	rU   râ  rÀ   r    rb   r  Útck_aÚu_ar9  s	            rY   Útest_array_not_listz#TestMakeSplprep.test_array_not_list  s(  € ð —-‘-“/‰ˆˆ1ˆaÜ˜!œTÔ"Ð"Ð"Ü�x‰x˜‹{˜1‰~ Ò"Ð"Ð"ô ˜˜a”‰ˆˆQÜœRŸZ™Z¨›]¨aÔ0‰
ˆˆsÜ˜˜3 QÕ'Ü˜˜A™  a¡¨uÕ5Ü�3�q‘6‹{œc %¨¡(›mÒ+Ð+Ð+Ü˜˜A™  a¡¨uÕ5Ø�1‰v˜˜q™Ò!Ð!Ð!Ü�x‰xœ˜a ›Ó&¬"¯(©(°1«+Ò5Ð5Ð5ä˜a 1Ô%‰ˆˆQÜ˜˜3 UÕ+Ü˜Ÿ™˜u Q™x¨eÕ4Ü˜Ÿ™Ÿ™  q¡°Õ6Ø�u‰u˜˜a™Ò Ð Ð Ù�1‹v�|‰|œrŸx™x¨›{Ò*Ð*Ð*äœbŸj™j¨›m¨qÔ1‰ˆˆQÜ˜˜3 UÕ+Ü˜Ÿ™˜u Q™x¨eÕ4Ü˜Ÿ™Ÿ™  q¡°Õ6Ø�u‰u˜˜a™Ò Ð Ð Ù�1‹v�|‰|œrŸx™x¨›{Ò*Ð*Ð*äœ:Ó&ñ 	/ÜœŸ™ A›Ÿ™¨AÕ.÷	/÷ 	/ñ 	/ús   É*+JÊJ'c                 ó”   — | j                  d|¬«      \  }}}t        |«      \  }}t         ||«      |j                  |«      d¬«       y )Nrh   ©r   rV   r\   rz   ©r;  r&   r   r�   ©rU   rV   r}   r    r6   r9  r  s          rY   Útest_default_s_is_zeroz&TestMakeSplprep.test_default_s_is_zero:  s?   € Ø—-‘- "¨�-Ó,‰ˆˆ1ˆaä˜a“‰ˆˆQÜ™˜A› §¡¨£°%Ö8rn   c                 ó®  — | j                  d|¬«      \  }}}t        |d¬«      \  }}t        |d¬«      \  }}t        ||d¬«       t         ||«      |j                  |«      d¬«       t         ||«      |j                  |«      d¬«       |j                  |j                  k(  sJ ‚|j
                  j                  |j
                  j                  k(  sJ ‚y )Nrh   rG  r   r>  r\   rz   r½   )r;  r&   r   r�   r  r5   r®   )	rU   rV   r}   r    r6   rÜ  Úu_iÚspl_nÚu_ns	            rY   Útest_s_zero_vs_near_zeroz(TestMakeSplprep.test_s_zero_vs_near_zero@  sª   € à—-‘- "¨�-Ó,‰ˆˆ1ˆaä! ! qÔ)‰
ˆˆsÜ! ! uÔ-‰
ˆˆsä˜˜S uÕ-Ü™˜c›
 B§H¡H¨Q£K°eÕ<Ü™˜c›
 B§H¡H¨Q£K°dÕ;Ø�z‰z˜UŸZ™ZÒ'Ð'Ð'Ø�w‰w�}‰} §¡§¡Ò-Ð-Ñ-rn   c                 óø  — t        j                  dt        ¬«      }t        t        «      5  t        |«       d d d «       t        t        «      5  t        |d¬«       d d d «       t        t        «      5  t        |d¬«       d d d «       t        |gd¬«      \  }}t        |gd¬«      \  }} ||«      j                  dk(  sJ ‚t         ||«      |gd¬	«       y # 1 sw Y   Œ¢xY w# 1 sw Y   Œ‰xY w# 1 sw Y   ŒpxY w)
NrÐ   rG   r   r>  r«  ræ  ©r0   rÐ   r\   rz   )	rM   rQ   rò  rI   rK   r   r&   r®   r   )rU   r}   rb   r@  r9  r  s         rY   r–  zTestMakeSplprep.test_1DM  sÖ   € Ü�I‰I�aœuÔ%ˆÜœ:Ó&ñ 	Ü�AŒJ÷	ô œ:Ó&ñ 	!Ü˜˜aÕ ÷	!ô œ:Ó&ñ 	#Ü˜˜cÕ"÷	#ô ˜1˜# Ô&‰ˆˆRÜ˜q˜c TÔ*‰ˆˆQá�1‹v�|‰|˜vÒ%Ð%Ð%Ü™˜A›  ¨%Ö0÷	ð 	ú÷	!ð 	!ú÷	#ð 	#ús#   «CÁC$Á3C0ÃC!Ã$C-Ã0C9N©r(  r)  r*  rM   r;  rc   rˆ  r‰  rA  rE  rJ  rO  r–  r+  rn   rY   r9  r9  ó  sl   „ à˜q Ró ð
 ‡[�[×Ñ˜SÒ"6Ó7ñAó 8ðAð: ‡[�[×Ñ˜SÒ"6Ó7ñ/ó 8ð/òB9ò.ó1rn   r9  c                   ó¼   — e Zd Zddefd„Zej                  j                  dg d¢«      d„ «       Zej                  j                  dg d¢«      d„ «       Z	d„ Z
d	„ Zd
„ Zy)ÚTestMakeSplprepPeriodicrh   r=   c                 ó¨   — |j                  dd|j                  z  ||j                  ¬«      }|j                  |«      |j	                  |«      g}|||fS )Nr   r;   rG   )ri   r¸  rR   r”  r–  )rU   rW   r6   rV   r}   r    s         rY   r;  z TestMakeSplprepPeriodic._get_xykb  sI   € Ø�K‰K˜˜1˜RŸU™U™7 A¨R¯Z©ZˆKÓ8ˆØ�V‰V�A‹Y˜Ÿ™˜q›	Ð"ˆØ�!�Qˆwˆrn   râ  ©r   r\  ræ  r@  c           
      ó¬  — d}t        j                  ddt         j                  z  |«      }t        j                  |«      t        j                  |«      g}dddddœ}t        ||d¬«      \  \  }}}}	t        ||d	¬
«      \  }
}t        ||	d¬«       t        |
j                  «      ||   k(  sJ ‚t         |
|«       t        |||d¬«      |«      dd¬«       y )Nrh   r   r;   r®  r  rV  r0   rý  rÑ   rÏ  r\   rz   r  r@  r]   )rM   ri   r¸  r”  r–  r   r&   r   rD  r4   r   )rU   râ  rW   r}   r    r?  r4   r5   r6   r@  r9  r  s               rY   rA  z.TestMakeSplprepPeriodic.test_simple_vs_splprepg  sÍ   € ð ˆÜ�K‰K˜˜1œRŸU™U™7 AÓ&ˆÜ�V‰V�A‹YœŸ™˜q›	Ð"ˆð  "¨B°bÑ9ˆ	ô    Q¨AÔ.‰‰	ˆˆAˆq�2Ü˜a 1¨jÔ9‰ˆˆQô 	˜˜2 EÕ*ô �3—5‘5‹z˜Y q™\Ò)Ð)Ð)ô 	™˜A›Ð 8¤¨¨1¨a°aÔ 8¸Ó ;Ø"¨ö	0rn   c                 ó†  — | j                  «       \  }}}t        |t        «      sJ ‚t        j                  |«      d   dk(  sJ ‚t        ||d¬«      \  }}t        t        j                  |«      |d¬«      \  }}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        ||d¬«      \  }
}t        ||d¬«       |
j                  |d   k(  sJ ‚ |
|«      j                  t        j                  |«      k(  sJ ‚t        t        j                  |«      |d¬«      \  }
}t        ||d¬«       |
j                  |d   k(  sJ ‚ |
|«      j                  t        j                  |«      k(  sJ ‚t        t        «      5  t        t        j                  |«      j                  |d¬«       d d d «       y # 1 sw Y   y xY w)	Nr   r;   r0   rý  rz   r\   rÑ   rÏ  )r;  r   rž  rM   r®   r   rS   r   rD  ræ  r   r&   r6   rI   rK   rÅ  )rU   râ  rÀ   r    rb   r  rC  rD  rÓ  rÔ  r9  s              rY   rE  z+TestMakeSplprepPeriodic.test_array_not_list€  sù  € ð —-‘-“/‰ˆˆ1ˆaÜ˜!œTÔ"Ð"Ð"Ü�x‰x˜‹{˜1‰~ Ò"Ð"Ð"ô ˜˜a QÔ'‰ˆˆQÜœRŸZ™Z¨›]¨a°QÔ7‰
ˆˆsÜ˜˜3 QÕ'Ü˜˜A™  a¡¨uÕ5Ü�3�q‘6‹{œc %¨¡(›mÒ+Ð+Ð+Ü˜#˜a™& %¨¡(Ó+ò 	0‰FˆB�Ü˜B ¨Ö/ð	0à�1‰v˜˜q™Ò!Ð!Ð!Ü�x‰xœ˜a ›Ó&¬"¯(©(°1«+Ò5Ð5Ð5ä˜a 1¨jÔ9‰ˆˆQÜ˜˜3 UÕ+Ø�u‰u˜˜a™Ò Ð Ð Ù�1‹v�|‰|œrŸx™x¨›{Ò*Ð*Ð*äœbŸj™j¨›m¨q¸*ÔE‰ˆˆQÜ˜˜3 UÕ+Ø�u‰u˜˜a™Ò Ð Ð Ù�1‹v�|‰|œrŸx™x¨›{Ò*Ð*Ð*äœ:Ó&ñ 	CÜœŸ™ A›Ÿ™¨A°zÕB÷	C÷ 	Cñ 	Cús   È,H7È7I c                 ó˜   — | j                  d|¬«      \  }}}t        |d¬«      \  }}t         ||«      |j                  |«      d¬«       y )Nrh   ©rW   rV   rÑ   re  r\   rz   rH  rI  s          rY   rJ  z.TestMakeSplprepPeriodic.test_default_s_is_zeroŸ  sB   € Ø—-‘- "¨�-Ó,‰ˆˆ1ˆaä˜a¨Ô4‰ˆˆQÜ™˜A› §¡¨£°%Ö8rn   c                 ó<  — | j                  d|¬«      \  }}}t        |dd¬«      \  }}t        |dd¬«      \  }}t        ||d¬«       |j                  |«      }	t         ||«      |	d¬«       t         ||«      |	d	d
¬«       |j                  |j                  k(  sJ ‚y )Nrh   rZ  r   rÑ   rÏ  rÒ   r\   rz   r½   r@  r]   )r;  r&   r   r�   r  )
rU   rV   r}   r    r6   rÜ  rL  rM  rN  Úy_arrs
             rY   rO  z0TestMakeSplprepPeriodic.test_s_zero_vs_near_zero¥  s�   € à—-‘- "¨�-Ó,‰ˆˆ1ˆaä! ! q°*Ô=‰
ˆˆsÜ! ! u°jÔA‰
ˆˆsä˜˜S uÕ-à—‘˜“ˆÜ™˜c›
 E°Õ6Ü™˜c›
 E°¸4Õ@Ø�z‰z˜UŸZ™ZÒ'Ð'Ñ'rn   c                 ó$  — t        j                  ddt         j                  z  d«      }t        j                  |«      }t	        t
        «      5  t        |d¬«       d d d «       t	        t
        «      5  t        |dd¬«       d d d «       t	        t
        «      5  t        |dd¬«       d d d «       t        |gd	d¬«      \  }} ||«      j                  d
k(  sJ ‚t         ||«      |gd	¬«       y # 1 sw Y   Œ”xY w# 1 sw Y   ŒzxY w# 1 sw Y   Œ`xY w)Nr   r;   rÐ   r0   r°  rÑ   rÏ  r«  r\   rQ  rz   )
rM   ri   r¸  r”  rI   rK   r   r&   r®   r   )rU   r}   r9  r  s       rY   r–  zTestMakeSplprepPeriodic.test_1D³  sä   € Ü�K‰K˜˜1œRŸU™U™7 AÓ&ˆÜ�F‰F�1‹IˆÜœ:Ó&ñ 	Ü�A˜1Õ÷	ô œ:Ó&ñ 	5Ü˜˜a¨Õ4÷	5ô œ:Ó&ñ 	7Ü˜˜c¨:Õ6÷	7ô ˜q˜c U°JÔ?‰ˆˆQá�1‹v�|‰|˜vÒ%Ð%Ð%Ü™˜A›  ¨%Ö0÷	ð 	ú÷	5ð 	5ú÷	7ð 	7ús$   ÁC.Á2C:ÂDÃ.C7Ã:DÄDNrR  r+  rn   rY   rT  rT  _  sm   „ ð ˜q Ró ð
 ‡[�[×Ñ˜SÒ"7Ó8ñ0ó 9ð0ð0 ‡[�[×Ñ˜SÒ"7Ó8ñCó 9ðCò<9ò(ó1rn   rT  c                   ó,   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚBatchSplinec                óæ   — t        j                  ||d«      }|j                  d d | _        |j	                  d|j                  d   «      D �cg c]  } |||fi |¤Ž‘Œ c}| _        || _        y c c}w ©Nr9   )rM   Úmoveaxisr®   Ú_batch_shaper‡   Ú_splinesÚ_axis)rU   r}   r    r  r3  ÚkwargsÚyis          rY   r	  zBatchSpline.__init__Ç  se   € Ü�K‰K˜˜4 Ó$ˆØŸG™G C R˜LˆÔØ;<¿9¹9ÀRÈÏÉÐQSÉÓ;UÖV°R™  2Ñ0¨Ó0ÒVˆŒØˆ�
ùò Ws   ÁA.c                 ó  — | j                   D �cg c]
  } ||«      ‘Œ }}t        j                  || j                  |j                  z   «      }|j                  r!t        j
                  |d| j                  «      S |S c c}w ra  )rd  rM   r‡   rc  r®   rb  re  )rU   r}   r3  r    s       rY   rŽ  zBatchSpline.__call__Í  sc   € Ø%)§]¡]Ö3˜6‰V�A�YÐ3ˆÐ3Ü�J‰J�q˜$×+Ñ+¨a¯g©gÑ5Ó6ˆØ12·²Œr�{‰{˜1˜b $§*¡*Ó-Ð?¸aÐ?ùò 4s   �A<Nc                 ó    — | j                   D �cg c]  }|j                  |||«      ‘Œ }}t        j                  || j                  «      S c c}w r×  )rd  r  rM   r‡   rc  )rU   rŸ  rX   r†   r3  r    s         rY   r  zBatchSpline.integrateÒ  sE   € Ø?C¿}¹}ÖM°VˆV×Ñ˜a  KÕ0ÐMˆÐMÜ�z‰z˜!˜T×.Ñ.Ó/Ð/ùò Ns   �Ac                 ó–   — t        j                  | «      }|j                  D �cg c]  }|j                  |«      ‘Œ c}|_        |S c c}w r×  )r  Údeepcopyrd  r  ©rU   rß   r#  r3  s       rY   r  zBatchSpline.derivativeÖ  s<   € Ü�m‰m˜DÓ!ˆØ<?¿L¹LÖI°&˜×)Ñ)¨"Õ-ÒIˆŒØˆ
ùò Jó   ¤Ac                 ó–   — t        j                  | «      }|j                  D �cg c]  }|j                  |«      ‘Œ c}|_        |S c c}w r×  )r  rk  rd  r  rl  s       rY   r  zBatchSpline.antiderivativeÛ  s<   € Ü�m‰m˜DÓ!ˆØ@CÇÁÖM°f˜×-Ñ-¨bÕ1ÒMˆŒØˆ
ùò Nrm  r×  )r(  r)  r*  r	  rŽ  r  r  r  r+  rn   rY   r_  r_  Å  s   „ òò@ó
0òó
rn   r_  c            
       óþ   — e Zd Zej                  j                  dei fei feddifeddifeddifg«      ej                  j                  dg d¢«      ej                  j                  d	g d
¢«      d„ «       «       «       Z	y)Ú	TestBatchzmake_spline, kwargsra  r2   rÈ  rÉ  rÊ  Ú
eval_shape)r+  ©r0   r�  r  rË  c                 ó˜  — t         j                  j                  d«      }d}ddd|f}d}t        j                  g |¢|‘­Ž }	t        j                  |j                  |«      d|«      }
|t
        k(  r+d}|	d   f|d	z   z  |	d   f|d	z   z  z   }|t        ||¬
«      z  } ||	|
fd|i|¤Ž}t        |	|
f||dœ|¤Ž} |j                  |d|iŽ}	t         j                  j                   ||	«       ||	«      «       |j                  d	«      |j                  d	«      }}t         j                  j                   ||	«       ||	«      «       |j                  d«      |j                  d«      }}t         j                  j                   ||	«       ||	«      «       t         j                  j                   |j                  |Ž  |j                  |Ž «       y )Nl   ®UUû{ rh   r;   r=   r>   )r   rh   r9   r   r0   )r4   r6   r  )r  r3  r«   )rM   rT   r§  ri   rb  r   rL   r_  r¨  ÚtestingÚassert_allcloser  r  r  )rU   Úmake_splinerf  r  rq  rŸ   rW   r®   Údomainr}   r    r6   r4   r#  Úrefs                  rY   Ú
test_batchzTestBatch.test_batchâ  s¡  € ô �i‰i×#Ñ#Ð$4Ó5ˆØˆØ�A�q˜!�ˆØˆä�K‰KÐ#˜Ð# Ò#ˆÜ�K‰K˜Ÿ
™
 5Ó)¨2¨tÓ4ˆàœ/Ò)ØˆAØ�1‘�˜1˜q™5Ñ! Q r¡U H°°A±Ñ$6Ñ6ˆAØœd Q¨!œnÑ,ˆFá˜!˜QÑ4 TÐ4¨VÑ4ˆÜ˜!˜QÐH T°+ÑHÀÑHˆàˆC�K‰K˜Ð1 jÑ1ˆÜ
�
‰
×"Ñ"¡3 q£6©3¨q«6Ô2à×%Ñ% aÓ(¨#×*<Ñ*<¸QÓ*?ˆSˆÜ
�
‰
×"Ñ"¡3 q£6©3¨q«6Ô2à—>‘> !Ó$ c§n¡n°QÓ&7ˆSˆÜ
�
‰
×"Ñ"¡3 q£6©3¨q«6Ô2ä
�
‰
×"Ñ" = 3§=¡=°&Ð#9¸=¸3¿=¹=È&Ð;QÕRrn   N)
r(  r)  r*  rc   rˆ  r‰  r   r   r   ry  r+  rn   rY   rp  rp  á  s˜   „ Ø‡[�[×ÑÐ2Ø
˜bÐ	!Ø
 Ð	$Ø
 %¨ Ð	.Ø
˜H iÐ0Ð	1Ø
˜H dÐ+Ð	,ð		óð ‡[�[×Ñ˜\Ò+;Ó<Ø‡[�[×Ñ˜V¢ZÓ0ñSó 1ó =óñSrn   rp  r  r�  rr  )}rL  r  r†  r  r‘  r|  r  râ  r‹  ÚnumpyrM   Úscipy._lib._array_apir   r   r   r   r   r   r	   r
   Úscipy._external.array_api_extraÚ	_externalÚarray_api_extrar˜  rc   r   rI   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#   r$   r%   r&   Úscipy.interpolate._fitpack_implr  Ú_fitpack_implr  Úscipy._lib._utilr'   Úscipy._lib._testutilsr(   Úscipy.interpolate._ndbspliner)   r*   rX  r+   rS  r,   rˆ  r†  r‡  r.   r�  rÎ  rÑ  r�   r‘   rõ   r{   rò   ra   rÍ  r  rE  r­  rÇ  r‰  r  rÌ  r  r$  r  r(  r*  rR  rT  rv  r,  rW  r|  r‘  r  rQ  rw  r  r�  r¼  r¾  rË  r  r%  r9  rT  r_  rp  r+  rn   rY   ú<module>r‡     sK  ðÛ 	Û Û Û Û Û Û Û Û 
ã ÷÷ ó ÷ .Ð -Ý *Û ÷÷ ÷ ÷ õ õ
 ß !Ð !÷Eõ E÷ Bç GÑ Gç /Ð /Ý &Ý 9õ 5å 2Ý -Ý &à—;‘;×/Ñ/Ð Ø—K‘K×1Ñ1Ð ñ �7Ó÷t
)ð t
)ó ðt
)ñn �G˜]Ð+Ó,÷W$ð W$ó -ðW$òt6ò,ò$Gò>òð ó óð$   bó +ò÷$_)ñ _)ñD Ð%Ó&÷`?ð `?ó 'ð`?òFó8ð8 !Ÿ+™+×1Ñ1°(¸YÈÐ<MÓNÐ ñ �?Ó#÷~:ð ~:ó $ð~:÷Bñ ó>*òZ	ò÷(nLñ nLòb*ñ
 Ð(Ó)÷J3ð J3ó *ðJ3ò^
òò7÷:"ñ :"ñz �9Ó÷j4ð j4ó ðj4÷ZWGñ WG÷ta ñ a òLò(ñ. �>Ó"÷lð ló #ðlò^÷2,ñ ,÷^Q7ñ Q7ñh �;ÓôR/Ð(ó R/ó  ðR/ñj �;Óô\0Ð0ó \0ó  ð\0ñ~ �<Ó ÷h1ð h1ó !ðh1ñV �<Ó ÷b1ð b1ó !ðb1÷Jñ ÷8$Sò $Srn   