Ë
    âQ(h;,  ã                   óÐ   — d dl Zd dlmZ d dlmZ d dlmZ d dlZd dl	m
Z
mZ d dlmZmZ d dlmZ dd„Z G d	„ d
«      Zeej(                  ej*                  eefZ G d„ d«      Zd„ Zy)é    N)Úproduct)Úxp_assert_close)Úraises)ÚupfirdnÚfirwin)Ú_output_lenÚ_upfirdn_modes)Ú	_pad_testc                 ó  — t        j                  |«      }t        j                  t        | «      |z  | j                  «      }| |dd|…<   t        j
                  ||«      dd|…   dt        t        |«      t        | «      ||«       }|S )zpNaive upfirdn processing in Python.

    Note: arg order (x, h) differs to facilitate apply_along_axis use.
    N)ÚnpÚasarrayÚzerosÚlenÚdtypeÚconvolver   )ÚxÚhÚupÚdownÚouts        ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/scipy/signal/tests/test_upfirdn.pyÚupfirdn_naiver   /   ss   € ô
 	�
‰
�1‹€AÜ
�(‰(”3�q“6˜B‘; §¡Ó
(€CØ€C‰ˆ"ˆ�IÜ
�+‰+�a˜Ó
™f ˜fÑ
%Ð&L¤{´3°q³6¼3¸q»6À2ÀtÓ'LÐ
M€CØ€Jó    c                   ó$   — e Zd ZdZd„ Zd„ Zdd„Zy)ÚUpFIRDnCasezTest _UpFIRDn objectc                 óª   — || _         || _        t        j                  |«      | _        || _        t        j                  j                  d«      | _        y )Né   )	r   r   r   Ú
atleast_1dr   Úx_dtypeÚrandomÚRandomStateÚrng)Úselfr   r   r   r   s        r   Ú__init__zUpFIRDnCase.__init__=   s=   € ØˆŒØˆŒ	Ü—‘˜qÓ!ˆŒØˆŒÜ—9‘9×(Ñ(¨Ó,ˆ�r   c                 ó@  — | j                  t        j                  d| j                  «      «       | j                  t        j                  d| j                  «      «       | j                  j                  d«      j                  | j                  «      }| j                  t        j                  t        j                  fv r!|d| j                  j                  d«      z  z  }| j                  |«       | j                  t        j                  d«      j                  | j                  «      «       d} | j                  j
                  |Ž j                  | j                  «      }| j                  t        j                  t        j                  fv r|d | j                  j
                  |Ž z  z  }t        t        |«      «      D ]  }| j                  ||¬«       Œ |d d …d d d…dd d…f   j                  }t        t        |«      «      D ]  }| j                  ||¬«       Œ y )Né   é
   ù              ð?)é   é   é   ©Úaxisr)   r*   )Úscrubr   Úonesr   r"   ÚrandnÚastypeÚ	complex64Ú
