Ë
    qwjfW ã                   ó0  — 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 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l.m/c m,Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9 d dlm:Z:m;Z;m<Z< d dl=m>c m?Z@ d dlAmBZB d d	lCmDZD d d
lEmFZF d dlmGZH d dlmIZJ d dlmKZK ej˜                  jš                  ZM ee«       G d„ d«      «       ZN ee«       G d„ d«      «       ZOd„ ZPd„ ZQd„ ZRd„ ZSd„ ZTe
fd„ZUdRd„ZVdde
fd„ZWd„ ZX G d„ d«      ZY ee«       G d„ d «      «       ZZd!„ Z[dSd"„Z\ej˜                  j»                  d#d$d%g«      Z^ ee«       G d&„ d'«      «       Z_ G d(„ d)«      Z`dTd*„Zad+„ Zbd,„ Zc G d-„ d.«      Zdd/„ Ze ee)«       G d0„ d1«      «       Zfd2„ Zgd3„ Zhd4„ Zi G d5„ d6«      Zj ee(«       G d7„ d8«      «       Zk G d9„ d:«      Zl G d;„ d<«      Zmd=„ Znd>„ Zo ee:«       G d?„ d@«      «       ZpdA„ Zq G dB„ dC«      Zr G dD„ dE«      Zs ee;«       G dF„ dGes«      «       Zt ee;«       G dH„ dIes«      «       Zu ee<«       G dJ„ dK«      «       Zv ee<«       G dL„ dM«      «       Zw G dN„ dO«      Zx G dP„ dQ«      Zyy)Ué    N)Úxp_assert_equalÚxp_assert_closeÚxp_default_dtypeÚ	concat_1dÚmake_xp_test_caseÚxp_ravel)Ú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)Ú	_dfitpack)Ú	_bsplines)Ú_dierckxc                   ó  — e 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d„ Zd„ Zd„ Zd„ Zd „ Zd!„ Zd"„ Zd#„ Zd$„ Z d%„ Z!e"jF                  jI                  d& e%d'd(«      «      d)„ «       Z&d*„ Z'd+„ Z(e"jF                  jI                  d,g d-¢«      e"jF                  jI                  d. e%d/«      «      d0„ «       «       Z)d1„ Z*d2„ Z+d3„ Z,e"jF                  jI                  d4g d5¢«      d6„ «       Z-e"jF                  jI                  d4g d5¢«      d7„ «       Z.d8„ Z/d9„ Z0d:„ Z1e"jF                  je                  e3jh                  d;k(  d<e5¬=«      d>„ «       Z6y?)@Ú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   r.   é   ©r   r.   r9   é   é   r9   )ç        r=   r0   ç       @ç      @ç      @)r0   r0   r0   Úcubicç      @)r=   r   r.   r.   r9   r;   )r0   r.   r.   ©é   r;   ©Údtype)Úassert_raisesÚ	TypeErrorÚ
ValueErrorr
   ÚdictÚnpÚerrstateÚnanÚinfÚarangeÚfloat64ÚasarrayÚrandomr   r2   r3   r4   )ÚselfÚxpÚnr4   r2   r3   Úbs          új/var/www/html/newmanjeet/manjet/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_bsplines.pyÚ	test_ctorzTestBSpline.test_ctor4   sè  € ä”y¤*Ð-¬wñ 	1Ü˜!˜S˜ b T¨QÔ/ò	1ä�[‰[ Ö*Üœ*¤gÑR´¸¼B¿F¹F¸ÈÀtÈqÔ1QÒR÷ +ä”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   Á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Úrtolr.   r9   Úfoo)	Ú_make_random_splineÚtckr   r2   r3   r4   Úpytestr	   ÚAttributeError)rS   rV   r`   s      rW   Útest_tckzTestBSpline.test_tckW   st   € ÜÓ!ˆØ�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   r0   r9   r?   r<   r   r1   r9   é
   r0   rE   r@   )r
   rQ   ÚlinspaceÚwhererP   r   )rS   rT   rV   ÚxxÚexpecteds        rW   Útest_call_namespacezTestBSpline.test_call_namespacec   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                  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   r.   re   r?   r1   )r   çffffffÖ?r.   r;   r<   rm   r@   )rK   rf   r
   r   Ú	ones_likerg   )rS   rh   rV   s      rW   Útest_degree_0zTestBSpline.test_degree_0l   su   € Ü�[‰[˜˜A˜rÓ"ˆä�q˜!�f  ¨Ô*ˆÜ™˜"›œrŸ|™|¨BÓ/°#Ñ5Ô6ä’l q¨! f°Ô2ˆÜ™˜"›œrŸx™x¨¨T©	°3¸Ó<Õ=rk   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        j                   |||f«      \  }}}	t        |||	|f«      }
t	         ||«      |j                  |
«      d¬«       y )Nr:   )r0   r9   r;   r.   r0   r?   é2   rE   r   ©rT   r9   ç›+¡†›„=©r\   )	rQ   r
   rf   rP   r   ÚB_012ÚmaprK   r   )rS   rT   r2   r3   r4   rV   ÚxÚx_npÚt_npÚc_npÚsplev_results              rW   Útest_degree_1zTestBSpline.test_degree_1u   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Øõ	
ô
 œrŸz™z¨A¨q°!¨9Ó5Ñˆˆd�DÜ˜T D¨$° ?Ó3ˆÜ™˜!›˜bŸj™j¨Ó6¸UÖCrk   c                 óH  — d}|j                  dg|dz   z  dg|dz   z  z   «      }|j                  g d¢«      }t        |j                  |d«      |j                  ddg«      «      }t        |||«      }|j	                  ddd«      }t         ||d	¬
«       ||d	¬
«      d¬«       y )Nr;   r   r.   ©r0   r>   r?   r@   )r7   r.   g      ð¿r>   re   T©Úextrapolaters   rt   )rQ   r   Úreshaper
   rf   r   )rS   rT   r4   r2   r3   ÚbpÚbsplrh   s           rW   Útest_bernsteinzTestBSpline.test_bernstein…   sŸ   € àˆØ�J‰J˜�s˜A˜a™C‘y A 3¨¨!©¡9Ñ,Ó-ˆØ�J‰JÒ'Ó(ˆÜ�2—:‘:˜a Ó)¨2¯:©:°q¸!°fÓ+=Ó>ˆÜ�q˜!˜QÓˆà�[‰[˜˜b "Ó%ˆÜ™˜2¨4Ô0Ù˜R¨TÔ2¸ö	@rk   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 )Nrr   r.   rq   rs   rt   )r_   r`   rf   ÚstackÚ_naive_evalr   Ú_naive_eval_2)rS   rT   rV   r2   r3   r4   rh   Úy_brw   Úy_nÚy_n2s              rW   Ú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Á2¸aœ q¨!¨Q°°bÖ9À2ÑFÓGˆÜ˜˜T¨Ö.ùò	 Dùò Gs   ÁB9ÂB>c           	      ó¼   — t        «       }|j                  \  }}}t        j                  ||   || dz
     d«      }t	         ||«      t        ||||f«      d¬«       y )Nr.   rq   rs   rt   )r_   r`   rK   rf   r   r   ©rS   rV   r2   r3   r4   rh   s         rW   Útest_rndm_splevzTestBSpline.test_rndm_splev¡   sV   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›œu R¨!¨Q°¨Ó3¸%Ö@rk   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éÒ  é   r.   éP   rs   rt   )rK   rR   ÚRandomStateÚsortr   r
   r2   r4   rf   r   r   )	rS   Úrngrw   Úyr`   rV   r2   r4   rh   s	            rW   Ú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Ö:rk   c                 ó@  — t        |¬«      }|j                  |j                  «      |_        |j                  |j                  |j
                     |j                  |j
                   dz
     d|j                  ¬«      }t         ||«      |j                  |«      «       y )Nrr   r.   éd   rE   )r_   rn   r3   rf   r2   r4   rP   r   )rS   rT   rV   rh   s       rW   Ú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Ó/Õ0rk   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;   é   é   ©Úsizer.   ©r;   r<   é   )r;   r<   r§   r¢   r£   )rK   rR   r—   r˜   rv   rQ   r
   Úshape)rS   rT   r™   rU   r4   r2   r3   rV   ÚtmÚtprh   s              rW   Ú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Ò-Ð-Ñ-rk   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;   r.   r7   r   rq   rs   rt   )	rK   rR   r—   r˜   Úr_r
   rf   r   r   )rS   r™   rU   r4   r2   r3   Úc_padrV   Úb_padÚdtrh   s              rW   Ú
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ÖDrk   c           	      ó°   — t        «       }|j                  \  }}}||   || dz
     }}dD ])  }t         |||g|«       ||dz   |dz
  g|«      dd¬«       Œ+ y )Nr.   ©TFç»½×Ùß|Û=ç•Ö&è.>çH¯¼šò×z>r[   ©r_   r`   r   )	rS   Únum_parallel_threadsrV   r2   Ú_r4   r©   rª   Úextraps	            rW   Útest_endpointszTestBSpline.test_endpoints×   sl   € äÓ!ˆØ—%‘%‰ˆˆ1ˆaØ�1‘�q˜!˜˜A™‘wˆBˆã#ˆFÜ™A˜r 2˜h¨Ó/Ù˜r E™z¨2°©:Ð6¸Ó?ÀdÐQUöWñ $rk   c           	      ó    — t        «       }|j                  \  }}}t         |||dz   | dz
   dz
  «       |||dz   | dz
   dz   «      d¬«       y )Nr.   rµ   r¶   rt   r¸   )rS   r¹   rV   r2   rº   r4   s         rW   Útest_continuityzTestBSpline.test_continuityá   s\   € äÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ™˜!˜A˜a™C   1¡˜+¨Ñ-Ó.±°!°A°a±C¸¸¸1¹°+ÀÑ2EÓ0FØö	rk   c                 ó°  — t        |¬«      }|j                  \  }}}|d   |d   z
  }|j                  ||   |z
  || dz
     |z   d«      }||   |k  ||| dz
     k  z  }t         |||   d¬«       |||   d¬«      «       t	        t
        j                  |||f«      \  }	}
}|j                  t        |	|
||fd¬	«      «      }t         ||d¬«      |«       y )
Nrr   r7   r   r.   rq   Tr   F)Úext)r_   r`   rf   r   rv   rK   rQ   r   )rS   rT   rV   r2   r3   r4   r±   rh   ÚmaskÚxx_npry   rz   r{   s                rW   Ú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ô  ¤§
¡
¨R°°A¨JÓ7Ñˆˆt�TØ—z‘z¤%¨°°d¸A¨ÀAÔ"FÓGˆÜ™˜"¨$Ô/°Õ>rk   c                 ó¼   — t        «       }|j                  \  }}}|d   dz
  |d   dz   g} ||«      }t        j                  t        j                  |«      «      rJ ‚y )Nr   r.   r7   )r_   r`   rK   ÚallÚisnan)rS   rV   r2   rº   r4   rh   Úyys          rW   Útest_default_extrapzTestBSpline.test_default_extrapø   sY   € äÓ!ˆØ—%‘%‰ˆˆ1ˆaØ�‰d�Q‰h˜˜"™ ™	Ð"ˆÙˆr‹UˆÜ—6‘6œ"Ÿ(™( 2›,Ô'Ð'Ð'Ð'rk   c                 óf  — 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         j
                  |
||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   r.   r7   rq   çê-�™—q=gH¯¼šò×Š>rt   )r7   r   ç      à?r.   Trs   g�íµ ÷Æ >)rK   rR   r—   r˜   rv   rQ   r
   r¨   rf   r   rP   r   r   )rS   rT   r™   r2   r3   r4   rV   rU   r±   rh   ÚxyÚxy_npry   rz   r\   s                  rW   Ú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©$¡;Ñ/Ñ/ˆÜ¤§
¡
¨R°°A¨JÓ7Ñˆˆ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ö	
rk   c                 óÚ   — t        «       }|j                  \  }}}t        j                  |||f«      }t	        j
                  ||   ||    d«      }t         ||«       ||«      dd¬«       y )Nr�   rs   r[   )r_   r`   r   Úfrom_splinerK   rf   r   )rS   rV   r2   r3   r4   Úpprh   s          rW   Ú
test_ppolyzTestBSpline.test_ppoly  sa   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ×Ñ  1 a˜yÓ)ˆä�[‰[˜˜1™˜q ! ™u cÓ*ˆÜ™˜"›™r "›v¨E¸Ö>rk   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   r7   rq   r.   ©Úder©Únurs   rt   )	r_   r`   rK   rf   r®   Úranger   r   Ú
zeros_like)rS   rV   r2   r3   r4   rh   r×   Úyds           rW   Ú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ÖErk   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 )Nr9   )r7   r7   r   r.   r.   r;   r<   r¢   r¢   r¢   r£   r£   r”   r   r§   )r.   r;   r<   r¢   r¢   rµ   g2Hþÿÿÿ@gÎ·   @r;   r<   r.   rØ   )rK   rR   r—   r®   r
   rQ   r   Úallclose)	rS   r4   r2   r™   r3   rV   rw   Úx0Úx1s	            rW   Útest_derivative_jumpsz!TestBSpline.test_derivative_jumps0  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ÐFrk   c           	      óð  — |j                  ddd«      }t        j                  |j                  g d¢«      ¬«      }t	        t
        j                  ||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 )Nr7   r<   r•   ©r   r.   r9   r;   )r2   rs   rt   r·   rE   ©r   r.   r.   r9   r   r9   re   r.   r>   )rf   r
   Úbasis_elementrQ   rv   rK   r2   r3   r   r4   r   r   rP   ÚB_0123rg   )	rS   rT   rh   rV   rÂ   ry   rz   r{   r\   s	            rW   Útest_basis_element_quadraticz(TestBSpline.test_basis_element_quadraticJ  s"  € Ø�[‰[˜˜Q Ó#ˆÜ×!Ñ! B§J¡Jª|Ó$<Ô=ˆä¤§
¡
¨R°·±°a·c±c¨NÓ;Ñˆˆ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rk   c           	      óº   — t        «       }|j                  \  }}}t        j                  ||   || dz
     d«      }t	         ||«      t        ||||«      d¬«       y )Nr.   r•   rs   rt   )r_   r`   rK   rf   r   Ú_sum_basis_elementsr‘   s         rW   Útest_basis_element_rndmz#TestBSpline.test_basis_element_rndmZ  sU   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaÜ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›Ô2°2°q¸!¸QÓ?ÀeÖLrk   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      ð?      @r.   r•   rs   rt   )	r_   r`   r
   r3   ÚrealÚimagrK   rf   r   )	rS   rV   r2   r3   r4   ÚccÚb_reÚb_imrh   s	            rW   Ú
test_cmplxzTestBSpline.test_cmplx`  s¬   € ÜÓ!ˆØ—%‘%‰ˆˆ1ˆaØ�(‰^ˆä�A�r˜1ÓˆÜ�q˜!Ÿ#™#Ÿ(™( AÓ&ˆÜ�q˜!Ÿ#™#Ÿ(™( AÓ&ˆä�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ™˜"›Ÿ
™
¡D¨£H°5Õ9Ü™˜"›Ÿ
™
¡D¨£H°5Ö9rk   c                 ó–   — t        j                  |j                  g d¢«      «      }|j                   ||j                  «      «      sJ ‚y )Nrå   )r
   ræ   rQ   rÆ   rM   )rS   rT   rV   s      rW   Útest_nanzTestBSpline.test_nanm  s5   € ä×!Ñ! "§*¡*ª\Ó":Ó;ˆØ�x‰x™˜"Ÿ&™&›	Ô"Ð"Ñ"rk   c                 ó  — t        d|¬«      }|j                  \  }}}t        |||«      }|j                  ||   || dz
     d«      }t	        d|«      D ].  }|j                  «       }t         |||«       ||«      dd¬«       Œ0 y )Nr§   )r4   rT   r.   r•   rÌ   r[   )r_   r`   r
   rf   rÚ   Ú
