§
    fŠtjfW ã                   ó  — 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jL        jM        ZM ee¦  «         G d„ d¦  «        ¦   «         ZN ee¦  «         G d„ d¦  «        ¦   «         ZOd„ ZPd„ ZQd„ ZRd„ ZSd„ ZTe
fd„ZUdSd„ZVdde
fd„ZWd„ ZX G d„ d¦  «        ZY ee¦  «         G d„ d ¦  «        ¦   «         ZZd!„ Z[dTd"„Z\ejL         ]                    d#d$d%g¦  «        Z^ ee¦  «         G d&„ d'¦  «        ¦   «         Z_ G d(„ d)¦  «        Z`dUd+„Zad,„ Zbd-„ Zc G d.„ d/¦  «        Zdd0„ Ze ee)¦  «         G d1„ d2¦  «        ¦   «         Zfd3„ Zgd4„ Zhd5„ Zi G d6„ d7¦  «        Zj ee(¦  «         G d8„ d9¦  «        ¦   «         Zk G d:„ d;¦  «        Zl G d<„ d=¦  «        Zmd>„ Znd?„ Zo ee:¦  «         G d@„ dA¦  «        ¦   «         ZpdB„ Zq G dC„ dD¦  «        Zr G dE„ dF¦  «        Zs ee;¦  «         G dG„ dHes¦  «        ¦   «         Zt ee;¦  «         G dI„ dJes¦  «        ¦   «         Zu ee<¦  «         G dK„ dL¦  «        ¦   «         Zv ee<¦  «         G dM„ dN¦  «        ¦   «         Zw G dO„ dP¦  «        Zx G dQ„ dR¦  «        ZydS )Vé    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                   óV  — 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"j#         $                    d& e%d'd(¦  «        ¦  «        d)„ ¦   «         Z&d*„ Z'd+„ Z(e"j#         $                    d,g d-¢¦  «        e"j#         $                    d. e%d/¦  «        ¦  «        d0„ ¦   «         ¦   «         Z)d1„ Z*d2„ Z+d3„ Z,e"j#         $                    d4g d5¢¦  «        d6„ ¦   «         Z-e"j#         $                    d4g d5¢¦  «        d7„ ¦   «         Z.d8„ Z/d9„ Z0d:„ Z1e"j#         2                    e3j4        d;k    d<e5¬=¦  «        d>„ ¦   «         Z6d?S )@ÚTestBSplinec           
      ó@  — t          t          t          ft          fi t	          ddgdgd¬¦  «        ¤Ž t          j        d¬¦  «        5  t          t          t          fi t	          dt
          j        gdgd¬¦  «        ¤Ž d d d ¦  «         n# 1 swxY w Y   t          t          t          fi t	          dt
          j        gdgd¬¦  «        ¤Ž t          t          t          fi t	          ddgdgd¬¦  «        ¤Ž t          t          t          fi t	          dgdggdgd¬¦  «        ¤Ž t          t          t          fi t	          g d	¢dgd¬¦  «        ¤Ž t          t          t          fi t	          g d
¢ddgd¬¦  «        ¤Ž t          t          t          fi t	          g d¢g d¢d¬¦  «        ¤Ž t          t          t          fi t	          g d¢g d¢d¬¦  «        ¤Ž t          t          t          fi t	          g d¢g d¢d¬¦  «        ¤Ž d\  }}| 	                    ||z   dz   |j
        ¬¦  «        }|                     t
          j                             |¦  «        ¦  «        }t          |||¦  «        }t          ||j        ¦  «         t          ||j        ¦  «         ||j        k    sJ ‚d S )Né   ù              ð?ç      ð?r   ©ÚtÚcÚkÚignore)Úinvalidéÿÿÿÿ©r   r.   é   ©r   r.   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          úc/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/scipy/interpolate/tests/test_bsplines.pyÚ	test_ctorzTestBSpline.test_ctor4   s:  € å•y¥*Ð-­wð 	1ð 	1Ý˜!˜S˜ b T¨QÐ/Ñ/Ô/ð	1ð 	1ð 	1åŒ[ Ð*Ñ*Ô*ð 	Sð 	SÝ�*¥gÐRÐRµ¸½B¼F¸ÈÀtÈqÐ1QÑ1QÔ1QÐRÐRÐRð	Sð 	Sð 	Sñ 	Sô 	Sð 	Sð 	Sð 	Sð 	Sð 	Sð 	Søøøð 	Sð 	Sð 	Sð 	Så•j¥'ÐNÐN­T°Q½¼°KÀBÀ4È1Ð-MÑ-MÔ-MÐNÐNÐNÝ•j¥'ÐJÐJ­T°Q¸°GÀ¸tÀqÐ-IÑ-IÔ-IÐJÐJÐJÝ•j¥'ÐMÐM­T°a°S¸1¸#°JÀ2À$È!Ð-LÑ-LÔ-LÐMÐMÐMõ 	•j¥'ÐKÐK­T°I°I°IÀ!ÀÈÐ-JÑ-JÔ-JÐKÐKÐKÝ•j¥'ð 	<ð 	<Ý˜˜˜¨R°¨H¸Ð:Ñ:Ô:ð	<ð 	<ð 	<õ 	•i¥ð 	Oð 	OÝÐ1Ð1Ð1°\°\°\ÀWÐMÑMÔMð	Oð 	Oð 	Oå•i¥ð 	Kð 	KÝÐ1Ð1Ð1°\°\°\ÀSÐIÑIÔIð	Kð 	Kð 	Kõ 	•j¥'ð 	Bð 	BÝÐ,Ð,Ð,°
°
°
¸aÐ@Ñ@Ô@ð	Bð 	Bð 	Bð ‰ˆˆ1Ø�IŠI�a˜‘c˜!‘e 2¤:ˆIÑ.Ô.ˆØ�JŠJ•r”y×'Ò'¨Ñ*Ô*Ñ+Ô+ˆÝ�A�q˜!ÑÔˆå˜˜1œ3ÑÔÐÝ˜˜1œ3ÑÔÐØ�A”CŠxˆxˆxˆxˆxˆxs   Á6B
Â
BÂBc                 ó@  — t          ¦   «         }|j        }t          |j        |d         dd¬¦  «         t          |j        |d         dd¬¦  «         |j        |d         k    sJ ‚t          j        t          ¦  «        5  d|_        d d d ¦  «         d S # 1 swxY w Y   d S )Nr   çVçž¯Ò<©ÚatolÚrtolr.   r9   Úfoo)	Ú_make_random_splineÚtckr   r2   r3   r4   Úpytestr	   ÚAttributeError)rS   rV   r`   s      rW   Útest_tckzTestBSpline.test_tckW   sÞ   € ÝÑ!Ô!ˆØŒeˆå˜œ˜S œV¨%°eÐ<Ñ<Ô<Ð<Ý˜œ˜S œV¨%°eÐ<Ñ<Ô<Ð<ØŒs�c˜!”fŠ}ˆ}ˆ}ˆ}õ Œ]�>Ñ*Ô*ð 	ð 	ØˆAŒEð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á>BÂBÂBc                 óH  — t          |                     g d¢¦  «        |                     ddg¦  «        d¬¦  «        }|                     ddd¦  «        }|                     |dk     |                     d|j        ¬	¦  «        d
¦  «        }t           ||¦  «        |¦  «         d S )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   s–   € õ �b—j’j   Ñ,Ô,°·
²
¸BÀ¸7Ñ0CÔ0CÀqÐIÑIÔIˆØ�[Š[˜˜A˜rÑ"Ô"ˆà—8’8˜B šG R§Z¢Z°¸"¼* ZÑ%EÔ%EÀsÑKÔKˆÝ˜˜˜"™œ˜xÑ(Ô(Ð(Ð(Ð(ó    c                 óF  — t          j        ddd¦  «        }t          ddgdgd¬¦  «        }t           ||¦  «        t          j        |¦  «        dz  ¦  «         t          g d¢ddgd¬¦  «        }t           ||¦  «        t          j        |d	k     dd
¦  «        ¦  «         d S )Nr   r.   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   s¢   € ÝŒ[˜˜A˜rÑ"Ô"ˆå�q˜!�f  ¨Ð*Ñ*Ô*ˆÝ˜˜˜"™œ�rœ|¨BÑ/Ô/°#Ñ5Ñ6Ô6Ð6å�l�l�l q¨! f°Ð2Ñ2Ô2ˆÝ˜˜˜"™œ�rœx¨¨Tª	°3¸Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=rk   c           	      óf  — |                      g d¢¦  «        }|                      g d¢¦  «        }d}t          |||¦  «        }|                     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	           ||¦  «        |                      |
¦  «        d¬¦  «         d S )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ˆKÑ7Ô7ˆÝØˆAˆa‰DŒDØˆaŒD•�q˜R�‘”Ñ  1 Q¤4­¨a°©c°bÐ(9Ñ(9Ô(9Ñ#9Ñ9¸A¸a¼DÅÀqÈÁsÈrÐARÑARÔARÑ<RÑRØð	
ñ 	
ô 	
ð 	
õ
 �rœz¨A¨q°!¨9Ñ5Ô5Ñˆˆd�DÝ˜T D¨$° ?Ñ3Ô3ˆÝ˜˜˜!™œ˜bŸjšj¨Ñ6Ô6¸UÐCÑCÔCÐCÐCÐCrk   c                 ó–  — d}|                      dg|dz   z  dg|dz   z  z   ¦  «        }|                      g d¢¦  «        }t          |                     |d¦  «        |                      ddg¦  «        ¦  «        }t          |||¦  «        }|                     ddd¦  «        }t           ||d	¬
¦  «         ||d	¬
¦  «        d¬¦  «         d S )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Ñ0Ô0Ø˜˜R¨TÐ2Ñ2Ô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        \  Š	ŠŠ‰                     ‰	‰         ‰	‰ dz
           d¦  «        } ||¦  «        }‰                     ˆˆˆ	ˆfd„|D ¦   «         ¦  «        }t	          ||d¬¦  «         ‰                     ˆˆˆ	ˆfd„|D ¦   «         ¦  «        }t	          ||d¬¦  «         d S )Nrr   r.   rq   c           	      ó8   •— g | ]}t          |‰‰‰‰¬ ¦  «        ‘ŒS ©rr   )Ú_naive_eval©Ú.0rw   r3   r4   r2   rT   s     €€€€rW   ú
<listcomp>z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>›   s,   ø€ ÐCÐCÐC¸1� A q¨!¨Q°2Ð6Ñ6Ô6ÐCÐCÐCrk   rs   rt   c           	      ó8   •— g | ]}t          |‰‰‰‰¬ ¦  «        ‘ŒS rŠ   )Ú_naive_eval_2rŒ   s     €€€€rW   rŽ   z4TestBSpline.test_rndm_naive_eval.<locals>.<listcomp>ž   s,   ø€ ÐFÐFÐF¸a� q¨!¨Q°°bÐ9Ñ9Ô9ÐFÐFÐFrk   )r_   r`   rf   Ústackr   )
rS   rT   rV   rh   Úy_bÚy_nÚy_n2r3   r4   r2   s
    `     @@@rW   Útest_rndm_naive_evalz TestBSpline.test_rndm_naive_eval‘   sã   øøøø€ õ   2Ð&Ñ&Ô&ˆØ”%‰ˆˆ1ˆaØ�[Š[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆØˆa�‰eŒeˆØ�hŠhÐCÐCÐCÐCÐCÐCÐCÀÐCÑCÔCÑDÔDˆÝ˜˜S uÐ-Ñ-Ô-Ð-à�xŠxÐFÐFÐFÐFÐFÐFÐFÀ2ÐFÑFÔFÑGÔGˆÝ˜˜T¨Ð.Ñ.Ô.Ð.Ð.Ð.rk   c           	      óÜ   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           ||¦  «        t          ||||f¦  «        d¬¦  «         d S )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¡   sn   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œ�u R¨!¨Q°¨Ñ3Ô3¸%Ð@Ñ@Ô@Ð@Ð@Ð@rk   c                 ó¨  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     d¦  «        }t	          ||¦  «        }t          |Ž }|j        |j        }}t          j        ||         || dz
           d¦  «        }t           ||¦  «        t          ||¦  «        d¬¦  «         d S )NéÒ  é   r.   éP   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×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜r‘N”NÑ#Ô#ˆØ�JŠJ�r‰NŒNˆå�Q˜‰lŒlˆÝ�SˆMˆàŒs�A”Cˆ1ˆÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œ�u R¨™~œ~°EÐ:Ñ:Ô:Ð:Ð:Ð:rk   c                 ó@  — t          |¬¦  «        }|                     |j        ¦  «        |_        |                     |j        |j                 |j        |j         dz
           d|j        ¬¦  «        }t           ||¦  «        |                     |¦  «        ¦  «         d S )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³   s‚   € Ý 2Ð&Ñ&Ô&ˆØ�lŠl˜1œ3ÑÔˆŒØ�[Š[˜œ˜QœSœ 1¤3¨¬ t¨A¡v¤;°¸2¼:ˆ[ÑFÔFˆÝ˜˜˜"™œ˜rŸ|š|¨BÑ/Ô/Ñ0Ô0Ð0Ð0Ð0rk   c                 óÚ  — t           j                             d¦  «        }d\  }}t          j        |                     |¦  «        ¦  «        }|                     |ddf¬¦  «        }t	          |j        ||f¦  «        \  }}t          |||¦  «        }||         || dz
           }	}||	|z
  |                     |                     d¦  «        ¦  «        z  z   }
 ||
¦  «        j        dk    sJ ‚d S )	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×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J˜q‘M”MÑ"Ô"ˆØ�JŠJ˜Q  1˜IˆJÑ&Ô&ˆÝ�2”:  1˜vÑ&Ô&‰ˆˆ1Ý�A�q˜!ÑÔˆØ�1”�q˜!˜˜A™”wˆBˆØ�2˜‘7˜bŸjšj¨¯ª°IÑ)>Ô)>Ñ?Ô?Ñ?Ñ?ˆØˆq�‰uŒuŒ{˜oÒ-Ð-Ð-Ð-Ð-Ð-rk   c           	      óÔ  — t           j                             d¦  «        }d\  }}t          j        |                     ||z   dz   ¦  «        ¦  «        }|                     |¦  «        }t           j        ||                     |dz   ¦  «        f         }t          |||¦  «        t          |||¦  «        }}|d         |d         z
  }	t          j        |d         |	z
  |d         |	z   d¦  «        }
t           ||
¦  «         ||
¦  «        d¬¦  «         t           ||
¦  «        t          |
|||f¦  «        d¬¦  «         t           ||
¦  «        t          |
|||f¦  «        d¬¦  «         d S )	Nrš   )é!   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Ä   sO  € õ Œi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J˜q ™s 1™uÑ%Ô%Ñ&Ô&ˆØ�JŠJ�q‰MŒMˆõ ”�a˜Ÿš A a¡C™œÐ(Ô)ˆå˜1˜a Ñ#Ô#¥W¨Q°°qÑ%9Ô%9ˆ5ˆàˆrŒU�Q�q”T‰\ˆÝŒ[˜˜1œ ™ A b¤E¨B¡J°Ñ3Ô3ˆÝ˜˜˜"™œ˜u˜u R™yœy¨uÐ5Ñ5Ô5Ð5Ý˜˜˜"™œ�u R¨!¨Q°¨Ñ3Ô3¸%Ð@Ñ@Ô@Ð@Ý˜˜˜"™œ�u R¨!¨U°A¨Ñ7Ô7¸eÐDÑDÔDÐDÐDÐDrk   c           	      óÌ   — t          ¦   «         }|j        \  }}}||         || dz
           }}dD ]3}t           |||g|¦  «         ||dz   |dz
  g|¦  «        dd¬¦  «         Œ4d S )Nr.   ©TFç»½×Ùß|Û=ç•Ö&è.>çH¯¼šò×z>r[   ©r_   r`   r   )	rS   Únum_parallel_threadsrV   r2   Ú_r4   r¯   r°   Úextraps	            rW   Útest_endpointszTestBSpline.test_endpoints×   s¢   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaØ�1”�q˜!˜˜A™”wˆBˆà#ð 	Wð 	WˆFÝ˜A˜A˜r 2˜h¨Ñ/Ô/Ø˜A˜r E™z¨2°©:Ð6¸Ñ?Ô?ÀdÐQUðWñ Wô Wð Wð Wð	Wð 	Wrk   c           	      óÈ   — t          ¦   «         }|j        \  }}}t           |||dz   | dz
  …         dz
  ¦  «         |||dz   | dz
  …         dz   ¦  «        d¬¦  «         d S )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¡˜Hœ+¨Ñ-Ñ.Ô.°°°!°A°a±C¸¸¸1¹°H´+ÀÑ2EÑ0FÔ0FØð	ñ 	ô 	ð 	ð 	ð 	rk   c                 ó  — t          |¬¦  «        }|j        \  }}}|d         |d         z
  }|                     ||         |z
  || dz
           |z   d¦  «        }||         |k     ||| dz
           k     z  }t           |||         d¬¦  «         |||         d¬¦  «        ¦  «         t	          t
          j        |||f¦  «        \  }	}
}|                     t          |	|
||fd¬	¦  «        ¦  «        }t           ||d¬¦  «        |¦  «         d S )
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Ô5ˆØ�!”�r’	˜b 1 a R¨¡T¤7šlÑ+ˆõ 	˜˜˜"˜Tœ(°Ð5Ñ5Ô5Ø˜˜"˜Tœ(°Ð6Ñ6Ô6ñ	8ô 	8ð 	8õ  ¥¤
¨R°°A¨JÑ7Ô7Ñˆˆt�TØ—z’z¥%¨°°d¸A¨ÀAÐ"FÑ"FÔ"FÑGÔGˆÝ˜˜˜"¨$Ð/Ñ/Ô/°Ñ>Ô>Ð>Ð>Ð>rk   c                 óÊ   — t          ¦   «         }|j        \  }}}|d         dz
  |d         dz   g} ||¦  «        }t          j        t          j        |¦  «        ¦  «        rJ ‚d S )Nr   r.   r7   )r_   r`   rK   ÚallÚisnan)rS   rV   r2   rÀ   r4   rh   Úyys          rW   Útest_default_extrapzTestBSpline.test_default_extrapø   se   € åÑ!Ô!ˆØ”%‰ˆˆ1ˆaØ�Œd�Q‰h˜˜"œ ™	Ð"ˆØˆQˆr‰UŒUˆÝ”6�"œ( 2™,œ,Ñ'Ô'Ð'Ð'Ð'Ð'Ð'rk   c                 óö  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     d¦  «        }t	          |j        ||f¦  «        \  }}d}t          |||d¬¦  «        }|j        d         |dz   z
  }|d	         |d         z
  }|                     ||         |z
  ||         |z   d
¦  «        }	||         |	||         z
  ||         ||         z
  z  z   }
t	          t           j        |
||f¦  «        \  }}}t          |¦  «        |j
        k    rdnd}t           ||	¦  «        |                     t          ||||f¦  «        ¦  «        |¬¦  «         |                     g d¢¦  «        }	||         |	||         z
  ||         ||         z
  z  z   }
t           ||	d¬¦  «         ||
d¬¦  «        t          |¦  «        |j
        k    rdnd¬¦  «         d S )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×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜q‘M”MÑ"Ô"ˆØ�JŠJ�q‰MŒMˆÝ�2”:  1˜vÑ&Ô&‰ˆˆ1ØˆÝ�A�q˜!¨Ð4Ñ4Ô4ˆØŒG�AŒJ˜!˜a™%Ñ ˆàˆrŒU�Q�q”T‰\ˆØ�[Š[˜˜1œ ™ A a¤D¨2¡I¨rÑ2Ô2ˆØˆqŒT�R˜!˜Aœ$‘Y 1 Q¤4¨!¨A¬$¡;Ñ/Ñ/ˆÝ¥¤
¨R°°A¨JÑ7Ô7Ñˆˆt�TÝ(¨Ñ,Ô,°´
Ò:Ð:ˆuˆuÀˆÝØˆAˆb‰EŒE�2—:’:�e E¨D°$¸¨?Ñ;Ô;Ñ<Ô<À4ð	
ñ 	
ô 	
ð 	
ð
 �ZŠZ˜˜˜Ñ(Ô(ˆØˆqŒT�R˜!˜Aœ$‘Y 1 Q¤4¨!¨A¬$¡;Ñ/Ñ/ˆÝØˆAˆb˜jÐ)Ñ)Ô)ØˆAˆb˜dÐ#Ñ#Ô#Ý*¨2Ñ.Ô.°"´*Ò<Ð<��À$ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rk   c                 óö   — t          ¦   «         }|j        \  }}}t          j        |||f¦  «        }t	          j        ||         ||          d¦  «        }t           ||¦  «         ||¦  «        dd¬¦  «         d S )Nr£   rs   r[   )r_   r`   r   Úfrom_splinerK   rf   r   )rS   rV   r2   r3   r4   Úpprh   s          rW   Ú
test_ppolyzTestBSpline.test_ppoly  sz   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝÔ  1 a˜yÑ)Ô)ˆåŒ[˜˜1œ˜q ! œu cÑ*Ô*ˆÝ˜˜˜"™œ˜r˜r "™vœv¨E¸Ð>Ñ>Ô>Ð>Ð>Ð>rk   c                 ó˜  — t          ¦   «         }|j        \  }}}t          j        |d         |d         d¦  «        }t          j        ||f         }t          d|dz   ¦  «        D ]4}t          ||||f|¬¦  «        }t          | |||¬¦  «        d¬¦  «         Œ5t           |||dz   ¬¦  «        t          j        |¦  «        d¬¦  «         d S )	Nr   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�2�q�5Œ\ˆå˜˜A˜a™C‘=”=ð 	;ð 	;ˆCÝ�r˜A˜q !˜9¨#Ð.Ñ.Ô.ˆBÝ˜B   "¨ ¡¤°EÐ:Ñ:Ô:Ð:Ð:õ 	˜˜˜"  1¡˜™œ¥r¤}°RÑ'8Ô'8¸uÐEÑEÔEÐEÐEÐErk   c                 ó8  — d}g d¢}t           j                             d¦  «        }t           j        dd|                     d¦  «        ddf         }t	          |||¦  «        }t          j        g d¢¦  «        }t           |||dk             dz
  ¦  «         |||dk             dz   ¦  «        ¦  «         t          j         |d	¦  «         |d
¦  «        ¦  «        rJ ‚t          j        ddg¦  «        }t           ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «         t          j        ddg¦  «        }t          j         ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «        rJ ‚t          j         ||dz
  d¬¦  «         ||dz   d¬¦  «        ¦  «        rJ ‚d S )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  sÆ  € ð ˆØ2Ð2Ð2ˆÝŒi×#Ò# DÑ)Ô)ˆÝŒE�!�Q˜Ÿ
š
 1™œ q¨!Ð+Ô,ˆÝ�A�q˜!ÑÔˆõ ŒJ�|�|�|Ñ$Ô$ˆÝ˜˜˜!˜A šFœ) eÑ+Ñ,Ô,Ø˜˜!˜A šFœ) eÑ+Ñ,Ô,ñ	.ô 	.ð 	.å”;˜q˜q ™{œ{¨A¨A¨g©J¬JÑ7Ô7Ð7Ð7Ð7õ ŒZ˜˜A˜ÑÔˆÝ˜˜˜"˜u™*¨Ð+Ñ+Ô+Ø˜˜"˜u™*¨Ð+Ñ+Ô+ñ	-ô 	-ð 	-åŒZ˜˜A˜ÑÔˆÝ”;˜q˜q  e¡°Ð2Ñ2Ô2°A°A°b¸5±jÀQÐ4GÑ4GÔ4GÑHÔHÐHÐHÐHõ ”;˜q˜q  U¡¨qÐ1Ñ1Ô1°1°1°Q¸±YÀ1Ð3EÑ3EÔ3EÑFÔFÐFÐFÐFÐFÐFrk   c           	      ó0  — |                      ddd¦  «        }t          j        |                     g d¢¦  «        ¬¦  «        }t	          t
          j        ||j        |j        f¦  «        \  }}}|                     t          ||||j	        f¦  «        ¦  «        }t           ||¦  «        |d¬¦  «         t          |¦  «        |j        k    rdnd}t           ||¦  «        |                     t          |¦  «        |j        ¬	¦  «        |¬¦  «         t          j        |                     g d
¢¦  «        ¬¦  «        }|                      ddd|j        ¬	¦  «        }t           ||¦  «        |                     |dk     ||z  d|z
  dz  ¦  «        d¬¦  «         d S )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¨NÑ;Ô;Ñˆˆt�TØ—z’z¥%¨°°d¸A¼CÐ/@Ñ"AÔ"AÑBÔBˆÝ˜˜˜"™œ˜|°%Ð8Ñ8Ô8Ð8å& rÑ*Ô*¨b¬jÒ8Ð8ˆUˆU¸dˆÝ˜˜˜"™œ˜rŸzšz­&°©*¬*¸B¼J˜zÑGÔGÈdÐSÑSÔSÐSåÔ! B§J¢J¨|¨|¨|Ñ$<Ô$<Ð=Ñ=Ô=ˆØ�[Š[˜˜A˜r¨¬ˆ[Ñ4Ô4ˆÝ˜˜˜"™œØ—’˜˜aš  B¡¨¨B©°©
Ñ3Ô3¸%ð	Añ 	Aô 	Að 	Að 	Að 	Ark   c           	      óÚ   — t          ¦   «         }|j        \  }}}t          j        ||         || dz
           d¦  «        }t	           ||¦  «        t          ||||¦  «        d¬¦  «         d S )Nr.   r›   rs   rt   )r_   r`   rK   rf   r   Ú_sum_basis_elementsr—   s         rW   Útest_basis_element_rndmz#TestBSpline.test_basis_element_rndmZ  sm   € ÝÑ!Ô!ˆØ”%‰ˆˆ1ˆaÝŒ[˜˜1œ˜q !  A¡œw¨Ñ+Ô+ˆÝ˜˜˜"™œÕ2°2°q¸!¸QÑ?Ô?ÀeÐLÑLÔLÐLÐLÐLrk   c                 óÀ  — t          ¦   «         }|j        \  }}}|dz  }t          |||¦  «        }t          ||j        j        |¦  «        }t          ||j        j        |¦  «        }t          j        ||         || dz
           d¦  «        }t           ||¦  «        j         ||¦  «        d¬¦  «         t           ||¦  «        j         ||¦  «        d¬¦  «         d S )Ny      ð?      @r.   r›   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 D¨¡H¤H°5Ð9Ñ9Ô9Ð9Ý˜˜˜"™œœ
 D D¨¡H¤H°5Ð9Ñ9Ô9Ð9Ð9Ð9rk   c                 ó¢   — t          j        |                     g d¢¦  «        ¦  «        }|                      ||j        ¦  «        ¦  «        sJ ‚d S )Nrë   )r
   rì   rQ   rÌ   rM   )rS   rT   rV   s      rW   Útest_nanzTestBSpline.test_nanm  sJ   € åÔ! "§*¢*¨\¨\¨\Ñ":Ô":Ñ;Ô;ˆØ�xŠx˜˜˜"œ&™	œ	Ñ"Ô"Ð"Ð"Ð"Ð"Ð"rk   c                 óH  — t          d|¬¦  «        }|j        \  }}}t          |||¦  «        }|                     ||         || dz
           d¦  «        }t	          d|¦  «        D ]<}|                     ¦   «         }t           |||¦  «         ||¦  «        dd¬¦  «         Œ=d S )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˜!‘”ð 	Fð 	FˆAØ—’‘”ˆAÝ˜B˜B˜r 1™IœI q q¨¡u¤u°5¸uÐEÑEÔEÐEÐEð	Fð 	Frk   c                 ó6  — t          |¬¦  «        }|j        \  }}}|                     ||         || dz
           d¦  «        }t           |                     ¦   «                              ¦   «         |¦  «         ||¦  «        dd¬¦  «         |                     |||fd¬¦  «        }|                     ||fd¬¦  «        }t          |||¦  «        }t           |                     ¦   «                              ¦   «         |¦  «         ||¦  «        dd¬¦  «         d S )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Ô7¸Ñ;Ô;Ø˜˜"™œ E°ð	7ñ 	7ô 	7ð 	7ð �HŠH�a˜˜A�Y QˆHÑ'Ô'ˆØ�HŠH�a˜�V !ˆHÑ$Ô$ˆÝ�A�q˜!ÑÔˆÝÐ7˜×(Ò(Ñ*Ô*×5Ò5Ñ7Ô7¸Ñ;Ô;Ø˜˜"™œ E°ð	7ñ 	7ô 	7ð 	7ð 	7ð 	7rk   c           	      óD  — t          j        |                     g d¢¦  «        ¦  «        }t          j        |                     dd¦  «        dd¬¦  «        sJ ‚t          j        |                     dd¦  «        dd¬¦  «        sJ ‚t          j        |                     dd¦  «        dd¬¦  «        sJ ‚t          j        |                     dd¦  «        dd¬¦  «        sJ ‚t          j        |                     dd¦  «        dd¬¦  «        sJ ‚t          j        |                     dd¦  «        dd¬¦  «        sJ ‚t          j        |                     dd¦  «        d	d¬¦  «        sJ ‚t          j        |                     ddd
¬¦  «        d	d¬¦  «        sJ ‚t          j        |                     ddd¬¦  «        dd¬¦  «        sJ ‚t          j        |                     ddd¬¦  «        dd¬¦  «        sJ ‚t          j        |                     ddd¬¦  «        t          j        dd|j        ¦  «        d¬¦  «        sJ ‚d|_	        | 
                    ¦   «         }|                      |d¦  «         |d¦  «        z
  |j        ¬¦  «        }t          j        |                     dd¦  «        |¦  «        sJ ‚t          j        |                     dd¦  «        d|z  ¦  «        sJ ‚t          j        |                     dd¦  «        |¦  «        sJ ‚t          j        |                     dd¦  «        d|z  ¦  «        sJ ‚t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
   |d¦  «        z    |d¦  «        z
  d|z  z   ¦  «        ¦  «         t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
  ¦  «        ¦  «         t          |                     dd¦  «        |                      |d¦  «         |d¦  «        z
  d|z  z
  ¦  «        ¦  «         d S )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‰  sj  € ÝÔ! "§*¢*¨Y¨Y¨YÑ"7Ô"7Ñ8Ô8ˆÝŒ|˜AŸKšK¨¨1Ñ-Ô-¨s¸EÐBÑBÔBÐBÐBÐBÝŒ|˜AŸKšK¨¨1Ñ-Ô-¨xÀÐGÑGÔGÐGÐGÐGÝŒ|˜AŸKšK¨¨1Ñ-Ô-¨t¸UÐCÑCÔCÐCÐCÐCõ Œ|˜AŸKšK¨¨1Ñ-Ô-¨s¸EÐBÑBÔBÐBÐBÐBÝŒ|˜AŸKšK¨¨1Ñ-Ô-¨xÀÐGÑGÔGÐGÐGÐGÝŒ|˜AŸKšK¨¨1Ñ-Ô-¨t¸UÐCÑCÔCÐCÐCÐCõ Œ|˜AŸKšK¨¨AÑ.Ô.°¸UÐCÑCÔCÐCÐCÐCÝŒ|˜AŸKšK¨¨A¸4˜KÑ@Ô@À#ÈuÐUÑUÔUÐUÐUÐUÝŒ|˜AŸKšK¨¨A¸5˜KÑAÔAÀ3ÐPUÐVÑVÔVÐVÐVÐVÝŒ|˜AŸKšK¨¨2¸5˜KÑAÔAÀ4ÐQVÐWÑWÔWÐWÐWÐWõ Œ|˜AŸKšK¨¨2¸5˜KÑAÔAÝ!œL¨¨B°´Ñ6Ô6ÀðGñ Gô Gð 	Gð 	Gð Gð #ˆŒØ×ÒÑÔˆØ—Z’Z   !¡¤ q q¨¡t¤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 1 S¡6¤6¨A¨A¨c©F¬F¡?Ñ3Ô3ñ	5ô 	5ð 	5å˜Ÿš C¨Ñ+Ô+ØŸ
š
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°°1±´Ñ#5¸¸¸#¹¼Ñ#>Ñ?Ô?ñ	Aô 	Að 	Aå˜Ÿš H¨fÑ5Ô5ØŸ
š
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°°1±´Ñ#5¸¸¸#¹¼Ñ#>Ñ?Ô?ñ	Aô 	Að 	Aå˜Ÿš C¨Ñ0Ô0ØŸ
š
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°°1±´Ñ#5¸¸¸#¹¼Ñ#>ÀÀZÁÑ#OÑPÔPñ	Rô 	Rð 	Rõ 	˜Ÿš A rÑ*Ô*¨B¯JªJ°q°q¸±t´t¸a¸aÀ¹d¼d±{Ñ,CÔ,CÑDÔDÐDÝ˜Ÿš B¨Ñ,Ô,¨b¯jªj¸¸¸1¹¼ÀÀÀ!ÁÄ¹Ñ.EÔ.EÑFÔFÐFÝ˜Ÿš A rÑ*Ô*ØŸ
š
 1 1 Q¡4¤4¨!¨!¨A©$¬$¡;°°Z±Ñ#?Ñ@Ô@ñ	Bô 	Bð 	Bð 	Bð 	Brk   c                 óä   — g d¢}t          ||¦  «        }d|_        t          j        |¦  «        }dD ]=\  }}t	          |                     ||¦  «        |                     ||¦  «        ¦  «         Œ>d S )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†   € àˆOˆOˆÝ˜q !Ñ$Ô$ˆØ"ˆŒÝÔ˜aÑ Ô ˆà5ð 	1ð 	1‰FˆB�Ý˜AŸKšK¨¨BÑ/Ô/ØŸKšK¨¨BÑ/Ô/ñ1ô 1ð 1ð 1ð	1ð 	1rk   c                 ó¾   — t          j        g d¢¦  «        }dD ]C}|                     dd|¬¦  «        }t          |t          j        ¦  «        sJ ‚|j        dk    sJ ‚ŒDd S )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Á  so   € åÔ! ) ) )Ñ,Ô,ˆØ(ð 	!ð 	!ˆKØ—+’+˜a °�+Ñ<Ô<ˆCÝ˜c¥2¤:Ñ.Ô.Ð.Ð.Ð.Ø”8˜q’=�=�=�=�=ð	!ð 	!rk   c                 óð   —  G d„ dt           ¦  «        }|                     g d¢¦  «        }|j        |k    sJ ‚|                     ¦   «         j        |k    sJ ‚|                     ¦   «         j        |k    sJ ‚d S )Nc                   ó   — e Zd ZdS )ú'TestBSpline.test_subclassing.<locals>.BN)Ú__name__Ú
__module__Ú__qualname__© rk   rW   ÚBr   Ë  s   € € € € € ØˆDrk   r%  )r   r.   r9   r9   )r
   rì   Ú	__class__rü   r  )rS   r%  rV   s      rW   Útest_subclassingzTestBSpline.test_subclassingÉ  s˜   € ð	ð 	ð 	ð 	ð 	•ñ 	ô 	ð 	ð �OŠO˜L˜L˜LÑ)Ô)ˆØŒ{˜aÒÐÐÐØ�|Š|‰~Œ~Ô'¨1Ò,Ð,Ð,Ð,Ø×ÒÑ!Ô!Ô+¨qÒ0Ð0Ð0Ð0Ð0Ð0rk   r  r	  r<   c                 ó   — d\  }}|                      dd||z   dz   ¦  «        }g d¢}|dz  }|                     ||¦  «         t          |¦  «        }t          j                             d¦  «        }|                     |                     |¬¦  «        ¦  «        }	t          ||	||¬¦  «        }
|
j        j	        ||         f|d |…         z   ||dz   d …         z   k    sJ ‚|                     d	¦  «        } |
|¦  «        j	        |d |…         |j	        z   ||dz   d …         z   k    sJ ‚|	j
         dz
  |	j
        fD ]+}t          t          t          fi t          ||	||¬
¦  «        ¤Ž Œ,t          ||	||¬¦  «                             ¦   «         t          ||	||¬¦  «                             d¦  «        t          ||	||¬¦  «                             ¦   «         t          ||	||¬¦  «                             d¦  «        fD ]}|j        |
j        k    sJ ‚Œd S )Nr¦   r   r.   ©r¨   r©   rÐ   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Ñ(Ô(ˆØˆYˆYˆð ˜!‘8ˆØ
�	Š	�(˜AÑÔÐÝ�2‰YŒYˆÝŒi×#Ò# DÑ)Ô)ˆØ�JŠJ�s—z’z r�zÑ*Ô*Ñ+Ô+ˆÝ�A�q˜! $Ð'Ñ'Ô'ˆØŒsŒy˜R œ\˜O¨b°°(°¬mÑ;¸bÀÈ!ÁÀÀ¼oÑMÒMÐMÐMÐMà�ZŠZ˜	Ñ"Ô"ˆØˆq�‰uŒuŒ{˜b  ( œm¨b¬hÑ6¸¸HÀQ¹J¸K¸K¼ÑHÒHÐHÐHÐHð ”F�7˜Q‘; ¤Ð'ð 	:ð 	:ˆBÝ�)¥Wð :ð :Ý  1¨¨Q°RÐ8Ñ8Ô8ð:ð :ð :ð :õ ˜1˜a ¨Ð.Ñ.Ô.×9Ò9Ñ;Ô;Ý˜1˜a ¨Ð.Ñ.Ô.×9Ò9¸!Ñ<Ô<Ý˜1˜a ¨Ð.Ñ.Ô.×=Ò=Ñ?Ô?Ý˜1˜a ¨Ð.Ñ.Ô.×=Ò=¸aÑ@Ô@ðBð 	%ð 	%ˆBð ”7˜aœfÒ$Ð$Ð$Ð$Ð$ð		%ð 	%rk   c           	      ó€  — d}|                      g d¢¦  «        }|                      g d¢g d¢g¦  «        }t          |||d¬¦  «        }t          ||dd d …f         |¦  «        }t          ||dd d …f         |¦  «        }t           |d	¦  «        |                      |d	¦  «         |d	¦  «        g¦  «        ¦  «         d S )
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Ô7ˆå�a˜˜A BÐ'Ñ'Ô'ˆÝ�q˜!˜A˜q˜q˜q˜Dœ' 1Ñ%Ô%ˆÝ�q˜!˜A˜q˜q˜q˜Dœ' 1Ñ%Ô%ˆÝ˜˜˜C™œ "§(¢(¨D¨D°©I¬I°t°t¸C±y´yÐ+AÑ"BÔ"BÑCÔCÐCÐCÐCrk   c                 ó¾   — d„ }d}d}dD ]} ||||¦  «         Œt          ddd¦  «        D ]} |||d¦  «         Œd}t          dd	¦  «        D ]} |||d
¦  «         ŒdS )a7  
        Splines with different boundary conditions are built on different
        types of vectors of knots. As far as design matrix depends only on
        vector of knots, `k` and `x` it is useful to make tests for different
        boundary conditions (and as following different vectors of knots).
        c                 ód  — t           j                             d¦  «        }t          j        |                     | ¦  «        dz  dz
  ¦  «        }|                     | ¦  «        dz  dz
  }|dk    r|d         |d<   t          ||||¬¦  «        }t          j        t          |j        ¦  «        |z
  dz
  ¦  «        } t          |j        ||¦  «        |¦  «        }t          j
        ||j        |¦  «                             ¦   «         }	t          |	|j        z  |d	¬
¦  «         t          ||	d	¬
¦  «         dS )zY
            To avoid repetition of code the following function is provided.
            rš   é(   r›   rÑ   r7   r   ©r4   Úbc_typer.   rs   rt   N)rK   rR   r�   rž   Úrandom_sampler   ÚeyeÚlenr2   r
   Údesign_matrixÚtoarrayr   r3   )
rU   r4   r:  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Ô7ˆAØ×!Ò! !Ñ$Ô$ rÑ)¨BÑ.ˆAØ˜*Ò$Ð$Ø˜”u��!‘å% a¨¨a¸ÐAÑAÔAˆDå”•s˜4œ6‘{”{ Q‘¨Ñ*Ñ+Ô+ˆAØ0�7 4¤6¨1¨aÑ0Ô0°Ñ3Ô3ˆLÝ"Ô0°Ø15´Ø12ñ4ô 4ç4;²G±I´Ið õ ˜L¨4¬6Ñ1°1¸5ÐAÑAÔAÐAÝ˜L¨,¸UÐCÑCÔCÐCÐCÐCrk   rD   r;   ©ÚclampedÚnaturalrÐ   r9   ú
not-a-knotr­   r©   rÑ   N)rà   )rS   rB  rU   r4   Úbcs        rW   Útest_design_matrix_bc_typesz'TestBSpline.test_design_matrix_bc_typesû  sº   € ð	Dð 	Dð 	Dð* ˆØˆØ(ð 	.ð 	.ˆBØ#Ð# A q¨"Ñ-Ô-Ð-Ð-õ �q˜!˜Q‘”ð 	8ð 	8ˆAØ#Ð# A q¨,Ñ7Ô7Ð7Ð7ð ˆÝ�q˜!‘”ð 	6ð 	6ˆAØ#Ð# A q¨*Ñ5Ô5Ð5Ð5ð	6ð 	6rk   r€   )FTrÑ   Údegreer­   c           	      óè  — t           j                             d¦  «        }|                     d|dz   z  ¦  «        }t          j        |¦  «        t          j        |¦  «        }}|}t           j        t          j        |dz
  |dz
  |¦  «        t          j        ||d|dz   z  ¦  «        t          j        |dz   |dz   |¦  «        f         }t          j        t          |¦  «        |z
  dz
  ¦  «        }	t          ||	||¦  «        }
t           |
|¦  «        t          j        ||||¦  «                             ¦   «         ¦  «         t          j        |dz
  |dz
  |dz   |dz   g¦  «        }|sKt          j        t"          ¦  «        5  t          j        ||||¦  «         ddd¦  «         dS # 1 swxY w Y   dS t           |
|¦  «        t          j        ||||¦  «                             ¦   «         ¦  «         dS )z;Test that design_matrix(x) is equivalent to BSpline(..)(x).rš   re   r.   r9   r
  N)rK   rR   r�   r;  ÚaminÚamaxr´   rf   r<  r=  r
   r   r>  r?  Úarrayra   r	   rI   )rS   r€   rI  rŸ   rw   ÚxminÚxmaxr4   r2   r3   Úbsplines              rW   Ú'test_design_matrix_same_as_BSpline_callz3TestBSpline.test_design_matrix_same_as_BSpline_call%  s#  € õ Œi×#Ò# DÑ)Ô)ˆØ×Ò˜b F¨Q¡JÑ/Ñ0Ô0ˆÝ”W˜Q‘Z”Z¥¤¨¡¤ˆdˆØˆÝŒE•"”+˜d Q™h¨¨q©°&Ñ9Ô9Ý”+˜d D¨!¨v¸©zÑ*:Ñ;Ô;Ý”+˜d Q™h¨¨q©°&Ñ9Ô9ð:ô ;ˆõ ŒF•3�q‘6”6˜A‘: ‘>Ñ"Ô"ˆÝ˜!˜Q  ;Ñ/Ô/ˆÝØˆG�A‰JŒJ�Ô-¨a°°A°{ÑCÔC×KÒKÑMÔMñ	
ô 	
ð 	
õ
 ŒH�d˜R‘i ¨¡¨4°#©:°t¸b±yÐAÑBÔBˆØð 	Ý”�zÑ*Ô*ð <ð <ÝÔ% a¨¨A¨{Ñ;Ô;Ð;ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð <ð <õ Ø�˜‘
”
ÝÔ% a¨¨A¨{Ñ;Ô;×CÒCÑEÔEñô ð ð ð s   Æ F%Æ%F)Æ,F)c                 óÜ  — t           j                             d¦  «        }d}d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|                     |¦  «        dz  dz
  }t          |||¬¦  «        }t          dd¦  «        D ]]}|d |…         }|d |…         }	t          j        ||j	        |¦  «         
                    ¦   «         }
t          |
|j        z  |	d	¬
¦  «         Œ^d S )Nrš   re   r;   r8  r›   ©r4   r.   r<   rs   rt   )rK   rR   r�   rž   r;  r   rà   r
   r>  r2   r?  r   r3   )rS   rŸ   rU   r4   rw   r    rƒ   r  ÚxcÚycrA  s              rW   Útest_design_matrix_x_shapesz'TestBSpline.test_design_matrix_x_shapesA  s  € åŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-°Ñ2Ñ3Ô3ˆØ×Ò˜aÑ Ô  2Ñ%¨Ñ*ˆå! ! Q¨!Ð,Ñ,Ô,ˆÝ�q˜!‘”ð 	Cð 	CˆAØ�2�A�2”ˆBØ�2�A�2”ˆBÝ"Ô0°Ø15´Ø12ñ4ô 4ç4;²G±I´Ið õ ˜L¨4¬6Ñ1°2¸EÐBÑBÔBÐBÐBð	Cð 	Crk   c                 óˆ   — g d¢}t          j        d|d¦  «                             ¦   «         }t          |g d¢gd¬¦  «         d S )N)r0   r0   r0   r>   r?   r@   r@   r@   r>   r;   )g      Ð?gm‰à¨ªªâ?gKÚ}\UUÅ?r=   rs   rt   )r
   r>  r?  r   )rS   r2   Údes_matrs      rW   Útest_design_matrix_t_shapesz'TestBSpline.test_design_matrix_t_shapesR  s_   € à,Ð,Ð,ˆÝÔ(¨¨Q°Ñ2Ô2×:Ò:Ñ<Ô<ˆÝ˜Ø;Ð;Ð;Ð<Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rk   c                 ó:  — t           j                             d¦  «        }d}d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|                     |¦  «        dz  dz
  }t          |||¬¦  «        }t          t          ¦  «        5  t          j	        ||j
        d d d…         |¦  «         d d d ¦  «         n# 1 swxY w Y   d}g d	¢}g d
¢}t          t          ¦  «        5  t          j	        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrš   re   r;   r8  r›   rS  r7   r9   )r=   r0   r>   r?   r@   ç      @r~   )rK   rR   r�   rž   r;  r   rG   rI   r
   r>  r2   )rS   rŸ   rU   r4   rw   r    rƒ   r2   s           rW   Útest_design_matrix_assertsz&TestBSpline.test_design_matrix_assertsZ  s¡  € ÝŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-°Ñ2Ñ3Ô3ˆØ×Ò˜aÑ Ô  2Ñ%¨Ñ*ˆÝ! ! Q¨!Ð,Ñ,Ô,ˆõ �:Ñ&Ô&ð 	6ð 	6ÝÔ! ! T¤V¨D¨D¨b¨D¤\°1Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6àˆØ$Ð$Ð$ˆØÐÐˆå�:Ñ&Ô&ð 	+ð 	+ÝÔ! ! Q¨Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s$   Â%CÃCÃ
CÃ,DÄDÄDr:  )rE  rD  rÑ   rF  c                 óþ  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     d¦  «        }|dk    r|d         |d<   t	          |||¬¦  «        }t          j        ||¬¦  «        }t          j        ddd¦  «        }t           ||¦  «         ||¦  «        d¬	¦  «         t          |||¬¦  «        }t          |j
        |j
        d¬	¦  «         d S )
Nrš   r›   rÑ   r   r7   ©r:  r.   rZ   rt   )rK   rR   r�   rž   r   r
   Úfrom_power_basisrf   r   r   r3   )	rS   r:  rŸ   rw   r    Úcbrƒ   rh   Úbspl_news	            rW   Útest_from_power_basisz!TestBSpline.test_from_power_basisl  sí   € õ Œi×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜r‘N”NÑ#Ô#ˆØ�JŠJ�r‰NŒNˆØ�jÒ Ð Ø�a”DˆAˆb‰EÝ˜˜A wÐ/Ñ/Ô/ˆÝÔ'¨°GÐ<Ñ<Ô<ˆÝŒ[˜˜A˜rÑ"Ô"ˆÝ˜˜˜2™œ   R¡¤¨uÐ5Ñ5Ô5Ð5Ý% a¨°GÐ<Ñ<Ô<ˆÝ˜œ ¤
°Ð7Ñ7Ô7Ð7Ð7Ð7rk   c                 ó
  — t           j                             d¦  «        }t          j        |                     d¦  «        ¦  «        }|                     d¦  «        |                     d¦  «        dz  z   }|dk    r|d         |d<   t	          |||¬¦  «        }t          j        ||¬¦  «        }t          ||j        |¬¦  «        }t          ||j	        |¬¦  «        }t          |j        |j        d|j        z  z   d¬	¦  «         d S )
Nrš   r›   r/   rÑ   r   r7   r^  rZ   rt   )rK   rR   r�   rž   r   r
   r_  r   ró   rô   r   r3   )	rS   r:  rŸ   rw   r    r`  rƒ   Úbspl_new_realÚbspl_new_imags	            rW   Útest_from_power_basis_complexz)TestBSpline.test_from_power_basis_complex|  sí   € õ Œi×#Ò# DÑ)Ô)ˆÝŒG�C—J’J˜r‘N”NÑ#Ô#ˆØ�JŠJ�r‰NŒN˜SŸZšZ¨™^œ^¨bÑ0Ñ0ˆØ�jÒ Ð Ø�a”DˆAˆb‰EÝ˜˜A wÐ/Ñ/Ô/ˆÝÔ'¨°GÐ<Ñ<Ô<ˆÝ*¨1¨a¬f¸gÐFÑFÔFˆÝ*¨1¨a¬f¸gÐFÑFÔFˆÝ˜œ ¤°"°}´Ñ2FÑ FÈUÐSÑSÔSÐSÐSÐSrk   c                 óÜ   — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        t	          ||d¬¦  «        d¬¦  «        }t          |j        g d¢d¬¦  «         dS )	a}  
        For x = [0, 1, 2, 3, 4] and y = [1, 1, 1, 1, 1]
        the coefficients of Cubic Spline in the power basis:

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

        It could be shown explicitly that coefficients of the interpolating
        function in B-spline basis are c = [1, 1, 1, 1, 1, 1, 1]
        r:   )r.   r.   r.   r.   r.   rE  r^  )r0   r.   r.   r.   r.   r.   r.   rZ   rt   N)rK   rM  r
   r_  r   r   r3   )rS   rw   r    rƒ   s       rW   Útest_from_power_basis_exmpz&TestBSpline.test_from_power_basis_exmp‹  sy   € õ ŒH�_�_�_Ñ%Ô%ˆÝŒH�_�_�_Ñ%Ô%ˆÝÔ'­°A°qÀ)Ð(LÑ(LÔ(LØ09ð;ñ ;ô ;ˆå˜œÐ 7Ð 7Ð 7¸eÐDÑDÔDÐDÐDÐDrk   c                 óŒ  — t          j        ddg¦  «        }t          j        dg¦  «        }|                     d¬¦  «         |                     d¬¦  «         t          j        ddd¦  «        }|                     d¬¦  «         t	          ||d¬¦  «        }t           ||¦  «        t          j        |¦  «        dz  ¦  «         d S )Nr   r.   r?   F©Úwritere   r1   )rK   rM  Úsetflagsrf   r
   r   rn   )rS   r2   r3   rh   rV   s        rW   Útest_read_onlyzTestBSpline.test_read_onlyž  s´   € åŒH�a˜�VÑÔˆÝŒH�c�U‰OŒOˆØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐåŒ[˜˜A˜rÑ"Ô"ˆØ
�Š˜%ˆÑ Ô Ð å�a˜1 Ð"Ñ"Ô"ˆÝ˜˜˜"™œ�rœ|¨BÑ/Ô/°#Ñ5Ñ6Ô6Ð6Ð6Ð6rk   c                 óT   ‡— t          ‰¬¦  «        }ˆfd„}t          d||¦  «         d S )Nrr   c                 ó‚   •— |j         \  }} }‰                     ||         || dz
           d¦  «        } ||¦  «         d S )Nr.   i'  )r`   rf   )rÀ   rV   r2   r4   rh   rT   s        €rW   Ú	worker_fnz/TestBSpline.test_concurrency.<locals>.worker_fn¯  sD   ø€ Ø”e‰GˆAˆq�!Ø—’˜Q˜qœT 1 a R¨¡T¤7¨EÑ2Ô2ˆBØˆAˆb‰EŒEˆEˆEˆErk   re   )r_   r&   )rS   rT   rV   rp  s    `  rW   Útest_concurrencyzTestBSpline.test_concurrency«  sF   ø€ å 2Ð&Ñ&Ô&ˆð	ð 	ð 	ð 	ð 	õ
 	   I¨qÑ1Ô1Ð1Ð1Ð1rk   Úcygwinz'threading.get_native_id not implemented)r†   r	   c           	      óH  — t          ¦   «         }t          j        ddd¦  «        } ||¦  «        }t          j        ¦   «         }t          j        t          |                     d|› d�¦  «        ¦  «        d|j        j	        |j        j
        ¬¦  «        }|j        |d d …<   t          j        t          |                     d|› d�¦  «        ¦  «        d|j        j	        |j        j
        ¬¦  «        }|j        |d d …<   ||_        ||_        t           ||¦  «        |¦  «         d S )	Nr   r.   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Ñ"Ô"ˆà�1�R‘5”5ˆåÔ%Ñ'Ô'ˆÝŒy�˜VŸ[š[¨¨S¨¨¨Ñ7Ô7Ñ8Ô8¸tØ œsœy°´´	ð;ñ ;ô ;ˆà”#ˆˆQˆQˆQ‰ÝŒy�˜VŸ[š[¨¨S¨¨¨Ñ7Ô7Ñ8Ô8¸tØ œsœy°´´	ð;ñ ;ô ;ˆà”#ˆˆQˆQˆQ‰ØˆŒØˆŒå˜˜˜"™œ˜xÑ(Ô(Ð(Ð(Ð(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/  r5  rH  rQ  rV  rY  r\  rb  rf  rh  rm  rq  ÚxfailÚsysÚplatformrb   r~  r$  rk   rW   r,   r,   1   s=  € € € € € ð!ð !ð !ðF
ð 
ð 
ð)ð )ð )ð>ð >ð >ðDð Dð Dð 
@ð 
@ð 
@ð Ð�lÐ+OÐPÑPÔPØÐ�kÐ*KÐLÑLÔLØÐ�g kÐ2Ñ2Ô2ð/ð /ñ 3Ô2ñ MÔLñ QÔPð/ðAð Að Að
;ð 
;ð 
;ð1ð 1ð 1ð	.ð 	.ð 	.ðEð Eð Eð&Wð Wð Wðð ð ð?ð ?ð ?ð (ð (ð (ð
ð 
ð 
ð6?ð ?ð ?ðFð Fð FðGð Gð Gð4Að Að Að Mð Mð Mð:ð :ð :ð#ð #ð #ð
Fð Fð Fð7ð 7ð 7ð+Bð +Bð +BðZ	1ð 	1ð 	1ð!ð !ð !ð1ð 1ð 1ð „[×Ò˜V U U¨2¨q¡\¤\Ñ2Ô2ð%ð %ñ 3Ô2ð%ð:Dð Dð Dð(6ð (6ð (6ðT „[×Ò˜]Ð,EÐ,EÐ,EÑFÔFØ„[×Ò˜X u u¨Q¡x¤xÑ0Ô0ðð ñ 1Ô0ñ GÔFðð4Cð Cð Cð"$ð $ð $ð+ð +ð +ð$ „[×Ò˜Yð )Cð )Cð )Cñ Dô Dð8ð 8ñDô Dð8ð „[×Ò˜Yð )Cð )Cð )Cñ Dô DðTð TñDô DðTðEð Eð Eð&7ð 7ð 7ð	2ð 	2ð 	2ð „[×ÒØŒ˜Ò Ø8Øð ñ ô ð
)ð )ñô ð
)ð )ð )rk   r,   c                   óP  — e Zd Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zej                             dg d	¢¦  «        d
„ ¦   «         Z	ej                             dddg¦  «        d„ ¦   «         Z
d„ Zd„ ZdS )Ú
TestInsertÚxval)r=   r0   rB   r<   ç      @ç      @c           	      óX  — |                      d|j        ¬¦  «        }|                     |¦  «        dz  }t          ||d¬¦  «        }|j        |j        |j        f}t          t          ||¦  «        Ž }| 	                    |¦  «        }t          |j        |                     |j        ¦  «        d¬¦  «         t          |j        |                     |j        d |j         dz
  …         ¦  «        d¬¦  «         ||d         k    r|n	|d d…         }	|                     |	d	|dd …         |d d…         z   z  f¦  «        }	t           ||	¦  «         ||	¦  «        d¬¦  «         |                     |¦  «        dz  }
t          ||
d¬¦  «        }t          ||                     ||
fd¬
¦  «        d¬¦  «        }| 	                    |¦  «        }t          |j        |j        d¬¦  «         t          |j        |                     | 	                    |¦  «        j        | 	                    |¦  «        j        fd¬
¦  «        d¬¦  «         ||d         k    r|n	|d d…         }	|                     |	d	|dd …         |d d…         z   z  f¦  «        }	t           ||	¦  «         ||	¦  «        d¬¦  «         d S )NrÐ   rE   r;   rS  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    r2  r`   Úspl_1fÚspl_1rh   Úy1Úspl_y1Úspl_yyÚspl_yy1s                 rW   Útest_insertzTestInsert.test_insert×  s•  € ð �IŠI�a˜rœzˆIÑ*Ô*ˆØ�FŠF�1‰IŒI�q‰LˆÝ   A¨Ð+Ñ+Ô+ˆàŒv�s”v˜sœuÐ%ˆÝ�&  sÑ+Ô+Ð,ˆØ—’ Ñ%Ô%ˆå˜œ §¢¨F¬HÑ!5Ô!5¸EÐBÑBÔBÐBÝ˜œ §¢¨F¬H°Y°s´u°f¸Q±h°YÔ,?Ñ!@Ô!@ÀuÐMÑMÔMÐMð ˜!˜Bœ%’-�-ˆQˆQ Q s¨ s¤VˆØ�YŠY˜˜C  1 2 2¤¨¨3¨B¨3¬¡Ñ0Ð1Ñ2Ô2ˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7ð �VŠV�A‰YŒY˜‰\ˆÝ# A r¨QÐ/Ñ/Ô/ˆÝ# A r§x¢x°°B°¸a xÑ'@Ô'@ÀAÐFÑFÔFˆØ×$Ò$ TÑ*Ô*ˆå˜œ	 5¤7°Ð7Ñ7Ô7Ð7ÝØŒIØ�HŠH�c—o’o dÑ+Ô+Ô-¨v×/AÒ/AÀ$Ñ/GÔ/GÔ/IÐJÐQRˆHÑSÔSØð	
ñ 	
ô 	
ð 	
ð ˜!˜Bœ%’-�-ˆQˆQ Q s¨ s¤VˆØ�YŠY˜˜C  1 2 2¤¨¨3¨B¨3¬¡Ñ0Ð1Ñ2Ô2ˆÝ˜˜˜r™
œ
 G G¨B¡K¤K°eÐ<Ñ<Ô<Ð<Ð<Ð<rk   zxval, m))r=   r9   )r0   r;   )r
  r­   )r<   r9   )r‰  r9   c           	      óÄ  — |                      d|j        ¬¦  «        }|                     |¦  «        dz  }t          ||d¬¦  «        }t	          t          ||j        |j        |j        f|¬¦  «        Ž }| 	                    ||¦  «        }t          |j        |                     |j        ¦  «        d¬¦  «         t          |j        |                     |j        d |j         dz
  …         ¦  «        d¬¦  «         ||d	         k    r|n	|d d	…         }	|                     |	d
|dd …         |d d	…         z   z  f¦  «        }	t           ||	¦  «         ||	¦  «        d¬¦  «         d S )NrÐ   rE   r;   rS  ©Ú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    r2  r‘  r’  rh   s
             rW   Útest_insert_multizTestInsert.test_insert_multiü  sM  € ð �IŠI�a˜rœzˆIÑ*Ô*ˆØ�FŠF�1‰IŒI�q‰LˆÝ   A¨Ð+Ñ+Ô+ˆå�& ¨¬°´¸¼Ð'>À!ÐDÑDÔDÐEˆØ—’  aÑ(Ô(ˆå˜œ §¢¨F¬HÑ!5Ô!5¸EÐBÑBÔBÐBÝ˜œ §¢¨F¬H°Y°s´u°f¸Q±h°YÔ,?Ñ!@Ô!@ÀuÐMÑMÔMÐMà˜!˜Bœ%’-�-ˆQˆQ Q s¨ s¤VˆØ�YŠY˜˜C  1 2 2¤¨¨3¨B¨3¬¡Ñ0Ð1Ñ2Ô2ˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7Ð7Ð7rk   c                 ó²  — t           j                             d¦  «        }d\  }}|                     t          j        |                     ||z   dz   ¬¦  «        ¦  «        ¦  «        }|                     |                     |ddf¬¦  «        ¦  «        }t          |||¦  «        }|                     |                     ||dz            || dz
           ¬¦  «        ¦  «        }|                     |¦  «        }	|                     |                     ||dz            || dz
           d¬	¦  «        ¦  «        }
t           ||
¦  «         |	|
¦  «        d
¬¦  «         d S )Né90  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   r2  Úxvr’  rh   s              rW   Útest_insert_randomzTestInsert.test_insert_random  s+  € ÝŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆ1à�JŠJ•r”w˜sŸ{š{°°!±°A±˜{Ñ6Ô6Ñ7Ô7Ñ8Ô8ˆØ�JŠJ�s—{’{¨¨A¨q¨	�{Ñ2Ô2Ñ3Ô3ˆÝ�a˜˜AÑÔˆà�ZŠZ˜Ÿš¨¨!¨A©#¬°Q¸°r¸!±t´W˜Ñ=Ô=Ñ>Ô>ˆØ—’ Ñ#Ô#ˆà�ZŠZ˜Ÿš¨¨!¨A©#¬°Q¸°r¸!±t´WÀ2˜ÑFÔFÑGÔGˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7Ð7Ð7rk   r£  )	r   çš™™™™™¹?r>   r@   ç      @ç      @ç      @gffffff@r‰  c                 ó>  — |                      d|j        ¬¦  «        }|                     |¦  «        dz  }t          ||d¬¦  «        \  }}}t	          |j        ||f¦  «        \  }}t          |||d¬¦  «        }|                     |¦  «        }	t          ||j	        d¬¦  «        \  }
}}t          |	j        |                     |
¦  «        d	¬
¦  «         t          |	j        d | dz
  …         |                     |d | dz
  …         ¦  «        d	¬
¦  «         t          j                             d¦  «                             ddd¬¦  «        }|                     |¦  «        }t           |	|¦  «        |                     t#          ||
||f¦  «        ¦  «        d	¬
¦  «         d S )NrÐ   rE   r;   rS  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   r2  r’  ÚtfÚcfrÈ   rh   s                 rW   Útest_insert_periodiczTestInsert.test_insert_periodic  s~  € ð �IŠI�a˜rœzˆIÑ*Ô*ˆØ�FŠF�1‰IŒI�q‰LˆÝ˜˜A Ð#Ñ#Ô#‰ˆˆ1ˆaÝ�2”:  1˜vÑ&Ô&‰ˆˆ1Ý�a˜˜A¨:Ð6Ñ6Ô6ˆà—’ Ñ#Ô#ˆÝ˜2˜sœw¨DÐ1Ñ1Ô1‰	ˆˆB�å˜œ §¢¨B¡¤°eÐ<Ñ<Ô<Ð<Ý˜œ  !  A¡ œ¨¯
ª
°2°e¸°r¸!±t°e´9Ñ(=Ô(=ÀEÐJÑJÔJÐJå”	×%Ò% dÑ+Ô+×3Ò3¸ÀÈÐ3ÑKÔKˆØ�ZŠZ˜ÑÔˆÝ˜˜˜b™	œ	 2§:¢:­e°E¸BÀÀA¸;Ñ.GÔ.GÑ#HÔ#HÈuÐUÑUÔUÐUÐUÐUrk   r€   NrÑ   c                 ó”  — |                      d|j        ¬¦  «        dz  t          j        z  }|                     |¦  «        |                     |¦  «        }}t          ||d|z  z   d¬¦  «        }||_        t          ||d¬¦  «        }||_        t          ||d¬¦  «        }||_        d}	|                     |	¦  «        }
|                     |	¦  «        }|                     |	¦  «        }t          |
j
        |j
        d¬	¦  «         t          |
j
        |j
        d¬	¦  «         t          |
j        |j        d|j        z  z   d¬	¦  «         d S )
NrÐ   rE   r9   r/   r;   rS  ç      @rZ   rt   )rO   rP   rK   Úpir‹  r�  r   r€   rŽ  r   r2   r3   )rS   r€   rT   rw   Úy_reÚy_imr2  Úspl_reÚspl_imr£  r’  Úspl_1reÚspl_1ims                rW   Útest_complexzTestInsert.test_complex0  s5  € à�IŠI�a˜rœzˆIÑ*Ô*¨QÑ.µ´Ñ6ˆØ—V’V˜A‘Y”Y §¢ q¡	¤	ˆdˆå   D¨2¨d©7¡N°aÐ8Ñ8Ô8ˆØ%ˆŒå# A t¨qÐ1Ñ1Ô1ˆØ(ˆÔå# A t¨qÐ1Ñ1Ô1ˆØ(ˆÔàˆØ—’ Ñ#Ô#ˆØ×$Ò$ RÑ(Ô(ˆØ×$Ò$ RÑ(Ô(ˆå˜œ ¤°Ð7Ñ7Ô7Ð7Ý˜œ ¤°Ð7Ñ7Ô7Ð7Ý˜œ ¤¨R°´	©\Ñ!9ÀÐFÑFÔFÐFÐFÐ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 ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr±  r;   r   r.   ©r9   r;   r<   r­   r©   rÑ   r   Trª  )	rK   rM  Úonesr=  r
   rG   rI   r   rŽ  )rS   r£  r4   r2   r3   r2  s         rW   Ú+test_insert_periodic_too_few_internal_knotsz6TestInsert.test_insert_periodic_too_few_internal_knotsG  sv  € ð ˆØˆÝŒH�a�S˜!˜A™#‘Y   Ñ-°°°Q°q±S±	Ñ9Ñ:Ô:ˆÝŒG•C˜‘F”F˜Q‘J ‘NÑ#Ô#ˆÝ�a˜˜A¨:Ð6Ñ6Ô6ˆå�:Ñ&Ô&ð 	,ð 	,Ý�2˜˜1˜a�y dÐ+Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ �:Ñ&Ô&ð 	 ð 	 Ø�OŠO˜BÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   Á=BÂB#Â&B#Â>C!Ã!C%Ã(C%c                 óZ  — d}t          j        dg|dz   z  g d¢z   dg|dz   z  z   ¦  «        }t          j        t          |¦  «        |z
  dz
  ¦  «        }t	          |||¦  «        }t          t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     d¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr;   r   r.   r»  r©   r7   rÐ   r™  )rK   rM  r¼  r=  r
   rG   rI   rŽ  )rS   r4   r2   r3   r2  s        rW   Útest_insert_no_extrapz TestInsert.test_insert_no_extrap[  sÜ  € ØˆÝŒH�a�S˜!˜A™#‘Y   Ñ-°°°Q°q±S±	Ñ9Ñ:Ô:ˆÝŒG•C˜‘F”F˜Q‘J ‘NÑ#Ô#ˆÝ�a˜˜AÑÔˆå�:Ñ&Ô&ð 	 ð 	 Ø�OŠO˜BÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ �:Ñ&Ô&ð 	ð 	Ø�OŠO˜AÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �:Ñ&Ô&ð 	$ð 	$Ø�OŠO˜A ˆOÑ#Ô#Ð#ð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$s6   Á9BÂBÂ"BÂ:CÃC Ã#C Ã;D Ä D$Ä'D$)r!  r"  r#  ra   r€  r�  r—  r›  r¤  r¯  r¹  r½  r¿  r$  rk   rW   r†  r†  Ô  s/  € € € € € ð „[×Ò˜VÐ%AÐ%AÐ%AÑBÔBð!=ð !=ñ CÔBð!=ðH „[×ÒØÐCÐCÐCñô ð8ð 8ñô ð8ð8ð 8ð 8ð „[×Ò˜Tð $8ð $8ð $8ñ ô ðVð Vñô ðVð" „[×Ò˜]¨T°:Ð,>Ñ?Ô?ðGð Gñ @Ô?ðGð, ð  ð  ð($ð $ð $ð $ð $rk   r†  c            
      óÞ   — dd„} dD ]e}t          |¬¦  «        }t          t          |¦  «        ¦  «        D ]6\  }} | ||¦  «         t          d|dz   ¦  «        D ]} | |||dd¦  «         ŒŒ7Œfd S )	Nr   rs   c           
      ó4  — | j         \  }}}t          j        |¦  «        }t          j        |d         dz
  d|dd …         |d d…         z   z  |d         dz   f         }t	          t          ||||f|¦  «         | ||¦  «        ||d|› d| j        › �¬¦  «         d S )	Nr   r¥  rÓ   r.   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�a‰LŒLˆÝŒE�!�A”$�s‘(˜C  1 2 2¤¨¨2¨A¨2¬¡Ñ/°°2´°s±Ð:Ô;ˆÝ�˜a ! Q¨ ¨CÑ0Ô0°!°!°A°s±)´)Ø Ð.G°sÐ.GÐ.GÀ!Ä#Ð.GÐ.Gð	Iñ 	Iô 	Ið 	Ið 	Ið 	Irk   ©r.   r9   r;   r<   r­   rS  r.   rÒ   )r   rs   rs   )r_   Ú	enumerateÚ_make_multiplesrà   )rÄ  r4   rV   rþ   r.  rÝ   s         rW   Útest_knots_multiplicityrÈ  k  sº   € ðIð Ið Ið Ið ð 6ð 6ˆÝ !Ð$Ñ$Ô$ˆÝ�¨qÑ1Ô1Ñ2Ô2ð 	6ð 	6‰EˆAˆrØˆK˜˜AÑÔÐÝ˜Q  !¡‘}”}ð 6ð 6�Ø�˜B  3¨¨uÑ5Ô5Ð5Ð5ð6ð	6ð6ð 6rk   c                 óÀ  — |dk    r#||         | cxk    r||dz            k     rn ndndS |||z            ||         k    rd}n6| ||         z
  |||z            ||         z
  z  t          | |dz
  ||¦  «        z  }|||z   dz            ||dz            k    rd}nE|||z   dz            | z
  |||z   dz            ||dz            z
  z  t          | |dz
  |dz   |¦  «        z  }||z   S )zw
    Naive way to compute B-spline basis functions. Useful only for testing!
    computes B(x; t[i],..., t[i+k+1])
    r   r.   r0   r=   ©Ú_naive_B©rw   r4   r  r2   Úc1Úc2s         rW   rË  rË  �  s  € ð
 	ˆA‚v€vØ˜”d˜aÐ(Ð(Ò(Ð( ! A a¡C¤&Ò(Ð(Ð(Ð(Ð(ˆsˆs¨cÐ1Øˆˆ1‰„v��1”‚~€~Øˆˆà�!�A”$‰h˜˜1˜Q™3œ ! A¤$™Ñ'­(°1°a¸±c¸1¸aÑ*@Ô*@Ñ@ˆØˆˆ1‰ˆQ‰„x�1�Q�q‘S”6ÒÐØˆˆà��!‘�A‘Œh˜‰l˜Q˜q ™s 1™uœX¨¨!¨A©#¬Ñ.Ñ/µ(¸1¸aÀ¹cÀ1ÀQÁ3ÈÑ2JÔ2JÑJˆØ�‰GÐrk   c                ó4  ‡ ‡‡‡‡— ‰ ‰‰         k    r‰Šn|                      ‰‰ ¦  «        dz
  Š‰‰         ‰ cxk    r‰‰dz            k    sn 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   óZ   •K  — | ]%}‰‰|z
           t          ‰‰‰|z
  ‰¦  «        z  V — Œ&d S ©NrÊ  )r�   rþ   r3   r  r4   r2   rw   s     €€€€€rW   ú	<genexpr>z_naive_eval.<locals>.<genexpr>ž  sB   øè è € ÐFÐF°1ˆq��1‘Œv�  A q¨¡s¨AÑ.Ô.Ñ.ÐFÐFÐFÐFÐFÐFrk   )Úsearchsortedr®   Úsumrà   )rw   r2   r3   r4   rT   r  s   ```` @rW   r‹   r‹   “  sÄ   øøøøø€ ð 	ˆAˆaŒD‚y€yØˆˆà�OŠO˜A˜qÑ!Ô! AÑ%ˆàˆQŒ4�1ÐÐÒÐ˜˜!˜A™#œÒÐÐÐÐÐØ�Š6ˆ6�a˜!œ' !œ* q™.Ò(Ð(Ð(Ð(ÝÐFÐFÐFÐFÐFÐFÐFÐF½¸aÀÀ1Á¹¼ÐFÑFÔFÑ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n J ‚t          ˆˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        S )z'Naive B-spline evaluation, another way.r   r.   c              3   óN   •K  — | ]}‰|         t          ‰‰|‰¦  «        z  V — Œ d S rÑ  rÊ  ©r�   r  r3   r4   r2   rw   s     €€€€rW   rÒ  z _naive_eval_2.<locals>.<genexpr>§  s:   øè è € Ð=Ð=¨qˆq�Œt•h˜q ! Q¨Ñ*Ô*Ñ*Ð=Ð=Ð=Ð=Ð=Ð=rk   )r®   rÔ  rà   )rw   r2   r3   r4   rT   rU   s   ````  rW   r�   r�   ¡  s�   øøøø€ à	Œ�Œ
�a˜‘cÑ€AØ��!‘Š8ˆ8ˆ8ˆ8ØŒ7�1Œ:˜Š?ˆ?ˆ?ˆ?ØˆQŒ4�1ÐÐÒÐ˜˜!œÒÐÐÐÐÐÝÐ=Ð=Ð=Ð=Ð=Ð=Ð=µE¸!±H´HÐ=Ñ=Ô=Ñ=Ô=Ð=rk   c                 ó.  — t          |¦  «        |dz   z
  }||dz   k    sJ ‚|j        d         |k    sJ ‚d}t          |¦  «        D ]O} t          j        ||||z   dz   …         d¬¦  «        | ¦  «        }|||         t          j        |¦  «        z  z  }ŒP|S )Nr.   r   r=   r9   Fr   )r=  r®   rà   r
   rì   rK   Ú
nan_to_num)rw   r2   r3   r4   rU   Úsr  rV   s           rW   rð   rð   ª  s¦   € ÝˆA‰Œ�!�A‘#‰€AØ��!‘Š8ˆ8ˆ8ˆ8ØŒ7�1Œ:˜Š?ˆ?ˆ?ˆ?Ø
€AÝ�1‰XŒXð %ð %ˆØ@�GÔ! ! A a¨¡c¨!¡e G¤*¸%Ð@Ñ@Ô@ÀÑCÔCˆØ	ˆQˆqŒT•B”M !Ñ$Ô$Ñ$Ñ$ˆˆØ€Hrk   c                 óÔ   — t          j        | ¦  «        } t          j        | | dk     | dk    z  | dk    | dk     z  | dk    | dk    z  gd„ d„ d„ g¦  «        }|                     |¦  «        S )z+ A linear B-spline function B(x | 0, 1, 2).r   r9   r.   c                 ó   — dS ©Nr=   r$  ©rw   s    rW   ú<lambda>zB_012.<locals>.<lambda>»  s   €  b€ rk   c                 ó   — | S rÑ  r$  rÞ  s    rW   rß  zB_012.<locals>.<lambda>»  s   € °A€ rk   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   µ  s€   € å
Œ�aÑÔ€AÝŒ\˜!˜q 1šu¨¨QªÑ/Ø !šV¨¨AªÑ.Ø !šV¨¨QªÑ/ð1ð )˜L¨+¨+°~°~ÐFñHô H€Fð �:Š:�fÑÔÐrk   c                 óê   — t          j        | ¦  «        } | dk     | dk    | dk     z  | dk    g}|dk    r	d„ d„ d„ g}n!|dk    r	d„ d„ d	„ g}nt          d
|› �¦  «        ‚t          j        | ||¦  «        }|S )z0A quadratic B-spline function B(x | 0, 1, 2, 3).r.   r9   r   c                 ó   — | | z  dz  S râ  r$  rÞ  s    rW   rß  zB_0123.<locals>.<lambda>Ä  s   € ˜1˜Q™3˜r™6€ rk   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                 ó   — dS ©Nr0   r$  rÞ  s    rW   rß  zB_0123.<locals>.<lambda>È  ó   € ˜2€ rk   c                 ó   — dS )Ng       Àr$  rÞ  s    rW   rß  zB_0123.<locals>.<lambda>É  s   € ˜3€ rk   c                 ó   — dS 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€xØ!Ð!Ø-Ð-Ø(Ð(ð*ˆˆð 
�ŠˆØ�Ø�Ø�ðˆˆõ Ð4¨sÐ4Ð4Ñ5Ô5Ð5ÝŒ\˜!˜U EÑ*Ô*€FØ€Mrk   é#   r;   c                 óD  — t           j                             d¦  «        }t          j        |                     | |z   dz   ¦  «        ¦  «        }|                     | ¦  «        }|                     |¦  «        |                     |¦  «        }}t          j        |||¦  «        S )Né{   r.   )rK   rR   r�   rž   rQ   r
   Úconstruct_fast)rU   r4   rT   rŸ   r2   r3   s         rW   r_   r_   Ñ  s{   € Ý
Œ)×
Ò
 Ñ
$Ô
$€CÝ
Œ�—
’
˜1˜Q™3˜q™5Ñ!Ô!Ñ"Ô"€AØ�
Š
�1‰Œ€AØ�:Š:�a‰=Œ=˜"Ÿ*š* Q™-œ-€q€AÝÔ! ! Q¨Ñ*Ô*Ð*rk   c              #   ó   K  — | j         | j        }}| j                             ¦   «         }|d         |dd…<   |d         |d<   t	          |||¦  «        V — | j                             ¦   «         }|d         |d|dz   …<   t	          |||¦  «        V — | j                             ¦   «         }|d         || dz
  d…<   t	          |||¦  «        V — dS )	zIncrease knot multiplicity.é   é   é   r§   r   Nr.   r7   )r3   r4   r2   Úcopyr
   )rV   r3   r4   Út1s       rW   rÇ  rÇ  Ù  sØ   è è € àŒ3�”€q€Aà	
Œ�Š‰Œ€BØ�2”€B€rˆ"€u�IØ�ŒV€B€r�FÝ
�"�a˜Ñ
Ô
ÐÐÐà	
Œ�Š‰Œ€BØ�!Œu€B€tˆˆ!‰€t�HÝ
�"�a˜Ñ
Ô
ÐÐÐà	
Œ�Š‰Œ€BØ�2”€Bˆ€rˆ!�t€u€u�IÝ
�"�a˜Ñ
Ô
ÐÐÐÐÐrk   c                   óP   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ ZdS )ÚTestInteropc                 ó
  — t          j        ddt           j        z  d¦  «        }t          j        |¦  «        }t	          ||¦  «        }|j        |j        |j        f| _        |||c| _	        | _
        | _        t          j        ddt           j        z  d¦  «        | _        t           j        |j        |j        |j        f         }t          j        ||f¦  «        | _        t!          |j        | j        |j        ¦  «        | _        d S )Nr   r@   r¬  rù  )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™H bÑ)Ô)ˆÝŒV�B‰ZŒZˆÝ˜r 2Ñ&Ô&ˆØ”C˜œ˜aœc�?ˆŒØ#% r¨1Ð ˆŒ�”˜$œ&å”K  2¥b¤e¡8¨RÑ0Ô0ˆŒ	åŒU�1”3˜œ˜QœS�=Ô!ˆÝ”)˜R ˜HÑ%Ô%ˆŒÝ˜!œ#˜tœw¨¬Ñ,Ô,ˆŒˆˆrk   c                 ó  ‡— | j         | j        | j        c}Š}t          t	          |‰¦  «         ‰|¦  «        dd¬¦  «         t          t	          |‰j        ¦  «         ‰|¦  «        dd¬¦  «         t          t          j        ˆfd„|D ¦   «         ¦  «         ‰|¦  «        dd¬¦  «         t          t          d¬¦  «        5  t	          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d|j        j        ¦  «        ¦  «        dz   }|j                             |¦  «        }|j        ||j        f}t          t          j        t	          ||¦  «        ¦  «         ||¦  «                             |¦  «        dd¬¦  «         d S )NrZ   r[   c                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS r$  )r   )r�   rw   rV   s     €rW   rŽ   z*TestInterop.test_splev.<locals>.<listcomp>  s!   ø€ Ð#>Ð#>Ð#>°A¥E¨!¨Q¡K¤KÐ#>Ð#>Ð#>rk   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ÿ  r  r+  rõ   r`   rV   s         @rW   Ú
test_splevzTestInterop.test_splevü  sÜ  ø€ Ø”i ¤¨¬ˆˆˆa�õ 	�˜d A™œØ˜˜$™œ e°%ð	9ñ 	9ô 	9ð 	9å�˜d A¤EÑ*Ô*Ø˜˜$™œ e°%ð	9ñ 	9ô 	9ð 	9å�œ
Ð#>Ð#>Ð#>Ð#>¸Ð#>Ñ#>Ô#>Ñ?Ô?Ø˜˜$™œ e°%ð	9ñ 	9ô 	9ð 	9õ
 �:Ð-KÐLÑLÔLð 	ð 	Ý�$˜‰OŒOˆOð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ •5˜˜BœDœIÑ&Ô&Ñ'Ô'¨$Ñ.ˆØŒT�^Š^˜BÑÔˆØŒt�R˜œÐˆÝ�œ
¥5¨¨sÑ#3Ô#3Ñ4Ô4Ø˜˜4™œ×*Ò*¨2Ñ.Ô.°UÀð	Hñ 	Hô 	Hð 	Hð 	Hð 	Hs   ÃCÃC"Ã%C"c                 ó&  — | j         | j        }}t          ||¦  «        }t          j        ||¦  «        \  }}}t	          |d         |d¬¦  «         t	          |d         |d¬¦  «         |d         |k    sJ ‚t          ||d¬¦  «        \  }}}}t	          |d         |d¬¦  «         t	          |d         |d¬¦  «         |d         |k    sJ ‚t          ||¦  «        }	t	          ||	d¬¦  «         t          |Ž }
t	          | |
|¦  «        d¬¦  «         d S )Nr   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˜œˆ1ˆå�Q˜‰lŒlˆÝ”,˜q !Ñ$Ô$‰ˆˆ1ˆaÝ˜˜Aœ ¨Ð.Ñ.Ô.Ð.Ý˜˜Aœ ¨Ð.Ñ.Ô.Ð.Ø�1Œv˜Š{ˆ{ˆ{ˆ{õ    1°$Ð7Ñ7Ô7‰ˆˆq�!�QÝ˜˜aœ !¨%Ð0Ñ0Ô0Ð0Ý˜˜aœ !¨%Ð0Ñ0Ô0Ð0Ø�QŒx˜1Š}ˆ}ˆ}ˆ}õ �1�c‰]Œ]ˆÝ˜˜2 EÐ*Ñ*Ô*Ð*õ �SˆMˆÝ˜˜1˜1˜Q™4œ4 eÐ,Ñ,Ô,Ð,Ð,Ð,rk   c                 óˆ  — | j         | j        }}t          j        ||f         }t	          t
          ¦  «        5  t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t
          ¦  «        5  t          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          d¬¦  «        5  t          |d d…         |d d…         ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t          d¬¦  «        5  t          j        |d d…         |d d…         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Núm > k must holdr  r;   )	rh   rÍ   rK   r   rG   rI   r   r  rH   )rS   rw   r    Úy2s       rW   Útest_splrep_errorszTestInterop.test_splrep_errors/  s*  € ð Œw˜œˆ1ˆÝŒU�1�a�4Œ[ˆÝ�:Ñ&Ô&ð 	ð 	Ý�1�b‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�:Ñ&Ô&ð 	 ð 	 ÝŒL˜˜BÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ �9Ð,=Ð>Ñ>Ô>ð 	!ð 	!Ý�1�R�a�R”5˜!˜B˜Q˜Bœ%Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!å�9Ð,=Ð>Ñ>Ô>ð 	'ð 	'ÝŒL˜˜2˜A˜2œ  " 1 "¤Ñ&Ô&Ð&ð	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	'sG   ·AÁAÁAÁ3BÂBÂBÂ6!C#Ã#C'Ã*C'Ä&D7Ä7D;Ä>D;c                 óf  — t          j        dt           j        ¬¦  «                             d¦  «        }t	          |¦  «        \  }}t          j        |¦  «        \  }}t          ||d¬¦  «         t          t          j        t          ||¦  «        ¦  «        |d¬¦  «         t          t          j        t          ||¦  «        ¦  «        |d¬¦  «         t	          |dd¬¦  «        \  \  }}}}}t          ||d¬¦  «         t          t          j        t          ||¦  «        ¦  «        |d¬¦  «         d S )	Nr  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�b¥¤
Ð+Ñ+Ô+×3Ò3°FÑ;Ô;ˆÝ�q‰zŒz‰ˆˆ1Ý”- Ñ"Ô"‰ˆˆRõ 	˜˜2 EÐ*Ñ*Ô*Ð*Ý�œ
¥5¨¨A¡;¤;Ñ/Ô/°¸Ð?Ñ?Ô?Ð?Ý�œ
¥5¨¨C¡=¤=Ñ1Ô1°1¸5ÐAÑAÔAÐAõ & a¨1¸$Ð?Ñ?Ô?Ñ‰
ˆˆc�A�q˜!Ý˜˜3 UÐ+Ñ+Ô+Ð+Ý�œ
¥5¨¨c¡?¤?Ñ3Ô3°Q¸UÐCÑCÔCÐCÐCÐCrk   c                 ó  — t          j        d¦  «                             d¦  «        }t          t          d¬¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        ddd¬¦  «        }t          t          d	¬¦  «        5  t          |g¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d	¬¦  «        5  t          j        |g¦  «         d d d ¦  «         n# 1 swxY w Y   g d
¢}t          t          d¬¦  «        5  t          |g¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          j        |g¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}g d¢}t          t          d¬¦  «        5  t          |gd |gŽ  d d d ¦  «         d S # 1 swxY w Y   d S )Né<   r¬   ztoo many values to unpackr  r   r8  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  sµ  € åŒI�eÑÔ×$Ò$ YÑ/Ô/ˆÝ�:Ð-HÐIÑIÔIð 	ð 	Ý�A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�:Ð-HÐIÑIÔIð 	ð 	ÝŒM˜!ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ŒK˜˜2 1Ð%Ñ%Ô%ˆÝ�9Ð,=Ð>Ñ>Ô>ð 	ð 	Ý�Q�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�9Ð,=Ð>Ñ>Ô>ð 	ð 	ÝŒM˜1˜#ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð
 EÐDÐDˆÝ�:Ð-=Ð>Ñ>Ô>ð 	ð 	Ý�Q�C‰LŒLˆLð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	å�:Ð-=Ð>Ñ>Ô>ð 	ð 	ÝŒM˜1˜#ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ˆLˆLˆØÐÐˆÝ�:Ð-=Ð>Ñ>Ô>ð 	%ð 	%Ý�q�c˜4 �^Ð$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð 	%ð 	%s}   ¾AÁAÁ!AÁ;BÂB Â#B ÃC1Ã1C5Ã8C5ÄD4Ä4D8Ä;D8ÅE6Å6E:Å=E:ÆF9Æ9F=Ç F=Ç"G=Ç=HÈHc                 óŠ  — | j         | j        }}t          j        g d¢¦  «        t          j        z  }t          t          |¦  «        |dd¬¦  «         t          t          |j        |j        |j	        f¦  «        |dd¬¦  «         t          t          d¬¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   |j                             dd	d
¦  «        }t          j        t          |j        ||j	        fd¬¦  «        ¦  «        }|j        dk    sJ ‚t          ||z
  t          j        |¦  «        d¬¦  «         d S )N)rÓ   r
  rB   r±  r½   r[   zCalling sproot.. with BSpliner  rq   )Úmestr.   r9   r   )r;   r9   r<   rÒ   rt   )rV   r  rK   rM  r²  r   r   r2   r3   r4   rG   rI   r	  rQ   r®   rá   )rS   rV   r  ÚrootsÚc2rÚrrs         rW   Útest_sprootzTestInterop.test_sprootk  sn  € Ø”˜œˆ2ˆÝ”Ð-Ð-Ð-Ñ.Ô.­r¬uÑ4ˆå�˜q™	œ	 5¨t¸$Ð?Ñ?Ô?Ð?Ý� ¤ Q¤S¨!¬#˜Ñ/Ô/°¸TÈÐMÑMÔMÐMõ �:Ð-LÐMÑMÔMð 	 ð 	 Ý�2˜BÐÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð Œd�nŠn˜Q  1Ñ%Ô%ˆÝŒZ� ¤ c¨2¬4Ð0°rÐ:Ñ:Ô:Ñ;Ô;ˆØŒx˜9Ò$Ð$Ð$Ð$Ý˜˜U™
¥B¤M°"Ñ$5Ô$5¸EÐBÑBÔBÐBÐBÐBs   ÂB8Â8B<Â?B<c           	      ón  — | j         | j        }}t          t          dd|¦  «        t          dd|j        ¦  «        dd¬¦  «         t          t          dd|¦  «        |                     dd¦  «        dd¬¦  «         t          t          d¬¦  «        5  t          dd|¦  «         d d d ¦  «         n# 1 swxY w Y   |j         	                    ddd¦  «        }t          j        t          dd|j        ||j        f¦  «        ¦  «        }|j        d	k    sJ ‚t          |t          dd|¦  «        dd¬
¦  «         d S )Nr   r.   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Ñ+Ô+°%À%ð	Iñ 	Iô 	Ið 	Iå�˜q ! Q™œØŸš A qÑ)Ô)°Àð	Gñ 	Gô 	Gð 	Gõ �:Ð-LÐMÑMÔMð 	ð 	Ý�1�a˜ÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð Œd�nŠn˜Q  1Ñ%Ô%ˆÝ”�F 1 a¨"¬$°°R´TÐ):Ñ;Ô;Ñ<Ô<ˆØŒ|˜vÒ%Ð%Ð%Ð%Ý˜Ý˜q ! Q™œ¨eÀð	Hñ 	Hô 	Hð 	Hð 	Hð 	Hs   ÂB/Â/B3Â6B3c           	      ó®  — | j         | j        fD �]D}t          |j        ¦  «        t          |j        ¦  «        z
  }|j                             ¦   «         }|dk    r7t          j        |t          j        |f|j	        dd …         z   ¦  «        f         }dD ]¿}t          |¦  «        }t          j
        |j                             ¦   «         ||j        f¦  «        }t          |j        |d         d¬¦  «         t          |j        |d         d¬¦  «         |j        |d         k    sJ ‚t          |t          ¦  «        sJ ‚t          |t           ¦  «        sJ ‚ŒÀ�ŒFd S ©Nr   r.   ©r.   r9   r;   rZ   rt   r9   )rV   r  r=  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?  € Ø”&˜$œ'Ð"ð 	0ñ 	0ˆAå�Q”S‘”�C ¤™HœHÑ$ˆBØ”#—(’(‘*”*ˆCØ�AŠvˆvÝ”e˜C¥¤¨2¨%°#´)¸A¸B¸B´-Ñ*?Ñ!@Ô!@Ð@ÔA�àð 0ð 0�Ý˜A‘Y”Y�Ýœ a¤c§h¢h¡j¤j°#°q´sÐ%;Ñ<Ô<�Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ø”t˜u QœxÒ'Ð'Ð'Ð'Ý! "¥gÑ.Ô.Ð.Ð.Ð.Ý! %­Ñ/Ô/Ð/Ð/Ð/Ð/ñ0ð	0ð 	0rk   c           	      ó®  — | j         | j        fD �]D}t          |j        ¦  «        t          |j        ¦  «        z
  }|j                             ¦   «         }|dk    r7t          j        |t          j        |f|j	        dd …         z   ¦  «        f         }dD ]¿}t          |¦  «        }t          j
        |j                             ¦   «         ||j        f¦  «        }t          |j        |d         d¬¦  «         t          |j        |d         d¬¦  «         |j        |d         k    sJ ‚t          |t          ¦  «        sJ ‚t          |t           ¦  «        sJ ‚ŒÀ�ŒFd S r-  )rV   r  r=  r2   r3   rú  rK   r´   r/  r®   r   r  r4   r   r  r
   r*  r0  s          rW   Útest_splantiderzTestInterop.test_splantider¡  s@  € Ø”&˜$œ'Ð"ð 	0ñ 	0ˆAå�Q”S‘”�C ¤™HœHÑ$ˆBØ”#—(’(‘*”*ˆCØ�AŠvˆvÝ”e˜C¥¤¨2¨%°#´)¸A¸B¸B´-Ñ*?Ñ!@Ô!@Ð@ÔA�àð 0ð 0�Ý ‘]”]�ÝÔ(¨!¬#¯(ª(©*¬*°c¸1¼3Ð)?Ñ@Ô@�Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ý ¤ e¨A¤h°UÐ;Ñ;Ô;Ð;Ø”t˜u QœxÒ'Ð'Ð'Ð'Ý! "¥gÑ.Ô.Ð.Ð.Ð.Ý! %­Ñ/Ô/Ð/Ð/Ð/Ð/ñ0ð	0ð 	0rk   c                 ó˜  — | j         | j        | j        }}}|j        j        dz  }d|j        |         |j        |dz            z   z  }t          ||¦  «        t          ||j        |j        |j        f¦  «        }}t          t          ||¦  «        t          ||¦  «        d¬¦  «         t          |t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          t          |j        j        ¦  «        ¦  «        }|j                             |dd …         dz   ¦  «        }	t          ||j        |	|j        f¦  «        }
t          ||¦  «        }t          t!          j        t          ||
¦  «        ¦  «                             ddd¦  «         ||¦  «        d¬¦  «         t          |t          ¦  «        sJ ‚t          |
t          ¦  «        sJ ‚d S )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²  s¥  € Ø”F˜DœG T¤Wˆrˆ2ˆàŒCŒH˜‰MˆØ�!”#�a”&˜1œ3˜q ™sœ8Ñ#Ñ$ˆå˜2˜q‘M”M¥6¨"¨q¬s°A´C¸¼¨oÑ#>Ô#>ˆEˆÝ�˜b "™œÝ˜b %Ñ(Ô(¨uð	6ñ 	6ô 	6ð 	6å˜"�gÑ&Ô&Ð&Ð&Ð&Ý˜%¥Ñ'Ô'Ð'Ð'Ð'õ •5˜œœÑ#Ô#Ñ$Ô$ˆØŒT�^Š^˜B˜q˜r˜rœF T™MÑ*Ô*ˆÝ˜˜RœT 2 r¤tÐ,Ñ-Ô-ˆå�R˜‰nŒnˆõ 	�œ
¥5¨¨VÑ#4Ô#4Ñ5Ô5×?Ò?ÀÀ1ÀaÑHÔHØ˜˜B™œ eð	-ñ 	-ô 	-ð 	-å˜#�wÑ'Ô'Ð'Ð'Ð'Ý˜&¥%Ñ(Ô(Ð(Ð(Ð(Ð(Ð(rk   N)r!  r"  r#  r  r
  r  r  r  r  r%  r+  r5  r7  r—  r$  rk   rW   rý  rý  ë  sÅ   € € € € € ð-ð -ð -ðHð Hð Hð6-ð -ð -ð0'ð 'ð 'ð Dð Dð Dð%ð %ð %ð:Cð Cð Cð"Hð Hð Hð(0ð 0ð 0ð"0ð 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                             dg d¢¦  «        d	„ ¦   «         Zej                             dg d¢¦  «        d
„ ¦   «         Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             d¬¦  «        d„ ¦   «         Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$d!„ Z%d"„ Z&d#„ Z'ej                             dg d$¢¦  «        d%„ ¦   «         Z(d&„ Z)d'„ Z*d(„ Z+d)„ Z,d*„ Z-d+S ),Ú
TestInterpr=   r>   c                 ó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Ñ$7Ô$7Ð7Ð7rk   c                 ó˜   — t          t          ¦  «        5  t          | j        | j        d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrB   rS  )rG   rH   r   rh   rÍ   ©rS   s    rW   Útest_non_int_orderzTestInterp.test_non_int_orderØ  s�   € Ý�9Ñ%Ô%ð 	8ð 	8Ý˜tœw¨¬°3Ð7Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s   •?¿AÁAc                 óð   — |                       |¦  «        \  }}t          ||d¬¦  «        }t           ||¦  «        |dd¬¦  «         t          ||dd¬¦  «        }t           ||¦  «        |dd¬¦  «         d S )Nr   rS  rs   r[   r7   ©r4   r  ©rA  r   r   ©rS   rT   rh   rÍ   rV   s        rW   Útest_order_0zTestInterp.test_order_0Ü  ó…   € Ø—’˜bÑ!Ô!‰ˆˆBÝ˜r 2¨Ð+Ñ+Ô+ˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:Ý˜r 2¨°Ð4Ñ4Ô4ˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:Ð:Ð:rk   c                 óð   — |                       |¦  «        \  }}t          ||d¬¦  «        }t           ||¦  «        |dd¬¦  «         t          ||dd¬¦  «        }t           ||¦  «        |dd¬¦  «         d S )Nr.   rS  rs   r[   r7   rF  rG  rH  s        rW   Útest_linearzTestInterp.test_linearã  rJ  rk   r4   rê   c                 ó˜   — g d¢}g d¢}t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©r   r.   r9   r;   r<   r­   )r   r.   r9   r;   r<   r­   r¨   r©   zShapes of xr  rS  ©rG   rI   r   ©rS   r4   rw   r    s       rW   Útest_incompatible_x_yz TestInterp.test_incompatible_x_yê  s¤   € àÐÐˆØ$Ð$Ð$ˆÝ�:¨]Ð;Ñ;Ô;ð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s   Ÿ?¿AÁAc                 óö  — g d¢}g d¢}t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          j        |¦  «                             d¦  «        }t          t          d¬¦  «        5  t          |||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	N)r   r.   r.   r9   r;   r<   rN  zx to not have duplicatesr  rS  )r   r9   r.   r;   r<   r­   zExpect x to be a 1D strictly)r.   r7   )rG   rI   r   rK   rQ   r�   rP  s       rW   Útest_broken_xzTestInterp.test_broken_xñ  sÖ  € àÐÐˆØÐÐˆÝ�:Ð-GÐHÑHÔHð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ÐÐˆÝ�:Ð-KÐLÑLÔLð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð ÐÐˆÝŒJ�q‰MŒM×!Ò! 'Ñ*Ô*ˆÝ�:Ð-KÐLÑLÔLð 	*ð 	*Ý˜q ! qÐ)Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð 	*ð 	*s3   Ÿ>¾AÁAÁ#BÂBÂ	BÃC.Ã.C2Ã5C2c                 óš   — |                       |¦  «        \  }}dD ]/}t          |||¦  «        }t           ||¦  «        |dd¬¦  «         Œ0d S )N©r9   r;   r<   r­   r¨   r©   rs   r[   rG  )rS   rT   rh   rÍ   r4   rV   s         rW   Útest_not_a_knotzTestInterp.test_not_a_knot  sc   € Ø—’˜bÑ!Ô!‰ˆˆBØ#ð 	?ð 	?ˆAÝ" 2 r¨1Ñ-Ô-ˆAÝ˜A˜A˜b™EœE 2¨E¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?rk   c                 ó  — |                       |¦  «        \  }}t          ||dd¬¦  «        }t           ||¦  «        |dd¬¦  «         t          dd¦  «        D ]6}t           ||d         |¬¦  «         ||d	         |¬¦  «        d
¬¦  «         Œ7t          ||ddd	¬¦  «        }t           ||¦  «        |dd¬¦  «         t          dd¦  «        D ]6}t           ||d         |¬¦  «         ||d	         |¬¦  «        d
¬¦  «         Œ7d S )Nr­   rÑ   r9  rs   r[   r.   r   rÞ   r7   ç•dyáý¥=rt   ©r4   r:  r  )rA  r   r   rà   )rS   rT   rh   rÍ   rV   r  s         rW   Útest_periodiczTestInterp.test_periodic  s5  € Ø—’˜bÑ!Ô!‰ˆˆBõ ˜r 2¨°JÐ?Ñ?Ô?ˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:õ �q˜!‘”ð 	Ið 	IˆAÝ˜A˜A˜b œe¨˜N™NœN¨A¨A¨b°¬f¸¨O©O¬OÀ%ÐHÑHÔHÐHÐHå˜r 2¨°JÀRÐHÑHÔHˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:Ý�q˜!‘”ð 	Ið 	IˆAÝ˜A˜A˜b œe¨˜N™NœN¨A¨A¨b°¬f¸¨O©O¬OÀ%ÐHÑHÔHÐHÐHð	Ið 	Irk   rU  c                 ó’  — d}t           j                             d¦  «        }t          j        |                     |¦  «        dz  ¦  «        }|                     |¦  «        dz  }|d         |d<   |                     |¦  «        |                     |¦  «        }}t          |||d¬¦  «        }t           ||¦  «        |d	¬
¦  «         d S )Nr­   rš   re   r£   r7   r   rÑ   r9  rs   rt   )rK   rR   r�   rž   r;  rQ   r   r   )rS   r4   rT   rU   rŸ   rw   r    rV   s           rW   Útest_periodic_randomzTestInterp.test_periodic_random  s»   € ð ˆÝŒi×#Ò# DÑ)Ô)ˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-Ñ.Ô.ˆØ×Ò˜aÑ Ô  3Ñ&ˆØ�Œuˆˆ!‰Ø�zŠz˜!‰}Œ}˜bŸjšj¨™mœmˆ1ˆå˜q ! q°*Ð=Ñ=Ô=ˆÝ˜˜˜!™œ˜a eÐ,Ñ,Ô,Ð,Ð,Ð,rk   c                 óæ  — | j         j        d         }t          j                             d¦  «        }|                     |¦  «        dz  t          j        z  }t          j        |¦  «        }d|d<   dt          j        z  |d<   t          j        d|f¦  «        }t          j	        |¦  «        |d<   t          j
        |¦  «        |d<   |                     |¦  «        |                     |¦  «        }}t          ||ddd¬	¦  «        }t          |¦  «        D ]-}t           |||         ¦  «        |d d …|f         d
¬¦  «         Œ.t           ||d         ¦  «         ||d         ¦  «        d
¬¦  «         d S )Nr   rš   r9   r=   r7   r.   r­   rÑ   rY  rs   rt   )rh   r®   rK   rR   r�   r;  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$  sK  € ØŒGŒM˜!ÔˆÝŒi×#Ò# DÑ)Ô)ˆØ×Ò˜aÑ Ô  1Ñ$¥r¤uÑ,ˆÝŒG�A‰JŒJˆØˆˆ!‰Ø•B”E‘	ˆˆ"‰ÝŒH�a˜�VÑÔˆÝŒv�a‰yŒyˆˆ!‰ÝŒv�a‰yŒyˆˆ!‰Ø�zŠz˜!‰}Œ}˜bŸjšj¨™mœmˆ1ˆå˜q ! q°*À1ÐEÑEÔEˆÝ�q‘”ð 	:ð 	:ˆAÝ˜A˜A˜a œd™GœG Q q q q¨! t¤W°5Ð9Ñ9Ô9Ð9Ð9Ý˜˜˜!˜Aœ$™œ   1 R¤5¡¤°Ð6Ñ6Ô6Ð6Ð6Ð6rk   c                 ó`  — t           j                             d¦  «        }d}d}t          j        |                     |¦  «        ¦  «        }|                     |¦  «        }|d         dz
  |d<   t          t          ¦  «        5  t          |||d¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nrš   r­   rÐ   r7   r.   r   rÑ   r9  )rK   rR   r�   rž   r;  rG   rI   r   )rS   rŸ   r4   rU   rw   r    s         rW   Útest_periodic_points_exceptionz)TestInterp.test_periodic_points_exception5  së   € åŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(Ñ)Ô)ˆØ×Ò˜aÑ Ô ˆØ�Œu�q‰yˆˆ!‰Ý�:Ñ&Ô&ð 	>ð 	>Ý˜q ! q°*Ð=Ñ=Ô=Ð=ð	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð 	>ð 	>s   ÂB#Â#B'Â*B'c                 óx  — t           j                             d¦  «        }d}d}t          j        |                     |¦  «        ¦  «        }|                     |¦  «        }t          j        |d|z  z   ¦  «        }t          t          ¦  «        5  t          ||||d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrš   r;   r©   r9   rÑ   )	rK   rR   r�   rž   r;  r/  rG   rI   r   )rS   rŸ   r4   rU   rw   r    r2   s          rW   Útest_periodic_knots_exceptionz(TestInterp.test_periodic_knots_exception@  sð   € åŒi×#Ò# DÑ)Ô)ˆØˆØˆÝŒG�C×%Ò% aÑ(Ô(Ñ)Ô)ˆØ×Ò˜aÑ Ô ˆÝŒH�Q˜˜Q™‘YÑÔˆÝ�:Ñ&Ô&ð 	7ð 	7Ý˜q ! Q¨¨:Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð 	7ð 	7s   ÂB/Â/B3Â6B3r»  c                 ó|  — t          | j        | j        |d¬¦  «        }t          | j        | j        d|¬¦  «        }t	          | j        |¦  «        }t          | || j        ¦  «        d¬¦  «         t          d|¦  «        D ];}t	          | j        ||¬¦  «        }t          | || j        |¬	¦  «        d
¬¦  «         Œ<d S )NrÑ   r9  T)r«  r4   rs   rt   r.   rÜ   rÞ   r»   )r   rh   rÍ   r   r   r   rà   )rS   r4   rV   r`   r2  r  s         rW   Útest_periodic_splevzTestInterp.test_periodic_splevK  sÊ   € õ ˜tœw¨¬°1¸jÐIÑIÔIˆÝ�T”W˜dœg¨4°1Ð5Ñ5Ô5ˆÝ�D”G˜SÑ!Ô!ˆÝ˜˜Q˜Q˜tœw™ZœZ¨eÐ4Ñ4Ô4Ð4õ �q˜!‘”ð 	?ð 	?ˆAÝ˜œ ¨!Ð,Ñ,Ô,ˆCÝ˜C   4¤7¨qÐ!1Ñ!1Ô!1¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?rk   c                 óB  — t          | j        | j        dd¬¦  «        }t          | j        | j        d¬¦  «        }t	           || j        ¦  «         || j        ¦  «        d¬¦  «         t
          j                             d¦  «        }d}t          j        | 	                    |¦  «        dz  ¦  «        }| 	                    |¦  «        d	z  }|d
         |d<   t          ||dd¬¦  «        }t          ||d¬¦  «        }t	           ||¦  «         ||¦  «        d¬¦  «         d S )Nr;   rÑ   r9  r^  rs   rt   rš   re   r£   r7   r   )
r   rh   rÍ   r   r   rK   rR   r�   rž   r;  )rS   rV   ÚcubrŸ   rU   rw   r    s          rW   Útest_periodic_cubiczTestInterp.test_periodic_cubicX  s  € å˜tœw¨¬°1¸jÐIÑIÔIˆÝ˜$œ' 4¤7°JÐ?Ñ?Ô?ˆÝ˜˜˜$œ'™
œ
 C C¨¬¡L¤L°uÐ=Ñ=Ô=Ð=õ Œi×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨2Ñ-Ñ.Ô.ˆØ×Ò˜aÑ Ô  3Ñ&ˆØ�Œuˆˆ!‰Ý˜q ! q°*Ð=Ñ=Ô=ˆÝ˜!˜Q¨
Ð3Ñ3Ô3ˆÝ˜˜˜!™œ˜c˜c !™fœf¨5Ð1Ñ1Ô1Ð1Ð1Ð1rk   c                 ó:  ‡‡‡— dŠt          | j        | j        ‰d¬¦  «        }t          | j        ‰¦  «        Št	          | j        | j        ‰‰¦  «        Št          j        ˆˆˆfd„¦  «        }t           || j        ¦  «         || j        ¦  «        d¬¦  «         d S )Nr;   rÑ   r9  c                 ó6   •— 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Ð$BÑ$BÔ$B€ rk   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  sœ   øøø€ ð ˆÝ˜tœw¨¬°1¸jÐIÑIÔIˆÝ˜DœG QÑ'Ô'ˆÝ& t¤w°´¸¸AÑ>Ô>ˆÝŒ\ÐBÐBÐBÐBÐBÐBÑCÔCˆÝ˜˜˜$œ'™
œ
 B B t¤w¡K¤K°eÐ<Ñ<Ô<Ð<Ð<Ð<rk   c                 ó(  — |                       |¦  «        \  }}dg}t          ||dd |f¬¦  «        }t           ||¦  «        |dd¬¦  «         t           ||d         d¦  «        |                     |d         d         |j        ¬	¦  «        ddd
¬¦  «         t          ||d|d f¬¦  «        }t           ||¦  «        |dd¬¦  «         t           ||d         d¦  «        |                     |d         d         |j        ¬	¦  «        ddd
¬¦  «         d S )N©r.   g       @r9   r9  rs   r[   r7   r.   r   rE   F)r\   r]   r'  ©rA  r   r   rQ   rP   )rS   rT   rh   rÍ   rÝ   rV   s         rW   Útest_quadratic_derivzTestInterp.test_quadratic_derivr  s6  € Ø—’˜bÑ!Ô!‰ˆˆBØˆiˆõ ˜r 2¨°T¸3°KÐ@Ñ@Ô@ˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝØˆAˆb�Œf�a‰LŒLØ�JŠJ�s˜1”v˜a”y¨¬
ˆJÑ3Ô3Ø˜U¨Uð	
ñ 	
ô 	
ð 	
õ ˜r 2¨°S¸$°KÐ@Ñ@Ô@ˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝØˆAˆb�Œe�Q‰KŒKØ�JŠJ�s˜1”v˜a”y¨¬
ˆJÑ3Ô3Ø˜U¨Uð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rk   c                 ó:  — |                       |¦  «        \  }}d}dgdg}}t          |||||f¬¦  «        }t           ||¦  «        |dd¬¦  «         t           ||d         d¦  «        |                     |d         d         |j        ¬	¦  «        dd¬¦  «         t           ||d
         d¦  «        |                     |d         d         |j        ¬	¦  «        dd¬¦  «         dgdg}}t          |||||f¬¦  «        }t           ||¦  «        |dd¬¦  «         d S )Nr;   ©r.   r?   )r.   r@   r^  rs   r[   r   r.   rE   r7   ©r9   r   rn  )rS   rT   rh   rÍ   r4   Úder_lÚder_rrV   s           rW   Útest_cubic_derivzTestInterp.test_cubic_derivˆ  sF  € Ø—’˜bÑ!Ô!‰ˆˆBØˆð  �y 7 )ˆuˆÝ˜r 2 q°5¸%°.ÐAÑAÔAˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝØˆAˆb�Œe�Q‰KŒKØ�JŠJ�u˜Q”x ”{¨"¬*ˆJÑ5Ô5¸EÈð	
ñ 	
ô 	
ð 	
õ 	ØˆAˆb�Œf�a‰LŒLØ�JŠJ�u˜Q”x ”{¨"¬*ˆJÑ5Ô5¸EÈð	
ñ 	
ô 	
ð 	
ð �x & ˆuˆÝ˜r 2 q°5¸%°.ÐAÑAÔAˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:Ð:Ð:rk   c           	      óˆ  — d\  }}|                      ||j        ¬¦  «        }|                     |¦  «        }ddg}ddg}t          |||||f¬¦  «        }t	           ||¦  «        |dd¬	¦  «         t	          |                      ||d
         d¦  «         ||d
         d¦  «        g¦  «        |                     d„ |D ¦   «         |j        ¬¦  «        ¦  «         t	          |                      ||d         d¦  «         ||d         d¦  «        g¦  «        |                     d„ |D ¦   «         |j        ¬¦  «        ¦  «         d S )N)r­   r©   rE   )r.   g      (À)r9   r.   rm  )r9   r?   r9  rs   r[   r   r.   r9   c                 ó   — g | ]\  }}|‘ŒS r$  r$  ©r�   rß   Úvals      rW   rŽ   z2TestInterp.test_quintic_derivs.<locals>.<listcomp>§  ó   € Ð#?Ð#?Ð#?©I¨R° CÐ#?Ð#?Ð#?rk   r7   c                 ó   — g | ]\  }}|‘ŒS r$  r$  rx  s      rW   rŽ   z2TestInterp.test_quintic_derivs.<locals>.<listcomp>©  rz  rk   )rO   rP   r‹  r   r   r‘   rQ   )	rS   rT   r4   rU   rw   r    rs  rt  rV   s	            rW   Útest_quintic_derivszTestInterp.test_quintic_derivsž  sZ  € Ø‰ˆˆ1Ø�IŠI�a˜rœzˆIÑ*Ô*ˆØ�FŠF�1‰IŒIˆØ˜FÐ#ˆØ˜'Ð"ˆÝ˜q ! q°5¸%°.ÐAÑAÔAˆÝ˜˜˜!™œ˜a e°%Ð8Ñ8Ô8Ð8Ý˜Ÿš ! ! A a¤D¨!¡*¤*¨a¨a°°!´°a©j¬jÐ!9Ñ:Ô:ØŸ
š
Ð#?Ð#?¸Ð#?Ñ#?Ô#?ÀrÄz˜
ÑRÔRñ	Tô 	Tð 	Tå˜Ÿš ! ! A b¤E¨1¡+¤+¨q¨q°°2´¸©{¬{Ð!;Ñ<Ô<ØŸ
š
Ð#?Ð#?¸Ð#?Ñ#?Ô#?ÀrÄz˜
ÑRÔRñ	Tô 	Tð 	Tð 	Tð 	Trk   Úunstabler…   c                 óÈ   — d}t          | j        |¦  «        }ddg}t          | j        | j        |||d f¬¦  «        }t	           || j        ¦  «        | j        dd¬¦  «         d S )Nr;   rq  )r9   r@   r^  rs   r[   )r   rh   r   rÍ   r   )rS   r4   r2   rs  rV   s        rW   Útest_cubic_deriv_unstablez$TestInterp.test_cubic_deriv_unstable«  sm   € ð ˆÝ�D”G˜QÑÔˆà˜'Ð"ˆÝ˜tœw¨¬°°AÀÀt¸}ÐMÑMÔMˆÝ˜˜˜$œ'™
œ
 D¤G°%¸eÐDÑDÔDÐDÐDÐDrk   c           	      ó  — d}|                       |¦  «        \  }}t          ||                     |dz   ¦  «        |d         z  |dd …         |d d…         z   dz  |                     |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 ‚d S )Nr9   r.   r   r7   r>   rr  r^  rs   r[   r=   r  )rA  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�B”˜"˜S˜b˜Sœ'Ñ! RÑ'Ø—’˜˜!™‘”˜r "œvÑ%ñ
ô 
ˆõ
 ˜r 2 q¨!Ø)/¨°6°(Ð';ð=ñ =ô =ˆõ 	˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝŒ|˜A˜A˜b œe Q™KœK¨°eÐ<Ñ<Ô<Ð<Ð<Ð<ÝŒ|˜A˜A˜b œf a™LœL¨#°uÐ=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=rk   c                 ó  — d}|                      ddg¦  «        }|                      ddg¦  «        }t          |||dgdgf¬¦  «        }|                     ddd|j        ¬¦  «        }|dz  }t	           ||¦  «        |d	d	¬
¦  «         d S )Nr;   r=   r0   ©r.   r=   rq  r^  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ÑGÔGˆà�[Š[˜˜R ¨2¬:ˆ[Ñ6Ô6ˆØ�‰UˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:Ð:Ð:rk   c                 ó–  — g d¢x}}t          t          ¦  «        5  t          ||dgd f¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          ||dg¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          ||d¬¦  «         d d d ¦  «         n# 1 swxY w Y   d\  }}t          t          ¦  «        5  t          ||||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r0   r9   r;   r<   r­   r¨   rƒ  r^  é*   )rƒ  rƒ  rO  )rS   rw   r    ÚlÚrs        rW   Útest_deriv_speczTestInterp.test_deriv_specÙ  sª  € ð %Ð$Ð$Ð$ˆˆAå�:Ñ&Ô&ð 	@ð 	@Ý˜q !¨w¨i¸Ð->Ð?Ñ?Ô?Ð?ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@õ �:Ñ&Ô&ð 	6ð 	6Ý˜q !¨WÐ5Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ �:Ñ&Ô&ð 	8ð 	8Ý˜q !¨g¨YÐ7Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8õ �:Ñ&Ô&ð 	1ð 	1Ý˜q !¨RÐ0Ñ0Ô0Ð0ð	1ð 	1ð 	1ñ 	1ô 	1ð 	1ð 	1ð 	1ð 	1ð 	1ð 	1øøøð 	1ð 	1ð 	1ð 	1ð
 "‰ˆˆ1Ý�:Ñ&Ô&ð 	5ð 	5Ý˜q !¨a°¨VÐ4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5sW   ›=½AÁAÁA;Á;A?ÂA?ÂB:Â:B>ÃB>ÃC8Ã8C<Ã?C<ÄD>Ä>EÅEc                 ó\  — |                      d¦  «        }|dz  }dgdg}}t          t          d¬¦  «        5  t          ||||f¬¦  «         d d d ¦  «         n# 1 swxY w Y   dgdg}}t          t          d	¬¦  «        5  t          ||||f¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr©   r9   )r¨   r   ©r.   r   zBad boundary conditions at 0.r  r^  )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ð  sI  € Ø�IŠI�a‰LŒLˆØˆq‰DˆØˆx˜&˜ˆ1ˆÝ�:Ð-LÐMÑMÔMð 	5ð 	5å˜q !¨a°¨VÐ4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð ˆx˜'˜ˆ1ˆÝ�:Ð-LÐMÑMÔMð 	5ð 	5å˜q !¨a°¨VÐ4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s#   ·AÁAÁAÁ?B!Â!B%Â(B%c                 óò  — d}|                       |¦  «        \  }}|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 ]0}t          |||¬¦  «        }t           ||¦  «        |dd¬¦  «         Œ1d S )Nr;   r/   )r.   y              @)r.   y      @       @r^  rs   r[   r   r.   r  r7   ©r   r.   rS  )rA  r   r   Úcmathr  )rS   rT   r4   rh   rÍ   rs  rt  rV   s           rW   r¹  zTestInterp.test_complexý  s(  € ØˆØ—’˜bÑ!Ô!‰ˆˆBØ�#�b‘&‰[ˆð !�z K =ˆuˆÝ˜r 2 q°5¸%°.ÐAÑAÔAˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝŒ}˜Q˜Q˜r !œu a™[œ[¨%°¬(°1¬+¸uÐEÑEÔEÐEÐEÐEÝŒ}˜Q˜Q˜r "œv q™\œ\¨5°¬8°A¬;ÀÐFÑFÔFÐFÐFÐFð ð 	?ð 	?ˆAÝ" 2 r¨QÐ/Ñ/Ô/ˆAÝ˜A˜A˜b™EœE 2¨E¸Ð>Ñ>Ô>Ð>Ð>ð	?ð 	?rk   c                 óº   — |                      d|j        ¬¦  «        }|                      d|j        ¬¦  «        }dD ]}t          |||¬¦  «        } ||¦  «         Œ d S )Nre   rE   rê   rS  )rO   Úint32r   )rS   rT   rw   r    r4   rV   s         rW   Útest_int_xyzTestInterp.test_int_xy  sn   € Ø�IŠI�b ¤ˆIÑ)Ô)ˆØ�IŠI�b ¤ˆIÑ)Ô)ˆð ð 	ð 	ˆAÝ" 1 a¨1Ð-Ñ-Ô-ˆAØˆAˆa‰DŒDˆDˆDð	ð 	rk   c                 óŽ   — |                      ddd¦  «        }|d d d…         }|d d d…         }dD ]}t          |||¬¦  «         Œd S )Nr7   r.   r£   r­   rê   rS  )rf   r   )rS   rT   rh   rw   r    r4   s         rW   Útest_sliced_inputzTestInterp.test_sliced_input  sf   € à�[Š[˜˜Q Ñ$Ô$ˆàˆsˆs�ˆsŒGˆØˆsˆs�ˆsŒGˆàð 	*ð 	*ˆAÝ˜q ! qÐ)Ñ)Ô)Ð)Ð)ð	*ð 	*rk   c                 ó   — |                      d|j        ¬¦  «        }|dz  }|j        |j        |j         fD ]F}t	          j        |d¦  «                             |¦  «        }t          t          t          ||¦  «         ŒGd S )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"  sƒ   € à�IŠI�b ¤
ˆIÑ+Ô+ˆØˆq‰Dˆà”&˜"œ& 2¤6 'Ð*ð 	@ð 	@ˆAÝ”�q˜"‘”×!Ò! !Ñ$Ô$ˆAÝ�*Õ&8¸!¸QÑ?Ô?Ð?Ð?ð	@ð 	@rk   )r.   r9   r;   r­   c                 óz   — t          t          d¦  «        ¦  «        }d„ |D ¦   «         }t          |||¬¦  «         d S )Nre   c                 ó   — g | ]}|d z  ‘ŒS )r9   r$  )r�   Úas     rW   rŽ   z.TestInterp.test_list_input.<locals>.<listcomp>/  s   € ÐÐÐ�aˆQ�‰TÐÐÐrk   rS  )Úlistrà   r   rP  s       rW   Útest_list_inputzTestInterp.test_list_input+  sC   € õ •�r‘”‰OŒOˆØÐ˜1ÐÑÔˆÝ˜1˜a 1Ð%Ñ%Ô%Ð%Ð%Ð%rk   c                 ó
  — |                       |¦  «        \  }}|                     ||fd¬¦  «        }dddgfg}dddgfg}t          ||d||f¬¦  «        }t           ||¦  «        |d	d	¬
¦  «         t           ||d         d¦  «        |                     |d         d         |j        ¬¦  «        d	d	¬
¦  «         t           ||d         d¦  «        |                     |d         d         |j        ¬¦  «        d	d	¬
¦  «         d S )Nr.   r  r0   r>   r?   r@   r;   r9  rs   r[   r   rE   r7   )rA  r‘   r   r   rQ   rP   )rS   rT   rh   rÍ   rs  rt  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ÑCÔCˆÝ˜˜˜"™œ˜r¨°EÐ:Ñ:Ô:Ð:ÝØˆAˆb�Œe�Q‰KŒKØ�JŠJ�u˜Q”x ”{¨"¬*ˆJÑ5Ô5¸EÈð	
ñ 	
ô 	
ð 	
õ 	ØˆAˆb�Œf�a‰LŒLØ�JŠJ�u˜Q”x ”{¨"¬*ˆJÑ5Ô5¸EÈð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rk   c                 óâ  — t           j                             d¦  «        }d\  }}t          j        |                     |¬¦  «        ¦  «        }|                     |dddf¬¦  «        }t	          |||¦  «        }|j        j        |dddfk    sJ ‚d|                     d¦  «        fg}d|                     d¦  «        fg}t	          |||||f¬	¦  «        }|j        j        ||z   dz
  dddfk    sJ ‚d S )
Nrš   ©r;   r§   rª   r­   r¨   r©   r.   ©r­   r¨   r©   r^  )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×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J A�JÑ&Ô&Ñ'Ô'ˆØ�JŠJ˜Q  1 a˜LˆJÑ)Ô)ˆå˜q ! QÑ'Ô'ˆØŒsŒy˜Q  1 a˜LÒ(Ð(Ð(Ð(ð �3—:’:˜iÑ(Ô(Ð)Ð*ˆØ�3—:’:˜iÑ(Ô(Ð)Ð*ˆÝ˜q ! Q°°c°
Ð;Ñ;Ô;ˆØŒsŒy˜Q ™U Q™Y¨¨1¨aÐ0Ò0Ð0Ð0Ð0Ð0Ð0rk   c                 ó.  — |                       |¦  «        \  }}|                     |¦  «        }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 ¦  «         n# 1 swxY w Y   |                     |                     |¦  «        |                     |¦  «        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
                             d¦  «        }d\  }	}
t          j        | 
                    |
¬¦  «        ¦  «        }| 
                    |
dddf¬¦  «        }|                     |¦  «        |                     |¦  «        }}d|                     d¦  «        fg}d|                     d¦  «        fg}t          |||	||f¬¦  «        }t          |||	d¬¦  «        }t          |j        |j        d¬¦  «         d S )Nr;   rE  r9  rr  rZ   rt   )rE  rD  r‹  r9   )NrD  rƒ  rF  Útypor.   r  r=   rC  rš   r£  rª   r­   r¨   r©   r¤  r^  rD  )rA  r‹  r   r   r3   rG   rI   r‘   r�  rK   rR   r�   rž   rQ   r/  )rS   rT   rh   rÍ   r.  r  rs  rt  rŸ   r4   rU   rw   r    r¥  r¦  s                  rW   Útest_string_aliaseszTestInterp.test_string_aliasesR  s‚  € Ø—’˜bÑ!Ô!‰ˆˆBØ�VŠV�B‰ZŒZˆõ    B¨!°YÐ?Ñ?Ô?ˆÝ  B¨!°v°hÀÀÐ5IÐJÑJÔJˆÝ˜œ˜bœd¨Ð/Ñ/Ô/Ð/õ    B¨!Ø(>ð@ñ @ô @ˆå  B¨!Ø*0¨°F°8Ð(<ð>ñ >ô >ˆå˜œ˜bœd¨Ð/Ñ/Ô/Ð/õ    B¨!Ð5FÐGÑGÔGˆÝ  B¨!°d¸X¸JÐ5GÐHÑHÔHˆÝ˜œ˜bœd¨Ð/Ñ/Ô/Ð/õ    B¨!°\ÐBÑBÔBˆÝ  B¨!°TÐ:Ñ:Ô:ˆÝ˜œ˜bœd¨Ð/Ñ/Ô/Ð/õ �:Ñ&Ô&ð 	<ð 	<Ý˜r 2¨°FÐ;Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð �XŠX�r—v’v˜b‘z”z 2§6¢6¨"¡:¤:Ð.°QˆXÑ7Ô7ˆØ�b˜"�X��ˆØ�b˜"�X��ˆÝ  B¨!°e¸U°^ÐDÑDÔDˆÝ  B¨!Ø(>ð@ñ @ô @ˆå˜œ˜bœd¨Ð/Ñ/Ô/Ð/õ Œi×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒG�C—J’J A�JÑ&Ô&Ñ'Ô'ˆØ�JŠJ˜Q  1 a˜LˆJÑ)Ô)ˆØ�zŠz˜!‰}Œ}˜bŸjšj¨™mœmˆ1ˆð �2—8’8˜IÑ&Ô&Ð'Ð(ˆØ�2—8’8˜IÑ&Ô&Ð'Ð(ˆÝ  1 a°#°s°Ð<Ñ<Ô<ˆÝ  1 a°Ð;Ñ;Ô;ˆÝ˜œ˜bœd¨Ð/Ñ/Ô/Ð/Ð/Ð/s   ÅE5Å5E9Å<E9c                 óÄ  — t           j                             d¦  «        }d\  }}t          j        |                     |¬¦  «        ¦  «        }|                     |¬¦  «        }t	          ||¦  «        }t          ||||¦  «        }|                     |¦  «        }t          |j        |||f¦  «        \  }	}
}t          |	|
||¦  «        }t          |j
        |dd¬¦  «         d S )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×#Ò# DÑ)Ô)ˆØ‰ˆˆ1ÝŒw�s—z’z q�zÑ)Ô)Ñ*Ô*ˆØ�zŠz˜qˆzÑ!Ô!ˆÝ˜4 Ñ#Ô#ˆÝ" 4¨¨t°QÑ7Ô7ˆØ�ZŠZ˜‰^Œ^ˆå�b”j 4¨¨tÐ"4Ñ5Ô5‰ˆˆ1ˆaÝ˜q ! Q¨Ñ*Ô*ˆÝ˜œ˜R e°%Ð8Ñ8Ô8Ð8Ð8Ð8rk   c                 óV  — t           j                             d¦  «        }d}t          ddd¦  «        D �]ô}t	          |dz
  dz  ¦  «        }t          j        |                     d|f¦  «        ¦  «        }t          d|dz   ¦  «        D ]„}|d| …|d…fxx         t          j        |                     d||z
  f¦  «        ¦  «        z  cc<   ||d…d| …fxx         t          j        |                     d||z
  f¦  «        ¦  «        z  cc<   Œ…|                     ||f¦  «        }||d|…| d…f<   |                     ||f¦  «        }||| d…d|…f<   t          j        ||f¦  «        }	t          t          || dz
  d¦  «        ¦  «        D ]F\  }}
|
d	k     rt          j        ||
¬
¦  «        |	|d|
…f<   Œ)t          j        ||
¬
¦  «        |	||
d…f<   ŒG|                     |¦  «        }t          t          |	||||¦  «        t           j                             ||¦  «        d¬¦  «         �ŒödS )z­
        Random elements in diagonal matrix with blocks in the
        left lower and right upper corners checking the
        implementation of Woodbury algorithm.
        rš   éÉ   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”  sX  € õ Œi×#Ò# DÑ)Ô)ˆØˆÝ�q˜"˜a‘”ð 	?ñ 	?ˆAÝ˜!˜a™% 1™Ñ%Ô%ˆFÝ”˜CŸJšJ¨¨1 vÑ.Ô.Ñ/Ô/ˆAÝ˜1˜f q™jÑ)Ô)ð Bð B�Ø�#�A�2�#�q�r�r�'�
�
”
�bœk¨#¯*ª*°a¸¸Q¹°ZÑ*@Ô*@ÑAÔAÑA�
�
‘
Ø�!�"�"�c˜�r�c�'�
�
”
�bœk¨#¯*ª*°a¸¸Q¹°ZÑ*@Ô*@ÑAÔAÑA�
�
‘
�
Ø—’˜V VÐ,Ñ-Ô-ˆBØ#%ˆAˆgˆvˆg˜�w�x�xÐÑ Ø—’˜V VÐ,Ñ-Ô-ˆBØ#%ˆAˆvˆgˆhˆh˜˜˜ÐÑ Ý”˜!˜Q˜Ñ Ô ˆAÝ!¥%¨°°¸!±¸RÑ"@Ô"@ÑAÔAð 8ð 8‘��1Ø�q’5�5Ý!œ{¨1°QÐ7Ñ7Ô7�A�a˜˜!˜�e‘H�Hå!œ{¨1°QÐ7Ñ7Ô7�A�a˜˜˜�e‘H�HØ—
’
˜1‘”ˆAÝÕ/°°2°r¸1¸aÑ@Ô@ÝœIŸOšO¨A¨qÑ1Ô1¸ð?ñ ?ô ?ð ?ñ ?ð#	?ð 	?rk   N).r!  r"  r#  rK   rf   r²  rh   r‹  rÍ   rA  rD  rI  rL  ra   r€  r�  rQ  rS  rV  rZ  r\  r^  r`  rb  rd  rg  rk  ro  ru  r|  r‚  r  r�  r„  r‰  rŒ  r¹  r’  r”  rš  rŸ  r¡  r§  rª  r®  r»  r$  rk   rW   r?  r?  Í  s  € € € € € ð
 
ˆŒ�R˜˜BœE™Ñ	"Ô	"€BØ	ˆŒ�‰Œ€Bð8ð 8ð 8ð8ð 8ð 8ð;ð ;ð ;ð;ð ;ð ;ð „[×Ò˜S , , ,Ñ/Ô/ð*ð *ñ 0Ô/ð*ð „[×Ò˜S , , ,Ñ/Ô/ð*ð *ñ 0Ô/ð*ð?ð ?ð ?ðIð Ið Ið  „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð
-ð 
-ñ 6Ô5ð
-ð7ð 7ð 7ð"	>ð 	>ð 	>ð	7ð 	7ð 	7ð „[×Ò˜S , , ,Ñ/Ô/ð
?ð 
?ñ 0Ô/ð
?ð2ð 2ð 2ð =ð =ð =ð
ð 
ð 
ð,;ð ;ð ;ð,Tð Tð Tð „[×Ò˜jÐÑ)Ô)ðEð Eñ *Ô)ðEð>ð >ð >ð&
;ð 
;ð 
;ð5ð 5ð 5ð.5ð 5ð 5ð?ð ?ð ?ð"ð ð ð*ð *ð *ð@ð @ð @ð „[×Ò˜S , , ,Ñ/Ô/ð&ð &ñ 0Ô/ð&ð
ð 
ð 
ð"1ð 1ð 1ð30ð 30ð 30ðj9ð 9ð 9ð?ð ?ð ?ð ?ð ?rk   r?  c                 ó¤  — | j         |j         k    sJ ‚|j         | j         |z   dz   k    sJ ‚| j         }t          j        ||ft          j        ¬¦  «        }t	          |¦  «        D ]W}| |         }|||         k    r|}nt          j        ||¦  «        dz
  }t          j        ||||¦  «        }	|	||||z
  |dz   …f<   ŒXt          j	        ||¦  «        }
|
S )z»Assemble an spline order k with knots t to interpolate
    y(x) using full matrices.
    Not-a-knot BC only.

    This routine is here for testing only (even though it's functional).
    r.   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�Q”VÒÐÐÐØŒ6�Q”V˜a‘Z !‘^Ò#Ð#Ð#Ð#Ø	Œ€Aå
Œ�!�Q��rœzÐ*Ñ*Ô*€Aå�1‰XŒXð 	!ð 	!ˆØ�ŒtˆØ�1�Q”4Š<ˆ<ØˆDˆDå”? 1 dÑ+Ô+¨aÑ/ˆDõ Ô'¨¨1¨d°DÑ9Ô9ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
ÑÐå
Œ��A‰Œ€AØ€Hrk   c                 ó  — t          t          j        | ||f¦  «        \  } }}| j        }|j        |z
  dz
  }t          j        ||ft          j        ¬¦  «        }t          |¦  «        D ]W}| |         }|||         k    r|}	nt          j        ||¦  «        dz
  }	t          j	        ||||	¦  «        }
|
|||	|z
  |	dz   …f<   ŒXt          j
        |j        |¦  «        }t          j
        |j        |¦  «        }t          j        ||¦  «        }|||ffS )z,Make the least-square spline, full matrices.r.   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Ð*Ñ*Ô*€Aå�1‰XŒXð 
!ð 
!ˆØ�Œtˆà�1�Q”4Š<ˆ<ØˆDˆDå”? 1 dÑ+Ô+¨aÑ/ˆDõ Ô'¨¨1¨d°DÑ9Ô9ˆØ ˆˆ!ˆT�!‰V�D˜‘Fˆ]Ð
ÑÐõ 	ŒˆqŒs�A‰Œ€AÝ
ŒˆqŒs�A‰Œ€AÝ
Œ��A‰Œ€Aàˆq�!ˆfˆ9Ðrk   Úmethodúnorm-eqÚqrc            	       ón  — e Zd Zej                             d¦  «        Zd\  ZZ ej	        e                     e¦  «        ¦  «        Z
e                     e¦  «        Z e ej        e
d         e
d         d¦  «        e¦  «        Zed„ ¦   «         Zed„ ¦   «         Zd„ Zed	„ ¦   «         Zed
„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zej                             d e  e!dd¦  «        ¦  «        ¦  «        d„ ¦   «         Z"d„ Z#dS )ÚTestLSQrš   )r  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                             |	|d¬¦  «        \  }}}}t          |j        |¦  «         d S )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˜TœV T¤V¨T¬VÐ3‰
ˆˆ1ˆa�å% a¨¨A¨qÑ1Ô1‰ˆˆBÝ˜A˜q ! Q¨vÐ6Ñ6Ô6ˆå˜œ˜RÑ Ô Ð ØŒsŒy˜QœV a™Z¨!™^Ð-Ò-Ð-Ð-Ð-ð ‰ˆˆBÝ”i—o’o b¨!°2�oÑ6Ô6‰ˆˆAˆq�!Ý˜œ˜RÑ Ô Ð Ð Ð rk   c                 ó‚  — g t          |j        | j        | j        | j        f¦  «        ¢| j        ‘R \  }}}}|                     |¦  «        }t          |||||¬¦  «        }t          ||||||¬¦  «        }	t          |j        |	j        d¬¦  «         t          |j	        |	j	        d¬¦  «         |j        |	j        k    sJ ‚d S )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¨t¬v°t´vÐ&>Ñ?Ô?ÐGÀÄÐGÐG‰
ˆˆ1ˆa�Ø�LŠL˜‰OŒOˆå˜A˜q ! Q¨vÐ6Ñ6Ô6ˆÝ˜a  A q¨A°fÐ=Ñ=Ô=ˆå˜œ˜SœU¨Ð/Ñ/Ô/Ð/Ý˜œ˜SœU¨Ð/Ñ/Ô/Ð/ØŒs�c”eŠ|ˆ|ˆ|ˆ|ˆ|ˆ|rk   c                 óB  — g t          |j        | j        | j        | j        f¦  «        ¢| j        ‘R \  }}}}t          j                             d¦  «         	                    |j
        d         ¬¦  «        }|                     |¦  «        }t          |||||d¬¦  «        }t          |||||d¬¦  «        }t          ||||d¬¦  «        }	t          |j        |j        d¬	¦  «         |                     |                     |	j        |j        z
  ¦  «        dk     ¦  «        rJ ‚d S )
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¨t¬v°t´vÐ&>Ñ?Ô?ÐGÀÄÐGÐG‰
ˆˆ1ˆa�ÝŒI×!Ò! $Ñ'Ô'×/Ò/°Q´W¸Q´ZÐ/Ñ@Ô@ˆØ�JŠJ�q‰MŒMˆå˜q ! Q¨¨Q°yÐAÑAÔAˆÝ˜q ! Q¨¨Q°tÐ<Ñ<Ô<ˆÝ   A q¨!°DÐ9Ñ9Ô9ˆå˜œ ¤¨UÐ3Ñ3Ô3Ð3Ø—6’6˜"Ÿ&š& ¤¨D¬FÑ!2Ñ3Ô3°eÒ;Ñ<Ô<Ð<Ð<Ð<Ð<Ð<rk   c                 ó†  — g t          |j        | j        | j        f¦  «        ¢| j        ‘| j        ‘R \  }}}}t          j                             d¦  «        }|                     |dddf¬¦  «        }|                     |¦  «        }t          |||||¬¦  «        }	|	j
        j        |j        d         |z
  dz
  dddfk    sJ ‚d S )	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¨t¬vÐ&6Ñ7Ô7ÐG¸¼ÐGÀÄÐGÐG‰
ˆˆ1ˆa�ÝŒi×#Ò# DÑ)Ô)ˆØ�JŠJ˜Q  1 a˜LˆJÑ)Ô)ˆØ�JŠJ�q‰MŒMˆå˜A˜q ! Q¨vÐ6Ñ6Ô6ˆØŒsŒy˜QœW QœZ¨!™^¨aÑ/°°A°qÐ9Ò9Ð9Ð9Ð9Ð9Ð9rk   c                 ó  ‡‡‡	‡
‡‡— g t          |j        | j        | j        f¦  «        ¢| j        ‘| j        ‘R \  ŠŠ
Š	}d}t          j                             d¦  «        }|                     ||f¬¦  «        Š|                     ‰¦  «        Št          ‰‰‰
‰	‰¬¦  «        }ˆ	ˆˆ
ˆˆfd„t          |¦  «        D ¦   «         Š|                     ˆfd„t          |¦  «        D ¦   «         ¦  «        j        }t          ||j        d¬¦  «         d S )	Nr;   rš   rª   rÍ  c           	      óL   •— g | ] }t          ‰‰d d …|f         ‰‰‰¬¦  «        ‘Œ!S )NrÍ  )r   )r�   r  r4   rÇ  r2   rw   r    s     €€€€€rW   rŽ   z/TestLSQ.test_multiple_rhs_2.<locals>.<listcomp>4  sH   ø€ ð $ð $ð $Øõ ˜a  1 1 1 a 4¤¨!¨Q°vÐ>Ñ>Ô>ð $ð $ð $rk   c                 ó*   •— g | ]}‰|         j         ‘ŒS r$  )r3   )r�   r  rÁ  s     €rW   rŽ   z/TestLSQ.test_multiple_rhs_2.<locals>.<listcomp>6  s   ø€ Ð7Ð7Ð7 a˜"˜Qœ%œ'Ð7Ð7Ð7rk   rZ   rt   )rv   rQ   rw   r2   r4   rU   rK   rR   r�   r   rà   r‘   rÄ  r   r3   )rS   rÇ  rT   rU   ÚnrhsrŸ   rV   ÚcoefsrÁ  r4   r2   rw   r    s    `      @@@@@rW   Útest_multiple_rhs_2zTestLSQ.test_multiple_rhs_2+  s&  øøøøøø€ àG•c˜"œ* t¤v¨t¬vÐ&6Ñ7Ô7ÐG¸¼ÐGÀÄÐGÐG‰
ˆˆ1ˆa�ØˆÝŒi×#Ò# DÑ)Ô)ˆØ�JŠJ˜Q ˜IˆJÑ&Ô&ˆØ�JŠJ�q‰MŒMˆÝ˜A˜q ! Q¨vÐ6Ñ6Ô6ˆð$ð $ð $ð $ð $ð $ð $ð $Ý˜T‘{”{ð$ñ $ô $ˆà—’Ð7Ð7Ð7Ð7­5°©;¬;Ð7Ñ7Ô7Ñ8Ô8Ô:ˆå˜˜qœs¨Ð/Ñ/Ô/Ð/Ð/Ð/rk   c                 ón  — g t          |j        | j        | j        f¦  «        ¢| j        ‘| j        ‘R \  }}}}d}t          j                             ||f¬¦  «        }|                     |¦  «        }t          ||||d¬¦  «        }t          ||||d¬¦  «        }	t          |j
        |	j
        d¬¦  «         d S )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¨t¬vÐ&6Ñ7Ô7ÐG¸¼ÐGÀÄÐGÐG‰
ˆˆ1ˆa�ØˆÝŒI×Ò 1 d )ÐÑ,Ô,ˆØ�JŠJ�q‰MŒMˆÝ˜q ! Q¨°$Ð7Ñ7Ô7ˆÝ  1 a¨°9Ð=Ñ=Ô=ˆÝ˜œ ¤¨eÐ4Ñ4Ô4Ð4Ð4Ð4rk   c                 óÊ  — g t          |j        | j        | j        f¦  «        ¢| j        ‘R \  }}}|                     | j        dz  ¦  «        }t          |||||¬¦  «        }t          ||                     |¦  «        |||¬¦  «        }t          ||                     |¦  «        |||¬¦  «        }	t           ||¦  «         ||¦  «        d |	|¦  «        z  z   dd¬¦  «         d S )Nù      ð?       @rÍ  r/   rZ   r[   )
rv   rQ   rw   r2   r4   r    r   ró   rô   r   )
rS   rÇ  rT   rw   r2   r4   rU  rV   rö   r÷   s
             rW   r¹  zTestLSQ.test_complexC  så   € ð =•3�r”z D¤F¨D¬FÐ#3Ñ4Ô4Ð<°d´fÐ<Ð<‰ˆˆ1ˆaØ�ZŠZ˜œ (Ñ+Ñ,Ô,ˆå˜A˜r 1 a°Ð7Ñ7Ô7ˆÝ˜q "§'¢'¨"¡+¤+¨q°!¸FÐCÑCÔCˆÝ˜q "§'¢'¨"¡+¤+¨q°!¸FÐCÑCÔCˆå˜˜˜!™œ˜d˜d 1™gœg¨¨D¨D°©G¬G©Ñ3¸%ÀeÐLÑLÔLÐLÐLÐLrk   c                 óB  — g t          |j        | j        | j        f¦  «        ¢| j        ‘R \  }}}|                     | j        dz  ¦  «        }|                     ||fd¬¦  «        }t          ||||¦  «        }t          ||                     |¦  «        ||¦  «        }t          || 	                    |¦  «        ||¦  «        }t           ||¦  «         ||¦  «        d ||¦  «        z  z   dd¬¦  «         |                     ||fd¬¦  «        }t          ||||¦  «        }t          ||                     |¦  «        ||¦  «        }t          || 	                    |¦  «        ||¦  «        }t           ||¦  «         ||¦  «        d ||¦  «        z  z   dd¬¦  «         d S )Nrê  r.   r  r/   rZ   r[   )rv   rQ   rw   r2   r4   r    r‘   r   ró   rô   r   )	rS   rT   rw   r2   r4   rU  rV   rö   r÷   s	            rW   Útest_complex_2zTestLSQ.test_complex_2O  s�  € ð =•3�r”z D¤F¨D¬FÐ#3Ñ4Ô4Ð<°d´fÐ<Ð<‰ˆˆ1ˆaØ�ZŠZ˜œ (Ñ+Ñ,Ô,ˆØ�XŠX�r˜2�h QˆXÑ'Ô'ˆå˜A˜r 1 aÑ(Ô(ˆÝ˜q "§'¢'¨"¡+¤+¨q°!Ñ4Ô4ˆÝ˜q "§'¢'¨"¡+¤+¨q°!Ñ4Ô4ˆå˜˜˜!™œ˜d˜d 1™gœg¨¨D¨D°©G¬G©Ñ3¸%ÀeÐLÑLÔLÐLð �XŠX�r˜2�h QˆXÑ'Ô'ˆå˜A˜r 1 aÑ(Ô(ˆÝ˜q "§'¢'¨"¡+¤+¨q°!Ñ4Ô4ˆÝ˜q "§'¢'¨"¡+¤+¨q°!Ñ4Ô4ˆå˜˜˜!™œ˜d˜d 1™gœg¨¨D¨D°©G¬G©Ñ3¸%ÀeÐLÑLÔLÐLÐLÐLrk   c                 ó   — t          j        d¦  «                             t          ¦  «        }t          j        d¦  «                             t          ¦  «        }t	          |d¬¦  «        }t          |||d|¬¦  «         d S )Nre   r.   rS  ©r4   rÇ  )rK   rO   Úastyper³  r   r   ©rS   rÇ  rw   r    r2   s        rW   r’  zTestLSQ.test_int_xye  sf   € åŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝŒI�b‰MŒM× Ò ¥Ñ%Ô%ˆÝ�A˜ˆO‰OŒOˆå˜˜1˜a 1¨VÐ4Ñ4Ô4Ð4Ð4Ð4rk   c                 ó   — t          j        dt           j        ¬¦  «        }t          j        dt           j        ¬¦  «        }t          |d¬¦  «        }t	          |||d|¬¦  «        }t	          |                     t          ¦  «        |                     t          ¦  «        |                     t          ¦  «        d|¬¦  «        }|dd …         |d d…         z   dz  }t           ||¦  «         ||¦  «        d¬	¦  «         d S )
Nre   rE   r.   rS  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�b¥¤
Ð+Ñ+Ô+ˆÝŒI�b¥¤
Ð+Ñ+Ô+ˆÝ�A˜ˆO‰OŒOˆÝ! ! Q¨¨Q°vÐ>Ñ>Ô>ˆÝ!Ø�HŠH•U‰OŒO˜QŸXšX¥e™_œ_¨a¯hªhµu©o¬oÀÈ6ð
ñ 
ô 
ˆð ���Œe�a˜˜˜”f‰n Ñ#ˆÝ˜˜ ™œ W W¨R¡[¤[°uÐ=Ñ=Ô=Ð=Ð=Ð=rk   c                 ó¦   — t          j        ddd¦  «        }|d d d…         }|d d d…         }t          |d¦  «        }t          |||d|¬¦  «         d S )Nr7   r.   r£   r;   rî  )rK   rf   r   r   )rS   rÇ  rh   rw   r    r2   s         rW   r”  zTestLSQ.test_sliced_inputz  sa   € õ Œ[˜˜Q Ñ$Ô$ˆàˆsˆs�ˆsŒGˆØˆsˆs�ˆsŒGˆÝ�A�q‰MŒMˆÝ˜˜1˜a 1¨VÐ4Ñ4Ô4Ð4Ð4Ð4rk   c           	      ó  — t          j        d¦  «                             t          ¦  «        }|dz  }t	          |d¦  «        }t           j        t           j        t           j         fD ]&}||d<   t          t          t          ||||¬¦  «         Œ'd S )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„  sˆ   € õ ŒI�b‰MŒM× Ò ¥Ñ'Ô'ˆØˆq‰DˆÝ�A�q‰MŒMˆå”&�"œ&¥2¤6 'Ð*ð 	Oð 	OˆAØˆAˆb‰EÝ�*¥o°q¸!¸QÀvÐNÑNÔNÐNÐNð	Oð 	Ork   c                 óÚ   — | j         | j        | j        }}}|                     d¬¦  «         |                     d¬¦  «         |                     d¬¦  «         t	          ||||¬¦  «         d S )NFrj  )rw   r    r2   rÇ  )rw   r    r2   rl  r   rð  s        rW   rm  zTestLSQ.test_read_only�  sp   € ð ”&˜$œ& $¤&ˆaˆ1ˆØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐØ	�
Š
˜ˆ
ÑÔÐÝ˜!˜q A¨fÐ5Ñ5Ô5Ð5Ð5Ð5rk   r4   r.   c                 óJ  — | j         | j        }}t          t          j        |d         |d         d¦  «        |¦  «        }t          ||||d¬¦  «        }t          ||||d¬¦  «        }|dd …         |d d…         z   dz  }t           ||¦  «         ||¦  «        d	¬
¦  «         d S )Nr   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�t”vˆ1ˆÝ•B”K  !¤ a¨¤e¨QÑ/Ô/°Ñ3Ô3ˆÝ% a¨¨A°¸9ÐEÑEÔEˆÝ   A q¨A°dÐ;Ñ;Ô;ˆà���Œe�a˜˜˜”f‰n Ñ#ˆÝ˜˜ B™œ¨¨°©¬¸%Ð@Ñ@Ô@Ð@Ð@Ð@rk   c                 ó^  — t          j        | j        d¦  «        }t          j        | j        d¦  «        }t	          | j        | j        | j        dd¬¦  «        }t	          ||| j        dd¬¦  «        }|dd …         |d d…         z   dz  }t           ||¦  «         ||¦  «        d¬	¦  «         d S )
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�d”f˜aÑ Ô ˆÝŒI�d”f˜aÑ Ô ˆÝ ¤¨¬°´¸!ÀDÐIÑIÔIˆÝ  1 d¤f°¸$Ð?Ñ?Ô?ˆà���Œe�a˜˜˜”f‰n Ñ#ˆÝ˜˜˜b™	œ	 5 5¨¡9¤9°5Ð9Ñ9Ô9Ð9Ð9Ð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û  rm  ra   r€  r�  rž  rà   r   r  r$  rk   rW   rË  rË  ì  s'  € € € € € ð
 Œ)×
Ò
 Ñ
%Ô
%€CØ�D€A€qØˆŒ�—
’
˜1‘”ÑÔ€AØ�
Š
�1‰Œ€AØˆ��”˜A˜aœD ! B¤%¨Ñ+Ô+¨QÑ/Ô/€Aàð!ð !ñ Ôð!ð ð
ð 
ñ Ôð
ð=ð =ð =ð ð:ð :ñ Ôð:ð ð0ð 0ñ Ôð0ð5ð 5ð 5ð ð	Mð 	Mñ Ôð	MðMð Mð Mð, ð5ð 5ñ Ôð5ð ð
>ð 
>ñ Ôð
>ð ð5ð 5ñ Ôð5ð ðOð Oñ ÔðOð ð6ð 6ñ Ôð6ð „[×Ò˜S $ $ u u¨Q°¡{¤{Ñ"3Ô"3Ñ4Ô4ðAð Añ 5Ô4ðAð:ð :ð :ð :ð :rk   rË  c                   ó4   — e Zd ZdZd„ Zed„ ¦   «         Zd„ ZdS )ÚPackedMatrixas  A simplified CSR format for when non-zeros in each row are consecutive.

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

    c                 ó    — || _         || _        || _        |j        dk    sJ ‚|j        dk    sJ ‚|j        d         |j        d         k    sJ ‚d S )Nr9   r.   r   )r�  r²  Úncr  r®   )rS   r�  r²  r	  s       rW   Ú__init__zPackedMatrix.__init__·  s\   € ØˆŒØˆŒØˆŒàŒv˜Š{ˆ{ˆ{ˆ{ØŒ{˜aÒÐÐÐØŒw�qŒz˜Vœ\¨!œ_Ò,Ð,Ð,Ð,Ð,Ð,rk   c                 ó4   — | j         j        d         | j        fS ©Nr   )r�  r®   r	  rC  s    rW   r®   zPackedMatrix.shapeÀ  s   € àŒvŒ|˜AŒ ¤Ð'Ð'rk   c                 ó>  — t          j        | j        ¦  «        }| j        j        d         }t	          |j        d         ¦  «        D ]V}t          | j        | j        |         z
  |¦  «        }| j        |d |…f         ||| j        |         | j        |         |z   …f<   ŒW|S )Nr.   r   )rK   r/  r®   r�  rà   Úminr	  r²  )rS   ÚoutÚnelemr  Únels        rW   ÚtodensezPackedMatrix.todenseÄ  s–   € ÝŒh�t”zÑ"Ô"ˆØ””˜Q”ˆÝ�s”y ”|Ñ$Ô$ð 	Jð 	JˆAÝ�d”g ¤¨A¤Ñ.°Ñ6Ô6ˆCØ:>¼&ÀÀDÀSÀDÀ¼/ˆC��4”;˜q”> $¤+¨a¤.°3Ñ"6Ð6Ð6Ñ7Ð7Øˆ
rk   N)r!  r"  r#  Ú__doc__r
  Úpropertyr®   r  r$  rk   rW   r  r  ®  sW   € € € € € ðð ð-ð -ð -ð ð(ð (ñ „Xð(ðð ð ð ð rk   r  r.   c                 ó|  — ddl m} | j        }| j        }| j        }|j        \  }}|j        d         |k    sJ ‚|                     ¦   «         }	|                     ¦   «         }
t          ||¦  «        D ]ò}||         }t          ||¦  «        D ]×}|t          ||¦  «        k    r nÀ ||	|df         |	|df         ¦  «        \  }}}||	|df<   t          d|¦  «        D ]4}t          |||	||f         |	||f         ¦  «        \  |	||f<   |	||dz
  f<   Œ5d|	|df<   t          |
j        d         ¦  «        D ]1}t          |||
||f         |
||f         ¦  «        \  |
||f<   |
||f<   Œ2ŒØŒót          t          |	j        d         ¦  «        ¦  «        }t          |	t          j        |t          j        ¬¦  «        |¦  «        }||
fS )zjThis is a python counterpart of the `_qr_reduce` routine,
    declared in interpolate/src/__fitpack.h
    r   )Údlartgr.   r=   r7   rE   )Úscipy.linalg.lapackr  r�  r²  r	  r®   rú  rà   r  Úfprotarž  r  rK   rM  Ú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€FØ	Œ€BàŒG�E€A€ràŒ7�1Œ:˜Š?ˆ?ˆ?ˆ?Ø	�Š‰Œ€AØ	
�Š‰Œ€Bå�8˜QÑÔð Fð FˆØ�AŒYˆÝ�r˜2‘”ð 	Fð 	FˆAà•C˜˜2‘J”JŠˆØ�ð �f˜Q˜q !˜tœW a¨¨1¨¤gÑ.Ô.‰GˆAˆq�!ð ˆAˆa�ˆd‰GÝ˜1˜b‘\”\ð Dð D�Ý%+¨A¨q°!°A°q°D´'¸1¸QÀ¸T¼7Ñ%CÔ%CÑ"��!�Q�$‘˜˜1˜a ™c˜6™˜ØˆAˆa�ˆe‰Hõ ˜2œ8 Aœ;Ñ'Ô'ð Fð F�Ý%+¨A¨q°"°Q¸°T´(¸B¸qÀ!¸t¼HÑ%EÔ%EÑ"��1�a�4‘˜"˜Q ˜T™(˜(ðFøõ •�a”g˜a”jÑ!Ô!Ñ"Ô"€DÝ
�q�"œ( 4­r¬xÐ8Ñ8Ô8¸"Ñ
=Ô
=€Cà�ˆ7€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 ]d}t          |||z
  ¦  «        }||d|…df         ||dz   ||z   …df         z                       d¬¦  «        }	||         |	z
  ||df         z  ||df<   Œe|S )z€Backsubsitution solve upper triangular banded `R @ c = y.`

    `R` is in the "packed" format: `R[i, :]` is `a[i, i:i+k+1]`
    r   Nr.   .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�E€A€rØ	Œ€BØŒ7�1Œ:˜œ œÒ#Ð#Ð#Ð#å
Œ�a˜˜˜”fÑÔ€AØ�R˜‘T”7˜Q˜r !™t Q˜wœZÑ'€A€bˆ�dˆC€i�LÝ�2�a‘4˜˜RÑ Ô ð .ð .ˆÝ�"�b˜‘d‰mŒmˆà�!�Q�s�U˜D�.Ô! A a¨¡c¨!¨C©% i° nÔ$5Ñ5×:Ò:ÀÐ:ÑBÔBˆØ˜”d˜T‘k a¨¨1¨¤gÑ-ˆˆ!ˆSˆ&‰	ˆ	Ø€Hrk   c                   ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚTestGivensQRc                 ó„   — d}t          j        |t          ¬¦  «        }|dz  dd|z   z  z   }t          ||¦  «        }||||fS )Nr;   rE   r.   )rK   rO   ró  r   )rS   rU   r4   rw   r    r2   s         rW   Ú_get_xytzTestGivensQR._get_xyt  sM   € ØˆÝŒI�a�uÐ%Ñ%Ô%ˆØˆq‰D�1�a˜‘c‘7‰NˆÝ˜˜1ÑÔˆØ�!�Q˜ˆzÐrk   c                 ó�  — d}|                       |¦  «        \  }}}}t          j        |||¦  «        }t          j        |                     ¦   «         ¦  «        \  }}|j        |z  }	|j        \  }
}||j        d         |z
  dz
  k    sJ ‚|j        d d |dz   …         }t          j
        |t          j        ¬¦  «        }|j                             |
|dz   ¦  «        }t          |||¦  «        }|d d …d f         }t          j        ||||¦  «         t#          t          j        |                     ¦   «         |z   |                     ¦   «         |z
  ¦  «        t          j        |¦  «        d¬¦  «         t#          t          j        t)          |	|d d …df         z
  ¦  «        t)          |	|d d …df         z   ¦  «        ¦  «        t          j        |	¦  «        d¬¦  «         t          j        ||	¦  «        }t          j        |j        |j        ||||t          j        |¦  «        |¦  «        \  }}}t#          ||d d …df         d¬¦  «         d S )	Nre   r   r.   rE   rZ   rt   g‚vIhÂ%L=çê-�™—a=)r)  r
   r>  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—]’]‘_”_Ñ%Ô%‰ˆˆ1ØŒc�A‰gˆð ”‰ˆˆ2Ø�Q”W˜Q”Z !‘^ aÑ'Ò'Ð'Ð'Ð'à”˜w˜w ! A¡#˜wÔ'ˆÝÔ% fµB´HÐ=Ñ=Ô=ˆØŒJ×Ò˜q ! A¡#Ñ&Ô&ˆå˜˜F BÑ'Ô'ˆØˆqˆqˆq�$ˆwŒZˆÝÔ˜1˜f b¨"Ñ-Ô-Ð-õ 	�œ
 1§9¢9¡;¤;°¡?Ø#$§9¢9¡;¤;°¡?ñ4ô 4Ý57´]À1Ñ5EÔ5EÈEð	Sñ 	Sô 	Sð 	Så�œ
¥3 s¨R°°°°1°¬X¡~Ñ#6Ô#6Ý#& s¨R°°°°1°¬X¡~Ñ#6Ô#6ñ8ô 8Ý9;¼ÀsÑ9KÔ9KÐRWð	Yñ 	Yô 	Yð 	Yõ ”˜!˜SÑ!Ô!ˆÝ!œ¨¬¨a¬d°A°r¸1¸aÅÄÈaÁÄÐRTÑUÔU‰ˆ�!�QÝ˜ ¨¨¨¨A¨¤°UÐ;Ñ;Ô;Ð;Ð;Ð;rk   c                 ó˜  — d}|                       |¦  «        \  }}}}t          j        |||¦  «        }|j        \  }}||j        d         |z
  dz
  k    sJ ‚|j        d d |dz   …         }	t          j        |	t
          j        ¬¦  «        }	|j         	                    ||dz   ¦  «        }
t          |
|	|¦  «        }|d d …d f         }t          ||¦  «        \  }}t          j        |
|	||¦  «         t          |j        |j        d¬¦  «         t!          |j        |j        d¬¦  «         |j        |j        k    sJ ‚t          ||d¬¦  «         d S )	Nre   r   r.   rE   rZ   rt   F)Úcheck_dtype)r)  r
   r>  r®   r,  rK   r-  r  r.  r�   r  r!  r*   r/  r   r�  r   r²  r	  )rS   rU   rw   r    r2   r4   r1  rš  r	  r²  r¿  r  r4  ÚRRrÍ   s                  rW   Útest_py_vs_compiledz TestGivensQR.test_py_vs_compiledF  sS  € àˆØ—]’] 1Ñ%Ô%‰
ˆˆ1ˆa�õ Ô% a¨¨AÑ.Ô.ˆØ”‰ˆˆ2Ø�Q”W˜Q”Z !‘^ aÑ'Ò'Ð'Ð'Ð'à”˜w˜w ! A¡#˜wÔ'ˆÝÔ% fµB´HÐ=Ñ=Ô=ˆØŒJ×Ò˜q ! A¡#Ñ&Ô&ˆå˜˜F BÑ'Ô'ˆØˆqˆqˆq�$ˆwŒZˆå˜q "Ñ%Ô%‰ˆˆBÝÔ˜1˜f b¨2Ñ.Ô.Ð.å˜œ˜aœc¨Ð.Ñ.Ô.Ð.Ý˜œ	 1¤8¸Ð?Ñ?Ô?Ð?ØŒu˜œŠ}ˆ}ˆ}ˆ}Ý˜˜B UÐ+Ñ+Ô+Ð+Ð+Ð+rk   c                 óN  — d}|                       |¦  «        \  }}}}t          j        d|dz   t          ¬¦  «        }t	          j        ||||¦  «        \  }}}	|j        d         }
t          j        |||¦  «        }||d d …d f         z   	                    ¦   «         }|j
                             |
|dz   f¦  «        }|j        d d |dz   …                              t          j        ¦  «        }t          ||d¬¦  «         t!          ||¦  «         |	|j        d         |z
  dz
  k    sJ ‚d S )Nre   r.   rE   r   rZ   rt   )r)  rK   rO   ró  r*   Údata_matrixr®   r
   r>  Útocsrr.  r�   r,  rï  r  r   r   )rS   rU   rw   r    r2   r4   rÖ  r¿  r²  r	  rš  r1  Úa_wÚA_Úoffset_s                  rW   Útest_data_matrixzTestGivensQR.test_data_matrixa  s%  € ØˆØ—]’] 1Ñ%Ô%‰
ˆˆ1ˆa�ÝŒI�a˜˜1™¥EÐ*Ñ*Ô*ˆå Ô,¨Q°°1°aÑ8Ô8‰ˆˆ6�2àŒG�AŒJˆÝÔ% a¨¨AÑ.Ô.ˆØ�q˜˜˜˜D˜”zÑ!×(Ò(Ñ*Ô*ˆØŒX×Ò˜q ! A¡#˜hÑ'Ô'ˆØ”+˜g˜g  1¡˜gÔ&×-Ò-­b¬hÑ7Ô7ˆå˜˜2 EÐ*Ñ*Ô*Ð*Ý˜ Ñ(Ô(Ð(Ø�Q”W˜Q”Z !‘^ aÑ'Ò'Ð'Ð'Ð'Ð'Ð'rk   c                 ó¼  — d}|                       |¦  «        \  }}}}t          j        ||dz  f         }t          j        |||t          j        |¦  «        ¦  «        \  }}}t          |||¦  «        }	t          j        ||||¦  «         t          |	|¦  «        }
t          j        ||||||t          j        |¦  «        |¦  «        \  }}}t          ||
d¬¦  «         d S )Nre   r9   rs   rt   )
r)  rK   r   r*   r=  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�!�Q˜‘T�'ŒNˆÝ Ô,¨Q°°1µb´lÀ1±o´oÑFÔF‰ˆˆ6�2Ý˜˜F BÑ'Ô'ˆÝÔ˜1˜f b¨!Ñ,Ô,Ð,å�1�a‰LŒLˆÝ”? 1 b¨!¨Q°°1µb´lÀ1±o´oÀqÑIÔI‰ˆˆAˆqå˜˜A EÐ*Ñ*Ô*Ð*Ð*Ð*rk   c                 ó*  — d}|                       |¦  «        \  }}}}t          j        |dz   ft          ¬¦  «        }|D ]T}t	          t          j        |||||dz   ¦  «        |¦  «         t	          t          j        ||||d|z  ¦  «        |¦  «         ŒUd S )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˜q 1™u˜h­eÐ4Ñ4Ô4ˆ
Øð 	Lð 	LˆDÝÝÔ*¨1¨a°°q¸!¸a¹%Ñ@Ô@À*ñNô Nð NåÝÔ*¨1¨a°°q¸!¸A¹#Ñ>Ô>À
ñLô Lð Lð Lð	Lð 	Lrk   N)	r!  r"  r#  r)  r7  r;  rB  rD  rG  r$  rk   rW   r'  r'    st   € € € € € ðð ð ð!<ð !<ð !<ðF,ð ,ð ,ð6(ð (ð (ð"+ð +ð +ðLð Lð Lð Lð Lrk   r'  c                 óÂ   — t           j                             t           j                             t           j                             t
          ¦  «        ¦  «        d| ¦  «        S )Nr.  )ÚosÚpathry  ÚabspathÚdirnameÚ__file__)Úbasenames    rW   Ú	data_filerO  Š  s=   € ÝŒ7�<Š<�œŸš­¬¯ª½Ñ(AÔ(AÑBÔBØ ñ*ô *ð *rk   c                   óf   — e Zd Zd„ Zd„ Zd„ Zej                             d¦  «        d„ ¦   «         Z	dS )ÚTestSmoothingSplinec                 óä  — t           j                             d¦  «        }d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   |                     dd|¦  «        z   }t          t          ¦  «        5  t          ||dd …         ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          |dd …         |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          | 
                    d|¦  «        |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          |d d d	…         |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |¦  «        }|d         |d
<   t          t          ¦  «        5  t          ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          j        d¦  «        }d}t          j        t          |¬¦  «        5  t          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nrš   r£   r<   r9   r;   r=   r
  r.   r7   r   z)``x`` and ``y`` length must be at least 5r  )rK   rR   r�   rž   r;  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×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨1Ñ,¨qÑ0Ñ1Ô1ˆØˆq‰D•2”6˜!˜a™%‘=”=Ñ  1 a¡4Ñ'¨#¯*ª*°R¸¸aÑ*@Ô*@Ñ@ˆõ �:Ñ&Ô&ð 	,ð 	,Ý! ! Q q r r¤UÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,å�:Ñ&Ô&ð 	,ð 	,Ý! ! A B B¤%¨Ñ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,å�:Ñ&Ô&ð 	6ð 	6Ý! !§)¢)¨A¨q¡/¤/°1Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6õ �:Ñ&Ô&ð 	.ð 	.Ý! ! D D b D¤'¨1Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.õ ”˜‘”ˆØ˜1”Iˆˆq‰	å�:Ñ&Ô&ð 	-ð 	-Ý! &¨!Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ ŒI�a‰LŒLˆÝŒG�A‰JŒJˆØGÐÝŒ]�:Ð->Ð?Ñ?Ô?ð 	(ð 	(Ý! ! QÑ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(sl   ÂCÃCÃ
CÃ"DÄDÄDÄ&%EÅEÅEÅ6FÆF Æ#F ÇG7Ç7G;Ç>G;ÉI%É%I)É,I)c                 ó  — t          j        t          d¦  «        ¦  «        5 }|d         }|d         }|d         }ddd¦  «         n# 1 swxY w Y    t          ||¦  «        |¦  «        }t	          ||ddd¬¦  «         dS )	ae  
        Data is generated in the following way:
        >>> np.random.seed(1234)
        >>> n = 100
        >>> x = np.sort(np.random.random_sample(n) * 4 - 2)
        >>> y = np.sin(x) + np.random.normal(scale=.5, size=n)
        >>> np.savetxt('x.csv', x)
        >>> np.savetxt('y.csv', y)

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

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

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

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

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

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

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

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

        z
gcvspl.npzrw   r    Úy_GCVSPLNç-Cëâ6?F)r\   r]   r9  )rK   ÚloadrO  r   r   )rS   r.  rw   r    rX  Úy_comprs         rW   Útest_compare_with_GCVSPLz,TestSmoothingSpline.test_compare_with_GCVSPL³  sÈ   € õR ŒW•Y˜|Ñ,Ô,Ñ-Ô-ð 	(°à�S”	ˆAØ�S”	ˆAà˜JÔ'ˆHð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð .Õ'¨¨1Ñ-Ô-¨aÑ0Ô0ˆõ 	˜ °¸4ÈUÐSÑSÔSÐSÐSÐSs   ¢AÁAÁAc                 óJ  — t           j                             d¦  «        }d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   |                     dd|¦  «        z   }|                     |¦  «        |                     |¦  «        }}t          ||d¬¦  «        }t          ||dd	¬
¦  «        }| 
                    |d         |d         d|z  ¦  «        }t           ||¦  «         ||¦  «        d¬¦  «         dS )z–
        In case the regularization parameter is 0, the resulting spline
        is an interpolation spline with natural boundary conditions.
        rš   r£   r<   r9   r;   r=   r
  )ÚlamrE  r^  r   r7   rZ   rt   N)rK   rR   r�   rž   r;  r‹  rS  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×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨1Ñ,¨qÑ0Ñ1Ô1ˆØˆq‰D•2”6˜!˜a™%‘=”=Ñ  1 a¡4Ñ'¨#¯*ª*°R¸¸aÑ*@Ô*@Ñ@ˆà�zŠz˜!‰}Œ}˜bŸjšj¨™mœmˆ1ˆå*¨1¨a°RÐ8Ñ8Ô8ˆ
Ý*¨1¨a°¸IÐFÑFÔFˆà�{Š{˜1˜Qœ4  2¤¨¨A©Ñ.Ô.ˆÝ˜
˜
 4Ñ(Ô(Ø%˜ dÑ+Ô+Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rk   r9   c                 óF  — t           j                             d¦  «        }d}t          j        |                     |¦  «        dz  dz
  ¦  «        }|dz  t          j        d|z  ¦  «        z  |dz  z   |                     dd|¦  «        z   }t          |j        ||f¦  «        \  }}t          ||¦  «        }| 
                    t          d¦  «        d¬	¦  «        D ]È}|                     |¦  «        }t          j        |t          |¦  «        ¦  «                             d
¦  «         t          |||¦  «        }	t#           |||         ¦  «        ||         z
  ¦  «        }
t#           |	||         ¦  «        ||         z
  ¦  «        }|
|k     rt%          d|
d›d|d›�¦  «        ‚ŒÉd S )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ž   r;  r‹  rS  rv   rQ   r   Úchoicerà   r¼  r–  r—  r³  r˜  rÚ  rI   )rS   rT   rŸ   rU   rw   r    r2  ÚindrÖ  Úspl_wÚorigÚweighteds               rW   Útest_weighted_smoothing_splinez2TestSmoothingSpline.test_weighted_smoothing_spline 	  s§  € õ Œi×#Ò# DÑ)Ô)ˆØˆÝŒG�C×%Ò% aÑ(Ô(¨1Ñ,¨qÑ0Ñ1Ô1ˆØˆq‰D•2”6˜!˜a™%‘=”=Ñ  1 a¡4Ñ'¨#¯*ª*°R¸¸aÑ*@Ô*@Ñ@ˆå�2”:  1˜vÑ&Ô&‰ˆˆ1å# A qÑ)Ô)ˆð —:’:�e C™jœj¨r�:Ñ2Ô2ð 	3ð 	3ˆCØ—’˜‘
”
ˆAÝŒF�1•c˜#‘h”hÑÔ×#Ò# CÑ(Ô(Ð(Ý)¨!¨Q°Ñ2Ô2ˆEõ �s�s˜1˜Sœ6‘{”{ Q s¤VÑ+Ñ,Ô,ˆDÝ˜5˜5  3¤™=œ=¨1¨S¬6Ñ1Ñ2Ô2ˆHà�hŠˆÝ ð "2ØCGÐ!Oð"2ð "2à$,Ð!1ð"2ð "2ñ 3ô 3ð 3ð ð	3ð 	3rk   N)
r!  r"  r#  rV  r\  rb  ra   r€  Ú	fail_slowri  r$  rk   rW   rQ  rQ  �  sq   € € € € € ð
(ð (ð (ð>6Tð 6Tð 6Tðp$ð $ð $ð* „[×Ò˜1ÑÔð3ð 3ñ Ôð3ð 3ð 3rk   rQ  c           	      ó(  ‡‡‡‡‡‡	‡
— | \  Š	Š
|\  ŠŠt          ‰¦  «        ‰z
  dz
  }|‰dz   k    sJ ‚t          ‰¦  «        ‰z
  dz
  Š‰‰dz   k    sJ ‚t          ˆˆˆˆˆˆ	ˆ
fd„t          |¦  «        D ¦   «         ¦  «        }t          j        |¦  «        S )z-A naive 2D tensort product spline evaluation.r.   c           	   3   óœ   •K  — | ]F}t          ‰¦  «        D ]4}‰||f         t          ‰‰|‰¦  «        z  t          ‰	‰|‰¦  «        z  V — Œ5ŒGd S rÑ  )rà   r%  )
r�   ÚixÚiyr3   r4   ÚnyÚtxÚtyrw   r    s
      €€€€€€€rW   rÒ  zbspline2.<locals>.<genexpr>'	  s{   øè è € ð 7ð 7Ø­E°"©I¬Ið7ð 7Ø&(ð ��B�Œi�!˜A˜q " b™/œ/Ñ)­A¨a°°B¸©O¬OÑ;ð 7ð 7ð 7ð 7ð 7ð 7ð 7rk   )r=  rÔ  rà   rK   rQ   )rÔ   r2   r3   r4   Únxr  ro  rp  rq  rw   r    s     ``  @@@@@rW   Úbspline2rs  	  sÊ   øøøøøøø€ à�D€A€qØ�F€BˆÝ	ˆR‰Œ�1‰�q‰€BØ�!�A‘#ŠIˆIˆIˆIÝ	ˆR‰Œ�1‰�q‰€BØ�!�A‘#ŠIˆIˆIˆIÝ
ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7Ý˜b™	œ	ð7ñ 7ô 7ñ 7ô 7€CåŒ:�c‰?Œ?Ðrk   c                 óÀ  — |dk    r#||         | cxk    r||dz            k     rn ndndS |||z            ||         k    rd}n6| ||         z
  |||z            ||         z
  z  t          | |dz
  ||¦  «        z  }|||z   dz            ||dz            k    rd}nE|||z   dz            | z
  |||z   dz            ||dz            z
  z  t          | |dz
  |dz   |¦  «        z  }||z   S )Nr   r.   r0   r=   ©r%  rÌ  s         rW   r%  r%  ,	  s  € ØˆA‚v€vØ˜”d˜aÐ(Ð(Ò(Ð( ! A a¡C¤&Ò(Ð(Ð(Ð(Ð(ˆsˆs¨cÐ1Øˆˆ1‰„v��1”‚~€~Øˆˆà�!�A”$‰h˜˜1˜Q™3œ ! A¤$™Ñ'­!¨A¨q°©s°A°q©/¬/Ñ9ˆØˆˆ1‰ˆQ‰„x�1�Q�q‘S”6ÒÐØˆˆà��!‘�A‘Œh˜‰l˜Q˜q ™s 1™uœX¨¨!¨A©#¬Ñ.Ñ/µ!°A°q¸±s¸A¸a¹CÀÑ2CÔ2CÑCˆØ�‰7€Nrk   c                 óÆ   ‡ ‡‡‡— t          ‰¦  «        ‰z
  dz
  }|‰dz   k    rt          ‰¦  «        |k    sJ ‚t          ˆˆˆˆ fd„t          |¦  «        D ¦   «         ¦  «        S )Nr.   c              3   óN   •K  — | ]}‰|         t          ‰‰|‰¦  «        z  V — Œ d S rÑ  ru  r×  s     €€€€rW   rÒ  zbspline.<locals>.<genexpr>=	  s8   øè è € Ð6Ð6¨ˆq�Œt•a˜˜1˜a ‘m”mÑ#Ð6Ð6Ð6Ð6Ð6Ð6rk   )r=  rÔ  rà   )rw   r2   r3   r4   rU   s   ```` rW   rP  rP  :	  sk   øøøø€ ÝˆA‰Œ�‰
�Q‰€AØ��1‘ŠHˆH�3˜q™6œ6 Qš;˜;˜;Ð'ÝÐ6Ð6Ð6Ð6Ð6Ð6Ð6­U°1©X¬XÐ6Ñ6Ô6Ñ6Ô6Ð6rk   c                   ó   — e Zd Zdd„Zd„ ZdS )Ú
NdBSpline0r;   c                 ó,  — t          |¦  «        }|t          |j        ¦  «        k    sJ ‚	 t          |¦  «         n# t          $ r	 |f|z  }Y nw xY wt          d„ |D ¦   «         ¦  «        | _        t          d„ |D ¦   «         ¦  «        | _        || _        dS )a¯  Tensor product spline object.

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

        Parameters
        ----------
        c : ndarray, shape (n1, n2, ..., nd, ...)
            b-spline coefficients
        t : tuple of 1D ndarrays
            knot vectors in directions 1, 2, ... d
            ``len(t[i]) == n[i] + k + 1``
        k : int or length-d tuple of integers
            spline degrees.
        c              3   ó>   K  — | ]}t          j        |¦  «        V — Œd S rÑ  )ÚoperatorÚindex)r�   Úkis     rW   rÒ  z&NdBSpline0.__init__.<locals>.<genexpr>Y	  s,   è è € Ð6Ð6¨b•x”~ bÑ)Ô)Ð6Ð6Ð6Ð6Ð6Ð6rk   c              3   óL   K  — | ]}t          j        |t          ¬ ¦  «        V — Œ dS )rE   N)rK   rQ   ró  )r�   Útis     rW   rÒ  z&NdBSpline0.__init__.<locals>.<genexpr>Z	  s1   è è € Ð?Ð?°r•r”z "­EÐ2Ñ2Ô2Ð?Ð?Ð?Ð?Ð?Ð?rk   N)r=  r®   rH   r*  r4   r2   r3   )rS   r2   r3   r4   r  s        rW   r
  zNdBSpline0.__init__A	  s­   € õ �1‰vŒvˆØ•s˜1œ7‘|”|Ò#Ð#Ð#Ð#ð	Ý�‰FŒFˆFˆFøÝð 	ð 	ð 	à��T‘	ˆAˆAˆAð	øøøõ Ð6Ð6°AÐ6Ñ6Ô6Ñ6Ô6ˆŒÝÐ?Ð?¸QÐ?Ñ?Ô?Ñ?Ô?ˆŒØˆŒˆˆs   «; »AÁAc                 óþ  ‡ ‡‡
‡— t          ‰ j        ¦  «        }t          ‰¦  «        |k    sJ ‚dg|z  Š
t          |¦  «        D ]§}‰ j        |         ‰|         }}‰ j        |         }|||         k    r|‰
|<   nt	          j        ||¦  «        dz
  ‰
|<   |‰
|                  |cxk    r|‰
|         dz            k    sn J ‚‰
|         |k    r‰
|         t          |¦  «        |z
  k     sJ ‚Œ¨t          ‰
¦  «        Š
d}ˆ
ˆ fd„t          |¦  «        D ¦   «         }t          j        |Ž D ]DŠ‰ j	        ‰         t	          j
        ˆˆ ˆfd„t          |¦  «        D ¦   «         ¦  «        z  }	||	z  }ŒEt	          j        |¦  «        S )NÚnoner.   r   c                 ój   •— g | ]/}t          ‰|         ‰j        |         z
  ‰|         d z   ¦  «        ‘Œ0S ©r.   )rà   r4   )r�   rº  r  rS   s     €€rW   rŽ   z'NdBSpline0.__call__.<locals>.<listcomp>u	  s:   ø€ ÐHÐHÐH°q•�q˜”t˜dœf QœiÑ'¨¨1¬°©Ñ2Ô2ÐHÐHÐHrk   c           	      óx   •— g | ]6}t          ‰|         ‰j        |         ‰|         ‰j        |         ¦  «        ‘Œ7S r$  )r%  r4   r2   )r�   rº  ÚidxrS   rw   s     €€€rW   rŽ   z'NdBSpline0.__call__.<locals>.<listcomp>w	  sQ   ø€ ð *@ð *@ð *@Ø./õ +,¨A¨a¬D°$´&¸´)¸SÀ¼VÀTÄVÈAÄYÑ*OÔ*Oð *@ð *@ð *@rk   )r=  r2   rà   r4   rK   rÓ  r*  Ú	itertoolsÚproductr3   ÚprodrQ   )rS   rw   r  rº  ÚtdÚxdr4   rå  ÚitersÚtermr  r†  s   ``        @@rW   Ú__call__zNdBSpline0.__call__]	  sÇ  øøøø€ Ý�4”6‰{Œ{ˆå�1‰vŒv˜Š~ˆ~ˆ~ˆ~ð ˆJ�t‰OˆÝ�t‘”ð 
	4ð 
	4ˆAØ”V˜A”Y  !¤�ˆBØ”�q”	ˆAð �R˜”UŠ{ˆ{Ø��!‘�å” r¨2Ñ.Ô.°Ñ2��!‘Ø�a˜”d”8˜rÐ/Ð/Ò/Ð/ R¨¨!¬¨Q©¤ZÒ/Ð/Ð/Ð/Ð/Ð/Ø�Q”4˜1’9�9  1¤­¨B©¬°!©Ò!3Ð!3Ð!3Ð3Ð!3Ý�!‰HŒHˆð
 ˆØHÐHÐHÐHÐH½EÀ$¹K¼KÐHÑHÔHˆÝÔ$ eÐ,ð 	ð 	ˆCØ”6˜#”;¥¤ð *@ð *@ð *@ð *@ð *@ð *@Ý38¸±;´;ð*@ñ *@ô *@ñ "Aô "Añ AˆDà�d‰NˆFˆFÝŒz˜&Ñ!Ô!Ð!rk   N©r;   )r!  r"  r#  r
  rŽ  r$  rk   rW   ry  ry  @	  s7   € € € € € ðð ð ð ð8"ð "ð "ð "ð "rk   ry  c                   ó|  — 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                             dddg¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         Zej                             dddg¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS ) ÚTestNdBSplinec                 óš  — t           j                             d¦  «        }d\  }}d}t          j        |                     ||z   dz   ¬¦  «        ¦  «        }|                     ||f¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          |||¦  «        }t          |f||¦  «        }	|                     d¬¦  «        }
|                     |
¦  «        }
t           |	|
d d …d f         ¦  «         ||
¦  «        d¬¦  «          |	|
d d …d f         ¦  «        j	        |
j	        d	         |j	        d         fk    sJ ‚d S )
Nr�  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×#Ò# EÑ*Ô*ˆØ‰ˆˆ1ØˆÝŒG�C—K’K Q¨¡U¨Q¡Y�KÑ/Ô/Ñ0Ô0ˆØ�KŠK˜a ˜YˆKÑ'Ô'ˆà�JŠJ�q‰MŒMˆØ�JŠJ�q‰MŒMˆå�A�q˜!ÑÔˆÝ˜�t˜Q Ñ"Ô"ˆà�[Š[˜bˆ[Ñ!Ô!ˆØ�ZŠZ˜‰^Œ^ˆõ 	˜˜˜2˜a˜a˜a ˜gœ;™œØ˜˜"™œ Eð	+ñ 	+ô 	+ð 	+àˆr�"�Q�Q�Q˜�W”+‰ŒÔ$¨¬°!¬°a´g¸a´jÐ(AÒAÐAÐAÐAÐAÐArk   c                 ó   — |                      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;   rS  r9   ©rO   r   r2   r3   ©	rS   rT   rw   r    r2  Úy_1r’  Út2rÎ  s	            rW   Úmake_2d_casezTestNdBSpline.make_2d_case–	  s”   € à�IŠI�a‰LŒLˆØˆq‰DˆÝ   A¨Ð+Ñ+Ô+ˆà�‰d�Q�q‘S‰jˆÝ" 1 c¨QÐ/Ñ/Ô/ˆàŒe�U”WÐˆØŒU�1�1�1�d�7Œ^˜eœg d¨A¨A¨A gÔ.Ñ.ˆà�2�qˆyÐrk   c                 óT  — |                      d¦  «        }|dz  }t          ||d¬¦  «        }|                      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;   rS  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ŒLˆØˆq‰DˆÝ   A¨Ð+Ñ+Ô+ˆà�IŠI�a˜rœzˆIÑ*Ô*¨SÑ0ˆØ�‰d�Q�q‘S‰jˆÝ" 1 c¨QÐ/Ñ/Ô/ˆàŒe�U”WÐˆØŒU�1�1�1�d�7Œ^˜eœg d¨A¨A¨A gÔ.Ñ.ˆà�2�s”u˜eœgÐ%Ð%rk   c                 óˆ  ‡‡‡— g d¢}|                       |¬¦  «        \  ŠŠŠd„ |D ¦   «         }ˆˆˆfd„|D ¦   «         }t          j        |t          j        ¬¦  «        }t	          |                     |¦  «        |                     ||j        ¬¦  «        dd¬¦  «         t          ‰‰d	¬
¦  «        } ||¦  «        j        t          |¦  «        fk    sJ ‚t	           ||¦  «        |                     ||j        ¬¦  «        d¬¦  «         t          j        |¦  «        }t          j        |d<   |                     |¦  «        }t          | 
                     ||¦  «        ¦  «        |                     g d¢¦  «        ¦  «         t          j                             d¦  «        }|                     d¬¦  «        dz  }|                     |¦  «        } ||¦  «        }|j        dk    sJ ‚|                     |d¦  «        j        }|d         |d         }
}	t	          t!          ||¬¦  «        |	d	z  |
d	z  d|
z  z   z  d¬¦  «         d S )N©©r
  rB   )rB   r.   )rÓ   r
  rr   c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS r(  r$  ©r�   rw   r    s      rW   rŽ   z3TestNdBSpline.test_2D_separable.<locals>.<listcomp>¶	  ó1   € Ð7Ð7Ð7©&¨1¨a�!�Q‘$˜!˜Q™$  1¡™*Ñ%Ð7Ð7Ð7rk   c           	      ól   •— g | ]0}t          |d „ ‰D ¦   «         t          j        ‰¦  «        ‰¦  «        ‘Œ1S )c                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r$  )rK   rQ   ©r�   rÀ   s     rW   rŽ   z>TestNdBSpline.test_2D_separable.<locals>.<listcomp>.<listcomp>»	  s    € Ð+Ð+Ð+ 1•”˜A‘”Ð+Ð+Ð+rk   )rs  rK   rQ   )r�   rÔ   rÎ  r4   r›  s     €€€rW   rŽ   z3TestNdBSpline.test_2D_separable.<locals>.<listcomp>¹	  sW   ø€ ð 
ð 
ð 
ð
 õ ØØ+Ð+¨Ð+Ñ+Ô+Ý”
˜2‘”Øñ	ô ð 
ð 
ð 
rk   rE   Frs   ©r)  r\   r;   rS  rt   rŽ  )TFFr�  )r<   r;   r9   rª   r­   )r<   r;   )r7   r9   )r   .)r.   .r9   )rœ  rK   rQ   rP   r   r   r®   r=  rM   r   rÌ   rR   r¡  r¢  r�   rÄ  r   )rS   rT   r•  Útargetr  Úbspl2rŸ   rå  Úrrrrw   r    rÎ  r4   r›  s              @@@rW   Útest_2D_separablezTestNdBSpline.test_2D_separable³	  so  øøø€ Ø/Ð/Ð/ˆØ×%Ò%¨Ð%Ñ,Ô,‰	ˆˆB�Ø7Ð7°BÐ7Ñ7Ô7ˆð
ð 
ð 
ð 
ð 
ð 
ð
 ð
ñ 
ô 
ˆõ ŒZ˜¥"¤*Ð-Ñ-Ô-ˆÝ˜Ÿ
š
 2™œØŸ
š
 6°´˜
Ñ<Ô<Ø$)Ø"ð	$ñ 	$ô 	$ð 	$õ ˜"˜b AÐ&Ñ&Ô&ˆØˆu�R‰yŒyŒ¥3 r¡7¤7 +Ò-Ð-Ð-Ð-Ý˜˜˜b™	œ	ØŸ
š
 6°´˜
Ñ<Ô<À5ð	Jñ 	Jô 	Jð 	Jõ ŒZ˜‰^Œ^ˆÝ”6ˆˆ4‰Ø�ZŠZ˜‰^Œ^ˆÝ˜Ÿš   r¡¤Ñ+Ô+¨R¯ZªZÐ8LÐ8LÐ8LÑ-MÔ-MÑNÔNÐNõ Œi×#Ò# EÑ*Ô*ˆØ�[Š[˜iˆ[Ñ(Ô(¨1Ñ,ˆØ�ZŠZ˜‰^Œ^ˆØ��r‘”ˆØŒ|˜vÒ%Ð%Ð%Ð%ð �jŠj˜˜WÑ%Ô%Ô'ˆØ�6Œ{˜C œKˆ1ˆÝ� ¨BÐ/Ñ/Ô/Ø˜1™  1¡ q¨¡s¡
Ñ+°%ð	9ñ 	9ô 	9ð 	9ð 	9ð 	9rk   c                 ój  — d}g d¢}d„ |D ¦   «         }|                       |¬¦  «        \  }}}|                     ||||fd¬¦  «        }d}	t          ||d¬¦  «        }
 |
|	¦  «        } t          |||¦  «        |	¦  «        }|j        d	k    sJ ‚t	          ||                     |gd
z  ¦  «        d¬¦  «          |
|¦  «        j        t          j        |¦  «        d d…         |
j        j        |d …         z   k    sJ ‚t	           |
|¦  «        |                     ||j        ¬¦  «        d d …d f         dd¬¦  «         | 	                    |d¦  «        }t          ||d¬¦  «        } ||	¦  «        }|j        dk    sJ ‚| 
                    d|j        ¬¦  «        |z  }t	          ||d¬¦  «          ||¦  «        j        t          j        |¦  «        d d…         |j        j        |d …         z   k    sJ ‚t	           ||¦  «        |                     ||j        ¬¦  «        d d …d d f         dd¬¦  «         d S )Nr9   r   c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS r(  r$  r£  s      rW   rŽ   z5TestNdBSpline.test_2D_separable_2.<locals>.<listcomp>ã	  r¤  rk   rr   r  r¡  r;   rS  ©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•  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Œ  € àˆØ/Ð/Ð/ˆØ7Ð7°BÐ7Ñ7Ô7ˆà×%Ò%¨Ð%Ñ,Ô,‰	ˆˆB�Ø�xŠx˜˜R  RÐ(¨qˆxÑ1Ô1ˆàˆÝ˜B ¨Ð*Ñ*Ô*ˆØ�˜‘”ˆØ)•Y˜r 2 qÑ)Ô)¨"Ñ-Ô-ˆ
ØŒ|˜tÒ#Ð#Ð#Ð#Ý˜ØŸš * °Ñ!1Ñ2Ô2¸ð	@ñ 	@ô 	@ð 	@ð
 ˆw�r‰{Œ{Ô ¥B¤H¨R¡L¤L°°"°Ô$5¸¼	¼ÈÈÈÔ8NÑ$NÒNÐNÐNÐNÝ˜˜ ™œØŸ
š
 6°´˜
Ñ<Ô<¸Q¸Q¸QÀ¸WÔEØ$)Ø"ð	$ñ 	$ô 	$ð 	$ð —
’
˜4 Ñ.Ô.ˆÝ˜R ¨!Ð,Ñ,Ô,ˆà�˜"‘”ˆØŒ|˜vÒ%Ð%Ð%Ð%Ø—W’W˜V¨2¬:�WÑ6Ô6°zÑAˆ
Ý˜ 
°Ð7Ñ7Ô7Ð7ð �˜‘”Ô"Ý”˜‘”˜S˜b˜SÔ! H¤JÔ$4°T°U°UÔ$;Ñ;ò<ð <ð <ð <å˜˜ ™œØŸ
š
 6°´˜
Ñ<Ô<¸Q¸Q¸QÀÀd¸]ÔKØ$)Ø"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rk   c                 ó�  — g d¢}d„ |D ¦   «         }d„ |D ¦   «         }|                       |¬¦  «        \  }}}|dz  }|                     ||||fd¬¦  «        }d}t          ||d	¬
¦  «        }	 |	|¦  «        }
 t          |||¦  «        |¦  «        }|
j        dk    sJ ‚t	          |
|                     |gdz  ¦  «        d¬¦  «         d S )Nr   c                 ó6   — g | ]\  }}|d z  |d z  d|z  z   z  ‘ŒS r(  r$  r£  s      rW   rŽ   z=TestNdBSpline.test_2D_separable_2_complex.<locals>.<listcomp>
  r¤  rk   c                 ó   — g | ]
}|d |z  z   ‘ŒS )y               @r$  )r�   r2   s     rW   rŽ   z=TestNdBSpline.test_2D_separable_2_complex.<locals>.<listcomp>
  s    € Ð+Ð+Ð+˜q�!�b˜‘d‘(Ð+Ð+Ð+rk   rr   rê  r9   r  r¡  r;   rS  r¯  r<   rs   rt   )rœ  r‘   r   r®   r   )rS   rT   r•  r©  r›  rÎ  r4   r±  rÔ   r²  rå  r³  s               rW   Útest_2D_separable_2_complexz)TestNdBSpline.test_2D_separable_2_complex

  s  € à/Ð/Ð/ˆØ7Ð7°BÐ7Ñ7Ô7ˆà+Ð+ FÐ+Ñ+Ô+ˆà×%Ò%¨Ð%Ñ,Ô,‰	ˆˆB�Ø�6‰]ˆØ�xŠx˜˜R  RÐ(¨qˆxÑ1Ô1ˆàˆÝ˜B ¨Ð*Ñ*Ô*ˆØ�˜‘”ˆØ)•Y˜r 2 qÑ)Ô)¨"Ñ-Ô-ˆ
ØŒ|˜tÒ#Ð#Ð#Ð#Ý˜ØŸš * ¨a¡Ñ0Ô0°uð	>ñ 	>ô 	>ð 	>ð 	>ð 	>rk   c           
      óÆ  ‡‡‡‡— t           j                             d¦  «        }dŠt           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         Št           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         Š|                     ‰j        ‰z
  dz
  ‰j        ‰z
  dz
  f¬¦  «        Št          ‰‰f‰‰¬	¦  «        }d
}t           ||¦  «        t          |‰‰f‰‰¦  «        d¬¦  «         t           j
        g d¢g d¢f         }t           ||¦  «        ˆˆˆˆfd„|D ¦   «         d¬¦  «         d S )Nr�  r;   r   r©   rª   rÐ   r<   r.   rS  )r0   r0   rs   rt   ©r.   r
  r9   ©çš™™™™™ñ?gš™™™™™ù?çÍÌÌÌÌÌ @c                 ó8   •— g | ]}t          |‰‰f‰‰¦  «        ‘ŒS r$  )rs  )r�   rÔ   r3   r4   rp  rq  s     €€€€rW   rŽ   z0TestNdBSpline.test_2D_random.<locals>.<listcomp>-
  s+   ø€ ÐCÐCÐC¸"� " r¨2 h°°1Ñ5Ô5ÐCÐCÐCrk   )rK   rR   r¡  r´   rž   r¢  r«   r   r   rs  r   )rS   rŸ   r2  r•  r3   r4   rp  rq  s       @@@@rW   Útest_2D_randomzTestNdBSpline.test_2D_random
  s‹  øøøø€ ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg a™i¨™k¨2¬7°1©9°Q©;Ð7ˆKÑ8Ô8ˆå˜˜R˜ ! qÐ)Ñ)Ô)ˆàˆÝ˜˜˜B™œÝ   b¨" X¨q°!Ñ4Ô4¸5ð	Bñ 	Bô 	Bð 	Bõ ŒU�;�;�;Ø"�?�?ð#ô $ˆå˜˜˜B™œØCÐCÐCÐCÐCÐCÐCÀÐCÑCÔCØ"ð	$ñ 	$ô 	$ð 	$ð 	$ð 	$rk   c                 óþ   — |                       ¦   «         \  }}}}g d¢}d„ |D ¦   «         }t          ||||f¬¦  «        } ||¦  «        j        t          |¦  «        fk    sJ ‚t	           ||¦  «        |d¬¦  «         d S )N©)çffffffö?r¦  )rB   g333333@)r¦  r±  c                 ó6   — g | ]\  }}|d z  |dz  d|z  z   z  ‘ŒS r(  r$  r£  s      rW   rŽ   z/TestNdBSpline.test_2D_mixed.<locals>.<listcomp>3
  r¤  rk   rS  rs   rt   )rž  r   r®   r=  r   )rS   r›  rÎ  ÚkxÚkyr•  r©  rª  s           rW   Útest_2D_mixedzTestNdBSpline.test_2D_mixed0
  s¤   € Ø×+Ò+Ñ-Ô-‰ˆˆB��BØ1Ð1Ð1ˆØ7Ð7°BÐ7Ñ7Ô7ˆÝ˜"˜b R¨ HÐ-Ñ-Ô-ˆØˆu�R‰yŒyŒ¥3 r¡7¤7 +Ò-Ð-Ð-Ð-Ý˜˜˜b™	œ	Ø Uð	,ñ 	,ô 	,ð 	,ð 	,ð 	,rk   c                 óú  ‡— |                       |¬¦  «        \  }}}}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}|                     ¦   «         D ]|\  }	Š|                     ˆfd„|D ¦   «         |j        ¬¦  «        }
 |||	¬¦  «        }t          ||
d¬¦  «          |                     |	¦  «        |¦  «        }t          ||
d¬¦  «         Œ}dD ]|}t          t          ¦  «        5   |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   Œ}d S )Nrr   rÄ  rS  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Ñ!8€ rk   ©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Ñ!5€ rk   )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©°°!±©Ñ!4€ rk   r9   r.   c                 ó   — dS r  r$  rÍ  s     rW   rß  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>C
  ó   €  A€ rk   r   c                 ó   — dS r  r$  rÍ  s     rW   rß  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>D
  rÒ  rk   r;   c                 ó   — dS r  r$  rÍ  s     rW   rß  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>E
  rÒ  rk   c                 ó   — dS r  r$  rÍ  s     rW   rß  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>F
  rÒ  rk   c                 ó   — dS r  r$  rÍ  s     rW   rß  z2TestNdBSpline.test_2D_derivative.<locals>.<lambda>G
  s   €  q€ rk   c                 ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS r$  r$  )r�   rw   r    Úexpected_fns      €rW   rŽ   z4TestNdBSpline.test_2D_derivative.<locals>.<listcomp>L
  s)   ø€ Ð2Ð2Ð2¡t q¨!��˜Q Ñ"Ô"Ð2Ð2Ð2rk   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_valsÚdirectÚ
via_methodÚbad_nurØ  s                 @rW   Útest_2D_derivativez TestNdBSpline.test_2D_derivative9
  sz  ø€ Ø×+Ò+¨rÐ+Ñ2Ô2‰ˆˆB��BØ1Ð1Ð1ˆÝ˜"˜b R¨ HÐ-Ñ-Ô-ˆð Ð8Ð8ØÐ5Ð5ØÐ4Ð4Øˆr‰T�1ˆI�~�~Øˆr‰T�1ˆI�~�~Ø��"‘ˆI�~�~Ø��"‘ˆI�~�~Øˆr‰T�1�R‘4ˆL˜.˜.ð	
ˆ
ð  *×/Ò/Ñ1Ô1ð 	Cð 	C‰OˆB�ØŸJšJØ2Ð2Ð2Ð2¨rÐ2Ñ2Ô2¸"¼*ð 'ñ ô ˆMð
 �U˜2 "Ð%Ñ%Ô%ˆFÝ˜F M¸Ð>Ñ>Ô>Ð>ð .˜×)Ò)¨"Ñ-Ô-¨bÑ1Ô1ˆJÝ˜J¨¸EÐBÑBÔBÐBÐBð#ð 	)ð 	)ˆFå�zÑ*Ô*ð %ð %Ø��b˜VÐ$Ñ$Ô$Ð$ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %å�zÑ*Ô*ð )ð )Ø× Ò  Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )øð		)ð 	)s$   ÄD.Ä.D2	Ä5D2	ÅE/Å/E3	Å6E3	c           
      ó’  ‡	— t           j                             d¦  «        }d\  }}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  d	z
  |j        |z
  d	z
  f¬¦  «        }t           j        g d
¢g d¢f         }t          ||f|||f¬¦  «        }t          ||f|||f¬¦  «        Š	t           ||¦  «        ˆ	fd„|D ¦   «         d¬¦  «         d S )Nr�  )r9   r;   r   r©   rª   r;   rÐ   r<   r.   r½  r¾  rS  c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r$  r$  ©r�   rT   Úbspl2_0s     €rW   rŽ   z6TestNdBSpline.test_2D_mixed_random.<locals>.<listcomp>m
  ó!   ø€ Ð2Ð2Ð2¨˜˜ ™œÐ2Ð2Ð2rk   rs   rt   )rK   rR   r¡  r´   rž   r¢  r«   r   r   ry  r   ©
rS   rŸ   rÇ  rÈ  rp  rq  r3   r•  rª  rä  s
            @rW   Útest_2D_mixed_randomz"TestNdBSpline.test_2D_mixed_random_
  si  ø€ ÝŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆBÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg¨™l¨QÑ.°´¸"±¸qÑ0@ÐAˆKÑBÔBˆåŒU�;�;�;Ø"�?�?ð#ô $ˆõ ˜2˜r˜( A¨"¨b¨Ð2Ñ2Ô2ˆÝ˜b "˜X q¨R°¨HÐ5Ñ5Ô5ˆå˜˜˜b™	œ	Ø2Ð2Ð2Ð2¨rÐ2Ñ2Ô2¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@rk   c                 óð  — t          j        d¦  «        }t          j        d¦  «        dz   }t          ||dz  d¬¦  «        }t          ||dz  d|z  z   d¬¦  «        }|j        d d …d f         |j        d d d …f         z  }t	          |j        |j        f||j        |j        f¦  «        }|dz  d d …d f         |dz  d|z  z   d d d …f         z  }t          ||f|¦  «        }d„ t          j	        ||¦  «        D ¦   «         }	 ||	¦  «        }
t          j
        |
¦  «                             ¦   «         rJ ‚t          |
 ||	¦  «        d¬	¦  «         t          |
                     |j        ¦  «        |d¬	¦  «         d S )
Nr¨   r©   r
  r;   rS  r9   c                 ó   — g | ]	\  }}||f‘Œ
S r$  r$  ©r�   r�  rV   s      rW   rŽ   z0TestNdBSpline.test_tx_neq_ty.<locals>.<listcomp>|
  ó    € Ð9Ð9Ð9™˜˜Aˆq�!ˆfÐ9Ð9Ð9rk   rs   rt   )rK   rO   r   r3   r   r2   r4   r   r‡  rˆ  rÌ   Úanyr   r�   r®   )rS   rw   r    Úspl_xÚspl_yrõ   rƒ   ÚvaluesÚrgir•  Úbxis              rW   Útest_tx_neq_tyzTestNdBSpline.test_tx_neq_tyo
  s}  € åŒI�a‰LŒLˆÝŒI�a‰LŒL˜3Ñˆå" 1 a¨¡d¨aÐ0Ñ0Ô0ˆÝ" 1 a¨¡d¨Q¨q©S¡j°AÐ6Ñ6Ô6ˆØŒW�Q�Q�Q˜�WÔ ¤¨¨a¨a¨a¨Ô 0Ñ0ˆÝ˜%œ' 5¤7Ð+¨R°%´'¸5¼7Ð1CÑDÔDˆà�Q‘$˜˜˜˜4˜” A q¡D¨1¨Q©3¡J°°a°a°a°Ô#8Ñ8ˆÝ% q¨! f¨fÑ5Ô5ˆà9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆØˆd�2‰hŒhˆå”8˜C‘=”=×$Ò$Ñ&Ô&Ð&Ð&Ð&Ý˜˜S˜S ™WœW¨5Ð1Ñ1Ô1Ð1Ý˜Ÿš F¤LÑ1Ô1°6ÀÐFÑFÔFÐFÐFÐFrk   c                 óv  — |                      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;   rS  r9   r.   r˜  )rS   rT   rw   r    r2  rš  r’  Úy_2r  r›  rÎ  s              rW   Úmake_3d_casezTestNdBSpline.make_3d_caseƒ
  sä   € à�IŠI�a‰LŒLˆØˆq‰DˆÝ   A¨Ð+Ñ+Ô+ˆà�‰d�Q�q‘S‰jˆÝ" 1 c¨QÐ/Ñ/Ô/ˆà�‰d�Q�q‘S‰j˜1‰nˆÝ" 1 c¨QÐ/Ñ/Ô/ˆàŒe�U”W˜eœgÐ&ˆØŒe�A�A�A�t˜T�MÔ"ØŒg�d˜A˜A˜A˜t�mÔ$ñ%àŒg�d˜D ! ! !�mÔ$ñ%ˆð �2�qˆyÐrk   c                 óœ  — t           j                             d¦  «        }|                     d¬¦  «        dz  \  }}}|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }|                      ¦   «         \  }}}t          ||d¬¦  «        }	d	„ t          |||¦  «        D ¦   «         }
 |	|
¦  «        }|j        d
k    sJ ‚t          ||d¬¦  «         d S )Nr�  ©r;   rD   rª   r­   r;   r9   r.   rS  c                 ó   — g | ]}|‘ŒS r$  r$  r§  s     rW   rŽ   z3TestNdBSpline.test_3D_separable.<locals>.<listcomp>ž
  ó   € Ð&Ð&Ð&�AˆaÐ&Ð&Ð&rk   ©rD   rs   rt   )	rK   rR   r¡  r¢  rõ  r   Úzipr®   r   )rS   rŸ   rw   r    r™  r©  Út3Úc3r4   Úbspl3r•  rå  s               rW   Útest_3D_separablezTestNdBSpline.test_3D_separable–
  sç   € ÝŒi×#Ò# EÑ*Ô*ˆØ—+’+ 7�+Ñ+Ô+¨aÑ/‰ˆˆ1ˆaØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆà&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ��r‘”ˆØŒ|˜uÒ$Ð$Ð$Ð$Ý˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3rk   c                 óp  ‡— |                       |¬¦  «        \  }}}t          ||d¬¦  «        }t          j                             d¦  «        }|                     d¬¦  «        dz  \  }}}	d„ t          |||	¦  «        D ¦   «         }
|                     |
¦  «        }d	„ d
„ d„ d„ d„ dœ}|                     ¦   «         D ]z\  }Šˆfd„|
D ¦   «         }|                     ||j	        ¬¦  «        }t           |||¬¦  «        |d¬¦  «         t           |                     |¦  «        |¦  «        |d¬¦  «         Œ{d S )Nrr   r;   rS  r�  r÷  rª   r­   c                 ó   — g | ]}|‘ŒS r$  r$  r§  s     rW   rŽ   z4TestNdBSpline.test_3D_derivative.<locals>.<listcomp>©
  s   € Ð)Ð)Ð)�q�Ð)Ð)Ð)rk   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>®
  s4   €  q¨1¨a©4¡x°1°a±4¸!¸A¹#±:Ñ'>À!ÀQÁ$ÈÈ1ÉÁ*ÈqÁ.Ñ'Q€ rk   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>¯
  s0   €  q¨1¡u°°1±°q¸±s±
Ñ';¸qÀ!¹tÀaÈÁc¹zÈA¹~Ñ'N€ rk   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>°
  s0   €  q¨1¡u°°!°Q±$±¸±
Ñ';¸qÀ!¹tÀaÈÁc¹zÈA¹~Ñ'N€ rk   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                 ó   — dS rÝ  r$  r  s      rW   rß  z2TestNdBSpline.test_3D_derivative.<locals>.<lambda>²
  s   €  s€ rk   ))r.   r   r   )r9   r   r   )r9   r.   r   )r9   r.   r;   )r9   r.   r<   c                 ó2   •— g | ]\  }}} ‰|||¦  «        ‘ŒS r$  r$  )r�   Úxi_Úyi_Úzi_rØ  s       €rW   rŽ   z4TestNdBSpline.test_3D_derivative.<locals>.<listcomp>¶
  s-   ø€ ÐSÐSÐS¹M¸CÀÀc˜[˜[¨¨c°3Ñ7Ô7ÐSÐSÐSrk   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™  Úxi_npr•  rÛ  rß   rÜ  rØ  s                  @rW   Útest_3D_derivativez TestNdBSpline.test_3D_derivative£
  su  ø€ Ø×%Ò%¨Ð%Ñ,Ô,‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆÝŒi×#Ò# EÑ*Ô*ˆØ—+’+ 7�+Ñ+Ô+¨aÑ/‰ˆˆ1ˆaà)Ð)�C  1 a™LœLÐ)Ñ)Ô)ˆØ�ZŠZ˜ÑÔˆð RÐQØNÐNØNÐNØ?Ð?Ø*Ð*ð
ð 
ˆ
ð  *×/Ò/Ñ1Ô1ð 	Qð 	Q‰OˆB�ØSÐSÐSÐSÈUÐSÑSÔSˆMØŸJšJ }¸B¼J˜JÑGÔGˆMÝ˜E˜E "¨Ð,Ñ,Ô,¨mÀ%ÐHÑHÔHÐHÝÐ0˜E×,Ò,¨RÑ0Ô0°Ñ4Ô4°mÈ%ÐPÑPÔPÐPÐPð		Qð 	Qrk   c           
      óz  ‡	— t           j                             d¦  «        }d}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        }t          |||f||¬	¦  «        }t          |||f||¬	¦  «        Š	d
}t           ||¦  «         ‰	|¦  «        d¬¦  «         t           j
        g d¢g d¢g d¢f         }t           ||¦  «        ˆ	fd„|D ¦   «         d¬¦  «         d S )Nr�  r;   r   r©   rª   rÐ   r<   r.   rS  )r0   r0   r.   rs   rt   r½  r¾  ©gÍÌÌÌÌÌì?rÅ  gffffffþ?c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r$  r$  )r�   rT   Úspl_0s     €rW   rŽ   z0TestNdBSpline.test_3D_random.<locals>.<listcomp>Ì
  s!   ø€ Ð!9Ð!9Ð!9° % %¨¡)¤)Ð!9Ð!9Ð!9rk   )rK   rR   r¡  r´   rž   r¢  r«   r   ry  r   r   )
rS   rŸ   r4   rp  rq  Útzr3   r2  r•  r  s
            @rW   Útest_3D_randomzTestNdBSpline.test_3D_random»
  sÆ  ø€ ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg a™i¨™k¨2¬7°1©9°Q©;¸¼À¹	À!¹ÐDˆKÑEÔEˆå˜˜R ˜ a¨1Ð-Ñ-Ô-ˆÝ˜B  B˜<¨¨aÐ0Ñ0Ô0ˆàˆÝ˜˜˜B™œ   r¡¤°Ð7Ñ7Ô7Ð7åŒU�;�;�;Ø"�?�?Ø"�?�?ð#ô $ˆõ 	˜˜˜B™œÐ!9Ð!9Ð!9Ð!9°bÐ!9Ñ!9Ô!9ÀÐFÑFÔFÐFÐFÐFrk   c           
      óþ  — t           j                             d¦  «        }d}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        |                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        d	z  z   }t          |||f||¬
¦  «        }t          |||f|j        |¬
¦  «        }t          |||f|j	        |¬
¦  «        }	t           j
        g d¢g d¢g d¢f         }
t           ||
¦  «         ||
¦  «        d	 |	|
¦  «        z  z   d¬¦  «         d S )Nr�  r;   r   r©   rª   rÐ   r<   r.   r/   rS  r½  r¾  r  rs   rt   )rK   rR   r¡  r´   rž   r¢  r«   r   ró   rô   r   r   )rS   rŸ   r4   rp  rq  r  r3   r2  rµ  r¶  r•  s              rW   Útest_3D_random_complexz$TestNdBSpline.test_3D_random_complexÎ
  s  € ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�[Š[˜rœw q™y¨™{¨B¬G°A©I°a©K¸¼À¹À1¹ÐEˆ[ÑFÔFØ�[Š[˜rœw q™y¨™{¨B¬G°A©I°a©K¸¼À¹À1¹ÐEˆ[ÑFÔFÀrÑIñJˆõ ˜˜R ˜ a¨1Ð-Ñ-Ô-ˆÝ˜B  B˜<¨¬°1Ð5Ñ5Ô5ˆÝ˜B  B˜<¨¬°1Ð5Ñ5Ô5ˆåŒU�;�;�;Ø"�?�?Ø"�?�?ð#ô $ˆõ 	˜˜˜B™œØ˜˜r™
œ
 R¨¨¨r©
¬
¡]Ñ2¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@rk   Ú
cls_extrapNTÚcall_extrapc                 ój  — |                       ¦   «         \  }}}t          ||d|¬¦  «        }g d¢g d¢g d¢}	}}t          t          j        |||	f¦  «        \  }}}	d„ t          |||	¦  «        D ¦   «         }
|dz  |dz  d|z  z   z  |	dz  d|	z  z   dz   z  } ||
|¬	¦  «        }t          ||d
¬¦  «         d S )Nr;   ©r4   r€   ©éþÿÿÿr7   r©   ©r1  r  rˆ  ©r7   g      ø¿ç      @c                 ó   — g | ]}|‘ŒS r$  r$  r§  s     rW   rŽ   z?TestNdBSpline.test_extrapolate_3D_separable.<locals>.<listcomp>ë
  rù  rk   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å  s                rW   Útest_extrapolate_3D_separablez+TestNdBSpline.test_extrapolate_3D_separableá
  sä   € ð ×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b A°:Ð>Ñ>Ô>ˆð �+�+˜˜˜°°°ˆaˆ1ˆÝ•b”j 1 a¨ )Ñ,Ô,‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà��r {Ð3Ñ3Ô3ˆÝ˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3rk   rÁ   )FT)TNc                 ót  — |                       ¦   «         \  }}}|\  }}t          ||d|¬¦  «        }g d¢g d¢g d¢}
}	}t          t          j        ||	|
f¦  «        \  }}	}
d„ t          ||	|
¦  «        D ¦   «         }|dz  |	dz  d|	z  z   z  |
dz  d|
z  z   dz   z  } |||¬	¦  «        }t          ||d
¬¦  «         d S )Nr;   r  r  r  r  c                 ó   — g | ]}|‘ŒS r$  r$  r§  s     rW   rŽ   zATestNdBSpline.test_extrapolate_3D_separable_2.<locals>.<listcomp>ü
  rù  rk   r9   r.   r   rs   rt   r!  )rS   rÁ   rü  rý  r4   r  r  rþ  rw   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 1 a¨ )Ñ,Ô,‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà��r {Ð3Ñ3Ô3ˆÝ˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3rk   c                 óø  — |                       ¦   «         \  }}}t          ||d¬¦  «        }g d¢g d¢g d¢}}}t          t          j        |||f¦  «        \  }}}d„ t          |||¦  «        D ¦   «         }|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }	 ||d	¬
¦  «        }
t          j        |
d         ¦  «        sJ ‚t          j        |
d         ¦  «        sJ ‚t          |
dd…         |	dd…         d¬¦  «         d S )Nr;   rS  )r  r.   r©   )r1  rÓ   rˆ  )r7   r
  r  c                 ó   — g | ]}|‘ŒS r$  r$  r§  s     rW   rŽ   zETestNdBSpline.test_extrapolate_false_3D_separable.<locals>.<listcomp>
  rù  rk   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å  s              rW   Ú#test_extrapolate_false_3D_separablez1TestNdBSpline.test_extrapolate_false_3D_separable  s$  € à×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆð �*�*˜n˜n˜n¨n¨n¨nˆaˆ1ˆÝ•b”j 1 a¨ )Ñ,Ô,‰ˆˆ1ˆaØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆà��r uÐ-Ñ-Ô-ˆÝŒx˜˜qœ	Ñ"Ô"Ð"Ð"Ð"ÝŒx˜˜rœ
Ñ#Ô#Ð#Ð#Ð#Ý˜˜q ˜tœ f¨Q¨r¨T¤l¸Ð?Ñ?Ô?Ð?Ð?Ð?rk   c           	      óò  — |                       ¦   «         \  }}}t          ||d¬¦  «        }t          j        ddt          j        dddt          j        g¦  «        }t          j        dddt          j        dd	d	g¦  «        }t          j        d
dddt          j        ddg¦  «        }d„ t          |||¦  «        D ¦   «         }|dz  |dz  d|z  z   z  |dz  d|z  z   dz   z  }	t          j        |¦  «        t          j        |¦  «        z  t          j        |¦  «        z  }
t          j        |	|
<    ||¦  «        }t          j        ||
         ¦  «                             ¦   «         sJ ‚t          ||	d¬¦  «         d S )Nr;   rS  r  r.   r9   r©   r1  r±  rˆ  r7   r  c                 ó   — g | ]}|‘ŒS r$  r$  r§  s     rW   rŽ   z/TestNdBSpline.test_x_nan_3D.<locals>.<listcomp>  rù  rk   rs   rt   )	rõ  r   rK   rQ   rM   rû  rÌ   rË   r   )rS   rü  rý  r4   rþ  rw   r    r™  r•  r©  rÇ   rå  s               rW   Útest_x_nan_3DzTestNdBSpline.test_x_nan_3D  s]  € à×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆõ ŒJ˜˜A�rœv q¨!¨Qµ´Ð7Ñ8Ô8ˆÝŒJ˜˜C ¥B¤F¨A¨s°CÐ8Ñ9Ô9ˆÝŒJ˜˜C  A¥r¤v¨s°CÐ8Ñ9Ô9ˆØ&Ð&�˜Q  1™œÐ&Ñ&Ô&ˆØ�A‘˜˜A™  !¡™Ñ$¨¨1©¨q°©s©
°Q©Ñ7ˆÝŒx˜‰{Œ{�RœX a™[œ[Ñ(­2¬8°A©;¬;Ñ6ˆÝ”vˆˆt‰à��r‘”ˆÝŒx˜˜tœÑ%Ô%×)Ò)Ñ+Ô+Ð+Ð+Ð+Ý˜ ¨UÐ3Ñ3Ô3Ð3Ð3Ð3rk   c                 ó¨  ‡	— t           j                             d¦  «        }d\  }}t          j        |                     ddd¬¦  «        ¦  «        }t           j        |d         f|z  ||d         f|z  f         }t          j        |                     ddd¬¦  «        ¦  «        }t           j        |d         f|z  ||d         f|z  f         }|d d d…         j        j        rJ ‚|d d d…         j        j        rJ ‚|                     |j        dz  |z
  d	z
  |j        dz  |z
  d	z
  f¬
¦  «        }|j	        }|j        j        rJ ‚t           j
        g d¢g d¢f         }t          |d d d…         |d d d…         f|||f¬¦  «        }t          |d d d…         |d d d…         f|||f¬¦  «        Š	t           ||¦  «        ˆ	fd„|D ¦   «         d¬¦  «         d S )Nr�  ©r;   r;   r   r<   é   r   r7   r9   r.   rª   r½  r¾  rS  c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r$  r$  rã  s     €rW   rŽ   z7TestNdBSpline.test_non_c_contiguous.<locals>.<listcomp>;  rå  rk   rs   rt   )rK   rR   r¡  rž   r¢  r´   ÚflagsÚc_contiguousr«   rÄ  r   r   ry  r   ræ  s
            @rW   Útest_non_c_contiguousz#TestNdBSpline.test_non_c_contiguous$  s  ø€ åŒi×#Ò# EÑ*Ô*ˆØ‰ˆˆBÝŒW�S—[’[ Q¨Q°R�[Ñ8Ô8Ñ9Ô9ˆÝŒU�B�q”E�8˜B‘;  R¨¤V I¨b¡LÐ0Ô1ˆÝŒW�S—[’[ Q¨Q°R�[Ñ8Ô8Ñ9Ô9ˆÝŒU�B�q”E�8˜B‘;  R¨¤V I¨b¡LÐ0Ô1ˆà�c�c˜�c”7”=Ô-Ð-Ð-Ð-Ø�c�c˜�c”7”=Ô-Ð-Ð-Ð-à�KŠK˜bœg q™j¨2™o°Ñ1°2´7¸A±:À±?ÀQÑ3FÐGˆKÑHÔHˆØŒCˆØ”7Ô'Ð'Ð'Ð'åŒU�;�;�;Ø"�?�?ð#ô $ˆõ ˜2˜c˜c ˜cœ7 B s s¨ s¤GÐ,¨a°B¸°8Ð<Ñ<Ô<ˆÝ˜b   1 œg r¨#¨#¨A¨#¤wÐ/°°r¸2°hÐ?Ñ?Ô?ˆå˜˜˜b™	œ	Ø2Ð2Ð2Ð2¨rÐ2Ñ2Ô2¸ð	@ñ 	@ô 	@ð 	@ð 	@ð 	@rk   c                 ó  — |                       ¦   «         \  }}}t          ||d¬¦  «        }t          d¦  «        D ]}d||         j        _        Œd|j        _        t          ||d¬¦  «        } |d¦  «         |d¦  «        k    sJ ‚d S )Nr;   rS  Fr.  )rõ  r   rà   r0  Ú	writeable)rS   rü  rý  r4   rþ  r  Úbspl3_s          rW   Útest_readonlyzTestNdBSpline.test_readonly=  sœ   € Ø×%Ò%Ñ'Ô'‰	ˆˆB�Ý˜"˜b AÐ&Ñ&Ô&ˆå�q‘”ð 	*ð 	*ˆAØ$)ˆBˆqŒEŒKÔ!Ð!Ø"ˆŒÔå˜2˜r QÐ'Ñ'Ô'ˆàˆu�YÑÔ 6 6¨)Ñ#4Ô#4Ò4Ð4Ð4Ð4Ð4Ð4rk   c                 ó¸  — |                       ¦   «         \  }}}t          j        g d¢g d¢g¦  «        }t          |||¦  «                             |||¦  «        }t          j        |||||g¦  «        }|j        d         |j        d         k    sJ ‚t          |                     ¦   «         |                     ¦   «         d¬¦  «         t          t          ¦  «        5  t          j        g d¢||gdz  ¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          j        d	d
gg||gdz  ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr.  )r<   r­   r¨   r   g¼‰Ø—²Òœ<rt   r;   zData and knots*r  r.   r9   )
rõ  rK   rQ   r   r>  r®   r   r  rG   rI   )rS   rü  rý  r4   r•  ÚdmÚdm1s          rW   Útest_design_matrixz TestNdBSpline.test_design_matrixI  sÑ  € Ø×%Ò%Ñ'Ô'‰	ˆˆB�åŒZ˜˜˜ I I IÐ.Ñ/Ô/ˆÝ�r˜2˜qÑ!Ô!×/Ò/°°B¸Ñ:Ô:ˆÝÔ% b¨"¨q°!°Q¨iÑ8Ô8ˆØŒx˜Œ{˜bœh qœkÒ)Ð)Ð)Ð)Ý˜Ÿ
š
™œ c§k¢k¡m¤m¸%Ð@Ñ@Ô@Ð@å�:Ñ&Ô&ð 	:ð 	:ÝÔ# I I I¨r°A°3°q±5Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:õ �:Ð->Ð?Ñ?Ô?ð 	9ð 	9ÝÔ# a¨ V H¨b°1°#°a±%Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð 	9ð 	9s$   ÃDÄDÄ
DÄ$EÅEÅEc           
      ó¦  — t           j                             d¦  «        }d}t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t           j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }|                     |j        |z
  dz
  |j        |z
  dz
  |j        |z
  dz
  f¬¦  «        }t          |||f||¬	¦  «        }d
„ }t          d||¦  «         d S )Nr�  r;   r   r©   rª   rÐ   r<   r.   rS  c                 óR   — t           j        g d¢g d¢g d¢f         } ||¦  «         d S )Nr½  r¾  r  )rK   r   )rÀ   r2  r•  s      rW   rp  z1TestNdBSpline.test_concurrency.<locals>.worker_fnb  s:   € Ý”�{�{�{Ø&��Ø&��ð'ô (ˆBð ˆC�‰GŒGˆGˆGˆGrk   re   )	rK   rR   r¡  r´   rž   r¢  r«   r   r&   )	rS   rŸ   r4   rp  rq  r  r3   r2  rp  s	            rW   rq  zTestNdBSpline.test_concurrencyX  sK  € ÝŒi×#Ò# EÑ*Ô*ˆØˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆÝŒU�1�a˜˜A�rœw s§{¢{¸ {Ñ':Ô':Ñ;Ô;¸aÑ?ÀÀAÀqÈ!ÐKÔLˆØ�KŠK˜bœg a™i¨™k¨2¬7°1©9°Q©;¸¼À¹	À!¹ÐDˆKÑEÔEˆå˜˜R ˜ a¨1Ð-Ñ-Ô-ˆð	ð 	ð 	õ 	   I¨sÑ3Ô3Ð3Ð3Ð3rk   )r!  r"  r#  r–  rK   rœ  rž  r¬  r·  r»  rÂ  rÉ  rà  rç  rò  rõ  rÿ  r  r  r  ra   r€  r�  r"  r%  r(  r+  r2  r6  r:  rq  r$  rk   rW   r‘  r‘  }	  s  € € € € € ðBð Bð Bð, !ð ð ð ð ð  "ð &ð &ð &ð &ð*9ð *9ð *9ðX)$ð )$ð )$ðV>ð >ð >ð&$ð $ð $ð&,ð ,ð ,ð$)ð $)ð $)ðL@ð @ð @ð Gð Gð Gð( !ð ð ð ð ð&4ð 4ð 4ðQð Qð Qð0Gð Gð Gð&@ð @ð @ð& „[×Ò˜\¨D°$¨<Ñ8Ô8Ø„[×Ò˜]¨T°4¨LÑ9Ô9ð4ð 4ñ :Ô9ñ 9Ô8ð4ð „[×Ò˜X¨°|Ð'DÑEÔEð4ð 4ñ FÔEð4ð @ð @ð @ð 4ð 4ð 4ð$@ð @ð @ð2
5ð 
5ð 
5ð9ð 9ð 9ð4ð 4ð 4ð 4ð 4rk   r‘  c                   ó6  — e Zd Zd„ Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Z	d„ Z
d„ Zd	„ Zej                             d
ej        ej        g¦  «        d„ ¦   «         Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ ZdS )Ú
TestMakeNDc                 ó°  — t          j        d¦  «        }t          j        d¦  «        dz   }|d d …d f         dz  |dz  d|z  z   d d d …f         z  }d„ t          j        ||¦  «        D ¦   «         }t	          ||f|d¬¦  «        }t           ||¦  «        |                     ¦   «         d¬	¦  «         t          ||dz  d¬¦  «        }t          ||dz  d|z  z   d¬¦  «        }|j        d d …d f         |j        d d d …f         z  }t          ||j        d
d¬¦  «         ddl	m
}	  |	||f|d¬¦  «        }
t           |
|¦  «         ||¦  «        d¬	¦  «         d S )Nr¨   rÓ   r;   r9   c                 ó   — g | ]	\  }}||f‘Œ
S r$  r$  rê  s      rW   rŽ   z7TestMakeND.test_2D_separable_simple.<locals>.<listcomp>p  rë  rk   r.   rS  rZ   rt   rX  r   r[   )r   ÚlinearrÍ  rs   )rK   rO   r‡  rˆ  r'   r   Úravelr   r3   Úscipy.interpolater   )rS   rw   r    rï  r•  rƒ   rí  rî  rõ   ÚRGIrð  s              rW   Útest_2D_separable_simplez#TestMakeND.test_2D_separable_simplel  s†  € ÝŒI�a‰LŒLˆÝŒI�a‰LŒL˜3ÑˆØ�1�1�1�d�7”˜Q‘ ! Q¡$¨¨1©¡*¨d°A°A°A¨gÔ!6Ñ6ˆØ9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆå˜A˜q˜6 6¨QÐ/Ñ/Ô/ˆÝ˜˜˜R™œ &§,¢,¡.¤.°uÐ=Ñ=Ô=Ð=õ # 1 a¨¡d¨aÐ0Ñ0Ô0ˆÝ" 1 a¨¡d¨Q¨q©S¡j°AÐ6Ñ6Ô6ˆØŒW�Q�Q�Q˜�WÔ ¤¨¨a¨a¨a¨Ô 0Ñ0ˆÝ˜˜DœF¨°QÐ7Ñ7Ô7Ð7ð 	EÐDÐDÐDÐDÐDØˆc�1�a�&˜&¨Ð2Ñ2Ô2ˆÝ˜˜˜B™œ   b¡¤°Ð6Ñ6Ô6Ð6Ð6Ð6rk   c                 ó8  — t          j        d¦  «        }t          j        d¦  «        }d„ t          j        ||¦  «        D ¦   «         }|d d …d f         dz  |dz  d|z  z   d d d …f         z  }t          j        ||||f¦  «        }t          ||f|dt          j        ¬¦  «        } ||¦  «        }t          j        ||||f¦  «                             t          ¦  «        }|j
        dk    sJ ‚t          |                     ddd¦  «        |d¬	¦  «         |                     d
¦  «        }	t          ||f|	dt          j        ¬¦  «        } ||¦  «        }|j
        dk    sJ ‚t          |                     dddd¦  «        |                     d
¦  «        d¬	¦  «         d S )Nr¨   c                 ó   — g | ]	\  }}||f‘Œ
S r$  r$  rê  s      rW   rŽ   z>TestMakeND.test_2D_separable_trailing_dims.<locals>.<listcomp>„  rë  rk   r;   r9   ©r4   Úsolver)é$   r<   r<   rs   rt   r°  )rJ  r9   r9   )rK   rO   r‡  rˆ  r  r'   ÚsslÚspsolverï  ró  r®   r   r�   )
rS   rw   r    r•  rï  Úvalues4rƒ   rå  r©  Úvalues22s
             rW   Útest_2D_separable_trailing_dimsz*TestMakeND.test_2D_separable_trailing_dims€  s´  € åŒI�a‰LŒLˆÝŒI�a‰LŒLˆØ9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆð �1�1�1�d�7”˜Q‘ ! Q¡$¨¨1©¡*¨d°A°A°A¨gÔ!6Ñ6ˆÝ”)˜V V¨V°VÐ<Ñ=Ô=ˆÝ˜A˜q˜6 7¨a½¼ÐDÑDÔDˆà��b‘”ˆÝ”˜F F¨F°FÐ;Ñ<Ô<×CÒCÅEÑJÔJˆØŒ|˜wÒ&Ð&Ð&Ð&Ý˜Ÿš q¨!¨QÑ/Ô/Ø Uð	,ñ 	,ô 	,ð 	,ð —?’? <Ñ0Ô0ˆÝ˜A˜q˜6 8¨q½¼ÐEÑEÔEˆà��b‘”ˆØŒ|˜zÒ)Ð)Ð)Ð)Ý˜Ÿš q¨!¨Q°Ñ2Ô2ØŸš |Ñ4Ô4¸5ð	Bñ 	Bô 	Bð 	Bð 	Bð 	Brk   r4   )r-  rÎ  )r;   r.   )r.   r;   r  c                 ó|  — t          j        d¦  «        }t          j        d¦  «        dz   }d„ t          j        ||¦  «        D ¦   «         }|dz  d d …d f         |dz  d|z  z   d d d …f         z  }t	          ||f||t
          j        ¬¦  «        }t           ||¦  «        |                     ¦   «         d¬	¦  «         d S )
Nr¨   r©   r
  c                 ó   — g | ]	\  }}||f‘Œ
S r$  r$  rê  s      rW   rŽ   z,TestMakeND.test_2D_mixed.<locals>.<listcomp>Ÿ  rë  rk   r;   r9   rH  rZ   rt   )	rK   rO   r‡  rˆ  r'   rK  rL  r   rB  )rS   r4   rw   r    r•  rï  rƒ   s          rW   rÉ  zTestMakeND.test_2D_mixedš  s½   € õ ŒI�a‰LŒLˆÝŒI�a‰LŒL˜3ÑˆØ9Ð9¥Ô!2°1°aÑ!8Ô!8Ð9Ñ9Ô9ˆà�Q‘$˜˜˜˜4˜” A q¡D¨1¨Q©3¡J°°a°a°a°Ô#8Ñ8ˆÝ˜A˜q˜6 6¨Qµs´{ÐCÑCÔCˆÝ˜˜˜R™œ &§,¢,¡.¤.°uÐ=Ñ=Ô=Ð=Ð=Ð=rk   c                 óF  — 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 ¦  «         d S # 1 swxY w Y   d S )Nr¨   rÓ   r7   r;   r9   r.   rS  )rK   rO   rM   rG   rI   r'   )rS   rw   r    rï  s       rW   Útest_2D_nanszTestMakeND.test_2D_nans¥  sê   € ÝŒI�a‰LŒLˆÝŒI�a‰LŒL˜3ÑˆÝ”ˆˆ"‰Ø�1�1�1�d�7”˜Q‘ ! Q¡$¨¨1©¡*¨d°A°A°A¨gÔ!6Ñ6ˆå�:Ñ&Ô&ð 	-ð 	-Ý˜˜A˜ ¨!Ð,Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   Á4BÂ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   rM  )rS   rw   r    r™  s       rW   Ú_get_sample_2d_datazTestMakeND._get_sample_2d_data®  s‡   € åŒHÐ.Ð.Ð.Ñ/Ô/ˆÝŒHÐ.Ð.Ð.Ñ/Ô/ˆÝŒHà"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"Ø"Ð"Ð"ðñ	
ô 	
ˆð �!�Qˆwˆrk   c                 ó  — |                       ¦   «         \  }}}t          ||f|d¬¦  «        }t          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr.   rS  rA  rÍ  ©r.   gffffff@g333333@rÓ   çffffff
@ç333333ó?r;   ©r.   rX  rY  r@   r[  r0   r;   rs   rt   ©rU  r'   r   rK   rM  rÄ  r   ©rS   rw   r    r™  rƒ   rð  r•  s          rW   Útest_2D_vs_RGI_linearz TestMakeND.test_2D_vs_RGI_linear¾  s¤   € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨Ð*Ñ*Ô*ˆÝ% q¨! f¨a¸ÐAÑAÔAˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6rk   c                 ó"  — |                       ¦   «         \  }}}t          ||f|dt          j        ¬¦  «        }t	          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr;   rH  Úcubic_legacyrÍ  rW  rZ  rs   rt   ©	rU  r'   rK  rL  r   rK   rM  rÄ  r   r\  s          rW   Útest_2D_vs_RGI_cubiczTestMakeND.test_2D_vs_RGI_cubicÈ  s¨   € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨µ#´+Ð>Ñ>Ô>ˆÝ% q¨! f¨a¸ÐGÑGÔGˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6rk   rI  c                 ó  — |                       ¦   «         \  }}}t          ||f|d|d¬¦  «        }t          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        dd	¬
¦  «         d S )Nr;   ç�íµ ÷Æ°>)r4   rI  r]   r_  rÍ  rW  rZ  rs   r½   r[   r[  )rS   rI  rw   r    r™  rƒ   rð  r•  s           rW   Útest_2D_vs_RGI_cubic_iterativez)TestMakeND.test_2D_vs_RGI_cubic_iterativeÒ  s¬   € ð ×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨°&¸tÐDÑDÔDˆÝ% q¨! f¨a¸ÐGÑGÔGˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°¸DÐAÑAÔAÐAÐAÐArk   c                 ó"  — |                       ¦   «         \  }}}t          ||f|dt          j        ¬¦  «        }t	          ||f|d¬¦  «        }t          j        g d¢g d¢g¦  «        j        }t           ||¦  «         ||¦  «        d¬¦  «         d S )	Nr­   rH  Úquintic_legacyrÍ  rW  rZ  rs   rt   r`  r\  s          rW   Útest_2D_vs_RGI_quinticz!TestMakeND.test_2D_vs_RGI_quinticá  s©   € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaÝ˜A˜q˜6 1¨µ#´+Ð>Ñ>Ô>ˆÝ% q¨! f¨aÐ8HÐIÑIÔIˆåŒXÐ6Ð6Ð6Ø6Ð6Ð6ð8ñ 9ô 9Ü9:ð 	õ 	˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6rk   zk, meth))r.   rA  )r;   r_  )r­   rf  c                 óV  — t           j                             d¦  «        }t          j        |                     d¬¦  «        ¦  «        }t          j        |                     d¬¦  «        ¦  «        }t          j        |                     d¬¦  «        ¦  «        }|                     d¬¦  «        }t          |||f||t          j        ¬¦  «        }t          |||f||¬¦  «        }	t           j                             d	d
d¬¦  «        }
t           ||
¦  «         |	|
¦  «        d¬¦  «         d S )Ni@â r¨   rª   r©   rÐ   r)  rH  rÍ  gffffffæ?rÀ  rC   r   rs   rt   )
rK   rR   r¡  Úcumsumr¢  r'   rK  rL  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×$Ò$ VÑ,Ô,ˆÝŒI�d—l’l¨�lÑ*Ô*Ñ+Ô+ˆÝŒI�d—l’l¨�lÑ*Ô*Ñ+Ô+ˆÝŒI�d—l’l¨�lÑ*Ô*Ñ+Ô+ˆØ—’ 9�Ñ-Ô-ˆå˜A˜q !˜9 f°½#¼+ÐFÑFÔFˆÝ% q¨!¨Q i°ÀÐEÑEÔEˆåŒY×Ò 3¨S°wÐÑ?Ô?ˆÝ˜˜˜R™œ # # b¡'¤'°Ð6Ñ6Ô6Ð6Ð6Ð6rk   c                 óh  — |                       ¦   «         \  }}}ddi}t          t          d¬¦  «        5  t          ||f|fddi|¤Ž d d d ¦  «         n# 1 swxY w Y   t          t          d¬¦  «        5  t          ||ft	          j        ||f¦  «        fddi|¤Ž d d d ¦  «         d S # 1 swxY w Y   d S )NÚmaxiterr.   rI  r  r4   r;   )rU  rG   rI   r'   rK   r  )rS   rw   r    r™  Úsolver_argss        rW   Útest_solver_err_not_convergedz(TestMakeND.test_solver_err_not_convergedû  sg  € Ø×*Ò*Ñ,Ô,‰ˆˆ1ˆaØ  !�nˆÝ�:¨XÐ6Ñ6Ô6ð 	7ð 	7Ý˜˜A˜ Ð6Ð6 QÐ6¨+Ð6Ð6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ �:¨XÐ6Ñ6Ô6ð 	Gð 	GÝ˜˜A˜¥¤	¨1¨a¨&Ñ 1Ô 1ÐFÐF°QÐF¸+ÐFÐFÐFð	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gs#   ³AÁAÁAÁ3'B'Â'B+Â.B+N)r!  r"  r#  rE  rO  ra   r€  r�  rÉ  rS  rU  r]  ra  rK  ÚgmresÚgcrotmkrd  rg  rl  rp  r$  rk   rW   r>  r>  k  sA  € € € € € ð7ð 7ð 7ð(Bð Bð Bð4 „[×Ò˜SÐ"JÐ"JÐ"JÑKÔKð>ð >ñ LÔKð>ð-ð -ð -ðð ð ð 7ð 7ð 7ð7ð 7ð 7ð „[×Ò˜X¨¬	°3´;Ð'?Ñ@Ô@ðBð Bñ AÔ@ðBð7ð 7ð 7ð „[×ÒØÐNÐNÐNñô ð7ð 7ñô ð7ðGð Gð Gð Gð Grk   r>  c                   óJ   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )Ú
TestFpchecc                 ó¨  — d}t          j        d¦  «                             dd¦  «        }t          j        d¦  «        }t          j        t
          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t
          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr.   rú  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�b‰MŒM×!Ò! ! QÑ'Ô'ˆÝŒI�b‰MŒMˆåŒ]�:¨]Ð;Ñ;Ô;ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 õ Œ]�:¨]Ð;Ñ;Ô;ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   ÁA=Á=BÂBÂ#CÃCÃCc                 ó†  — d}d|dz   z  dz
  }|dz   }t          j        |¦  «        }t          j        |¦  «        }t          j        |||¦  «        dk    sJ ‚t	          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   d|dz   z  dz   }||z
  dz
  }t          j        |¦  «        }t          j        |¦  «        }t          j        |||¦  «        dk    sJ ‚t	          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr;   r9   r.   rD   re   z	Need k+1*r  )	rK   rO   ÚdfitpackÚfpchecra   r	   rI   rv  rw  )rS   r4   rU   rš  r2   rw   s         rW   Útest_condition_1zTestFpchec.test_condition_1  s¾  € àˆØ��A‘‰Y˜‰]ˆØ�‰FˆÝŒI�a‰LŒLˆÝŒI�a‰LŒLˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:¨[Ð9Ñ9Ô9ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆq�‰s‰G�a‰KˆØ�‰E�A‰IˆÝŒI�a‰LŒLˆÝŒI�a‰LŒLˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:¨[Ð9Ñ9Ô9ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   Á2BÂBÂBÄD6Ä6D:Ä=D:c                 óº  — d}dg|dz   z  dgz   dg|dz   z  z   }g d¢}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚|                     ¦   «         }|d         |d<   t          j        |||¦  «        dk    sJ ‚t          j        t          d	¬
¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|d         |d<   t          j        |||¦  «        dk    sJ ‚t          j        t          d¬
¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr;   r   r.   r9   r­   )r.   r9   r;   r<   r¦  r7   r›   zLast k knots*r  zFirst k knots*©r{  r|  rv  rw  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˜!˜Q Ñ"Ô"Ð*Ð*Ð*à�VŠV‰XŒXˆØ�A”ˆˆ2‰ÝŒ˜q " aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:¨_Ð=Ñ=Ô=ð 	!ð 	!ÝŒJ�q˜"˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð �VŠV‰XŒXˆØ�2”ˆˆ1‰ÝŒ˜q " aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:Ð-=Ð>Ñ>Ô>ð 	!ð 	!ÝŒJ�q˜"˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s$   Â(CÃCÃCÄ,EÅEÅEc                 ó¦  — d}dg|dz   z  ddgz   dg|dz   z  z   }g d¢}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚dg|dz   z  ddgz   dg|dz   z  z   }t          j        |||¦  «        dk    sJ ‚t	          j        t          d¬	¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr;   r   r.   r9   r­   ©r.   r9   r;   r±  r<   r¦  é   zInternal knots*r  )r{  r|  rv  rw  ra   r	   rI   rx  s       rW   Útest_condition_3zTestFpchec.test_condition_3>  sF  € àˆØˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆØ"Ð"Ð"ˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*àˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð->Ð?Ñ?Ô?ð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   Â"CÃC
ÃC
c                 ód  — d}dg|dz   z  dg|dz   z  z   }g d¢}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚|                     ¦   «         }|d         |d<   t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚|                     ¦   «         }|d         dz
  |d<   t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         }|d	         dz   |d	<   t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr;   r   r.   r­   rƒ  r8  zOut of bounds*r  r7   r  )rS   r4   r2   rw   rh   s        rW   Útest_condition_4zTestFpchec.test_condition_4K  sG  € ð ˆØˆC��1‘‰I˜˜˜Q˜q™S™	Ñ!ˆØ"Ð"Ð"ˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*à�VŠV‰XŒXˆØ�!”ˆˆ1‰ÝŒ˜r 1 aÑ(Ô(¨AÒ-Ð-Ð-Ð-ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*à�VŠV‰XŒXˆØ�!”�q‘ˆˆ1‰ÝŒ˜r 1 aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:Ð-=Ð>Ñ>Ô>ð 	!ð 	!ÝŒJ�r˜1˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð �VŠV‰XŒXˆØ�2”˜‘ˆˆ2‰ÝŒ˜r 1 aÑ(Ô(¨BÒ.Ð.Ð.Ð.ÝŒ]�:Ð-=Ð>Ñ>Ô>ð 	!ð 	!ÝŒJ�r˜1˜aÑ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð 	!ð 	!s$   Ã:DÄD!Ä$D!ÆF%Æ%F)Æ,F)c                 ó¸  — d}g d¢}g d¢}t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   g d¢}t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr.   )r   r   r.   r9   r9   )r¿  r¿  r¿  rq   úSchoenberg-Whitney*r  )rÓ   rÓ   rÓ   ©r{  r|  ra   r	   rI   rv  rw  rx  s       rW   Útest_condition_5_x1xmz TestFpchec.test_condition_5_x1xmj  so  € àˆØˆOˆOˆØˆOˆOˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆOˆOˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   ÁA%Á%A)Á,A)Â+CÃCÃCc                 ó‚   — d}g d¢}ddg}t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚d S )Nr.   )r   r   r.   r.   rÓ   g333333ã?r   )r{  r|  rv  rw  rx  s       rW   Útest_condition_5_k1zTestFpchec.test_condition_5_k1x  sX   € àˆØˆLˆLˆØ�#ˆJˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒ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 ¦  «         n# 1 swxY w Y   dg|dz   z  dgz   dg|dz   z  z   }dgdz  }t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )	Nr;   r   r.   r9   r­   rq   r‰  r  rŠ  rx  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ÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆC��1‘‰I˜˜‰O˜q˜c 1 Q¡3™iÑ'ˆØˆC�‰EˆÝŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s$   ÁA:Á:A>ÂA>ÃC=Ã=DÄDc                 ó–  — d}dg|dz   z  ddgz   dg|dz   z  z   }dgdz  dgz   }t          j        |||¦  «        dk    sJ ‚t          j        t          d	¬
¦  «        5  t          j        |||¦  «         d d d ¦  «         n# 1 swxY w Y   dgdz  ddgz   }t          j        |||¦  «        dk    sJ ‚t          j        |||¦  «        �J ‚d S )Nr;   r   r.   r9   r­   r¿  r<   rq   r‰  r  rŠ  rx  s       rW   Útest_condition_5_2zTestFpchec.test_condition_5_2�  s2  € àˆØˆC��1‘‰I˜˜A˜Ñ !  a¨¡c¡Ñ*ˆØˆE�!‰G�q�c‰MˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð ˆE�!‰G�q˜!�fÑˆÝŒ˜q ! QÑ'Ô'¨1Ò,Ð,Ð,Ð,ÝŒz˜!˜Q Ñ"Ô"Ð*Ð*Ð*Ð*Ð*s   ÁA?Á?BÂBc                 óæ   — d}g d¢}g d¢}t          j        |||¦  «        dk    sJ ‚t          j        t          d¬¦  «        5  t          j        |||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr.   )	r   r   r9   r;   r<   r­   r¨   r©   r©   )r.   r.   r.   çÍÌÌÌÌÌ@r“  r“  rˆ  rq   r‰  r  rŠ  rx  s       rW   Útest_condition_5_3zTestFpchec.test_condition_5_3ž  sÊ   € àˆØ'Ð'Ð'ˆØ)Ð)Ð)ˆåŒ˜q ! QÑ'Ô'¨2Ò-Ð-Ð-Ð-ÝŒ]�:Ð-BÐCÑCÔCð 	 ð 	 ÝŒJ�q˜!˜QÑÔÐð	 ð 	 ð 	 ñ 	 ô 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 øøøð 	 ð 	 ð 	 ð 	 ð 	 ð 	 s   ÁA&Á&A*Á-A*N)r!  r"  r#  ry  r}  r�  r…  r‡  r‹  r�  r�  r‘  r”  r$  rk   rW   rt  rt    sª   € € € € € ð	 ð 	 ð 	 ð ð  ð  ð*!ð !ð !ð, ð  ð  ð!ð !ð !ð> ð  ð  ð+ð +ð +ð ð  ð  ð+ð +ð +ð ð  ð  ð  ð  rk   rt  c                 óà  ‡‡— t          j        | ||| …         ¦  «        Šˆˆfd„t          t          ‰¦  «        dz
  ¦  «        D ¦   «         }‰‰dd…                  }t          t          |¦  «        ¦  «        D ]0}||         dz  }||xx         |z  cc<   ||dz   xx         |z  cc<   Œ1|dxx         ‰d         z  cc<   t	          t          |¦  «        t          ‰¦  «        d¬¦  «         |‰fS )z)Split the knot interval into "runs".
    c                 óf   •— g | ]-}‰‰|         ‰|d z            …                               ¦   «         ‘Œ.S r„  )rÔ  )r�   r  rm  Ú	residualss     €€rW   rŽ   z_split.<locals>.<listcomp>°  s:   ø€ ÐGÐGÐG°ˆi˜˜1œ˜b  1¡œg˜Ô&×*Ò*Ñ,Ô,ÐGÐGÐGrk   r.   r7   r9   rZ   rt   )rK   rÓ  rà   r=  r   rÔ  )	rw   r2   r4   r—  ÚfpartsÚcarriesr  Úcarryrm  s	      `    @rW   Ú_splitr›  «  s  øø€ õ 
Œ˜˜A˜a  ˜dœGÑ	$Ô	$€BàGÐGÐGÐGÐGµe½CÀ¹G¼GÀA¹IÑ6FÔ6FÐGÑGÔG€FØ˜˜1˜R˜4œÔ!€Gå•3�w‘<”<Ñ Ô ð ð ˆØ˜”
˜Q‘ˆØˆqˆ	ˆ	Œ	�UÑˆ	ˆ	‰	Øˆq�‰sˆˆŒ�uÑˆˆ‰ˆà
ˆ2€J€J„J�)˜B”-Ñ€J€J�Jå•C˜‘K”K¥ Y¡¤°eÐ<Ñ<Ô<Ð<à�2ˆ:Ðrk   c                 ó´  — t          | |||¦  «        \  }}d}d}t          t          |¦  «        ¦  «        D ]0}||dz            ||         z
  dk    r||         |k    r
|}||         }Œ1|dk    rt          d¦  «        ‚||         ||dz            z   dz   dz  }	| |	         }
t	          j        ||
¦  «        }t          j        |d|…         |
||d…         f         }|S )z Insert a new knot given reduals.i›ÿÿÿg}Ã”%­I²Ôr.   z5Internal error, please report it to SciPy developers.r9   N)r›  rà   r=  rI   rK   rÓ  r´   )rw   r2   r4   r—  r˜  rm  Úidx_maxÚ	fpart_maxr  Úidx_newknotÚnew_knotÚidx_tÚt_news                rW   Ú	_add_knotr£  ¿  sö   € å˜˜1˜a Ñ+Ô+�J€FˆBð €GØ€IÝ•3�v‘;”;ÑÔð "ð "ˆØˆa�‰cŒ7�R˜”U‰?˜QÒÐ 6¨!¤9¨yÒ#8Ð#8ØˆGØ˜qœ	ˆIøà�$‚€ÝÐPÑQÔQÐQð �g”;  G¨A¡I¤Ñ.°Ñ2°qÑ8€KØ�Œ~€HÝŒO˜A˜xÑ(Ô(€EÝŒE�!�F�U�F”)˜X q¨¨¨¤yÐ0Ô1€EØ€Lrk   c                   ó(  — e Zd Zd„ Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zej                             dg d¢¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Zd„ Zd„ ZdS )ÚTestGenerateKnotsc                 ó2  — t          j        dt          ¬¦  «        }|dz  dd|z   z  z   }d}t          j        dg|dz   z  dg|dz   z  z   ¦  «        }t	          ||||¬¦  «        } ||¦  «        |z
  d	z  }d
dlm} |                     ||||¦  «        }t          ||||¦  «        }	t          ||	d¬¦  «         t	          ||||¬¦  «        }
 |
|¦  «        |z
  d	z  }|                     ||||¦  «        }t          ||||¦  «        }t          ||d¬¦  «         d S )NrÐ   rE   r;   r0   r.   r=   r‰  )r4   r2   r9   r   ©Ú_fitpack_reprorZ   rt   )
rK   rO   ró  rM  r   rC  r¨  Úadd_knotr£  r   )rS   rw   r    r4   r2   r2  r—  Ú_frÚnew_tÚnew_t_pyÚspl2Ú
residuals2Únew_t2Ú	new_t2_pys                 rW   Útest_split_add_knotz%TestGenerateKnots.test_split_add_knotØ  sH  € åŒI�a�uÐ%Ñ%Ô%ˆØˆq‰D�2�q˜1‘u‘:ÑˆØˆÝŒH�b�T˜1˜Q™3‘Z 2 $¨¨!©¡*Ñ,Ñ-Ô-ˆÝ˜a  a¨1Ð-Ñ-Ô-ˆØ�S˜‘V”V˜a‘Z !‘Oˆ	à;Ð;Ð;Ð;Ð;Ð;Ø—’˜Q  1 iÑ0Ô0ˆÝ˜Q  1 iÑ0Ô0ˆå˜˜x¨eÐ4Ñ4Ô4Ð4õ ˜q ! q¨EÐ2Ñ2Ô2ˆØ�d˜1‘g”g ‘k AÑ%ˆ
à—’˜a ¨¨:Ñ6Ô6ˆÝ˜a ¨¨:Ñ6Ô6ˆ	å˜ 	°Ð6Ñ6Ô6Ð6Ð6Ð6rk   r4   rÅ  c                 óX  — |                      d|j        ¬¦  «        }|                     ||j        z  dz  ¦  «        }t	          t          |||d¬¦  «        ¦  «        d         }t          |||d¬¦  «        d         }|                     ||j        ¬¦  «        }t          ||d¬¦  «         d S )NrÐ   rE   r   ©r4   rÚ  r7   rZ   rt   )	rO   rP   r‹  r²  rž  r"   r   rQ   r   )rS   r4   rT   rw   r    r2   r€  s          rW   Útest_s0zTestGenerateKnots.test_s0ð  s¤   € à�IŠI�a˜rœzˆIÑ*Ô*ˆØ�FŠF�1�R”U‘7˜1‘9ÑÔˆÝ•  1¨¨QÐ/Ñ/Ô/Ñ0Ô0°Ô4ˆå�A�q˜A Ð#Ñ#Ô# AÔ&ˆØ�ZŠZ˜ "¤*ˆZÑ-Ô-ˆÝ˜˜2 EÐ*Ñ*Ô*Ð*Ð*Ð*rk   c                 ó&  — d}|                      ||j        ¬¦  «        }|dz  }t          t          ||dd¬¦  «        ¦  «        }|                     t          t          j        |¦  «        d¦  «        ¦  «        }t          |d         |d¬¦  «         d S )	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ú  s‡   € àˆØ�IŠI�a˜rœzˆIÑ*Ô*ˆØˆq‰DˆÝ•^ A q¨A°Ð3Ñ3Ô3Ñ4Ô4ˆØ—:’:�k­"¬*°Q©-¬-¸Ñ;Ô;Ñ<Ô<ˆÝ˜˜bœ	 8°%Ð8Ñ8Ô8Ð8Ð8Ð8rk   c                 ó  — d}|                      |¦  «        }|dz  }t          t          ||dd¬¦  «        ¦  «        }|                     t	          t          j        |¦  «        d¦  «        ¦  «        }t          |d         |d¬¦  «         d S )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ŒLˆØˆq‰DˆÝ•^ A q¨A°Ð3Ñ3Ô3Ñ4Ô4ˆØ—:’:�k­"¬*°Q©-¬-¸Ñ;Ô;Ñ<Ô<ˆÝ˜˜bœ	 8°%Ð8Ñ8Ô8Ð8Ð8Ð8rk   c           
      óÔ   — t          j        d¦  «        }|dz  }t          t          ¦  «        5  t	          t          ||ddd¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nre   r;   r   ©r4   rÚ  Únest)rK   rO   rG   rI   rž  r"   ©rS   rw   r    s      rW   Útest_s0_nestzTestGenerateKnots.test_s0_nest  s«   € åŒI�b‰MŒMˆØˆq‰DˆÝ�:Ñ&Ô&ð 	:ð 	:Ý•  1¨¨Q°RÐ8Ñ8Ô8Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ®"AÁA!Á$A!c                 ó$  ‡— ‰                      d‰j        ¬¦  «        }‰                     |t          j        z  dz  ¦  «        }d}t          t          |||d¬¦  «        ¦  «        }g d¢g d¢g d¢g d	¢g d
¢g}ˆfd„|D ¦   «         }t          |¦  «        t          |¦  «        k    sJ ‚t          ||¦  «        D ]\  }}t          ||d¬¦  «         Œt          |||d¬¦  «        \  }}	}	t          |d         ‰                     |¦  «        d¬¦  «         dS )aY  
        To generate the `wanted` list below apply the following diff and rerun
        the test. The stdout will contain successive iterations of the `t`
        array.

$ git diff scipy/interpolate/fitpack/fpcurf.f
diff --git a/scipy/interpolate/fitpack/fpcurf.f b/scipy/interpolate/fitpack/fpcurf.f
index 1afb1900f1..d817e51ad8 100644
--- a/scipy/interpolate/fitpack/fpcurf.f
+++ b/scipy/interpolate/fitpack/fpcurf.f
@@ -216,6 +216,9 @@ c  t(j+k) <= x(i) <= t(j+k+1) and store it in fpint(j),j=1,2,...nrint.
         do 190 l=1,nplus
 c  add a new knot.
           call fpknot(x,m,t,n,fpint,nrdata,nrint,nest,1)
+          print*, l, nest, ': ', t
+          print*, "n, nmax = ", n, nmax
+
 c  if n=nmax we locate the knots as for interpolation.
           if(n.eq.nmax) go to 10
 c  test whether we cannot further increase the number of knots.
        rÐ   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@   r[  r©   r‰  r‰  r‰  c                 óH   •— g | ]}‰                      |‰j        ¬ ¦  «        ‘ŒS )rE   )rQ   rP   )r�   ÚwantrT   s     €rW   rŽ   z3TestGenerateKnots.test_s_switch.<locals>.<listcomp>4  s+   ø€ ÐHÐHÐH¸�"—*’*˜T¨¬�*Ñ4Ô4ÐHÐHÐHrk   rZ   rt   r7   N)rO   rP   r‹  rK   r²  rž  r"   r=  rû  r   r   rQ   )
rS   rT   rw   r    r4   r·  Úwantedr2   r€  rÀ   s
    `        rW   Útest_s_switchzTestGenerateKnots.test_s_switch  sC  ø€ ð. �IŠI�a˜rœzˆIÑ*Ô*ˆØ�FŠF�1•R”U‘7˜1‘9ÑÔˆØˆå•^ A q¨A°Ð6Ñ6Ô6Ñ7Ô7ˆØ2Ð2Ð2Ø6Ð6Ð6Ø:Ð:Ð:Ø>Ð>Ð>ØAÐAÐAð	
ˆð IÐHÐHÐHÀÐHÑHÔHˆå�5‰zŒz�S ™[œ[Ò(Ð(Ð(Ð(Ý˜ Ñ'Ô'ð 	/ð 	/‰EˆAˆrÝ˜A˜r¨Ð.Ñ.Ô.Ð.Ð.õ ˜˜A  dÐ+Ñ+Ô+‰ˆˆ1ˆaÝ˜˜bœ	 2§:¢:¨a¡=¤=°uÐ=Ñ=Ô=Ð=Ð=Ð=rk   c                 ó‚   — t          t          d¦  «        ¦  «        }t          ||dd¬¦  «        }t          |¦  «         d S )NrÐ   r¥  r.   )rÚ  r4   )rž  rà   r"   Únext)rS   rw   Úgens      rW   rŸ  z!TestGenerateKnots.test_list_input>  s8   € å•�q‘”‰NŒNˆÝ˜Q  S¨AÐ.Ñ.Ô.ˆÝˆS‰	Œ	ˆ	ˆ	ˆ	rk   c           	      óÆ  — |                      d|j        ¬¦  «        }|                     ||j        z  dz  ¦  «        }d}t	          t          ||d|d¬¦  «        ¦  «        }t          |d         |                     g d¢|j        ¬¦  «        d	¬
¦  «         t          t          ¦  «        5  t	          t          ||dd¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )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ˆIÑ*Ô*ˆØ�FŠF�1�R”U‘7˜1‘9ÑÔˆØˆå•^ A q¨A°¸Ð<Ñ<Ô<Ñ=Ô=ˆÝØ�"ŒIØ�JŠJÐ?Ð?Ð?ÀrÄzˆJÑRÔRØð	
ñ 	
ô 	
ð 	
õ �:Ñ&Ô&ð 	4ð 	4å•  1¨°Ð2Ñ2Ô2Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Â(!CÃCÃCc           
      óî  — t          j        d¦  «        }t          j        |t           j        z  dz  ¦  «        }t	          t
          ¦  «        5  t          t          ||t          j        d¦  «        ¬¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t
          ¦  «        5  t          t          ||t          j        d¦  «         ¬¦  «        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrÐ   rD   ©rÖ  )	rK   rO   r‹  r²  rG   rI   rž  r"   r¼  r¾  s      rW   rØ  zTestGenerateKnots.test_weightsU  sK  € ÝŒI�a‰LŒLˆÝŒF�1•R”U‘7˜1‘9ÑÔˆå�:Ñ&Ô&ð 	8ð 	8Ý•  1­¬	°"©¬Ð6Ñ6Ô6Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8õ �:Ñ&Ô&ð 	6ð 	6Ý•  1­¬°©¬¨Ð4Ñ4Ô4Ñ5Ô5Ð5ð	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s$   Á2BÂBÂBÂ*3C*Ã*C.Ã1C.Únpts)r„  rq   r£   rÚ  )r¥  ç{®Gáz„?r   c                 óÀ  — t           j                             d¦  «        }dt          j        |                     |¬¦  «        ¦  «        z  }t          j        |t           j        z  dz  ¦  «        t          j        |dz
  dz   ¦  «        z   }d}t          ||||¬¦  «        d         }t          t          ||||¬¦  «        ¦  «        d	         }t          ||d
¬¦  «         d S )Nr�  re   rª   r¨   r9   r;   r³  r   r7   rZ   rt   )rK   rR   r�   rž   r¢  r‹  r²  Úexpr   rž  r"   r   )	rS   rÚ  rÍ  rk  rw   r    r4   r2   r€  s	            rW   Útest_vs_splrepz TestGenerateKnots.test_vs_splrep_  sË   € õ Œy×$Ò$ UÑ+Ô+ˆØ�rŒw�t—|’|¨�|Ñ.Ô.Ñ/Ô/Ñ/ˆÝŒF�1•R”U‘7˜2‘:ÑÔ¥¤¨!¨A©#°©¨	Ñ!2Ô!2Ñ2ˆàˆÝ�1�a˜1 Ð"Ñ"Ô" 1Ô%ˆÝ•.  A¨¨aÐ0Ñ0Ô0Ñ1Ô1°"Ô5ˆå˜˜A EÐ*Ñ*Ô*Ð*Ð*Ð*rk   c                 óf  — d}t          j        |¦  «        }|dz  }t          t          ||dd¬¦  «        ¦  «        }t	          j        t          ¦  «        5 }t          ||dd¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |¦  «        dk    sJ ‚t          |d         |d         ¦  «         d S )Né   r;   ç¸ÔJzî�5r³  r.   r7   r   )
rK   rO   rž  r"   ra   ÚwarnsÚRuntimeWarningr   r=  r   )rS   rU   rw   r    r·  rˆ  r`   s          rW   Útest_s_too_smallz"TestGenerateKnots.test_s_too_smallr  sæ   € ØˆÝŒI�a‰LŒLˆØˆq‰Dˆõ •^ A q¨A°Ð7Ñ7Ô7Ñ8Ô8ˆåŒ\�.Ñ)Ô)ð 	-¨QÝ˜˜A  eÐ,Ñ,Ô,ˆCð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-å�1‰vŒv˜Š{ˆ{ˆ{ˆ{Ý˜˜bœ	 3 q¤6Ñ*Ô*Ð*Ð*Ð*s   ÁA5Á5A9Á<A9c                 ó¾   — t          g d¢g d¢g d¢d¬¦  «        }t          j        t          d¬¦  «        5  t	          |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)r=   r0   r>   r?   )r@   r[  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  s©   € å˜]˜]˜]¨M¨M¨M¸]¸]¸]ÈaÐPÑPÔPˆÝŒ]�:Ð-?Ð@Ñ@Ô@ð 	ð 	Ý�‰IŒIˆIð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   µAÁAÁAN)r!  r"  r#  r±  ra   r€  r�  r´  r¸  rº  r¿  rÅ  rŸ  rÊ  rØ  rÑ  r×  rÙ  r$  rk   rW   r¥  r¥  Ö  s0  € € € € € ð7ð 7ð 7ð0 „[×Ò˜S / / /Ñ2Ô2ð+ð +ñ 3Ô2ð+ð9ð 9ð 9ð9ð 9ð 9ð:ð :ð :ð*>ð *>ð *>ðXð ð ð4ð 4ð 4ð"6ð 6ð 6ð „[×Ò˜V ] ] ]Ñ3Ô3Ø„[×Ò˜S . . .Ñ1Ô1ð+ð +ñ 2Ô1ñ 4Ô3ð+ð"+ð +ð +ðð ð ð ð rk   r¥  c                 óˆ  — | j         d         }| ||z
  dz
           | |         z
  }|d|z  z
  dz
  }| |dz   ||z
  dz
  …         }t          j        |d¦  «        }|ddd…xx         dz  cc<   |ddd…xx         dz  cc<    t          | t          j        ||z
  dz
  ¦  «        |¦  «        ||¬¦  «        }t          j        |dz
  |j         d         ft          ¬¦  «        }t          d|j         d         d¦  «        D ](}	||	dd…f         ||	dz   dd…f         z
  ||	dz  dd…f<   Œ)|||z  |z  t          j	        |¦  «        z  z  }|S )z­Straitforward way to compute the discontinuity matrix. For testing ONLY.

    This routine returns a dense matrix, while `_fitpack_repro.disc` returns
    a packed one.
    r   r.   r9   Nr»   rÞ   rE   )
r®   rK   r  r
   r<  Úemptyró  rà   r  Ú	factorial)
r2   r4   rU   ÚdeltaÚnrintr€  Útiirš  Úmatrr  s
             rW   Ú
disc_naiverá  †  sq  € ð 	
Œ�Œ
€Aàˆa�!‰e�a‰iŒL˜1˜Qœ4Ñ€EØ��!‘‰G�a‰K€Eà	
ˆ1ˆQ‰3ˆq�‰s�1‰uˆ9Œ€BÝ
Œ)�B˜Ñ
Ô
€CØˆˆˆ!ˆ€H€H„H�Ñ€H€H�HØˆˆˆ1ˆ€I€I„I�Ñ€I€I�IØ(��•2”6˜!˜a™% !™)Ñ$Ô$ aÑ(Ô(¨°Ð3Ñ3Ô3€AåŒ8�U˜1‘W˜aœg aœjÐ)µÐ7Ñ7Ô7€DÝ�1�a”g˜a”j !Ñ$Ô$ð ,ð ,ˆØ˜!˜Q˜Q˜Q˜$œ ! A a¡C¨¨¨ F¤)Ñ+ˆˆQ�‰T�1�1�1ˆW‰ˆàˆU�5‰[˜1Ñ�tœ~¨aÑ0Ô0Ñ0Ñ0€DØ€Krk   c                   ó    — e Zd ZdZdd„Zd„ ZdS )ÚF_densezm The r.h.s. of ``f(p) = s``, an analog of _fitpack_repro.F
    Uses full matrices, so is for tests only.
    NTc                 óŽ  — || _         || _        || _        || _        |€t	          j        |t          ¬¦  «        n|| _        || _        | j        j	        dk    sJ ‚ t          |t	          j        |j        d         |z
  dz
  ¦  «        ||¬¦  «        |¦  «        }|| j        d d …d f         z  | _        ddlm}	 t!          |	                     ||¦  «        Ž                      ¦   «         | _        |j	        dk    sJ ‚|| j        z  }
t          j        |
t	          j        | j        j        d         ¦  «        f         | _        || _        d S )NrE   r.   r   r   r§  )rw   r    r2   r4   rK   rn   ró  rÖ  r€   r  r
   r<  r®   Úa_denserC  r¨  r  Údiscr  Úb_denser´   r/  rÍ   rÚ  )rS   rw   r    r2   r4   rÚ  rÖ  r€   rå  rª  rÍ   s              rW   r
  zF_dense.__init__£  s5  € ØˆŒØˆŒØˆŒØˆŒØ12°•”˜a¥uÐ-Ñ-Ô-Ð-ÀˆŒØ&ˆÔØŒvŒ{˜aÒÐÐÐð U•'˜!�RœV A¤G¨A¤J°¡N°QÑ$6Ñ7Ô7¸ÈÐTÑTÔTÐUVÑWÔWˆØ ¤¨¨¨¨4¨¤Ñ0ˆŒà;Ð;Ð;Ð;Ð;Ð;Ý# S§X¢X¨a°¡^¤^Ð4×<Ò<Ñ>Ô>ˆŒð Œv˜Š{ˆ{ˆ{ˆ{Ø�”‰ZˆÝ”%˜�BœH T¤\Ô%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)rt  r.   r   r9   )rK   Úvstackrå  rç  Úscipy.linalgrÉ  r·  rÄ  rÍ   r®   r
   r2   r4   r€   rÔ  rÖ  rw   r    r2  rÚ  )rS   r  ÚabrÉ  r·  r2  rˆ  Úqyr	  r3   r2  Úfps               rW   rŽ  zF_dense.__call__º  sò   € ÝŒY˜œ d¤l°QÑ&6Ð7Ñ8Ô8ˆð 	+Ð*Ð*Ð*Ð*Ð*Ð*Ð*Øˆr�"˜:Ð&Ñ&Ô&‰ˆˆ1àŒS�4”7‰]ˆàŒW�QŒZˆØˆE�!�C�R�C˜˜"˜�H”+˜r # 2 #œwÑ'Ô'ˆå�d”f˜a ¤°TÔ5EÐFÑFÔFˆÝŒV�D”F˜A‘I   T¤V¡¤¨t¬vÑ!5¸Ñ 9Ñ9Ñ:Ô:ˆàˆŒà�D”F‰{Ðrk   )NT)r!  r"  r#  r  r
  rŽ  r$  rk   rW   rã  rã  Ÿ  sA   € € € € € ðð ðð ð ð ð.ð ð ð ð rk   rã  c                   óÖ  — e Zd ZdZefd„Zd„ Zd„ Zej	         
                    dg d¢¦  «        d„ ¦   «         Zd„ Zej	         
                    dg d¢¦  «        d	„ ¦   «         Zej	        j        d
„ ¦   «         Zej	         
                    dg d¢¦  «        d„ ¦   «         Zd„ Zej	         
                    dddg¦  «        ej	         
                    dg d¢¦  «        d„ ¦   «         ¦   «         Zej	         
                    dddg¦  «        d„ ¦   «         Zej	         
                    dddg¦  «        ej	         
                    dg d¢¦  «        d„ ¦   «         ¦   «         Zej	         
                    dg d¢¦  «        ej	         
                    dg d¢¦  «        d„ ¦   «         ¦   «         Zej	         
                    dg d¢¦  «        ej	         
                    dg d¢¦  «        d„ ¦   «         ¦   «         ZdS )Ú_TestMakeSplrepBaseNc                 ó  — | j         dk    r@|                     ddt          j        z  d¦  «        }|                     |¦  «        }d}|||fS |                     ddd¦  «        }|                     |dz  dz  ¦  «        dz  }d}|||fS )	NrÑ   r   r9   re   g€Ÿqá@H&?r­   rD   g…ëQ¸	@)r:  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 ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ddd| j        ¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          j        |j        dddf¦  «        }t	          ||d| j        ¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          t          ¦  «        5  t	          ||d
z  |d| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «         }t          t          ¦  «        5  t	          ||d
z  |d| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |j        d         df¦  «        }t          t          ¦  «        5  t	          ||d
z  |d| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          |d d d…         |d
z  d| j        ¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d
z  dd| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d
z  d| j        ¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d
z  d
dd| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          ||d
z  dd| j        ¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t	          t          j
        d¦  «        t          j
        d¦  «        d| j        ¬	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   re   rD   rú  r^  r.   r9   r¥  ©rÚ  r:  r;   )rÖ  rÚ  r:  r7   rB   ©r4   rÚ  r:  )r4   r½  rÚ  r:  )rÚ  r½  r:  rÐ   é	   )rK   rf   rG   rI   r#   r:  r¼  r«   r®   rH   rO   ©rS   rw   r    rÖ  s       rW   Útest_input_errorsz%_TestMakeSplrepBase.test_input_errorsà  s=  € ÝŒK˜˜2˜rÑ"Ô"ˆÝŒK˜˜2˜rÑ"Ô"ˆÝ�:Ñ&Ô&ð 	4ð 	4å˜˜1 d¤lÐ3Ñ3Ô3Ð3ð	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4õ �:Ñ&Ô&ð 	;ð 	;å˜˜1 ¨T¬\Ð:Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;õ �:Ñ&Ô&ð 	;ð 	;å”˜œ  A qÐ)Ñ*Ô*ˆAÝ˜˜1 ¨T¬\Ð:Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;õ
 ŒG�B‰KŒKˆÝ�:Ñ&Ô&ð 	Cð 	Cå˜˜1˜a™4 1¨°T´\ÐBÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cõ ŒW�R‰[Œ[ˆLˆÝ�:Ñ&Ô&ð 	Cð 	Cå˜˜1˜a™4 1¨°T´\ÐBÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cõ ŒG�Q”W˜Q”Z �OÑ$Ô$ˆÝ�:Ñ&Ô&ð 	Cð 	Cå˜˜1˜a™4 1¨°T´\ÐBÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cõ �:Ñ&Ô&ð 	Dð 	Då˜˜$˜$˜B˜$œ  A¡¨°d´lÐCÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ �9Ñ%Ô%ð 	Eð 	Eå˜˜1˜a™4 3¨#°t´|ÐDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eõ �:Ñ&Ô&ð 	=ð 	=å˜˜1˜a™4 2¨t¬|Ð<Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=õ �:Ñ&Ô&ð 	Kð 	Kå˜˜1˜a™4 1¨1°¸T¼\ÐJÑJÔJÐJð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kõ �:Ñ&Ô&ð 	Eð 	Eå˜˜1˜a™4 1¨2°t´|ÐDÑDÔDÐDð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eõ �:Ñ&Ô&ð 	Qð 	Qå�œ	 !™œ¥b¤i°¡l¤l°cÀ4Ä<ÐPÑPÔPÐPð	Qð 	Qð 	Qñ 	Qô 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qøøøð 	Qð 	Qð 	Qð 	Qð 	Qð 	QsØ   ÁA%Á%A)Á,A)ÂB)Â)B-Â0B-Ã6D
Ä
DÄDÄ=E&Å&E*Å-E*ÆGÇGÇ
GÈH,È,H0È3H0É%I<É<J ÊJ ÊKËKËKË#LÌLÌLÌ*MÍMÍMÍ3NÎN Î#N Î;=PÐP	ÐP	c           	      óX  — t          t          ||||| j        ¬¦  «        ¦  «        d         }t          ||||| j        ¬¦  «        }t          |||||| j        ¬¦  «        }t	          |j        |j        d¬¦  «         t	          |j        |j        d¬¦  «         |j        |j        k    sJ ‚d S )Nrõ  r7   )r2   r4   rÚ  r:  rZ   rt   )rž  r"   r:  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ÑEÔEÑFÔFÀrÔJˆå˜q ! q¨A°t´|ÐDÑDÔDˆÝ˜A˜q A¨¨a¸¼ÐFÑFÔFˆå˜œ
 E¤G°%Ð8Ñ8Ô8Ð8Ý˜œ
 E¤G°%Ð8Ñ8Ô8Ð8ØŒz˜UœWÒ$Ð$Ð$Ð$Ð$Ð$rk   r4   ©r.   r9   r;   r<   r­   r¨   c                 óf   — |                       ¦   «         \  }}}|                      ||||¦  «         d S rÑ  )rò  rü  )rS   r4   rw   r    rÚ  s        rW   Útest_with_knotsz#_TestMakeSplrepBase.test_with_knots!  s7   € à—.’.Ñ"Ô"‰ˆˆ1ˆaà×Ò˜a  A qÑ)Ô)Ð)Ð)Ð)rk   c                 óP  — t          |||| j        ¬¦  «        }t          |||| j        ¬¦  «        }t          t	          |||| j        ¬¦  «        ¦  «        d         }t          |j        |j        d¬¦  «         t          |j        |d¬¦  «         t          |j        |d¬¦  «         d S )Nr9  r7   rZ   rt   )r#   r:  r   rž  r"   r   r3   r2   )rS   rw   r    r4   r2  Úspl_ir2   s          rW   Ú_test_default_sz#_TestMakeSplrepBase._test_default_s'  s¤   € Ý˜!˜Q !¨T¬\Ð:Ñ:Ô:ˆÝ" 1 a¨1°d´lÐCÑCÔCˆÝ•  1¨°4´<Ð@Ñ@Ô@ÑAÔAÀ"ÔEˆå˜œ˜uœw¨UÐ3Ñ3Ô3Ð3Ý˜œ˜q uÐ-Ñ-Ô-Ð-Ý˜œ ¨Ð/Ñ/Ô/Ð/Ð/Ð/rk   c                 ód   — |                       ¦   «         \  }}}|                      |||¦  «         d S rÑ  )rò  r  )rS   r4   rw   r    rÀ   s        rW   Útest_default_sz"_TestMakeSplrepBase.test_default_s0  s5   € à—.’.Ñ"Ô"‰ˆˆ1ˆaØ×Ò˜Q  1Ñ%Ô%Ð%Ð%Ð%rk   c           	      óî  — d}| j         dk    r8t          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 ¦  «         n# 1 swxY w Y   t          j        ¦   «         5  t          j        dt          ¦  «         t          ||d|| j         ¬	¦  «        }d d d ¦  «         n# 1 swxY w Y   t          |j        |d         ¦  «         t          t          j        |j        dg|j        d
z   z  f         |d
         d¬¦  «         d S )Ng ÂëþKH´9rÑ   r   r9   rÓ  r;   r5   ©r4   rÚ  r«  rõ  r.   r+  rt   )r:  rK   rf   r²  r‹  rO   ÚwarningsÚcatch_warningsÚsimplefilterrÖ  r   r#   r   r2   r´   r3   r4   )rS   rÚ  rw   r    r`   r2  s         rW   r×  z$_TestMakeSplrepBase.test_s_too_small5  s  € ð ˆØŒ<˜:Ò%Ð%Ý”˜A˜q¥¤™w¨Ñ+Ô+ˆAÝ”�q‘	”	ˆAˆAå”	˜"‘”ˆAØ�1‘ˆAåÔ$Ñ&Ô&ð 	Kð 	KÝÔ!ØÝñô ð õ ˜˜A  a¨d¬l¸jÒ.HÐJÑJÔJˆCð	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kõ Ô$Ñ&Ô&ð 	Dð 	DÝÔ!ØÝñô ð õ ˜a  a¨1°d´lÐCÑCÔCˆCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dõ 	˜œ˜s 1œvÑ&Ô&Ð&Ý�œ˜cœe a S¨#¬%°©'¡]Ð2Ô3Ø˜Aœ Uð	,ñ 	,ô 	,ð 	,ð 	,ð 	,s$   Á28B6Â6B:Â=B:Ã4DÄDÄDr.  c                 óÔ  — d}| j         dk    r8t          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 ‚d S )
Nre   rÑ   r   r9   r;   r9  çñhãˆµøä>rõ  r.   )	r:  rK   rf   r²  r�  rO   r#   r3   r  )rS   r4   rU   rw   r    r2  r’  r  s           rW   Ú
test_shapez_TestMakeSplrepBase.test_shapeR  sï   € ð ˆØŒ<˜:Ò%Ð%Ý”˜A˜q¥¤™w¨Ñ*Ô*ˆAÝ”�q‘	”	ˆAˆAå”	˜!‘”ˆAØ�1‘ˆAå˜!˜Q !¨T¬\Ð:Ñ:Ô:ˆÝ˜A˜q A¨°t´|ÐDÑDÔDˆàŒuŒz˜QŠˆˆˆØŒwŒ|˜qÒ Ð Ð Ð õ ˜A˜q 1 a¨¡c¡7™{¨a°4ÀÄÐNÑNÔNˆØŒ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 ¦  «         d S # 1 swxY w Y   d S )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‘'ˆ1ˆÝŒK˜˜1˜a !™eÑ$Ô$ˆÝŒF�1‰IŒIˆå�:Ñ&Ô&ð 	:ð 	:Ý˜˜1 ¨jÐ9Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	:ð 	:s   ÁA6Á6A:Á=A:r:  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¬
¦  «         d S )Nr   r9   re   r.   r­   r  rÑ   ©rÖ  r4   rÚ  r«  ©rÖ  rÚ  r4   r:  rt   )rK   rf   r²  r‹  r=  r   r#   r   r2   r´   r3   r4   )rS   r:  r4   rw   r    rÖ  r`   r2  s           rW   Ú%test_make_splrep_with_unequal_weightsz9_TestMakeSplrepBase.test_make_splrep_with_unequal_weightsp  sØ   € õ ŒK˜˜1�RœU™7 BÑ'Ô'ˆÝŒF�1‰IŒIˆåŒK˜˜1�c !™fœfÑ%Ô%ˆå�Q˜˜Q ! t°'¸ZÒ2GÐIÑIÔIˆÝ˜!˜Q ! t¨q¸'ÐBÑBÔBˆå˜œ˜s 1œvÑ&Ô&Ð&Ý�œ˜cœ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|¬¦  «        } |||
¦  «         d S )Nc                 ó²   — t          | j        |d         ¦  «         t          t          j        | j        dg| j        dz   z  f         |d         d¬¦  «         d S )Nr   r.   r  rt   )r   r2   rK   r´   r3   r4   )r2  r`   s     rW   ÚcheckzO_TestMakeSplrepBase.test_make_splrep_with_non_c_contiguous_input.<locals>.check…  s^   € Ý˜CœE 3 q¤6Ñ*Ô*Ð*Ý�BœE #¤%¨!¨¨c¬e°A©g©Ð"6Ô7Ø œF¨ð/ñ /ô /ð /ð /ð /rk   r   r9   re   Fr.   r­   r;   r  rÑ   r  r  )rK   rf   r²  r‹  r   rÄ  r0  r1  r=  r   r#   )rS   r:  r  rw   r    rç   r“  rÖ  Úw1rÀ   r`   r2  s               rW   Ú,test_make_splrep_with_non_c_contiguous_inputz@_TestMakeSplrepBase.test_make_splrep_with_non_c_contiguous_input�  s˜  € ð	/ð 	/ð 	/õ ŒK˜˜1�RœU™7 BÑ'Ô'ˆÝŒF�1‰IŒIˆå”�q˜!�t””‰ˆˆBð ŒxÔ$¨Ð-Ð-Ð-Ð-ØŒxÔ$¨Ð-Ð-Ð-Ð-åŒK˜˜1�c !™fœfÑ%Ô%ˆÝ”�a˜�d””‰ˆˆAð ŒxÔ$¨Ð-Ð-Ð-Ð-å�Q˜˜Q ! t°'¸ZÒ2GÐIÑIÔIˆõ ˜"˜a 1¨°¸7ÐCÑCÔCˆØˆˆc�3‰Œˆõ ˜!˜R 1¨°¸7ÐCÑCÔCˆØˆˆc�3‰Œˆõ ˜!˜Q "¨°¸7ÐCÑCÔ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  ¦  «        ¦  «         d S )	Nr   r.   re   r9   r7   r;   r  )ÚxbÚxer4   rÚ  r2   r½  r:  )rK   rf   r‹  r²  rM  r#   r  r
   r2   r®   r4   r   rQ   )
rS   r:  r4   rw   r    r  r  rÚ  r2   r2  s
             rW   Ú%test_make_splrep_impl_no_optimizationz9_TestMakeSplrepBase.test_make_splrep_impl_no_optimization°  sR  € õ ŒK˜˜1˜bÑ!Ô!ˆÝŒF�1•r”u‘9˜q‘=Ñ!Ô!ˆà�1”�q˜”uˆBˆØˆØˆõ ŒH�b�T˜Q ™U‘^ r d¨a°!©e¡nÑ4Ñ5Ô5ˆõ ˜!˜Q 2¨"°Ø˜q t°Wð>ñ >ô >ˆõ ˜#�wÑ'Ô'Ð'Ð'Ð'ØŒuŒ{˜1Œ~  a¨!¡e¡Ò,Ð,Ð,Ð,ØŒu˜ŠzˆzˆzˆzÝ˜œ˜d˜q ™s˜dœ¥R¤Z°°¸¸A¹±Ñ%?Ô%?Ñ@Ô@Ð@Ý˜œ  !¡˜f˜g˜gœ­¬
°B°4¸1¸q¹5±>Ñ(BÔ(BÑCÔCÐCÐCÐCrk   rU   )r£   é3   r  rD   rÚ  )re   rÐ   r­   r.   rÎ  c           
      ó`  — t           j                             d¦  «        }t           j        dt          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    s<t          |	j        |d
¬¦  «         t          |	j        |d | d	z
  …         d
¬¦  «         d S d S )Nrô  r   r9   rª   rÑ   ©rÚ  r«  rô  rD   r.   rZ   rt   )rK   rR   r¡  r´   rž   r¢  r²  r‹  r�  r   r:  r#   r   r2   r3   ©
rS   rU   rÚ  rŸ   rw   r    r2   r3   r4   r2  s
             rW   Ú(test_make_splrep_matches_splrep_periodicz<_TestMakeSplrepBase.test_make_splrep_matches_splrep_periodicÈ  s  € õ Œi×#Ò# CÑ(Ô(ˆÝŒE�!•R”W˜SŸ[š[¨¨Aµ´©I¸AÀ¹E˜[ÑBÔBÑCÔCÀQÍÌÁYÐNÔOˆÝŒF�1‰IŒI�œ˜q™	œ	Ñ!ˆå˜˜A ¨¬¸Ò)CÐEÑEÔE‰ˆˆ1ˆaÝ˜!˜Q !¨T¬\Ð:Ñ:Ô:ˆà�R’�˜A šF˜F t¤|°zÒ'AÐ'AÝ˜CœE 1¨5Ð1Ñ1Ô1Ð1Ý˜CœE 1 W q b¨1¡f W¤:°EÐ:Ñ:Ô:Ð:Ð:Ð:ð (BÐ'Ark   c           
      ó  — t           j                             d¦  «        }t           j        dt          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	¬
¦  «         d S )Nrô  r   r9   rª   rÑ   r"  )rÚ  r:  r2   r.   rZ   rt   )rK   rR   r¡  r´   rž   r¢  r²  r‹  r�  r   r:  r#   r   r3   r#  s
             rW   Ú"test_make_splrep_with_splrep_knotsz6_TestMakeSplrepBase.test_make_splrep_with_splrep_knotsÖ  sÚ   € õ Œi×#Ò# CÑ(Ô(ˆÝŒE�!•R”W˜SŸ[š[¨¨Aµ´©I¸AÀ¹E˜[ÑBÔBÑCÔCÀQÍÌÁYÐNÔOˆÝŒF�1‰IŒI�œ˜q™	œ	Ñ!ˆå˜˜A ¨¬¸Ò)CÐEÑEÔE‰ˆˆ1ˆaÝ˜!˜Q !¨T¬\¸QÐ?Ñ?Ô?ˆÝ˜œ˜q  1 " q¡& œz°Ð6Ñ6Ô6Ð6Ð6Ð6rk   )r!  r"  r#  r:  rK   rò  rø  rü  ra   r€  r�  rÿ  r  r  Úthread_unsafer×  r  r  r  r  r  r$  r&  r$  rk   rW   rð  rð  Î  s¾  € € € € € à€Gàð ð ð ð ð5Qð 5Qð 5Qðn%ð %ð %ð „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð*ð *ñ 6Ô5ð*ð
0ð 0ð 0ð „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð&ð &ñ 6Ô5ð&ð „[Ôð,ð ,ñ Ôð,ð8 „[×Ò˜S ) ) )Ñ,Ô,ð!ð !ñ -Ô,ð!ð(:ð :ð :ð „[×Ò˜Y¨°TÐ(:Ñ;Ô;Ø„[×Ò˜S / / /Ñ2Ô2ð+ð +ñ 3Ô2ñ <Ô;ð+ð „[×Ò˜Y¨°TÐ(:Ñ;Ô;ð+ð +ñ <Ô;ð+ð\ „[×Ò˜Y¨°TÐ(:Ñ;Ô;Ø„[×Ò˜S / / /Ñ2Ô2ðDð Dñ 3Ô2ñ <Ô;ðDð, „[×Ò˜SÐ"3Ð"3Ð"3Ñ4Ô4Ø„[×Ò˜SÐ"5Ð"5Ð"5Ñ6Ô6ð
;ð 
;ñ 7Ô6ñ 5Ô4ð
;ð „[×Ò˜SÐ"3Ð"3Ð"3Ñ4Ô4Ø„[×Ò˜SÐ"5Ð"5Ð"5Ñ6Ô6ð7ð 7ñ 7Ô6ñ 5Ô4ð7ð 7ð 7rk   rð  c                   óÜ   — e Zd Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ ZdS )ÚTestMakeSplrepr4   rý  c                 ó@  — ddl m} |                      ¦   «         \  }}}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¬	¦  «         Œ'd S )
Nr   ©ÚFr.   rB   r@   r­   ©r.   re   r£   rZ   rt   )Ú scipy.interpolate._fitpack_repror,  rò  rK   rM  rã  r   )
rS   r4   r,  rw   r    rÚ  r2   ÚfÚf_dr  s
             rW   Útest_fitpack_FzTestMakeSplrep.test_fitpack_Få  sÕ   € ð 	7Ð6Ð6Ð6Ð6Ð6à—.’.Ñ"Ô"‰ˆˆ1ˆaÝŒH�a�S˜!˜A™#‘Y # s Ñ+¨q¨c°1°Q±3©iÑ7Ñ8Ô8ˆØˆAˆa��1�1�1�d�7”˜Q  1Ñ%Ô%ˆÝ�a˜˜A˜q !Ñ$Ô$ˆØð 	6ð 	6ˆAÝ˜A˜A˜a™DœD # # a¡&¤&¨uÐ5Ñ5Ô5Ð5Ð5ð	6ð 	6rk   c                 ó  — ddl m} |                      ¦   «         \  }}}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 ]Q}t           ||¦  «         |	|¦  «        d
¬¦  «         t          j
         |
|¦  «         |	|¦  «        d
¬¦  «        rJ ‚ŒRd S )Nr   r+  r.   rB   r@   r­   rE   rÌ  r-  rZ   rt   )r.  r,  rò  rK   rM  rO   r®   ró  rã  r   rå   )rS   r4   r,  rw   r    rÚ  r2   rÖ  ÚfwÚfw_dr0  r  s               rW   Útest_fitpack_F_with_weightsz*TestMakeSplrep.test_fitpack_F_with_weightsñ  s?  € ð 	7Ð6Ð6Ð6Ð6Ð6à—.’.Ñ"Ô"‰ˆˆ1ˆaÝŒH�a�S˜!˜A™#‘Y # s Ñ+¨q¨c°1°Q±3©iÑ7Ñ8Ô8ˆÝŒI�a”g˜a”j­Ð.Ñ.Ô.ˆØˆQˆq�!�A�A�A�t�G”*˜a  A¨Ð+Ñ+Ô+ˆÝ�q˜!˜Q  1¨Ð*Ñ*Ô*ˆå�a˜˜A˜q !Ñ$Ô$ˆàð 	@ð 	@ˆAÝ˜B˜B˜q™EœE 4 4¨¡7¤7°Ð7Ñ7Ô7Ð7Ý”{ 3 3 q¡6¤6¨4¨4°©7¬7¸Ð?Ñ?Ô?Ð?Ð?Ð?Ð?ð	@ð 	@rk   c           
      óÚ  — dd l mc m} t          j                             d¦  «        }t          j        ddddt          j        |                     d¬¦  «        ¦  «        dz  ddddf	         }t          |¦  «        d}}t          |                     ||¦  «        Ž                      ¦   «         }t          ||¦  «        }|j        d         |d|z  z
  dz
  k    sJ ‚t          ||d¬	¦  «         d S )
Nr   r�  r©   rª   r­   r;   r9   rZ   rt   )r.  Úinterpolater¨  rK   rR   r¡  r´   rž   r¢  r=  r  ræ  r  rá  r®   r   )rS   rª  rŸ   r2   rU   r4   ÚDÚD_denses           rW   Útest_disc_matrixzTestMakeSplrep.test_disc_matrix  sî   € ð 	7Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6åŒi×#Ò# EÑ*Ô*ˆÝŒE�!�Q˜˜1�bœg c§k¢k°q kÑ&9Ô&9Ñ:Ô:¸1Ñ<¸aÀÀAÀqÐHÔIˆå�1‰vŒv�qˆ1ˆÝ˜#Ÿ(š( 1 a™.œ.Ð)×1Ò1Ñ3Ô3ˆÝ˜Q Ñ"Ô"ˆØŒw�qŒz˜Q  1¡™W q™[Ò(Ð(Ð(Ð(Ý˜˜7¨Ð/Ñ/Ô/Ð/Ð/Ð/rk   c                 óÂ  — d}|                       |¦  «        \  }}}|                     dg|dz   z  ddgz   dg|dz   z  z   ¦  «        }t          ||||¬¦  «        \  }}}|                     |¦  «        |                     |¦  «        }}t          ||k    ¦  «        sJ ‚t	          ||||¬¦  «        }	t          |d |	j        j        d         …         |	j        d¬	¦  «         d S )
Nr;   r   r.   rB   r@   r­   r³  rZ   rt   )rò  rQ   r   rË   r#   r   r3   r®   )
rS   rT   r4   rw   r    rÚ  r€  r2   r3   r2  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œmˆ1ˆÝ�1˜’7‰|Œ|ÐÐˆ|å˜!˜Q ! qÐ)Ñ)Ô)ˆÝ˜˜/˜3œ5œ; qœ>˜/Ô*¨C¬E¸Ð>Ñ>Ô>Ð>Ð>Ð>rk   c                 óh  — d}|                       ¦   «         \  }}}t          t          ||||¬¦  «        ¦  «        d         }t          ||||¬¦  «        }t          |||||¬¦  «        }t	          |j        |j        d¬¦  «         t	          |j        |j        d¬¦  «         |j        |j        k    sJ ‚d S )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Ô0°Ô4ˆå˜q ! q¨AÐ.Ñ.Ô.ˆÝ˜A˜q A¨¨aÐ0Ñ0Ô0ˆå˜œ
 E¤G°%Ð8Ñ8Ô8Ð8Ý˜œ
 E¤G°%Ð8Ñ8Ô8Ð8ØŒz˜UœWÒ$Ð$Ð$Ð$Ð$Ð$rk   c                 ó²   — d}|                      ||j        ¬¦  «        }|dz  }d}t          |||d¬¦  «        }|j        j        d         d|dz   z  k    sJ ‚d S )Nre   rE   r;   r.   r³  r   r9   )rO   rP   r#   r2   r®   )rS   rT   rU   rw   r    r4   r2  s          rW   Útest_no_internal_knotsz%TestMakeSplrep.test_no_internal_knots*  si   € àˆØ�IŠI�a˜rœzˆIÑ*Ô*ˆØˆq‰DˆØˆÝ˜!˜Q ! qÐ)Ñ)Ô)ˆØŒuŒ{˜1Œ~  A a¡C¡Ò(Ð(Ð(Ð(Ð(Ð(rk   c                 óÌ   — d}|                      ||j        ¬¦  «        }|dz  }t          ||d¬¦  «        }t          ||d¬¦  «        }t	          |j        |j        d¬¦  «         d S )Nre   rE   r;   rS  rZ   rt   )rO   rP   r#   r   r   r3   )rS   rT   rU   rw   r    r2  r  s          rW   r  zTestMakeSplrep.test_default_s3  sn   € ØˆØ�IŠI�a˜rœzˆIÑ*Ô*ˆØˆq‰DˆÝ˜!˜Q !Ð$Ñ$Ô$ˆÝ" 1 a¨1Ð-Ñ-Ô-ˆå˜œ˜uœw¨UÐ3Ñ3Ô3Ð3Ð3Ð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 ¦  «         n# 1 swxY w Y   t          |¦  «        d	k    sJ ‚d S )
NrÓ  r;   rÔ  r³  r   r.   r+  rt   r9   )rK   rO   ra   rÕ  rÖ  r   r#   r   r2   r   r´   r3   r4   r=  )rS   rU   rw   r    rˆ  r`   r2  s          rW   r×  zTestMakeSplrep.test_s_too_small<  s  € àˆÝŒI�a‰LŒLˆØˆq‰DˆåŒ\�.Ñ)Ô)ð 	0¨QÝ˜˜A  eÐ,Ñ,Ô,ˆCÝ˜a  a¨5Ð1Ñ1Ô1ˆCÝ˜CœE 3 q¤6Ñ*Ô*Ð*Ý�BœE #¤%¨!¨¨c¬e°A©g©Ð"6Ô7Ø œF¨ð0ñ 0ô 0ð 0ð		0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0õ �1‰vŒv˜Š{ˆ{ˆ{ˆ{ˆ{ˆ{s   µA=B>Â>CÃCc                 ón  — 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 ¦  «         d S # 1 swxY w Y   d S )	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@rC  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ð8ñ 8ô 8ˆõ ŒJð ð ð õ &(¤Zð1ñ 1ô 1ˆõ ŒJ˜�y 1¤7¨1¤:Ñ-µR´ZÐ@Ñ@Ô@ˆÝ�:Ñ&Ô&ð 	.ð 	.Ý˜˜1  Q¨"Ð-Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   ÂB*Â*B.Â1B.c                 ó@  — d\  }}|                      ||j        ¬¦  «        }|dz  }t          |||¬¦  «        }t          |||d¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚t          ||dd|z   z  z   |d¬¦  «        }|j        j        dk    sJ ‚d S )N©re   r;   rE   r;   rS  r  r³  r.   )rO   rP   r#   r3   r  )	rS   rT   rU   r4   rw   r    r2  r’  r  s	            rW   r  zTestMakeSplrep.test_shapeX  sº   € à‰ˆˆ1Ø�IŠI�a˜rœzˆIÑ*Ô*ˆØˆq‰Dˆå˜!˜Q !Ð$Ñ$Ô$ˆÝ˜A˜q A¨Ð.Ñ.Ô.ˆàŒuŒz˜QŠˆˆˆØŒwŒ|˜qÒ Ð Ð Ð õ ˜A˜q 1 a¨¡c¡7™{¨a°4Ð8Ñ8Ô8ˆØŒwŒ|˜qÒ Ð Ð Ð Ð Ð rk   c                 ó^  — d\  }}|                      ||j        ¬¦  «        }|dz  }t          ||dd¬¦  «        }t          ||dd¬¦  «        }|j        j        dk    sJ ‚|j        j        dk    sJ ‚|j        j        d         ||z   dz   k    sJ ‚|j        j        d         d|dz   z  k    sJ ‚d S )NrF  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ˆIÑ*Ô*ˆØˆq‰Dˆå˜A˜q A¨Ð+Ñ+Ô+ˆÝ˜A˜q A¨Ð+Ñ+Ô+ˆàŒwŒ|˜qÒ Ð Ð Ð ØŒwŒ|˜qÒ Ð Ð Ð àŒwŒ}˜QÔ 1 q¡5¨1¡9Ò,Ð,Ð,Ð,ØŒwŒ}˜QÔ 1¨¨A©¡;Ò.Ð.Ð.Ð.Ð.Ð.rk   N)r!  r"  r#  ra   r€  r�  r1  r5  r:  r<  rÿ  r?  r  r×  rD  r  rH  r$  rk   rW   r)  r)  â  s  € € € € € ð „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð	6ð 	6ñ 6Ô5ð	6ð „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð@ð @ñ 6Ô5ð@ð 0ð 0ð 0ð?ð ?ð ?ð%ð %ð %ð)ð )ð )ð4ð 4ð 4ðð ð ð.ð .ð .ð!ð !ð !ð /ð /ð /ð /ð /rk   r)  c                   ó’  — e Zd ZdZej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Zd„ Z	d„ Z
ej                             dd	d
g¦  «        d„ ¦   «         Zej                             dg d¢¦  «        ej                             ddg¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestMakeSplrepPeriodicrÑ   r4   rý  c                 óÌ   — |                      ddd¦  «        }|                     d¦  «        }t          |||d| j        ¬¦  «        }|j        j        d         d|dz   z  k    sJ ‚d S )Nr   re   rD   rú  r.   rõ  r9   )rf   r¼  r#   r:  r2   r®   )rS   r4   rT   rw   r    r2  s         rW   r?  z-TestMakeSplrepPeriodic.test_no_internal_knots}  si   € ð �KŠK˜˜2˜rÑ"Ô"ˆØ�GŠG�E‰NŒNˆå˜!˜Q ! q°$´,Ð?Ñ?Ô?ˆØŒ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 ‚d S )Nre   r   r9   rõ  r.   )rK   rf   r²  r‹  r�  r#   r:  r3   r  r2   r®   )rS   r4   rU   rw   r    r  r’  s          rW   rH  z%TestMakeSplrepPeriodic.test_s0_vs_not†  sÂ   € ð ˆÝŒK˜˜1�RœU™7 AÑ&Ô&ˆÝŒF�1‰IŒI�œ˜q™	œ	Ñ!ˆå˜A˜q A¨°D´LÐAÑAÔAˆÝ˜A˜q A¨°D´LÐAÑAÔAˆàŒwŒ|˜qÒ Ð Ð Ð ØŒwŒ|˜qÒ Ð Ð Ð àŒwŒ}˜QÔ 1 q¨1¡u¡9Ò,Ð,Ð,Ð,Ð,Ð,rk   c                 óœ  — d}dd|j         z  }}|                     |||dz   |j        ¬¦  «        }|                     |¦  «        }t	          ||d| j        ¬¦  «        }t          t          ||¦  «        |dd	¬
¦  «         |                     |¦  «        |                     |¦  «        z   }t	          ||d| j        ¬¦  «        }t          t          ||¦  «        |dd¬
¦  «         d|                     |¦  «        z  |                     |¦  «        dz  z   }t	          ||d| j        ¬¦  «        }t          t          ||¦  «        |dd	¬
¦  «         d S )Nre   r   r9   r.   rE   r  rô  r  rY  r[   rÒ   rc  r­   r;   )	r²  rf   rP   r�  r#   r:  r   r   r‹  )rS   rT   r  r�  rV   rw   r    r2  s           rW   Ú test_periodic_with_periodic_dataz7TestMakeSplrepPeriodic.test_periodic_with_periodic_data•  s3  € ØˆØ�!�B”E‘'ˆ1ˆØ�KŠK˜˜1˜a !™e¨2¬:ˆKÑ6Ô6ˆà�FŠF�1‰IŒIˆÝ˜!˜Q $°´Ð=Ñ=Ô=ˆÝ�˜a ™œ q¨t¸$Ð?Ñ?Ô?Ð?à�FŠF�1‰IŒI˜Ÿš˜q™	œ	Ñ!ˆÝ˜!˜Q %°´Ð>Ñ>Ô>ˆÝ�˜a ™œ q¨t¸$Ð?Ñ?Ô?Ð?àˆb�fŠf�Q‰iŒ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 ¦  «         d S # 1 swxY w Y   d S )Nre   r   r9   r.   r  rô  )rK   r²  rf   rÐ  rG   rI   r#   r:  r  s         rW   Ú$test_periodic_with_non_periodic_dataz;TestMakeSplrepPeriodic.test_periodic_with_non_periodic_data¦  sÅ   € ØˆØ�!•B”E‘'ˆ1ˆÝŒK˜˜1˜a !™eÑ$Ô$ˆåŒF�1‰IŒIˆÝ�:Ñ&Ô&ð 	<ð 	<Ý˜˜1 ¨d¬lÐ;Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<ð 	<ð 	<s   ÁA;Á;A?ÂA?rÚ  r   rÔ  c                 ó¢  — t          j        ddg¦  «        }t          j        ddg¦  «        }|dk    rt          j        ddg¦  «        nd }t          |||dd|¬¦  «        }t          |||dd|¬¦  «        }|dk    rt	          |j        |d         ¦  «         t	          t           j        |j        dg|j        dz   z  f         |d         ¦  «         d S )	Nr=   r0   r[  r   r.   rÑ   )rÖ  r4   r:  rÚ  )rÖ  r4   r«  rÚ  )	rK   rM  r#   r   r   r2   r´   r3   r4   )rS   rÚ  rw   r    rÖ  r2  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�c˜3�ZÑ Ô ˆÝŒH�c˜3�ZÑ Ô ˆØ$%¨¢E E�BŒH�c˜3�ZÑ Ô Ð ¨tˆõ ˜!˜Q ! q°*ÀÐBÑBÔBˆÝ�Q˜˜Q !¨¨aÐ0Ñ0Ô0ˆàˆqŠ5ˆ5Ý˜CœE 3 q¤6Ñ*Ô*Ð*Ý�œ˜cœe a S¨#¬%°©'¡]Ð2Ô3Ø˜Aœñ	 ô 	 ð 	 ð 	 ð 	 rk   Úk_fp))r.   ç-Cëâ6¿)r9   rT  )r;   g�ÕA¹È˜¿rY  c           	      ód  — 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 ¦  «         n# 1 swxY w Y   |
j        }t          j        ddg¦  «        } ||¦  «        }t          |d         |d         ¦  «         d S )Nre   r   r.   r9   r  r¦  r³  r5   r>   çü©ñÒMbP?r=   r0   )rK   rf   r‹  r²  r   r    r  r  r	  rÖ  r!   rN   r2  rM  r   )rS   rS  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˜˜1˜aÑ Ô ˆÝŒF�1•r”u‘9˜q‘=Ñ!Ô!ˆØ‰ˆˆ2å�Q˜˜Q !¨Ð+Ñ+Ô+ˆàˆå˜1˜a    4 œj¨#¨a¬&°A¸Ð;Ñ;Ô;ˆÝÔ$Ñ&Ô&ð 	Tð 	TÝÔ! (­NÑ;Ô;Ð;Ý˜& #¨¨C°!©G¨µr´v¸rÀA¹vÐ6FÐ'GÈÈUÉÑSÔSˆAð	Tð 	Tð 	Tñ 	Tô 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tøøøð 	Tð 	Tð 	Tð 	Tð
 ŒZˆÝ”(˜C ˜:Ñ&Ô&ˆØ�"�W‘+”+ˆå˜ œ
 G¨A¤JÑ/Ô/Ð/Ð/Ð/s   ÂAC!Ã!C%Ã(C%N)r!  r"  r#  r:  ra   r€  r�  r?  rH  rN  rP  rR  r\  r$  rk   rW   rJ  rJ  x  s+  € € € € € ð €Gà„[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð)ð )ñ 6Ô5ð)ð „[×Ò˜SÐ"4Ð"4Ð"4Ñ5Ô5ð-ð -ñ 6Ô5ð-ð@ð @ð @ð"<ð <ð <ð „[×Ò˜S 1 e *Ñ-Ô-ð ð  ñ .Ô-ð ð „[×Ò˜VÐ%QÐ%QÐ%QÑRÔRØ„[×Ò˜S 4 &Ñ)Ô)ð0ð 0ñ *Ô)ñ SÔRð0ð 0ð 0rk   rJ  c                   óÆ   — e Zd Zddefd„Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Z	d„ Z
d	„ Zd
„ ZdS )ÚTestMakeSplprepre   r;   c                 ó®   — |                      ||j        ¬¦  «        |j        z  |z  }|                     |¦  «        |                     |¦  «        g}|||fS )NrE   )rO   rP   r²  r‹  r�  )rS   rš  r4   rT   rw   r    s         rW   Ú_get_xykzTestMakeSplprep._get_xykÚ  sN   € Ø�IŠI�a˜rœzˆIÑ*Ô*¨R¬UÑ2°QÑ6ˆØ�VŠV�A‰YŒY˜Ÿš˜q™	œ	Ð"ˆØ�!�Qˆwˆrk   rÚ  ©r   r¥  rV  r  c           
      ó`  — d\  }}t          j        |¦  «        t           j        z  |z  }t          j        |¦  «        t          j        |¦  «        g}dddddœ}t          ||¬¦  «        \  \  }}}}	t          ||¬¦  «        \  }
}t          ||	d¬	¦  «         t          |
j        |d¬	¦  «         t          |¦  «        ||         k    sJ ‚t          j
        |¦  «        j        }t          |
j        |d¬	¦  «         t           |
|¦  «         t          |||d
¬¦  «        |¦  «        d¬	¦  «         d S )NrF  rÓ  rÐ   rö  re   ra  ©rÚ  rZ   rt   r.   r  )rK   rO   r²  r‹  r�  r   r$   r   r2   r=  rQ   rÄ  r3   r
   )rS   rÚ  rš  r4   rw   r    Ú	num_knotsr2   r3   Úu_r2  r  rõ   s                rW   Útest_simple_vs_splprepz&TestMakeSplprep.test_simple_vs_splprepß  sJ  € ð ‰ˆˆ1ÝŒI�a‰LŒL�2œ5Ñ  1Ñ$ˆÝŒV�A‰YŒY�œ˜q™	œ	Ð"ˆð  ¨%°uÐ=Ð=ˆ	õ    Q˜™œ‰‰	ˆˆAˆq�2Ý˜a 1Ð%Ñ%Ô%‰ˆˆQõ 	˜˜2 EÐ*Ñ*Ô*Ð*õ 	˜œ˜q uÐ-Ñ-Ô-Ð-Ý�1‰vŒv˜ 1œÒ%Ð%Ð%Ð%õ ŒZ˜‰]Œ]Œ_ˆÝ˜œ˜r¨Ð.Ñ.Ô.Ð.õ 	˜˜˜A™œØ0�  1 a¨aÐ0Ñ0Ô0°Ñ3Ô3¸%ð	Añ 	Aô 	Að 	Að 	Að 	Ark   c                 óú  — |                       ¦   «         \  }}}t          |t          ¦  «        sJ ‚t          j        |¦  «        d         dk    sJ ‚t          ||¬¦  «        \  }}t          t          j        |¦  «        |¬¦  «        \  }}t          |||¬¦  «         t          |d         |d         d¬¦  «         t          |d         ¦  «        t          |d         ¦  «        k    sJ ‚t          |d         |d         d¬¦  «         |d         |d         k    sJ ‚t          j        t          ||¦  «        ¦  «        t          j        |¦  «        k    sJ ‚t          ||¬¦  «        \  }}t          ||d¬¦  «         t          |j        |d         d¬¦  «         t          |j        j        |d         d¬¦  «         |j        |d         k    sJ ‚ ||¦  «        j        t          j        |¦  «        k    sJ ‚t          t          j        |¦  «        |¬¦  «        \  }}t          ||d¬¦  «         t          |j        |d         d¬¦  «         t          |j        j        |d         d¬¦  «         |j        |d         k    sJ ‚ ||¦  «        j        t          j        |¦  «        k    sJ ‚t          t           ¦  «        5  t          t          j        |¦  «        j        |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r9   rc  rt   rZ   r.   )r`  r  rž  rK   r®   r   rQ   r   r=  r   r$   r2   r3   rÄ  r4   rG   rI   )	rS   rÚ  rÀ   r    r`   r  Útck_aÚu_ar2  s	            rW   Útest_array_not_listz#TestMakeSplprep.test_array_not_listý  s  € ð —-’-‘/”/‰ˆˆ1ˆaÝ˜!�TÑ"Ô"Ð"Ð"Ð"ÝŒx˜‰{Œ{˜1Œ~ Ò"Ð"Ð"Ð"õ ˜˜a�‘”‰ˆˆQÝ�RœZ¨™]œ]¨aÐ0Ñ0Ô0‰
ˆˆsÝ˜˜3 QÐ'Ñ'Ô'Ð'Ý˜˜Aœ  a¤¨uÐ5Ñ5Ô5Ð5Ý�3�q”6‰{Œ{�c %¨¤(™mœmÒ+Ð+Ð+Ð+Ý˜˜Aœ  a¤¨uÐ5Ñ5Ô5Ð5Ø�1Œv˜˜qœÒ!Ð!Ð!Ð!ÝŒx�˜a ™œÑ&Ô&­"¬(°1©+¬+Ò5Ð5Ð5Ð5å˜a 1Ð%Ñ%Ô%‰ˆˆQÝ˜˜3 UÐ+Ñ+Ô+Ð+Ý˜œ˜u Qœx¨eÐ4Ñ4Ô4Ð4Ý˜œœ  q¤°Ð6Ñ6Ô6Ð6ØŒu˜˜aœÒ Ð Ð Ð Øˆs�1‰vŒvŒ|�rœx¨™{œ{Ò*Ð*Ð*Ð*å�bœj¨™mœm¨qÐ1Ñ1Ô1‰ˆˆQÝ˜˜3 UÐ+Ñ+Ô+Ð+Ý˜œ˜u Qœx¨eÐ4Ñ4Ô4Ð4Ý˜œœ  q¤°Ð6Ñ6Ô6Ð6ØŒu˜˜aœÒ Ð Ð Ð Øˆs�1‰vŒvŒ|�rœx¨™{œ{Ò*Ð*Ð*Ð*å�:Ñ&Ô&ð 	/ð 	/Ý�œ A™œœ¨AÐ.Ñ.Ô.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   Ê:)K0Ë0K4Ë7K4c                 ó¼   — |                       d|¬¦  «        \  }}}t          |¦  «        \  }}t           ||¦  «        |                     |¦  «        d¬¦  «         d S )Nre   ©rš  rT   rZ   rt   ©r`  r$   r   r‘   ©rS   rT   rw   r    r4   r2  r  s          rW   Útest_default_s_is_zeroz&TestMakeSplprep.test_default_s_is_zero  sY   € Ø—-’- "¨�-Ñ,Ô,‰ˆˆ1ˆaå˜a‘”‰ˆˆQÝ˜˜˜A™œ §¢¨¡¤°%Ð8Ñ8Ô8Ð8Ð8Ð8rk   c                 óÄ  — |                       d|¬¦  «        \  }}}t          |d¬¦  «        \  }}t          |d¬¦  «        \  }}t          ||d¬¦  «         t           ||¦  «        |                     |¦  «        d¬¦  «         t           ||¦  «        |                     |¦  «        d¬¦  «         |j        |j        k    sJ ‚|j        j        |j        j        k    sJ ‚d S )Nre   rl  r   rc  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¤K°eÐ<Ñ<Ô<Ð<Ý˜˜˜c™
œ
 B§H¢H¨Q¡K¤K°dÐ;Ñ;Ô;Ð;ØŒz˜UœZÒ'Ð'Ð'Ð'ØŒwŒ} ¤¤Ò-Ð-Ð-Ð-Ð-Ð-rk   c                 ó^  — t          j        dt          ¬¦  «        }t          t          ¦  «        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          t          ¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |gd¬¦  «        \  }}t          |gd¬¦  «        \  }} ||¦  «        j        dk    sJ ‚t           ||¦  «        |gd¬	¦  «         d S )
NrÐ   rE   r   rc  r¥  r  ©r.   rÐ   rZ   rt   )	rK   rO   ró  rG   rI   r   r$   r®   r   )rS   rw   r`   re  r2  r  s         rW   r–  zTestMakeSplprep.test_1D2  sæ  € ÝŒI�a�uÐ%Ñ%Ô%ˆÝ�:Ñ&Ô&ð 	ð 	Ý�A‰JŒJˆJð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �:Ñ&Ô&ð 	!ð 	!Ý˜˜aÐ Ñ Ô Ð ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!õ �:Ñ&Ô&ð 	#ð 	#Ý˜˜cÐ"Ñ"Ô"Ð"ð	#ð 	#ð 	#ñ 	#ô 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#øøøð 	#ð 	#ð 	#ð 	#õ ˜1˜# Ð&Ñ&Ô&‰ˆˆRÝ˜q˜c TÐ*Ñ*Ô*‰ˆˆQàˆs�1‰vŒvŒ|˜vÒ%Ð%Ð%Ð%Ý˜˜˜A™œ  ¨%Ð0Ñ0Ô0Ð0Ð0Ð0s5   °AÁAÁAÁ+B	Â	BÂBÂ(CÃC
ÃC
N©r!  r"  r#  rK   r`  ra   r€  r�  rf  rj  ro  rt  r–  r$  rk   rW   r^  r^  Ø  sÊ   € € € € € à˜q Rð ð ð ð ð
 „[×Ò˜SÐ"6Ð"6Ð"6Ñ7Ô7ðAð Añ 8Ô7ðAð: „[×Ò˜SÐ"6Ð"6Ð"6Ñ7Ô7ð/ð /ñ 8Ô7ð/ðB9ð 9ð 9ð.ð .ð .ð1ð 1ð 1ð 1ð 1rk   r^  c                   óÆ   — e Zd Zddefd„Zej                             dg d¢¦  «        d„ ¦   «         Zej                             dg d¢¦  «        d„ ¦   «         Z	d„ Z
d	„ Zd
„ ZdS )ÚTestMakeSplprepPeriodicre   r;   c                 ó¬   — |                      dd|j        z  ||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  sL   € Ø�KŠK˜˜1˜RœU™7 A¨R¬ZˆKÑ8Ô8ˆØ�VŠV�A‰YŒY˜Ÿš˜q™	œ	Ð"ˆØ�!�Qˆwˆrk   rÚ  ©r   rY  r  rc  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¬¦  «         d S )Nre   r   r9   rÓ  r.  r{  r.   r"  rÑ   rô  rZ   rt   r  rc  r[   )rK   rf   r²  r‹  r�  r   r$   r   r=  r2   r
   )rS   rÚ  rU   rw   r    rd  r2   r3   r4   re  r2  r  s               rW   rf  z.TestMakeSplprepPeriodic.test_simple_vs_splprepL  s  € ð ˆÝŒK˜˜1�RœU™7 AÑ&Ô&ˆÝŒV�A‰YŒY�œ˜q™	œ	Ð"ˆð  "¨B°bÐ9Ð9ˆ	õ    Q¨AÐ.Ñ.Ô.‰‰	ˆˆAˆq�2Ý˜a 1¨jÐ9Ñ9Ô9‰ˆˆQõ 	˜˜2 EÐ*Ñ*Ô*Ð*õ �3”5‰zŒz˜Y qœ\Ò)Ð)Ð)Ð)õ 	˜˜˜A™œÐ 8¥¨¨1¨a°aÐ 8Ñ 8Ô 8¸Ñ ;Ô ;Ø"¨ð	0ñ 	0ô 	0ð 	0ð 	0ð 	0rk   c                 ó4  — |                       ¦   «         \  }}}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 ¦  «         d S # 1 swxY w Y   d S )	Nr   r9   r.   r"  rt   rZ   rÑ   rô  )r`  r  rž  rK   r®   r   rQ   r   r=  rû  r   r$   r4   rG   rI   rÄ  )rS   rÚ  rÀ   r    r`   r  rh  ri  rÍ  rÎ  r2  s              rW   rj  z+TestMakeSplprepPeriodic.test_array_not_liste  s×  € ð —-’-‘/”/‰ˆˆ1ˆaÝ˜!�TÑ"Ô"Ð"Ð"Ð"ÝŒx˜‰{Œ{˜1Œ~ Ò"Ð"Ð"Ð"õ ˜˜a QÐ'Ñ'Ô'‰ˆˆQÝ�RœZ¨™]œ]¨a°QÐ7Ñ7Ô7‰
ˆˆsÝ˜˜3 QÐ'Ñ'Ô'Ð'Ý˜˜Aœ  a¤¨uÐ5Ñ5Ô5Ð5Ý�3�q”6‰{Œ{�c %¨¤(™mœmÒ+Ð+Ð+Ð+Ý˜#˜aœ& %¨¤(Ñ+Ô+ð 	0ð 	0‰FˆB�Ý˜B ¨Ð/Ñ/Ô/Ð/Ð/Ø�1Œv˜˜qœÒ!Ð!Ð!Ð!ÝŒx�˜a ™œÑ&Ô&­"¬(°1©+¬+Ò5Ð5Ð5Ð5å˜a 1¨jÐ9Ñ9Ô9‰ˆˆQÝ˜˜3 UÐ+Ñ+Ô+Ð+ØŒu˜˜aœÒ Ð Ð Ð Øˆs�1‰vŒvŒ|�rœx¨™{œ{Ò*Ð*Ð*Ð*å�bœj¨™mœm¨q¸*ÐEÑEÔE‰ˆˆQÝ˜˜3 UÐ+Ñ+Ô+Ð+ØŒu˜˜aœÒ Ð Ð Ð Øˆs�1‰vŒvŒ|�rœx¨™{œ{Ò*Ð*Ð*Ð*å�:Ñ&Ô&ð 	Cð 	CÝ�œ A™œœ¨A°zÐBÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cs   É*JÊJÊJc                 óÀ   — |                       d|¬¦  «        \  }}}t          |d¬¦  «        \  }}t           ||¦  «        |                     |¦  «        d¬¦  «         d S )Nre   ©rU   rT   rÑ   r^  rZ   rt   rm  rn  s          rW   ro  z.TestMakeSplprepPeriodic.test_default_s_is_zero„  s`   € Ø—-’- "¨�-Ñ,Ô,‰ˆˆ1ˆaå˜a¨Ð4Ñ4Ô4‰ˆˆQÝ˜˜˜A™œ §¢¨¡¤°%Ð8Ñ8Ô8Ð8Ð8Ð8rk   c                 óp  — |                       d|¬¦  «        \  }}}t          |dd¬¦  «        \  }}t          |dd¬¦  «        \  }}t          ||d¬¦  «         |                     |¦  «        }	t           ||¦  «        |	d¬¦  «         t           ||¦  «        |	d	d
¬¦  «         |j        |j        k    sJ ‚d S )Nre   r  r   rÑ   rô  rÒ   rZ   rt   r½   rc  r[   )r`  r$   r   r‘   r  )
rS   rT   rw   r    r4   r  rq  rr  rs  Úy_arrs
             rW   rt  z0TestMakeSplprepPeriodic.test_s_zero_vs_near_zeroŠ  sÈ   € à—-’- "¨�-Ñ,Ô,‰ˆˆ1ˆaå! ! q°*Ð=Ñ=Ô=‰
ˆˆsÝ! ! u°jÐAÑAÔA‰
ˆˆså˜˜S uÐ-Ñ-Ô-Ð-à—’˜‘”ˆÝ˜˜˜c™
œ
 E°Ð6Ñ6Ô6Ð6Ý˜˜˜c™
œ
 E°¸4Ð@Ñ@Ô@Ð@ØŒz˜UœZÒ'Ð'Ð'Ð'Ð'Ð'rk   c                 óv  — t          j        ddt           j        z  d¦  «        }t          j        |¦  «        }t	          t
          ¦  «        5  t          |d¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t
          ¦  «        5  t          |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t	          t
          ¦  «        5  t          |dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |gd	d¬¦  «        \  }} ||¦  «        j        d
k    sJ ‚t           ||¦  «        |gd	¬¦  «         d S )Nr   r9   rÐ   r.   rª  rÑ   rô  r¥  rZ   rv  rt   )
rK   rf   r²  r‹  rG   rI   r   r$   r®   r   )rS   rw   r2  r  s       rW   r–  zTestMakeSplprepPeriodic.test_1D˜  sî  € ÝŒK˜˜1�RœU™7 AÑ&Ô&ˆÝŒF�1‰IŒIˆÝ�:Ñ&Ô&ð 	ð 	Ý�A˜1ÐÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �:Ñ&Ô&ð 	5ð 	5Ý˜˜a¨Ð4Ñ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ �:Ñ&Ô&ð 	7ð 	7Ý˜˜c¨:Ð6Ñ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7õ ˜q˜c U°JÐ?Ñ?Ô?‰ˆˆQàˆs�1‰vŒvŒ|˜vÒ%Ð%Ð%Ð%Ý˜˜˜A™œ  ¨%Ð0Ñ0Ô0Ð0Ð0Ð0s6   ÁA*Á*A.Á1A.Â	B(Â(B,Â/B,ÃC&Ã&C*Ã-C*Nrw  r$  rk   rW   ry  ry  D  sË   € € € € € ð ˜q Rð ð ð ð ð
 „[×Ò˜SÐ"7Ð"7Ð"7Ñ8Ô8ð0ð 0ñ 9Ô8ð0ð0 „[×Ò˜SÐ"7Ð"7Ð"7Ñ8Ô8ðCð Cñ 9Ô8ðCð<9ð 9ð 9ð(ð (ð (ð1ð 1ð 1ð 1ð 1rk   ry  c                   ó.   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ ZdS )ÚBatchSplinec                óÖ   ‡‡‡— t          j        ||d¦  «        }|j        d d…         | _        ˆˆˆfd„|                     d|j        d         ¦  «        D ¦   «         | _        || _        d S )Nr7   c                 ó$   •— g | ]} ‰‰|fi ‰¤Ž‘ŒS r$  r$  )r�   ÚyiÚkwargsrX  rw   s     €€€rW   rŽ   z(BatchSpline.__init__.<locals>.<listcomp>¯  s-   ø€ ÐVÐVÐV°R˜˜  2Ð0Ð0¨Ð0Ð0ÐVÐVÐVrk   )rK   Úmoveaxisr®   Ú_batch_shaper�   Ú_splinesÚ_axis)rS   rw   r    r  rX  rˆ  s    `  ``rW   r
  zBatchSpline.__init__¬  sk   øøø€ ÝŒK˜˜4 Ñ$Ô$ˆØœG C R CœLˆÔØVÐVÐVÐVÐVÐV¸1¿9º9ÀRÈÌÐQSÌÑ;UÔ;UÐVÑVÔVˆŒØˆŒ
ˆ
ˆ
rk   c                 ó¶   ‡— ˆfd„| j         D ¦   «         }t          j        || j        ‰j        z   ¦  «        }‰j        rt          j        |d| j        ¦  «        n|S )Nc                 ó&   •— g | ]} |‰¦  «        ‘ŒS r$  r$  )r�   rX  rw   s     €rW   rŽ   z(BatchSpline.__call__.<locals>.<listcomp>³  s!   ø€ Ð3Ð3Ð3˜6ˆVˆV�A‰YŒYÐ3Ð3Ð3rk   r7   )r‹  rK   r�   rŠ  r®   r‰  rŒ  r¾  s    ` rW   rŽ  zBatchSpline.__call__²  s[   ø€ Ø3Ð3Ð3Ð3 T¤]Ð3Ñ3Ô3ˆÝŒJ�q˜$Ô+¨a¬gÑ5Ñ6Ô6ˆØ12´Ð?�rŒ{˜1˜b $¤*Ñ-Ô-Ð-¸aÐ?rk   Nc                 óf   ‡‡‡— ˆˆˆfd„| j         D ¦   «         }t          j        || j        ¦  «        S )Nc                 ó>   •— g | ]}|                      ‰‰‰¦  «        ‘ŒS r$  )r  )r�   rX  r�  rV   r€   s     €€€rW   rŽ   z)BatchSpline.integrate.<locals>.<listcomp>¸  s+   ø€ ÐMÐMÐM°VˆV×Ò˜a  KÑ0Ô0ÐMÐMÐMrk   )r‹  rK   r�   rŠ  )rS   r�  rV   r€   r    s    ``` rW   r  zBatchSpline.integrate·  s;   øøø€ ØMÐMÐMÐMÐMÐM¸t¼}ÐMÑMÔMˆÝŒz˜!˜TÔ.Ñ/Ô/Ð/rk   c                 ó`   ‡— t          j        | ¦  «        }ˆfd„|j        D ¦   «         |_        |S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r$  )rü   ©r�   rX  rß   s     €rW   rŽ   z*BatchSpline.derivative.<locals>.<listcomp>½  s'   ø€ ÐIÐIÐI°&˜×)Ò)¨"Ñ-Ô-ÐIÐIÐIrk   ©rú  Údeepcopyr‹  ©rS   rß   r  s    ` rW   rü   zBatchSpline.derivative»  s4   ø€ ÝŒm˜DÑ!Ô!ˆØIÐIÐIÐI¸C¼LÐIÑIÔIˆŒØˆ
rk   c                 ó`   ‡— t          j        | ¦  «        }ˆfd„|j        D ¦   «         |_        |S )Nc                 ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r$  )r  r“  s     €rW   rŽ   z.BatchSpline.antiderivative.<locals>.<listcomp>Â  s'   ø€ ÐMÐMÐM°f˜×-Ò-¨bÑ1Ô1ÐMÐMÐMrk   r”  r–  s    ` rW   r  zBatchSpline.antiderivativeÀ  s4   ø€ ÝŒm˜DÑ!Ô!ˆØMÐMÐMÐMÀÄÐMÑMÔMˆŒØˆ
rk   rÑ  )r!  r"  r#  r
  rŽ  r  rü   r  r$  rk   rW   r„  r„  ª  sg   € € € € € ðð ð ð@ð @ð @ð
0ð 0ð 0ð 0ðð ð ð
ð ð ð ð rk   r„  c            
       ó  — e Zd Ze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                             dg d¢¦  «        ej                             d	g d
¢¦  «        d„ ¦   «         ¦   «         ¦   «         Z	dS )Ú	TestBatchzmake_spline, kwargsr^  r0   rÇ  rÈ  rÉ  Ú
eval_shape)r$  r„  r�  r  rÙ  c                 óØ  — t           j                             d¦  «        }d}ddd|f}d}t          j        g |¢|‘R Ž }	t          j        |                     |¦  «        d|¦  «        }
|t
          k    r5d}|	d         f|d	z   z  |	d         f|d	z   z  z   }|t          ||¬
¦  «        z  } ||	|
fd|i|¤Ž}t          |	|
f||dœ|¤Ž} |j        |d|iŽ}	t           j	         
                     ||	¦  «         ||	¦  «        ¦  «         |                     d	¦  «        |                     d	¦  «        }}t           j	         
                     ||	¦  «         ||	¦  «        ¦  «         |                     d¦  «        |                     d¦  «        }}t           j	         
                     ||	¦  «         ||	¦  «        ¦  «         t           j	         
                     |j        |Ž  |j        |Ž ¦  «         d S )Nl   ®UUû{ re   r9   r;   r<   )r   re   r7   r   r.   )r2   r4   r  )r  rX  r«   )rK   rR   r¡  rf   r‰  r   rJ   r„  r¢  ÚtestingÚassert_allcloser  rü   r  )rS   Úmake_splinerˆ  r  r›  rŸ   rU   r®   Údomainrw   r    r4   r2   r  Úrefs                  rW   Ú
test_batchzTestBatch.test_batchÇ  sö  € õ Œi×#Ò#Ð$4Ñ5Ô5ˆØˆØ�A�q˜!�ˆØˆåŒKÐ#˜Ð# Ð#Ð#Ð#ˆÝŒK˜Ÿ
š
 5Ñ)Ô)¨2¨tÑ4Ô4ˆà�/Ò)Ð)ØˆAØ�1”�˜1˜q™5Ñ! Q r¤U H°°A±Ñ$6Ñ6ˆAØ�d Q¨!˜n™nœnÑ,ˆFàˆk˜!˜QÐ4Ð4 TÐ4¨VÐ4Ð4ˆÝ˜!˜QÐH T°+ÐHÐHÀÐHÐHˆàˆCŒK˜Ð1 jÐ1Ð1ˆÝ
Œ
×"Ò" 3 3 q¡6¤6¨3¨3¨q©6¬6Ñ2Ô2Ð2à×%Ò% aÑ(Ô(¨#×*<Ò*<¸QÑ*?Ô*?ˆSˆÝ
Œ
×"Ò" 3 3 q¡6¤6¨3¨3¨q©6¬6Ñ2Ô2Ð2à—>’> !Ñ$Ô$ c§n¢n°QÑ&7Ô&7ˆSˆÝ
Œ
×"Ò" 3 3 q¡6¤6¨3¨3¨q©6¬6Ñ2Ô2Ð2å
Œ
×"Ò" = 3¤=°&Ð#9¸=¸3¼=È&Ð;QÑRÔRÐRÐRÐRrk   N)
r!  r"  r#  ra   r€  r�  r   r   r   r¢  r$  rk   rW   rš  rš  Æ  sÌ   € € € € € Ø„[×ÒÐ2Ø
˜bÐ	!Ø
 Ð	$Ø
 %¨ Ð	.Ø
˜H iÐ0Ð	1Ø
˜H dÐ+Ð	,ð		ñô ð „[×Ò˜\Ð+;Ð+;Ð+;Ñ<Ô<Ø„[×Ò˜V Z Z ZÑ0Ô0ðSð Sñ 1Ô0ñ =Ô<ñô ðSð Sð Srk   rš  r  r�  r„  )zrI  r|  r‡  r  r�  ru  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   rC  r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rë  r¶  r¾  Úscipy.sparse.linalgÚsparserK  Úscipy.interpolate._bsplinesr   r   r   r   r   r.  r    r!   r"   r#   r$   Úscipy.interpolate._fitpack_implr7  Ú_fitpack_implr  Úscipy._lib._utilr%   Úscipy._lib._testutilsr&   Úscipy.interpolate._ndbspliner'   r(   r{  r)   rv  r*   r€  r  r,   r†  rÈ  rË  r‹   r�   rð   ru   rí   r_   rÇ  rý  r?  r¬  rÆ  r�  r  rË  r  r!  r  r%  r'  rO  rQ  rs  r%  rP  ry  r‘  r>  rt  r›  r£  r¥  rá  rã  rð  r)  rJ  r^  ry  r„  rš  r$  rk   rW   ú<module>r°     s‘	  ðØ 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð )Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø *Ð *Ð *Ð *Ð *Ð *Ø €€€ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð
 Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ð !ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð BÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ Gà /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø &Ð &Ð &Ð &Ð &Ð &Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø -Ð -Ð -Ð -Ð -Ð -Ø &Ð &Ð &Ð &Ð &Ð &à”;Ô/Ð ð Ð�7ÑÔð_
)ð _
)ð _
)ð _
)ð _
)ñ _
)ô _
)ñ Ôð_
)ðD Ð�7ÑÔðS$ð S$ð S$ð S$ð S$ñ S$ô S$ñ ÔðS$ðl6ð 6ð 6ð,ð ð ð$Gð Gð Gð>ð >ð >ðð ð ð ð ð ð ð ðð ð ð ð$   bð +ð +ð +ð +ðð ð ð$_)ð _)ð _)ð _)ð _)ñ _)ô _)ð _)ðD ÐÐ%Ñ&Ô&ð`?ð `?ð `?ð `?ð `?ñ `?ô `?ñ 'Ô&ð`?ðFð ð ð8ð ð ð ð8 !œ+×1Ò1°(¸YÈÐ<MÑNÔNÐ ð Ð�?Ñ#Ô#ð~:ð ~:ð ~:ð ~:ð ~:ñ ~:ô ~:ñ $Ô#ð~:ðBð ð ð ð ñ ô ð ð>)ð )ð )ð )ðX	ð 	ð 	ðð ð ð(nLð nLð nLð nLð nLñ nLô nLð nLðb*ð *ð *ð
 ÐÐ(Ñ)Ô)ðJ3ð J3ð J3ð J3ð J3ñ J3ô J3ñ *Ô)ðJ3ð^
ð 
ð 
ðð ð ð7ð 7ð 7ð:"ð :"ð :"ð :"ð :"ñ :"ô :"ð :"ðz Ð�9ÑÔðj4ð j4ð j4ð j4ð j4ñ j4ô j4ñ Ôðj4ðZWGð WGð WGð WGð WGñ WGô WGð WGðta ð a ð a ð a ð a ñ a ô a ð a ðLð ð ð(ð ð ð. Ð�>Ñ"Ô"ðlð lð lð lð lñ lô lñ #Ô"ðlð^ð ð ð2,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð^Q7ð Q7ð Q7ð Q7ð Q7ñ Q7ô Q7ð Q7ðh Ð�;ÑÔðR/ð R/ð R/ð R/ð R/Ð(ñ R/ô R/ñ  ÔðR/ðj Ð�;ÑÔð\0ð \0ð \0ð \0ð \0Ð0ñ \0ô \0ñ  Ôð\0ð~ Ð�<Ñ Ô ðh1ð h1ð h1ð h1ð h1ñ h1ô h1ñ !Ô ðh1ðV Ð�<Ñ Ô ðb1ð b1ð b1ð b1ð b1ñ b1ô b1ñ !Ô ðb1ðJð ð ð ð ñ ô ð ð8$Sð $Sð $Sð $Sð $Sñ $Sô $Sð $Sð $Sð $Srk   