Ë
    0Ò^j_B  ã                   ó&  — d dl Zd dlZd dlm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mZ d„ Zdd„Zd„ Zd„ Zd	„ Z G d
„ d«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Z e
e«       G d„ d«      «       Z e
e«       G d„ d«      «       Zy)é    N)Úraises)Úassert_almost_equalÚxp_assert_equalÚxp_assert_closeÚ_xp_copy_to_numpyÚmake_xp_test_caseÚxp_default_dtype)ÚsquareÚsawtoothc                 ó"   — |||z
  | z  |z  z   }|S ©N© ©ÚtÚf0Úf1Út1Úfs        úl/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/scipy/signal/tests/test_waveforms.pyÚchirp_linearr      s   € Ø
ˆb�2‰g˜‰]˜RÑÑ€AØ€Hó    c                 ód   — |r|||z
  | dz  z  |dz  z  z   }|S |||z
  || z
  dz  z  |dz  z  z
  }|S )Né   r   )r   r   r   r   Úvertex_zeror   s         r   Úchirp_quadraticr      sW   € ÙØ�"�r‘'˜Q ™TÑ! B¨¡EÑ)Ñ)ˆð €Hð �"�r‘'˜b 1™f q™[Ñ(¨2¨q©5Ñ0Ñ0ˆØ€Hr   c                 ó"   — |||z  | |z  z  z  }|S r   r   r   s        r   Úchirp_geometricr      s   € Ø
ˆb�‰e�q˜‘t‰_Ñ€AØ€Hr   c                 ó4   — ||z  |z  ||z
  | z  ||z  z   z  }|S r   r   r   s        r   Úchirp_hyperbolicr   "   s*   € Ø
ˆ2‰ˆb‰�R˜"‘W˜a‘K " R¡%Ñ'Ñ(€AØ€Hr   c                 ó”   — | d   | d   z
  }t        j                  |«      dt         j                  z  z  |z  }d| dd | dd z   z  }||fS )zR
    Compute theta'(t)/(2*pi), where theta'(t) is the derivative of theta(t).
    é   r   r   ç      à?Néÿÿÿÿ)ÚnpÚdiffÚpi)r   ÚthetaÚdtr   Útfs        r   Úcompute_frequencyr*   '   sW   € ð 
ˆ1‰��!‘‰€BÜ
�‰�‹˜œ"Ÿ%™%™Ñ  2Ñ%€AØ	ˆa��ˆe�a˜˜�f‰nÑ	€BØˆqˆ5€Lr   c                   ó�   — 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„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú	TestChirpc                 óP   — t        j                  ddddd¬«      }t        |d«       y )Nr   ç      ð?ç       @Úlinear©r   r   r   r   Úmethod©Ú	waveformsÚchirpr   ©ÚselfÚws     r   Útest_linear_at_zerozTestChirp.test_linear_at_zero5   s"   € Ü�O‰O˜a C¨C°CÀÔIˆÜ˜A˜sÕ#r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nr0   r.   r/   r   éd   ç�íµ ÷Æ°>©r$   Úlinspacer4   Ú_chirp_phaser*   ÚmaxÚabsr   ©
r7   r2   r   r   r   r   Úphaser)   r   Úabserrs
             r   Útest_linear_freq_01zTestChirp.test_linear_freq_019   sƒ   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜sÓ#ˆÜ×&Ñ& q¨"¨b°"°fÓ=ˆÜ! ! UÓ+‰ˆˆAÜ—‘œŸ™˜q¤<°°B¸¸BÓ#?Ñ?Ó@ÓAˆØ˜Š}Ð‰}r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nr0   ç      i@ç      Y@ç      $@r   r;   r<   r=   rB   s
             r   Útest_linear_freq_02zTestChirp.test_linear_freq_02D   sƒ   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜sÓ#ˆÜ×&Ñ& q¨"¨b°"°fÓ=ˆÜ! ! UÓ+‰ˆˆAÜ—‘œŸ™˜q¤<°°B¸¸BÓ#?Ñ?Ó@ÓAˆØ˜Š}Ð‰}r   c                 ó@  — d}d}d}d}t        j                  d|d«      }t        j                  |||||d¬«      }t        j                  |||||d¬«      }t        j                  |«      }t        j                  |«      }	|t        j
                  |	«      z
  }