derivativer   )	rS   rT   rV   r2   r3   r4   Úb0rh   Újs	            rW   Útest_derivative_methodz"TestBSpline.test_derivative_methodr  s~   € Ü !¨Ô+ˆØ—%‘%‰ˆˆ1ˆaÜ�Q˜˜1ÓˆØ�[‰[˜˜1™˜q !  A¡™w¨Ó+ˆÜ�q˜!–ˆAØ—‘“ˆAÜ™B˜r 1›I¡q¨£u°5¸uÖEñ rk   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 )Nrr   r.   r•   rs   r[   ©Úaxisr9   )r_   r`   rf   r   Úantiderivativerö   r‰   r
   )rS   rT   rV   r2   r3   r4   rh   s          rW   Ú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°ö	7rk   c           	      ó¼	  — 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|j                  «      d¬«      sJ ‚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 )Nr8   r   r.   rÍ   rs   ©Úabs_tolç      à¿r7   r=   Tr   FrË   r9   rE   i÷ÿÿÿiùÿÿÿiøÿÿÿéüÿÿÿç      ø?r;   g      +@é   r¢   iöÿÿÿr<   )r
   ræ   rQ   ÚmathÚiscloseÚ	integrateÚ_implr   r`   r€   rý   rP   r   )rS   rT   rV   ÚiÚ
period_ints        rW   Ú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°·±Ó6ÀõGð 	Gð Gð #ˆŒØ×ÑÓˆØ—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rk   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  )rS   rw   rV   Úprà   rá   s         rW   Útest_integrate_ppolyz TestBSpline.test_integrate_ppoly¶  s[   € âˆÜ˜q !Ó$ˆØ"ˆŒÜ×Ñ˜aÓ ˆã5‰FˆB�Ü˜AŸK™K¨¨BÓ/ØŸK™K¨¨BÓ/õ1ñ 6rk   c                 óÂ   — t        j                  g d¢«      }dD ]C  }|j                  dd|¬«      }t        |t        j
                  «      sJ ‚|j                  dk(  rŒCJ ‚ y )Nr8   r´   r   r.   r   )r
   ræ   r  Ú
isinstancerK   ÚndarrayÚndim)rS   rV   r€   Úress       rW   Útest_integrate_0D_alwaysz$TestBSpline.test_integrate_0D_alwaysÁ  sT   € ä×!Ñ!¢)Ó,ˆÛ(ˆKØ—+‘+˜a °�+Ó<ˆCÜ˜c¤2§:¡:Ô.Ð.Ð.Ø—8‘8˜q“=Ð �=ñ )rk   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__© rk   rW   ÚBr  Ë  s   „ Ørk   r  )r   r.   r9   r9   )r
   ræ   Ú	__class__rö   rý   )rS   r  rV   s      rW   Útest_subclassingzTestBSpline.test_subclassingÉ  sg   € ô	”ô 	ð �O‰OšLÓ)ˆØ�{‰{˜aÒÐÐØ�|‰|‹~×'Ñ'¨1Ò,Ð,Ð,Ø×ÑÓ!×+Ñ+¨qÒ0Ð0Ñ0rk   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   r.   ©r¢   r£   rÊ   r<   r”   r¤   rû   r¦   )r2   r3   r4   rü   r9   )rf   r   ÚtuplerK   rR   r—   rQ   r
   r3   r¨   r  rG   r%   rJ   rö   rý   rü   )rS   rü   rT   rU   r4   r2   ÚshÚpos_axisr™   r3   rV   ÚaxÚb1s                rW   Ú	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Ó$Ð$Ð$ñ	Brk   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 )
Nr9   )r   r.   r9   r;   r<   r§   r¢   )r7   r9   r   r7   )r9   r   éýÿÿÿr.   r7   rû   r   r.   rB   )rQ   r
   r   r‰   )rS   rT   r4   r2   r3   ÚsplÚspl0Úspl1s           rW   Ú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ÕCrk   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Ë   r7   r   ©r4   Úbc_typer.   rs   rt   N)rK   rR   r—   r˜   Úrandom_sampler   ÚeyeÚlenr2   r
   Údesign_matrixÚtoarrayr   r3   )
rU   r4   r4  r™   rw   rš   rƒ   r3   Údes_matr_defÚdes_matr_csrs
             rW   Ú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ÖCrk   rD   r;   ©ÚclampedÚnaturalrÊ   r9   ú
not-a-knotr§   r£   rË   N)rÚ   )rS   r<  rU   r4   Úbcs        rW   Útest_design_matrix_bc_typesz'TestBSpline.test_design_matrix_bc_typesû  sm   € ò	Dð* ˆØˆÛ(ˆBÙ# A q¨"Õ-ð )ô �q˜!˜Q–ˆAÙ# A q¨,Õ7ð  ð ˆÜ�q˜!–ˆAÙ# A q¨*Õ5ñ rk   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”   re   r.   r9   r  N)rK   rR   r—   r5  ÚaminÚamaxr®   rf   r6  r7  r
   r   r8  r9  Úarrayra   r	   rI   )rS   r€   rC  r™   rw   ÚxminÚxmaxr4   r2   r3   Úbsplines              rW   Ú'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”   re   r;   r2  r•   ©r4   r.   r<   rs   rt   )rK   rR   r—   r˜   r5  r   rÚ   r
   r8  r2   r9  r   r3   )rS   r™   rU   r4   rw   rš   rƒ   r
  ÚxcÚycr;  s              rW   Útest_design_matrix_x_shapesz'TestBSpline.test_design_matrix_x_shapesA  sÎ   € ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-°Ñ2Ó3ˆØ×Ñ˜aÓ  2Ñ%¨Ñ*ˆä! ! Q¨!Ô,ˆÜ�q˜!–ˆAØ�2�A�ˆBØ�2�A�ˆBÜ"×0Ñ0°Ø15·±Ø12ó4ç4;±G³Ið ô ˜L¨4¯6©6Ñ1°2¸EÖBñ rk   c                 óx   — g d¢}t        j                  d|d«      j                  «       }t        |g d¢gd¬«       y )N)r0   r0   r0   r>   r?   r@   r@   r@   r>   r;   )g      Ð?gm‰à¨ªªâ?gKÚ}\UUÅ?r=   rs   rt   )r
   r8  r9  r   )rS   r2   Údes_matrs      rW   Útest_design_matrix_t_shapesz'TestBSpline.test_design_matrix_t_shapesR  s7   € â,ˆÜ×(Ñ(¨¨Q°Ó2×:Ñ:Ó<ˆÜ˜Ú;Ð<Ø"ö	$rk   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”   re   r;   r2  r•   rM  r7   r9   )r=   r0   r>   r?   r@   ç      @r~   )rK   rR   r—   r˜   r5  r   rG   rI   r
   r8  r2   )rS   r™   rU   r4   rw   rš   rƒ   r2   s           rW   Útest_design_matrix_assertsz&TestBSpline.test_design_matrix_assertsZ  sÛ   € Ü�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-°Ñ2Ó3ˆØ×Ñ˜aÓ  2Ñ%¨Ñ*ˆÜ! ! Q¨!Ô,ˆô œ:Õ&Ü×!Ñ! ! T§V¡V©D¨b¨D¡\°1Ô5÷ 'àˆÚ$ˆÚˆäœ:Õ&Ü×!Ñ! ! Q¨Ô*÷ 'Ð&÷ 'Ð&ú÷ 'Ð&ús   Â(C,ÃC8Ã,C5Ã8Dr4  )r?  r>  rË   r@  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   r7   ©r4  r.   rZ   rt   )rK   rR   r—   r˜   r   r
   Úfrom_power_basisrf   r   r   r3   )	rS   r4  r™   rw   rš   Úcbrƒ   rh   Úbspl_news	            rW   Útest_from_power_basisz!TestBSpline.test_from_power_basisl  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Ô<ˆÜ˜Ÿ™ §
¡
°Ö7rk   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•   r/   rË   r   r7   rX  rZ   rt   )rK   rR   r—   r˜   r   r
   rY  r   rí   rî   r   r3   )	rS   r4  r™   rw   rš   rZ  rƒ   Úbspl_new_realÚbspl_new_imags	            rW   Ú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ÖSrk   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:   )r.   r.   r.   r.   r.   r?  rX  )r0   r.   r.   r.   r.   r.   r.   rZ   rt   N)rK   rG  r
   rY  r   r   r3   )rS   rw   rš   rƒ   s       rW   Útest_from_power_basis_exmpz&TestBSpline.test_from_power_basis_exmp‹  sO   € ô �H‰H’_Ó%ˆÜ�H‰H’_Ó%ˆÜ×'Ñ'¬°A°qÀ)Ô(LØ09ô;ˆä˜Ÿ™Ò 7¸eÖDrk   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   r.   r?   F©Úwritere   r1   )rK   rG  Úsetflagsrf   r
   r   rn   )rS   r2   r3   rh   rV   s        rW   Útest_read_onlyzTestBSpline.test_read_onlyž  s‰   € ä�H‰H�a˜�VÓˆÜ�H‰H�c�U‹OˆØ	�
‰
˜ˆ
ÔØ	�
‰
˜ˆ
Ôä�[‰[˜˜A˜rÓ"ˆØ
�‰˜%ˆÔ ä�a˜1 Ô"ˆÜ™˜"›œrŸ|™|¨BÓ/°#Ñ5Õ6rk   c                 óB   ‡— t        ‰¬«      }ˆfd„}t        d||«       y )Nrr   c                 óp   •— |j                   \  }} }‰j                  ||   || dz
     d«      } ||«       y )Nr.   i'  )r`   rf   )rº   rV   r2   r4   rh   rT   s        €rW   Ú	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�Erk   re   )r_   r&   )rS   rT   rV   rj  s    `  rW   Útest_concurrencyzTestBSpline.test_concurrency«  s    ø€ ä 2Ô&ˆô	ô
 	   I¨qÕ1rk   Ú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   r.   re   r2   z.datzw+)ÚmoderF   r¨   r3   )r_   rK   rf   Ú	threadingÚget_native_idÚmemmapÚstrÚjoinr2   rF   r¨   r3   r   )rS   ÚtmpdirrV   rh   ri   ÚtidÚt_mmÚc_mms           rW   Ú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Õ(rk   N)7r  r  r  rX   rc   rj   ro   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  r  r!  ra   ÚmarkÚparametrizerÚ   r)  r/  rB  rK  rP  rS  rV  r\  r`  rb  rg  rk  ÚxfailÚsysÚplatformrb   rx  r  rk   rW   r,   r,   1   s  „ ò!òF
ò)ò>òDò 
@ñ �lÐ+OÔPÙ�kÐ*KÔLÙ�g kÔ2ñ/ó 3ó Mó Qð/òAò
;ò1ò	.òEò&Wòò?ò (ò
ò6?òFòGò4Aò Mò:ò#ò
Fò7ò+BòZ	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Øð ó ñ
)óñ
)rk   r,   c                   ó>  — 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=   r0   rB   r<   ç      @ç      @c           	      óº  — |j                  d|j                  ¬«      }|j                  |«      dz  }t        ||d¬«      }|j                  |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Ê   rE   r;   rM  rZ   rt   r.   r7   rÍ   rû   )rO   rP   Úsinr   Ú_tÚ_cr4   r
   r   Úinsert_knotr   r2   rQ   r3   ÚconcatÚcosr‰   )rS   r�  rT   rw   rš   r,  r`   Úspl_1fÚspl_1rh   Úy1Úspl_y1Úspl_yyÚspl_yy1s                 rW   Útest_insertzTestInsert.test_insert×  s  € ð �I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1‹I�q‰LˆÜ   A¨Ô+ˆà�v‰v�s—v‘v˜sŸu™uÐ%ˆÜœ&  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Ö<rk   zxval, m))r=   r9   )r0   r;   )r  r§   )r<   r9   )rƒ  r9   c           	      ó†  — |j                  d|j                  ¬«      }|j                  |«      dz  }t        ||d¬«      }t	        t        ||j                  |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Ê   rE   r;   rM  ©ÚmrZ   rt   r.   r7   rÍ   )rO   rP   r…  r   r
   r   r†  r‡  r4   rˆ  r   r2   rQ   r3   r‰  )
rS   r�  r”  rT   rw   rš   r,  r‹  rŒ  rh   s
             rW   Útest_insert_multizTestInsert.test_insert_multiü  s  € ð �I‰I�a˜rŸz™zˆIÓ*ˆØ�F‰F�1‹I�q‰LˆÜ   A¨Ô+ˆäœ& ¨¯©°·±¸¿¹Ð'>À!ÔDÐEˆØ—‘  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£°Ö7rk   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  rC   r.   r¤   r;   r9   )ÚlowÚhighr­   ©r˜  r™  r¥   rZ   rt   )	rK   rR   Údefault_rngrQ   r˜   Úuniformr
   rˆ  r   )rS   rT   r™   rU   r4   r2   r3   r,  ÚxvrŒ  rh   s              rW   Ú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£°Ö7rk   r�  )	r   çš™™™™™¹?r>   r@   ç      @ç      @ç      @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Ê   rE   r;   rM  rË   r   T©ÚperrZ   rt   r.   r”   r   r£   é)   rš  )rO   rP   r…  r   rv   rQ   r
   rˆ  r   r`   r   r2   r3   rK   rR   r›  rœ  r   )rS   r�  rT   rw   rš   r2   r3   r4   r,  rŒ  ÚtfÚcfrÂ   rh   s                 rW   Útest_insert_periodiczTestInsert.test_insert_periodic  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ÖUrk   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Ê   rE   r9   r/   r;   rM  ç      @rZ   rt   )rO   rP   rK   Úpir…  rŠ  r   r€   rˆ  r   r2   r3   )rS   r€   rT   rw   Úy_reÚy_imr,  Úspl_reÚspl_imr�  rŒ  Úspl_1reÚspl_1ims                rW   Útest_complexzTestInsert.test_complex0  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ÀÖFrk   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   r.   ©r9   r;   r<   r§   r£   rË   r   Tr¤  )	rK   rG  Úonesr7  r
   rG   rI   r   rˆ  )rS   r�  r4   r2   r3   r,  s         rW   Ú+test_insert_periodic_too_few_internal_knotsz6TestInsert.test_insert_periodic_too_few_internal_knotsG  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   r.   rµ  r£   r7   rÊ   r“  )rK   rG  r¶  r7  r
   rG   rI   rˆ  )rS   r4   r2   r3   r,  s        rW   Útest_insert_no_extrapz TestInsert.test_insert_no_extrap[  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  ra   rz  r{  r‘  r•  rž  r©  r³  r·  r¹  r  rk   rW   r€  r€  Ô  s»   „ ð ‡[�[×Ñ˜VÒ%AÓBñ!=ó Cð!=ðH ‡[�[×ÑØÒCóñ8óð8ò8ð ‡[�[×Ñ˜Tò $8ó ñVóðVð" ‡[�[×Ñ˜]¨T°:Ð,>Ó?ñGó @ðGò, ó($rk   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Í   r.   r7   zder = z  k = )r\   r]   Úerr_msg)r`   rK   Úuniquer®   r   r   r4   )	rV   rø   r×   r\   r]   r2   r3   r4   rw   s	            rW   Úcheck_splevz,test_knots_multiplicity.<locals>.check_splevo  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rk   ©r.   r9   r;   r<   r§   rM  r.   rÌ   )r   rs   rs   )r_   Ú	enumerateÚ_make_multiplesrÚ   )r¾  r4   rV   rø   r(  r×   s         rW   Útest_knots_multiplicityrÂ  k  sd   € óIó ˆÜ !Ô$ˆÜœ¨qÓ1Ö2‰EˆAˆrÙ˜˜AÔÜ˜Q  !¡–}�Ù˜B  3¨¨uÕ5ñ %ñ 3ñ rk   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   r.   r0   r=   ©Ú_naive_B©rw   r4   r
  r2   Úc1Úc2s         rW   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Ðrk   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!
    r.   r   c              3   óR   •K  — | ]  }‰‰|z
     t        ‰‰‰|z
  ‰«      z  –— Œ  y ­w©NrÄ  )Ú.0rø   r3   r
  r4   r2   rw   s     €€€€€rW   Ú	<genexpr>z_naive_eval.<locals>.<genexpr>ž  s.   øè ø€ ÐF¹°1ˆq��1‘‰vœ  A q¨¡s¨AÓ.Õ.¹ùs   ƒ$')Úsearchsortedr¨   ÚsumrÚ   )rw   r2   r3   r4   rT   r
  s   ```` @rW   rŠ   rŠ   “  sŠ   ü€ ð 	ˆAˆa‰D‚yØ‰à�O‰O˜A˜qÓ! AÑ%ˆàˆQ‰4�1Ô˜˜!˜A™#™ÒÐÑÐÐØ�Š6�a˜!Ÿ'™' !™* q™.Ò(Ð(Ð(Ü×F¼¸aÀÀ1Á¼ÓFÓFÐFrk   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   r.   c              3   óF   •K  — | ]  }‰|   t        ‰‰|‰«      z  –— Œ y ­wrË  rÄ  ©rÌ  r
  r3   r4   r2   rw   s     €€€€rW   rÍ  z _naive_eval_2.<locals>.<genexpr>§  s&   øè ø€ Ð=±H¨qˆq�‰t”h˜q ! Q¨Ó*Õ*±Hùó   ƒ!)r¨   rÏ  rÚ   )rw   r2   r3   r4   rT   rU   s   ````  rW   r‹   r‹   ¡  sr   û€ à	�‰�‰
�a˜‘cÑ€AØ��!‘Š8€Oˆ8Ø�7‰7�1‰:˜Š?Ðˆ?ØˆQ‰4�1Ô˜˜!™ÒÐÑÐÐÜÖ=´E¸!´HÓ=Ó=Ð=rk   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 )Nr.   r   r=   r9   Fr   )r7  r¨   rÚ   r
   ræ   rK   Ú
nan_to_num)rw   r2   r3   r4   rU   Úsr
  rV   s           rW   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 !Ó$Ñ$Ñ$‰ð ð €Hrk   c                 óÄ   — t        j                  | «      } 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   r9   r.   c                  ó   — y©Nr=   r  ©rw   s    rW   Ú<lambda>zB_012.<locals>.<lambda>»  s   €  brk   c                 ó   — | S rË  r  rÚ  s    rW   rÛ  zB_012.<locals>.<lambda>»  s   € ±Ark   c                 ó   — d| z
  S ©Nr>   r  rÚ  s    rW   rÛ  zB_012.<locals>.<lambda>»  s   € ÀÀAÂrk   )rK   Ú
atleast_1dÚ	piecewiserQ   )rw   rT   Úresults      rW   ru   ru   µ  sr   € ä
�‰�aÓ€AÜ�\‰\˜!˜q 1™u¨¨Q©Ñ/Ø !™V¨¨A©Ñ.Ø !™V¨¨Q©Ñ/ð1ñ )©+±~ÐFóH€Fð �:‰:�fÓÐrk   c                 óÚ   — t        j                  | «      } | 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).r.   r9   r   c                 ó   — | | z  dz  S rÞ  r  rÚ  s    rW   rÛ  zB_0123.<locals>.<lambda>Ä  s   € ˜1˜Q™3˜rš6rk   c                 ó   — d| dz
  dz  z
  S )Ng      è?r  r9   r  rÚ  s    rW   rÛ  zB_0123.<locals>.<lambda>Å  s   € ˜4 1 T¡6¨A¡+Ò-rk   c                 ó   — d| z
  dz  dz  S )Nr?   r9   r  rÚ  s    rW   rÛ  zB_0123.<locals>.<lambda>Æ  s   € ˜B˜q™D 1™9 qš=rk   c                  ó   — y©Nr0   r  rÚ  s    rW   rÛ  zB_0123.<locals>.<lambda>È  ó   € ˜2rk   c                  ó   — y)Ng       Àr  rÚ  s    rW   rÛ  zB_0123.<locals>.<lambda>É  s   € ˜3rk   c                  ó   — yrç  r  rÚ  s    rW   rÛ  zB_0123.<locals>.<lambda>Ê  rè  rk   znever be here: der=)rK   rß  rI   rà  )rw   r×   ÚcondsÚfuncsÚpiecess        rW   rç   rç   ¿  s�   € ä
