
    9i4                         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 " 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        a/var/www/html/land-doc-ocr/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         ?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   linspacer0   _chirp_phaser%   maxabsr   
r3   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   r8   r9   r:   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   r8   F)complexTr9   )r   r;   r0   r1   varreal)r3   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.   rK         ?        r0   r1   r   r2   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/   r2   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/   r2   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]   TrW   rX   rY   r2   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     r9   r   r;   r0   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@rG   r   rh   r9   ri   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/   r2   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 )Nrq   r*   r+   r   '  r9   r   r;   r0   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 )Nrq   rE   rF   rG   r   ru   r9   rv   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 )Nrq   rF   rG   r   ru   r9   rv   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   rG   r*   
hyperbolicr-   r/   r2   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   ru   rG   rV   rd   gHz>)atol)r   r;   r0   r<   r%   r   r   )r3   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
ValueErrorr0   r1   )r3   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foorG   rm   r*   r   
   r   )r3   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 )
NrG   rm   r   r            @   z'Integer input 't1=3' gives wrong resulterr_msgr   r;   r0   r1   r   )r3   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 )
Nrm   r   r   r   r   rG   r   z(Integer input 'f0=10' gives wrong resultr   r   )r3   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 )
NrG   r   r   r   r   rm      z(Integer input 'f1=20' gives wrong resultr   r   )r3   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;   r0   r1   floatr   )r3   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__r5   rB   rH   rS   rZ   r^   ra   re   rj   rn   rr   rw   rz   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   ru   r9   r   poly1dr;   r0   _sweep_poly_phaser%   r=   r>   r3   pr   r@   r$   r   r   rA   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   ru   r9   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 )Nrd   rG   r   r   ru   r9   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   ru   r9   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+   ru   r9   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+   ru   r9   N)	r   arrayr;   r0   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+   ru   r9   N)r   r;   r0   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   r0   
gausspulser   r3   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   r0   unit_impulser   asarrayr3   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   r3   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   )
r0   r   r   
issubdtyper  floatingintintegerrK   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   c                       \ rS rSrS rSrg)TestSawtoothWaveformi  c                 D   [         R                  " [        R                  " S[        R                  S9[        R                  " S5      S9nUR
                  [        R                  :X  d   e[         R                  " S5      nUR
                  [        R                  :X  d   eg )Nr   r  )width)r0   sawtoothr   r   float32r  float64r3   waveforms     r   r
  TestSawtoothWaveform.test_dtype  sl    %%HHQbjj)A
 ~~+++%%a(~~+++r   r	   Nr   r   r   r   r
  r   r	   r   r   r  r    s    ,r   r  c                       \ rS rSrS rSrg)TestSquareWaveformi  c                 D   [         R                  " [        R                  " S[        R                  S9[        R                  " S5      S9nUR
                  [        R                  :X  d   e[         R                  " S5      nUR
                  [        R                  :X  d   eg )Nr   r  r   )duty)r0   squarer   r   r  r  r  r  s     r   r
  TestSquareWaveform.test_dtype  sh    ##BHHQbjj$A

SVX~~+++##A&~~+++r   r	   Nr  r	   r   r   r  r    s    ,r   r  )T)numpyr   pytestr   r   scipy._lib._array_apir   r   r   scipy.signal._waveformssignal
_waveformsr0   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, ,, ,r   