
    Ug.                         d dl Zd dlmZmZmZmZmZ d dl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)assert_almost_equalassert_equalassert_assert_allcloseassert_array_equal)raisesc                 "    |||z
  | z  |z  z   }|S N tf0f1t1fs        `/var/www/surfInsights/venv3-11/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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_zero1   s2    OaCCCIIIAs#####r   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )Nr,   r*   r+   r   d   ư>	r    linspacer0   _chirp_phaser&   maxabsr   r   
r3   r.   r   r   r   r   phaser%   r   abserrs
             r   test_linear_freq_01zTestChirp.test_linear_freq_015   s    K2s##&q"b"f==!!U++Aq<BB#?#??@@AAr   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )Nr,         i@      Y@      $@r   r7   r8   r9   r>   s
             r   test_linear_freq_02zTestChirp.test_linear_freq_02@   s    K2s##&q"b"f==!!U++Aq<BB#?#??@@AAr   c                 X    t          j        ddddd          }t          |d           d S )Nr   r*   r+   	quadraticr-   r/   r2   s     r   test_quadratic_at_zeroz TestChirp.test_quadratic_at_zeroK   s2    OaCCCLLLAs#####r   c                 Z    t          j        dddddd          }t          |d           d S )Nr   r*   r+   rH   F)r   r   r   r   r.   r   r/   r2   s     r   test_quadratic_at_zero2z!TestChirp.test_quadratic_at_zero2O   s;    OaCCC(-/ / /As#####r   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )NrH   r*   r+   r     r8   	r    r:   r0   r;   r&   r<   r=   r   r   r>   s
             r   test_quadratic_freq_01z TestChirp.test_quadratic_freq_01T   s    K2t$$&q"b"f==!!U++Aq?2r2r#B#BBCCDDr   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )NrH         4@rE   r   rM   r8   rN   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/   r2   s     r   test_logarithmic_at_zeroz"TestChirp.test_logarithmic_at_zeroj   s2    OaCCCNNNAs#####r   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )NrT   r*   r+   r   '  r8   	r    r:   r0   r;   r&   r<   r=   r   r   r>   s
             r   test_logarithmic_freq_01z"TestChirp.test_logarithmic_freq_01n   s    K2u%%&q"b"f==!!U++Aq?2r2r#B#BBCCDDr   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )NrT   rC   rD   rE   r   rW   r8   rX   r>   s
             r   test_logarithmic_freq_02z"TestChirp.test_logarithmic_freq_02y       K2u%%&q"b"f==!!U++Aq?2r2r#B#BBCCDDr   c                 0   d}d}d}d}t          j        d|d          }t          j        |||||          }t	          ||          \  }}t          j        t          j        |t          ||||          z
                      }	t          |	dk                d S )NrT   rD   rE   r   rW   r8   rX   r>   s
             r   test_logarithmic_freq_03z"TestChirp.test_logarithmic_freq_03   r\   r   c                 X    t          j        ddddd          }t          |d           d S )Nr   rE   r*   
hyperbolicr-   r/   r2   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 ]R\  }}t          j        |||||          }t	          ||          \  }}	t          ||||          }
t          |	|
           Sd S )Nr`   r*   r   rW   rE   g      $      )r    r:   r0   r;   r&   r   r   )r3   r.   r   r   casesr   r   r?   r%   r   expecteds              r   test_hyperbolic_freq_01z!TestChirp.test_hyperbolic_freq_01   s    K2u%%t   	) 	)FB*1b"b&AAE%a//EB'BB77HAx((((		) 	)r   c           	          d}d}t          j        d|d          }t          t          t          j        |d|d|           t          t          t          j        |d|d|           d S )Nr`   r*   r      r   r    r:   assert_raises
ValueErrorr0   r1   )r3   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foorE   rQ   r*   r   
   ri   )r3   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 )