�‰�aÓ€AØ�‰U�Q˜‘U˜q 1™uÑ% q¨1¡uÐ-€EØ
ˆa‚xÙ!Ù-Ù(ð*‰ð 
�ŠÙÙÙð‰ô Ð.¨s¨eÐ4Ó5Ð5Ü�\‰\˜!˜U EÓ*€FØ€Mrk   é#   r;   c                 ó(  — t         j                  j                  d«      }t        j                  |j                  | |z   dz   «      «      }|j                  | «      }|j	                  |«      |j	                  |«      }}t        j                  |||«      S )Né{   r.   )rK   rR   r—   r˜   rQ   r
   Úconstruct_fast)rU   r4   rT   r™   r2   r3   s         rW   r_   r_   Ñ  sp   € Ü
�)‰)×
Ñ
 Ó
$€CÜ
�‰�—
‘
˜1˜Q™3˜q™5Ó!Ó"€AØ�
‰
�1‹€AØ�:‰:�a‹=˜"Ÿ*™* Q›-€q€AÜ×!Ñ! ! Q¨Ó*Ð*rk   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   Nr.   r7   )r3   r4   r2   Úcopyr
   )rV   r3   r4   Út1s       rW   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   r@   r¦  rõ  )rK   rf   r¬  rŠ  r   r2   r3   r4   r`   rh   rÇ   rV   ÚxnewÚc_ÚdstackrÈ  r
   Úb2)rS   rh   rÇ   rV   rÈ  s        rW   Ú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¨¯©Ó,ˆ�rk   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)NrZ   r[   zCalling splev.. with BSpline©Úmatchr.   ©r   )rû  rV   rþ  r   r   r`   rK   rQ   rG   rI   r$  rÚ   r3   r  Ú	transposer2   r4   )rS   rû  rV   rþ  rw   r%  rï   r`   s           rW   Ú
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÷ Mô ”5˜˜BŸD™DŸI™IÓ&Ó'¨$Ñ.ˆØ�T‰T�^‰^˜BÓˆØ�t‰t�R˜Ÿ™ÐˆÜœŸ
™
¤5¨¨sÓ#3Ó4Ù˜4›×*Ñ*¨2Ó.°UÀö	Hùò $?÷
 MÐLú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   rZ   rt   r.   r9   T)Úfull_output)rh   rÇ   r   r	  r   r   r
   )rS   rw   rš   r`   r2   r3   r4   Útck_frº   rÇ   rV   s              rW   Útest_splrepzTestInterop.test_splrep  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Ö,rk   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;   )	rh   rÇ   rK   rü  rG   rI   r   r	  rH   )rS   rw   rš   Úy2s       rW   Útest_splrep_errorszTestInterop.test_splrep_errors/  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  rE   ©r;   r§   rZ   rt   r   T)rÖ  r  )	rK   rO   rP   r�   r   r	  r   rQ   r   )	rS   rw   rV   Úur`   Úu1Úb_fÚu_frº   s	            rW   Útest_splprepzTestInterop.test_splprep?  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ÖCrk   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   r2  r;   )Únumr  )ç– Ð>IÀr  ç– Ð>KÀr  zInvalid inputs)r.   r;   r9   r<   )r   g333333Ó?gš™™™™™É?r.   )	rK   rO   r�   rG   rI   r   r	  rf   rH   )rS   rw   r  s      rW   Útest_splprep_errorszTestInterop.test_splprep_errorsN  sC  € ä�I‰I�eÓ×$Ñ$ YÓ/ˆÜœ:Ð-HÖIÜ�AŒJ÷ Jäœ:Ð-HÖIÜ�M‰M˜!Ô÷ Jô �K‰K˜˜2 1Ô%ˆÜœ9Ð,=Ö>Ü�Q�CŒL÷ ?äœ9Ð,=Ö>Ü�M‰M˜1˜#Ô÷ ?ò
 EˆÜœ:Ð-=Ö>Ü�Q�CŒL÷ ?äœ:Ð-=Ö>Ü�M‰M˜1˜#Ô÷ ?ò ˆÚˆÜœ:Ð-=Ö>Ü�q�c˜4 �^Ñ$÷ ?Ð>÷/ JÑIúçIÑIú÷
 ?Ð>úç>Ð>ú÷ ?Ð>úç>Ð>ú÷ ?Ð>ú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  rB   r«  r·   r[   zCalling sproot.. with BSpliner  rq   )Úmestr.   r9   r   )r;   r9   r<   rÌ   rt   )rV   rþ  rK   rG  r¬  r   r   r2   r3   r4   rG   rI   r  rQ   r¨   rÛ   )rS   rV   rþ  ÚrootsÚc2rÚrrs         rW   Útest_sprootzTestInterop.test_sprootk  sð   € Ø—‘˜Ÿ™ˆ2ˆÜ—‘Ò-Ó.¬r¯u©uÑ4ˆäœ˜q›	 5¨t¸$Õ?Üœ §¡ Q§S¡S¨!¯#©#˜Ó/°¸TÈÕMô œ:Ð-LÖMÜ�2˜BÕ÷ Nð �d‰d�n‰n˜Q  1Ó%ˆÜ�Z‰Zœ §¡ c¨2¯4©4Ð0°rÔ:Ó;ˆØ�x‰x˜9Ò$Ð$Ð$Ü˜˜U™
¤B§M¡M°"Ó$5¸EÖB÷ NÐMú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   r.   rs   F)r\   Úcheck_0dzCalling splint.. with BSpliner  r9   )r;   r9   )r\   Úcheck_shape)rV   rþ  r   r   r`   r  rG   rI   r3   r  rK   rQ   r2   r4   r¨   )rS   rV   rþ  r  Úintegrs        rW   Útest_splintzTestInterop.test_splint|  sò   € à—‘˜Ÿ™ˆ2ˆäœ˜q ! Q›Ü˜q ! Q§U¡UÓ+°%À%õ	Iäœ˜q ! Q›ØŸ™ A qÓ)°Àõ	Gô œ:Ð-LÖMÜ�1�a˜Ô÷ Nð �d‰d�n‰n˜Q  1Ó%ˆÜ—‘œF 1 a¨"¯$©$°°R·T±TÐ):Ó;Ó<ˆØ�|‰|˜vÒ%Ð%Ð%Ü˜Ü˜q ! Q›¨eÀö	H÷ NÐMú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   r.   ©r.   r9   r;   rZ   rt   r9   )rV   rþ  r7  r2   r3   rö  rK   r®   Úzerosr¨   r   r	  r4   r   r  r
   r$  ©rS   rV   ÚctÚb_crU   ÚbdÚtck_ds          rW   Útest_splderzTestInterop.test_splder�  s
  € Ø—&‘&˜$Ÿ'™'Ô"ˆAä�Q—S‘S“œC §¡›HÑ$ˆBØ—#‘#—(‘(“*ˆCØ�AŠvÜ—e‘e˜C¤§¡¨2¨%°#·)±)¸A¸B°-Ñ*?Ó!@Ð@ÑA�ã�Ü˜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Ô.Ð.Ð.Ü! %¬Õ/Ð/Ð/ò ñ #rk   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 r'  )rV   rþ  r7  r2   r3   rö  rK   r®   r)  r¨   r   r	  r4   r   r  r
   r$  r*  s          rW   Útest_splantiderzTestInterop.test_splantider¡  s  € Ø—&‘&˜$Ÿ'™'Ô"ˆAä�Q—S‘S“œC §¡›HÑ$ˆBØ—#‘#—(‘(“*ˆCØ�AŠvÜ—e‘e˜C¤§¡¨2¨%°#·)±)¸A¸B°-Ñ*?Ó!@Ð@ÑA�ã�Ü “]�Ü×(Ñ(¨!¯#©#¯(©(«*°c¸1¿3¹3Ð)?Ó@�Ü §¡ e¨A¡h°UÕ;Ü §¡ e¨A¡h°UÕ;Ø—t‘t˜u Q™xÒ'Ð'Ð'Ü! "¤gÔ.Ð.Ð.Ü! %¬Õ/Ð/Ð/ò ñ #rk   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 )Nr9   rÍ   r.   rZ   rt   r  r   )rV   rþ  rh   r2   r¥   r   r3   r4   r   r   r  r
   r$  rÚ   r  r  rK   rQ   )rS   rV   rþ  rh   rø   ÚtnÚbnÚtck_nr%  rü  Útck_n2Úbn2s               rW   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Ô'Ð'Ð'Ü˜&¤%Ô(Ð(Ñ(rk   N)r  r  r  rÿ  r  r	  r  r  r  r   r%  r/  r1  r‘  r  rk   rW   rù  rù  ë  s=   „ ò-òHò6-ò0'ò Dò%ò:Cò"Hò(0ò"0ó")rk   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Ë  )rQ   rh   rÇ   )rS   rT   s     rW   Ú_get_xyzTestInterp._get_xyÕ  s'   € Ø�z‰z˜$Ÿ'™'Ó" B§J¡J¨t¯w©wÓ$7Ð7Ð7rk   c                 ó�   — t        t        «      5  t        | j                  | j                  d¬«       d d d «       y # 1 sw Y   y xY w)NrB   rM  )rG   rH   r   rh   rÇ   ©rS   s    rW   Útest_non_int_orderzTestInterp.test_non_int_orderØ  s*   € Üœ9Õ%Ü˜tŸw™w¨¯©°3Õ7÷ &×%Ñ%ús	   �#<¼Ac                 óº   — | j                  |«      \  }}t        ||d¬«      }t         ||«      |dd¬«       t        ||dd¬«      }t         ||«      |dd¬«       y )Nr   rM  rs   r[   r7   ©r4   rü   ©r;  r   r   ©rS   rT   rh   rÇ   rV   s        rW   Útest_order_0zTestInterp.test_order_0Ü  óV   € Ø—‘˜bÓ!‰ˆˆBÜ˜r 2¨Ô+ˆÜ™˜"›˜r¨°EÕ:Ü˜r 2¨°Ô4ˆÜ™˜"›˜r¨°EÖ:rk   c                 óº   — | j                  |«      \  }}t        ||d¬«      }t         ||«      |dd¬«       t        ||dd¬«      }t         ||«      |dd¬«       y )Nr.   rM  rs   r[   r7   r@  rA  rB  s        rW   Útest_linearzTestInterp.test_linearã  rD  rk   r4   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   r.   r9   r;   r<   r§   )r   r.   r9   r;   r<   r§   r¢   r£   zShapes of xr  rM  ©rG   rI   r   ©rS   r4   rw   rš   s       rW   Útest_incompatible_x_yz TestInterp.test_incompatible_x_yê  s.   € âˆÚ$ˆÜœ:¨]Ö;Ü˜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   r.   r.   r9   r;   r<   rH  zx to not have duplicatesr  rM  )r   r9   r.   r;   r<   r§   zExpect x to be a 1D strictly)r.   r7   )rG   rI   r   rK   rQ   r�   rJ  s       rW   Útest_broken_xzTestInterp.test_broken_xñ  sª   € âˆÚˆÜœ:Ð-GÖHÜ˜q ! qÕ)÷ Iò ˆÜœ:Ð-KÖLÜ˜q ! qÕ)÷ Mò ˆÜ�J‰J�q‹M×!Ñ! 'Ó*ˆÜœ:Ð-KÖLÜ˜q ! qÕ)÷ MÐL÷ IÐHú÷ MÐLú÷
 MÐLús#   šB.ÁB:ÂCÂ.B7Â:CÃCc                 ó~   — | j                  |«      \  }}dD ]$  }t        |||«      }t         ||«      |dd¬«       Œ& y )N©r9   r;   r<   r§   r¢   r£   rs   r[   rA  )rS   rT   rh   rÇ   r4   rV   s         rW   Útest_not_a_knotzTestInterp.test_not_a_knot  s>   € Ø—‘˜bÓ!‰ˆˆBÛ#ˆAÜ" 2 r¨1Ó-ˆAÜ™A˜b›E 2¨E¸Ö>ñ $rk   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Ë   r3  rs   r[   r.   r   rØ   r7   ç•dyáý¥=rt   ©r4   r4  rü   )r;  r   r   rÚ   )rS   rT   rh   rÇ   rV   r
  s         rW   Útest_periodiczTestInterp.test_periodic  sÀ   € Ø—‘˜bÓ!‰ˆˆBô ˜r 2¨°JÔ?ˆÜ™˜"›˜r¨°EÕ:ô �q˜!–ˆAÜ™A˜b ™e¨œN©A¨b°©f¸¬OÀ%ÖHð ô ˜r 2¨°JÀRÔHˆÜ™˜"›˜r¨°EÕ:Ü�q˜!–ˆAÜ™A˜b ™e¨œN©A¨b°©f¸¬OÀ%ÖHñ rk   rO  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”   re   r�   r7   r   rË   r3  rs   rt   )rK   rR   r—   r˜   r5  rQ   r   r   )rS   r4   rT   rU   r™   rw   rš   rV   s           rW   Útest_periodic_randomzTestInterp.test_periodic_random  s–   € ð ˆÜ�i‰i×#Ñ# DÓ)ˆÜ�G‰G�C×%Ñ% aÓ(¨2Ñ-Ó.ˆØ×Ñ˜aÓ  3Ñ&ˆØ�‰uˆˆ!‰Ø�z‰z˜!‹}˜bŸj™j¨›mˆ1ˆä˜q ! q°*Ô=ˆÜ™˜!›˜a eÖ,rk   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”   r9   r=   r7   r.   r§   rË   rS  rs   rt   )rh   r¨   rK   rR   r—   r5  r¬  r˜   r)  r…  rŠ  rQ   r   rÚ   r   )rS   rT   rU   r™   rw   rš   rV   r
  s           rW   Ú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£°Ö6rk   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Ê   r7   r.   r   rË   r3  )rK   rR   r—   r˜   r5  rG   rI   r   )rS   r™   r4   rU   rw   rš   s         rW   Útest_periodic_points_exceptionz)TestInterp.test_periodic_points_exception5  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£   r9   rË   )	rK   rR   r—   r˜   r5  r)  rG   rI   r   )rS   r™   r4   rU   rw   rš   r2   s          rW   Útest_periodic_knots_exceptionz(TestInterp.test_periodic_knots_exception@  sƒ   € ä�i‰i×#Ñ# DÓ)ˆØˆØˆÜ�G‰G�C×%Ñ% aÓ(Ó)ˆØ×Ñ˜aÓ ˆÜ�H‰H�Q˜˜Q™‘YÓˆÜœ:Õ&Ü˜q ! Q¨¨:Ô6÷ '×&Ñ&ú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Ë   r3  T)r¥  r4   rs   rt   r.   rÖ   rØ   rµ   )r   rh   rÇ   r   r   r   rÚ   )rS   r4   rV   r`   r,  r
  s         rW   Útest_periodic_splevzTestInterp.test_periodic_splevK  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¸Ö>ñ rk   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Ë   r3  rX  rs   rt   r”   re   r�   r7   r   )