|
d	k  sJ ‚y )
Nr0   r.   r/   r   r;   F)ÚcomplexTr<   )r$   r>   r4   r5   ÚvarÚreal)r7   r2   r   r   r   r   Úw_realÚ	w_complexÚw_pwr_rÚw_pwr_cÚerrs              r   Útest_linear_complex_powerz#TestChirp.test_linear_complex_powerO   s”   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜sÓ#ˆÜ—‘  B¨¨B°ÀÔFˆÜ—O‘O A r¨2¨r°6À4ÔHˆ	Ü—&‘&˜“.ˆÜ—&‘&˜Ó#ˆð œŸ™ Ó(Ñ(ˆà�TŠzÐ‰zr   c                 óR   — t        j                  dddddd¬«      }t        |d«       y )Nr   ç      $Àr.   r0   T©r   r   r   r   r2   rL   ù      ð?        ©r4   r5   r   r6   s     r   Útest_linear_complex_at_zeroz%TestChirp.test_linear_complex_at_zero`   s'   € Ü�O‰O˜a E¨c°cÀ(Ø$(ô*ˆä˜˜8Õ$r   c                 óP   — t        j                  ddddd¬«      }t        |d«       y )Nr   r.   r/   Ú	quadraticr1   r3   r6   s     r   Útest_quadratic_at_zeroz TestChirp.test_quadratic_at_zeroe   s"   € Ü�O‰O˜a C¨C°CÀÔLˆÜ˜A˜sÕ#r   c                 óR   — t        j                  dddddd¬«      }t        |d«       y )Nr   r.   r/   r\   F)r   r   r   r   r2   r   r3   r6   s     r   Útest_quadratic_at_zero2z!TestChirp.test_quadratic_at_zero2i   s'   € Ü�O‰O˜a C¨C°CÀØ(-ô/ˆä˜A˜sÕ#r   c                 óR   — t        j                  dddddd¬«      }t        |d«       y )	Nr   ç      ð¿r/   r.   r\   TrW   rX   rY   r6   s     r   Útest_quadratic_complex_at_zeroz(TestChirp.test_quadratic_complex_at_zeron   s'   € Ü�O‰O˜a D¨S°SÀØ$(ô*ˆä˜˜6Õ"r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nr\   r.   r/   r   éÐ  r<   ©r$   r>   r4   r?   r*   r@   rA   r   rB   s
             r   Útest_quadratic_freq_01z TestChirp.test_quadratic_freq_01s   sƒ   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜tÓ$ˆÜ×&Ñ& q¨"¨b°"°fÓ=ˆÜ! ! UÓ+‰ˆˆAÜ—‘œŸ™˜q¤?°2°r¸2¸rÓ#BÑBÓCÓDˆØ˜Š}Ð‰}r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nr\   ç      4@rI   r   rd   r<   re   rB   s
             r   Útest_quadratic_freq_02z TestChirp.test_quadratic_freq_02~   sƒ   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜tÓ$ˆÜ×&Ñ& q¨"¨b°"°fÓ=ˆÜ! ! UÓ+‰ˆˆAÜ—‘œŸ™˜q¤?°2°r¸2¸rÓ#BÑBÓCÓDˆØ˜Š}Ð‰}r   c                 óP   — t        j                  ddddd¬«      }t        |d«       y )Nr   r.   r/   Úlogarithmicr1   r3   r6   s     r   Útest_logarithmic_at_zeroz"TestChirp.test_logarithmic_at_zero‰   s"   € Ü�O‰O˜a C¨C°CÀÔNˆÜ˜A˜sÕ#r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nrk   r.   r/   r   é'  r<   ©r$   r>   r4   r?   r*   r@   rA   r   rB   s
             r   Útest_logarithmic_freq_01z"TestChirp.test_logarithmic_freq_01�   sƒ   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜uÓ%ˆÜ×&Ñ& q¨"¨b°"°fÓ=ˆÜ! ! UÓ+‰ˆˆAÜ—‘œŸ™˜q¤?°2°r¸2¸rÓ#BÑBÓCÓDˆØ˜Š}Ð‰}r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nrk   rG   rH   rI   r   rn   r<   ro   rB   s
             r   Útest_logarithmic_freq_02z"TestChirp.test_logarithmic_freq_02˜   óƒ   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜uÓ%ˆÜ×&Ñ& q¨"¨b°"°fÓ=ˆÜ! ! UÓ+‰ˆˆAÜ—‘œŸ™˜q¤?°2°r¸2¸rÓ#BÑBÓCÓDˆØ˜Š}Ð‰}r   c                 ó  — d}d}d}d}t        j                  d|d«      }t        j                  |||||«      }t	        ||«      \  }}t        j
                  t        j                  |t        ||||«      z
  «      «      }	|	dk  sJ ‚y )Nrk   rH   rI   r   rn   r<   ro   rB   s
             r   Útest_logarithmic_freq_03z"TestChirp.test_logarithmic_freq_03£   rs   r   c                 óP   — t        j                  ddddd¬«      }t        |d«       y )Nr   rI   r.   Ú
