
    Bpj_B                     (   S SK rS SKrS SKJr  S SKJrJrJrJ	r	J
r
Jr  S SKJs  Jr  S SKJr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\
" \5       " S S5      5       r\
" \5       " S S5      5       rg)    N)raises)assert_almost_equalxp_assert_equalxp_assert_close_xp_copy_to_numpymake_xp_test_casexp_default_dtype)squaresawtoothc                      XU-
  U -  U-  -   nU$ N tf0f1t1fs        ]/var/www/html/pdf-tiff/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)	TestChirp3   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_zero5   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 )Nr1   r/   r0   r   d   ư>r$   linspacer5   _chirp_phaser*   maxabsr   
r8   r3   r   r   r   r   phaser)   r   abserrs
             r   test_linear_freq_01TestChirp.test_linear_freq_019   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 )Nr1         i@      Y@      $@r   r=   r>   r?   rD   s
             r   test_linear_freq_02TestChirp.test_linear_freq_02D   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 )
Nr1   r/   r0   r   r=   F)complexTr>   )r$   r@   r5   r6   varreal)r8   r3   r   r   r   r   w_real	w_complexw_pwr_rw_pwr_cerrs              r   test_linear_complex_power#TestChirp.test_linear_complex_powerO   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/   r1   Tr   r   r   r   r3   rP         ?        r5   r6   r   r7   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/   r0   	quadraticr2   r4   r7   s     r   test_quadratic_at_zero TestChirp.test_quadratic_at_zeroe   s"    OOaCCCLAs#r   c           	      N    [         R                  " SSSSSSS9n[        US5        g )Nr   r/   r0   rb   F)r   r   r   r   r3   r   r4   r7   s     r   test_quadratic_at_zero2!TestChirp.test_quadratic_at_zero2i   s'    OOaCCC(-/As#r   c           	      N    [         R                  " SSSSSSS9n[        US5        g )	Nr         r0   r/   rb   Tr\   r]   r^   r7   s     r   test_quadratic_complex_at_zero(TestChirp.test_quadratic_complex_at_zeron   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 )Nrb   r/   r0   r     r>   r$   r@   r5   rA   r*   rB   rC   r   rD   s
             r   test_quadratic_freq_01 TestChirp.test_quadratic_freq_01s   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 )Nrb         4@rL   r   rm   r>   rn   rD   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/   r0   logarithmicr2   r4   r7   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 )Nrv   r/   r0   r   '  r>   r$   r@   r5   rA   r*   rB   rC   r   rD   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 )Nrv   rJ   rK   rL   r   rz   r>   r{   rD   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 )Nrv   rK   rL   r   rz   r>   r{   rD   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   rL   r/   
hyperbolicr2   r4   r7   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   rz   rL   r[   ri   gHz>)atol)r$   r@   r5   rA   r*   r   r   )r8   r3   r   r   casesr   r   rE   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
ValueErrorr5   r6   )r8   r3   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foorL   rr   r/   r   
   r   )r8   r3   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 )
NrL   rr   r#   r!            @   z'Integer input 't1=3' gives wrong resulterr_msgr$   r@   r5   r6   r   )r8   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 )
Nrr   r   r#   r!   r   rL   r   z(Integer input 'f0=10' gives wrong resultr   r   )r8   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 )
NrL   r   r#   r!   r   rr      z(Integer input 'f1=20' gives wrong resultr   r   )r8   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@   r5   r6   floatr   )r8   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__r:   rG   rM   rX   r_   rc   rf   rj   ro   rs   rw   r|   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r   r   r,   r,   3   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   rz   r>   r$   poly1dr@   r5   _sweep_poly_phaser*   rB   rC   r8   pr   rE   r)   r   r   rF   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 )Nr0   r   r   rz   r>   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 )Nri   rL   r   r   rz   r>   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   rz   r>   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r0   r/   r   r   r   r0   rz   r>   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   r0   rz   r>   N)	r$   arrayr@   r5   r   r*   r   rB   rC   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   r0   rz   r>   N)r$   r@   r5   r   r*   r   rB   rC   r   s           r   test_sweep_poly_cubic3$TestSweepPoly.test_sweep_poly_cubic36  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)TestGaussPulseiA  c                 p    [         R                  " SSS9n[         R                  " SSS9nSn[        X!US9  g )Ncutoffg     @@)fc  z*Integer input 'fc=1000' gives wrong resultr   r5   
gausspulser   r8   r   r   r   s       r   test_integer_fcTestGaussPulse.test_integer_fcC  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_bwI  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_bwrO  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_tprU  s5     ++H%@))(<
>
'Br   r   N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r   A  s    CCCCr   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestUnitImpulsei\  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   r5   unit_impulser$   asarrayr8   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   r8   imps     r   
test_indexTestUnitImpulse.test_indexd  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_midq  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!   )
r5   r   r$   
issubdtyper
  floatingintintegerrP   complexfloatingr   s     r   
test_dtypeTestUnitImpulse.test_dtypew  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   \  s    I;C<r   r   c                   *   \ rS rSr\R
                  R                  SSS9\R
                  R                  SSS/5      \R
                  R                  SSS/5      S	 5       5       5       rS
 r	S r
S r\R
                  R                  SSS9S 5       rSrg)TestSawtoothWaveformi  cupycupy/cupy/issues/9541reasont_dtypefloat32float64width_dtypec                     [        X15      n[        X25      n[        UR                  SUS9UR                  SUS9S9nUR                  UR	                  X5      :X  d   eg )Nr!   r	  width)getattrr   r   r
  result_type)r8   r  r  xpwaveforms        r   r  TestSawtoothWaveform.test_dtype  s^     "&b.JJqJ(