r   rh   rÇ   r   r   rK   rR   r—   r˜   r5  )rS   rV   Úcubr™   rU   rw   rš   s          rW   Útest_periodic_cubiczTestInterp.test_periodic_cubicX  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Ö1rk   c                 óT  ‡‡‡— dŠt        | j                  | j                  ‰d¬«      }t        | j                  ‰«      Št	        | j                  | j                  ‰‰«      Št        j                  ˆˆˆfd„«      }t         || j                  «       || j                  «      d¬«       y )Nr;   rË   r3  c                 ó,   •— t        | ‰‰‰t        ¬«      S )Nrr   )rŠ   rK   )rw   r3   r4   r2   s    €€€rW   rÛ  z6TestInterp.test_periodic_full_matrix.<locals>.<lambda>o  s   ø€ ¤K°°1°a¸¼rÕ$Brk   rs   rt   )r   rh   rÇ   r   r   rK   Ú	vectorizer   )rS   rV   r(  r3   r4   r2   s      @@@rW   Útest_periodic_full_matrixz$TestInterp.test_periodic_full_matrixh  su   ú€ ð ˆÜ˜tŸw™w¨¯©°1¸jÔIˆÜ˜DŸG™G QÓ'ˆÜ& t§w¡w°·±¸¸AÓ>ˆÜ�\‰\ÕBÓCˆÜ™˜$Ÿ'™'›
¡B t§w¡w£K°eÖ<rk   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©r.   g       @r9   r3  rs   r[   r7   r.   r   rE   F)r\   r]   r"  ©r;  r   r   rQ   rP   )rS   rT   rh   rÇ   r×   rV   s         rW   Útest_quadratic_derivzTestInterp.test_quadratic_derivr  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ö	
rk   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;   ©r.   r?   )r.   r@   rX  rs   r[   r   r.   rE   r7   ©r9   r   rh  )rS   rT   rh   rÇ   r4   Úder_lÚder_rrV   s           rW   Ú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Ö:rk   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£   rE   )r.   g      (À)r9   r.   rg  )r9   r?   r3  rs   r[   r   r.   r9   r7   )rO   rP   r…  r   r   r‰   rQ   )rS   rT   r4   rU   rw   rš   rm  rn  rV   rÙ   Úvals              rW   Ú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;   rk  )r9   r@   rX  rs   r[   )r   rh   r   rÇ   r   )rS   r4   r2   rm  rV   s        rW   Útest_cubic_deriv_unstablez$TestInterp.test_cubic_deriv_unstable«  s[   € ð ˆÜ�D—G‘G˜QÓˆà˜'Ð"ˆÜ˜tŸw™w¨¯©°°AÀÀt¸}ÔMˆÜ™˜$Ÿ'™'›
 D§G¡G°%¸eÖDrk   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 )Nr9   r.   r   r7   r>   rl  rX  rs   r[   r=   r   )r;  r   r¶  r   r   r  r  )rS   rT   r4   rh   rÇ   r2   rV   s          rW   Ú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Õ=Ð=Ñ=rk   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=   r0   ©r.   r=   rk  rX  rõ  rE   rs   r[   )rQ   r   rf   rP   r   )rS   rT   r4   rw   rš   rV   rh   rÇ   s           rW   Ú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Ö:rk   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)r0   r9   r;   r<   r§   r¢   ry  rX  é*   )ry  ry  rI  )rS   rw   rš   ÚlÚrs        rW   Útest_deriv_speczTestInterp.test_deriv_specÙ  sÙ   € ò %Ð$ˆˆAäœ:Õ&Ü˜q !¨w¨i¸Ð->Õ?÷ 'ô œ:Õ&Ü˜q !¨WÕ5÷ 'ô œ:Õ&Ü˜q !¨g¨YÕ7÷ 'ô œ:Õ&Ü˜q !¨RÕ0÷ 'ð
 "‰ˆˆ1Üœ:Õ&Ü˜q !¨a°¨VÕ4÷ 'Ð&÷ 'Ð&ú÷ 'Ð&ú÷ 'Ð&ú÷ 'Ð&ú÷ 'Ð&ú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£   r9   )r¢   r   ©r.   r   zBad boundary conditions at 0.r  rX  )iúÿÿÿr   zBad boundary conditions at 6.)rO   rG   rI   r   )rS   rT   rw   rš   r}  r~  s         rW   Útest_deriv_order_too_largez%TestInterp.test_deriv_order_too_largeð  s�   € Ø�I‰I�a‹LˆØˆq‰DˆØˆx˜&˜ˆ1ˆÜœ:Ð-LÖMä˜q !¨a°¨VÕ4÷ Nð ˆx˜'˜ˆ1ˆÜœ:Ð-LÖMä˜q !¨a°¨VÕ4÷ NÐM÷ NÐMú÷
 NÐMú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;   r/   )r.   y              @)r.   y      @       @rX  rs   r[   r   r.   r   r7   ©r   r.   rM  )r;  r   r   Úcmathr  )rS   rT   r4   rh   rÇ   rm  rn  rV   s           rW   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¸Ö>ñ rk   c                 ó²   — |j                  d|j                  ¬«      }|j                  d|j                  ¬«      }dD ]  }t        |||¬«      } ||«       Œ y )Nre   rE   rä   rM  )rO   Úint32r   )rS   rT   rw   rš   r4   rV   s         rW   Útest_int_xyzTestInterp.test_int_xy  sO   € Ø�I‰I�b §¡ˆIÓ)ˆØ�I‰I�b §¡ˆIÓ)ˆó ˆAÜ" 1 a¨1Ô-ˆAÙˆa�Dñ rk   c                 ót   — |j                  ddd«      }|d d d…   }|d d d…   }dD ]  }t        |||¬«       Œ y )Nr7   r.   r�   r§   rä   rM  )rf   r   )rS   rT   rh   rw   rš   r4   s         rW   Útest_sliced_inputzTestInterp.test_sliced_input  sD   € à�[‰[˜˜Q Ó$ˆà‰s�ˆs‰GˆØ‰s�ˆs‰GˆãˆAÜ˜q ! qÖ)ñ rk   c                 ó  — |j                  d|j                  ¬«      }|dz  }|j                  |j                  |j                   fD ]=  }t	        j
                  |d«      j                  |«      }t        t        t        ||«       Œ? y )Nre   rE   r9   r7   )
rO   rP   rM   rN   ÚxpxÚatÚsetrG   rI   r   )rS   rT   rw   rš   Úzs        rW   Útest_check_finitezTestInterp.test_check_finite"  si   € à�I‰I�b §
¡
ˆIÓ+ˆØˆq‰Dˆà—&‘&˜"Ÿ&™& 2§6¡6 'Ó*ˆAÜ—‘�q˜"“×!Ñ! !Ó$ˆAÜœ*Ô&8¸!¸QÕ?ñ +rk   )r.   r9   r;   r§   c                 óv   — t        t        d«      «      }|D �cg c]  }|dz  ‘Œ	 }}t        |||¬«       y c c}w )Nre   r9   rM  )ÚlistrÚ   r   )rS   r4   rw   Úarš   s        rW   Útest_list_inputzTestInterp.test_list_input+  s:   € ô ”�r“‹OˆÙÓ™1�aˆQ�‹T˜1ˆÐÜ˜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 )Nr.   rû   r0   r>   r?   r@   r;   r3  rs   r[   r   rE   r7   )r;  r‰   r   r   rQ   rP   )rS   rT   rh   rÇ   rm  rn  rV   s          rW   Útest_multiple_rhszTestInterp.test_multiple_rhs2  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Èö	
rk   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£   r.   ©r§   r¢   r£   rX  )rK   rR   r—   r˜   r   r3   r¨   )	rS   r™   r4   rU   rw   rš   rV   Úd_lÚd_rs	            rW   Útest_shapeszTestInterp.test_shapesC  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Ñ0rk   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;   r?  r3  rl  rZ   rt   )r?  r>  r�  r9   )Nr>  ry  r@  Útypor.   rû   r=   r=  r”   r˜  r¤   r§   r¢   r£   r™  rX  r>  )r;  r…  r   r   r3   rG   rI   r‰   rŠ  rK   rR   r—   r˜   rQ   r)  )rS   rT   rh   rÇ   r(  rþ  rm  rn  r™   r4   rU   rw   rš   rš  r›  s                  rW   Útest_string_aliaseszTestInterp.test_string_aliasesR  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¤   rs   r[   )rK   rR   r—   r˜   r   Úmake_interp_full_matrrQ   rv   r   r   r3   )rS   rT   r™   r4   rU   rx   Úy_npry   r¨  rw   rš   r2   rV   s                rW   Ú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°%Ö8rk   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;   é    r9   r.   Nr7   r   )Úoffsetrs   rt   )rK   rR   r—   rÚ   ÚintÚdiagflatr)  rÀ  Údiagonalr   r   ÚlinalgÚsolve)rS   r™   rU   r4   r§  r“  r
  ÚurÚllÚdrø   rV   s               rW   Ú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Ö)�Ø�#�A�2�#�q‘r�'“
œbŸk™k¨#¯*©*°a¸¸Q¹°ZÓ*@ÓAÑA“
Ø�!‘"�c˜�r�c�'“
œbŸk™k¨#¯*©*°a¸¸Q¹°ZÓ*@ÓAÑA”
ð *ð —‘˜V VÐ,Ó-ˆBØ#%ˆAˆgˆvˆg˜�w‘xÐÑ Ø—‘˜V VÐ,Ó-ˆBØ#%ˆAˆvˆg‰h˜˜˜ÐÑ Ü—‘˜!˜Q˜Ó ˆAÜ!¤%¨°°¸!±¸RÓ"@ÖA‘��1Ø�q’5Ü!Ÿ{™{¨1°QÔ7�A�a˜˜!˜�e’Hä!Ÿ{™{¨1°QÔ7�A�a˜™�e’Hð	 Bð
 —
‘
˜1“ˆAÜÔ/°°2°r¸1¸aÓ@ÜŸI™IŸO™O¨A¨qÓ1¸÷?ñ# !rk   N).r  r  r  rK   rf   r¬  rh   r…  rÇ   r;  r>  rC  rF  ra   rz  r{  rK  rM  rP  rT  rV  rX  rZ  r\  r^  ra  re  ri  ro  rr  r|  ru  rw  rz  r  r‚  r³  rˆ  rŠ  r�  r”  r–  rœ  rŸ  r£  r°  r  rk   rW   r9  r9  Í  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ó?rk   r9  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).
    r.   rE   )
r¥   rK   r)  rP   rÚ   rÎ  r*   Úevaluate_all_bsplÚslr¬  )rw   rš   r2   r4   rU   ÚArø   r�  ÚleftÚbbr3   s              rW   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Ø€Hrk   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.r.   rE   )rv   rK   rQ   r¥   r)  rP   rÚ   rÎ  r*   r²  ÚdotÚTr³  r¬  )rw   rš   r2   r4   r”  rU   r´  rø   r�  rµ  r¶  r  ÚYr3   s                 rW   Ú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Ðrk   Ú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   r7   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¼  r.   r7   )Úrcond)rw   rš   r2   r4   r»  r   r   r3   r¨   r¥   rK   r«  Úlstsq)rS   r¼  rw   rš   r2   r4   Úc0ÚAYrV   ÚaarÇ   rÇ  rº   s                rW   Ú
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Õ rk   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¼  rs   rt   )
rv   rQ   rw   rš   r2   r4   rn   r   r   r3   )
rS   r¼  rT   rw   rš   r2   r4   rË  rV   Úb_ws
             rW   Ú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Š|Ð‰|rk   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Â  rs   rt   )rv   rQ   rw   rš   r2   r4   rK   rR   r›  rœ  r¨   r   r   r3   rÅ   Úabs)
rS   rT   rw   rš   r2   r4   rË  Úb_neÚb_qrÚb_no_ws
             rW   Ú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Ñ;Ô<Ð<Ð<Ð<rk   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   r.   )rv   rQ   rw   r2   r4   rU   rK   rR   r—   r   r3   r¨   )
rS   r¼  rT   rw   r2   r4   rU   r™   rš   rV   s
             rW   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Ñ9rk   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Â  rZ   rt   )rv   rQ   rw   r2   r4   rU   rK   rR   r—   r   rÚ   r‰   r3   r¹  r   )rS   r¼  rT   rw   r2   r4   rU   Únrhsr™   rš   rV   r
  r¶  Úcoefss                 rW   Útest_multiple_rhs_2zTestLSQ.test_multiple_rhs_2+  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½  rZ   rt   )rv   rQ   rw   r2   r4   rU   rK   rR   r   r   r3   )
rS   rT   rw   r2   r4   rU   rÖ  rš   rÑ  Úb_neqs
             rW   Útest_multiple_rhs_3zTestLSQ.test_multiple_rhs_3:  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Ö4rk   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Â  r/   rZ   r[   )
rv   rQ   rw   r2   r4   rš   r   rí   rî   r   )
rS   r¼  rT   rw   r2   r4   rO  rV   rð   rñ   s
             rW   r³  zTestLSQ.test_complexC  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ÖLrk   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Ý  r.   rû   r/   rZ   r[   )rv   rQ   rw   r2   r4   rš   r‰   r   rí   rî   r   )	rS   rT   rw   r2   r4   rO  rV   rð   rñ   s	            rW   Útest_complex_2zTestLSQ.test_complex_2O  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ÖLrk   c                 óÞ   — t        j                  d«      j                  t        «      }t        j                  d«      j                  t        «      }t	        |d¬«      }t        |||d|¬«       y )Nre   r.   rM  ©r4   r¼  )rK   rO   Úastyper¨  r   r   ©rS   r¼  rw   rš   r2   s        rW   rˆ  zTestLSQ.test_int_xye  sM   € ä�I‰I�b‹M× Ñ ¤Ó%ˆÜ�I‰I�b‹M× Ñ ¤Ó%ˆÜ�A˜ŒOˆä˜˜1˜a 1¨VÖ4rk   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 )
Nre   rE   r.   rM  rá  r7   r>   rZ   rt   )rK   rO   Úfloat32r   r   râ  Úfloatr   )rS   r¼  rw   rš   r2   Úspl_f32Úspl_f64Úx2s           rW   Útest_f32_xyzTestLSQ.test_f32_xym  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Ö=rk   c                 óŠ   — t        j                  ddd«      }|d d d…   }|d d d…   }t        |d«      }t        |||d|¬«       y )Nr7   r.   r�   r;   rá  )rK   rf   r   r   )rS   r¼  rh   rw   rš   r2   s         rW   rŠ  zTestLSQ.test_sliced_inputz  sK   € ô �[‰[˜˜Q Ó$ˆà‰s�ˆs‰GˆØ‰s�ˆs‰GˆÜ�A�q‹MˆÜ˜˜1˜a 1¨VÖ4rk   c           	      ó  — t        j                  d«      j                  t        «      }|dz  }t	        |d«      }t         j
                  t         j                  t         j                   fD ]   }||d<   t        t        t        ||||¬«       Œ" y )Né   r9   r;   r7   rÂ  )
rK   rO   râ  ræ  r   rM   rN   rG   rI   r   )rS   r¼  rw   rš   r2   r�  s         rW   Útest_checkfinitezTestLSQ.test_checkfinite„  sj   € ô �I‰I�b‹M× Ñ ¤Ó'ˆØˆq‰DˆÜ�A�q‹Mˆä—&‘&œ"Ÿ&™&¤2§6¡6 'Ó*ˆAØˆAˆb‰EÜœ*¤o°q¸!¸QÀvÖNñ +rk   c                 óÖ   — | j                   | j                  | j                  }}}|j                  d¬«       |j                  d¬«       |j                  d¬«       t	        ||||¬«       y )NFrd  )rw   rš   r2   r¼  )rw   rš   r2   rf  r   rã  s        rW   rg  zTestLSQ.test_read_only�  sU   € ð —&‘&˜$Ÿ&™& $§&¡&ˆaˆ1ˆØ	�
‰
˜ˆ
ÔØ	�
‰
˜ˆ
ÔØ	�
‰
˜ˆ
ÔÜ˜!˜q A¨fÖ5rk   r4   r.   c                 ó  — | j                   | j                  }}t        t        j                  |d   |d   d«      |«      }t        ||||d¬«      }t        ||||d¬«      }|dd  |d d z   dz  }t         ||«       ||«      d	¬
«       y )Nr   r7   r£   r½  rá  r¾  r.   r>   rZ   rt   )rw   rš   r   rK   rf   r   r   )rS   r4   rw   rš   r2   Úspl_norm_eqÚspl_qrrh   s           rW   Ú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›©°«¸%Ö@rk   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 )
Nr9   r;   r¾  rá  r.   r7   r>   rZ   rt   )rK   Úrepeatrw   rš   r   r2   r   )rS   rw   rš   rŒ  Úspl_2rh   s         rW   Ú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Ö9rk   N)$r  r  r  rK   rR   r—   r™   rU   r4   r˜   rw   rš   r   rf   r2   Úparametrize_lsq_methodsrÈ  rÍ  rÓ  r–  rØ  rÛ  r³  rß  rˆ  rê  rŠ  rî  rg  ra   rz  r{  r’  rÚ   ró  r÷  r  rk   rW   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ó:rk   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 )Nr9   r.   r   )r“  r§  Úncr  r¨   )rS   r“  r§  rü  s       rW   Ú__init__zPackedMatrix.__init__·  sW   € ØˆŒØˆŒØˆŒà�v‰v˜Š{Ðˆ{Ø�{‰{˜aÒÐÐØ�w‰w�q‰z˜VŸ\™\¨!™_Ò,Ð,Ñ,rk   c                 óL   — | j                   j                  d   | j                  fS ©Nr   )r“  r¨   rü  r=  s    rW   r¨   zPackedMatrix.shapeÀ  s   € à�v‰v�|‰|˜A‰ §¡Ð'Ð'rk   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 )Nr.   r   )rK   r)  r¨   r“  rÚ   Úminrü  r§  )rS   ÚoutÚnelemr
  Únels        rW   ÚtodensezPackedMatrix.todenseÄ  s™   € Ü�h‰h�t—z‘zÓ"ˆØ—‘—‘˜Q‘ˆÜ�s—y‘y ‘|Ö$ˆAÜ�d—g‘g §¡¨A¡Ñ.°Ó6ˆCØ:>¿&¹&ÀÀDÀSÀDÀ¹/ˆC��4—;‘;˜q‘> $§+¡+¨a¡.°3Ñ"6Ð6Ð6Ò7ð %ð ˆ
rk   N)r  r  r  Ú__doc__rý  Úpropertyr¨   r  r  rk   rW   rú  rú  ®  s%   „ ñò-ð ñ(ó ð(órk   rú  c                 ó6  — ddl m} | 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   )Údlartgr.   r=   r7   rE   )Úscipy.linalg.lapackr	  r“  r§  rü  r¨   rö  rÚ   r  Úfprotar’  rú  rK   rG  Úint64)Úa_prš   Ústartrowr	  r“  r§  rü  r”  ÚnzÚRr�  r
  Úoirø   r3   rÖ  r~  r}  ÚoffsÚR_ps                       rW   Ú_qr_reduce_pyr  Í  s«  € õ +ð 	�‰€AØ�Z‰Z€FØ	�‰€Bà�G‰G�E€A€rà�7‰7�1‰:˜Š?Ðˆ?Ø	�‰‹€AØ	
�‰‹€Bä�8˜QÖˆØ�A‰YˆÜ�r˜2–ˆAà”C˜˜2“JŠÙñ ˜Q˜q !˜t™W a¨¨1¨¡gÓ.‰GˆAˆq�!ð ˆAˆa�ˆd‰GÜ˜1˜b–\�Ü%+¨A¨q°!°A°q°D±'¸1¸QÀ¸T¹7Ó%CÑ"��!�Q�$‘˜˜1˜a ™c˜6šð "àˆAˆa�ˆe‰Hô ˜2Ÿ8™8 A™;Ö'�Ü%+¨A¨q°"°Q¸°T±(¸B¸qÀ!¸t¹HÓ%EÑ"��1�a�4‘˜"˜Q ˜Tš(ñ (ñ ð  ô* ”�a—g‘g˜a‘jÓ!Ó"€DÜ
�qœ"Ÿ(™( 4¬r¯x©xÔ8¸"Ó
=€Cà�ˆ7€Nrk   c                 ó8   — | |z  ||z  z   }| |z  | |z  z   }||fS )zLGivens rotate [a, b].

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

    r  )r3   rÖ  r“  rV   rÇ  r¶  s         rW   r  r  ù  s1   € ð ˆA‰#��!‘‰)€BØ
