Ë
    çÿæi¬J  ã                   óþ  — d dl Z d dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlZd dlmZ d dlmZ ej                  j                   Zej                  j"                  ZegZ G d„ d«      Zej(                  ej*                  eej.                  ej*                  ej*                  eeej2                  ej2                  eeiZ ed¬«       G d	„ d
«      «       Z eej:                  «      d„ «       Z eej>                  «      d„ «       Z y)é    N)Úassert_almost_equalÚxp_assert_closeÚxp_assert_equalÚmake_xp_test_caseÚxp_default_dtypeÚarray_namespaceÚ_xp_copy_to_numpy)Úraises)Úsignalc                   óÞ  — e Zd ZdZ eej                  «      d„ «       Z eej                  «      d„ «       Z eej                  «      d„ «       Z
 edd¬«       eej                  «      d„ «       «       Z eej                  «      d	„ «       Z eej                  «      d
„ «       Z edd¬«       eej$                  «      d„ «       «       Z edd¬«       eej(                  «      d„ «       «       Zy)ÚTestBSplinesa  Test behaviors of B-splines. Some of the values tested against were
    returned as of SciPy 1.1.0 and are included for regression testing
    purposes. Others (at integer points) are compared to theoretical
    expressions (cf. Unser, Aldroubi, Eden, IEEE TSP 1993, Table 1).c                 óÀ  — t         j                  j                  d«      }t        t        t
        j                  |j                  dg«      d«       |j                  dd«      }ddd|z  z
  z  }|j                  |«      }|j                  g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g|j                  ¬«      }t        t        j                  |d«      |«       y )Né©0  r   é   é
   é   é   )gÿ7Áúé¦Ý¿gÿDáŠöª @gÇ¸5Pæ?gB…ß¸"@gy…Ó¼Â®@gE±Ã5Ê`@g&¤à)°#@gEêf‘!Àg–Ïò<¸Ó@gSbÏ….X ÀgFgôþš‹Àg½$Æ`Ì#@)gI<M$ k@gYÅvRº÷@gý’dˆ)B	Àgã,ôÚÏÀ#@gd?‹¥Hð#Àgk±€®"`	@g‚)û•k	ÀgiÝÌ	V@gH„-ÑQ#@gŽn)ŒÒ” Àg3%�0×ï?gõ°@‰	À)g¢•AÖÏZÀgõ³9s˜@g /{Dîõ¿gÙÙ©Ô@gºãEC@g¨'ÁUE@gØ¢?å«@gÖ‚ —Áù�¿g¿¹¿zÜk@gÂù³£a"@gò¿½´¦~â¿g ™KGº#@)g$9Ëò–ÛÀgL|¤wàâú¿gùlTŽÆ@g?ss}aJò?g7¦iHÃ^	Àgát»,`±þ?g��hŸ�@glA1ªómÀg±¦²(ìT#Àg˜* Á#Àg…DVŽûÜ#@g„¾¿à@)g°'²½³ý"@ga+‘Ù“ßþ¿gE„=õa@gÅ:¢•"ÀgäIVÎ@gžÞ÷5³º@gòYd\í¸ð¿gÑ–1ÜpÀg"–æ¹2Ü Àg:õi²æ@gi^J§� @g—`H¹ÁQ!À)g�·•^›Õ!Àg#±¬MÆ½!@gè®ºH€&@gfQñâq@g™å�Â%‚ê¿gmùÌ‚r!@gö
,üð²@gìY„ bÀgÒYÁÊüä#@g/-�Úi @gˆè V�qÀgªßùíå"À)gšHÄï�"@gùÝÑÞÄè¿gÊœôßÿ6@gg€²eáÀgšã&´öP@gYä2É#Cý¿gí
0ê¢@gí€Ê|0žú¿g È*!/æ@g(Š±ÒÀgqq–Š¤ø?g)a§‚À)gF¨!Ã�àÀgzÄÇ«œ‹Àg²’^í‹ò¿ge”€û®Fð?g¦
©O0É!ÀgVùØ<’¯ÀgÍtÐ¡§Àg%9ä�W@gûš^[H#@g¼3›Fázæ?gñ.öâ´5 Àg�s…±dù?)gíë†Ž™ÃÀgÕ,
š™@gAß/Éuõ@g`û¦9oÀgebgÈ€Ñ@g‘š¸MŸÀgZµ‰ça@g�<ÆË‰8Àg:É˜³%@gdŽHˆ°Ñ	Àgž¡òŽ×4Àg¶:Ns@)g¡ê€ÙÀg»÷¯-µþÒ¿gœE-² Àg)À in"@gíd.xêôÀg2~ñwµÀgÄ�µ¯ÑôÀgYrñ4Q?gkM-:ÝÖÀgÑÿÛ,@g+‡Ý @gV¤Ûu»À)g@Ÿ+¾_$ó?g¸KGj­é±?g[ C$}á@g›_÷Àg‘D/£X@gH›Óú•ÍÀgÖJSÊŒ¯@gú€@gÒâÀgò�N+ÀgÃ«	Žçñ¿gk8é�Àg®„jZ”‡@)gÝµB`þ¹#@g�+òNÒð?gÏ�õ»	Àg°gó„'Àgƒ=!"F@gÆ±ÃÒŸ"ÀgÖ'-:ß@g¬#�åàÀg'ªŽ‡„ØÀgj Ž\ÔB@g~gƒe×@g$qÁß¼À©Údtype)ÚnpÚrandomÚRandomStater
   Ú	TypeErrorr   Úspline_filterÚasarrayÚrandÚfloat64r   )ÚselfÚxpÚrngÚdata_array_realÚresult_array_reals        úu/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/scipy/signal/tests/test_bsplines.pyÚtest_spline_filterzTestBSplines.test_spline_filter   sò   € ä�i‰i×#Ñ# EÓ*ˆäŒyœ&×.Ñ.°·