hyperbolicr1   r3   r6   s     r   Útest_hyperbolic_at_zeroz!TestChirp.test_hyperbolic_at_zero®   s"   € Ü�O‰O˜a D¨S°SÀÔNˆÜ˜A˜sÕ#r   c                 óò   — d}d}t        j                  d|d«      }ddgddgddgddgg}|D ]I  \  }}t        j                  |||||«      }t	        ||«      \  }}	t        ||||«      }
t        |	|
d¬	«       ŒK y )
Nrw   r.   r   rn   rI   rV   ra   gH¯¼šò×z>)Úatol)r$   r>   r4   r?   r*   r   r   )r7   r2   r   r   Úcasesr   r   rC   r)   r   Úexpecteds              r   Útest_hyperbolic_freq_01z!TestChirp.test_hyperbolic_freq_01²   sš   € ØˆØˆÜ�K‰K˜˜2˜uÓ%ˆà˜�Ø�t�Ø˜�Ø˜�ð ˆð ò 	4‰FˆB�Ü×*Ñ*¨1¨b°"°b¸&ÓAˆEÜ% a¨Ó/‰EˆB�Ü'¨¨B°°BÓ7ˆHÜ˜A˜x¨dÖ3ñ		4r   c           	      óÆ   — d}d}t        j                  d|d«      }t        t        t        j
                  |d|d|«       t        t        t        j
                  |d|d|«       y )Nrw   r.   r   é   r!   ©r$   r>   Úassert_raisesÚ
ValueErrorr4   r5   )r7   r2   r   r   s       r   Útest_hyperbolic_zero_freqz#TestChirp.test_hyperbolic_zero_freqÁ   sN   € àˆØˆÜ�K‰K˜˜2˜qÓ!ˆÜ”j¤)§/¡/°1°a¸¸QÀÔGÜ”j¤)§/¡/°1°a¸¸QÀÕGr   c           	      óˆ   — d}d}d}d}t        j                  d|d«      }t        t        t        j
                  |||||«       y )NÚfoorI   rh   r.   r   é
   r€   )r7   r2   r   r   r   r   s         r   Útest_unknown_methodzTestChirp.test_unknown_methodÉ   s@   € ØˆØˆØˆØˆÜ�K‰K˜˜2˜rÓ"ˆÜ”j¤)§/¡/°1°b¸"¸bÀ&ÕIr   c                 óÂ   — d}d}t        j                  ddd«      }d}t        j                  ||||«      }d}t        j                  ||||«      }d}t	        |||¬	«       y )
NrI   rh   r#   r!   é   ç      @é   z'Integer input 't1=3' gives wrong result©Úerr_msg©r$   r>   r4   r5   r   )r7   r   r   r   r   Úfloat_resultÚ
int_resultr�   s           r   Útest_integer_t1zTestChirp.test_integer_t1Ñ   sa   € ØˆØˆÜ�K‰K˜˜A˜rÓ"ˆØˆÜ —‘ q¨"¨b°"Ó5ˆØˆÜ—_‘_ Q¨¨B°Ó3ˆ
Ø;ˆÜ˜
 L¸'ÖBr   c                 óÂ   — d}d}t        j                  ddd«      }d}t        j                  ||||«      }d}t        j                  ||||«      }d}t	        |||¬	«       y )
Nrh   rŠ   r#   r!   r‰   rI   r†   z(Integer input 'f0=10' gives wrong resultrŒ   rŽ   )r7   r   r   r   r   r�   r�   r�   s           r   Útest_integer_f0zTestChirp.test_integer_f0Ü   óa   € ØˆØˆÜ�K‰K˜˜A˜rÓ"ˆØˆÜ —‘ q¨"¨b°"Ó5ˆØˆÜ—_‘_ Q¨¨B°Ó3ˆ
Ø<ˆÜ˜
 L¸'ÖBr   c                 óÂ   — d}d}t        j                  ddd«      }d}t        j                  ||||«      }d}t        j                  ||||«      }d}t	        |||¬	«       y )