ˆˆA‰��!‘‰€BØˆrˆ6€Mrk   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   Nr.   .r9   r7   rû   )r“  r¨   rü  rK   rÛ   rÚ   r  rÏ  )
r  rš   r  rº   r  rü  r3   r
  r  Úsumms
             rW   Ú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ˆ&Š	ð	 !ð
 €Hrk   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;   rE   r.   )rK   rO   ræ  r   )rS   rU   r4   rw   rš   r2   s         rW   Ú_get_xytzTestGivensQR._get_xyt  sF   € ØˆÜ�I‰I�aœuÔ%ˆØˆq‰D�1�a˜‘c‘7‰NˆÜ˜˜1ÓˆØ�!�Q˜ˆzÐrk   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 )	Nre   r   r.   rE   rZ   rt   g‚vIhÂ%L=çê-�™—a=)r  r
   r8  r³  r¾  r  r¹  r¨   ÚindicesrK   Úascontiguousarrayr  Údatar�   rú  r*   Ú	qr_reducer   ÚminimumrÛ   rÏ  r¬  r  r“  rü  rn   )rS   rU   rw   rš   r2   r4   Úa_csrÚqr~  ÚqTyr”  rü  r§  r´  r  Úy_Úc_fullÚc_bandedrº   s                      rW   Ú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Ö;rk   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 )	Nre   r   r.   rE   rZ   rt   F)Úcheck_dtype)r  r
   r8  r¨   r  rK   r   r  r!  r�   rú  r  r*   r"  r   r“  r   r§  rü  )rS   rU   rw   rš   r2   r4   r$  r”  rü  r§  r´  r  r'  ÚRRrÇ   s                  rW   Útest_py_vs_compiledz TestGivensQR.test_py_vs_compiledF  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Ö+rk   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 )Nre   r.   rE   r   rZ   rt   )r  rK   rO   ræ  r*   Údata_matrixr¨   r
   r8  Útocsrr!  r�   r  râ  r  r   r   )rS   rU   rw   rš   r2   r4   rË  r´  r§  rü  r”  r$  Úa_wÚA_Úoffset_s                  rW   Útest_data_matrixzTestGivensQR.test_data_matrixa  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Ñ'Ò'Ð'Ñ'rk   c                 ó¦  — d}| j                  |«      \  }}}}t        j                  ||dz  f   }t        j                  |||t        j
                  |«      «      \  }}}t        |||«      }	t        j                  ||||«       t        |	|«      }
t        j                  ||||||t        j
                  |«      |«      \  }}}t        ||
d¬«       y )Nre   r9   rs   rt   )
r  rK   rü  r*   r0  rn   rú  r"  r  r   )rS   rU   rw   rš   r2   r4   r´  r§  rü  r  r3   rï   rº   s                rW   Útest_fpbackzTestGivensQR.test_fpbackr  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Ö*rk   c                 ó  — d}| j                  |«      \  }}}}t        j                  |dz   ft        ¬«      }|D ]N  }t	        t        j                  |||||dz   «      |«       t	        t        j                  ||||d|z  «      |«       ŒP y )Nre   r.   rE   r9   )r  rK   r)  ræ  r   r*   r²  )rS   rU   rw   rº   r2   r4   Ú
zero_arrayr�  s           rW   Útest_evaluate_all_bsplz#TestGivensQR.test_evaluate_all_bspl  s‡   € ØˆØ—]‘] 1Ó%‰
ˆˆ1ˆa�Ü—X‘X˜q 1™u˜h¬eÔ4ˆ
ÛˆDÜÜ×*Ñ*¨1¨a°°q¸!¸a¹%Ó@À*ôNäÜ×*Ñ*¨1¨a°°q¸!¸A¹#Ó>À
õLñ rk   N)	r  r  r  r  r*  r.  r5  r7  r:  r  rk   rW   r  r    s"   „ òò!<òF,ò6(ò"+óLrk   r  c                 óÀ   — t         j                  j                  t         j                  j                  t         j                  j	                  t
        «      «      d| «      S )Nr!  )ÚosÚpathrs  ÚabspathÚdirnameÚ__file__)Úbasenames    rW   Ú	data_filerB  Š  s8   € Ü�7‰7�<‰<œŸ™Ÿ™¬¯©¯©¼Ó(AÓBØ ó*ð *rk   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<   r9   r;   r=   r  r.   r7   r   z)``x`` and ``y`` length must be at least 5r  )rK   rR   r—   r˜   r5  r…  ÚnormalrG   rI   r   r�   rö  rO   r¶  ra   r	   )rS   r™   rU   rw   rš   Úx_duplÚexception_messages          rW   Ú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 %¨Ô+÷ 'äœ:Õ&Ü! !§)¡)¨A¨q£/°1Ô5÷ 'ô œ:Õ&Ü! !¡D b D¡'¨1Ô-÷ 'ô —‘˜“ˆØ˜1‘Iˆˆq‰	äœ:Õ&Ü! &¨!Ô,÷ 'ô �I‰I�a‹LˆÜ�G‰G�A‹JˆØGÐÜ�]‰]œ:Ð->Ö?Ü! ! QÔ'÷ @Ð?÷+ 'Ñ&úç&Ñ&úç&Ð&ú÷ 'Ð&ú÷ 'Ð&ú÷ @Ð?ú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.npzrw   rš   Úy_GCVSPLNç-Cëâ6?F)r\   r]   r,  )rK   ÚloadrB  r   r   )rS   r!  rw   rš   rK  Úy_comprs         rW   Útest_compare_with_GCVSPLz,TestSmoothingSpline.test_compare_with_GCVSPL³  sj   € ô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<   r9   r;   r=   r  )Úlamr?  rX  r   r7   rZ   rt   N)rK   rR   r—   r˜   r5  r…  rF  rQ   r   r   rf   r   )	rS   rT   r™   rU   rw   rš   Ú
spline_GCVÚspline_interpÚgrids	            rW   Ú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Ó+Ø"ö	$rk   r9   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<   r9   r;   r=   r  re   r¤   g      >@zJSpline with weights should be closer to the points than the original one: z.4z < )rK   rR   r—   r˜   r5  r…  rF  rv   rQ   r   ÚchoicerÚ   r¶  rŒ  r�  r¨  rŽ  rÏ  rI   )rS   rT   r™   rU   rw   rš   r,  ÚindrË  Úspl_wÚorigÚweighteds               rW   Útest_weighted_smoothing_splinez2TestSmoothingSpline.test_weighted_smoothing_spline 	  sU  € ô �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ˆ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ñ 3rk   N)
r  r  r  rI  rO  rU  ra   rz  Ú	fail_slowr\  r  rk   rW   rD  rD  �  s6   „ ò
(ò>6Tòp$ð* ‡[�[×Ñ˜1Óñ3ó ñ3rk   rD  c           	      ó   ‡‡‡‡‡‡	‡
— | \  Š	Š
|\  ŠŠt        ‰«      ‰z
  dz
  }|‰dz   k\  sJ ‚t        ‰«      ‰z
  dz
  Š‰‰dz   k\  sJ ‚t        ˆˆˆˆˆˆ	ˆ
fd„t        |«      D «       «      }t        j                  |«      S )z-A naive 2D tensort product spline evaluation.r.   c           	   3   óˆ   •K  — | ]9  }t        ‰«      D ])  }‰||f   t        ‰‰|‰«      z  t        ‰	‰|‰«      z  –— Œ+ Œ; y ­wrË  )rÚ   r  )
rÌ  ÚixÚiyr3   r4   ÚnyÚtxÚtyrw   rš   s
      €€€€€€€rW   rÍ  zbspline2.<locals>.<genexpr>'	  sO   øè ø€ ð 7Ù!�"¬E°"®I bð ��B�‰iœ!˜A˜q " b›/Ñ)¬A¨a°°B¸«OÕ;Ø,5ð <Ù!ùs   ƒ?A)r7  rÏ  rÚ   rK   rQ   )rÎ   r2   r3   r4   Únxr  rb  rc  rd  rw   rš   s     ``  @@@@@rW   Úbspline2rf  	  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‹?Ðrk   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   r.   r0   r=   ©r  rÆ  s         rW   r  r  ,	  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€Nrk   c                 óœ   ‡ ‡‡‡— t        ‰«      ‰z
  dz
  }|‰dz   k\  rt        ‰«      |k\  sJ ‚t        ˆˆˆˆ fd„t        |«      D «       «      S )Nr.   c              3   óF   •K  — | ]  }‰|   t        ‰‰|‰«      z  –— Œ y ­wrË  rh  rÒ  s     €€€€rW   rÍ  zbspline.<locals>.<genexpr>=	  s%   øè ø€ Ð6©X¨ˆq�‰t”a˜˜1˜a “mÕ#©XùrÓ  )r7  rÏ  rÚ   )rw   r2   r3   r4   rU   s   ```` rW   rJ  rJ  :	  sD   û€ ÜˆA‹�‰
�Q‰€AØ��1‘ŠHœ3˜q›6 Qš;Ð'Ð'ÜÖ6¬U°1¬XÓ6Ó6Ð6rk   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     rW   rÍ  z&NdBSpline0.__init__.<locals>.<genexpr>Y	  s   è ø€ Ð6±A¨b”x—~‘~ b×)±Aùs   ‚!c              3   óR   K  — | ]  }t        j                  |t        ¬ «      –— Œ! y­w)rE   N)rK   rQ   ræ  )rÌ  Útis     rW   rÍ  z&NdBSpline0.__init__.<locals>.<genexpr>Z	  s   è ø€ Ð?¹Q°r”r—z‘z "¬E×2Ð2¹Qùs   ‚%'N)r7  r¨   rH   r$  r4   r2   r3   )rS   r2   r3   r4   r  s        rW   rý  zNdBSpline0.__init__A	  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Únoner.   r   )r7  r2   rÚ   r4   rK   rÎ  r$  Ú	itertoolsÚproductr3   Úprodr  rQ   )rS   rw   r  r
  r¯  ÚtdÚxdr4   rá  ÚitersÚidxÚterms               rW   Ú__call__zNdBSpline0.__call__]	  sÄ  € Ü�4—6‘6‹{ˆä�1‹v˜Š~Ðˆ~ð ˆJ�t‰OˆÜ�t–ˆ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ð ô �!‹Hˆð
 ˆÜ<AÀ$¼KÓH¹K°q”�q˜‘t˜dŸf™f Q™iÑ'¨¨1©°©Õ2¸KˆÐHÜ×$Ñ$ eÓ,ˆCØ—6‘6˜#‘;¤§¡Ü38¸´;ó*@Ù3>¨aô +,¨A¨a©D°$·&±&¸±)¸SÀ¹VÀTÇVÁVÈAÁYÕ*OØ3>ñ*@ó "Añ AˆDà�d‰N‰Fð -ô �z‰z˜&Ó!Ð!ùò Iùò*@s   Ã ,F'Å5F,N©r;   )r  r  r  rý  r~  r  rk   rW   rl  rl  @	  s   „ óó8"rk   rl  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—  rC   r£   r.   r¤   rõ  rs   rt   r   )
rK   rR   r›  r˜   rœ  rQ   r
   r   r   r¨   )rS   rT   r™   rU   r4   Ún_trr2   r3   rV   ÚnbÚxis              rW   Ú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ÑArk   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;   rM  r9   ©rO   r   r2   r3   ©	rS   rT   rw   rš   r,  Úy_1rŒ  Út2rÈ  s	            rW   Ú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Ðrk   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;   rM  r§   rE   r  r9   )rO   r   rP   r2   r3   r4   r‰  s	            rW   Ú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Ð%Ð%rk   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  rB   )rB   r.   )rÍ   r  rr   r;   r9   rE   Frs   ©r#  r\   rM  rt   r„  )TFFr—  )r<   r;   r9   r¤   r§   )r<   r;   )r7   r9   )r   .)r.   .)rŒ  rf  rK   rQ   rP   r   r   r¨   r7  rM   r   rÆ   rR   r›  rœ  r�   r¹  r   )rS   rT   r…  r‹  rÈ  r4   rw   rš   ÚtargetrÎ   rº   rþ  Úbspl2r™   rá  Úrrrs                   rW   Útest_2D_separablezTestNdBSpline.test_2D_separable³	  s7  € Ú/ˆØ×%Ñ%¨Ð%Ó,‰	ˆˆB�Ù46Ô7±B©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%°BˆÑ7ñ ô
ñ
 �Bô ØÙ(*Ó+© 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 )Nr9   r�  r;   rr   rû   r‘  rM  ©r<   r<   rs   rt   r7   rE   Fg‚vIhÂ%,=r’  ©r¢   r¢   r9   r9   )r9   r9   )rŒ  r‰   r   r¨   r   rK   r3   rQ   rP   r�   r¶  )rS   rT   r  r…  rw   rš   r“  r‹  rÈ  r4   Úc2_4rÎ   Úbspl2_4rá  Ú
val_singleÚc2_22Úbspl2_22Ú
target2_22s                     rW   Útest_2D_separable_2z!TestNdBSpline.test_2D_separable_2ß	  s  € àˆÚ/ˆÙ46Ô7±B©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%°BˆÑ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;   r9   y               @rr   rÝ  rû   r‘  rM  r˜  r<   rs   rt   )rŒ  r‰   r   r¨   r   )rS   rT   r…  rw   rš   r“  r2   r‹  rÈ  r4   rš  rÎ   r›  rá  rœ  s                  rW   Útest_2D_separable_2_complexz)TestNdBSpline.test_2D_separable_2_complex

  sö   € â/ˆÙ46Ô7±B©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%°BˆÑ7á$*Ó+¡F˜q�!�b˜‘d“( FˆÐ+à×%Ñ%¨Ð%Ó,‰	ˆˆ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<   r.   rM  )r0   r0   rs   rt   ©r.   r  r9   ©çš™™™™™ñ?gš™™™™™ù?çÍÌÌÌÌÌ @)rK   rR   r›  r®   r˜   rœ  r¥   r   r   rf  rü  )	rS   r™   r4   rc  rd  r3   r,  r…  rÎ   s	            rW   Útest_2D_randomzTestNdBSpline.test_2D_random
  sE  € Ü�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   )rB   g333333@)r   r«  r;   r9   rM  rs   rt   )rŽ  r   r¨   r7  r   )
rS   r‹  rÈ  ÚkxÚkyr…  rw   rš   r“  r”  s
             rW   Útest_2D_mixedzTestNdBSpline.test_2D_mixed0
  s�   € Ø×+Ñ+Ó-‰ˆˆB��BÚ1ˆÙ46Ô7±B©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ó%°BˆÑ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)Nrr   rª  rM  r�  c                 ó*   — d| dz  z  |dz  d|z  z   z  S ©Nr;   r9   r  ©rw   rš   s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>@
  s   €   Q¨¡T¡¨Q°©T°A°a±C©ZÒ!8rk   ©r.   r.   c                 ó$   — d| dz  z  d|z  dz   z  S r±  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>A
  s   €   Q¨¡T¡¨Q¨q©S°1©WÒ!5rk   )r   r   c                 ó$   — | dz  |dz  d|z  z   z  S r±  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>B
  s   €   A¡¨¨A©°°!±©Ò!4rk   r9   r.   c                  ó   — yrÿ  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>C
  ó   €  Ark   r   c                  ó   — yrÿ  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>D
  r·  rk   r;   c                  ó   — yrÿ  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>E
  r·  rk   c                  ó   — yrÿ  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>F
  r·  rk   c                  ó   — yrÿ  r  r²  s     rW   rÛ  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>G
  s   €  qrk   rE   rØ   rs   rt   ))r7   r   ©r7   r   r.   )	rŽ  r   ÚitemsrQ   rP   r   rö   rG   rI   )rS   rT   r‹  rÈ  r¬  r­  r…  r”  Ú
test_casesrÙ   Úexpected_fnrw   rš   Úexpected_valsÚdirectÚ
via_methodÚbad_nus                    rW   Útest_2D_derivativez TestNdBSpline.test_2D_derivative9
  sx  € Ø×+Ñ+¨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‰OˆB�ØŸJ™JÙ/1Ô2©r¡t q¨!‘˜Q Õ"¨rÒ2¸"¿*¹*ð 'ó ˆMñ
 ˜2 "Ô%ˆFÜ˜F M¸Õ>ð .˜×)Ñ)¨"Ó-¨bÓ1ˆJÜ˜J¨¸EÖBð  2ó#ˆ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—  )r9   r;   r   r£   r¤   r;   rÊ   r<   r.   r¤  r¥  rM  rs   rt   )rK   rR   r›  r®   r˜   rœ  r¥   rü  r   rl  r   ©rS   r™   r¬  r­  rc  rd  r3   r…  r”  Úbspl2_0rT   s              rW   Útest_2D_mixed_randomz"TestNdBSpline.test_2D_mixed_random_
  s2  € Ü�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©r¨™ �¨rÑ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;   rM  r9   rs   rt   )rK   rO   r   r3   r   r2   r4   r   rv  rw  rÆ   Úanyr   r�   r¨   )rS   rw   rš   Úspl_xÚspl_yrï   rƒ   ÚvaluesÚrgir“  rV   r…  Úbxis                rW   Útest_tx_neq_tyzTestNdBSpline.test_tx_neq_tyo
  sP  € ä�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Ñ!8™˜˜Aˆq�!ŠfÐ!8ˆÑ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;   rM  r9   r.   rˆ  )rS   rT   rw   rš   r,  rŠ  rŒ  Úy_2rö  r‹  rÈ  s              rW   Ú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Ðrk   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;   rD   r¤   r§   r;   r9   r.   rM  ©rD   rs   rt   )	rK   rR   r›  rœ  rÓ  r   Úzipr¨   r   )rS   r™   rw   rš   r�  r“  Út3Úc3r4   Úbspl3rº   r…  rá  s                rW   Ú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 )Nrr   r;   rM  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;   r9   r.   r  ©rw   rš   r�  s      rW   rÛ  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>®
  s2   €  q¨1¨a©4¡x°1°a±4¸!¸A¹#±:Ñ'>À!ÀQÁ$ÈÈ1ÉÁ*ÈqÁ.Ò'Qrk   c                 óB   — d| z  |dz  d|z  z   z  |dz  d|z  z   dz   z  S ©Nr¢   r;   r9   r.   r  rÞ  s      rW   rÛ  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>¯
  s.   €  q¨1¡u°°1±°q¸±s±