±
¸A¸3³ÀÔCàŸ(™( 2 rÓ*ˆà˜a  /Ñ 1Ñ1Ñ2ˆØŸ*™* _Ó5ˆØŸJ™Jò@ò@ò?ò@ò@ò@ò@ò?ò@ò@òAò@ðC#AðF IKÏ
É
ðI 'ó $TÐôJ 	œ×,Ñ,¨_¸aÓ@Ø)õ	+ó    c           
      ór  — t         j                  j                  d«      }|j                  dd«      |j                  dd«      dz  z   }ddd|z  z
  z  }|j	                  |«      }|j	                  g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g|j
                  ¬«      }t        t        j                  |d«      |d¬«       y )Nr   é   y              ð?r   y      ð?      ð?r   )y$™“
‰Ý¿%)ÿáþ¿y��ë©ª @;;×ÿR@yî’þHæ?káŸŒ"Ày¥¼?½!@3âŸ¥Í@yÊ±«Æ¯@b Èº@y…mÕ¿5a@,ñ¡Àºð¿yú`¨°#@Aé4 pÀ)yžF÷ÿ³�!Àí÷ôÛ ÀyÀêéŸ·Ó@@ä_²æ@ywˆûŸ.X Àæ/¡@§� @y4 L ›‹À&í ÁQ!ÀyjÙ¿_Ì#@æ ›Õ!ÀyØÄÙßŸk@ƒa
 Æ½!@ySh¬?º÷@ÀÓ¿&@)y¬–®?@	À¿X@�@yH:ÀÏÀ#@·–ê~%‚ê¿yX…öHð#À‘Ç€r!@y} "`	@)Æ¿ð²@yùí@k	Àu�ØbÀyoâ»ÿU@I"$ üä#@yA ÑQ#@¸°, i @)yïb@r” Àß‚ KqÀyÓ”Êÿ×ï?È¤àìå"Àyr‚Û	À”“À�"@yÆ%`ÏZÀvƒ.ßÄè¿y$°½?s˜@ó*  7@yx‰îõ¿üeb€eáÀyü÷CàÔ@¦í öP@)yÍÎ?M@¡kÀ9Fý¿yÎ¸™ŸUE@4%@ê¢@y[yÉÿä«@#?0žú¿y N àù�¿5¥H /æ@yw€Ük@²€°ÒÀy¥"€a"@$â÷€Š¤ø?y†•ýÿ§~â¿ò¯HÀ¦‚À)y}Ýñ?\º#@A¤¶?ÝáÀy›¥	€–ÛÀd³Ÿœ‹Ày�»{_àâú¿¸ï( Œò¿y^pÝÿ�Æ@;ÉÒ^¯Fð?yuøµ?aJò? U 0É!Ày¢\@Ã^	ÀKÇÿ‘¯Ày™x¬¾_±þ?¹+äß¡§À)yl.@Ž@9UÀY@yNÐª¿ómÀxp€[H#@y¥DùìT#À†bázæ?yhú Á#ÀýFà´5 Ày…˜èûÜ#@‘^ÿdù?yÔ<²¿à@­V?™ÃÀy{æÝ?³ý"@�&@™@r   r   g�íµ ÷Æ°>)Úrtol)	r   r   r   r   r   Ú