complex128ÚarangeÚranger   ÚT)r#   r   Úsizer-   s       r   Ú__call__zUpFIRDnCase.__call__D   sŠ  € à�
‰
”2—7‘7˜1˜dŸl™lÓ+Ô,à�
‰
”2—7‘7˜2˜tŸ|™|Ó,Ô-à�H‰H�N‰N˜2Ó×%Ñ% d§l¡lÓ3ˆØ�<‰<œBŸL™L¬"¯-©-Ð8Ñ8Ø��d—h‘h—n‘n RÓ(Ñ(Ñ(ˆAØ�
‰
�1Œà�
‰
”2—9‘9˜R“=×'Ñ'¨¯©Ó5Ô6àˆØˆD�H‰H�N‰N˜DÐ!×(Ñ(¨¯©Ó6ˆØ�<‰<œBŸL™L¬"¯-©-Ð8Ñ8Ø��n�d—h‘h—n‘n dÐ+Ñ+Ñ+ˆAÜœ#˜d›)Ó$ò 	%ˆDØ�J‰J�q˜tˆJÕ$ð	%àŠa‘�1��a�d˜�dˆl‰O×ÑˆÜœ#˜d›)Ó$ò 	%ˆDØ�J‰J�q˜tˆJÕ$ñ	%r   c                 ó~  — t        j                  t        ||| j                  | j                  | j
                  «      }t        t        | j                  «      |j                  |   | j                  | j
                  «      }|j                  |   |k(  sJ ‚t        | j                  || j                  | j
                  |¬«      }|j                  |   |k(  sJ ‚|j                  |j                  k(  sJ ‚| j                  j                  |j                  f}t        d„ |D «       «      r|j                  t         j                  k(  sØJ ‚t         j                  |v r1t         j                  |v r|j                  t         j                  k(  s•J ‚t        d„ |D «       «      r|j                  t         j                  k(  sdJ ‚t         j                  |v st         j                  |v r|j                  t         j                  k(  s!J ‚|j                  t         j                  k(  sJ ‚t!        |j#                  |j                  «      |«       y )Nr,   c              3   óB   K  — | ]  }|t         j                  k(  –— Œ y ­w©N)r   r2   ©Ú.0Úds     r   ú	<genexpr>z$UpFIRDnCase.scrub.<locals>.<genexpr>d   s   è ø€ Ò1 Qˆq”B—L‘LÕ Ñ1ùó   ‚c              3   óB   K  — | ]  }|t         j                  k(  –— Œ y ­wr;   )r   Úfloat32r<   s     r   r?   z$UpFIRDnCase.scrub.<locals>.<genexpr>h   s   è ø€ Ò1 Q�”b—j‘j•Ñ1ùr@   )r   Úapply_along_axisr   r   r   r   r   r   Úshaper   r   Úallr2   rB   r3   Úfloat64r   r1   )r#   r   r-   ÚyrÚwant_lenÚyÚdtypess          r   r.   zUpFIRDnCase.scrub[   s˜  € Ü× Ñ ¤°°aØ!%§¡¨¯©°$·)±)ó=ˆäœs 4§6¡6›{¨A¯G©G°D©M¸4¿7¹7ÀDÇIÁIÓNˆØ�x‰x˜‰~ Ò)Ð)Ð)Ü�D—F‘F˜A˜tŸw™w¨¯	©	¸Ô=ˆØ�w‰w�t‰} Ò(Ð(Ð(Ø�w‰w˜"Ÿ(™(Ò"Ð"Ð"Ø—&‘&—,‘, §¡Ð(ˆÜÑ1¨&Ô1Ô1Ø—7‘7œbŸl™lÒ*Ð*Ð*Ü�\‰\˜VÑ#¬¯
©
°fÑ(<Ø—7‘7œbŸl™lÒ*Ð*Ð*ÜÑ1¨&Ô1Ô1Ø—7‘7œbŸj™jÒ(Ð(Ð(Ü�]‰]˜fÑ$¬¯©¸Ñ(>Ø—7‘7œbŸm™mÒ+Ð+Ð+à—7‘7œbŸj™jÒ(Ð(Ð(Ü˜Ÿ	™	 !§'¡'Ó*¨AÕ.r   N)éÿÿÿÿ)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r8   r.   © r   r   r   r   ;   s   „ Ùò-ò%ô./r   r   c                   ó  — e Zd Zd„ Zej
                  j                  dg d¢«      ej
                  j                  dg d¢«      d„ «       «       Zd„ Zej
                  j                  dddd	dg d
¢fddddg d¢fddddg d¢fddddg d¢fdddd	g d¢fg«      d„ «       Z	ej
                  j                  dg d¢«      d„ «       Z
ej
                  j                  de«      ej
                  j                  dd«      ej
                  j                  dg d¢«      d„ «       «       «       Zej
                  j                  de«      ej
                  j                  de«      ej
                  j                  d e edd«      «      «      d „ «       «       «       Zd!„ Zej
                  j                  d"e«      d#„ «       Zej
                  j                  d$ ed%gg d&¢eej(                  ej*                  ej,                  ej.                  g«      «      d'„ «       Zy())ÚTestUpfirdnc                 ó    — t        t        t        dgdgdd«       t        t        t        g dgdd«       t        t        t        dggdgdd«       y )Nr&   r   )Úassert_raisesÚ
ValueErrorr   )r#   s    r   Útest_valid_inputzTestUpfirdn.test_valid_inputv   sD   € Ü”j¤'¨A¨3°°°Q¸Ô:Ü”j¤'¨2°¨s°A°qÔ9Ü”j¤'¨Q¨C¨5°1°#°q¸!Õ<r   Úlen_h)r&   r)   r*   é   r+   Úlen_xc                 óà   — t        j                  |«      }d||dz  <   t        j                  |«      }t        ||dd«      }t        j                  ||dz  |dz
  dz  fd«      }t        ||«       y )Nç      ð?r)   r&   Úconstant)r   r   r/   r   Úpadr   )r#   rW   rY   r   r   rI   Úwants          r   Útest_singletonzTestUpfirdn.test_singleton{   si   € ô �H‰H�U‹OˆØˆˆ%�1‰*‰Ü�G‰G�E‹NˆÜ�A�q˜!˜QÓˆÜ�v‰v�a˜% 1™* u¨q¡y°QÑ&6Ð7¸ÓDˆÜ˜˜4Õ r   c                 óÎ   — t        ddgdgdd«      }t        |t        j                  ddg«      «       t        ddgddgdd«      }t        |t        j                  g d¢«      «       y )Nr&   r[   ç        )ra   r[   r[   )r   r   r   r   )r#   rI   s     r   Útest_shift_xzTestUpfirdn.test_shift_x†   sZ   € ä�Q˜�F˜R˜D ! QÓ'ˆÜ˜œ2Ÿ:™: s¨C jÓ1Ô2Ü�Q˜�F˜R ˜H a¨Ó+ˆÜ˜œ2Ÿ:™:¢oÓ6Õ7r   z len_h, len_x, up, down, expectedr)   r+   )r&   r   r   r   r*   é   )r&   r   r&   r   r&   rX   )r&   r   r   r   r&   )r&   r   r   r&   r   é   )r&   r   r   r&   r   r   r&   c                 óà   — t        j                  |«      }d|d<   t        j                  |«      }t        ||||«      }t        j                  |t         j
                  ¬«      }t        ||«       y )Nr[   r   ©r   )r   r   r/   r   r   rF   r   )	r#   rW   rY   r   r   Úexpectedr   r   rI   s	            r   Útest_length_factorszTestUpfirdn.test_length_factors�   sU   € ô �H‰H�U‹OˆØˆˆ!‰Ü�G‰G�E‹NˆÜ�A�q˜"˜dÓ#ˆÜ—:‘:˜h¬b¯j©jÔ9ˆÜ˜˜8Õ$r   zdown, want_len))r)   i—  )rd   i�  )éO   é   c                 óD  — t         j                  j                  d«      }t        t         j                  t         j
                  t        t        f}d}|D ]Ë  }|j                  |«      j                  |«      }|t         j
                  t         j                  fv r|d|j                  |«      z  z  }t        dd|z  d¬«      }t        ||d|«      }	t        ||d|¬	«      }
