
    _Mh2                         d dl Zd dlmZ d dlmZmZmZ d dl	m
c 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dS )    N)raises)assert_almost_equalxp_assert_equalxp_assert_closec                 "    |||z
  | z  |z  z   }|S N tf0f1t1fs        a/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/signal/tests/test_waveforms.pychirp_linearr      s    
b2g]RAH    Tc                 b    |r|||z
  | dz  z  |dz  z  z   }n|||z
  || z
  dz  z  |dz  z  z
  }|S )N   r	   )r   r   r   r   vertex_zeror   s         r   chirp_quadraticr      sU     1"r'QT!BE))"r'b1fq[(2q500Hr   c                 "    |||z  | |z  z  z  }|S r   r	   r
   s        r   chirp_geometricr      s    
beqt_AHr   c                 4    ||z  |z  ||z
  | z  ||z  z   z  }|S r   r	   r
   s        r   chirp_hyperbolicr      s*    
2bR"WaK"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   g      ?N)npdiffpi)r   thetadtr   tfs        r   compute_frequencyr$   $   sY     
1!B
"% 2%A	aeafn	Bq5Lr   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dS )	TestChirpc                 X    t          j        ddddd          }t          |d           d S )Nr         ?       @linearr   r   r   r   method	waveformschirpr   selfws     r   test_linear_at_zerozTestChirp.test_linear_at_zero2   s2    OaCCCIIIAs#####r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )Nr*   r(   r)   r   d   ư>r   linspacer.   _chirp_phaser$   maxabsr   
r1   r,   r   r   r   r   phaser#   r   abserrs
             r   test_linear_freq_01zTestChirp.test_linear_freq_016   s    K2s##&q"b"f==!!U++Aq<BB#?#??@@AA}}}}}}r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )Nr*         i@      Y@      $@r   r5   r6   r7   r<   s
             r   test_linear_freq_02zTestChirp.test_linear_freq_02A   s    K2s##&q"b"f==!!U++Aq<BB#?#??@@AA}}}}}}r   c                 8   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 d S )
Nr*   r(   r)   r   r5   F)complexTr6   )r   r8   r.   r/   varreal)r1   r,   r   r   r   r   w_real	w_complexw_pwr_rw_pwr_cerrs              r   test_linear_complex_powerz#TestChirp.test_linear_complex_powerL   s    K2s##BBFFFOAr2r64HHH	&..&## (((Tzzzzzzr   c                 Z    t          j        dddddd          }t          |d           d S )Nr         $r(   r*   Tr   r   r   r   r,   rF         ?        r.   r/   r   r0   s     r   test_linear_complex_at_zeroz%TestChirp.test_linear_complex_at_zero]   s;    OaEcc($(* * *8$$$$$r   c                 X    t          j        ddddd          }t          |d           d S )Nr   r(   r)   	quadraticr+   r-   r0   s     r   test_quadratic_at_zeroz TestChirp.test_quadratic_at_zerob   s2    OaCCCLLLAs#####r   c                 Z    t          j        dddddd          }t          |d           d S )Nr   r(   r)   rV   F)r   r   r   r   r,   r   r-   r0   s     r   test_quadratic_at_zero2z!TestChirp.test_quadratic_at_zero2f   s;    OaCCC(-/ / /As#####r   c                 Z    t          j        dddddd          }t          |d           d S )	Nr         r)   r(   rV   TrQ   rR   rS   r0   s     r   test_quadratic_complex_at_zeroz(TestChirp.test_quadratic_complex_at_zerok   s;    OaDSS$(* * *6"""""r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )NrV   r(   r)   r     r6   r   r8   r.   r9   r$   r:   r;   r   r<   s
             r   test_quadratic_freq_01z TestChirp.test_quadratic_freq_01p   s    K2t$$&q"b"f==!!U++Aq?2r2r#B#BBCCDD}}}}}}r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )NrV         4@rC   r   r^   r6   r_   r<   s
             r   test_quadratic_freq_02z TestChirp.test_quadratic_freq_02{   s    K2t$$&q"b"f==!!U++Aq?2r2r#B#BBCCDD}}}}}}r   c                 X    t          j        ddddd          }t          |d           d S )Nr   r(   r)   logarithmicr+   r-   r0   s     r   test_logarithmic_at_zeroz"TestChirp.test_logarithmic_at_zero   s2    OaCCCNNNAs#####r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )Nre   r(   r)   r   '  r6   r   r8   r.   r9   r$   r:   r;   r   r<   s
             r   test_logarithmic_freq_01z"TestChirp.test_logarithmic_freq_01   s    K2u%%&q"b"f==!!U++Aq?2r2r#B#BBCCDD}}}}}}r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )Nre   rA   rB   rC   r   rh   r6   ri   r<   s
             r   test_logarithmic_freq_02z"TestChirp.test_logarithmic_freq_02       K2u%%&q"b"f==!!U++Aq?2r2r#B#BBCCDD}}}}}}r   c                    d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	|	dk     sJ d S )Nre   rB   rC   r   rh   r6   ri   r<   s
             r   test_logarithmic_freq_03z"TestChirp.test_logarithmic_freq_03   rm   r   c                 X    t          j        ddddd          }t          |d           d S )Nr   rC   r(   
hyperbolicr+   r-   r0   s     r   test_hyperbolic_at_zeroz!TestChirp.test_hyperbolic_at_zero   s2    OaDSSNNNAs#####r   c                    d}d}t          j        d|d          }ddgddgddgddgg}|D ]T\  }}t          j        |||||          }t	          ||          \  }}	t          ||||          }
t          |	|
d	           Ud S )
Nrq   r(   r   rh   rC   rP   r[   gHz>)atol)r   r8   r.   r9   r$   r   r   )r1   r,   r   r   casesr   r   r=   r#   r   expecteds              r   test_hyperbolic_freq_01z!TestChirp.test_hyperbolic_freq_01   s    K2u%%t   	4 	4FB*1b"b&AAE%a//EB'BB77HAxd33333		4 	4r   c           	          d}d}t          j        d|d          }t          t          t          j        |d|d|           t          t          t          j        |d|d|           d S )Nrq   r(   r      r   r   r8   assert_raises
ValueErrorr.   r/   )r1   r,   r   r   s       r   test_hyperbolic_zero_freqz#TestChirp.test_hyperbolic_zero_freq   s]    K2q!!j)/1aQGGGj)/1aQGGGGGr   c           	          d}d}d}d}t          j        d|d          }t          t          t          j        |||||           d S )NfoorC   rb   r(   r   
   rz   )r1   r,   r   r   r   r   s         r   test_unknown_methodzTestChirp.test_unknown_method   sK    K2r""j)/1b"b&IIIIIr   c                     d}d}t          j        ddd          }d}t          j        ||||          }d}t          j        ||||          }d}t	          |||	           d S )