complex128r   r   r   )r   r   r    Údata_array_complexÚresult_array_complexs        r#   Útest_spline_filter_complexz'TestBSplines.test_spline_filter_complexL   sÅ   € ä�i‰i×#Ñ# EÓ*ˆØ ŸX™X a¨›^¨c¯h©h°q¸!«n¸RÑ.?Ñ?Ðà  aÐ(:Ñ&:Ñ!:Ñ;ÐØŸZ™ZÐ(:Ó;Ðà!Ÿz™zò&ò&ò&ò%ò+ò&ò%ð1&ð6 .0¯]©]ð9  *ó  <Ðô@ 	œ×,Ñ,Ð-?ÀÓCØ,°4ö	9r%   c                 óà   — t        j                  t        j                  dd«      d«      sJ ‚t	        t        j                  |j                  dg«      d«      |j                  dg«      d¬«       y )Nr   g<~“ö?ç      ð?r   gÁîïè¨?g•Ö&è.>©Úatol)ÚmathÚiscloser   Úgauss_spliner   r   )r   r   s     r#   Útest_gauss_splinezTestBSplines.test_gauss_splinew   sV   € ä�|‰|œF×/Ñ/°°1Ó5Ð7HÔIÐIÐIäœ×+Ñ+¨B¯J©J¸°tÓ,<¸aÓ@ØŸ
™
 J <Ó0°tö	
r%   Tz$deliberate: array-likes are accepted©Únp_onlyÚreasonc                 óv   — g d¢}t        t        j                  |d«      t        j                  g d¢«      «       y )N)ç      ð¿ç        r9   é   )ç¡«„Y.¼Ã?gyeÍ~“æ?r<   )r   r   r3   r   r   )r   r   Úknotss      r#   Útest_gauss_spline_listz#TestBSplines.test_gauss_spline_list   s-   € ò "ˆÜœF×/Ñ/°°qÓ9ÜŸJ™JÒ'JÓKõ	
r%   c                 óØ  — t        t        j                  |j                  dg«      «      |j                  dg|j                  ¬«      «       |j                  g d¢|j                  ¬«      }t        t        j                  |j                  g d¢«      d«      |«       |j                  g d¢|j                  ¬«      }t        t        j                  |j                  g d¢«      «      |«       y )Nr   r:   r   )gúû{ß®]ó?gzU%™Îý?gðßzè@gŠÂ6ûfw@gvenß'@©r.   r   r;   é   é   r   )g¥ß|òÉ-é?g>ï!<m @gå6Lúœÿ@glMˆóO”@g>}›‘×@)r   r   Ú	cspline1dr   r   r   )r   r   Úc1dÚc1d0s       r#   Útest_cspline1dzTestBSplines.test_cspline1dˆ   s·   € äœ×(Ñ(¨¯©°Q°C«Ó9ØŸ
™
 B 4¨r¯z©z˜
Ó:ô	<à�j‰jò &Ø-/¯Z©Zð ó 9ˆô 	œ×(Ñ(¨¯©Ò4DÓ)EÀqÓIÈ3ÔOØ�z‰zò 'Ø.0¯j©jð ó :ˆäœ×(Ñ(¨¯©Ò4DÓ)EÓFÈÕMr%   c                 ó  — t        t        j                  |j                  dg«      «      |j                  dg|j                  ¬«      «       t        t        t        j                  |j                  g d¢«      d«       t        t        t        j                  |j                  g d¢«      d«       |j                  g d¢|j                  ¬«      }t        t        j                  |j                  g d¢|j                  ¬«      «      |«       y )Nr   r:   r   r@   r.   r9   )g)ù`ßOë?gAkúÃ2 @g„ž‹Žýÿ@g‚oçÎ@gÀ5Á�Ú•@)r   r   Ú	qspline1dr   r   r
   Ú
ValueErrorr   )r   r   Úq1d0s      r#   Útest_qspline1dzTestBSplines.test_qspline1d”   s¾   € äœ×(Ñ(¨¯©°Q°C«Ó9ØŸ
™
 B 4¨r¯z©z˜