NrI   rŠ   r#   r!   r‰   rh   é   z(Integer input 'f1=20' gives wrong resultrŒ   rŽ   )r7   r   r   r   r   r�   r�   r�   s           r   Útest_integer_f1zTestChirp.test_integer_f1ç   r”   r   c                 óô   — d}d}d}t        j                  ddd«      }t        j                  |t	        |«      t	        |«      t	        |«      «      }t        j                  ||||«      }d}t        |||¬«       y )	Nr†   r‹   r–   r#   r!   r‰   z5Integer input 'f0=10, t1=3, f1=20' gives wrong resultrŒ   )r$   r>   r4   r5   Úfloatr   )r7   r   r   r   r   r�   r�   r�   s           r   Útest_integer_allzTestChirp.test_integer_allò   sh   € ØˆØˆØˆÜ�K‰K˜˜A˜rÓ"ˆÜ —‘ q¬%°«)´U¸2³YÄÀbÃ	ÓJˆÜ—_‘_ Q¨¨B°Ó3ˆ
ØIˆÜ˜
 L¸'ÖBr   N)Ú__name__Ú
__module__Ú__qualname__r9   rE   rJ   rT   rZ   r]   r_   rb   rf   ri   rl   rp   rr   ru   rx   r}   rƒ   r‡   r‘   r“   r—   rš   r   r   r   r,   r,   3   sv   „ ò$ò	ò	òò"%ò
$ò$ò
#ò
	ò	ò$ò	ò	ò	ò$ò4òHòJò	Cò	Cò	CóCr   r,   c                   ó6   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestSweepPolyc                 ó  — t        j                  g d¢«      }t        j                  ddd«      }t        j                  ||«      }t        ||«      \  }} ||«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y )N)r.   ç        r.   r   rŠ   rn   r<   ©r$   Úpoly1dr>   r4   Ú_sweep_poly_phaser*   r@   rA   ©r7   Úpr   rC   r)   r   r|   rD   s           r   Útest_sweep_poly_quad1z#TestSweepPoly.test_sweep_poly_quad1ÿ   st   € Ü�I‰I’oÓ&ˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAÙ�R“5ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   c                 ó  — t        j                  d«      }t        j                  ddd«      }t        j                  ||«      }t        ||«      \  }} ||«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y )Nr/   r   rŠ   rn   r<   r¢   r¥   s           r   Útest_sweep_poly_constz#TestSweepPoly.test_sweep_poly_const  ss   € Ü�I‰I�c‹NˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAÙ�R“5ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   c                 ó  — t        j                  ddg«      }t        j                  ddd«      }t        j                  ||«      }t        ||«      \  }} ||«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y )Nra   rI   r   rŠ   rn   r<   r¢   r¥   s           r   Útest_sweep_poly_linearz$TestSweepPoly.test_sweep_poly_linear  sx   € Ü�I‰I�t˜T�lÓ#ˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAÙ�R“5ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   c                 ó  — t        j                  g d¢«      }t        j                  ddd«      }t        j                  ||«      }t        ||«      \  }} ||«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y )N)r.   r¡   ç       Àr   rŠ   rn   r<   r¢   r¥   s           r   Útest_sweep_poly_quad2z#TestSweepPoly.test_sweep_poly_quad2  su   € Ü�I‰IÒ&Ó'ˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAÙ�R“5ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   c                 ó  — t        j                  g d¢«      }t        j                  ddd«      }t        j                  ||«      }t        ||«      \  }} ||«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y )N©r/   r.   r¡   r­   r   r/   rn   r<   r¢   r¥   s           r   Útest_sweep_poly_cubicz#TestSweepPoly.test_sweep_poly_cubic#  su   € Ü�I‰IÒ+Ó,ˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAÙ�R“5ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   c                 óD  — t        j                  g d¢«      }t        j                  ddd«      }t        j                  ||«      }t        ||«      \  }} t        j                  |«      |«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y)z1Use an array of coefficients instead of a poly1d.r°   r   r/   rn   r<   N)	r$   Úarrayr>   r4   r¤   r*   r£   r@   rA   r¥   s           r   Útest_sweep_poly_cubic2z$TestSweepPoly.test_sweep_poly_cubic2,  s€   € ä�H‰HÒ*Ó+ˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAØ”2—9‘9˜Q“< Ó#ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   c                 ó  — g d¢}t        j                  ddd«      }t        j                  ||«      }t	        ||«      \  }} t        j
                  |«      |«      }t        j                  t        j                  ||z
  «      «      }|dk  sJ ‚y)z/Use a list of coefficients instead of a poly1d.r°   r   r/   rn   r<   N)r$   r>   r4   r¤   r*   r£   r@   rA   r¥   s           r   Útest_sweep_poly_cubic3z$TestSweepPoly.test_sweep_poly_cubic36  sv   € â!ˆÜ�K‰K˜˜3 Ó&ˆÜ×+Ñ+¨A¨qÓ1ˆÜ! ! UÓ+‰ˆˆAØ”2—9‘9˜Q“< Ó#ˆÜ—‘œŸ™˜q 8™|Ó,Ó-ˆØ˜Š}Ð‰}r   N)