NrE   rQ   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_resultrv   s           r   test_integer_t1zTestChirp.test_integer_t1   ss    KAr"" q"b"55_QB33
;Zw??????r   c                     d}d}t          j        ddd          }d}t          j        ||||          }d}t          j        ||||          }d}t	          |||	           d S )
NrQ   rs   r   r   rr   rE   ro   z(Integer input 'f0=10' gives wrong resultru   rw   )r3   r   r   r   r   rx   ry   rv   s           r   test_integer_f0zTestChirp.test_integer_f0   s    KAr"" q"b"55_QB33
<Zw??????r   c                     d}d}t          j        ddd          }d}t          j        ||||          }d}t          j        ||||          }d}t	          |||	           d S )
NrE   rs   r   r   rr   rQ      z(Integer input 'f1=20' gives wrong resultru   rw   )r3   r   r   r   r   rx   ry   rv   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 )	Nro   rt   r   r   r   rr   z5Integer input 'f0=10, t1=3, f1=20' gives wrong resultru   )r    r:   r0   r1   floatr   )r3   r   r   r   r   rx   ry   rv   s           r   test_integer_allzTestChirp.test_integer_all   s    KAr"" q%))U2YYb		JJ_QB33
IZw??????r   N)__name__
__module____qualname__r5   rA   rF   rI   rK   rO   rR   rU   rY   r[   r^   ra   rf   rl   rp   rz   r|   r   r   r   r   r   r(   r(   /   sE       $ $ $	 	 		 	 	$ $ $$ $ $
	 	 		 	 	$ $ $	 	 		 	 		 	 	$ $ $) ) )H H HJ J J	@ 	@ 	@	@ 	@ 	@	@ 	@ 	@@ @ @ @ @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
                      }t          |dk                d S )N)r*           r*   r   rs   rW   r8   	r    poly1dr:   r0   _sweep_poly_phaser&   r<   r=   r   r3   pr   r?   r%   r   re   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                 8   t          j        d          }t          j        ddd          }t          j        ||          }t          ||          \  }} ||          }t          j        t          j        ||z
                      }t          |dk                d S )Nr+   r   rs   rW   r8   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
                      }t          |dk                d S )Nrc   rE   r   rs   rW   r8   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
                      }t          |dk                d S )N)r*   r          r   rs   rW   r8   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
                      }t          |dk                d S )Nr+   r*   r   r   r   r+   rW   r8   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                 `   t          j        g d          }t          j        ddd          }t          j        ||          }t          ||          \  }} t          j        |          |          }t          j        t          j        ||z
                      }t          |dk                dS )z1Use an array of coefficients instead of a poly1d.r   r   r+   rW   r8   N)
r    arrayr:   r0   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
                      }t          |dk                dS )z/Use a list of coefficients instead of a poly1d.r   r   r+   rW   r8   N)	r    r:   r0   r   r&   r   r<   r=   r   r   s           r   test_sweep_poly_cubic3z$TestSweepPoly.test_sweep_poly_cubic3  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 resultru   r0   
gausspulser   r3   rx   ry   rv   s       r   test_integer_fczTestGaussPulse.test_integer_fc$  sL     +H@@@)(t<<<
>Zw??????r   c                     t          j        dd          }t          j        dd          }d}t          |||           d S )Nr   r*   )bwr   z'Integer input 'bw=1' gives wrong resultru   r   r   s       r   test_integer_bwzTestGaussPulse.test_integer_bw*  sL     +H===)(q999
;Zw??????r   c                     t          j        dd          }t          j        dd          }d}t          |||           d S )Nr   g      )bwriz)Integer input 'bwr=-6' gives wrong resultru   r   r   s       r   test_integer_bwrzTestGaussPulse.test_integer_bwr0  sL     +H$???)(;;;
=Zw??????r   c                     t          j        dd          }t          j        dd          }d}t          |||           d S )Nr   g      N)tpriz*Integer input 'tpr=-60' gives wrong resultru   r   r   s       r   test_integer_tprzTestGaussPulse.test_integer_tpr6  sL     +H%@@@)(<<<
>Zw??????r   N)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 )TestUnitImpulsec                     t          t          j        d          g d           t          t          j        d          g dg dg dg           d S )N   )r   r   r   r   r   r   r   rt   rt   )r   r   r   r   r   r   r   r0   unit_impulser3   s    r   test_no_indexzTestUnitImpulse.test_no_index?  sc    91!446K6K6KLLL91&99%IIyyy)))<	> 	> 	> 	> 	>r   c           
      .   t          t          j        dd          g d           t          t          j        dd          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 )Nro   rt   )
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   r0   r   r    r   r3   imps     r   
test_indexzTestUnitImpulse.test_indexD  s    91"a88999	; 	; 	;91&&AA%IIyyy)))<	> 	> 	> $VQ//3,,,*6,,*6,,*6,,*8 !9 !9 	: 	: 	: 	: 	:r   c                     t          t          j        dd          g dg dg dg           t          t          j        dd          g d           d S )Nr   midr   r   	   )	r   r   r   r   r   r   r   r   r   r   r   s    r   test_midzTestUnitImpulse.test_midQ  sm    91&%@@%IIyyy)))<	> 	> 	>91!U;;666	8 	8 	8 	8 	8r   c                    t          j        d          }t          t          j        |j        t          j                             t          j        ddt                    }t          t          j        |j        t          j                             t          j        ddt                    }t          t          j        |j        t          j
                             d S )Nr   rh   rt   )dtype)rh   r   )rt   r   )r0   r   r   r    
issubdtyper   floatingintintegercomplexcomplexfloatingr   s     r   
test_dtypezTestUnitImpulse.test_dtypeW  s    $Q''ci55666$Q555ci44555$VV7CCCci);<<=====r   N)r   r   r   r   r   r   r   r   r   r   r   r   =  sP        > > >
: : :8 8 8> > > > >r   r   )T)numpyr    numpy.testingr   r   r   r   r   pytestr   rj   scipy.signal._waveformssignal
_waveformsr0   r   r   r   r   r&   r(   r   r   r   r   r   r   <module>r      s      I I I I I I I I I I I I I I * * * * * * + + + + + + + + +  
     
  
	 	 	l@ l@ l@ l@ l@ l@ l@ l@^A A A A A A A AH@ @ @ @ @ @ @ @6"> "> "> "> "> "> "> "> "> ">r   