Ó:ô	<ô 	Œzœ6×+Ñ+¨R¯Z©ZÒ8HÓ-IÈ2ÔNÜŒzœ6×+Ñ+¨R¯Z©ZÒ8HÓ-IÈ3ÔOØ�z‰zò 'Ø.0¯j©jð ó :ˆäÜ×Ñ˜RŸZ™ZÒ(8ÀÇ
Á
˜ZÓKÓLÈdõ	
r%   Úcupyz&https://github.com/cupy/cupy/pull/9484©r7   c           	      ó  — t        j                  |j                  ddg|j                  ¬«      |j                  dg|j                  ¬«      «      }t	        ||j                  dg|j                  ¬«      «       t        j                  |j                  g d¢|j                  ¬«      |j                  g |j                  ¬«      «      }t        ||j                  g |j                  ¬«      «       t        j                  |j                  g d¢|j                  ¬«      |j                  dg|j                  ¬«      «      }t	        ||j                  dg|j                  ¬«      «       g d¢}|d   |d   z
  }g d	¢}|j                  g d
¢«      }|j                  t        j                  t        |«      «      «      }|j                  g d¢|j                  ¬«      }t	        t        j                  ||j                  |«      ||d   ¬«      |«       t        j                  t        d¬«      5  t        j                  |j                  g |j                  ¬«      |j                  dg|j                  ¬«      «       d d d «       y # 1 sw Y   y xY w)Nr:   r   r   ©r.   r   r   r9   gÚÁQUUÕ?©
éýÿÿÿéþÿÿÿéÿÿÿÿr   r   r   r;   rA   rB   é   r   ©&g      Àg      Àg      Àg      Àg      Àg      Àg      Àg      Àg       Àg      ø¿r9   g      à¿r:   ç      à?r.   g      ø?ç       @ç      @ç      @g      @ç      @g      @g      @ç      @ç      @g      @g      @g      @ç       @g      !@g      "@g      #@g      $@g      %@g      &@g      '@g      (@g      )@©
gw¾Ÿ/Ý@çÛù~j¼t@çé&1¬@çZd;ßÏ@çð§ÆK7	@ç¬Zd»@çåÐ"Ûù~@çj¼t“„@ç¼t“Vö?çÇK7‰A`@)&ra   çúSWü®©@r`   ç7.ëO­@r_   ç0†0†‹/@g)-3×/Ý@rj   r_   ri   r`   rh   ra   çú^…Œ:@rb   ç4Eãývõ@rc   çc4~#².@rd   çãuyJ9©@re   çý¶/¹´~	@rf   ç·Y@‘¼ý@rg   rp   rf   ro   re   rn   rd   rm   rc   rl   rb   rk   ra   rh   ©ÚdxÚx0ú+Spline coefficients 'cj' must not be empty.©Úmatch)r   Úcspline1d_evalr   r   r   r   rC   r	   Úpytestr
   rI   ©	r   r   ÚrÚxrr   ÚnewxÚyÚcjÚnewys	            r#   Útest_cspline1d_evalz TestBSplines.test_cspline1d_eval¡   s  € ô ×!Ñ! "§*¡*¨b°!¨W¸B¿J¹J *Ó"GØ!Ÿz™z¨2¨$°b·j±j˜zÓAóCˆä˜˜2Ÿ:™: r d°"·*±*˜:Ó=Ô>ä×!Ñ! "§*¡*ªZ¸r¿z¹z *Ó"JØ!Ÿz™z¨"°B·J±J˜zÓ?óAˆä˜˜2Ÿ:™: b°·