r›   rœ   r�   r§   r©   r«   r®   r±   r´   r¶   r   r   r   rŸ   rŸ   ý   s%   „ òòòòòòór   rŸ   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestGaussPulsec                 ó€   — t        j                  dd¬«      }t        j                  dd¬«      }d}t        |||¬«       y )NÚcutoffg     @�@)Úfcéè  z*Integer input 'fc=1000' gives wrong resultrŒ   ©r4   Ú
gausspulser   ©r7   r�   r�   r�   s       r   Útest_integer_fczTestGaussPulse.test_integer_fcC  s7   € Ü ×+Ñ+¨H¸Ô@ˆÜ×)Ñ)¨(°tÔ<ˆ
Ø>ˆÜ˜
 L¸'ÖBr   c                 ó€   — t        j                  dd¬«      }t        j                  dd¬«      }d}t        |||¬«       y )Nrº   r.   )Úbwr!   z'Integer input 'bw=1' gives wrong resultrŒ   r½   r¿   s       r   Útest_integer_bwzTestGaussPulse.test_integer_bwI  s7   € Ü ×+Ñ+¨H¸Ô=ˆÜ×)Ñ)¨(°qÔ9ˆ
Ø;ˆÜ˜
 L¸'ÖBr   c                 ó€   — t        j                  dd¬«      }t        j                  dd¬«      }d}t        |||¬«       y )Nrº   g      À)Úbwriúÿÿÿz)Integer input 'bwr=-6' gives wrong resultrŒ   r½   r¿   s       r   Útest_integer_bwrzTestGaussPulse.test_integer_bwrO  s7   € Ü ×+Ñ+¨H¸$Ô?ˆÜ×)Ñ)¨(¸Ô;ˆ
Ø=ˆÜ˜
 L¸'ÖBr   c                 ó€   — t        j                  dd¬«      }t        j                  dd¬«      }d}t        |||¬«       y )Nrº   g      NÀ)ÚtpriÄÿÿÿz*Integer input 'tpr=-60' gives wrong resultrŒ   r½   r¿   s       r   Útest_integer_tprzTestGaussPulse.test_integer_tprU  s7   € Ü ×+Ñ+¨H¸%Ô@ˆÜ×)Ñ)¨(¸Ô<ˆ
Ø>ˆÜ˜
 L¸'ÖBr   N)r›   rœ   r�   rÀ   rÃ   rÆ   rÉ   r   r   r   r¸   r¸   A  s   „ òCòCòCóCr   r¸   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)ÚTestUnitImpulsec           	      óâ   — t        t        j                  d«      t        j                  g d¢«      «       t        t        j                  d«      t        j                  g d¢g d¢g d¢g«      «       y )Né   )r.   r   r   r   r   r   r   ©r‹   r‹   )r.   r   r   ©r   r   r   ©r   r4   Úunit_impulser$   Úasarray©r7   s    r   Útest_no_indexzTestUnitImpulse.test_no_index^  sM   € Üœ	×.Ñ.¨qÓ1ÜŸ
™
Ò#:Ó;ô	=äœ	×.Ñ.¨vÓ6ÜŸ
™
¢K²ºIÐ#FÓGõ	Ir   c           
      óh  — t        t        j                  dd«      t        j                  g d¢«      «       t        t        j                  dd«      t        j                  g d¢g d¢g d¢g«      «       t        j                  d	d
«      }t        |t        j                  g d¢g d¢g d¢g d¢g«      «       y )Nr†   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Ð   ©r7   Úimps     r   Ú
test_indexzTestUnitImpulse.test_indexd  s‹   € Üœ	×.Ñ.¨r°1Ó5ÜŸ
™
Ò#CÓDô	Fäœ	×.Ñ.¨v°vÓ>ÜŸ
™
¢K²ºIÐ#FÓGô	Iô ×$Ñ$ V¨QÓ/ˆÜ˜œRŸZ™ZªÚ)7Ú)7Ú)7ð)9ó :õ 	;r   c           	      óæ   — t        t        j                  dd«      t        j                  g d¢g d¢g d¢g«      «       t        t        j                  dd«      t        j                  g d¢«      «       y )NrÎ   ÚmidrÖ   r×   rÏ   é	   )	r¡   r   r   r   r!   r   r   r   r   rÐ   rÓ   s    r   Útest_midzTestUnitImpulse.test_midq  sR   € Üœ	×.Ñ.¨v°uÓ=ÜŸ
™
¢K²ºIÐ#FÓGô	Iäœ	×.Ñ.¨q°%Ó8ÜŸ
™
Ò#@ÓAõ	Cr   c                 ó¾  — t        j                  d«      }t        j                  |j                  t        j
                  «      sJ ‚t        j                  ddt        ¬«      }t        j                  |j                  t        j                  «      sJ ‚t        j                  ddt        ¬«      }t        j                  |j                  t        j                  «      sJ ‚y )NrÍ   r   r‹   ©Údtype)r   r   )r‹   r!   )
