
    (ph2                         S SK rS SKJr  S SKJrJrJr  S SK	J
s  Jr  S rSS jrS rS rS r " S	 S
5      r " S S5      r " S S5      r " S S5      rg)    N)raises)assert_almost_equalxp_assert_equalxp_assert_closec                      XU-
  U -  U-  -   nU$ N tf0f1t1fs        T/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_waveforms.pychirp_linearr      s    
2g]RAH    c                 h    U(       a  XU-
  U S-  -  US-  -  -   nU$ X"U-
  X0-
  S-  -  US-  -  -
  nU$ )N   r	   )r   r   r   r   vertex_zeror   s         r   chirp_quadraticr      sQ    r'QT!BE)) H r'bfq[(2q500Hr   c                     XU-  X-  -  -  nU$ r   r	   r
   s        r   chirp_geometricr      s    
eqt_AHr   c                 .    X-  U-  X-
  U -  X#-  -   -  nU$ r   r	   r
   s        r   chirp_hyperbolicr      s$    
bRWaK"%'(AHr   c                     U S   U S   -
  n[         R                  " U5      S[         R                  -  -  U-  nSU SS U SS -   -  nXC4$ )zJ
Compute theta'(t)/(2*pi), where theta'(t) is the derivative of theta(t).
   r   r   g      ?N)npdiffpi)r   thetadtr   tfs        r   compute_frequencyr$   $   sU     
1!B
"%% 2%A	aeafn	B5Lr   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)	TestChirp0   c                 L    [         R                  " SSSSSS9n[        US5        g )Nr         ?       @linearr   r   r   r   method	waveformschirpr   selfws     r   test_linear_at_zeroTestChirp.test_linear_at_zero2   s"    OOaCCCIAs#r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nr+   r)   r*   r   d   ư>r   linspacer/   _chirp_phaser$   maxabsr   
r2   r-   r   r   r   r   phaser#   r   abserrs
             r   test_linear_freq_01TestChirp.test_linear_freq_016   sw    KK2s#&&qbf=!!+q<#??@A}}r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nr+         i@      Y@      $@r   r7   r8   r9   r>   s
             r   test_linear_freq_02TestChirp.test_linear_freq_02A   sw    KK2s#&&qbf=!!+q<#??@A}}r   c           	      :   SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCUSS9n[        R                  " XRXCUSS9n[         R                  " U5      n[         R                  " U5      n	U[         R
                  " U	5      -
  n
U
S	:  d   eg )
Nr+   r)   r*   r   r7   F)complexTr8   )r   r:   r/   r0   varreal)r2   r-   r   r   r   r   w_real	w_complexw_pwr_rw_pwr_cerrs              r   test_linear_complex_power#TestChirp.test_linear_complex_powerL   s    KK2s#FOOA264H	&&.&&# ((Tzzr   c           	      N    [         R                  " SSSSSSS9n[        US5        g )Nr         $r)   r+   Tr   r   r   r   r-   rJ         ?        r/   r0   r   r1   s     r   test_linear_complex_at_zero%TestChirp.test_linear_complex_at_zero]   s'    OOaEcc($(*8$r   c                 L    [         R                  " SSSSSS9n[        US5        g )Nr   r)   r*   	quadraticr,   r.   r1   s     r   test_quadratic_at_zero TestChirp.test_quadratic_at_zerob   s"    OOaCCCLAs#r   c           	      N    [         R                  " SSSSSSS9n[        US5        g )Nr   r)   r*   r\   F)r   r   r   r   r-   r   r.   r1   s     r   test_quadratic_at_zero2!TestChirp.test_quadratic_at_zero2f   s'    OOaCCC(-/As#r   c           	      N    [         R                  " SSSSSSS9n[        US5        g )	Nr         r*   r)   r\   TrV   rW   rX   r1   s     r   test_quadratic_complex_at_zero(TestChirp.test_quadratic_complex_at_zerok   s'    OOaDSS$(*6"r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nr\   r)   r*   r     r8   r   r:   r/   r;   r$   r<   r=   r   r>   s
             r   test_quadratic_freq_01 TestChirp.test_quadratic_freq_01p   sw    KK2t$&&qbf=!!+q?22#BBCD}}r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nr\         4@rF   r   rg   r8   rh   r>   s
             r   test_quadratic_freq_02 TestChirp.test_quadratic_freq_02{   sw    KK2t$&&qbf=!!+q?22#BBCD}}r   c                 L    [         R                  " SSSSSS9n[        US5        g )Nr   r)   r*   logarithmicr,   r.   r1   s     r   test_logarithmic_at_zero"TestChirp.test_logarithmic_at_zero   s"    OOaCCCNAs#r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nrp   r)   r*   r   '  r8   r   r:   r/   r;   r$   r<   r=   r   r>   s
             r   test_logarithmic_freq_01"TestChirp.test_logarithmic_freq_01   sw    KK2u%&&qbf=!!+q?22#BBCD}}r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nrp   rD   rE   rF   r   rt   r8   ru   r>   s
             r   test_logarithmic_freq_02"TestChirp.test_logarithmic_freq_02   w    KK2u%&&qbf=!!+q?22#BBCD}}r   c                    SnSnSnSn[         R                  " SUS5      n[        R                  " XRXCU5      n[	        XV5      u  px[         R
                  " [         R                  " U[        XrX45      -
  5      5      n	U	S:  d   eg )Nrp   rE   rF   r   rt   r8   ru   r>   s
             r   test_logarithmic_freq_03"TestChirp.test_logarithmic_freq_03   r{   r   c                 L    [         R                  " SSSSSS9n[        US5        g )Nr   rF   r)   
hyperbolicr,   r.   r1   s     r   test_hyperbolic_at_zero!TestChirp.test_hyperbolic_at_zero   s"    OOaDSSNAs#r   c                     SnSn[         R                  " SUS5      nSS/SS/SS/SS//nU H@  u  pV[        R                  " X5X&U5      n[	        X75      u  p[        XXb5      n
[        XSS	9  MB     g )
Nr   r)   r   rt   rF   rU   rc   gHz>)atol)r   r:   r/   r;   r$   r   r   )r2   r-   r   r   casesr   r   r?   r#   r   expecteds              r   test_hyperbolic_freq_01!TestChirp.test_hyperbolic_freq_01   s    KK2u%t  FB**1"&AE%a/EB'7HAd3	 r   c           	          SnSn[         R                  " SUS5      n[        [        [        R
                  USUSU5        [        [        [        R
                  USUSU5        g )Nr   r)   r      r   r   r:   assert_raises
ValueErrorr/   r0   )r2   r-   r   r   s       r   test_hyperbolic_zero_freq#TestChirp.test_hyperbolic_zero_freq   sN    KK2q!j)//1aQGj)//1aQGr   c           	          SnSnSnSn[         R                  " SUS5      n[        [        [        R
                  XRXCU5        g )NfoorF   rl   r)   r   
   r   )r2   r-   r   r   r   r   s         r   test_unknown_methodTestChirp.test_unknown_method   s<    KK2r"j)//1"&Ir   c                     SnSn[         R                  " SSS5      nSn[        R                  " X1XB5      nSn[        R                  " X1XB5      nSn[	        XeUS	9  g )
NrF   rl   r   r            @   z'Integer input 't1=3' gives wrong resulterr_msgr   r:   r/   r0   r   )r2   r   r   r   r   float_result
int_resultr   s           r   test_integer_t1TestChirp.test_integer_t1   sW    KKAr" qb5__QB3
;
'Br   c                     SnSn[         R                  " SSS5      nSn[        R                  " X4X!5      nSn[        R                  " X4X!5      nSn[	        XeUS	9  g )
Nrl   r   r   r   r   rF   r   z(Integer input 'f0=10' gives wrong resultr   r   )r2   r   r   r   r   r   r   r   s           r   test_integer_f0TestChirp.test_integer_f0   W    KKAr" qb5__QB3
<
'Br   c                     SnSn[         R                  " SSS5      nSn[        R                  " X1X$5      nSn[        R                  " X1X$5      nSn[	        XeUS	9  g )
NrF   r   r   r   r   rl      z(Integer input 'f1=20' gives wrong resultr   r   )r2   r   r   r   r   r   r   r   s           r   test_integer_f1TestChirp.test_integer_f1   r   r   c                     SnSnSn[         R                  " SSS5      n[        R                  " U[	        U5      [	        U5      [	        U5      5      n[        R                  " XAX#5      nSn[        XeUS9  g )	Nr   r   r   r   r   r   z5Integer input 'f0=10, t1=3, f1=20' gives wrong resultr   )r   r:   r/   r0   floatr   )r2   r   r   r   r   r   r   r   s           r   test_integer_allTestChirp.test_integer_all   sb    KKAr" q%)U2Yb	J__QB3
I
'Br   r	   N)__name__
__module____qualname____firstlineno__r4   rA   rG   rR   rY   r]   r`   rd   ri   rm   rq   rv   ry   r}   r   r   r   r   r   r   r   r   __static_attributes__r	   r   r   r&   r&   0   sv    $		"%
$$
#
		$			$4HJ	C	C	CCr   r&   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestSweepPoly   c                 "   [         R                  " / SQ5      n[         R                  " SSS5      n[        R                  " X!5      n[        X#5      u  pEU" U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg )N)r)           r)   r   r   rt   r8   r   poly1dr:   r/   _sweep_poly_phaser$   r<   r=   r2   pr   r?   r#   r   r   r@   s           r   test_sweep_poly_quad1#TestSweepPoly.test_sweep_poly_quad1   sl    IIo&KK3&++A1!!+R5q|,-}}r   c                    [         R                  " S5      n[         R                  " SSS5      n[        R                  " X!5      n[        X#5      u  pEU" U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg )Nr*   r   r   rt   r8   r   r   s           r   test_sweep_poly_const#TestSweepPoly.test_sweep_poly_const  sk    IIcNKK3&++A1!!+R5q|,-}}r   c                 "   [         R                  " SS/5      n[         R                  " SSS5      n[        R                  " X!5      n[        X#5      u  pEU" U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg )Nrc   rF   r   r   rt   r8   r   r   s           r   test_sweep_poly_linear$TestSweepPoly.test_sweep_poly_linear  sp    IItTl#KK3&++A1!!+R5q|,-}}r   c                 "   [         R                  " / SQ5      n[         R                  " SSS5      n[        R                  " X!5      n[        X#5      u  pEU" U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg )N)r)   r          r   r   rt   r8   r   r   s           r   test_sweep_poly_quad2#TestSweepPoly.test_sweep_poly_quad2  sm    II&'KK3&++A1!!+R5q|,-}}r   c                 "   [         R                  " / SQ5      n[         R                  " SSS5      n[        R                  " X!5      n[        X#5      u  pEU" U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg )Nr*   r)   r   r   r   r*   rt   r8   r   r   s           r   test_sweep_poly_cubic#TestSweepPoly.test_sweep_poly_cubic   sm    II+,KK3&++A1!!+R5q|,-}}r   c                 J   [         R                  " / SQ5      n[         R                  " SSS5      n[        R                  " X!5      n[        X#5      u  pE[         R                  " U5      " U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg)z1Use an array of coefficients instead of a poly1d.r   r   r*   rt   r8   N)	r   arrayr:   r/   r   r$   r   r<   r=   r   s           r   test_sweep_poly_cubic2$TestSweepPoly.test_sweep_poly_cubic2)  sv    HH*+KK3&++A1!!+99Q<#q|,-}}r   c                 "   / SQn[         R                  " SSS5      n[        R                  " X!5      n[	        X#5      u  pE[         R
                  " U5      " U5      n[         R                  " [         R                  " XV-
  5      5      nUS:  d   eg)z/Use a list of coefficients instead of a poly1d.r   r   r*   rt   r8   N)r   r:   r/   r   r$   r   r<   r=   r   s           r   test_sweep_poly_cubic3$TestSweepPoly.test_sweep_poly_cubic33  sl    !KK3&++A1!!+99Q<#q|,-}}r   r	   N)r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   r   r      s%    r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestGaussPulsei>  c                 p    [         R                  " SSS9n[         R                  " SSS9nSn[        X!US9  g )Ncutoffg     @@)fci  z*Integer input 'fc=1000' gives wrong resultr   r/   
gausspulser   r2   r   r   r   s       r   test_integer_fcTestGaussPulse.test_integer_fc@  s5     ++H@))(t<
>
'Br   c                 p    [         R                  " SSS9n[         R                  " SSS9nSn[        X!US9  g )Nr   r)   )bwr   z'Integer input 'bw=1' gives wrong resultr   r   r   s       r   test_integer_bwTestGaussPulse.test_integer_bwF  s5     ++H=))(q9
;
'Br   c                 p    [         R                  " SSS9n[         R                  " SSS9nSn[        X!US9  g )Nr   g      )bwriz)Integer input 'bwr=-6' gives wrong resultr   r   r   s       r   test_integer_bwrTestGaussPulse.test_integer_bwrL  s5     ++H$?))(;
=
'Br   c                 p    [         R                  " SSS9n[         R                  " SSS9nSn[        X!US9  g )Nr   g      N)tpriz*Integer input 'tpr=-60' gives wrong resultr   r   r   s       r   test_integer_tprTestGaussPulse.test_integer_tprR  s5     ++H%@))(<
>
'Br   r	   N)	r   r   r   r   r   r   r   r   r   r	   r   r   r   r   >  s    CCCCr   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestUnitImpulseiY  c           	          [        [        R                  " S5      [        R                  " / SQ5      5        [        [        R                  " S5      [        R                  " / SQ/ SQ/ SQ/5      5        g )N   )r)   r   r   r   r   r   r   r   r   )r)   r   r   r   r   r   r   r/   unit_impulser   asarrayr2   s    r   test_no_indexTestUnitImpulse.test_no_index[  sM    	..q1

#:;	=	..v6

KI#FG	Ir   c           
      t   [        [        R                  " SS5      [        R                  " / SQ5      5        [        [        R                  " SS5      [        R                  " / SQ/ SQ/ SQ/5      5        [        R                  " S	S
5      n[        U[        R                  " / SQ/ SQ/ SQ/ SQ/5      5        g )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   r2   imps     r   
test_indexTestUnitImpulse.test_indexa  s    	..r15

#CD	F	..vv>

KI#FG	I $$VQ/RZZ)7)7)7)9 : 	;r   c           	          [        [        R                  " SS5      [        R                  " / SQ/ SQ/ SQ/5      5        [        [        R                  " SS5      [        R                  " / SQ5      5        g )Nr   midr   r   r   	   )	r   r   r   r   r   r   r   r   r   r   r   s    r   test_midTestUnitImpulse.test_midn  sR    	..vu=

KI#FG	I	..q%8

#@A	Cr   c                    [         R                  " S5      n[        R                  " UR                  [        R
                  5      (       d   e[         R                  " SS[        S9n[        R                  " UR                  [        R                  5      (       d   e[         R                  " SS[        S9n[        R                  " UR                  [        R                  5      (       d   eg )Nr   r   r   )dtype)r   r   )r   r   )
r/   r   r   
issubdtyper  floatingintintegerrJ   complexfloatingr   s     r   
test_dtypeTestUnitImpulse.test_dtypet  s    $$Q'}}SYY4444$$Q5}}SYY

3333$$VV7C}}SYY(:(:;;;;r   r	   N)	r   r   r   r   r   r   r   r  r   r	   r   r   r   r   Y  s    I;C<r   r   )T)numpyr   pytestr   r   scipy._lib._array_apir   r   r   scipy.signal._waveformssignal
_waveformsr/   r   r   r   r   r$   r&   r   r   r   r	   r   r   <module>r     sh     *  , +


	GC GCTA AHC C6#< #<r   