±
˜:Ó;Ô<ô ×!Ñ! "§*¡*ª[ÀÇ
Á
 *Ó"KØ"$§*¡*¨d¨V¸2¿:¹: *Ó"FóHˆä˜˜2Ÿ:™: z l¸"¿*¹*˜:ÓEÔFâ-ˆØˆq‰T�A�a‘D‰[ˆòˆð �J‰Jò &ó 'ˆà�Z‰Zœ×(Ñ(Ô):¸1Ó)=Ó>Ó?ˆØ�z‰zò :ð BDÇÁð ó Mˆô 	Ü×!Ñ! " b§j¡j°Ó&6¸2À!ÀAÁ$ÔGÈô	
ô �]‰]œ:Ø"OöQä×!Ñ! "§*¡*¨R°r·z±z *Ó"BØ"$§*¡*¨c¨U¸"¿*¹* *Ó"EôG÷Q÷ Qñ Qús   È&AI=É=Jc                 óf  — t        t        j                  |j                  ddg«      |j                  dg«      «      |j                  dg«      «       t	        t        j                  |j                  g d¢«      |j                  g «      «      |j                  g «      «       t        j                  |j                  g d¢|j
                  ¬«      |j                  dg|j
                  ¬«      «      }t	        ||j                  dg|j
                  ¬«      «       g d¢}|d   |d   z
  }g d	¢}|j                  g d
¢«      }t        j                  |«      }|j                  g d¢|j
                  ¬«      }t        j                  ||j                  ||j
                  ¬«      ||d   ¬«      }t        ||«       t        j                  t        d¬«      5  t        j                  |j                  g |j
                  ¬«      |j                  dg|j
                  ¬«      «       d d d «       y # 1 sw Y   y xY w)Nr:   r   rO   r   r9   g      Ð?rP   r   rU   r^   )&ra   çTW½
ú@r`   çâ©oR¼@r_   ç¡âîbP¨@geW÷/Ý@r„   r_   rƒ   r`   r‚   ra   çäÌá Bà@rb   çêHGœÂ(@rc   çnfWÎœ=@rd   ç%Ýd	O@re   çuð#éè	@rf   ç‰)C¹@rg   rŠ   rf   r‰   re   rˆ   rd   r‡   rc   r†   rb   r…   ra   r‚   rq   rt   ru   )
r   r   Úqspline1d_evalr   r   r   rH   rx   r
   rI   ry   s	            r#   Útest_qspline1d_evalz TestBSplines.test_qspline1d_evalÊ   sÏ  € ô 	œ×-Ñ-¨b¯j©j¸"¸a¸Ó.AÀ2Ç:Á:ÈrÈdÓCSÓTØŸ
™
 B 4Ó(ô	
ô 	œ×-Ñ-¨b¯j©jºÓ.DÀbÇjÁjÐQSÃnÓUØŸ
™
 2›ô	
ô
 ×!Ñ! "§*¡*ª[ÀÇ
Á
 *Ó"KØ"$§*¡*¨d¨V¸2¿:¹: *Ó"FóHˆä˜˜2Ÿ:™: t f°B·J±J˜:Ó?Ô@â-ˆØˆq‰T�A�a‘D‰[ˆòˆð �J‰Jò &ó 'ˆä×Ñ˜aÓ ˆØ�z‰zò :ð BDÇÁð ó Mˆô ×!Ñ!Ø�—
‘
˜4 r§z¡z�
Ó2°r¸aÀ¹dô
ˆô 	˜˜4Ô ä�]‰]œ:Ø!NöPä×!Ñ! "§*¡*¨R°r·z±z *Ó"BØ"$§*¡*¨c¨U¸"¿*¹* *Ó"EôG÷P÷ Pñ Pús   ÇAH'È'H0N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r$   r,   r3   r4   Úskip_xp_backendsr>   rC   rF   rH   rK   Úxfail_xp_backendsrw   r€   r‹   rŒ   © r%   r#   r   r      s<  „ ñHñ
 �v×+Ñ+Ó,ñ/+ó -ð/+ñb �v×+Ñ+Ó,ñ(9ó -ð(9ñT �v×*Ñ*Ó+ñ
ó ,ð
ñ ˜dÐ+QÔRÙ�v×*Ñ*Ó+ñ
ó ,ó Sð
ñ �v×'Ñ'Ó(ñ	Nó )ð	Nñ �v×'Ñ'Ó(ñ

ó )ð

ñ �vÐ&NÔOÙ�v×,Ñ,Ó-ñ%Gó .ó Pð%GñN �vÐ&NÔOÙ�v×,Ñ,Ó-ñ%Gó .ó Pñ%Gr%   r   T)r6   c                   ó¾  — e Zd Zd„ Zd„ Zej                  j                  dej                  e
ej                  eej                  eg«      d„ «       Z edd¬«      ej                  j                  dej                  e
ej                  eej                  eg«      d„ «       «       Z edd¬«      ej                  j%                  d	¬
«      d„ «       «       Z edd¬«      ej                  j%                  d¬
«      ej                  j(                  ej                  j                  dej                  e
ej                  eej                  eg«      d„ «       «       «       «       Zy)ÚTestSepfir2dc           	      óD  — |j                  g d¢«      }t        j                  j                  dd«      }|j                  |«      }t	        j
                  |||dd  «       t        j                  t        d¬«      5  t	        j
                  |||dd  «       d d d «       t        j                  t        d¬«      5  t	        j
                  ||dd  |«       d d d «       t        j                  t        d¬«      5  t	        j
                  ||j                  |d	«      |«       d d d «       t        j                  t        d¬«      5  t	        j
                  |||j                  |d	«      «       d d d «       y # 1 sw Y   ŒÞxY w# 1 sw Y   Œ¬xY w# 1 sw Y   ŒmxY w# 1 sw Y   y xY w)