NrC   rb   r   r            @   z'Integer input 't1=3' gives wrong resulterr_msgr   r8   r.   r/   r   )r1   r   r   r   r   float_result
int_resultr   s           r   test_integer_t1zTestChirp.test_integer_t1   ss    KAr"" q"b"55_QB33
;
L'BBBBBBr   c                     d}d}t          j        ddd          }d}t          j        ||||          }d}t          j        ||||          }d}t	          |||	           d S )
Nrb   r   r   r   r   rC   r   z(Integer input 'f0=10' gives wrong resultr   r   )r1   r   r   r   r   r   r   r   s           r   test_integer_f0zTestChirp.test_integer_f0   s    KAr"" q"b"55_QB33
<
L'BBBBBBr   c                     d}d}t          j        ddd          }d}t          j        ||||          }d}t          j        ||||          }d}t	          |||	           d S )
NrC   r   r   r   r   rb      z(Integer input 'f1=20' gives wrong resultr   r   )r1   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          |||           d S )	Nr   r   r   r   r   r   z5Integer input 'f0=10, t1=3, f1=20' gives wrong resultr   )r   r8   r.   r/   floatr   )r1   r   r   r   r   r   r   r   s           r   test_integer_allzTestChirp.test_integer_all   s    KAr"" q%))U2YYb		JJ_QB33
I
L'BBBBBBr   N)__name__
__module____qualname__r3   r?   rD   rN   rT   rW   rY   r\   r`   rc   rf   rj   rl   ro   rr   rw   r}   r   r   r   r   r   r	   r   r   r&   r&   0   sr       $ $ $	 	 		 	 	  "% % %
$ $ $$ $ $
# # #
	 	 		 	 	$ $ $	 	 		 	 		 	 	$ $ $4 4 4H H HJ J J	C 	C 	C	C 	C 	C	C 	C 	CC C C C Cr   r&   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestSweepPolyc                 &   t          j        g d          }t          j        ddd          }t          j        ||          }t          ||          \  }} ||          }t          j        t          j        ||z
                      }|dk     sJ d S )N)r(           r(   r   r   rh   r6   r   poly1dr8   r.   _sweep_poly_phaser$   r:   r;   r1   pr   r=   r#   r   rv   r>   s           r   test_sweep_poly_quad1z#TestSweepPoly.test_sweep_poly_quad1   s    Iooo&&K3&&+Aq11!!U++A1R55q8|,,--}}}}}}r   c                 "   t          j        d          }t          j        ddd          }t          j        ||          }t          ||          \  }} ||          }t          j        t          j        ||z
                      }|dk     sJ d S )Nr)   r   r   rh   r6   r   r   s           r   test_sweep_poly_constz#TestSweepPoly.test_sweep_poly_const  s    IcNNK3&&+Aq11!!U++A1R55q8|,,--}}}}}}r   c                 &   t          j        ddg          }t          j        ddd          }t          j        ||          }t          ||          \  }} ||          }t          j        t          j        ||z
                      }|dk     sJ d S )Nr[   rC   r   r   rh   r6   r   r   s           r   test_sweep_poly_linearz$TestSweepPoly.test_sweep_poly_linear  s    ItTl##K3&&+Aq11!!U++A1R55q8|,,--}}}}}}r   c                 &   t          j        g d          }t          j        ddd          }t          j        ||          }t          ||          \  }} ||          }t          j        t          j        ||z
                      }|dk     sJ d S )N)r(   r          r   r   rh   r6   r   r   s           r   test_sweep_poly_quad2z#TestSweepPoly.test_sweep_poly_quad2  s    I&&&''K3&&+Aq11!!U++A1R55q8|,,--}}}}}}r   c                 &   t          j        g d          }t          j        ddd          }t          j        ||          }t          ||          \  }} ||          }t          j        t          j        ||z
                      }|dk     sJ d S )Nr)   r(   r   r   r   r)   rh   r6   r   r   s           r   test_sweep_poly_cubicz#TestSweepPoly.test_sweep_poly_cubic   s    I+++,,K3&&+Aq11!!U++A1R55q8|,,--}}}}}}r   c                 J   t          j        g d          }t          j        ddd          }t          j        ||          }t          ||          \  }} t          j        |          |          }t          j        t          j        ||z
                      }|dk     sJ dS )z1Use an array of coefficients instead of a poly1d.r   r   r)   rh   r6   N)	r   arrayr8   r.   r   r$   r   r:   r;   r   s           r   test_sweep_poly_cubic2z$TestSweepPoly.test_sweep_poly_cubic2)  s    H***++K3&&+Aq11!!U++A29Q<<##q8|,,--}}}}}}r   c                 &   g d}t          j        ddd          }t          j        ||          }t	          ||          \  }} t          j        |          |          }t          j        t          j        ||z
                      }|dk     sJ dS )z/Use a list of coefficients instead of a poly1d.r   r   r)   rh   r6   N)r   r8   r.   r   r$   r   r:   r;   r   s           r   test_sweep_poly_cubic3z$TestSweepPoly.test_sweep_poly_cubic33  s    !!!K3&&+Aq11!!U++A29Q<<##q8|,,--}}}}}}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dS )TestGaussPulsec                     t          j        dd          }t          j        dd          }d}t          |||           d S )Ncutoffg     @@)fci  z*Integer input 'fc=1000' gives wrong resultr   r.   
gausspulser   r1   r   r   r   s       r   test_integer_fczTestGaussPulse.test_integer_fc@  sL     +H@@@)(t<<<
>
L'BBBBBBr   c                     t          j        dd          }t          j        dd          }d}t          |||           d S )Nr   r(   )bwr   z'Integer input 'bw=1' gives wrong resultr   r   r   s       r   test_integer_bwzTestGaussPulse.test_integer_bwF  sL     +H===)(q999
;
L'BBBBBBr   c                     t          j        dd          }t          j        dd          }d}t          |||           d S )Nr   g      )bwriz)Integer input 'bwr=-6' gives wrong resultr   r   r   s       r   test_integer_bwrzTestGaussPulse.test_integer_bwrL  sL     +H$???)(;;;
=
L'BBBBBBr   c                     t          j        dd          }t          j        dd          }d}t          |||           d S )Nr   g      N)tpriz*Integer input 'tpr=-60' gives wrong resultr   r   r   s       r   test_integer_tprzTestGaussPulse.test_integer_tprR  sL     +H%@@@)(<<<
>
L'BBBBBBr   N)r   r   r   r   r   r   r   r	   r   r   r   r   >  s^        C C CC C CC C CC C C C Cr   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestUnitImpulsec           	          t          t          j        d          t          j        g d                     t          t          j        d          t          j        g dg dg dg                     d S )N   )r(   r   r   r   r   r   r   r   r   )r(   r   r   r   r   r   r   r.   unit_impulser   asarrayr1   s    r   test_no_indexzTestUnitImpulse.test_no_index[  s    	.q11
#:#:#:;;	= 	= 	=	.v66
KKKIII#FGG	I 	I 	I 	I 	Ir   c           
      v   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                     d S )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   r1   imps     r   
test_indexzTestUnitImpulse.test_indexa  s    	.r155
#C#C#CDD	F 	F 	F	.vv>>
KKKIII#FGG	I 	I 	I $VQ//RZ)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                     d S )Nr   midr   r   r   	   )	r   r   r   r   r   r   r   r   r   r   r   s    r   test_midzTestUnitImpulse.test_midn  s    	.vu==
KKKIII#FGG	I 	I 	I	.q%88
#@#@#@AA	C 	C 	C 	C 	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 d S )Nr   ry   r   )dtype)ry   r   )r   r   )
r.   r   r   
issubdtyper   floatingintintegerrF   complexfloatingr   s     r   
test_dtypezTestUnitImpulse.test_dtypet  s    $Q''}SY44444$Q555}SY
33333$VV7CCC}SY(:;;;;;;;r   N)r   r   r   r   r   r   r   r	   r   r   r   r   Y  sV        I I I; ; ;C C 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      s       * * * * * *          , + + + + + + + +  
     
  
	 	 	GC GC GC GC GC GC GC GCTA A A A A A A AHC C C C C C C C6#< #< #< #< #< #< #< #< #< #<r   