Ñ';¸qÀ!¹tÀaÈÁc¹zÈA¹~Ò'Nrk   c                 óB   — d| z  d|dz  z  dz   z  |dz  d|z  z   dz   z  S rà  r  rÞ  s      rW   rÛ  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>°
  s.   €  q¨1¡u°°!°Q±$±¸±
Ñ';¸qÀ!¹tÀaÈÁc¹zÈA¹~Ò'Nrk   c                 ó*   — d| z  d|dz  z  dz   z  dz  S )Nr¢   r;   r9   r  rÞ  s      rW   rÛ  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>±
  s   €  q¨1¡u°°!°Q±$±¸±
Ñ';¸aÒ'?rk   c                  ó   — yrÙ  r  rÞ  s      rW   rÛ  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>²
  s   €  srk   ))r.   r   r   )r9   r   r   )r9   r.   r   )r9   r.   r;   )r9   r.   r<   rE   rØ   rs   rt   )rÓ  r   rK   rR   r›  rœ  r×  rQ   r½  rP   r   rö   )rS   rT   rØ  rÙ  r4   rÚ  r™   rw   rš   r�  rº   Úxi_npr…  r¾  rÙ   r¿  Úxi_Úyi_Úzi_rÀ  s                       rW   Útest_3D_derivativez TestNdBSpline.test_3D_derivative£
  s*  € Ø×%Ñ%¨Ð%Ó,‰	ˆˆB�Ü˜"˜b AÔ&ˆÜ�i‰i×#Ñ# EÓ*ˆØ—+‘+ 7�+Ó+¨aÑ/‰ˆˆ1ˆaä  1 aœLÓ)™L�q’˜LˆÐ)Ø�Z‰Z˜Óˆñ RÙNÙNÙ?Ù*ñ
ˆ
ð  *×/Ñ/Ö1‰OˆB�ÙMRÕSÉU¹M¸CÀÀc™[¨¨c°3Õ7ÈUˆMÒSØŸJ™J }¸B¿J¹J˜JÓGˆMÜ™E "¨Ô,¨mÀ%ÕHÜÐ0˜E×,Ñ,¨RÓ0°Ó4°mÈ%ÖPñ	  2ùò *ùô 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<   r.   rM  )r0   r0   r.   rs   rt   r¤  r¥  ©gÍÌÌÌÌÌì?r«  gffffffþ?)rK   rR   r›  r®   r˜   rœ  r¥   r   rl  r   rü  )rS   r™   r4   rc  rd  Útzr3   r,  Úspl_0r…  rT   s              rW   Ú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±b°¡%¨¥)°bÑ!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<   r.   r/   rM  r¤  r¥  rê  rs   rt   )rK   rR   r›  r®   r˜   rœ  r¥   r   rí   rî   rü  r   )rS   r™   r4   rc  rd  rë  r3   r,  r¯  r°  r…  s              rW   Ú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¸ö	@rk   Ú
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;   )r4   r€   )éþÿÿÿr7   r£   )r+  r  r‚  )r7   g      ø¿ç      @r9   r.   r   rs   rt   ©rÓ  r   rv   rK   rQ   r×  r   )rS   rð  rñ  rØ  rÙ  r4   rÚ  rw   rš   r�  rº   r…  r“  rá  s                 rW   Ú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ö  )rS   r»   rØ  rÙ  r4   rð  rñ  rÚ  rw   rš   r�  rº   r…  r“  rá  s                  rW   Ú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;   rM  )rô  r.   r£   )r+  rÍ   r‚  )r7   r  rõ  r9   r.   Fr   r   r7   rs   rt   )rÓ  r   rv   rK   rQ   r×  rÆ   r   )rS   rØ  rÙ  r4   rÚ  rw   rš   r�  rº   r…  r“  rá  s               rW   Ú#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;   rM  rô  r.   r9   r£   r+  r«  r‚  r7   rõ  rs   rt   )	rÓ  r   rK   rQ   rM   r×  rÆ   rÅ   r   )rS   rØ  rÙ  r4   rÚ  rw   rš   r�  rº   r…  r“  rÁ   rá  s                rW   Útest_x_nan_3DzTestNdBSpline.test_x_nan_3D  sE  € à×%Ñ%Ó'‰	ˆˆ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š  r7   r9   r.   r¤   r¤  r¥  rM  rs   rt   )rK   rR   r›  r˜   rœ  r®   ÚflagsÚc_contiguousr¥   r¹  rü  r   rl  r   rÆ  s              rW   Ú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©r¨™ �¨rÑ2¸ö	@ùÚ2s   Æ:G
c                 óô   — | j                  «       \  }}}t        ||d¬«      }t        d«      D ]  }d||   j                  _        Œ d|j                  _        t        ||d¬«      } |d«       |d«      k(  sJ ‚y )Nr;   rM  Fr(  )rÓ  r   rÚ   r  Ú	writeable)rS   rØ  rÙ  r4   rÚ  r
  Úbspl3_s          rW   Útest_readonlyzTestNdBSpline.test_readonly=  st   € Ø×%Ñ%Ó'‰	ˆˆB�Ü˜"˜b AÔ&ˆä�q–ˆAØ$)ˆBˆq‰E�K‰KÕ!ð à"ˆ�‰Ôä˜2˜r QÔ'ˆá�YÓ¡6¨)Ó#4Ò4Ð4Ñ4rk   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)Nr(  )r<   r§   r¢   r   g¼‰Ø—²Òœ<rt   r;   zData and knots*r  r.   r9   )
rÓ  rK   rQ   r   r8  r¨   r   r  rG   rI   )rS   rØ  rÙ  r4   r…  ÚdmÚdm1s          rW   Útest_design_matrixz TestNdBSpline.test_design_matrixI  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÷ 'ô œ:Ð->Ö?Ü×#Ñ# a¨ V H¨b°1°#°a±%Ô8÷ @Ð?÷ 'Ð&ú÷ @Ð?ú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<   r.   rM  c                 óL   — t         j                  g d¢g d¢g d¢f   } ||«       y )Nr¤  r¥  rê  )rK   rü  )rº   r,  r…  s      rW   rj  z1TestNdBSpline.test_concurrency.<locals>.worker_fnb  s&   € Ü—‘’{Ú&Ú&ð'ñ (ˆBñ ��Grk   re   )	rK   rR   r›  r®   r˜   rœ  r¥   r   r&   )	rS   r™   r4   rc  rd  rë  r3   r,  rj  s	            rW   rk  zTestNdBSpline.test_concurrencyX  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Õ3rk   )r  r  r  r†  rK   rŒ  rŽ  r–  r   r¢  r¨  r®  rÄ  rÈ  rÐ  rÓ  rÛ  rè  rí  rï  ra   rz  r{  r÷  rù  rû  rý  r  r  r  rk  r  rk   rW   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ó4rk   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;   r9   r.   rM  rZ   rt   rR  r   r[   )r   ÚlinearrÂ  rs   )rK   rO   rv  rw  r'   r   Úravelr   r3   Úscipy.interpolater   )rS   rw   rš   rÍ  r“  rV   r…  rƒ   rË  rÌ  rï   ÚRGIrÎ  s                rW   Útest_2D_separable_simplez#TestMakeND.test_2D_separable_simplel  s4  € Ü�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Ñ!8™˜˜Aˆq�!ŠfÐ!8ˆÑ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;   r9   ©r4   Úsolver)é$   r<   r<   rs   rt   r™  )r  r9   r9   )rK   rO   rv  rw  rý  r'   ÚsslÚspsolverâ  ræ  r¨   r   r�   )rS   rw   rš   r“  rV   r…  rÍ  Úvalues4rƒ   rá  r“  Úvalues22s               rW   Útest_2D_separable_trailing_dimsz*TestMakeND.test_2D_separable_trailing_dims€  sl  € ä�I‰I�a‹LˆÜ�I‰I�a‹LˆÜ!*×!2Ñ!2°1°aÔ!8Ô9Ñ!8™˜˜Aˆq�!ŠfÐ!8ˆÑ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	r4   )rÿ  r³  )r;   r.   )r.   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;   r9   r  rZ   rt   )	rK   rO   rv  rw  r'   r  r  r   r  )	rS   r4   rw   rš   r“  rV   r…  rÍ  rƒ   s	            rW   r®  zTestMakeND.test_2D_mixedš  s¬   € ô �I‰I�a‹LˆÜ�I‰I�a‹L˜3ÑˆÜ!*×!2Ñ!2°1°aÔ!8Ô9Ñ!8™˜˜Aˆq�!ŠfÐ!8ˆÑ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Í   r7   r;   r9   r.   rM  )rK   rO   rM   rG   rI   r'   )rS   rw   rš   rÍ  s       rW   Ú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>   r?   r@   r¡  r¢  )r.   r9   r.   r9   r.   r.   )r.   r9   r;   r9   r.   r.   )r.   r9   r9   r9   r.   r.   )rK   rG  )rS   rw   rš   r�  s       rW   Ú_get_sample_2d_datazTestMakeND._get_sample_2d_data®  sR   € ä�H‰HÒ.Ó/ˆÜ�H‰HÒ.Ó/ˆÜ�H‰Hâ"Ú"Ú"Ú"Ú"Ú"ðó	
ˆð �!�Qˆwˆrk   c                 óê   — | j                  «       \  }}}t        ||f|d¬«      }t        ||f|d¬«      }t        j                  g d¢g d¢g«      j
                  }t         ||«       ||«      d¬«       y )	Nr.   rM  r  rÂ  ©r.   gffffff@g333333@rÍ   çffffff
@ç333333ó?r;   ©r.   r&  r'  r@   rU  r0   r;   rs   rt   ©r#  r'   r   rK   rG  r¹  r   ©rS   rw   rš   r�  rƒ   rÎ  r…  s          rW   Ú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£'°Ö6rk   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Â  r%  r(  rs   rt   ©	r#  r'   r  r  r   rK   rG  r¹  r   r*  s          rW   Ú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£'°Ö6rk   r  c                 óð   — | j                  «       \  }}}t        ||f|d|d¬«      }t        ||f|d¬«      }t        j                  g d¢g d¢g«      j
                  }t         ||«       ||«      dd	¬
«       y )Nr;   ç�íµ ÷Æ°>)r4   r  r]   r-  rÂ  r%  r(  rs   r·   r[   r)  )rS   r  rw   rš   r�  rƒ   rÎ  r…  s           rW   Ú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ÖArk   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Â  r%  r(  rs   rt   r.  r*  s          rW   Ú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£'°Ö6rk   zk, meth))r.   r  )r;   r-  )r§   r4  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Ê   r#  r  rÂ  gffffffæ?r§  rC   rš  rs   rt   )
rK   rR   r›  Úcumsumrœ  r'   r  r  r   r   )rS   r4   ÚmethÚrndmrw   rš   r�  rÍ  rƒ   rÎ  r…  s              rW   Ú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£'°Ö6rk   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Úmaxiterr.   r  r  r4   r;   )r#  rG   rI   r'   rK   rý  )rS   rw   rš   r�  Úsolver_argss        rW   Útest_solver_err_not_convergedz(TestMakeND.test_solver_err_not_convergedû  s‘   € Ø×*Ñ*Ó,‰ˆˆ1ˆaØ  !�nˆÜœ:¨XÖ6Ü˜˜A˜ Ñ6 QÐ6¨+Ò6÷ 7ô œ:¨XÖ6Ü˜˜A˜¤§	¡	¨1¨a¨&Ó 1ÑF°QÐF¸+ÒF÷ 7Ð6÷ 7Ð6ú÷ 7Ð6ús   ªBÁ'BÂBÂBN)r  r  r  r  r  ra   rz  r{  r®  r!  r#  r+  r/  r  ÚgmresÚgcrotmkr2  r5  r:  r>  r  rk   rW   r  r  k  s±   „ ò7ò(Bð4 ‡[�[×Ñ˜SÒ"JÓKñ>ó Lð>ò-òò 7ò7ð ‡[�[×Ñ˜X¨¯	©	°3·;±;Ð'?Ó@ñBó AðBò7ð ‡[�[×ÑØÒNóñ7óð7óGrk   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)Nr.   rí  r9   r¢   z1D sequencer  )rK   rO   r�   ra   r	   rI   Ú_bÚfpcheck©rS   r4   r2   rw   s       rW   Ú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;   r9   r.   rD   re   z	Need k+1*r  )	rK   rO   ÚdfitpackÚfpchecra   r	   rI   rD  rE  )rS   r4   rU   r”  r2   rw   s         rW   Ú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Ô÷ :Ð9÷ :Ð9ú÷ :Ð9ú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   r.   r9   r§   )r.   r9   r;   r<   r   r7   r•   zLast k knots*r  zFirst k knots*©rI  rJ  rD  rE  rö  ra   r	   rI   )rS   r4   r2   rw   Útts        rW   Útest_condition_2zTestFpchec.test_condition_2(  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   r.   r9   r§   ©r.   r9   r;   r«  r<   r   é   zInternal knots*r  )rI  rJ  rD  rE  ra   r	   rI   rF  s       rW   Útest_condition_3zTestFpchec.test_condition_3>  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   r.   r§   rQ  r2  zOut of bounds*r  r7   rM  )rS   r4   r2   rw   rh   s        rW   Útest_condition_4zTestFpchec.test_condition_4K  sy  € ð ˆØˆ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)Nr.   )r   r   r.   r9   r9   )r¦  r¦  r¦  rq   úSchoenberg-Whitney*r  )rÍ   rÍ   rÍ   ©rI  rJ  ra   r	   rI   rD  rE  rF  s       rW   Útest_condition_5_x1xmz TestFpchec.test_condition_5_x1xmj  s¯   € àˆÚˆÚˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÖCÜ�J‰J�q˜!˜QÔ÷ Dò ˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÖCÜ�J‰J�q˜!˜QÔ÷ DÐC÷ DÐCú÷
 DÐCús   ÁB>ÂC
Â>CÃ
Cc                 ó‚   — d}g d¢}ddg}t        j                  |||«      dk(  sJ ‚t        j                  |||«      �J ‚y )Nr.   )r   r   r.   r.   rÍ   g333333ã?r   )rI  rJ  rD  rE  rF  s       rW   Útest_condition_5_k1zTestFpchec.test_condition_5_k1x  sI   € àˆÚˆØ�#ˆJˆÜ�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ñ*rk   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   r.   r9   r§   rq   rW  r  rX  rF  s       rW   Ú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Ô÷ Dð ˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆØˆC�‰EˆÜ�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÖCÜ�J‰J�q˜!˜QÔ÷ DÐC÷ DÐCú÷ DÐCú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   r.   r9   r§   r¦  r<   rq   rW  r  rX  rF  s       rW   Ú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Ô÷ Dð ˆE�!‰G�q˜!�fÑˆÜ�‰˜q ! QÓ'¨1Ò,Ð,Ð,Ü�z‰z˜!˜Q Ó"Ð*Ð*Ñ*÷ DÐCú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)Nr.   )	r   r   r9   r;   r<   r§   r¢   r£   r£   )r.   r.   r.   çÍÌÌÌÌÌ@ra  ra  r‚  rq   rW  r  rX  rF  s       rW   Útest_condition_5_3zTestFpchec.test_condition_5_3ž  sX   € àˆÚ'ˆÚ)ˆä�‰˜q ! QÓ'¨2Ò-Ð-Ð-Ü�]‰]œ:Ð-BÖCÜ�J‰J�q˜!˜QÔ÷ D×CÑCús   ÁA#Á#A,N)r  r  r  rG  rK  rO  rS  rU  rY  r[  r]  r_  rb  r  rk   rW   rB  rB    s4   „ ò	 ò ò*!ò, ò!ò> ò+ò ò+ó rk   rB  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".
    r.   r7   r9   rZ   rt   )rK   rÎ  rÚ   r7  rÏ  r   )	rw   r2   r4   Ú	residualsr`  r
  ÚfpartsÚcarriesÚcarrys	            rW   Ú_splitrh  «  sã   € ô 
�‰˜˜A˜a  ˜GÓ	$€Bä6;¼CÀ»GÀA¹IÔ6FÓGÑ6F°ˆi˜˜1™˜b  1¡™gÐ&×*Ñ*Õ,Ð6F€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²Ôr.   z5Internal error, please report it to SciPy developers.r9   N)rh  rÚ   r7  rI   rK   rÎ  r®   )rw   r2   r4   rd  re  r`  Úidx_maxÚ	fpart_maxr
  Úidx_newknotÚnew_knotÚidx_tÚt_news                rW   Ú	_add_knotrp  ¿  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Ø€Lrk   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Ê   rE   r;   r0   r.   r=   rƒ  )r4   r2   r9   r   ©Ú_fitpack_reprorZ   rt   )