N©r.   rW   rZ   rW   r.   r'   é	   r   z
odd lengthru   r   úobject too deep)r   rS   )
r   r   r   r   r   Úsepfir2drx   r
   rI   Úreshape©r   r   ÚfiltÚimages       r#   Útest_sepfir2d_invalid_filterz)TestSepfir2d.test_sepfir2d_invalid_filterü   s#  € Ø�z‰zÒ3Ó4ˆÜ—	‘	—‘˜q !Ó$ˆØ—
‘
˜5Ó!ˆä�‰˜˜t T¨!¨" XÔ.ô �]‰]œ:¨\Ö:Ü�O‰O˜E 4¨¨a¨b¨Ô2÷ ;ä�]‰]œ:¨\Ö:Ü�O‰O˜E 4¨¨ 8¨TÔ2÷ ;ô �]‰]œ:Ð->Ö?Ü�O‰O˜E 2§:¡:¨d°GÓ#<¸dÔC÷ @ä�]‰]œ:Ð->Ö?Ü�O‰O˜E 4¨¯©°D¸'Ó)BÔC÷ @Ð?÷ ;Ð:úç:Ð:ú÷ @Ð?úç?Ð?ús0   Á:E2Â8E>Ã6(F
Å(FÅ2E;Å>FÆ
FÆFc                 óÖ  — |j                  g d¢«      }t        j                  j                  dd«      }|j                  |«      }t	        j
                  t        d¬«      5  t        j                  |j                  |d«      ||«       d d d «       t	        j
                  t        d¬«      5  t        j                  |dd d …f   ||«       d d d «       y # 1 sw Y   ŒLxY w# 1 sw Y   y xY w)Nr—   é   r™   ru   )rA   rA   rA   zobject of too small depthr   )
r   r   r   r   rx   r
   rI   r   rš   r›   rœ   s       r#   Útest_sepfir2d_invalid_imagez(TestSepfir2d.test_sepfir2d_invalid_image  s«   € Ø�z‰zÒ3Ó4ˆÜ—	‘	—‘˜q !Ó$ˆØ—