r4   rÑ   r$   Ú
issubdtyperâ   ÚfloatingÚintÚintegerrL   ÚcomplexfloatingrÙ   s     r   Ú
test_dtypezTestUnitImpulse.test_dtypew  s�   € Ü×$Ñ$ QÓ'ˆÜ�}‰}˜SŸY™Y¬¯©Ô4Ð4Ð4ä×$Ñ$ Q¨´Ô5ˆÜ�}‰}˜SŸY™Y¬¯
©
Ô3Ð3Ð3ä×$Ñ$ V¨V¼7ÔCˆÜ�}‰}˜SŸY™Y¬×(:Ñ(:Ô;Ð;Ñ;r   N)r›   rœ   r�   rÔ   rÛ   rß   rè   r   r   r   rË   rË   \  s   „ òIò;òCó<r   rË   c                   ó.  — e Zd Zej                  j                  dd¬«      ej                  j                  dddg«      ej                  j                  dddg«      d„ «       «       «       Zd	„ Zd
„ Z	d„ Z
ej                  j                  dd¬«      d„ «       Zy)ÚTestSawtoothWaveformÚcupyúcupy/cupy/issues/9541©ÚreasonÚt_dtypeÚfloat32Úfloat64Úwidth_dtypec                 óÔ   — t        ||«      }t        ||«      }t        |j                  d|¬«      |j                  d|¬«      ¬«      }|j                  |j	                  ||«      k(  sJ ‚y )Nr!   rá   ©Úwidth)Úgetattrr   rÒ   râ   Úresult_type)r7   rï   rò   ÚxpÚwaveforms        r   rè   zTestSawtoothWaveform.test_dtype„  sd   € ô ˜"˜gÓ&ˆÜ˜b +Ó.ˆÜØ�J‰J�q ˆJÓ(°·
±
¸1ÀK°
Ó0Pô
ˆð �~‰~ §¡°¸Ó!EÒEÐEÑEr   c                 óÈ   — |j                  dd|j                  z  d|j                  ¬«      }t        |d¬«      }t        |d|j                  z  z   d¬«      }t	        ||«       y )Nr   r   r;   rá   çš™™™™™Ù?rô   )r>   r&   rñ   r   r   ©r7   rø   r   Úy1Úy2s        r   Útest_periodicz"TestSawtoothWaveform.test_periodic�  sR   € Ø�K‰K˜˜1˜RŸU™U™7 C¨r¯z©zˆKÓ:ˆÜ�a˜sÔ#ˆÜ�a˜!˜BŸE™E™'‘k¨Ô-ˆÜ˜˜BÕr   c                 ó  — |j                  t        |«      «      j                  }|j                  d|j                  d|j                  z  d|z  z
  d|j                  z  g«      }t        |«      }t        ||j                  g d¢«      «       y )Nr   r   r†   )ra   r¡   r.   ra   )Úfinfor	   ÚepsrÒ   r&   r   r   )r7   rø   r  r   Úys        r   Útest_known_valuesz&TestSawtoothWaveform.test_known_values•  sm   € Ø�h‰hÔ'¨Ó+Ó,×0Ñ0ˆØ�J‰J˜˜2Ÿ5™5 ! B§E¡E¡'¨B¨s©FÑ"2°A°b·e±e±GÐ<Ó=ˆÜ�Q‹KˆÜ˜˜2Ÿ:™:Ò&8Ó9Õ:r   c                 ó¢   — |j                  dd|j                  z  d«      }t        |d¬«      }|j                  |j	                  |«      «      sJ ‚y )Nr   r   r†   g      ø?rô   )r>   r&   r   ÚallÚisnan©r7   rø   r   r  s       r   Útest_invalid_width_nanz+TestSawtoothWaveform.test_invalid_width_nan›  sB   € Ø�K‰K˜˜1˜RŸU™U™7 BÓ'ˆÜ�Q˜cÔ"ˆØ�v‰v�b—h‘h˜q“kÔ"Ð"Ñ"r   zcupy/cupy/issues/9568c                 óà   — |j                  dd|j                  z  d«      }t        |d¬«      }t        ||j	                  |«      «       t        t        | d«      dd t        |«      dd «       y )	Nr   r   r¼   r"   rô   r¡   r!   r#   )r>   r&   r   r   Úflipr  s       r   Útest_triangle_symmetryz+TestSawtoothWaveform.test_triangle_symmetry   s_   € à�K‰K˜˜1˜RŸU™U™7 DÓ)ˆÜ�Q˜cÔ"ˆÜ˜˜2Ÿ7™7 1›:Ô&Üœ !  RÓ(¨¨2Ð.´¸³¸A¸bÐ0AÕBr   N)r›   rœ   r�   ÚpytestÚmarkÚxfail_xp_backendsÚparametrizerè   rÿ   r  r	  r  r   r   r   rê   rê   ‚  s¥   „ à‡[�[×"Ñ" 6Ð2IÐ"ÓJØ‡[�[×Ñ˜Y¨°IÐ(>Ó?Ø‡[�[×Ñ˜]¨Y¸	Ð,BÓCñFó Dó @ó KðFò ò;ò#ð
 ‡[�[×"Ñ" 6Ð2IÐ"ÓJñCó KñCr   rê   c                   ó<  — e Zd Zd„ Zej
                  j                  dd¬«      ej
                  j                  dddg«      ej
                  j                  dddg«      d	„ «       «       «       Zej
                  j                  dd¬«      ej
                  j                  d
g d¢«      ej
                  j                  dg d¢«      d„ «       «       «       Z	ej
                  j                  dddg«      d„ «       Z
d„ Zej
                  j                  dg d¢«      d„ «       Zy)ÚTestSquareWaveformc                 ó  — |j                  ddt        j                  z  d«      }t        |«      }|j                  |j                  k(  sJ ‚t        j
                  t        |«      «      }t        |«      j                  ddh«      sJ ‚y )Nr   r   r¼   ra   r.   )	r>   r$   r&   r
   ÚshapeÚuniquer   ÚsetÚissubset)r7   rø   r   r  r  s        r   Útest_uniquezTestSquareWaveform.test_uniqueª  sk   € Ø�K‰K˜˜1œRŸU™U™7 DÓ)ˆÜ�1‹IˆØ�w‰w˜!Ÿ'™'Ò!Ð!Ð!Ü—‘Ô,¨QÓ/Ó0ˆÜ�6‹{×#Ñ# T¨3 KÔ0Ð0Ñ0r   rë   rì   rí   rï   rð   rñ   Ú
duty_dtypec                 óÔ   — t        ||«      }t        ||«      }t        |j                  d|¬«      |j                  d|¬«      ¬«      }|j                  |j	                  ||«      k(  sJ ‚y )Nr!   rá   r"   ©Úduty)rö   r
   rÒ   râ   r÷   )r7   rï   r  rø   rù   s        r   rè   zTestSquareWaveform.test_dtype±  sc   € ô ˜"˜gÓ&ˆÜ˜R Ó,ˆ