1K
0P
 ~~!EEEEr   c                     UR                  SSUR                  -  SUR                  S9n[        USS9n[        USUR                  -  -   SS9n[	        X45        g )Nr   r   r=   r	  皙?r  )r@   r&   r  r   r   r8   r!  r   y1y2s        r   test_periodic"TestSawtoothWaveform.test_periodic  sP    KK1RUU7CrzzK:as#a!BEE'k-r   c                    UR                  [        U5      5      R                  nUR                  SUR                  SUR                  -  SU-  -
  SUR                  -  /5      n[        U5      n[        XAR                  / SQ5      5        g )Nr   r   r   )ri   r   r/   ri   )finfor	   epsr   r&   r   r   )r8   r!  r-  r   ys        r   test_known_values&TestSawtoothWaveform.test_known_values  sk    hh'+,00JJ255!BEE'BsF"2AbeeG<=QK::&89:r   c                     UR                  SSUR                  -  S5      n[        USS9nUR                  UR	                  U5      5      (       d   eg )Nr   r   r   g      ?r  )r@   r&   r   allisnanr8   r!  r   r.  s       r   test_invalid_width_nan+TestSawtoothWaveform.test_invalid_width_nan  sE    KK1RUU7B'Qc"vvbhhqk""""r   zcupy/cupy/issues/9568c                     UR                  SSUR                  -  S5      n[        USS9n[        X1R	                  U5      5        [        [        U* S5      SS [        U5      SS 5        g )	Nr   r   r   r"   r  r   r!   r#   )r@   r&   r   r   flipr4  s       r   test_triangle_symmetry+TestSawtoothWaveform.test_triangle_symmetry  s]    KK1RUU7D)Qc"771:&!R(2.Ab0ABr   r   N)r   r   r   r   pytestmarkxfail_xp_backendsparametrizer  r)  r/  r5  r9  r   r   r   r   r  r    s    [[""62I"J[[YI(>?[[]Y	,BCF D @ KF ;#
 [[""62I"JC KCr   r  c                   8   \ rS rSrS r\R                  R                  SSS9\R                  R                  SSS/5      \R                  R                  S	SS/5      S
 5       5       5       r	\R                  R                  SSS9\R                  R                  S/ SQ5      \R                  R                  S/ SQ5      S 5       5       5       r
\R                  R                  SSS/5      S 5       rS r\R                  R                  S/ SQ5      S 5       rSrg)TestSquareWaveformi  c                    UR                  SS[        R                  -  S5      n[        U5      nUR                  UR                  :X  d   e[        R
                  " [        U5      5      n[        U5      R                  SS15      (       d   eg )Nr   r   r   ri   r/   )	r@   r$   r&   r
   shapeuniquer   setissubset)r8   r!  r   r.  rC  s        r   test_uniqueTestSquareWaveform.test_unique  sn    KK1RUU7D)1Iww!''!!!,Q/06{##T3K0000r   r  r  r  r  r  r  
duty_dtypec                     [        X15      n[        X25      n[        UR                  SUS9UR                  SUS9S9nUR                  UR	                  X5      :X  d   eg )Nr!   r	  r"   duty)r  r
   r   r
  r   )r8   r  rH  r!  r"  s        r   r  TestSquareWaveform.test_dtype  s]     "&R,
"**Qg*6!zz#Zz@B~~!DDDDr   r
  )Nr  r  rK  )g?g      ?r"   g      ?c                 z   Uc  UO
[        X15      nUR                  SUS9S-  S-  UR                  -  n[        XBS9nUc  [	        U5      OUnUR                  UR                  US:H  US95      n[        XcR                  X!S9S   5        [        UR                  U5      UR                  SU-  S-
  US9S   5        g )	Ng     @r	  rz   r   rJ  r/   r   r!   )r  aranger&   r
   r	   meanr   r   )r8   r
  rK  r!  r   r.  fraction_highs          r   test_duty_cycle_fraction+TestSquareWaveform.test_duty_cycle_fraction  s     GB,> IIfEI*U2Q6ruu<1 (- $5

185
 ABzz$z'DR'HI
BJJqvzJ$G$KLr   zduty, expected)r/   r/   )r   ri   c                     UR                  SSUR                  -  S5      n[        XAS9n[        XSR	                  UR
                  U5      5        g )Nr   r   r=   rJ  )r@   r&   r
   r   fullrB  )r8   rK  r   r!  r   r.  s         r   test_duty_edge_cases'TestSquareWaveform.test_duty_edge_cases  s=    KK1RUU7C(1 77177H56r   c                     UR                  SSUR                  -  SSUR                  S9n[        USS9n[        USUR                  -  -   SS9n[	        X45        g )Nr   r   r   F)endpointr
  r%  rJ  )r@   r&   r  r
   r   r&  s        r   r)   TestSquareWaveform.test_periodic  sR    KK1RUU7BbjjKIAC A"%%Kc*r   )gg?r0   c                     UR                  SS[        R                  -  S5      n[        X1S9nUR	                  UR                  U5      5      (       d   eg )Nr   r   r   rJ  )r@   r$   r&   r
   r2  r3  )r8   rK  r!  r   r.  s        r   test_invalid_duty$TestSquareWaveform.test_invalid_duty  sC    KK1RUU7B'1 vvbhhqk""""r   r   N)r   r   r   r   rF  r;  r<  r=  r>  r  rQ  rU  r)  r[  r   r   r   r   r@  r@    s)   1 [[""62I"J[[YI(>?[[\Iy+ABE C @ KE [[""62I"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
_waveformsr5   scipy.signalr
   r   r   r   r   r   r*   r,   r   r   r   r  r@  r   r   r   <module>rc     s      * 
 , + )


	GC GCTA AHC C6#< #<L 8"C "C "CJ 63# 3# 3#r   