rK   rO   ræ  rG  r   r  ru  Úadd_knotrp  r   )rS   rw   rš   r4   r2   r,  rd  Ú_frÚnew_tÚnew_t_pyÚspl2Ú
residuals2Únew_t2Ú	new_t2_pys                 rW   Ú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ˆ	ä˜ 	°Ö6rk   r4   r¿  c                 ó0  — |j                  d|j                  ¬«      }|j                  ||j                  z  dz  «      }t	        t        |||d¬«      «      d   }t        |||d¬«      d   }|j                  ||j                  ¬«      }t        ||d¬«       y )NrÊ   rE   r   ©r4   rÖ  r7   rZ   rt   )	rO   rP   r…  r¬  r’  r"   r   rQ   r   )rS   r4   rT   rw   rš   r2   rN  s          rW   Ú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Ö*rk   c                 óú   — d}|j                  ||j                  ¬«      }|dz  }t        t        ||dd¬«      «      }|j	                  t        t        j                  |«      d«      «      }t        |d   |d¬«       y )	Nre   rE   r;   r   r€  r7   rZ   rt   )rO   rP   r’  r"   rQ   r   rK   r   ©rS   rT   rU   rw   rš   Úknotsri   s          rW   Ú	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°%Ö8rk   c                 óâ   — d}|j                  |«      }|dz  }t        t        ||dd¬«      «      }|j                  t	        t        j                  |«      d«      «      }t        |d   |d¬«       y )Nr•   r;   r   r€  r7   rZ   rt   )rO   r’  r"   rQ   r   rK   r   rƒ  s          rW   Útest_s0_n20zTestGenerateKnots.test_s0_n20  s_   € ØˆØ�I‰I�a‹LˆØˆq‰DˆÜ”^ A q¨A°Ô3Ó4ˆØ—:‘:œk¬"¯*©*°Q«-¸Ó;Ó<ˆÜ˜˜b™	 8°%Ö8rk   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)Nre   r;   r   ©r4   rÖ  Únest)rK   rO   rG   rI   r’  r"   ©rS   rw   rš   s      rW   Útest_s0_nestzTestGenerateKnots.test_s0_nest  sA   € ä�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Ê   rE   r;   r·   r€  )r=   r=   r=   r=   rƒ  rƒ  rƒ  rƒ  )	r=   r=   r=   r=   r@   rƒ  rƒ  rƒ  rƒ  ©
r=   r=   r=   r=   r>   r@   rƒ  rƒ  rƒ  rƒ  )r=   r=   r=   r=   r>   r@   r¢  rƒ  rƒ  rƒ  rƒ  )r=   r=   r=   r=   r>   r?   r@   rU  r£   rƒ  rƒ  rƒ  rZ   rt   r7   N)rO   rP   r…  rK   r¬  r’  r"   rQ   r7  r×  r   r   )rS   rT   rw   rš   r4   r„  ÚwantedÚwantr2   rN  rº   s              rW   Ú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ä�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Ÿ  r.   )rÖ  r4   )r’  rÚ   r"   Únext)rS   rw   Úgens      rW   r”  z!TestGenerateKnots.test_list_input>  s&   € ä”�q“‹NˆÜ˜Q  S¨AÔ.ˆÜˆS�	rk   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Ê   rE   r·   r;   re   r‰  r7   rŽ  rZ   rt   r<   )r4   rŠ  )
rO   rP   r…  r¬  r’  r"   r   rQ   rG   rI   )rS   rT   rw   rš   rÖ  r„  s         rW   Ú	test_nestzTestGenerateKnots.test_nestD  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Øõ	
ô œ:Õ&ä”  1¨°Ô2Ô3÷ '×&Ñ&ú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Ê   rD   ©rË  )	rK   rO   r…  r¬  rG   rI   r’  r"   r¶  r‹  s      rW   rÍ  zTestGenerateKnots.test_weightsU  sŽ   € Ü�I‰I�a‹LˆÜ�F‰F�1”R—U‘U‘7˜1‘9Óˆäœ:Õ&Ü”  1¬¯	©	°"«Ô6Ô7÷ 'ô œ:Õ&Ü”  1¬¯©°«¨Ô4Ô5÷ 'Ð&÷ 'Ð&ú÷ 'Ð&ús   Á+CÂ,CÃCÃCÚnpts)rR  rq   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—  re   r¤   r¢   r9   r;   r€  r   r7   rZ   rt   )rK   rR   r—   r˜   rœ  r…  r¬  Úexpr   r’  r"   r   )	rS   rÖ  r™  r9  rw   rš   r4   r2   rN  s	            rW   Útest_vs_splrepz TestGenerateKnots.test_vs_splrep_  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Ö*rk   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€  r.   r7   r   )
rK   rO   r’  r"   ra   ÚwarnsÚRuntimeWarningr   r7  r   )rS   rU   rw   rš   r„  r~  r`   s          rW   Útest_s_too_smallz"TestGenerateKnots.test_s_too_smallr  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=   r0   r>   r?   )r@   rU  r¢  rƒ  )r=   r=   r=   r=   r.   )rË  rÖ  zweights are zeror  )r"   ra   r	   rI   r’  )rS   r”  s     rW   Útest_zero_weightsz#TestGenerateKnots.test_zero_weights  s5   € äš]ªMº]ÈaÔPˆÜ�]‰]œ:Ð-?Ö@Ü�ŒI÷ A×@Ñ@ús   ±AÁAN)r  r  r  r~  ra   rz  r{  r�  r…  r‡  rŒ  r‘  r”  r–  rÍ  r�  r£  r¥  r  rk   rW   rr  rr  Ö  s˜   „ ò7ð0 ‡[�[×Ñ˜S¢/Ó2ñ+ó 3ð+ò9ò9ò:ò*>òXò4ò"6ð ‡[�[×Ñ˜V¢]Ó3Ø‡[�[×Ñ˜S¢.Ó1ñ+ó 2ó 4ð+ò"+órk   rr  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   r.   r9   Nrµ   rØ   rE   )
r¨   rK   rõ  r
   r6  Úemptyræ  rÚ   r  Ú	factorial)
r2   r4   rU   ÚdeltaÚnrintrs  Útiir”  Úmatrr
  s
             rW   Ú
disc_naiver­  †  s?  € ð 	
�‰�‰
€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Ø€Krk   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 )NrE   r.   r   r   rt  )rw   rš   r2   r4   rK   rn   ræ  rË  r€   r  r
   r6  r¨   Úa_denser  ru  rú  Údiscr  Úb_denser®   r)  rÇ   rÖ  )rS   rw   rš   r2   r4   rÖ  rË  r€   r±  rw  rÇ   s              rW   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¸Ñ%:Ó;Ð;Ñ<ˆŒàˆ�rk   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)rn  r.   r   r9   )rK   Úvstackr±  r³  Úscipy.linalgr¾  r¬  r¹  rÇ   r¨   r
   r2   r4   r€   rÏ  rË  rw   rš   r,  rÖ  )rS   r  Úabr¾  r¬  r%  r~  Úqyrü  r3   r,  Úfps               rW   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‰{Ðrk   )NT)r  r  r  r  rý  r~  r  rk   rW   r¯  r¯  Ÿ  s   „ ñóó.rk   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   r9   re   g€Ÿqá@H&?r§   rD   g…ëQ¸	@)r4  rf   rK   r¬  r…  )rS   rT   rw   rš   rÖ  s        rW   Ú	_get_xyktz_TestMakeSplrepBase._get_xyktÒ  s‚   € Ø�<‰<˜:Ò%Ø—‘˜A˜q¤§¡™w¨Ó+ˆAØ—‘˜“ˆAØˆAà�a˜�7ˆNà—‘˜A˜q "Ó%ˆAØ—‘˜˜$™ ™
Ó# QÑ&ˆAØˆAà�a˜�7ˆNrk   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   re   rD   rí  rX  r.   r9   rŸ  ©rÖ  r4  r;   )rË  rÖ  r4  r7   rB   ©r4   rÖ  r4  )r4   rŠ  rÖ  r4  )rÖ  rŠ  r4  rÊ   é	   )rK   rf   rG   rI   r#   r4  r¶  r¥   r¨   rH   rO   ©rS   rw   rš   rË  s       rW   Útest_input_errorsz%_TestMakeSplrepBase.test_input_errorsà  sµ  € Ü�K‰K˜˜2˜rÓ"ˆÜ�K‰K˜˜2˜rÓ"ˆÜœ:Õ&ä˜˜1 d§l¡lÕ3÷ 'ô œ:Õ&ä˜˜1 ¨T¯\©\Õ:÷ 'ô œ:Õ&ä—‘˜Ÿ™  A qÐ)Ó*ˆAÜ˜˜1 ¨T¯\©\Õ:÷ 'ô
 �G‰G�B‹KˆÜœ:Õ&ä˜˜1˜a™4 1¨°T·\±\ÕB÷ 'ô �W‰W�R‹[ˆLˆÜœ:Õ&ä˜˜1˜a™4 1¨°T·\±\ÕB÷ 'ô �G‰G�Q—W‘W˜Q‘Z �OÓ$ˆÜœ:Õ&ä˜˜1˜a™4 1¨°T·\±\ÕB÷ 'ô œ:Õ&ä˜™$˜B˜$™  A¡¨°d·l±lÕC÷ 'ô œ9Õ%ä˜˜1˜a™4 3¨#°t·|±|ÕD÷ &ô œ:Õ&ä˜˜1˜a™4 2¨t¯|©|Õ<÷ 'ô œ:Õ&ä˜˜1˜a™4 1¨1°¸T¿\¹\ÕJ÷ 'ô œ:Õ&ä˜˜1˜a™4 1¨2°t·|±|ÕD÷ 'ô œ:Õ&äœŸ	™	 !›¤b§i¡i°£l°cÀ4Ç<Á<ÕP÷ 'Ð&÷a 'Ñ&ú÷ 'Ñ&ú÷ 'Ñ&ú÷ 'Ñ&ú÷
 'Ñ&ú÷
 'Ñ&ú÷ 'Ñ&ú÷ &Ñ%ú÷ 'Ñ&ú÷ 'Ñ&ú÷ 'Ð&ú÷ 'Ð&ú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Á  r7   )r2   r4   rÖ  r4  rZ   rt   )r’  r"   r4  r#   r   r2   r3   r4   )rS   rw   rš   r4   rÖ  r2   Úspl_autoÚspl_ts           rW   Ú_test_with_knotsz$_TestMakeSplrepBase._test_with_knots  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Ò$Ð$Ñ$rk   r4   ©r.   r9   r;   r<   r§   r¢   c                 óT   — | j                  «       \  }}}| j                  ||||«       y rË  )r¾  rÈ  )rS   r4   rw   rš   rÖ  s        rW   Útest_with_knotsz#_TestMakeSplrepBase.test_with_knots!  s(   € à—.‘.Ó"‰ˆˆ1ˆaà×Ñ˜a  A qÕ)rk   c                 óV  — t        |||| j                  ¬«      }t        |||| j                  ¬«      }t        t	        |||| j                  ¬«      «      d   }t        |j                  |j                  d¬«       t        |j                  |d¬«       t        |j                  |d¬«       y )Nr3  r7   rZ   rt   )r#   r4  r   r’  r"   r   r3   r2   )rS   rw   rš   r4   r,  Úspl_ir2   s          rW   Ú_test_default_sz#_TestMakeSplrepBase._test_default_s'  s|   € Ü˜!˜Q !¨T¯\©\Ô:ˆÜ" 1 a¨1°d·l±lÔCˆÜ”  1¨°4·<±<Ô@ÓAÀ"ÑEˆä˜Ÿ™˜uŸw™w¨UÕ3Ü˜Ÿ™˜q uÕ-Ü˜Ÿ™ ¨Ö/rk   c                 óR   — | j                  «       \  }}}| j                  |||«       y rË  )r¾  rÎ  )rS   r4   rw   rš   rº   s        rW   Útest_default_sz"_TestMakeSplrepBase.test_default_s0  s&   € à—.‘.Ó"‰ˆˆ1ˆaØ×Ñ˜Q  1Õ%rk   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   r9   rŸ  r;   r5   ©r4   rÖ  r¥  rÁ  r.   r  rt   )r4  rK   rf   r¬  r…  rO   ÚwarningsÚcatch_warningsÚsimplefilterr¢  r   r#   r   r2   r®   r3   r4   )rS   rÖ  rw   rš   r`   r,  s         rW   r£  z$_TestMakeSplrepBase.test_s_too_small5  s,  € ð ˆØ�<‰<˜:Ò%Ü—‘˜A˜q¤§¡™w¨Ó+ˆAÜ—‘�q“	‰Aä—	‘	˜"“ˆAØ�1‘ˆAä×$Ñ$Õ&Ü×!Ñ!ØÜôô ˜˜A  a¨d¯l©l¸jÑ.HÔJˆC÷ 'ô ×$Ñ$Õ&Ü×!Ñ!ØÜôô ˜a  a¨1°d·l±lÔCˆC÷ 'ô 	˜Ÿ™˜s 1™vÔ&ÜœŸ™˜cŸe™e a S¨#¯%©%°©'¡]Ð2Ñ3Ø˜A™ Uö	,÷ 'Ð&ú÷ 'Ð&ús   Á>8E(Ã5E4Å(E1Å4E=r(  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 )
Nre   rË   r   r9   r;   r3  çñhãˆµøä>rÁ  r.   )	r4  rK   rf   r¬  rŠ  rO   r#   r3   r  )rS   r4   rU   rw   rš   r,  rŒ  rö  s           rW   Ú
test_shapez_TestMakeSplrepBase.test_shapeR  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Ò Ð Ñ rk   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)Nre   r   r9   r.   ç:Œ0âŽyE>ÚnonsenserÀ  )rK   r¬  rf   rœ  rG   rI   r#   ©rS   ÚNr“  rV   rw   rš   s         rW   Útest_error_on_invalid_bc_typez1_TestMakeSplrepBase.test_error_on_invalid_bc_typeg  s]   € ØˆØ�!”B—E‘E‘'ˆ1ˆÜ�K‰K˜˜1˜a !™eÓ$ˆÜ�F‰F�1‹Iˆäœ:Õ&Ü˜˜1 ¨jÕ9÷ '×&Ñ&ús   ÁA/Á/A8r4  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   r9   re   r.   r§   rÚ  rË   ©rË  r4   rÖ  r¥  ©rË  rÖ  r4   r4  rt   )rK   rf   r¬  r…  r7  r   r#   r   r2   r®   r3   r4   )rS   r4  r4   rw   rš   rË  r`   r,  s           rW   Ú%test_make_splrep_with_unequal_weightsz9_TestMakeSplrepBase.test_make_splrep_with_unequal_weightsp  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ö	+rk   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   r.   rÚ  rt   )r   r2   rK   r®   r3   r4   )r,  r`   s     rW   Ú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¨ö/rk   r   r9   re   Fr.   r§   r;   rÚ  rË   rà  rá  )rK   rf   r¬  r…  rü  r¹  r  r  r7  r   r#   )rS   r4  rå  rw   rš   rá   r�  rË  Úw1rº   r`   r,  s               rW   Ú,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�rk   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   r.   re   r9   r7   r;   rÚ  )ÚxbÚxer4   rÖ  r2   rŠ  r4  )rK   rf   r…  r¬  rG  r#   r  r
   r2   r¨   r4   r   rQ   )
rS   r4  r4   rw   rš   ré  rê  rÖ  r2   r,  s
             rW   Ú%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ÕCrk   rU   )r�   é3   r  rD   rÖ  )re   rÊ   r§   r.   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   r9   r¤   rË   ©rÖ  r¥  rÀ  rD   r.   rZ   rt   )rK   rR   r›  r®   r˜   rœ  r¬  r…  rŠ  r   r4  r#   r   r2   r3   ©
rS   rU   rÖ  r™   rw   rš   r2   r3   r4   r,  s
             rW   Ú(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rk   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   r9   r¤   rË   rî  )rÖ  r4  r2   r.   rZ   rt   )rK   rR   r›  r®   r˜   rœ  r¬  r…  rŠ  r   r4  r#   r   r3   rï  s
             rW   Ú"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°Ö6rk   )r  r  r  r4  rK   r¾  rÄ  rÈ  ra   rz  r{  rË  rÎ  rÐ  Úthread_unsafer£  rØ  rÞ  râ  rç  rë  rð  rò  r  rk   rW   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ñ7rk   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)ÚTestMakeSplrepr4   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   ©ÚFr.   rB   r@   r§   ©r.   re   r�   rZ   rt   )Ú scipy.interpolate._fitpack_reprorø  r¾  rK   rG  r¯  r   )
rS   r4   rø  rw   rš   rÖ  r2   ÚfÚf_dr  s
             rW   Ú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 !Ó$ˆÛˆAÜ™A˜a›D¡# a£&¨uÖ5ñ rk   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÷  r.   rB   r@   r§   rE   r˜  rù  rZ   rt   )rú  rø  r¾  rK   rG  rO   r¨   ræ  r¯  r   rß   )rS   r4   rø  rw   rš   rÖ  r2   rË  ÚfwÚfw_drü  r  s               rW   Ú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¸Ö?Ð?Ð?ñ rk   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;   r9   rZ   rt   )rú  Úinterpolateru  rK   rR   r›  r®   r˜   rœ  r7  rú  r²  r  r­  r¨   r   )rS   rw  r™   r2   rU   r4   ÚDÚD_denses           rW   Ú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¨Ö/rk   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   r.   rB   r@   r§   r€  rZ   rt   )r¾  rQ   r   rÅ   r#   r   r3   r¨   )