|
j                  |fk(  sJ ‚|	j                  d
   |
j                  d
   k(  sJ ‚t        |	|
dd¬«       ŒÍ y )Nr   i'  r(   é   r[   Úhamming)Úwindowr&   )r   r   r   gH¯¼šò×z>©ÚatolÚrtol)r   r    r!   ÚintrB   r2   ÚfloatÚcomplexr0   r1   r3   r   r   r   rD   r   )r#   r   rH   Úrandom_stateÚ	try_typesr7   r   r   r   ÚylrI   s              r   Útest_vs_convolvezTestUpfirdn.test_vs_convolve    s   € ô —y‘y×,Ñ,¨RÓ0ˆÜœ"Ÿ*™*¤b§l¡l´E¼7ÐCˆ	Øˆàò 
	9ˆEØ×"Ñ" 4Ó(×/Ñ/°Ó6ˆAØœŸ™¤r§}¡}Ð5Ñ5Ø�R˜,×,Ñ,¨TÓ2Ñ2Ñ2�ä�r˜2 ™9¨YÔ7ˆAÜ˜q ! Q¨Ó-ˆBÜ˜˜1 ¨Ô.ˆAØ—7‘7˜x˜kÒ)Ð)Ð)Ø—8‘8˜A‘; !§'¡'¨!¡*Ò,Ð,Ð,Ü˜B ¨°4Ö8ñ
	9r   r   r   )r[   r(   zup, down)©r&   r&   )r)   r)   )r*   r)   )r)   r*   c                 ó*   —  t        ||||«      «        y r;   )r   )r#   r   r   r   r   s        r   Útest_vs_naive_deltazTestUpfirdn.test_vs_naive_delta·   s   € ð 	*Œ�B˜˜a Ó)Õ+r   Úh_dtypezp_max, q_max)r'   éd   c                 óH   — | j                  ||||«      }|D ]	  } |«        Œ y r;   )Ú_random_factors)r#   r   r|   Úp_maxÚq_maxÚtestsÚtests          r   Útest_vs_naivezTestUpfirdn.test_vs_naive½   s.   € ð
 ×$Ñ$ U¨E°7¸GÓDˆØò 	ˆDÙ�Fñ	r   c           	      óî  — d}d}t         j                  j                  d«      }g }t        |«      D ]Á  }	||kD  r|nd}