‘
˜5Ó!ˆô �]‰]œ:Ð->Ö?Ü�O‰O˜BŸJ™J u¨iÓ8¸$ÀÔE÷ @ô �]‰]œ:Ð-HÖIÜ�O‰O˜E !¢Q $™K¨¨tÔ4÷ JÐI÷ @Ð?ú÷ JÐIús   Á (CÂ+CÃCÃC(Údtypc                 óŠ  — t        j                  g d¢g d¢g d¢g d¢g|¬«      }g d¢}dg}t        j                  |||«      }t        |   }t        j
                  g d¢g d¢g d¢g d¢g|¬«      }t        ||d¬«       t        j                  |||«      }t        j
                  g d¢g d¢g d¢g d¢g|¬«      }t        ||d¬«       y )	N)r   r   r;   r;   r   r   r   ©rV   r   rV   r   )rX   rZ   r[   r[   rZ   rX   g¼‰Ø—²Òœ<r/   )rW   rZ   r\   r\   rZ   rW   )r   Úarrayr   rš   Úsepfir_dtype_mapr   r   )	r   r£   r   ÚaÚh1Úh2ÚresultÚdtÚexpecteds	            r#   Útest_simplezTestSepfir2d.test_simple  sÎ   € ô
 �H‰HÒ(Ú(Ú(Ú(ð*ð 26ô7ˆò ˆØˆSˆÜ—‘  B¨Ó+ˆÜ˜dÑ#ˆÜ—:‘:Ò=Ú=Ú=Ú=ð?ð GIôJˆô 	˜ ¨uÕ5ä—‘  B¨Ó+ˆÜ—:‘:Ò7Ú7Ú7Ú7ð9ð ACôDˆô 	˜ ¨uÖ5r%   TzTODO: convert this testr5   c                 óF  — t        j                  g d¢g d¢g d¢g d¢g«      }g d¢dg}}t        j                  |d d …d d d…f   ||«      }t        j                  |d d …d d d…f   j	                  «       ||«      }t        ||d¬«       |j                  |j                  k(  sJ ‚y )N)	r   r   r;   r;   r   r   r   r   r;   r¥   r   r   çVçž¯Ò<r/   )r   r¦   r   rš   Úcopyr   r   )r   r£   r   r¨   r©   rª   Úresult_stridedÚresult_contigs           r#   Útest_stridedzTestSepfir2d.test_strided5  s™   € ô
 �H‰HÒ1Ú0Ú0Ú0ð2ó 3ˆò   ˆBˆÜŸ™¨ª1©c°¨c¨6©°B¸Ó;ˆÜŸ™¨ª!©S¨q¨S¨&©	¯©Ó(8¸"¸bÓAˆÜ˜¨¸EÕBØ×#Ñ# }×':Ñ':Ò:Ð:Ñ:r%   z#XXX: filt.size > image.shape: flakyrM   c           
      ó  — t        j                  g d¢«      }t         j                  j                  dd«      }t        j                  g d¢g d¢g d¢g d¢g«      }t        t        j                  |||d d d…   «      |«       y )N)r.   rW   rZ   rW   r.   rY   rW   rA   )gÕæ!SB@gÂ¿3=>@gs€`Ž[C@g›sðLhðE@)gêÍ¨ù*C@g5ëŒï‹éA@g;©/K;ÃE@g<f 2þïE@)g­®€¢E@g>#ÁjD@gŠéB¬þ`G@g]n0Ôa#F@)gÙ•–‘z�H@g¦|ªF×C@gÇœgìKÌE@gŠ�CýŠF@r;   )r   r¦   r   r   r   r   r   rš   )r   r   r�   rž   r­   s        r#   Útest_sepfir2d_strided_2z$TestSepfir2d.test_sepfir2d_strided_2D  si   € ô
 �x‰xÒ;Ó<ˆÜ—	‘	—‘˜q !Ó$ˆä—:‘:ÒKÚ LÚ LÚ LðNó Oˆô 	œŸ™¨¨t°T¹#¸A¸#±YÓ?ÀÕJr%   z*XXX: flaky. pointers OOB on some platformsc                 ó2  — t        j                  g d¢|¬«      }t        j                  g d¢g d¢g d¢g d¢g d¢g|¬«      }g d¢g d	¢g d