rS   rT   r4   rw   rš   rÖ  rN  r2   r3   r,  s
             rW   Ú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¸Ö>rk   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€  r7   )r2   r4   rÖ  rZ   rt   )r¾  r’  r"   r#   r   r2   r3   r4   )rS   r4   rw   rš   rÖ  r2   rÆ  rÇ  s           rW   rË  zTestMakeSplrep.test_with_knots  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Ò$Ð$Ñ$rk   c                 ó¶   — d}|j                  ||j                  ¬«      }|dz  }d}t        |||d¬«      }|j                  j                  d   d|dz   z  k(  sJ ‚y )Nre   rE   r;   r.   r€  r   r9   )rO   rP   r#   r2   r¨   )rS   rT   rU   rw   rš   r4   r,  s          rW   Útest_no_internal_knotsz%TestMakeSplrep.test_no_internal_knots*  s]   € àˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰DˆØˆÜ˜!˜Q ! qÔ)ˆØ�u‰u�{‰{˜1‰~  A a¡C¡Ò(Ð(Ñ(rk   c                 óÈ   — d}|j                  ||j                  ¬«      }|dz  }t        ||d¬«      }t        ||d¬«      }t	        |j
                  |j
                  d¬«       y )Nre   rE   r;   rM  rZ   rt   )rO   rP   r#   r   r   r3   )rS   rT   rU   rw   rš   r,  rÍ  s          rW   rÐ  zTestMakeSplrep.test_default_s3  sV   € ØˆØ�I‰I�a˜rŸz™zˆIÓ*ˆØˆq‰DˆÜ˜!˜Q !Ô$ˆÜ" 1 a¨1Ô-ˆä˜Ÿ™˜uŸw™w¨UÖ3rk   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   r.   r  rt   r9   )rK   rO   ra   r¡  r¢  r   r#   r   r2   r   r®   r3   r4   r7  )rS   rU   rw   rš   r~  r`   r,  s          rW   r£  zTestMakeSplrep.test_s_too_small<  s°   € àˆÜ�I‰I�a‹LˆØˆq‰Dˆä�\‰\œ.Ô)¨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÷	 *ô �1‹v˜Š{Ð‰{÷ *Ð)ú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@rE   )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   r9   rí  )rË  r4   rÖ  )rK   rQ   rP   r¨   rG   rI   r#   rÃ  s       rW   Útest_issue_22704zTestMakeSplrep.test_issue_22704J  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©re   r;   rE   r;   rM  r×  r€  r.   )rO   rP   r#   r3   r  )	rS   rT   rU   r4   rw   rš   r,  rŒ  rö  s	            rW   rØ  zTestMakeSplrep.test_shapeX  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Ò Ð Ñ rk   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  rE   r;   r   r€  r.   r9   )rO   rP   r#   r3   r  r2   r¨   )rS   rT   rU   r4   rw   rš   rì  rŒ  s           rW   Útest_s0_vs_notzTestMakeSplrep.test_s0_vs_noth  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©¡;Ò.Ð.Ñ.rk   N)r  r  r  ra   rz  r{  rý  r  r  r  rË  r  rÐ  r£  r  rØ  r  r  rk   rW   rõ  rõ  â  s}   „ ð ‡[�[×Ñ˜SÒ"4Ó5ñ	6ó 6ð	6ð ‡[�[×Ñ˜SÒ"4Ó5ñ@ó 6ð@ò 0ò?ò%ò)ò4òò.ò!ó /rk   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Ë   r4   rÉ  c                 óÈ   — |j                  ddd«      }|j                  d«      }t        |||d| j                  ¬«      }|j                  j
                  d   d|dz   z  k(  sJ ‚y )Nr   re   rD   rÖ  r.   rÁ  r9   )rf   r¶  r#   r4  r2   r¨   )rS   r4   rT   rw   rš   r,  s         rW   r  z-TestMakeSplrepPeriodic.test_no_internal_knots}  s[   € ð �K‰K˜˜2˜rÓ"ˆØ�G‰G�E‹Nˆä˜!˜Q ! q°$·,±,Ô?ˆØ�u‰u�{‰{˜1‰~  A a¡C¡Ò(Ð(Ñ(rk   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 )Nre   r   r9   rÁ  r.   )rK   rf   r¬  r…  rŠ  r#   r4  r3   r  r2   r¨   )rS   r4   rU   rw   rš   rì  rŒ  s          rW   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Ò,Ð,Ñ,rk   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 )Nre   r   r9   r.   rE   rÚ  rÀ  r×  rL  r[   rÌ   r1  r§   r;   )	r¬  rf   rP   rŠ  r#   r4  r   r   r…  )rS   rT   rÝ  r“  rV   rw   rš   r,  s           rW   Ú 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¸$Ö?rk   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)Nre   r   r9   r.   rÚ  rÀ  )rK   r¬  rf   rœ  rG   rI   r#   r4  rÜ  s         rW   Ú$test_periodic_with_non_periodic_dataz;TestMakeSplrepPeriodic.test_periodic_with_non_periodic_data¦  sa   € ØˆØ�!”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=   r0   rU  r   r.   rË   )rË  r4   r4  rÖ  )rË  r4   r¥  rÖ  )	rK   rG  r#   r   r   r2   r®   r3   r4   )rS   rÖ  rw   rš   rË  r,  r`   s          rW   Ú'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™õ	 rk   Úk_fp))r.   ç-Cëâ6¿)r9   r   )r;   g�ÕA¹È˜¿rL  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)Nre   r   r.   r9   rÒ  r   r€  r5   r>   çü©ñÒMbP?r=   r0   )rK   rf   r…  r¬  r   r    rÓ  rÔ  rÕ  r¢  r!   rN   r,  rG  r   )rS   r  rÖ  rU   rw   rš   r4   rº  r`   Úfp0Úsplinerº   ÚbsÚx_checkÚy_checks                  rW   Ú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¸Ô;ˆÜ×$Ñ$Õ&Ü×!Ñ! (¬NÔ;Ü˜& #¨¨C°!©G¨´r·v±v¸rÀA¹vÐ6FÐ'GÈÈUÉÓSˆA÷ 'ð
 �Z‰ZˆÜ—(‘(˜C ˜:Ó&ˆÙ�W“+ˆä˜ ™
 G¨A¡JÕ/÷ 'Ð&ús   ÂADÄDN)r  r  r  r4  ra   rz  r{  r  r  r  r  r  r(  r  rk   rW   r  r  x  sÉ   „ ð €Gà‡[�[×Ñ˜SÒ"4Ó5ñ)ó 6ð)ð ‡[�[×Ñ˜SÒ"4Ó5ñ-ó 6ð-ò@ò"<ð ‡[�[×Ñ˜S 1 e *Ó-ñ ó .ð ð ‡[�[×Ñ˜VÒ%QÓRØ‡[�[×Ñ˜S 4 &Ó)ñ0ó *ó Sñ0rk   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)ÚTestMakeSplprepre   r;   c                 óª   — |j                  ||j                  ¬«      |j                  z  |z  }|j                  |«      |j	                  |«      g}|||fS )NrE   )rO   rP   r¬  r…  rŠ  )rS   r”  r4   rT   rw   rš   s         rW   Ú_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ˆrk   rÖ  ©r   rŸ  r"  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Â  re   r-  ©rÖ  rZ   rt   r.   rû   )rK   rO   r¬  r…  rŠ  r   r$   r   r2   r7  rQ   r¹  r3   r
   )rS   rÖ  r”  r4   rw   rš   Ú	num_knotsr2   r3   Úu_r,  r  rï   s                rW   Ú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rk   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   r9   r/  rt   rZ   r.   )r,  r  r’  rK   r¨   r   rQ   r   r7  r   r$   r2   r3   r¹  r4   rG   rI   )	rS   rÖ  rº   rš   r`   r  Útck_aÚu_ar,  s	            rW   Ú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 )Nre   ©r”  rT   rZ   rt   ©r,  r$   r   r‰   ©rS   rT   rw   rš   r4   r,  r  s          rW   Útest_default_s_is_zeroz&TestMakeSplprep.test_default_s_is_zero  s?   € Ø—-‘- "¨�-Ó,‰ˆˆ1ˆaä˜a“‰ˆˆQÜ™˜A› §¡¨£°%Ö8rk   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 )Nre   r8  r   r/  rZ   rt   r·   )r,  r$   r   r‰   rü   r3   r¨   )	rS   rT   rw   rš   r4   rÍ  Úu_iÚspl_nÚu_ns	            rW   Ú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�}‰} §¡§¡Ò-Ð-Ñ-rk   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Ê   rE   r   r/  rŸ  r×  ©r.   rÊ   rZ   rt   )	rK   rO   ræ  rG   rI   r   r$   r¨   r   )rS   rw   r`   r1  r,  r  s         rW   r†  zTestMakeSplprep.test_1D2  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  rK   r,  ra   rz  r{  r2  r6  r;  r@  r†  r  rk   rW   r*  r*  Ø  sl   „ à˜q Ró ð
 ‡[�[×Ñ˜SÒ"6Ó7ñAó 8ðAð: ‡[�[×Ñ˜SÒ"6Ó7ñ/ó 8ð/òB9ò.ó1rk   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)ÚTestMakeSplprepPeriodicre   r;   c                 ó¨   — |j                  dd|j                  z  ||j                  ¬«      }|j                  |«      |j	                  |«      g}|||fS )Nr   r9   rE   )rf   r¬  rP   r…  rŠ  )rS   rU   r4   rT   rw   rš   s         rW   r,  z TestMakeSplprepPeriodic._get_xykG  sI   € Ø�K‰K˜˜1˜RŸU™U™7 A¨R¯Z©ZˆKÓ8ˆØ�V‰V�A‹Y˜Ÿ™˜q›	Ð"ˆØ�!�Qˆwˆrk   rÖ  ©r   rL  r×  r1  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 )Nre   r   r9   rŸ  r   rG  r.   rî  rË   rÀ  rZ   rt   rû   r1  r[   )rK   rf   r¬  r…  rŠ  r   r$   r   r7  r2   r
   )rS   rÖ  rU   rw   rš   r0  r2   r3   r4   r1  r,  r  s               rW   r2  z.TestMakeSplprepPeriodic.test_simple_vs_splprepL  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¸Ó ;Ø"¨ö	0rk   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   r9   r.   rî  rt   rZ   rË   rÀ  )r,  r  r’  rK   r¨   r   rQ   r   r7  r×  r   r$   r4   rG   rI   r¹  )rS   rÖ  rº   rš   r`   r  r4  r5  rÇ  rÈ  r,  s              rW   r6  z+TestMakeSplprepPeriodic.test_array_not_liste  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™& %¨¡(Ö+‰FˆB�Ü˜B ¨Ö/ð ,à�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¨›{Ò*Ð*Ð*äœ:Õ&ÜœŸ™ A›Ÿ™¨A°zÕB÷ '×&Ñ&ús   È,H7È7I c                 ó˜   — | j                  d|¬«      \  }}}t        |d¬«      \  }}t         ||«      |j                  |«      d¬«       y )Nre   ©rU   rT   rË   rX  rZ   rt   r9  r:  s          rW   r;  z.TestMakeSplprepPeriodic.test_default_s_is_zero„  sB   € Ø—-‘- "¨�-Ó,‰ˆˆ1ˆaä˜a¨Ô4‰ˆˆQÜ™˜A› §¡¨£°%Ö8rk   c                 ó<  — | j                  d|¬«      \  }}}t        |dd¬«      \  }}t        |dd¬«      \  }}t        ||d¬«       |j                  |«      }	t         ||«      |	d¬«       t         ||«      |	d	d
¬«       |j                  |j                  k(  sJ ‚y )Nre   rK  r   rË   rÀ  rÌ   rZ   rt   r·   r1  r[   )r,  r$   r   r‰   rü   )
rS   rT   rw   rš   r4   rÍ  r=  r>  r?  Úy_arrs
             rW   r@  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Ò'Ð'Ñ'rk   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   r9   rÊ   r.   r¤  rË   rÀ  rŸ  rZ   rB  rt   )
rK   rf   r¬  r…  rG   rI   r   r$   r¨   r   )rS   rw   r,  r  s       rW   r†  zTestMakeSplprepPeriodic.test_1D˜  sÏ   € Ü�K‰K˜˜1œRŸU™U™7 AÓ&ˆÜ�F‰F�1‹IˆÜœ:Õ&Ü�A˜1Õ÷ 'ô œ:Õ&Ü˜˜a¨Õ4÷ 'ô œ:Õ&Ü˜˜c¨:Õ6÷ 'ô ˜q˜c U°JÔ?‰ˆˆQá�1‹v�|‰|˜vÒ%Ð%Ð%Ü™˜A›  ¨%Ö0÷ 'Ð&ú÷ 'Ð&ú÷ 'Ð&ús$   ÁC.Á2C:ÂDÃ.C7Ã:DÄDNrC  r  rk   rW   rE  rE  D  sm   „ ð ˜q Ró ð
 ‡[�[×Ñ˜SÒ"7Ó8ñ0ó 9ð0ð0 ‡[�[×Ñ˜SÒ"7Ó8ñCó 9ðCò<9ò(ó1rk   rE  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 ©Nr7   )rK   Úmoveaxisr¨   Ú_batch_shaper�   Ú_splinesÚ_axis)rS   rw   rš   rü   r$  ÚkwargsÚyis          rW   rý  zBatchSpline.__init__¬  sk   € Ü�K‰K˜˜4 Ó$ˆØŸG™G C R˜LˆÔØ;<¿9¹9ÀRÈÏÉÐQSÉÔ;UÓVÑ;U°R™  2Ñ0¨Ó0Ð;UÑ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 rR  )rU  rK   r�   rT  r¨   rS  rV  )rS   rw   r$  rš   s       rW   r~  zBatchSpline.__call__²  sd   € Ø%)§]¢]Ó3¡]˜6‰V�A�Y ]ˆÐ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Ë  )rU  r  rK   r�   rT  )rS   r“  rV   r€   r$  rš   s         rW   r  zBatchSpline.integrate·  sF   € Ø?C¿}º}ÓM¹}°VˆV×Ñ˜a  KÕ0¸}ˆÐMÜ�z‰z˜!˜T×.Ñ.Ó/Ð/ùò Ns   �Ac                 ó–   — t        j                  | «      }|j                  D �cg c]  }|j                  |«      ‘Œ c}|_        |S c c}w rË  )rö  ÚdeepcopyrU  rö   ©rS   rÙ   r  r$  s       rW   rö   zBatchSpline.derivative»  s@   € Ü�m‰m˜DÓ!ˆØ<?¿LºLÓI¹L°&˜×)Ñ)¨"Õ-¸LÑIˆŒØˆ
ùò Jó   ¤Ac                 ó–   — t        j                  | «      }|j                  D �cg c]  }|j                  |«      ‘Œ c}|_        |S c c}w rË  )rö  r\  rU  rý   r]  s       rW   rý   zBatchSpline.antiderivativeÀ  s@   € Ü�m‰m˜DÓ!ˆØ@CÇÂÓMÁ°f˜×-Ñ-¨bÕ1ÀÑMˆŒØˆ
ùò Nr^  rË  )r  r  r  rý  r~  r  rö   rý   r  rk   rW   rP  rP  ª  s   „ òò@ó
0òó
rk   rP  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, kwargsrQ  r0   r¼  r½  r¾  Ú
eval_shape)r  ©r.   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û{ re   r9   r;   r<   )r   re   r7   r   r.   )r2   r4   rü   )rü   r$  r¥   )rK   rR   r›  rf   rS  r   rJ   rP  rœ  ÚtestingÚassert_allcloserý   rö   r  )rS   Úmake_splinerW  rü   rb  r™   rU   r¨   Údomainrw   rš   r4   r2   r  Úrefs                  rW   Ú
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ÕRrk   N)
r  r  r  ra   rz  r{  r   r   r   rj  r  rk   rW   ra  ra  Æ  s˜   „ Ø‡[�[×ÑÐ2Ø
˜bÐ	!Ø
 Ð	$Ø
 %¨ Ð	.Ø
˜H iÐ0Ð	1Ø
˜H dÐ+Ð	,ð		óð ‡[�[×Ñ˜\Ò+;Ó<Ø‡[�[×Ñ˜V¢ZÓ0ñSó 1ó =óñSrk   ra  r  r  rc  )zr<  ro  rv  r  r…  ro  rö  rÓ  r}  ÚnumpyrK   Úscipy._lib._array_apir   r   r   r   r   r   Úscipy._lib.array_api_extraÚ_libÚarray_api_extrarŒ  ra   r	   rG   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(   rI  r)   rD  r*   rz  ry  r,   r€  rÂ  rÅ  rŠ   r‹   rê   ru   rç   r_   rÁ  rù  r9  r¡  r»  r{  rø  rÀ  rú  r  r  r  r  rB  rD  rf  r  rJ  rl  r�  r  rB  rh  rp  rr  r­  r¯  r¼  rõ  r  r*  rE  rP  ra  r  rk   rW   Ú<module>rx     s1  ðÛ 	Û Û Û Û Û Û Û Û 
ã ÷÷ ÷ )Ð (Ý *Û ÷÷ ÷ ÷ õ õ
 ß !Ð !÷Eõ E÷ Bç GÑ Gç /Ð /Ý &Ý 9õ 5å 3Ý -Ý &à—;‘;×/Ñ/Ð ñ �7Ó÷_
)ð _
)ó ð_
)ñD �7Ó÷S$ð S$ó ðS$òl6ò,ò$Gò>òð ó óð$   bó +ò÷$_)ñ _)ñD Ð%Ó&÷`?ð `?ó 'ð`?òFó8ð8 !Ÿ+™+×1Ñ1°(¸YÈÐ<MÓNÐ ñ �?Ó#÷~:ð ~:ó $ð~:÷Bñ ó>)òX	ò÷(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rk   