Ü˜"Ÿ*™* Q¨g˜*Ó6Ø!Ÿz™z¨#°Z˜zÓ@ôBˆà�~‰~ §¡°¸Ó!DÒDÐDÑDr   râ   )Nrð   rñ   r  )gš™™™™™¹?g      Ð?r"   g      è?c                 óœ  — |€|nt        ||«      }|j                  d|¬«      dz  dz  |j                  z  }t        ||¬«      }|€t	        |«      n|}|j                  |j                  |dk(  |¬«      «      }t        ||j                  ||¬«      d   «       t        |j                  |«      |j                  d|z  dz
  |¬«      d   «       y )	Ng     ˆÃ@rá   rn   r   r  r.   r   r!   )rö   Úaranger&   r
   r	   ÚmeanrÒ   r   )r7   râ   r  rø   r   r  Úfraction_highs          r   Útest_duty_cycle_fractionz+TestSquareWaveform.test_duty_cycle_fraction»  sÁ   € ð ˜‘¬G°B¸Ó,>ˆð �I‰I�f EˆIÓ*¨UÑ2°QÑ6°r·u±uÑ<ˆÜ�1˜4Ô ˆà(-¨Ô  Ô$¸5ˆØŸ™ §
¡
¨1°©8¸5 
Ó AÓBˆÜ˜ r§z¡z°$¸e zÓ'DÀRÑ'HÔIÜ˜Ÿ™ ›
 B§J¡J¨q°©v¸©zÀ JÓ$GÈÑ$KÕLr   zduty, expected)r.   r.   )r¡   ra   c                 óª   — |j                  dd|j                  z  d«      }t        ||¬«      }t        ||j	                  |j
                  |«      «       y )Nr   r   r;   r  )r>   r&   r
   r   Úfullr  )r7   r  r|   rø   r   r  s         r   Útest_duty_edge_casesz'TestSquareWaveform.test_duty_edge_casesÊ  sA   € à�K‰K˜˜1˜RŸU™U™7 CÓ(ˆÜ�1˜4Ô ˆÜ˜˜2Ÿ7™7 1§7¡7¨HÓ5Õ6r   c                 óÊ   — |j                  dd|j                  z  dd|j                  ¬«      }t        |d¬«      }t        |d|j                  z  z   d¬«      }t	        ||«       y )Nr   r   r†   F)Úendpointrâ   rû   r  )r>   r&   rñ   r
   r   rü   s        r   rÿ   z TestSquareWaveform.test_periodicÐ  sT   € Ø�K‰K˜˜1˜RŸU™U™7 B°¸b¿j¹jˆKÓIˆÜ�A˜CÔ ˆÜ�A˜˜"Ÿ%™%™‘K cÔ*ˆä˜˜BÕr   )gš™™™™™¹¿gš™™™™™ñ?r/   c                 óª   — |j                  ddt        j                  z  d«      }t        ||¬«      }|j	                  |j                  |«      «      sJ ‚y )Nr   r   r†   r  )r>   r$   r&   r
   r  r  )r7   r  rø   r   r  s        r   Útest_invalid_dutyz$TestSquareWaveform.test_invalid_duty×  sB   € à�K‰K˜˜1œRŸU™U™7 BÓ'ˆÜ�1˜4Ô ˆà�v‰v�b—h‘h˜q“kÔ"Ð"Ñ"r   N)r›   rœ   r�   r  r  r  r  r  rè   r!  r$  rÿ   r(  r   r   r   r  r  ¨  s)  „ ò1ð ‡[�[×"Ñ" 6Ð2IÐ"ÓJØ‡[�[×Ñ˜Y¨°IÐ(>Ó?Ø‡[�[×Ñ˜\¨I°yÐ+AÓBñEó Có @ó KðEð ‡[�[×"Ñ" 6Ð2IÐ"ÓJØ‡[�[×Ñ˜WÒ&BÓCØ‡[�[×Ñ˜VÒ%;Ó<ñ
Mó =ó Dó Kð
Mð ‡[�[×ÑÐ-°¸)Ð/DÓEñ7ó Fð7ò
 ð ‡[�[×Ñ˜VÒ%5Ó6ñ#ó 7ñ#r   r  )T)Únumpyr$   r  r   r�   Úscipy._lib._array_apir   r   r   r   r   r	   Úscipy.signal._waveformsÚsignalÚ
_waveformsr4   Úscipy.signalr
   r   r   r   r   r   r*   r,   rŸ   r¸   rË   rê   r  r   r   r   ú<module>r/     s¯   ðÛ Û Ý *÷÷ ÷
 ,Ð +ß )òó
òò
ò
	÷GCñ GC÷TAñ A÷HCñ C÷6#<ñ #<ñL �8Ó÷"Cð "Có ð"CñJ �6Ó÷3#ð 3#ó ñ3#r   