¢g d¢g d¢g}t        j                  |«      }t        j                  |||d d d…   «      }t        ||d¬«       |j                  t        |   k(  sJ ‚g d¢g d¢g d¢g d¢g d¢g}t        j                  |«      }t        j                  ||d d d…   |d d d…   «      }t        ||d¬«       |j                  t        |   k(  sJ ‚y )N)r   r   rA   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   )g     À^@g     @Y@g     ÀV@ç      a@g     À_@)ç      `@g     @_@g     €_@ç      c@g      d@)r¸   g      a@g     Àb@g     @d@g      f@)r¹   g      _@g     €`@g     €b@g     `b@)g      e@g     Àc@rº   g     €d@g      a@r;   r°   r/   )g      6@g     €A@ç     €D@g      ?@ç     €G@)g      ;@ç     €C@ç      H@r¼   g     €K@)g     €@@g      E@g     €H@g     €J@g     €M@)r½   g      F@r»   g      B@r¾   )g     ÀP@g      O@r¼   g      A@g      G@)r   r¦   r   r   rš   r   r   r§   )r   r£   r   r�   rž   r­   r«   s          r#   Útest_sepfir2d_strided_3z$TestSepfir2d.test_sepfir2d_strided_3R  s  € ô �x‰xÒ-°TÔ:ˆÜ—
‘
šOÚ+Ú+Ú+Ú+ð	-ð 59ô	:ˆò 3Ú2Ú2Ú2Ú2ð	4ˆô
 —:‘:˜hÓ'ˆÜ—‘ ¨¨d±3°Q°3©iÓ8ˆÜ˜ ¨uÕ5Ø�|‰|Ô/°Ñ5Ò5Ð5Ð5â-Ú-Ú-Ú-Ú-ð	/ˆô
 —:‘:˜hÓ'ˆÜ—‘ ¨©S¨q¨S©	°4¹¸!¸±9Ó=ˆÜ˜ ¨uÕ5Ø�|‰|Ô/°Ñ5Ò5Ð5Ñ5r%   N)r�   rŽ   r�   rŸ   r¢   rx   ÚmarkÚparametrizer   Úuint8ÚintÚfloat32ÚfloatÚ	complex64Úcomplexr®   r‘   r´   Úxfailr¶   Ú	fail_asanr¿   r“   r%   r#   r•   r•   ú   s[  „ òDò&
5ð ‡[�[×Ñ˜VØ	�‰�3˜Ÿ
™
 E¨2¯<©<¸ÐAóñ6óð6ñ. ˜dÐ+DÔEØ‡[�[×Ñ˜VØ	�‰�3˜Ÿ
™
 E¨2¯<©<¸ÐAóñ	;óó Fð	;ñ ˜dÐ+DÔEØ‡[�[×ÑÐCÐÓDñ
Kó Eó Fð
Kñ ˜dÐ+DÔEØ‡[�[×ÑÐJÐÓKØ‡[�[×ÑØ‡[�[×Ñ˜VØ	�‰�3˜Ÿ
™
 E¨2¯<©<¸ÐAóñ6óó ó Ló Fñ6r%   r•   c                 óê   — t         j                  j                  d«      }|j                  dd«      }| j	                  |t        | «      ¬«      }t        j                  |d«      }t        |«      | k(  sJ ‚y )NiWÖ
éG   éI   r   r]   )	r   r   r   r   r   r   r   Ú	cspline2dr   ©r   r    rž   r«   s       r#   Útest_cspline2drÏ   x  sc   € ä
�)‰)×
Ñ
 	Ó
*€CØ�H‰H�R˜Ó€EØ�J‰J�uÔ$4°RÓ$8ˆJÓ9€EÜ×Ñ˜e SÓ)€FÜ˜6Ó" bÒ(Ð(Ñ(r%   c                 óè   — t         j                  j                  d«      }|j                  dd«      }| j	                  |t        | «      ¬«      }t        j                  |«      }t        |«      | k(  sJ ‚y )NiWÖ
rË   rÌ   r   )	r   r   r   r   r   r   r   Ú	qspline2dr   rÎ   s       r#   Útest_qspline2drÒ   �  sa   € ä
�)‰)×
Ñ
 	Ó
*€CØ�H‰H�R˜Ó€EØ�J‰J�uÔ$4°RÓ$8ˆJÓ9€EÜ×Ñ˜eÓ$€FÜ˜6Ó" bÒ(Ð(Ñ(r%   )!r1   Únumpyr   Úscipy._lib._array_apir   r   r   r   r   r   r	   rx   r
   Úscipyr   rÀ   r‘   r’   Úlazy_xp_modulesr   rÂ   rÄ   rÃ   r   rÅ   rÆ   rÇ   r§   r•   rÍ   rÏ   rÑ   rÒ   r“   r%   r#   Ú<module>r×      sý   ðã Û ÷÷ ñ ó Ý å à—;‘;×/Ñ/Ð Ø—K‘K×1Ñ1Ð à�(€÷]Gñ ]GðB —H‘H˜bŸj™j¨#¨r¯z©zØ—J‘J §
¡
¨E°5Ø—L‘L "§,¡,°¸ðBÐ ñ
 ˜$Ô÷z6ð z6ó  ðz6ñz �6×#Ñ#Ó$ñ)ó %ð)ñ �6×#Ñ#Ó$ñ)ó %ñ)r%   