
    (ph                        S SK r S SKrS SKJr  S SKrS SKJr  S SKJ	r	J
r
Jr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJrJr  S SKJr  S SKJr  S S j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% " 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)suppress_warnings)raises)assert_almost_equalxp_assert_equalxp_assert_close)ss2tftf2ssltidltibodefreqresplsimimpulsestepabcd_normalizeplace_polesTransferFunction
StateSpaceZerosPolesGain)BadCoefficientsc           
         UR                  5       nU  H  nSn[        UR                  S   5       H  n[        R                  " [        R
                  " U5      [        R                  " U5      /[        R
                  " X   5      [        R                  " X   5      /X#5      (       d  Mz  Sn[        R                  " X5          O   U(       a  M  [        S[        U5      -   S-   [        U5      -   5      e   g)a  
Check each pole in P1 is close to a pole in P2 with a 1e-8
relative tolerance or 1e-8 absolute tolerance (useful for zero poles).
These tolerances are very strict but the systems tested are known to
accept these poles so we should not be far from what is requested.
Fr   TzCan't find pole z in N)
copyrangeshapenpallcloserealimagdelete
ValueErrorstr)P1P2rtolatolp1foundp2_idxs          Q/var/www/html/venv/lib/python3.13/site-packages/scipy/signal/tests/test_ltisys.py_assert_poles_closer*      s     
BBHHQK(F{{BGGBK5GGBJ/1DE' ' 		"% ) u/#b'9FBSWLMM     c                   d    \ rS rSrS rS rS rS r\R                  R                  S 5       rSrg)	TestPlacePoles(   c                 "   [        XU40 UD6n[        R                  R                  U[        R                  " X%R
                  5      -
  5      u  pg[        XeR                  5        [        XeR                  5        [        X5R                  5        U$ )z{
Perform the most common tests on the poles computed by place_poles
and return the Bunch object for further specific tests
)	r   r   linalgeigdotgain_matrixr*   requested_polescomputed_poles)selfABPkwargsfsfexpected_s           r)   _checkTestPlacePoles._check*   sj    
 !,V,iimmAq//(B$BCH&9&9:H&8&89A112
r+   c                    [         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      nU R                  XUSS9  U R                  XUSS9  [         R                  " S	S
9   U R                  XS5        S S S 5        g ! , (       d  f       g = f)NgGz?gʿg\(@gNbX9g<,Ԛg)\(r   g?gOn?d;O@gV-gOn@g~jt?rB   grh|?gE    )r   K@V-?rE   r   r   ^I+	r      皙ɿ      g}гY9gDT!KNV0methodYTignore)invalid)rG   rG      rQ   )r   arrayreshaper>   errstate)r6   r7   r8   r9   s       r)   	test_realTestPlacePoles.test_real6   s     HH % &&-gam 	
 HH=>FFq!LHH34 	A!F+A!D) [[*KKi( +**s   B;;
C	c                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " SS/SS/SS/SS//5      n[         R                  " / SQ5      n[         R                  " SSS9   U R                  XU5        S S S 5        / S	Qn[         R                  " SSS9   U R                  XUS
S9  S S S 5        [         R                  " / SQ5      R	                  SS5      n[         R                  " / SQ5      R	                  SS5      n/ SQnU R                  XU5        [         R
                  " S5      [         R                  " S5      -
  n[         R
                  " S5      [         R                  " S/S-  S5      S S 2SS 24   -
  nXS S2S S24'   X%S S2S S24'   / SQn[         R                  " SSS9   U R                  XEU5        S S S 5        / SQnU R                  US S2S S24   US S2S S24   U5        / SQnU R                  US S2S S24   US S2S S24   U5        [         R                  " / SQ5      R	                  SS5      n[         R                  " / SQ5      R	                  SS5      n[         R                  " / SQ5      n[         R                  " SSS9   [        XU5        S S S 5        [         R                  " / SQ5      n[         R                  " SSS9   U R                  XU5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNd= f! , (       d  f       GN`= f! , (       d  f       N= f! , (       d  f       g = f)N)r      r   r   )r   r   r   竪@)r   r   r   r   r      )                          ?rO   )dividerP   )y        ưy        ư>
   i  maxiter)$iii%iiFii[iiiYiiii\ii^iciii(i~iiiiirG   iSiiigiiipii   )iiiii0i_iLi`iiiii]ii#iii"iHiii<i^iUiiiciiiR   )y      9      =y      9      =@y      ?@      Ey      ?@      E@y     @@     Dy     @@     D@)   rf   rf   )rf   ra   ra   )r`   r.   2   <   F   y      4      y      4      @y      @      @y      @      )
r`   rg   rh   iiiir\   )
y      $      $@y      4      4@y      >      >@y      D      D@y      I      I@y      $      $y      4      4y      >      >y      D      Dy      I      I)r   rX   r   r   r   r   r   rY   r   r   r   r   r   r   r   r   r   r   r   re   r   r   r   r   	   )
r   r   r   r   rZ   r   r   rZ   rG   rQ   rG   )y            ?y                        ?            )rp   r[   rq   rr   )	r   rR   rT   r>   rS   oneseyediagr   )r6   r7   r8   r9   big_Abig_Bs         r)   test_complexTestPlacePoles.test_complexL   s    HHl%""$ % HHq!f!f!f!f 
 HH+, [[(;KKa  < %[[(;KKaK. < HHG
 WQq\ 	
 HH(
 wq| 	
 KA!
  + !R!21QR4!88bqb!ebqb!e=[[(;KKa( < 7E#2#crc'NE#2#crc'NA66E#2#crc'NE#2#crc'NA6 HH ) **1'!A, 	
HH*+33Aa8HH56[[(;a  <
 HH/0[[(;KKa  <;{ <; <;> <;  <; <;s<   2L&L;L'%L9'M

L
L$'
L69
M

Mc                 J   [         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      nU R                  XU5      n[         R                  " UR
                  5      (       d   e[         R                  " UR                  5      (       d   e[         R                  " S5      nU R                  XU5      n[         R                  " UR
                  5      (       d   e[         R                  " UR                  5      (       d   eUS S 2S4   R                  SS5      n[         R                  " S5      nU R                  XU5      nUR
                  S:X  d   eUR                  S:X  d   eg )NrA   rC   )r   rD   rE   rE   r   r   rF   r   rZ   rG   rQ   rC   re   rd   rX      rH   )r^   r]   r[   rp   r   rZ   )r   rR   rS   r>   isnanr$   nb_iter)r6   r7   r8   r9   r;   s        r)   test_tricky_BTestPlacePoles.test_tricky_B   sM    HH % &&-gam 	
 HH " ##*71a= 	

 HH34kk!" xx!!!!xx$$$$ HH()kk!"xx!!!!xx$$$$ acFNN1QHH()kk!" xx1}}{{ar+   c           
         [         R                  " / SQ5      R                  SS5      n[         R                  " / SQ5      R                  SS5      n[        [        [
        XSSS9  [        [        [
        X[         R                  " S5      R                  SS5      5        [        [        [
        US S 2S S 2[         R                  4   US5        [        [        [
        XS S 2S S 2[         R                  4   S5        [        [        [
        XS	5        [        [        [
        XS
5        [        [        [
        XSSS9  [        [        [
        XSSS9  [        [        [
        XS5        [        [        [
        [         R                  " S5      [         R                  " S5      S5        [        R                  " SS9 n[        R                  " S5        [        XSSSS9n[        U5      S:X  d   e[        US   R                  [        5      (       d   eS[        US   R                   5      ;   d   eUR"                  S:X  d   e S S S 5        [        [        [
        XS5        [        [        [
        US S 2S S24   US5        [        [        [
        XS S2S S 24   S5        [        [        [
        XSSS9  g ! , (       d  f       Ny= f) N)r   rX   r   r   r   r   r   rY   r   r   r   r   r   r   r   r   rC   )r   r   r   r   rZ   r   r   rZ   rG   ) 皙ffffff333333foorL   rZ   )r   r   r   r   r[   )r   r   r   *   r$   irb   )rp   rp   rp   rp   )rC   rC   )rC   rG   rZ   rG   rQ   rC   T)recordalways)r\   rp   r[   rs   gؗҜ<)r$   rc   r\   z4Convergence was not reached after maxiter iterations)r^   r]                @rp   rQ   )rp   r[   rs   )r^   r]   r   y             rK   )r   rR   rS   assert_raisesr    r   newaxisrt   warningscatch_warningssimplefilterlen
issubclasscategoryUserWarningr!   messager~   )r6   r7   r8   wr;   s        r)   test_errorsTestPlacePoles.test_errors   sD    HH9:BB1QGHH&'//!4 	j+q5J"	$ 	j+qhh45==aB	D 	j+q1RZZ/@!+	- 	j+qAa

N2C+	- 	j+q5MN 	j+q5EF 	j+q5J	 	j+q5J!	# 	j+q]C 	j+rwwu~ggeni	1
 $$D1Q!!(+aMrJCq6Q;;aennk::::J1R5==)* + *;;"$$$ 2 	j+q5KL 	j+q2A2w=I 	j+qBQBqD'=I 	j+q/	@' 21s   <BJ88
K N)__name__
__module____qualname____firstlineno__r>   rU   ry   r   pytestmarkthread_unsafer   __static_attributes__r   r+   r)   r-   r-   (   s;    
),N!`  D [[@@ @@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
)	TestSS2TFi  c           	          [        [        R                  " X45      [        R                  " X45      [        R                  " X145      [        R                  " X245      S5        g )Nr   )r   r   zerosr6   pqrs       r)   check_matrix_shapesTestSS2TF.check_matrix_shapes  sC    bhhvhhvhhvhhv	#r+   c                 @    S H  u  pnU R                  XU5        M     g )N))rQ   rQ   rQ   )rZ   rQ   rQ   rZ   rZ   rZ   )r   r   s       r)   test_shapesTestSS2TF.test_shapes
  s"     9GA!$$Q1- 9r+   c                 B   [         R                  " / SQ5      n[         R                  " / SQ5      n[        X5      u  p4pV[        USS/SS//SS9  [        US	/S//SS9  [        US	S
//SS9  [        US	//SS9  [	        X4XV5      u  px[        US   USS9  [        XSS9  g )N)      ?      @      @)r          @r          r[   rZ   r   vIh%<=r   r   rG   +=)r   rR   r	   r   r   )	r6   bar7   r8   CDbbaas	            r)   
test_basicTestSS2TF.test_basic  s    HH_%HH_%1[
aS"I1v.U;RD1#;U3RG951RD6.qQ"1qu-E*r+   c                    Sn[        U6 u  p#pE[        US//SS9  [        US//SS9  [        US//SS9  [        US//SS9  [        X#XE5      u  pg[        USS//SS9  [        USS/SS9  S/S	//S
4n[        U6 u  p#pE[        US//SS9  [        US//SS9  [        US/S//SS9  [        US/S	//SS9  [        X#XE5      u  pg[        USS/S	S//SS9  [        USS/SS9  g )N)rG   rZ           r   r   r   r   r   re   rG   rZ   r   )r	   r   r   r6   tfr7   r8   r   r   numdens           r)   test_zero_order_round_trip$TestSS2TF.test_zero_order_round_trip  s!   BZ
aRD6.RD6.RD6.RD6.q$r1gYU3b!W51sQCj!_BZ
aRD6.RD6.RD1#;U3RD1#;U3q$r1g1v.U;b!W51r+   c                 d   SS/SS//SS/4n[        U6 u  p#pE[        US//SS9  [        US//SS9  [        US/S//SS9  [        US/S//SS9  [        X#XE5      u  pg[        USS	/SS//SS9  [        USS	/SS9  / S
Q/ SQ// SQ4n[        U6 u  p#pE[        USS/SS//SS9  [        US/S//SS9  [        USS/SS//SS9  [        US/S//SS9  [        X#XE5      u  pg[        U/ SQ/ SQ/SS9  [        U/ SQSS9  / SQ/ SQ// SQ4n[        U6 u  p#pE[        U/ SQ/ SQ/ SQ/SS9  [        US/S/S//SS9  [        U/ SQ/ SQ/SS9  [        US/S//SS9  [        X#XE5      u  pg[        U/ SQ/ SQ/SS9  [        U/ SQSS9  [        R                  " SSS//[
        S9SS/4n[        U6 u  p#pE[        US//SS9  [        US//SS9  [        US/S//SS9  [        US/S//SS9  [        X#XE5      u  pg[        USS/SS//SS9  [        USS/SS9  [        R                  " SS// SQ/[
        S9/ SQ4n[        U6 u  p#pE[        USS /SS//SS9  [        US/S//SS9  [        USS/S!S"//SS9  [        US/S//SS9  [        X#XE5      u  pg[        U/ S#Q/ SQ/SS9  [        U/ S$QSS9  g )%NrZ   rG   r   r   r   r   r         r   )rZ   r   rZ   r   )r   r   r   )r   r   r   )rZ   rG   rQ   r   )r   r[   rs   )rZ   r   r   r   rZ   r   r   )r   rG   rQ   )r   rZ   rG   rQ   )r   rZ   rG   rQ   )r   rG   rQ   rC   rQ   )dtyperd   g      ghe99ir[   )rZ   rd   re   r   rs   rp   )r   rZ   r[   )r   rd   re   )r	   r   r   r   rR   objectr   s           r)   test_simo_round_tripTestSS2TF.test_simo_round_trip7  s?   1v1vA'BZ
aSE7/RD6.RD3%=u5RD2$<e4q$r2hR1>b"XE2)$i0BZ
aS#JR1>RD2$<e4S"IBx0u=RD2$<e4q$lL9F\6)$l3BZ
aM9i@uMRD1#s+%8J	2?RD1#;U3q$m\:G]7hhAq6{&1Aq6:BZ
aSE7/RD6.RD2$<e4RD1#;U3q$r1g1v.U;b!W51hhB+6:IFBZ
aS"I1v.U;RD1#;U3RHr2h/e<RD1#;U3q$k95EBZe4r+   c                     / SQ/ SQ/ SQ/nS/S/S//n/ SQ/nS//n[        XX45      u  pV[        U/ SQ/SS	S
9  [        U/ SQSS9  g )Nr   )r   r   rZ   )r[   rs   rp   r   rZ   )re   rZ   r   )r   r   r   r   r   r   r$   r%   )r   r         @r   r   )r   r   )r6   r7   r8   r   r   r   r   s          r)   test_all_int_arraysTestSS2TF.test_all_int_arraysp  s\    	<0S1#sOKSEq$23%eL1>r+   c                    [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " S/S/S/S//5      n[         R                  " / SQ/ S	Q/ S
Q/5      n[         R                  " S/S/S//5      n[        XX45      u  pV[        XUS   US   5      u  px[        XUS   US   5      u  p[        XUS   US   5      u  p[        XSS9  [        XSS9  [        XSS9  [        U[         R                  " XyU45      SSS9  g )N)r   r   r   r   )r   r   r   r   )g      r   r   r   )g              @r   r   333333?r   g      @)r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   rZ   rG   r   r   r   r   )r   rR   r   r   vstack)r6   r7   r8   r   r   b_allr   b0a0b1a1b2a2s                r)   test_multioutputTestSS2TF.test_multioutputy  s!    HH++++- . HHseeee  HH***, - HHseee 
 q$ qQqT1Q4(qQqT1Q4(qQqT1Q4( 	E*E*E*ryy""6UOr+   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r)   r   r     s'    #.+2075r?$Pr+   r   c                   T    \ 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)TestLsimi  rX   c                     [        5        nUR                  [        5        [        U6 nS S S 5        U$ ! , (       d  f       W$ = fN)r   filterr   r
   )r6   argssupsystems       r)   
lti_nowarnTestLsim.lti_nowarn  s;     CJJ'$ZF !  !  s	   3
Ac                     U R                  SSSS5      n[        R                  " SS5      n[        R                  " U5      n[	        XUS/S9u  pEn[        R
                  " U* 5      n[        Xg5        [        XW5        g Nr   r   r   r   re   X0r   r   linspace
zeros_liker   expr   r6   r   tutoutyx
expected_xs           r)   test_first_orderTestLsim.test_first_order  si     R2.KK!MM!&QC51
VVTE]
A*A*r+   c                 
   [         R                  " SSS5      n[         R                  " U5      nU R                  S// SQ5      n[	        X2USS/S9u  pEnSU-
  [         R
                  " U* 5      -  n[        US S 2S4   U5        g )Nr   ra   i  r   r   r   r   r   r   )r   r   r   r   r   r   r   )r6   r   r   r   r   r   r   r   s           r)   test_second_orderTestLsim.test_second_order  sv    KK2t$MM! #8&QC:6
DjBFFD5M1
AadGZ0r+   c                     U R                  SSSS5      n[        R                  " SS5      nUn[        XU5      u  pEnSUS-  -  n[	        XgU R
                  S9  [	        XWU R
                  S9  g )Nr   r   r   re         ?rG   decimal)r   r   r   r   r   digits_accuracyr   s           r)   test_integratorTestLsim.test_integrator  sh    RR0KK!&Q'
47]
A43G3GHA43G3GHr+   c                 v   [         R                  " SS/SS//5      n[         R                  " SS/SS//5      n[         R                  " SS/5      n[         R                  " S5      nU R                  XX45      n[         R                  " SSS5      n[         R                  " [        U5      S	45      n[        XWUSS/S
9u  pn
[         R                  " U* 5      n[         R                  " U* 5      n[         R                  " SU-  5      n[        X5        [        U
S S 2S4   U5        [        U
S S 2S4   U5        g )Nr   r   r   r   rZ   rG   r   g      $@   rG   )UTr   rZ   	r   rR   r   r   r   r   r   r   r   r6   r7   r8   r   r   r   r   r   r   r   r   
expected_yexpected_x0expected_x1s                 r)   test_two_statesTestLsim.test_two_states  s   HHtSkC;/0HHsCj3*-.HHc3Z HHVq,KK4$HHc!fa[!&Sz:
VVTE]
ffdUmffTD[)A*AadG[1AadG[1r+   c                    [         R                  " SS/SS//5      n[         R                  " S/S//5      n[         R                  " SS//5      nU R                  XUS5      n[         R                  " SS5      n[         R                  " U5      n[        XFU5      u  pxn	[         R                  " [         R                  " SUS-  -  U/5      5      n
US-  n[        XU R                  S9  [        XU R                  S9  g )	Nr   r   r   r   re   r  rG   r  )	r   rR   r   r   	ones_liker   	transposer   r  )r6   r7   r8   r   r   r   r   r   r   r   r   r  s               r)   test_double_integratorTestLsim.test_double_integrator  s    HHr2hR)*HHrdRD\"HHr2hZ q"-KK!LLO&Q'
\\"((C$'M4+@"AB
1W
A43G3GHA43G3GHr+   c                    [         R                  " SS/SS//5      n[         R                  " S/S//5      n[         R                  " SS//5      nU R                  XUS5      n[         R                  " SS5      n[         R                  " U5      n[        XFUSS/S9u  pxn	U[         R                  " U* 5      -  n
[        X5        g r   )r   rR   r   r   r   r   r   r   )r6   r7   r8   r   r   r   r   r   r   r   r  s              r)   test_jordan_blockTestLsim.test_jordan_block  s     HHsBi"c+,HHrdRD\"HHr2hZ q"-KK!MM!&QC:6
BFFD5M)
A*r+   c                 v   [         R                  " SS/SS//5      n[         R                  " SS/SS//5      n[         R                  " SS/5      n[         R                  " S5      nU R                  XX45      n[         R                  " SSS5      n[         R                  " [        U5      S	45      n[        XWUSS/S
9u  pn
[         R                  " U* 5      n[         R                  " U* 5      n[         R                  " SU-  5      n[        X5        [        U
S S 2S4   U5        [        U
S S 2S4   U5        g )Nr   r   r   r   r
  r   r   e   rG   r   rZ   r  r  s                 r)   	test_misoTestLsim.test_miso  s   HHtSkC;/0HHsCj3*-.HHc3Z HHUOq,KK3$HHc!fa[!&QC:6
VVTE]
ffdUmffT$Y'A*AacFK0AacFK0r+   c                     U R                  SSSS5      n[        R                  " SS5      n[        R                  " U5      n[	        XUS/S9u  pEn[        R
                  " U* 5      n[        XW5        g )Nr   r   r   rZ   rG   r   r   )r6   r   r   r   r   r   r   r  s           r)   test_nonzero_initial_time"TestLsim.test_nonzero_initial_time  s_    R2.KK!MM!&QC51
VVTE]
A*r+   c                     [         R                  " / SQ5      n[         R                  " / SQ5      nS/SS/4n[        [        SS9   [	        X2US/S9u  pEnS S S 5        g ! , (       d  f       g = f)N)r   r   r   r   )r   r   r   r   r   r   z"Time steps are not equally spaced.)matchr   )r   rR   r   r    r   )r6   r   r   r   r   r   r   s          r)   test_nonequal_timesteps TestLsim.test_nonequal_timesteps  se    HH)*HH)*%#s$:!EGfu5JDQG G Gs   A
A-r   N)r   r   r   r   r  r   r   r   r  r  r  r  r  r"  r&  r   r   r+   r)   r   r     s;    O	+	1I2&I+ 1$+6r+   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestImpulsei  c                 p    S/SS/4n[        U5      u  p#[        R                  " U* 5      n[        X45        g Nr   r   r   r   r   r6   r   r   r   r  s        r)   r   TestImpulse.test_first_order  s6     %#c#&/VVTE]
A*r+   c                     S/SS/4nSn[         R                  " SSU5      n[        XS9u  pEUR                  U4:X  d   e[	        XC5        [         R
                  " U* 5      n[	        XV5        g )Nr   r  r   r   r  )r   r   r   r   r   r   r6   r   nr   r   r   r  s          r)   test_first_order_fixed_time'TestImpulse.test_first_order_fixed_time'  sj    
 %#c#KK3"&&zzaT!!!D$VVQBZ
A*r+   c                 t    S/SS/4n[        USS9u  p#S[        R                  " U* 5      -  n[        X45        g Nr   r   r   r   r,  r-  s        r)   test_first_order_initial$TestImpulse.test_first_order_initial5  s>    
 %#c#&S)2664%=(
A*r+   c                 v    S/SS/4n[        US/S9u  p#S[        R                  " U* 5      -  n[        X45        g r6  r,  r-  s        r)   test_first_order_initial_list)TestImpulse.test_first_order_initial_list?  s@    
 %#c#&cU+2664%=(
A*r+   c                 n    S/SS/4n[        U5      u  p#[        R                  " U5      n[        X45        g Nr   r   )r   r   r  r   r-  s        r)   r  TestImpulse.test_integratorI  s3    %#c#&/\\$'
A*r+   c                 v    S// SQ4n[        U5      u  p#U[        R                  " U* 5      -  n[        X45        g )Nr   r   r,  r-  s        r)   r   TestImpulse.test_second_orderP  s7     %)&/BFFD5M)
A*r+   c                 P    S// SQ4n[        US/SS/S9u  p#[        US/S/S9u  p#g )Nr   r   rQ   re   rd   r   r  r   r6   r   r   r   s       r)   test_array_likeTestImpulse.test_array_likeY  s:    %)&aSQF3&aSQC0ar+   c                 ,    S// SQ4n[        USSS9u  p#g )Nr   r   rQ   re   rB  rC  rD  s       r)   test_array_like2TestImpulse.test_array_like2`  s     %)&Q!,ar+   r   N)r   r   r   r   r   r3  r7  r:  r  r   rE  rH  r   r   r+   r)   r)  r)    s*    ++++++1-r+   r)  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestStepie  c                 v    S/SS/4n[        U5      u  p#S[        R                  " U* 5      -
  n[        X45        g r+  r   r   r   r   r-  s        r)   r   TestStep.test_first_orderf  s;     %#c#v,2664%=(
A*r+   c                     S/SS/4nSn[         R                  " SSU5      n[        XS9u  pEUR                  U4:X  d   e[	        XC5        S[         R
                  " U* 5      -
  n[	        XV5        g )Nr   r  r   r   r0  rZ   )r   r   r   r   r   r   r1  s          r)   r3  $TestStep.test_first_order_fixed_timen  sn    
 %#c#KK3"v#zzaT!!!D$^
A*r+   c                 z    S/SS/4n[        USS9u  p#SS[        R                  " U* 5      -  -   n[        X45        g Nr   r   r   rZ   r   rM  r-  s        r)   r7  !TestStep.test_first_order_initial|  sC    
 %#c#v#&RVVTE]**
A*r+   c                 |    S/SS/4n[        US/S9u  p#SS[        R                  " U* 5      -  -   n[        X45        g rR  rM  r-  s        r)   r:  &TestStep.test_first_order_initial_list  sE    
 %#c#v3%(RVVTE]**
A*r+   c                 F    S/SS/4n[        U5      u  p#Un[        X45        g r=  )r   r   r-  s        r)   r  TestStep.test_integrator  s,     %S	"v,
A*r+   c                     S// SQ4n[        U5      u  p#SSU-   [        R                  " U* 5      -  -
  n[        X45        g )Nr   r   rZ   rM  r-  s        r)   r   TestStep.test_second_order  s@     %)v,!d(bffdUm33
A*r+   c                 .    S// SQ4n[        USS/S9u  p#g )Nr   r   re   rd   r0  r   rD  s       r)   rE  TestStep.test_array_like  s"    %)v!Q(ar+   c                 "    [        / S/S45        g )Nr\   y      ?        r[  r6   s    r)   test_complex_inputTestStep.test_complex_input  s     	b2$r+   r   N)r   r   r   r   r   r3  r7  r:  r  r   rE  r_  r   r   r+   r)   rK  rK  e  s*    ++++++)r+   rK  c                       \ rS rSrS rSrg)TestLtii  c                    [        S/S/5      n[        U[        5      (       d   e[        U[         5      (       d   e[        U[        5      (       a   eUR                  b   e[        [
        R                  " / 5      [
        R                  " S/5      S5      n[        U[        5      (       d   e[        U[         5      (       d   e[        U[        5      (       a   eUR                  b   e[        / S/S5      n[        S/S/SS5      n[        U[        5      (       d   e[        U[         5      (       d   e[        U[        5      (       a   eUR                  b   eg )NrZ   r\   rQ   )	r
   
isinstancer   r   dtr   rR   r   r   r6   ss     r)   test_lti_instantiationTestLti.test_lti_instantiation  s1   
 bTN!-....!S!!!!a&&&&tt|| bhhtna0!^,,,,!S!!!!a&&&&tt|| RD!bT1a !Z((((!S!!!!a&&&&tt||r+   r   N)r   r   r   r   rh  r   r   r+   r)   rb  rb    s    r+   rb  c                   ,    \ rS rSrS rS rS rS rSrg)TestStateSpacei  c                    [        SSSS5        [        S/S/S/S/5        [        [        R                  " SS/SS//5      [        R                  " S/S//5      [        R                  " SS//5      [        R                  " S//5      5        g )NrZ   rG   rQ   rC   r   )r   r   rR   r^  s    r)   test_initialization"TestStateSpace.test_initialization  sy    1aAA3aS1#&288aVaV,-rxx!qc
/C88aVH%rxx!	8r+   c                 H   [        SSSS5      n[        UR                  5       [         5      (       d   e[        UR                  5       [        5      (       d   e[        UR                  5       [        5      (       d   e[        U5      ULd   eUR                  5       ULd   eg )NrZ   rG   rQ   rC   )r   rd  to_ssto_tfr   to_zpkr   rf  s     r)   test_conversionTestStateSpace.test_conversion  s    q!Q"!'')Z0000!'')%56666!((*n5555 !}A%%%wwy!!!r+   c                     [        SSSS5      n[        UR                  S/5        [        UR                  S/5        UR                  b   eg )NrZ   r   r   )r   r   polesr   re  rf  s     r)   test_propertiesTestStateSpace.test_properties  sB    
 q!Q""&"&tt||r+   c                     " S S5      n[        [        R                  " SS/SS//5      [        R                  " S/S//5      [        R                  " SS//5      [        R                  " S//5      5      n[        [        R                  " S	S
/SS
//5      [        R                  " S/S//5      [        R                  " SS//5      [        R                  " S//5      5      nUR                  S5      nUR                  S5      nUR                  S5      n[        R                  " SSS5      n[        R
                  " U5      nSUS'   [        [        [        [        R                  [        R                  [        R                  4 H  n	[        [        U	" S5      U-  XS9S   U	" S5      [        X(US9S   -  5        [        [        X)" S5      -  XS9S   [        X(US9S   U	" S5      -  5        [        [        X)" S5      -  XS9S   [        X(US9S   U	" S5      -  5        [        [        5         U	" S5      U-    S S S 5        M     [        [        US-  XS9S   [        USU-  US9S   5        [        [        X#-  XS9S   [        U[        X8US9S   US9S   SS9  [        [        5         X"-    S S S 5        [        [        5         X$-    S S S 5        [        [        5         XE-    S S S 5        [        [        5         X!" 5       -    S S S 5        [        [        5         U" 5       U-    S S S 5        [        [        5         X!" 5       -    S S S 5        [        [        5         U" 5       U-    S S S 5        [        [        US-   XS9S   SU-  [        X(US9S   -   5        [        [        5         U[        R                  " SS/5      -     S S S 5        [        [        5         [        R                  " SS/5      U-     S S S 5        [        [        5         X$-     S S S 5        [        [        5         U[        R                  " SS/SS//5      -    S S S 5        [        [        5         XE-     S S S 5        [        [        5         X!" 5       -     S S S 5        [        [        5         U" 5       U-     S S S 5        [        [        X#-   XS9S   [        X(US9S   [        X8US9S   -   5        [        [        US-
  XS9S   SU-  [        X(US9S   -   5        [        [        SU-
  XS9S   SU-  [        U* XS9S   -   5        [        [        X#-
  XS9S   [        X(US9S   [        X8US9S   -
  5        [        [        5         X!" 5       -
    S S S 5        [        [        5         U" 5       U-
    S S S 5        XF-   n
U
R                   S:X  d   eXF-  n
U
R                   S:X  d   eSU-  n
U
R                   S:X  d   eU* n
U
R                   S:X  d   eg ! , (       d  f       GM  = f! , (       d  f       GNz= f! , (       d  f       GNp= f! , (       d  f       GNf= f! , (       d  f       GNW= f! , (       d  f       GNG= f! , (       d  f       GN8= f! , (       d  f       GN(= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNs= f! , (       d  f       GNc= f! , (       d  f       GN= f! , (       d  f       GN= f)Nc                       \ rS rSrSrg).TestStateSpace.test_operators.<locals>.BadTypei  r   N)r   r   r   r   r   r   r+   r)   BadTyper{    s    r+   r|  rJ   gffffff?r   grZ   r   rI   gg?皙?g?d   rG   )r  r  gh㈵>)r%   rQ   rC   rp   )r   r   rR   to_discreter   r   intfloatcomplexfloat32
complex128r   r   r   	TypeErrorr    re  )r6   r|  s1s2
s_discretes2_discretes3_discreter   r   typrg  s              r)   test_operatorsTestStateSpace.test_operators  s   	 	 4+T{!;<1#s,1a&*1# 4,d!<=1#s,1a&*1# ^^C(
nnS)nnS) KK1c"MM!! R]]BHHMCDQ"7:FT"Q%7%::< Dc!f7: A.q1CF:< Dc!f7: A.q1CF:< y)A *) N 	R!Vq.q1R1q5A.q1	3 	RW/2R41#5a#8A>qA!	# 9%G & 9%O & 9%$ & 9%N & 9%IN & 9%N & 9%IN & 	R!Vq.q1AR 21 55	7 :&1a&!! ' :&HHaVr! ' 9%O & :&Aq6Aq6*++ ' 9%$ & 9%N & 9%IN & 	RW/2R*1-R0B10EE	G 	R!Vq.q1Qb!3A!66	8 	QVq.q1AbSA 3A 66	8 	RW/2R*1-R0B10EE	G 9%N & 9%IN & $tts{{$tts{{
Ntts{{Ktts{{q *) &% &% &% &% &% &% &% '& '& &% '& &% &% &%  &% &%s   5X4X,X>,Y
Y")Y4
Z,Z9Z*,Z<[; [ 2[2
\/\
\(-\:
X)	,
X;>
Y
Y"
Y14
Z
Z
Z'*
Z9<
[
[ 
[/2
\
\
\%(
\7:
]	r   N)	r   r   r   r   rm  rs  rw  r  r   r   r+   r)   rk  rk    s    8	"~r+   rk  c                   &    \ rS rSrS rS rS rSrg)TestTransferFunctionig  c                     [        SS5        [        S/S/5        [        [        R                  " S/5      [        R                  " S/5      5        g NrZ   rG   )r   r   rR   r^  s    r)   rm  (TestTransferFunction.test_initializationh  s8    A!qc"1#!6r+   c                 L   [        SS/SS/5      n[        UR                  5       [        5      (       d   e[        UR	                  5       [         5      (       d   e[        UR                  5       [        5      (       d   e[        U5      ULd   eUR	                  5       ULd   eg )NrZ   r   r\   )r   rd  rp  r   rq  rr  r   rf  s     r)   rs  $TestTransferFunction.test_conversionn  s    aVaW-!'')Z0000!'')%56666!((*n5555  "!+++wwy!!!r+   c                     [        SS/SS/5      n[        UR                  S/5        [        UR                  S/5        g )NrZ   r   r\   r   r   )r   r   rv  r   rf  s     r)   rw  $TestTransferFunction.test_propertiesy  s8    
 aVaW-"&"&r+   r   N)r   r   r   r   rm  rs  rw  r   r   r+   r)   r  r  g  s    7	"'r+   r  c                        \ rS rSrS rS rSrg)TestZerosPolesGaini  c                     [        SSS5        [        S/S/S5        [        [        R                  " S/5      [        R                  " S/5      S5        g r  )r   r   rR   r^  s    r)   rm  &TestZerosPolesGain.test_initialization  s>    q!QsQC#rxx}bhhsmQ7r+   c                 F   [        SSS5      n[        UR                  5       [        5      (       d   e[        UR	                  5       [
        5      (       d   e[        UR                  5       [         5      (       d   e[        U5      ULd   eUR                  5       ULd   eg )NrZ   rG   rQ   )r   rd  rp  r   rq  r   rr  rf  s     r)   rs  "TestZerosPolesGain.test_conversion  s    1a#!'')Z0000!'')%56666!((*n5555 a )))xxz"""r+   r   N)r   r   r   r   rm  rs  r   r   r+   r)   r  r    s    8	#r+   r  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)Test_abcd_normalizei  c                     [         R                  " SS/SS//5      U l        [         R                  " S/S//5      U l        [         R                  " SS//5      U l        [         R                  " S//5      U l        g )Nr   r   r   r   r   r         @)r   rR   r7   r8   r   r   r^  s    r)   setup_method Test_abcd_normalize.setup_method  sa    C:Sz23D6C5/*C:,'C5'"r+   c                 ,    [        [        [        5        g r   )r   r    r   r^  s    r)   test_no_matrix_fails(Test_abcd_normalize.test_no_matrix_fails  s    j.1r+   c                 t    [        [        [        SS/U R                  U R                  U R
                  5        g )NrZ   r\   )r   r    r   r8   r   r   r^  s    r)   test_A_nosquare_fails)Test_abcd_normalize.test_A_nosquare_fails  s'    j.1b'ffdffdff	.r+   c                 t    [        [        [        U R                  SS/U R                  U R
                  5        g Nr\   re   r   r    r   r7   r   r   r^  s    r)   test_AB_mismatch_fails*Test_abcd_normalize.test_AB_mismatch_fails  '    j.$&&2q'ffdff	&r+   c                 x    [        [        [        U R                  U R                  S/S//U R
                  5        g )Nr   r   )r   r    r   r7   r8   r   r^  s    r)   test_AC_mismatch_fails*Test_abcd_normalize.test_AC_mismatch_fails  s+    j.$&&$&&usendff	.r+   c           	      t    [        [        [        U R                  U R                  U R
                  SS/5        g )Nr  r   )r   r    r   r7   r8   r   r^  s    r)   test_CD_mismatch_fails*Test_abcd_normalize.test_CD_mismatch_fails  s'    j.$&&$&&ffsAh	(r+   c                 t    [        [        [        U R                  SS/U R                  U R
                  5        g r  r  r^  s    r)   test_BD_mismatch_fails*Test_abcd_normalize.test_BD_mismatch_fails  r  r+   c                    [        U R                  U R                  U R                  U R                  5      u  pp4[        XR                  5        [        X R                  5        [        X0R                  5        [        X@R                  5        g r   )r   r7   r8   r   r   r   r6   r7   r8   r   r   s        r)   "test_normalized_matrices_unchanged6Test_abcd_normalize.test_normalized_matrices_unchanged  sV    #DFFDFFDFFDFFC
a66"66"66"66"r+   c                    [        U R                  U R                  SS/S5      u  pp4[        UR                  S   UR                  S   5        [        UR                  S   UR                  S   5        [        UR                  S   UR                  S   5        [        UR                  S   UR                  S   5        [        UR                  S   UR                  S   5        g )NrZ   r   )r   r7   r8   r   r   r  s        r)   r   Test_abcd_normalize.test_shapes  s    #DFFDFFQFA>
a
AGGAJ/
AGGAJ/
AGGAJ/
AGGAJ/
AGGAJ/r+   c                 |   [         R                  " S5      n[         R                  " S5      n[        U R                  XS9u  p4pV[	        X0R                  5        [	        XA5        [	        Xb5        UR
                  S   UR
                  S   :X  d   eUR
                  S   U R                  R
                  S   :X  d   eg )NrG   r   )r   r   r7   r8   r   r   rZ   r   r   r   r7   r   r   )r6   B_D_r7   r8   r   r   s          r)    test_zero_dimension_is_not_none14Test_abcd_normalize.test_zero_dimension_is_not_none1  s    XXfXXf#dff9
a66"wwqzRXXa[(((wwqzTVV\\!_,,,r+   c                 h   [         R                  " S5      n[         R                  " S5      n[        U R                  XS9u  p4pV[	        X0R                  5        [	        XA5        [	        XR5        UR
                  S   UR
                  S   :X  d   eUR
                  S   UR
                  S   :X  d   eg )Nr  )r   rG   r7   r8   r   r   rZ   r  )r6   r  C_r7   r8   r   r   s          r)    test_zero_dimension_is_not_none24Test_abcd_normalize.test_zero_dimension_is_not_none2  s    XXfXXf#dff9
a66"wwqzRXXa[(((wwqzRXXa[(((r+   c                 h   [        U R                  U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )N)r8   r   r   r   rZ   )r   r8   r   r   r   r  s        r)   test_missing_A"Test_abcd_normalize.test_missing_A      #dff$&&A
awwqzQWWQZ'''wwqzQWWQZ'''ww466<<?DFFLLO<<<<r+   c                 h   [        U R                  U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )N)r7   r   r   r   rZ   )r   r7   r   r   r   r  s        r)   test_missing_B"Test_abcd_normalize.test_missing_B  r  r+   c                 h   [        U R                  U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )Nr  r   rZ   )r   r7   r8   r   r   r  s        r)   test_missing_C"Test_abcd_normalize.test_missing_C  r  r+   c                 h   [        U R                  U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )Nr  r   rZ   )r   r7   r8   r   r   r  s        r)   test_missing_D"Test_abcd_normalize.test_missing_D  r  r+   c                    [        U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )N)r   r   r   rZ   )r   r   r   r   r  s        r)   test_missing_AB#Test_abcd_normalize.test_missing_AB  s    #dff7
awwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''ww466<<?DFFLLO<<<<ww466<<?DFFLLO<<<<r+   c                 ^   [        U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )N)r8   r   r   rZ   )r   r8   r   r   r  s        r)   test_missing_AC#Test_abcd_normalize.test_missing_AC      #dff7
awwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''ww466<<?DFFLLO<<<<ww466<<?DFFLLO<<<<r+   c                 ^   [        U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )N)r8   r   r   rZ   )r   r8   r   r   r  s        r)   test_missing_AD#Test_abcd_normalize.test_missing_AD   r  r+   c                 j   [        U R                  U R                  S9u  pp4UR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   UR                  S   :X  d   eUR                  S   (       d   UR                  S   5       eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eUR                  U R                  R                  S   U R                  R                  S   4:X  d   eg )N)r7   r   r   rZ   )r   r7   r   r   r  s        r)   test_missing_BC#Test_abcd_normalize.test_missing_BC	  s    #dff7
awwqzQWWQZ'''wwqzQWWQZ'''wwqzQWWQZ'''wwqz%1771:%zww466<<?DFFLLO<<<<ww466<<?DFFLLO<<<<r+   c                 >    [        [        [        U R                  S9  g )N)r   )r   r    r   r   r^  s    r)   test_missing_ABC_fails*Test_abcd_normalize.test_missing_ABC_fails  s    j.DFF;r+   c                 T    [        [        [        U R                  U R                  S9  g )N)r7   r   )r   r    r   r7   r   r^  s    r)   test_missing_BD_fails)Test_abcd_normalize.test_missing_BD_fails      j.DFFdffEr+   c                 T    [        [        [        U R                  U R                  S9  g )N)r7   r8   )r   r    r   r7   r8   r^  s    r)   test_missing_CD_fails)Test_abcd_normalize.test_missing_CD_fails  r  r+   )r7   r8   r   r   N)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    sr    #2.&.(&#0-)========<FFr+   r  c                   J    \ 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)	Test_bodei  c                 ^    [        S/SS/5      n/ SQn[        XS9u  p#n/ SQn[        X5SS9  g )NrZ   r}  rZ   ra   r~  r   )r   r[   rg   rl   r  r
   r   r   )r6   r   r   magphaseexpected_mags         r)   test_01Test_bode.test_01  s8     aS1a&!V)(Cq9r+   c                 ^    [        S/SS/5      n/ SQn[        XS9u  p#n/ SQn[        XESS9  g )NrZ   r}  rZ   ra   r  )gig33333Ur  r  )r6   r   r   r  r  expected_phases         r)   test_02Test_bode.test_02,  s8     aS1a&!V)+E1=r+   c                 ,   [        S/SS/5      n/ SQn[        XS9u  p#nUS-  n[        R                  " UR                  U5      [        R                  " UR
                  U5      -  nS[        R                  " [        U5      5      -  n[        X75        g )NrZ   r  r                ?g      4@)	r
   r   r   polyvalr   r   log10absr   )r6   r   r   r  r  jwr   r  s           r)   test_03Test_bode.test_038  sy     aS1a&!V)VJJvzz2&FJJ)CCbhhs1v..C.r+   c                 f   [        S/SS/5      n/ SQn[        XS9u  p#nUS-  n[        R                  " UR                  U5      [        R                  " UR
                  U5      -  n[        R                  " UR                  UR                  5      S-  [        R                  -  n[        XG5        g )NrZ   r  r  r   g     f@)r
   r   r   r  r   r   arctan2r   r   pir   )r6   r   r   r  r  r  r   r  s           r)   test_04Test_bode.test_04C  s     aS1a&!V)VJJvzz2&FJJ)CCAFFAFF3e;beeCE2r+   c                     [        S/SS/5      nSn[        R                  " SSU5      n[        XS9u  pEn[	        XC5        g NrZ   ra   rp   r2  )r
   r   logspacer   r   )r6   r   r2  
expected_wr   r  r  s          r)   test_05Test_bode.test_05N  sC     aS1a&![[Q*
V)A*r+   c                 R    [        S/SS/5      n[        USS9u  p#nUS   S:X  d   eg NrZ   r   rG   r  g{Gz?r
   r   r6   r   r   r  r  s        r)   test_06Test_bode.test_06X  s6     aS1a&!Vq)tt||r+   c                 <    [        S// SQ5      n[        USS9u  p#ng )NrZ   )rZ   r   r~  rG   r  r  r  s        r)   test_07Test_bode.test_07_  s"     aS+&Vq)r+   c                     [        / / SQS5      nUR                  [        R                  " SSS5      S9u  p#n[	        [        U5      SSS	9  g )
N)r`   rh   rl   rm   rn   rZ   r[   r.   r~  r  i>   r  )r
   r   r   r  r   minr  s        r)   test_08Test_bode.test_08e  sB    R2A6bkk"b#&>?CJb9r+   c           	      6   [         R                  " / SQ5      n[        R                  " U5      R                  n[         R                  " S/S/S//5      n[         R                  " / SQ/5      n[         R                  " S//5      n[        5        nUR                  [        5        [        X#XE5      n[        USS9u  pn
S S S 5        S[         R                  " [         R                  " SSWS-  -   -  5      5      -  n[        W	U5        g ! , (       d  f       NQ= f)	Nr   r   r   r   r   r   r   r   r   r~  r     rd   )r   rR   r0   	companionr  r   r   r   r
   r   r  sqrtr   )r6   r   r7   r8   r   r   r   r   r   r  r  expected_magnitudes               r)   test_from_state_spaceTest_bode.test_from_state_spacek  s     HH)*Q!!HHsecUSE*+HHo&'HHseW CJJ'q_F 3/MAE !
  "((2773#1*3E+F"GGC!34 ! s   /D


Dr   N)r   r   r   r   r  r  r  r
  r  r  r  r  r(  r   r   r+   r)   r  r    s/    :
>	/	3+*:5r+   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
Test_freqrespi  c                     [        S/SS/5      n/ SQn[        XS9u  p#/ SQn/ SQn[        UR                  USS9  [        UR                  USS9  g )NrZ   r  r  )gGz?r  gׁsF?)MbXrJ   r-  r  r
   r   r   r   r   )r6   r   r   Hexpected_reexpected_ims         r)   test_output_manual Test_freqresp.test_output_manual  sQ     aS1a&!$),AFFK;AFFK;r+   c                 P   [        S/SS/5      n/ SQn[        XS9u  p#US-  n[        R                  " UR                  U5      [        R                  " UR
                  U5      -  n[        UR                  UR                  5        [        UR                  UR                  5        g )NrZ   r  r  r   )	r
   r   r   r  r   r   r   r   r   r6   r   r   r/  rg  r<   s         r)   test_outputTest_freqresp.test_output  s|     aS1a&!$F::fjj!,rzz&**a/HHAFFHMM2AFFHMM2r+   c                     [        S/SS/5      nSn[        R                  " SSU5      n[        XS9u  pE[	        XC5        g r  )r
   r   r  r   r   )r6   r   r2  r  r   r/  s         r)   test_freq_rangeTest_freqresp.test_freq_range  sA     aS1a&![[Q*
$A*r+   c                 P    [        S/SS/5      n[        USS9u  p#US   S:X  d   eg r  )r
   r   )r6   r   r   r/  s       r)   test_pole_zeroTest_freqresp.test_pole_zero  s4     aS1a&!!$tt||r+   c                 n   [         R                  " / SQ5      n[        R                  " U5      R                  n[         R                  " S/S/S//5      n[         R                  " / SQ/5      n[         R                  " S//5      n[        5        nUR                  [        5        [        X#XE5      n[        USS9u  pS S S 5        WS-  n
SSSU
-  -   SU
S-  -  -   U
S	-  -   -  n[        W	R                  UR                  5        [        U	R                  UR                  5        g ! , (       d  f       Nn= f)
Nr"  r   r   r#  r~  r  r   rG   rQ   )r   rR   r0   r%  r  r   r   r   r
   r   r   r   r   )r6   r   r7   r8   r   r   r   r   r   r/  rg  r<   s               r)   r(  #Test_freqresp.test_from_state_space  s     HH)*Q!!HHseSE3%()HHo&'HHseW CJJ'q_FFc*DA ! F319qAv-145AFFHMM2AFFHMM2 ! s   .D&&
D4c                     [        / S/S-  S/5      n/ SQn[        XS9u  p#US-  nSUS-   S-  -  n[        UR                  UR                  5        [        UR                  UR                  5        g )Nr\   rC   rZ   r  r  r   r.  r5  s         r)   test_from_zpkTest_freqresp.test_from_zpk  sg    RQs#$FAz>AFFHMM2AFFHMM2r+   r   N)r   r   r   r   r2  r6  r9  r<  r(  rA  r   r   r+   r)   r+  r+    s     <	3+3*3r+   r+  ):0yE>rC  ),r   numpyr   numpy.testingr   r   r   r   scipy._lib._array_apir   r   r   scipy.signalr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   scipy.signal._filter_designr   scipy.linalgr0   r*   r-   r   r   r)  rK  rb  rk  r  r  r  r  r+  r   r+   r)   <module>rJ     s      +  * H H H H 8 N*W@ W@t[P [P|{6 {6|D- D-NF FR 8[ [z' '8# #&CF CFLa5 a5HI3 I3r+   