||kD  r|nd}|j	                  |«      |
z   }|j	                  |«      |z   }|j	                  |«      dz   }t        j
                  |j	                  |«      «      }|j                  |«      }|t        u r|d|j	                  |«      z  z  }|j                  t        ||||«      «       ŒÃ |S )Nr*   é   r   r&   r(   )
r   r    r!   r5   Úrandintr   r1   rt   Úappendr   )r#   r€   r�   r|   r   Ún_repÚ	longest_hru   r‚   Ú_Úp_addÚq_addÚpÚqrW   r   s                   r   r   zTestUpfirdn._random_factorsÆ   sú   € ØˆØˆ	Ü—y‘y×,Ñ,¨RÓ0ˆØˆä�u“ò 	8ˆAà" Uš]‘E°ˆEØ" Uš]‘E°ˆEØ×$Ñ$ UÓ+¨eÑ3ˆAØ×$Ñ$ UÓ+¨eÑ3ˆAð !×(Ñ(¨Ó3°aÑ7ˆEÜ—‘˜l×2Ñ2°5Ó9Ó:ˆAØ—‘˜Ó!ˆAØœ'Ñ!Ø�R˜,×.Ñ.¨uÓ5Ñ5Ñ5�à�L‰Lœ Q¨¨1¨gÓ6Õ7ð	8ð  ˆr   Úmodec                 óV  — t        j                  g d¢t        ¬«      }d\  }}t        ||||¬«      }|dk(  rt        j                  g d¢«      }nÏ|dk(  rt        j                  g d¢«      }n²|d	k(  rt        j                  g d
¢«      }n•|dk(  rv|d   |d   z
  t        |«      dz
  z  }|d   t        j                  | dd«      |z  z   }|d   t        j                  d|dz   «      |z  z   }	t        j                  |||	f«      }nt        j                  |||f|¬«      }t        ||«       y)z@Test vs. manually computed results for modes not in numpy's pad.)r&   r)   r*   r&   rf   )rc   rc   ©ÚnpreÚnpostr�   Úantisymmetric)g      @r&   rK   éýÿÿÿéþÿÿÿrK   r&   r)   r*   r&   rK   r–   r—   rK   r&   r)   Úantireflect)r[   r)   r*   r&   rK   r   r&   r)   r*   r&   rK   r   r&   r)   r*   r&   Úsmooth)g      Àéüÿÿÿr–   r—   rK   r   r&   r)   r*   r&   rK   r–   éûÿÿÿiùÿÿÿi÷ÿÿÿiõÿÿÿÚlinerK   r   r&   ©r�   N)
r   Úarrayrs   r
   r   r   r4   Úconcatenater]   r   )
r#   r�   r   r“   r”   rI   Ú
y_expectedÚ	lin_slopeÚleftÚrights
             r   Útest_extensionszTestUpfirdn.test_extensionsÞ   s  € ô �H‰H’\¬Ô/ˆØ‰ˆˆeÜ�a˜d¨%°dÔ;ˆØ�?Ò"ÜŸ™ÚJóL‰Jà�]Ò"ÜŸ™ÚDóF‰Jà�XÒÜŸ™ÚNóP‰Jà�VŠ^Ø˜2™  1¡™¬#¨a«&°1©*Ñ5ˆIØ�Q‘4œ"Ÿ)™) T E¨1¨aÓ0°9Ñ<Ñ<ˆDØ�b‘EœBŸI™I a¨°©Ó3°iÑ?Ñ?ˆEÜŸ™¨¨q°%Ð(8Ó9‰JäŸ™  D¨% =°tÔ<ˆJÜ˜˜:Õ&r   zsize, h_len, mode, dtypeé   )rX   r+   é   c                 óf  — t         j                  j                  d«      }|j                  |«      j	                  |«      }|t         j
                  t         j                  fv r|d|j                  |«      z  z  }t        j                  dd|z   |j                  j                  ¬«      }t        ||dd|¬«      }|dz
  }	|dv rt        ||	|	|¬«      }
nt        j                  ||	|¬«      }
t        ||
ddd	¬«      }||	|	  }t        j                  |«      j                  d
z  x}}t        ||||¬«       y )Nr+   r(   r&   rf   )r   r   r�   )r•   r˜   r™   rœ   r’   r�   r\   g      Y@ro   )r   r    r!   r0   r1   r2   r3   r4   Úrealr   r   r
   r]   ÚfinfoÚepsr   )r#   r7   Úh_lenr�   r   ru   r   r   rI   ÚnpadÚxpadÚypadr    rp   rq   s                  r   Ú
test_modeszTestUpfirdn.test_modesö   s  € ô —y‘y×,Ñ,¨QÓ/ˆØ×Ñ˜tÓ$×+Ñ+¨EÓ2ˆØ”R—\‘\¤2§=¡=Ð1Ñ1Ø��l×(Ñ(¨Ó.Ñ.Ñ.ˆAÜ�I‰I�a˜˜U™¨!¯&©&¯,©,Ô7ˆä�A�q˜Q Q¨TÔ2ˆà�q‰yˆØÐEÑEä˜Q T°¸DÔA‰Dä—6‘6˜!˜T¨Ô-ˆDÜ�q˜$ 1¨1°:Ô>ˆØ˜$ ˜uÐ%ˆ
ä—h‘h˜u“o×)Ñ)¨CÑ/Ð/ˆˆtÜ˜˜:¨D°tÖ<r   N)rL   rM   rN   rV   ÚpytestÚmarkÚparametrizer_   rb   rh   rx   Ú_UPFIRDN_TYPESr{   Úlistr   r„   r   r	   r¤   r   rB   rF   r2   r3   r¯   rP   r   r   rR   rR   t   s(  „ ò=ð
 ‡[�[×Ñ˜W¢oÓ6Ø‡[�[×Ñ˜W¢oÓ6ñ!ó 7ó 7ð!ò8ð ‡[�[×ÑÐ?Ø	
ˆAˆq�!’\Ð"Ø	
ˆAˆq�!’_Ð%Ø	
ˆAˆq�!’_Ð%Ø	
ˆAˆq�!’_Ð%Ø	
ˆB��1Ò+Ð,ðBó ñ%óð%ð ‡[�[×ÑÐ-ò 0ó ñ
9óð
9ð$ ‡[�[×Ñ˜Y¨Ó7Ø‡[�[×Ñ˜S (Ó+Ø‡[�[×Ñ˜ZÒ)IÓJñ,ó Kó ,ó 8ð,ð ‡[�[×Ñ˜Y¨Ó7Ø‡[�[×Ñ˜Y¨Ó7Ø‡[�[×Ñ˜^Ù!¡'¨)°YÓ"?Ó@óBñóBó 8ó 8ðò
ð0 ‡[�[×Ñ˜V ^Ó4ñ'ó 5ð'ð. ‡[�[×ÑØ"ÙØˆCÚØØ�Z‰Z˜Ÿ™ R§\¡\°2·=±=ÐAó		
óñ=óñ=r   rR   c                  ó>   — d} d}d}d}t        | |||«      }|dk(  sJ ‚y )Nié  i áõi@  i¹  i¸6S)r   )rW   Úin_lenr   r   Úout_lens        r   Útest_output_len_long_inputr¸     s8   € ð €EØ€FØ	€BØ€DÜ˜% ¨¨TÓ2€Gð �hÒÐÑr   ry   )Únumpyr   Ú	itertoolsr   Úscipy._lib._array_apir   r°   r   rT   Úscipy.signalr   r   Úscipy.signal._upfirdnr   r	   Úscipy.signal._upfirdn_applyr
   r   r   rr   rB   r2   rs   rt   r³   rR   r¸   rP   r   r   ú<module>r¿      s\   ðóF Ý å 1Ý *Û ç (ß =Ý 1ó	÷3/ñ 3/ðl �r—z‘z 2§<¡<°¸Ð@€÷^=ñ ^=óBr   